@travisennis/acai 0.0.5 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +190 -19
- package/bin/acai-wrapper.js +26 -0
- package/dist/agent/index.d.ts +132 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +434 -0
- package/dist/api/exa/index.js +1 -1
- package/dist/cli.d.ts +4 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +67 -40
- package/dist/commands/add-directory-command.d.ts +3 -0
- package/dist/commands/add-directory-command.d.ts.map +1 -0
- package/dist/commands/add-directory-command.js +54 -0
- package/dist/commands/application-log-command.d.ts +1 -1
- package/dist/commands/application-log-command.d.ts.map +1 -1
- package/dist/commands/application-log-command.js +18 -20
- package/dist/commands/clear-command.d.ts +1 -1
- package/dist/commands/clear-command.d.ts.map +1 -1
- package/dist/commands/clear-command.js +7 -3
- package/dist/commands/compact-command.d.ts.map +1 -1
- package/dist/commands/compact-command.js +9 -5
- package/dist/commands/context-command.d.ts +3 -0
- package/dist/commands/context-command.d.ts.map +1 -0
- package/dist/commands/context-command.js +124 -0
- package/dist/commands/copy-command.d.ts.map +1 -1
- package/dist/commands/copy-command.js +14 -5
- package/dist/commands/edit-command.d.ts +1 -1
- package/dist/commands/edit-command.d.ts.map +1 -1
- package/dist/commands/edit-command.js +21 -34
- package/dist/commands/edit-prompt-command.d.ts +1 -1
- package/dist/commands/edit-prompt-command.d.ts.map +1 -1
- package/dist/commands/edit-prompt-command.js +18 -15
- package/dist/commands/exit-command.d.ts +1 -4
- package/dist/commands/exit-command.d.ts.map +1 -1
- package/dist/commands/exit-command.js +9 -5
- package/dist/commands/files-command.d.ts +1 -1
- package/dist/commands/files-command.d.ts.map +1 -1
- package/dist/commands/files-command.js +20 -16
- package/dist/commands/generate-rules-command.d.ts +1 -1
- package/dist/commands/generate-rules-command.d.ts.map +1 -1
- package/dist/commands/generate-rules-command.js +307 -39
- package/dist/commands/handoff-command.d.ts +3 -0
- package/dist/commands/handoff-command.d.ts.map +1 -0
- package/dist/commands/handoff-command.js +191 -0
- package/dist/commands/health-command.d.ts +1 -1
- package/dist/commands/health-command.d.ts.map +1 -1
- package/dist/commands/health-command.js +49 -27
- package/dist/commands/help-command.d.ts +1 -1
- package/dist/commands/help-command.d.ts.map +1 -1
- package/dist/commands/help-command.js +25 -5
- package/dist/commands/history-command.d.ts +3 -0
- package/dist/commands/history-command.d.ts.map +1 -0
- package/dist/commands/history-command.js +458 -0
- package/dist/commands/init-command.d.ts +1 -1
- package/dist/commands/init-command.d.ts.map +1 -1
- package/dist/commands/init-command.js +40 -22
- package/dist/commands/last-log-command.d.ts +1 -1
- package/dist/commands/last-log-command.d.ts.map +1 -1
- package/dist/commands/last-log-command.js +15 -15
- package/dist/commands/list-directories-command.d.ts +3 -0
- package/dist/commands/list-directories-command.d.ts.map +1 -0
- package/dist/commands/list-directories-command.js +35 -0
- package/dist/commands/list-tools-command.d.ts.map +1 -1
- package/dist/commands/list-tools-command.js +61 -21
- package/dist/commands/manager.d.ts +9 -4
- package/dist/commands/manager.d.ts.map +1 -1
- package/dist/commands/manager.js +64 -39
- package/dist/commands/model-command.d.ts.map +1 -1
- package/dist/commands/model-command.js +201 -66
- package/dist/commands/paste-command.d.ts +1 -1
- package/dist/commands/paste-command.d.ts.map +1 -1
- package/dist/commands/paste-command.js +23 -9
- package/dist/commands/pickup-command.d.ts +3 -0
- package/dist/commands/pickup-command.d.ts.map +1 -0
- package/dist/commands/pickup-command.js +109 -0
- package/dist/commands/prompt-command.d.ts +19 -1
- package/dist/commands/prompt-command.d.ts.map +1 -1
- package/dist/commands/prompt-command.js +191 -98
- package/dist/commands/remove-directory-command.d.ts +3 -0
- package/dist/commands/remove-directory-command.d.ts.map +1 -0
- package/dist/commands/remove-directory-command.js +55 -0
- package/dist/commands/reset-command.d.ts +1 -1
- package/dist/commands/reset-command.d.ts.map +1 -1
- package/dist/commands/reset-command.js +8 -5
- package/dist/commands/rules-command.d.ts +1 -1
- package/dist/commands/rules-command.d.ts.map +1 -1
- package/dist/commands/rules-command.js +25 -22
- package/dist/commands/save-command.d.ts +1 -1
- package/dist/commands/save-command.d.ts.map +1 -1
- package/dist/commands/save-command.js +8 -3
- package/dist/commands/shell-command.d.ts.map +1 -1
- package/dist/commands/shell-command.js +45 -24
- package/dist/commands/types.d.ts +9 -7
- package/dist/commands/types.d.ts.map +1 -1
- package/dist/commands/usage-command.d.ts +1 -1
- package/dist/commands/usage-command.d.ts.map +1 -1
- package/dist/commands/usage-command.js +18 -7
- package/dist/config.d.ts +21 -11
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +90 -63
- package/dist/execution/index.d.ts +17 -2
- package/dist/execution/index.d.ts.map +1 -1
- package/dist/execution/index.js +62 -20
- package/dist/formatting.d.ts +127 -0
- package/dist/formatting.d.ts.map +1 -1
- package/dist/formatting.js +201 -0
- package/dist/index.d.ts +7 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +263 -102
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +47 -18
- package/dist/mentions.d.ts +2 -1
- package/dist/mentions.d.ts.map +1 -1
- package/dist/mentions.js +16 -1
- package/dist/messages.d.ts +11 -0
- package/dist/messages.d.ts.map +1 -1
- package/dist/messages.js +122 -21
- package/dist/middleware/cache.d.ts +3 -0
- package/dist/middleware/cache.d.ts.map +1 -0
- package/dist/middleware/cache.js +53 -0
- package/dist/middleware/index.d.ts +1 -0
- package/dist/middleware/index.d.ts.map +1 -1
- package/dist/middleware/index.js +1 -0
- package/dist/models/ai-config.d.ts +4 -2
- package/dist/models/ai-config.d.ts.map +1 -1
- package/dist/models/ai-config.js +12 -2
- package/dist/models/anthropic-provider.d.ts.map +1 -1
- package/dist/models/anthropic-provider.js +3 -67
- package/dist/models/deepseek-provider.d.ts.map +1 -1
- package/dist/models/deepseek-provider.js +0 -2
- package/dist/models/google-provider.d.ts.map +1 -1
- package/dist/models/google-provider.js +0 -3
- package/dist/models/groq-provider.d.ts.map +1 -1
- package/dist/models/groq-provider.js +0 -1
- package/dist/models/manager.d.ts +2 -1
- package/dist/models/manager.d.ts.map +1 -1
- package/dist/models/manager.js +26 -2
- package/dist/models/openai-provider.d.ts.map +1 -1
- package/dist/models/openai-provider.js +0 -4
- package/dist/models/openrouter-provider.d.ts +16 -22
- package/dist/models/openrouter-provider.d.ts.map +1 -1
- package/dist/models/openrouter-provider.js +175 -236
- package/dist/models/providers.d.ts +4 -14
- package/dist/models/providers.d.ts.map +1 -1
- package/dist/models/providers.js +1 -57
- package/dist/models/xai-provider.d.ts.map +1 -1
- package/dist/models/xai-provider.js +0 -2
- package/dist/prompts.d.ts +10 -4
- package/dist/prompts.d.ts.map +1 -1
- package/dist/prompts.js +447 -70
- package/dist/repl/project-status-line.d.ts +3 -0
- package/dist/repl/project-status-line.d.ts.map +1 -0
- package/dist/repl/project-status-line.js +61 -0
- package/dist/repl/tool-call-repair.d.ts.map +1 -1
- package/dist/repl/tool-call-repair.js +8 -4
- package/dist/repl-new.d.ts +51 -0
- package/dist/repl-new.d.ts.map +1 -0
- package/dist/repl-new.js +354 -0
- package/dist/skills.d.ts +20 -0
- package/dist/skills.d.ts.map +1 -0
- package/dist/skills.js +192 -0
- package/dist/terminal/control.d.ts +55 -0
- package/dist/terminal/control.d.ts.map +1 -0
- package/dist/terminal/control.js +109 -0
- package/dist/terminal/default-theme.d.ts +1 -1
- package/dist/terminal/default-theme.d.ts.map +1 -1
- package/dist/terminal/default-theme.js +24 -28
- package/dist/terminal/formatting.d.ts +23 -25
- package/dist/terminal/formatting.d.ts.map +1 -1
- package/dist/terminal/formatting.js +35 -52
- package/dist/terminal/highlight/index.d.ts.map +1 -1
- package/dist/terminal/highlight/index.js +3 -6
- package/dist/terminal/highlight/theme.d.ts.map +1 -1
- package/dist/terminal/highlight/theme.js +2 -6
- package/dist/terminal/index.d.ts +2 -94
- package/dist/terminal/index.d.ts.map +1 -1
- package/dist/terminal/index.js +2 -370
- package/dist/terminal/markdown.js +10 -5
- package/dist/terminal/select-prompt.d.ts +2 -2
- package/dist/terminal/select-prompt.d.ts.map +1 -1
- package/dist/terminal/select-prompt.js +47 -39
- package/dist/terminal/strip-ansi.js +4 -4
- package/dist/terminal/table/cell.d.ts +114 -0
- package/dist/terminal/table/cell.d.ts.map +1 -0
- package/dist/terminal/table/cell.js +407 -0
- package/dist/terminal/table/debug.d.ts +15 -0
- package/dist/terminal/table/debug.d.ts.map +1 -0
- package/dist/terminal/table/debug.js +32 -0
- package/dist/terminal/table/index.d.ts +3 -0
- package/dist/terminal/table/index.d.ts.map +1 -0
- package/dist/terminal/table/index.js +2 -0
- package/dist/terminal/table/layout-manager.d.ts +27 -0
- package/dist/terminal/table/layout-manager.d.ts.map +1 -0
- package/dist/terminal/table/layout-manager.js +257 -0
- package/dist/terminal/table/table.d.ts +9 -0
- package/dist/terminal/table/table.d.ts.map +1 -0
- package/dist/terminal/table/table.js +97 -0
- package/dist/terminal/table/utils.d.ts +63 -0
- package/dist/terminal/table/utils.d.ts.map +1 -0
- package/dist/terminal/table/utils.js +326 -0
- package/dist/tokens/threshold.d.ts +20 -0
- package/dist/tokens/threshold.d.ts.map +1 -0
- package/dist/tokens/threshold.js +67 -0
- package/dist/tools/advanced-edit-file.d.ts +69 -0
- package/dist/tools/advanced-edit-file.d.ts.map +1 -0
- package/dist/tools/advanced-edit-file.js +285 -0
- package/dist/tools/agent.d.ts +16 -5
- package/dist/tools/agent.d.ts.map +1 -1
- package/dist/tools/agent.js +86 -59
- package/dist/tools/bash.d.ts +23 -12
- package/dist/tools/bash.d.ts.map +1 -1
- package/dist/tools/bash.js +243 -128
- package/dist/tools/batch.d.ts +34 -0
- package/dist/tools/batch.d.ts.map +1 -0
- package/dist/tools/batch.js +174 -0
- package/dist/tools/code-interpreter.d.ts +21 -9
- package/dist/tools/code-interpreter.d.ts.map +1 -1
- package/dist/tools/code-interpreter.js +151 -134
- package/dist/tools/delete-file.d.ts +17 -10
- package/dist/tools/delete-file.d.ts.map +1 -1
- package/dist/tools/delete-file.js +60 -97
- package/dist/tools/directory-tree.d.ts +17 -12
- package/dist/tools/directory-tree.d.ts.map +1 -1
- package/dist/tools/directory-tree.js +57 -48
- package/dist/tools/dynamic-tool-loader.d.ts +16 -10
- package/dist/tools/dynamic-tool-loader.d.ts.map +1 -1
- package/dist/tools/dynamic-tool-loader.js +122 -130
- package/dist/tools/dynamic-tool-parser.d.ts +1 -0
- package/dist/tools/dynamic-tool-parser.d.ts.map +1 -1
- package/dist/tools/dynamic-tool-parser.js +1 -0
- package/dist/tools/edit-file.d.ts +35 -15
- package/dist/tools/edit-file.d.ts.map +1 -1
- package/dist/tools/edit-file.js +127 -114
- package/dist/tools/glob.d.ts +36 -0
- package/dist/tools/glob.d.ts.map +1 -0
- package/dist/tools/glob.js +154 -0
- package/dist/tools/grep.d.ts +73 -12
- package/dist/tools/grep.d.ts.map +1 -1
- package/dist/tools/grep.js +425 -165
- package/dist/tools/index.d.ts +220 -126
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +284 -135
- package/dist/tools/llm-edit-fixer.d.ts +24 -0
- package/dist/tools/llm-edit-fixer.d.ts.map +1 -0
- package/dist/tools/llm-edit-fixer.js +136 -0
- package/dist/tools/move-file.d.ts +19 -7
- package/dist/tools/move-file.d.ts.map +1 -1
- package/dist/tools/move-file.js +48 -34
- package/dist/tools/read-file.d.ts +47 -9
- package/dist/tools/read-file.d.ts.map +1 -1
- package/dist/tools/read-file.js +84 -70
- package/dist/tools/read-multiple-files.d.ts +17 -6
- package/dist/tools/read-multiple-files.d.ts.map +1 -1
- package/dist/tools/read-multiple-files.js +132 -72
- package/dist/tools/save-file.d.ts +45 -12
- package/dist/tools/save-file.d.ts.map +1 -1
- package/dist/tools/save-file.js +76 -101
- package/dist/tools/think.d.ts +15 -7
- package/dist/tools/think.d.ts.map +1 -1
- package/dist/tools/think.js +34 -20
- package/dist/tools/types.d.ts +8 -10
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/types.js +9 -0
- package/dist/tools/utils.d.ts +14 -0
- package/dist/tools/utils.d.ts.map +1 -0
- package/dist/tools/utils.js +16 -0
- package/dist/tools/web-fetch.d.ts +11 -4
- package/dist/tools/web-fetch.d.ts.map +1 -1
- package/dist/tools/web-fetch.js +39 -38
- package/dist/tools/web-search.d.ts +15 -6
- package/dist/tools/web-search.d.ts.map +1 -1
- package/dist/tools/web-search.js +64 -31
- package/dist/tui/autocomplete.d.ts +44 -0
- package/dist/tui/autocomplete.d.ts.map +1 -0
- package/dist/tui/autocomplete.js +466 -0
- package/dist/tui/components/assistant-message.d.ts +18 -0
- package/dist/tui/components/assistant-message.d.ts.map +1 -0
- package/dist/tui/components/assistant-message.js +29 -0
- package/dist/tui/components/box.d.ts +20 -0
- package/dist/tui/components/box.d.ts.map +1 -0
- package/dist/tui/components/box.js +81 -0
- package/dist/tui/components/editor.d.ts +106 -0
- package/dist/tui/components/editor.d.ts.map +1 -0
- package/dist/tui/components/editor.js +1220 -0
- package/dist/tui/components/footer.d.ts +12 -0
- package/dist/tui/components/footer.d.ts.map +1 -0
- package/dist/tui/components/footer.js +209 -0
- package/dist/tui/components/header.d.ts +21 -0
- package/dist/tui/components/header.d.ts.map +1 -0
- package/dist/tui/components/header.js +63 -0
- package/dist/tui/components/input.d.ts +14 -0
- package/dist/tui/components/input.d.ts.map +1 -0
- package/dist/tui/components/input.js +122 -0
- package/dist/tui/components/loader.d.ts +23 -0
- package/dist/tui/components/loader.d.ts.map +1 -0
- package/dist/tui/components/loader.js +45 -0
- package/dist/tui/components/markdown.d.ts +106 -0
- package/dist/tui/components/markdown.d.ts.map +1 -0
- package/dist/tui/components/markdown.js +586 -0
- package/dist/tui/components/modal.d.ts +29 -0
- package/dist/tui/components/modal.d.ts.map +1 -0
- package/dist/tui/components/modal.js +263 -0
- package/dist/tui/components/progress-bar.d.ts +19 -0
- package/dist/tui/components/progress-bar.d.ts.map +1 -0
- package/dist/tui/components/progress-bar.js +78 -0
- package/dist/tui/components/prompt-status.d.ts +17 -0
- package/dist/tui/components/prompt-status.d.ts.map +1 -0
- package/dist/tui/components/prompt-status.js +26 -0
- package/dist/tui/components/select-list.d.ts +48 -0
- package/dist/tui/components/select-list.d.ts.map +1 -0
- package/dist/tui/components/select-list.js +207 -0
- package/dist/tui/components/spacer.d.ts +16 -0
- package/dist/tui/components/spacer.d.ts.map +1 -0
- package/dist/tui/components/spacer.js +27 -0
- package/dist/tui/components/table.d.ts +27 -0
- package/dist/tui/components/table.d.ts.map +1 -0
- package/dist/tui/components/table.js +125 -0
- package/dist/tui/components/text.d.ts +26 -0
- package/dist/tui/components/text.d.ts.map +1 -0
- package/dist/tui/components/text.js +143 -0
- package/dist/tui/components/thinking-block.d.ts +14 -0
- package/dist/tui/components/thinking-block.d.ts.map +1 -0
- package/dist/tui/components/thinking-block.js +33 -0
- package/dist/tui/components/tool-execution.d.ts +21 -0
- package/dist/tui/components/tool-execution.d.ts.map +1 -0
- package/dist/tui/components/tool-execution.js +161 -0
- package/dist/tui/components/user-message.d.ts +9 -0
- package/dist/tui/components/user-message.d.ts.map +1 -0
- package/dist/tui/components/user-message.js +23 -0
- package/dist/tui/components/welcome.d.ts +6 -0
- package/dist/tui/components/welcome.d.ts.map +1 -0
- package/dist/tui/components/welcome.js +30 -0
- package/dist/tui/index.d.ts +18 -0
- package/dist/tui/index.d.ts.map +1 -0
- package/dist/tui/index.js +22 -0
- package/dist/tui/terminal.d.ts +38 -0
- package/dist/tui/terminal.d.ts.map +1 -0
- package/dist/tui/terminal.js +94 -0
- package/dist/tui/tui.d.ts +69 -0
- package/dist/tui/tui.d.ts.map +1 -0
- package/dist/tui/tui.js +204 -0
- package/dist/tui/utils.d.ts +24 -0
- package/dist/tui/utils.d.ts.map +1 -0
- package/dist/tui/utils.js +111 -0
- package/dist/utils/bash.d.ts +7 -0
- package/dist/utils/bash.d.ts.map +1 -0
- package/dist/{tools/bash-utils.js → utils/bash.js} +31 -12
- package/dist/utils/{filesystem.d.ts → filesystem/operations.d.ts} +1 -1
- package/dist/utils/filesystem/operations.d.ts.map +1 -0
- package/dist/utils/filesystem/security.d.ts +9 -0
- package/dist/utils/filesystem/security.d.ts.map +1 -0
- package/dist/{tools/filesystem-utils.js → utils/filesystem/security.js} +93 -21
- package/dist/utils/funcs.d.ts +6 -0
- package/dist/utils/funcs.d.ts.map +1 -0
- package/dist/utils/funcs.js +6 -0
- package/dist/utils/generators.d.ts +3 -0
- package/dist/utils/generators.d.ts.map +1 -0
- package/dist/utils/generators.js +25 -0
- package/dist/{tools/git-utils.d.ts → utils/git.d.ts} +1 -1
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/{tools/git-utils.js → utils/git.js} +0 -6
- package/dist/utils/glob.js +1 -1
- package/dist/utils/iterables.d.ts +2 -0
- package/dist/utils/iterables.d.ts.map +1 -0
- package/dist/utils/iterables.js +6 -0
- package/dist/utils/{zod-utils.d.ts → zod.d.ts} +1 -1
- package/dist/utils/zod.d.ts.map +1 -0
- package/package.json +21 -21
- package/dist/conversation-analyzer.d.ts +0 -11
- package/dist/conversation-analyzer.d.ts.map +0 -1
- package/dist/conversation-analyzer.js +0 -88
- package/dist/repl/display-tool-messages.d.ts +0 -4
- package/dist/repl/display-tool-messages.d.ts.map +0 -1
- package/dist/repl/display-tool-messages.js +0 -55
- package/dist/repl/display-tool-use.d.ts +0 -14
- package/dist/repl/display-tool-use.d.ts.map +0 -1
- package/dist/repl/display-tool-use.js +0 -63
- package/dist/repl/get-prompt-header.d.ts +0 -8
- package/dist/repl/get-prompt-header.d.ts.map +0 -1
- package/dist/repl/get-prompt-header.js +0 -38
- package/dist/repl-prompt.d.ts +0 -15
- package/dist/repl-prompt.d.ts.map +0 -1
- package/dist/repl-prompt.js +0 -147
- package/dist/repl.d.ts +0 -31
- package/dist/repl.d.ts.map +0 -1
- package/dist/repl.js +0 -310
- package/dist/terminal/checkbox-prompt.d.ts +0 -36
- package/dist/terminal/checkbox-prompt.d.ts.map +0 -1
- package/dist/terminal/checkbox-prompt.js +0 -362
- package/dist/terminal/editor-prompt.d.ts +0 -10
- package/dist/terminal/editor-prompt.d.ts.map +0 -1
- package/dist/terminal/editor-prompt.js +0 -61
- package/dist/terminal/errors.d.ts +0 -19
- package/dist/terminal/errors.d.ts.map +0 -1
- package/dist/terminal/errors.js +0 -37
- package/dist/terminal/input-prompt.d.ts +0 -16
- package/dist/terminal/input-prompt.d.ts.map +0 -1
- package/dist/terminal/input-prompt.js +0 -181
- package/dist/terminal/search-prompt.d.ts +0 -20
- package/dist/terminal/search-prompt.d.ts.map +0 -1
- package/dist/terminal/search-prompt.js +0 -279
- package/dist/terminal/types.d.ts +0 -35
- package/dist/terminal/types.d.ts.map +0 -1
- package/dist/terminal/types.js +0 -1
- package/dist/tokens/manage-output.d.ts +0 -34
- package/dist/tokens/manage-output.d.ts.map +0 -1
- package/dist/tokens/manage-output.js +0 -44
- package/dist/tool-executor.d.ts +0 -28
- package/dist/tool-executor.d.ts.map +0 -1
- package/dist/tool-executor.js +0 -74
- package/dist/tools/bash-utils.d.ts +0 -7
- package/dist/tools/bash-utils.d.ts.map +0 -1
- package/dist/tools/file-editing-utils.d.ts +0 -2
- package/dist/tools/file-editing-utils.d.ts.map +0 -1
- package/dist/tools/file-editing-utils.js +0 -135
- package/dist/tools/filesystem-utils.d.ts +0 -7
- package/dist/tools/filesystem-utils.d.ts.map +0 -1
- package/dist/tools/git-utils.d.ts.map +0 -1
- package/dist/utils/filesystem.d.ts.map +0 -1
- package/dist/utils/zod-utils.d.ts.map +0 -1
- /package/dist/utils/{filesystem.js → filesystem/operations.js} +0 -0
- /package/dist/utils/{zod-utils.js → zod.js} +0 -0
|
@@ -1,69 +1,78 @@
|
|
|
1
1
|
import fs from "node:fs/promises";
|
|
2
2
|
import path from "node:path";
|
|
3
|
-
import { tool } from "ai";
|
|
4
3
|
import { z } from "zod";
|
|
5
|
-
import { config } from "../config.js";
|
|
6
4
|
import style from "../terminal/style.js";
|
|
7
|
-
import {
|
|
5
|
+
import { manageTokenLimit, TokenLimitExceededError, } from "../tokens/threshold.js";
|
|
6
|
+
import { joinWorkingDir, validatePath } from "../utils/filesystem/security.js";
|
|
8
7
|
import ignore from "../utils/ignore.js";
|
|
9
|
-
import { joinWorkingDir, validatePath } from "./filesystem-utils.js";
|
|
10
8
|
export const DirectoryTreeTool = {
|
|
11
9
|
name: "directoryTree",
|
|
12
10
|
};
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
const inputSchema = z.object({
|
|
12
|
+
path: z.string().describe("The path."),
|
|
13
|
+
});
|
|
14
|
+
export const createDirectoryTreeTool = async ({ workingDir, allowedDirs, tokenCounter, }) => {
|
|
15
|
+
const allowedDirectory = allowedDirs ?? [workingDir];
|
|
15
16
|
return {
|
|
16
|
-
|
|
17
|
-
description: "Get a directory tree structure for a given path. This tool will ignore any directories or files listed in a .gitignore file. Use this tool when you need to see a complete directory tree for a
|
|
18
|
-
inputSchema
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
17
|
+
toolDef: {
|
|
18
|
+
description: "Get a directory tree structure for a given path. This tool will ignore any directories or files listed in a .gitignore file. Use this tool when you need to see a complete directory tree for a path in the allowed directories. This can be used to get an understanding of how a project is organized and what files are available before using other file system tools.",
|
|
19
|
+
inputSchema,
|
|
20
|
+
},
|
|
21
|
+
async *execute({ path }, { toolCallId, abortSignal }) {
|
|
22
|
+
try {
|
|
22
23
|
// Check if execution has been aborted
|
|
23
24
|
if (abortSignal?.aborted) {
|
|
24
25
|
throw new Error("Directory tree listing aborted");
|
|
25
26
|
}
|
|
26
|
-
|
|
27
|
+
yield {
|
|
28
|
+
name: DirectoryTreeTool.name,
|
|
29
|
+
id: toolCallId,
|
|
30
|
+
event: "tool-init",
|
|
31
|
+
data: `${style.cyan(path)}`,
|
|
32
|
+
};
|
|
33
|
+
const validPath = await validatePath(joinWorkingDir(path, workingDir), allowedDirectory, { abortSignal });
|
|
34
|
+
if (abortSignal?.aborted) {
|
|
35
|
+
throw new Error("Directory tree listing aborted before tree generation");
|
|
36
|
+
}
|
|
37
|
+
const rawTree = await directoryTree(validPath);
|
|
27
38
|
try {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
data: `Listing directory tree: ${style.cyan(path)}`,
|
|
35
|
-
});
|
|
36
|
-
validPath = await validatePath(joinWorkingDir(path, workingDir), allowedDirectory, { abortSignal });
|
|
37
|
-
const maxTokens = (await config.readProjectConfig()).tools.maxTokens;
|
|
38
|
-
const rawTree = await directoryTree(validPath);
|
|
39
|
-
const managed = manageOutput(rawTree, {
|
|
40
|
-
tokenCounter,
|
|
41
|
-
threshold: maxTokens,
|
|
42
|
-
});
|
|
43
|
-
if (managed.truncated) {
|
|
44
|
-
sendData?.({
|
|
45
|
-
id: toolCallId,
|
|
46
|
-
event: "tool-update",
|
|
47
|
-
data: { primary: managed.warning },
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
sendData?.({
|
|
39
|
+
const result = await manageTokenLimit(rawTree, tokenCounter, "DirectoryTree", "Use excludeDirPatterns or recursive=false to reduce output");
|
|
40
|
+
// Count files in the tree output
|
|
41
|
+
const fileCount = (result.content.match(/\n/g) || []).length + 1;
|
|
42
|
+
const completionMessage = `Found ${fileCount} files (${result.tokenCount} tokens)`;
|
|
43
|
+
yield {
|
|
44
|
+
name: DirectoryTreeTool.name,
|
|
51
45
|
id: toolCallId,
|
|
52
46
|
event: "tool-completion",
|
|
53
|
-
data:
|
|
54
|
-
}
|
|
55
|
-
|
|
47
|
+
data: completionMessage,
|
|
48
|
+
};
|
|
49
|
+
yield result.content;
|
|
56
50
|
}
|
|
57
51
|
catch (error) {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
52
|
+
if (error instanceof TokenLimitExceededError) {
|
|
53
|
+
yield {
|
|
54
|
+
name: DirectoryTreeTool.name,
|
|
55
|
+
event: "tool-error",
|
|
56
|
+
id: toolCallId,
|
|
57
|
+
data: error.message,
|
|
58
|
+
};
|
|
59
|
+
yield error.message;
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
throw error;
|
|
64
63
|
}
|
|
65
|
-
}
|
|
66
|
-
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
const errorMsg = error.message;
|
|
67
|
+
yield {
|
|
68
|
+
name: DirectoryTreeTool.name,
|
|
69
|
+
id: toolCallId,
|
|
70
|
+
event: "tool-error",
|
|
71
|
+
data: errorMsg,
|
|
72
|
+
};
|
|
73
|
+
yield errorMsg;
|
|
74
|
+
}
|
|
75
|
+
},
|
|
67
76
|
};
|
|
68
77
|
};
|
|
69
78
|
/**
|
|
@@ -107,7 +116,7 @@ async function generateDirectoryTree(dirPath, ig, level = 1) {
|
|
|
107
116
|
* @param dirPath - The path of the directory to generate the tree for.
|
|
108
117
|
* @returns A Promise that resolves to a string representation of the directory tree.
|
|
109
118
|
*/
|
|
110
|
-
|
|
119
|
+
async function directoryTree(dirPath) {
|
|
111
120
|
let ig;
|
|
112
121
|
try {
|
|
113
122
|
const ignoreFile = await fs.readFile(path.join(process.cwd(), ".gitignore"));
|
|
@@ -1,12 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import type { ToolCallOptions } from "ai";
|
|
2
|
+
import type { ToolResult } from "./types.ts";
|
|
3
|
+
interface DynamicToolObject {
|
|
4
|
+
toolDef: {
|
|
5
|
+
description: string;
|
|
6
|
+
inputSchema: any;
|
|
7
|
+
};
|
|
8
|
+
execute: (input: Record<string, unknown>, options: ToolCallOptions) => AsyncGenerator<ToolResult>;
|
|
9
|
+
ask?: (input: Record<string, unknown>, options: ToolCallOptions) => Promise<{
|
|
10
|
+
approve: boolean;
|
|
11
|
+
reason?: string;
|
|
12
|
+
}>;
|
|
13
|
+
}
|
|
14
|
+
export declare function loadDynamicTools({ baseDir }: {
|
|
7
15
|
baseDir: string;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
[x: string]: import("ai").Tool<Record<string, unknown>, unknown>;
|
|
11
|
-
}>>;
|
|
16
|
+
}): Promise<Record<string, DynamicToolObject>>;
|
|
17
|
+
export {};
|
|
12
18
|
//# sourceMappingURL=dynamic-tool-loader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dynamic-tool-loader.d.ts","sourceRoot":"","sources":["../../source/tools/dynamic-tool-loader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dynamic-tool-loader.d.ts","sourceRoot":"","sources":["../../source/tools/dynamic-tool-loader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;AAK1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AA+K7C,UAAU,iBAAiB;IACzB,OAAO,EAAE;QACP,WAAW,EAAE,MAAM,CAAC;QAEpB,WAAW,EAAE,GAAG,CAAC;KAClB,CAAC;IACF,OAAO,EAAE,CACP,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,OAAO,EAAE,eAAe,KACrB,cAAc,CAAC,UAAU,CAAC,CAAC;IAChC,GAAG,CAAC,EAAE,CACJ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,OAAO,EAAE,eAAe,KACrB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrD;AA0ED,wBAAsB,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,8CAgEtE"}
|
|
@@ -2,7 +2,6 @@ import { spawn } from "node:child_process";
|
|
|
2
2
|
import fs from "node:fs";
|
|
3
3
|
import os from "node:os";
|
|
4
4
|
import path from "node:path";
|
|
5
|
-
import { tool } from "ai";
|
|
6
5
|
import { z } from "zod";
|
|
7
6
|
import { config } from "../config.js";
|
|
8
7
|
import { logger } from "../logger.js";
|
|
@@ -85,144 +84,137 @@ async function getMetadata(scriptPath) {
|
|
|
85
84
|
});
|
|
86
85
|
});
|
|
87
86
|
}
|
|
88
|
-
|
|
87
|
+
async function spawnChildProcess(scriptPath, params, abortSignal) {
|
|
88
|
+
const paramsArray = Object.entries(params).map(([name, value]) => ({
|
|
89
|
+
name,
|
|
90
|
+
value,
|
|
91
|
+
}));
|
|
92
|
+
const paramsJson = JSON.stringify(paramsArray);
|
|
93
|
+
return new Promise((resolve, reject) => {
|
|
94
|
+
const child = spawn(process.execPath, [scriptPath], {
|
|
95
|
+
cwd: path.dirname(scriptPath),
|
|
96
|
+
env: {
|
|
97
|
+
...process.env,
|
|
98
|
+
// biome-ignore lint/style/useNamingConvention: Environment variables are conventionally uppercase
|
|
99
|
+
TOOL_ACTION: "execute",
|
|
100
|
+
// biome-ignore lint/style/useNamingConvention: Environment variables are conventionally uppercase
|
|
101
|
+
NODE_ENV: "production",
|
|
102
|
+
},
|
|
103
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
104
|
+
});
|
|
105
|
+
let stdout = "";
|
|
106
|
+
let stderr = "";
|
|
107
|
+
let hasTimedOut = false;
|
|
108
|
+
const timer = setTimeout(() => {
|
|
109
|
+
hasTimedOut = true;
|
|
110
|
+
child.kill();
|
|
111
|
+
reject(new Error("Execution timed out after 30 seconds"));
|
|
112
|
+
}, 30000);
|
|
113
|
+
child.stdin.write(`${paramsJson}\n`);
|
|
114
|
+
child.stdin.end();
|
|
115
|
+
child.stdout.on("data", (data) => {
|
|
116
|
+
stdout += data.toString();
|
|
117
|
+
});
|
|
118
|
+
child.stderr.on("data", (data) => {
|
|
119
|
+
stderr += data.toString();
|
|
120
|
+
});
|
|
121
|
+
child.on("close", () => {
|
|
122
|
+
clearTimeout(timer);
|
|
123
|
+
if (hasTimedOut)
|
|
124
|
+
return;
|
|
125
|
+
let output = stdout.trim();
|
|
126
|
+
const maxOutputBytes = 2000000;
|
|
127
|
+
if (output.length > maxOutputBytes) {
|
|
128
|
+
output = `${output.substring(0, maxOutputBytes)}\n[Output truncated]`;
|
|
129
|
+
}
|
|
130
|
+
// If no stdout, prefer stderr so callers get useful info
|
|
131
|
+
const errText = stderr.trim();
|
|
132
|
+
if (!output && errText) {
|
|
133
|
+
output = errText;
|
|
134
|
+
}
|
|
135
|
+
// Fallback to a non-empty placeholder to satisfy callers
|
|
136
|
+
if (!output) {
|
|
137
|
+
output = "[No output from dynamic tool]";
|
|
138
|
+
}
|
|
139
|
+
// Attempt to parse as JSON if structured
|
|
140
|
+
if (output && (output.startsWith("{") || output.startsWith("["))) {
|
|
141
|
+
try {
|
|
142
|
+
resolve(JSON.stringify(JSON.parse(output)));
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
resolve(output);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
resolve(output);
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
if (abortSignal) {
|
|
153
|
+
abortSignal.addEventListener("abort", () => {
|
|
154
|
+
child.kill();
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
function createDynamicTool(scriptPath, metadata) {
|
|
89
160
|
const inputSchema = generateZodSchema(metadata.parameters);
|
|
90
161
|
const toolName = `dynamic-${metadata.name}`;
|
|
91
162
|
return {
|
|
92
|
-
[toolName]:
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
}
|
|
99
|
-
sendData?.({
|
|
100
|
-
id: toolCallId,
|
|
101
|
-
event: "tool-init",
|
|
102
|
-
data: `Executing dynamic tool: ${metadata.name}`,
|
|
103
|
-
});
|
|
104
|
-
// Validate params again for safety
|
|
163
|
+
[toolName]: {
|
|
164
|
+
toolDef: {
|
|
165
|
+
description: metadata.description,
|
|
166
|
+
inputSchema,
|
|
167
|
+
},
|
|
168
|
+
async *execute(input, { toolCallId, abortSignal }) {
|
|
105
169
|
try {
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
170
|
+
if (abortSignal?.aborted) {
|
|
171
|
+
throw new Error("Execution aborted");
|
|
172
|
+
}
|
|
173
|
+
yield {
|
|
174
|
+
name: metadata.name,
|
|
175
|
+
event: "tool-init",
|
|
111
176
|
id: toolCallId,
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
const child = spawn(process.execPath, [scriptPath], {
|
|
124
|
-
cwd: path.dirname(scriptPath),
|
|
125
|
-
env: {
|
|
126
|
-
...process.env,
|
|
127
|
-
// biome-ignore lint/style/useNamingConvention: Environment variables are conventionally uppercase
|
|
128
|
-
TOOL_ACTION: "execute",
|
|
129
|
-
// biome-ignore lint/style/useNamingConvention: Environment variables are conventionally uppercase
|
|
130
|
-
NODE_ENV: "production",
|
|
131
|
-
},
|
|
132
|
-
stdio: ["pipe", "pipe", "pipe"],
|
|
133
|
-
});
|
|
134
|
-
let stdout = "";
|
|
135
|
-
let stderr = "";
|
|
136
|
-
let hasTimedOut = false;
|
|
137
|
-
const timer = setTimeout(() => {
|
|
138
|
-
hasTimedOut = true;
|
|
139
|
-
child.kill();
|
|
140
|
-
sendData?.({
|
|
177
|
+
data: "Running",
|
|
178
|
+
};
|
|
179
|
+
// Validate params again for safety
|
|
180
|
+
try {
|
|
181
|
+
inputSchema.parse(input);
|
|
182
|
+
}
|
|
183
|
+
catch (e) {
|
|
184
|
+
const errMsg = `Invalid parameters for tool ${metadata.name}: ${e.message}`;
|
|
185
|
+
yield {
|
|
186
|
+
name: metadata.name,
|
|
187
|
+
event: "tool-error",
|
|
141
188
|
id: toolCallId,
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
}, 30000);
|
|
147
|
-
child.stdin.write(`${paramsJson}\n`);
|
|
148
|
-
child.stdin.end();
|
|
149
|
-
child.stdout.on("data", (data) => {
|
|
150
|
-
stdout += data.toString();
|
|
151
|
-
});
|
|
152
|
-
child.stderr.on("data", (data) => {
|
|
153
|
-
stderr += data.toString();
|
|
154
|
-
});
|
|
155
|
-
child.on("close", (code) => {
|
|
156
|
-
clearTimeout(timer);
|
|
157
|
-
if (hasTimedOut)
|
|
158
|
-
return;
|
|
159
|
-
if (code !== 0) {
|
|
160
|
-
const errorMsg = `Dynamic tool ${metadata.name} failed: ${stderr || `Exited with code ${code}`}`;
|
|
161
|
-
sendData?.({
|
|
162
|
-
id: toolCallId,
|
|
163
|
-
event: "tool-error",
|
|
164
|
-
data: errorMsg,
|
|
165
|
-
});
|
|
166
|
-
resolve(errorMsg);
|
|
167
|
-
}
|
|
168
|
-
else {
|
|
169
|
-
let output = stdout.trim();
|
|
170
|
-
const maxOutputBytes = 2000000;
|
|
171
|
-
if (output.length > maxOutputBytes) {
|
|
172
|
-
output = `${output.substring(0, maxOutputBytes)}\n[Output truncated]`;
|
|
173
|
-
}
|
|
174
|
-
// If no stdout, prefer stderr so callers get useful info
|
|
175
|
-
const errText = stderr.trim();
|
|
176
|
-
if (!output && errText) {
|
|
177
|
-
output = errText;
|
|
178
|
-
}
|
|
179
|
-
// Fallback to a non-empty placeholder to satisfy callers
|
|
180
|
-
if (!output) {
|
|
181
|
-
output = `[No output from dynamic tool ${metadata.name}]`;
|
|
182
|
-
}
|
|
183
|
-
// Send tool-update event with last 20 lines of output
|
|
184
|
-
const outputLines = output.split("\n");
|
|
185
|
-
const lastLines = outputLines.slice(-20).join("\n");
|
|
186
|
-
sendData?.({
|
|
187
|
-
id: toolCallId,
|
|
188
|
-
event: "tool-update",
|
|
189
|
-
data: {
|
|
190
|
-
primary: `Last 20 lines of output from ${metadata.name}:`,
|
|
191
|
-
secondary: lastLines.split("\n"),
|
|
192
|
-
},
|
|
193
|
-
});
|
|
194
|
-
// Attempt to parse as JSON if structured
|
|
195
|
-
if (output &&
|
|
196
|
-
(output.startsWith("{") || output.startsWith("["))) {
|
|
197
|
-
try {
|
|
198
|
-
resolve(JSON.parse(output));
|
|
199
|
-
}
|
|
200
|
-
catch {
|
|
201
|
-
resolve(output);
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
else {
|
|
205
|
-
resolve(output);
|
|
206
|
-
}
|
|
207
|
-
sendData?.({
|
|
208
|
-
id: toolCallId,
|
|
209
|
-
event: "tool-completion",
|
|
210
|
-
data: `Dynamic tool ${metadata.name} completed`,
|
|
211
|
-
});
|
|
212
|
-
}
|
|
213
|
-
});
|
|
214
|
-
if (abortSignal) {
|
|
215
|
-
abortSignal.addEventListener("abort", () => {
|
|
216
|
-
child.kill();
|
|
217
|
-
});
|
|
189
|
+
data: errMsg,
|
|
190
|
+
};
|
|
191
|
+
yield errMsg;
|
|
192
|
+
return;
|
|
218
193
|
}
|
|
219
|
-
|
|
194
|
+
const result = await spawnChildProcess(scriptPath, input, abortSignal);
|
|
195
|
+
yield {
|
|
196
|
+
name: metadata.name,
|
|
197
|
+
event: "tool-completion",
|
|
198
|
+
id: toolCallId,
|
|
199
|
+
data: "Completed",
|
|
200
|
+
};
|
|
201
|
+
yield result;
|
|
202
|
+
}
|
|
203
|
+
catch (error) {
|
|
204
|
+
yield {
|
|
205
|
+
name: metadata.name,
|
|
206
|
+
event: "tool-error",
|
|
207
|
+
id: toolCallId,
|
|
208
|
+
data: `${metadata.name}: ${error.message}`,
|
|
209
|
+
};
|
|
210
|
+
yield error.message;
|
|
211
|
+
}
|
|
220
212
|
},
|
|
221
|
-
}
|
|
213
|
+
},
|
|
222
214
|
};
|
|
223
215
|
}
|
|
224
|
-
export async function loadDynamicTools({ baseDir
|
|
225
|
-
const projectConfig = await config.
|
|
216
|
+
export async function loadDynamicTools({ baseDir }) {
|
|
217
|
+
const projectConfig = await config.getConfig();
|
|
226
218
|
const dynamicConfig = projectConfig.tools.dynamicTools;
|
|
227
219
|
if (!dynamicConfig.enabled) {
|
|
228
220
|
logger.info("Dynamic tools disabled in config.");
|
|
@@ -274,7 +266,7 @@ export async function loadDynamicTools({ baseDir, sendData, }) {
|
|
|
274
266
|
}
|
|
275
267
|
const tools = {};
|
|
276
268
|
for (const [_, { path, metadata }] of toolMap) {
|
|
277
|
-
Object.assign(tools, createDynamicTool(path, metadata
|
|
269
|
+
Object.assign(tools, createDynamicTool(path, metadata));
|
|
278
270
|
}
|
|
279
271
|
return tools;
|
|
280
272
|
}
|
|
@@ -13,6 +13,7 @@ declare const toolMetadataSchema: z.ZodObject<{
|
|
|
13
13
|
required: z.ZodDefault<z.ZodBoolean>;
|
|
14
14
|
default: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
|
|
15
15
|
}, z.core.$strip>>;
|
|
16
|
+
needsApproval: z.ZodDefault<z.ZodBoolean>;
|
|
16
17
|
}, z.core.$strip>;
|
|
17
18
|
export type ToolMetadata = z.infer<typeof toolMetadataSchema>;
|
|
18
19
|
export declare function parseToolMetadata(output: string): ToolMetadata;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dynamic-tool-parser.d.ts","sourceRoot":"","sources":["../../source/tools/dynamic-tool-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,QAAA,MAAM,kBAAkB
|
|
1
|
+
{"version":3,"file":"dynamic-tool-parser.d.ts","sourceRoot":"","sources":["../../source/tools/dynamic-tool-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;iBAatB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAS9D"}
|
|
@@ -1,27 +1,47 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import
|
|
3
|
-
import type {
|
|
1
|
+
import type { ToolCallOptions } from "ai";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import type { ModelManager } from "../models/manager.ts";
|
|
4
|
+
import type { TokenTracker } from "../tokens/tracker.ts";
|
|
5
|
+
import type { ToolResult } from "./types.ts";
|
|
4
6
|
export declare const EditFileTool: {
|
|
5
7
|
name: "editFile";
|
|
6
8
|
};
|
|
7
|
-
|
|
9
|
+
declare const inputSchema: z.ZodObject<{
|
|
10
|
+
path: z.ZodString;
|
|
11
|
+
edits: z.ZodArray<z.ZodObject<{
|
|
12
|
+
oldText: z.ZodString;
|
|
13
|
+
newText: z.ZodString;
|
|
14
|
+
}, z.core.$strip>>;
|
|
15
|
+
}, z.core.$strip>;
|
|
16
|
+
type EditFileInputSchema = z.infer<typeof inputSchema>;
|
|
17
|
+
export declare const createEditFileTool: ({ workingDir, allowedDirs, modelManager, tokenTracker, enableLlmFix, }: {
|
|
8
18
|
workingDir: string;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
19
|
+
allowedDirs?: string[];
|
|
20
|
+
modelManager?: ModelManager;
|
|
21
|
+
tokenTracker?: TokenTracker;
|
|
22
|
+
enableLlmFix?: boolean;
|
|
12
23
|
}) => Promise<{
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
24
|
+
toolDef: {
|
|
25
|
+
description: string;
|
|
26
|
+
inputSchema: z.ZodObject<{
|
|
27
|
+
path: z.ZodString;
|
|
28
|
+
edits: z.ZodArray<z.ZodObject<{
|
|
29
|
+
oldText: z.ZodString;
|
|
30
|
+
newText: z.ZodString;
|
|
31
|
+
}, z.core.$strip>>;
|
|
32
|
+
}, z.core.$strip>;
|
|
33
|
+
};
|
|
34
|
+
execute({ path, edits }: EditFileInputSchema, { toolCallId, abortSignal }: ToolCallOptions): AsyncGenerator<ToolResult>;
|
|
20
35
|
}>;
|
|
21
36
|
interface FileEdit {
|
|
22
37
|
oldText: string;
|
|
23
38
|
newText: string;
|
|
24
39
|
}
|
|
25
|
-
export declare function applyFileEdits(filePath: string, edits: FileEdit[], dryRun?: boolean, abortSignal?: AbortSignal
|
|
40
|
+
export declare function applyFileEdits(filePath: string, edits: FileEdit[], dryRun?: boolean, abortSignal?: AbortSignal, options?: {
|
|
41
|
+
modelManager?: ModelManager;
|
|
42
|
+
tokenTracker?: TokenTracker;
|
|
43
|
+
enableLlmFix?: boolean;
|
|
44
|
+
instruction?: string;
|
|
45
|
+
}): Promise<string>;
|
|
26
46
|
export {};
|
|
27
47
|
//# sourceMappingURL=edit-file.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit-file.d.ts","sourceRoot":"","sources":["../../source/tools/edit-file.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"edit-file.d.ts","sourceRoot":"","sources":["../../source/tools/edit-file.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;AAE1C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAOzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,eAAO,MAAM,YAAY;;CAExB,CAAC;AAEF,QAAA,MAAM,WAAW;;;;;;iBAcf,CAAC;AAEH,KAAK,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEvD,eAAO,MAAM,kBAAkB,GAAU,wEAMtC;IACD,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;;;;;;;;;;;6BAcsB,mBAAmB,+BACP,eAAe,GAC3C,cAAc,CAAC,UAAU,CAAC;EAgEhC,CAAC;AAyBF,UAAU,QAAQ;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,QAAQ,EAAE,EACjB,MAAM,UAAQ,EACd,WAAW,CAAC,EAAE,WAAW,EACzB,OAAO,CAAC,EAAE;IACR,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GACA,OAAO,CAAC,MAAM,CAAC,CA2DjB"}
|