@travisennis/acai 0.0.4 → 0.0.6
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 +229 -8
- package/dist/agent/index.d.ts +119 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +406 -0
- package/dist/agent/manual-loop.d.ts +41 -0
- package/dist/agent/manual-loop.d.ts.map +1 -0
- package/dist/agent/manual-loop.js +278 -0
- package/dist/api/exa/index.d.ts +177 -0
- package/dist/api/exa/index.d.ts.map +1 -0
- package/dist/api/exa/index.js +439 -0
- package/dist/cli.d.ts +5 -2
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +27 -33
- 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 +85 -0
- package/dist/commands/application-log-command.d.ts +1 -0
- package/dist/commands/application-log-command.d.ts.map +1 -0
- package/dist/commands/application-log-command.js +39 -3
- package/dist/commands/clear-command.d.ts +1 -0
- package/dist/commands/clear-command.d.ts.map +1 -0
- package/dist/commands/clear-command.js +10 -3
- package/dist/commands/compact-command.d.ts +1 -0
- package/dist/commands/compact-command.d.ts.map +1 -0
- package/dist/commands/compact-command.js +16 -3
- 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 +183 -0
- package/dist/commands/copy-command.d.ts +1 -0
- package/dist/commands/copy-command.d.ts.map +1 -0
- package/dist/commands/copy-command.js +31 -2
- package/dist/commands/edit-command.d.ts +1 -0
- package/dist/commands/edit-command.d.ts.map +1 -0
- package/dist/commands/edit-command.js +40 -5
- package/dist/commands/edit-prompt-command.d.ts +2 -1
- package/dist/commands/edit-prompt-command.d.ts.map +1 -0
- package/dist/commands/edit-prompt-command.js +43 -7
- package/dist/commands/exit-command.d.ts +13 -2
- package/dist/commands/exit-command.d.ts.map +1 -0
- package/dist/commands/exit-command.js +34 -2
- package/dist/commands/files-command.d.ts +1 -0
- package/dist/commands/files-command.d.ts.map +1 -0
- package/dist/commands/files-command.js +66 -8
- package/dist/commands/generate-rules-command.d.ts +1 -0
- package/dist/commands/generate-rules-command.d.ts.map +1 -0
- package/dist/commands/generate-rules-command.js +315 -4
- 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 +202 -0
- package/dist/commands/health-command.d.ts +3 -1
- package/dist/commands/health-command.d.ts.map +1 -0
- package/dist/commands/health-command.js +160 -6
- package/dist/commands/help-command.d.ts +1 -0
- package/dist/commands/help-command.d.ts.map +1 -0
- package/dist/commands/help-command.js +30 -3
- 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 +534 -0
- package/dist/commands/init-command.d.ts +2 -1
- package/dist/commands/init-command.d.ts.map +1 -0
- package/dist/commands/init-command.js +56 -20
- package/dist/commands/last-log-command.d.ts +1 -0
- package/dist/commands/last-log-command.d.ts.map +1 -0
- package/dist/commands/last-log-command.js +39 -17
- 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 +48 -0
- package/dist/commands/list-tools-command.d.ts +3 -0
- package/dist/commands/list-tools-command.d.ts.map +1 -0
- package/dist/commands/list-tools-command.js +124 -0
- package/dist/commands/manager.d.ts +20 -3
- package/dist/commands/manager.d.ts.map +1 -0
- package/dist/commands/manager.js +123 -26
- package/dist/commands/model-command.d.ts +23 -0
- package/dist/commands/model-command.d.ts.map +1 -0
- package/dist/commands/model-command.js +261 -5
- package/dist/commands/paste-command.d.ts +1 -0
- package/dist/commands/paste-command.d.ts.map +1 -0
- package/dist/commands/paste-command.js +98 -5
- 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 +161 -0
- package/dist/commands/prompt-command.d.ts +2 -1
- package/dist/commands/prompt-command.d.ts.map +1 -0
- package/dist/commands/prompt-command.js +178 -9
- 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 +87 -0
- package/dist/commands/reset-command.d.ts +2 -1
- package/dist/commands/reset-command.d.ts.map +1 -0
- package/dist/commands/reset-command.js +14 -3
- package/dist/commands/rules-command.d.ts +1 -0
- package/dist/commands/rules-command.d.ts.map +1 -0
- package/dist/commands/rules-command.js +70 -3
- package/dist/commands/save-command.d.ts +1 -0
- package/dist/commands/save-command.d.ts.map +1 -0
- package/dist/commands/save-command.js +13 -1
- package/dist/commands/shell-command.d.ts +3 -0
- package/dist/commands/shell-command.d.ts.map +1 -0
- package/dist/commands/shell-command.js +128 -0
- package/dist/commands/types.d.ts +16 -8
- package/dist/commands/types.d.ts.map +1 -0
- package/dist/commands/usage-command.d.ts +1 -0
- package/dist/commands/usage-command.d.ts.map +1 -0
- package/dist/commands/usage-command.js +24 -3
- package/dist/config.d.ts +21 -34
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +55 -15
- package/dist/dedent.d.ts +1 -0
- package/dist/dedent.d.ts.map +1 -0
- package/dist/execution/index.d.ts +112 -0
- package/dist/execution/index.d.ts.map +1 -0
- package/dist/execution/index.js +432 -0
- package/dist/formatting.d.ts +107 -10
- package/dist/formatting.d.ts.map +1 -0
- package/dist/formatting.js +150 -62
- package/dist/index.d.ts +8 -2
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +150 -38
- package/dist/logger.d.ts +1 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +47 -18
- package/dist/mentions.d.ts +6 -1
- package/dist/mentions.d.ts.map +1 -0
- package/dist/mentions.js +58 -11
- package/dist/messages.d.ts +16 -20
- package/dist/messages.d.ts.map +1 -0
- package/dist/messages.js +89 -72
- package/dist/middleware/audit-message.d.ts +1 -0
- package/dist/middleware/audit-message.d.ts.map +1 -0
- 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 +2 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js +1 -0
- package/dist/middleware/rate-limit.d.ts +1 -0
- package/dist/middleware/rate-limit.d.ts.map +1 -0
- package/dist/models/ai-config.d.ts +5 -2
- package/dist/models/ai-config.d.ts.map +1 -0
- package/dist/models/ai-config.js +12 -2
- package/dist/models/anthropic-provider.d.ts +1 -0
- package/dist/models/anthropic-provider.d.ts.map +1 -0
- package/dist/models/anthropic-provider.js +3 -60
- package/dist/models/deepseek-provider.d.ts +1 -0
- package/dist/models/deepseek-provider.d.ts.map +1 -0
- package/dist/models/google-provider.d.ts +1 -0
- package/dist/models/google-provider.d.ts.map +1 -0
- package/dist/models/groq-provider.d.ts +20 -0
- package/dist/models/groq-provider.d.ts.map +1 -0
- package/dist/models/groq-provider.js +31 -0
- package/dist/models/manager.d.ts +3 -1
- package/dist/models/manager.d.ts.map +1 -0
- package/dist/models/manager.js +26 -2
- package/dist/models/openai-provider.d.ts +2 -1
- package/dist/models/openai-provider.d.ts.map +1 -0
- package/dist/models/openrouter-provider.d.ts +25 -23
- package/dist/models/openrouter-provider.d.ts.map +1 -0
- package/dist/models/openrouter-provider.js +181 -122
- package/dist/models/providers.d.ts +4 -5
- package/dist/models/providers.d.ts.map +1 -0
- package/dist/models/providers.js +7 -3
- package/dist/models/xai-provider.d.ts +1 -0
- package/dist/models/xai-provider.d.ts.map +1 -0
- package/dist/parsing.d.ts +2 -1
- package/dist/parsing.d.ts.map +1 -0
- package/dist/prompts/manager.d.ts +14 -2
- package/dist/prompts/manager.d.ts.map +1 -0
- package/dist/prompts.d.ts +2 -0
- package/dist/prompts.d.ts.map +1 -0
- package/dist/prompts.js +65 -12
- package/dist/repl/display-tool-messages.d.ts +4 -0
- package/dist/repl/display-tool-messages.d.ts.map +1 -0
- package/dist/repl/display-tool-messages.js +58 -0
- package/dist/repl/display-tool-use.d.ts +14 -0
- package/dist/repl/display-tool-use.d.ts.map +1 -0
- package/dist/repl/display-tool-use.js +63 -0
- package/dist/repl/get-prompt-header.d.ts +8 -0
- package/dist/repl/get-prompt-header.d.ts.map +1 -0
- package/dist/repl/get-prompt-header.js +9 -0
- package/dist/repl/project-status-line.d.ts +2 -0
- package/dist/repl/project-status-line.d.ts.map +1 -0
- package/dist/repl/project-status-line.js +31 -0
- package/dist/repl/prompt.d.ts +21 -0
- package/dist/repl/prompt.d.ts.map +1 -0
- package/dist/{repl-prompt.js → repl/prompt.js} +119 -22
- package/dist/repl/tool-call-repair.d.ts +4 -0
- package/dist/repl/tool-call-repair.d.ts.map +1 -0
- package/dist/repl/tool-call-repair.js +54 -0
- package/dist/repl-new.d.ts +53 -0
- package/dist/repl-new.d.ts.map +1 -0
- package/dist/repl-new.js +374 -0
- package/dist/repl.d.ts +9 -7
- package/dist/repl.d.ts.map +1 -0
- package/dist/repl.js +142 -378
- package/dist/terminal/ansi-styles.d.ts +77 -0
- package/dist/terminal/ansi-styles.d.ts.map +1 -0
- package/dist/terminal/ansi-styles.js +215 -0
- package/dist/terminal/checkbox-prompt.d.ts +36 -0
- package/dist/terminal/checkbox-prompt.d.ts.map +1 -0
- package/dist/terminal/checkbox-prompt.js +368 -0
- package/dist/terminal/default-theme.d.ts +6 -0
- package/dist/terminal/default-theme.d.ts.map +1 -0
- package/dist/terminal/default-theme.js +182 -0
- package/dist/terminal/east-asian-width.d.ts +8 -0
- package/dist/terminal/east-asian-width.d.ts.map +1 -0
- package/dist/terminal/east-asian-width.js +409 -0
- package/dist/terminal/editor-prompt.d.ts +10 -0
- package/dist/terminal/editor-prompt.d.ts.map +1 -0
- package/dist/terminal/editor-prompt.js +61 -0
- package/dist/terminal/errors.d.ts +19 -0
- package/dist/terminal/errors.d.ts.map +1 -0
- package/dist/terminal/errors.js +37 -0
- package/dist/terminal/formatting.d.ts +1 -11
- package/dist/terminal/formatting.d.ts.map +1 -0
- package/dist/terminal/formatting.js +4 -20
- package/dist/terminal/highlight/index.d.ts +53 -0
- package/dist/terminal/highlight/index.d.ts.map +1 -0
- package/dist/terminal/highlight/index.js +90 -0
- package/dist/terminal/highlight/theme.d.ts +233 -0
- package/dist/terminal/highlight/theme.d.ts.map +1 -0
- package/dist/terminal/highlight/theme.js +83 -0
- package/dist/terminal/index.d.ts +23 -9
- package/dist/terminal/index.d.ts.map +1 -0
- package/dist/terminal/index.js +136 -126
- package/dist/terminal/input-prompt.d.ts +17 -0
- package/dist/terminal/input-prompt.d.ts.map +1 -0
- package/dist/terminal/input-prompt.js +181 -0
- package/dist/terminal/markdown-utils.d.ts +1 -0
- package/dist/terminal/markdown-utils.d.ts.map +1 -0
- package/dist/terminal/markdown.d.ts +1 -0
- package/dist/terminal/markdown.d.ts.map +1 -0
- package/dist/terminal/markdown.js +20 -12
- package/dist/terminal/search-prompt.d.ts +20 -0
- package/dist/terminal/search-prompt.d.ts.map +1 -0
- package/dist/terminal/search-prompt.js +280 -0
- package/dist/terminal/select-prompt.d.ts +26 -0
- package/dist/terminal/select-prompt.d.ts.map +1 -0
- package/dist/terminal/select-prompt.js +306 -0
- package/dist/terminal/string-width.d.ts +7 -0
- package/dist/terminal/string-width.d.ts.map +1 -0
- package/dist/terminal/string-width.js +61 -0
- package/dist/terminal/strip-ansi.d.ts +2 -0
- package/dist/terminal/strip-ansi.d.ts.map +1 -0
- package/dist/terminal/strip-ansi.js +20 -0
- package/dist/terminal/style.d.ts +191 -0
- package/dist/terminal/style.d.ts.map +1 -0
- package/dist/terminal/style.js +259 -0
- package/dist/terminal/supports-color.d.ts +1 -0
- package/dist/terminal/supports-color.d.ts.map +1 -0
- package/dist/terminal/supports-hyperlinks.d.ts +1 -3
- package/dist/terminal/supports-hyperlinks.d.ts.map +1 -0
- package/dist/terminal/supports-hyperlinks.js +1 -1
- package/dist/terminal/types.d.ts +1 -37
- package/dist/terminal/types.d.ts.map +1 -0
- package/dist/terminal/wrap-ansi.d.ts +8 -0
- package/dist/terminal/wrap-ansi.d.ts.map +1 -0
- package/dist/terminal/wrap-ansi.js +190 -0
- package/dist/{token-utils.d.ts → tokens/counter.d.ts} +1 -0
- package/dist/tokens/counter.d.ts.map +1 -0
- package/dist/{token-utils.js → tokens/counter.js} +1 -1
- package/dist/tokens/threshold.d.ts +35 -0
- package/dist/tokens/threshold.d.ts.map +1 -0
- package/dist/tokens/threshold.js +85 -0
- package/dist/{token-tracker.d.ts → tokens/tracker.d.ts} +1 -0
- package/dist/tokens/tracker.d.ts.map +1 -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 +281 -0
- package/dist/tools/agent.d.ts +19 -7
- package/dist/tools/agent.d.ts.map +1 -0
- package/dist/tools/agent.js +70 -54
- package/dist/tools/bash-utils.d.ts +7 -0
- package/dist/tools/bash-utils.d.ts.map +1 -0
- package/dist/tools/bash-utils.js +220 -0
- package/dist/tools/bash.d.ts +25 -14
- package/dist/tools/bash.d.ts.map +1 -0
- package/dist/tools/bash.js +87 -251
- package/dist/tools/code-interpreter.d.ts +22 -10
- package/dist/tools/code-interpreter.d.ts.map +1 -0
- package/dist/tools/code-interpreter.js +146 -210
- package/dist/tools/delete-file.d.ts +18 -9
- package/dist/tools/delete-file.d.ts.map +1 -0
- package/dist/tools/delete-file.js +55 -85
- package/dist/tools/directory-tree.d.ts +26 -6
- package/dist/tools/directory-tree.d.ts.map +1 -0
- package/dist/tools/directory-tree.js +109 -28
- package/dist/tools/dynamic-tool-loader.d.ts +22 -0
- package/dist/tools/dynamic-tool-loader.d.ts.map +1 -0
- package/dist/tools/dynamic-tool-loader.js +272 -0
- package/dist/tools/dynamic-tool-parser.d.ts +21 -0
- package/dist/tools/dynamic-tool-parser.d.ts.map +1 -0
- package/dist/tools/dynamic-tool-parser.js +22 -0
- package/dist/tools/edit-file.d.ts +41 -13
- package/dist/tools/edit-file.d.ts.map +1 -0
- package/dist/tools/edit-file.js +173 -96
- package/dist/tools/filesystem-utils.d.ts +7 -21
- package/dist/tools/filesystem-utils.d.ts.map +1 -0
- package/dist/tools/filesystem-utils.js +111 -149
- package/dist/tools/git-utils.d.ts +1 -0
- package/dist/tools/git-utils.d.ts.map +1 -0
- package/dist/tools/glob.d.ts +36 -0
- package/dist/tools/glob.d.ts.map +1 -0
- package/dist/tools/glob.js +143 -0
- package/dist/tools/grep.d.ts +76 -13
- package/dist/tools/grep.d.ts.map +1 -0
- package/dist/tools/grep.js +420 -135
- package/dist/tools/index.d.ts +207 -133
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +245 -127
- package/dist/tools/llm-edit-fixer.d.ts +25 -0
- package/dist/tools/llm-edit-fixer.d.ts.map +1 -0
- package/dist/tools/llm-edit-fixer.js +150 -0
- package/dist/tools/move-file.d.ts +20 -7
- package/dist/tools/move-file.d.ts.map +1 -0
- package/dist/tools/move-file.js +43 -29
- package/dist/tools/read-file.d.ts +49 -10
- package/dist/tools/read-file.d.ts.map +1 -0
- package/dist/tools/read-file.js +79 -67
- package/dist/tools/read-multiple-files.d.ts +19 -7
- package/dist/tools/read-multiple-files.d.ts.map +1 -0
- package/dist/tools/read-multiple-files.js +117 -33
- package/dist/tools/save-file.d.ts +46 -11
- package/dist/tools/save-file.d.ts.map +1 -0
- package/dist/tools/save-file.js +63 -78
- package/dist/tools/think.d.ts +16 -7
- package/dist/tools/think.d.ts.map +1 -0
- package/dist/tools/think.js +34 -22
- package/dist/tools/types.d.ts +18 -11
- package/dist/tools/types.d.ts.map +1 -0
- 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 +15 -6
- package/dist/tools/web-fetch.d.ts.map +1 -0
- package/dist/tools/web-fetch.js +40 -39
- package/dist/tools/web-search.d.ts +17 -7
- package/dist/tools/web-search.d.ts.map +1 -0
- package/dist/tools/web-search.js +86 -33
- 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/editor.d.ts +51 -0
- package/dist/tui/components/editor.d.ts.map +1 -0
- package/dist/tui/components/editor.js +758 -0
- package/dist/tui/components/footer.d.ts +24 -0
- package/dist/tui/components/footer.d.ts.map +1 -0
- package/dist/tui/components/footer.js +197 -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 +19 -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 +103 -0
- package/dist/tui/components/markdown.d.ts.map +1 -0
- package/dist/tui/components/markdown.js +533 -0
- package/dist/tui/components/modal.d.ts +40 -0
- package/dist/tui/components/modal.d.ts.map +1 -0
- package/dist/tui/components/modal.js +292 -0
- package/dist/tui/components/prompt-status.d.ts +16 -0
- package/dist/tui/components/prompt-status.d.ts.map +1 -0
- package/dist/tui/components/prompt-status.js +21 -0
- package/dist/tui/components/select-list.d.ts +22 -0
- package/dist/tui/components/select-list.d.ts.map +1 -0
- package/dist/tui/components/select-list.js +143 -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/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 +30 -0
- package/dist/tui/components/tool-execution.d.ts +17 -0
- package/dist/tui/components/tool-execution.d.ts.map +1 -0
- package/dist/tui/components/tool-execution.js +153 -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 +21 -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 +14 -0
- package/dist/tui/index.d.ts.map +1 -0
- package/dist/tui/index.js +18 -0
- package/dist/tui/terminal.d.ts +37 -0
- package/dist/tui/terminal.d.ts.map +1 -0
- package/dist/tui/terminal.js +104 -0
- package/dist/tui/tui.d.ts +67 -0
- package/dist/tui/tui.d.ts.map +1 -0
- package/dist/tui/tui.js +184 -0
- package/dist/tui/utils.d.ts +19 -0
- package/dist/tui/utils.d.ts.map +1 -0
- package/dist/tui/utils.js +31 -0
- package/dist/utils/filesystem.d.ts +23 -0
- package/dist/utils/filesystem.d.ts.map +1 -0
- package/dist/utils/filesystem.js +140 -0
- package/dist/utils/filetype-detection.d.ts +3 -0
- package/dist/utils/filetype-detection.d.ts.map +1 -0
- package/dist/utils/filetype-detection.js +112 -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/utils/glob.d.ts +52 -0
- package/dist/utils/glob.d.ts.map +1 -0
- package/dist/utils/glob.js +376 -0
- package/dist/utils/ignore.d.ts +104 -0
- package/dist/utils/ignore.d.ts.map +1 -0
- package/dist/utils/ignore.js +649 -0
- 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/process.d.ts +3 -2
- package/dist/utils/process.d.ts.map +1 -0
- package/dist/utils/process.js +17 -2
- package/dist/utils/zod-utils.d.ts +4 -0
- package/dist/utils/zod-utils.d.ts.map +1 -0
- package/dist/utils/zod-utils.js +7 -0
- package/dist/version.d.ts +1 -0
- package/dist/version.d.ts.map +1 -0
- package/package.json +34 -32
- package/dist/conversation-analyzer.d.ts +0 -10
- package/dist/conversation-analyzer.js +0 -88
- package/dist/repl-prompt.d.ts +0 -14
- package/dist/tools/command-validation.d.ts +0 -11
- package/dist/tools/command-validation.js +0 -45
- /package/dist/{token-tracker.js → tokens/tracker.js} +0 -0
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@ Acai is a powerful **AI-driven command-line interface (CLI) tool** designed to a
|
|
|
14
14
|
* **Codebase Interaction:** Read, edit, and navigate files; search code; and understand project structure.
|
|
15
15
|
* **Git Integration:** Generate conventional commits, review pull requests, and manage local changes.
|
|
16
16
|
* **Extensible Tooling:** Utilizes a suite of internal tools (e.g., `bash`, `codeInterpreter`, `webSearch`) to perform actions.
|
|
17
|
-
* **Multi-Model Support:** Seamlessly switch between various AI providers (e.g., OpenAI, Google, Anthropic, DeepSeek, OpenRouter).
|
|
17
|
+
* **Multi-Model Support:** Seamlessly switch between various AI providers (e.g., OpenAI, Google, Anthropic, DeepSeek, Groq, OpenRouter).
|
|
18
18
|
* **Context Management:** Automatically incorporates relevant file content, clipboard data, and conversation history into AI prompts.
|
|
19
19
|
* **Configurable & Learnable:** Customize behavior through project-specific rules and learn from user corrections.
|
|
20
20
|
|
|
@@ -30,6 +30,7 @@ Acai is a powerful **AI-driven command-line interface (CLI) tool** designed to a
|
|
|
30
30
|
* **Token Usage Tracking:** Monitor AI token consumption.
|
|
31
31
|
* **Configurable AI Models:** Easily switch between different LLM providers and models.
|
|
32
32
|
* **Shell Integration:** Execute shell commands inline using `!`command`` syntax.
|
|
33
|
+
* **Dynamic Tools:** Create and load custom tools from JavaScript files in your project or user directory.
|
|
33
34
|
|
|
34
35
|
## 🛠️ Technologies Used
|
|
35
36
|
|
|
@@ -37,12 +38,8 @@ Acai is built primarily with **TypeScript** and runs on **Node.js**. Key technol
|
|
|
37
38
|
|
|
38
39
|
* **TypeScript:** For type-safe and scalable code.
|
|
39
40
|
* **Node.js:** The JavaScript runtime environment.
|
|
40
|
-
* **AI SDK (`@ai-sdk/*`):** For integrating with various Large Language Models (LLMs) like OpenAI, Google Gemini, Anthropic, DeepSeek, and OpenRouter.
|
|
41
|
-
* **Tree-sitter:** For robust and efficient code parsing and syntax analysis across multiple programming languages (TypeScript, JavaScript, Java, Python).
|
|
42
|
-
* **`chalk`, `ora`, `log-update`:** For rich and interactive terminal output.
|
|
43
|
-
* **`@inquirer/prompts`:** For interactive prompts; CLI args parsed with Node's `util.parseArgs`.
|
|
41
|
+
* **AI SDK (`@ai-sdk/*`):** For integrating with various Large Language Models (LLMs) like OpenAI, Google Gemini, Anthropic, DeepSeek, Groq, and OpenRouter.
|
|
44
42
|
* **`ripgrep` (via `grep.ts` tool):** For fast file content searching.
|
|
45
|
-
* **`marked`:** For rendering Markdown in the terminal.
|
|
46
43
|
* **`pino`:** For structured logging.
|
|
47
44
|
* **`zod`:** For schema validation.
|
|
48
45
|
* **`biomejs/biome`:** For code formatting and linting.
|
|
@@ -122,6 +119,9 @@ GOOGLE_GENERATIVE_AI_API_KEY=your_google_api_key_here
|
|
|
122
119
|
# DeepSeek
|
|
123
120
|
DEEPSEEK_API_KEY=your_deepseek_api_key_here
|
|
124
121
|
|
|
122
|
+
# Groq (Kimi models)
|
|
123
|
+
GROQ_API_KEY=your_groq_api_key_here
|
|
124
|
+
|
|
125
125
|
# X.AI (Grok models)
|
|
126
126
|
X_AI_API_KEY=your_xai_api_key_here
|
|
127
127
|
# Alternative name also supported:
|
|
@@ -159,6 +159,7 @@ ANTHROPIC_API_KEY=sk-ant-...
|
|
|
159
159
|
|
|
160
160
|
# Optional: Additional providers
|
|
161
161
|
GOOGLE_GENERATIVE_AI_API_KEY=...
|
|
162
|
+
GROQ_API_KEY=...
|
|
162
163
|
OPENROUTER_API_KEY=sk-or-...
|
|
163
164
|
|
|
164
165
|
# Optional: Web services (fallbacks available if not provided)
|
|
@@ -181,8 +182,8 @@ acai
|
|
|
181
182
|
# Specify a model
|
|
182
183
|
acai --model anthropic:sonnet
|
|
183
184
|
|
|
184
|
-
#
|
|
185
|
-
acai -p "What files contain the term 'toolCallRepair'?"
|
|
185
|
+
# CLI mode (one-shot execution)
|
|
186
|
+
acai -p "What files contain the term 'toolCallRepair'?"
|
|
186
187
|
|
|
187
188
|
# Pipe input
|
|
188
189
|
echo "How many TypeScript files are in this project?" | acai
|
|
@@ -215,6 +216,8 @@ You can reference files and directories directly in your prompts:
|
|
|
215
216
|
- `@http://example.com` - Fetch and include web content
|
|
216
217
|
- ``!`command` `` - Execute shell command and include output
|
|
217
218
|
|
|
219
|
+
**Note:** Using `-p/--prompt` runs in CLI mode (one-shot execution), while running without a prompt starts interactive REPL mode.
|
|
220
|
+
|
|
218
221
|
For a list of available commands, type `/help` within the REPL.
|
|
219
222
|
|
|
220
223
|
## Interactive CLI Commands
|
|
@@ -238,12 +241,230 @@ For a list of available commands, type `/help` within the REPL.
|
|
|
238
241
|
- `/generateRules` - Analyze the current conversation and suggest project rules
|
|
239
242
|
- `/edit <path> "<change description>"` - Edit a file with AI assistance
|
|
240
243
|
- `/copy` - Copy the last assistant response to the system clipboard
|
|
244
|
+
- `/list-tools` or `/lt` - List all available static and dynamic tools
|
|
241
245
|
|
|
242
246
|
Clipboard notes:
|
|
243
247
|
- macOS: uses `pbcopy`
|
|
244
248
|
- Windows: uses `clip`
|
|
245
249
|
- Linux: tries `xclip`, falls back to `xsel`
|
|
246
250
|
|
|
251
|
+
## Custom Tools
|
|
252
|
+
|
|
253
|
+
Acai supports dynamic custom tools that users can define as executable Node.js scripts. These tools extend the core functionality without modifying the source code.
|
|
254
|
+
|
|
255
|
+
### Directories
|
|
256
|
+
|
|
257
|
+
- **Project tools**: `./.acai/tools/*.(m)js` (project-specific, override global tools with the same name).
|
|
258
|
+
- **User tools**: `~/.acai/tools/*.(m)js` (global, available across all projects).
|
|
259
|
+
|
|
260
|
+
### Format Specification
|
|
261
|
+
|
|
262
|
+
Custom tools are Node.js scripts that respond to environment variables:
|
|
263
|
+
|
|
264
|
+
- **Describe mode**: Set `TOOL_ACTION=describe` to output YAML metadata to stdout.
|
|
265
|
+
|
|
266
|
+
Example output:
|
|
267
|
+
|
|
268
|
+
```
|
|
269
|
+
name: run-tests
|
|
270
|
+
description: Run tests in a project workspace with proper output formatting
|
|
271
|
+
parameters:
|
|
272
|
+
- name: dir
|
|
273
|
+
type: string
|
|
274
|
+
description: the workspace directory to run tests in
|
|
275
|
+
required: false
|
|
276
|
+
default: "."
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
- **Execute mode**: Set `TOOL_ACTION=execute` and read JSON parameters from stdin (array of `{name: string, value: any}`), perform the action, and output results to stdout (JSON or text). Exit with 0 on success, non-zero on error.
|
|
280
|
+
|
|
281
|
+
Scripts should include `#!/usr/bin/env node` shebang for executability.
|
|
282
|
+
|
|
283
|
+
### Security Notes
|
|
284
|
+
|
|
285
|
+
- Dynamic tools run in sandboxed child processes with limited permissions (no network access beyond what's allowed, timeout of 30s, isolated environment).
|
|
286
|
+
- Scripts have access to the project directory but cannot access Acai internals.
|
|
287
|
+
- Validate inputs and handle errors gracefully.
|
|
288
|
+
- Malicious scripts could perform unintended actions; review tools before use.
|
|
289
|
+
- Future enhancements may include script signing or allowlisting.
|
|
290
|
+
|
|
291
|
+
### Example Script
|
|
292
|
+
|
|
293
|
+
Create `./.acai/tools/run-tests.js`:
|
|
294
|
+
|
|
295
|
+
```javascript
|
|
296
|
+
#!/usr/bin/env node
|
|
297
|
+
|
|
298
|
+
const { spawn } = require('node:child_process');
|
|
299
|
+
|
|
300
|
+
if (process.env.TOOL_ACTION === 'describe') {
|
|
301
|
+
console.log(JSON.stringify({
|
|
302
|
+
name: 'run-tests',
|
|
303
|
+
description: 'Run tests in the specified directory',
|
|
304
|
+
parameters: [
|
|
305
|
+
{
|
|
306
|
+
name: 'dir',
|
|
307
|
+
type: 'string',
|
|
308
|
+
description: 'Directory to run tests in (default: current directory)',
|
|
309
|
+
required: false,
|
|
310
|
+
default: '.'
|
|
311
|
+
}
|
|
312
|
+
]
|
|
313
|
+
}, null, 2));
|
|
314
|
+
process.exit(0);
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
if (process.env.TOOL_ACTION === 'execute') {
|
|
318
|
+
let params = [];
|
|
319
|
+
process.stdin.setEncoding('utf8');
|
|
320
|
+
process.stdin.on('readable', () => {
|
|
321
|
+
let chunk;
|
|
322
|
+
while (null !== (chunk = process.stdin.read())) {
|
|
323
|
+
params = JSON.parse(chunk);
|
|
324
|
+
}
|
|
325
|
+
});
|
|
326
|
+
|
|
327
|
+
process.stdin.on('end', () => {
|
|
328
|
+
const dir = params.find(p => p.name === 'dir')?.value || '.';
|
|
329
|
+
const child = spawn('npm', ['test'], { cwd: dir, stdio: 'pipe' });
|
|
330
|
+
let output = '';
|
|
331
|
+
child.stdout.on('data', (data) => output += data);
|
|
332
|
+
child.on('close', (code) => {
|
|
333
|
+
console.log(output);
|
|
334
|
+
process.exit(code);
|
|
335
|
+
});
|
|
336
|
+
});
|
|
337
|
+
}
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
### Loading Tools
|
|
341
|
+
|
|
342
|
+
Dynamic tools are loaded automatically on each user input.
|
|
343
|
+
|
|
344
|
+
For more details, see the implementation in `source/tools/dynamic-tool-loader.ts`.
|
|
345
|
+
|
|
346
|
+
## Dynamic Tools
|
|
347
|
+
|
|
348
|
+
Acai supports dynamic tools - custom tools that you can create and load from JavaScript files. This allows you to extend Acai's functionality with your own specialized tools.
|
|
349
|
+
|
|
350
|
+
### Creating Dynamic Tools
|
|
351
|
+
|
|
352
|
+
Dynamic tools are JavaScript files that follow a specific structure. Here's a simple example:
|
|
353
|
+
|
|
354
|
+
```javascript
|
|
355
|
+
#!/usr/bin/env node
|
|
356
|
+
|
|
357
|
+
if (process.env.TOOL_ACTION === 'describe') {
|
|
358
|
+
console.log(JSON.stringify({
|
|
359
|
+
name: 'my-custom-tool',
|
|
360
|
+
description: 'A custom tool that does something useful',
|
|
361
|
+
parameters: [
|
|
362
|
+
{
|
|
363
|
+
name: 'input',
|
|
364
|
+
type: 'string',
|
|
365
|
+
description: 'Input to process',
|
|
366
|
+
required: true
|
|
367
|
+
}
|
|
368
|
+
]
|
|
369
|
+
}, null, 2));
|
|
370
|
+
process.exit(0);
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
if (process.env.TOOL_ACTION === 'execute') {
|
|
374
|
+
let params = [];
|
|
375
|
+
process.stdin.setEncoding('utf8');
|
|
376
|
+
process.stdin.on('readable', () => {
|
|
377
|
+
let chunk;
|
|
378
|
+
while (null !== (chunk = process.stdin.read())) {
|
|
379
|
+
params = JSON.parse(chunk);
|
|
380
|
+
}
|
|
381
|
+
});
|
|
382
|
+
|
|
383
|
+
process.stdin.on('end', () => {
|
|
384
|
+
const input = params.find(p => p.name === 'input')?.value;
|
|
385
|
+
// Your tool logic here
|
|
386
|
+
const result = `Processed: ${input}`;
|
|
387
|
+
console.log(result);
|
|
388
|
+
process.exit(0);
|
|
389
|
+
});
|
|
390
|
+
}
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
### Tool Structure
|
|
394
|
+
|
|
395
|
+
- **Describe Phase**: When `TOOL_ACTION=describe`, the tool must output JSON metadata
|
|
396
|
+
- `name`: Tool name (will be prefixed with `dynamic:`)
|
|
397
|
+
- `description`: Human-readable description
|
|
398
|
+
- `parameters`: Array of parameter definitions
|
|
399
|
+
- **Execute Phase**: When `TOOL_ACTION=execute`, the tool reads parameters from stdin and outputs results
|
|
400
|
+
|
|
401
|
+
### Parameter Definition
|
|
402
|
+
|
|
403
|
+
Each parameter can have:
|
|
404
|
+
- `name`: Parameter name
|
|
405
|
+
- `type`: "string", "number", or "boolean"
|
|
406
|
+
- `description`: Human-readable description
|
|
407
|
+
- `required`: Boolean (default: false)
|
|
408
|
+
- `default`: Default value for optional parameters
|
|
409
|
+
|
|
410
|
+
### Tool Locations
|
|
411
|
+
|
|
412
|
+
Dynamic tools are loaded from two locations:
|
|
413
|
+
1. **Project tools**: `.acai/tools/` in your project directory
|
|
414
|
+
2. **User tools**: `~/.acai/tools/` in your home directory
|
|
415
|
+
|
|
416
|
+
Project tools override user tools with the same name.
|
|
417
|
+
|
|
418
|
+
### Configuration
|
|
419
|
+
|
|
420
|
+
Dynamic tools are configured in your `.acai.json` file:
|
|
421
|
+
|
|
422
|
+
```json
|
|
423
|
+
{
|
|
424
|
+
"tools": {
|
|
425
|
+
"dynamicTools": {
|
|
426
|
+
"enabled": true,
|
|
427
|
+
"maxTools": 50
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
- `enabled`: Enable/disable dynamic tools (default: true)
|
|
434
|
+
- `maxTools`: Maximum number of tools to load (default: 50)
|
|
435
|
+
|
|
436
|
+
### Security Considerations
|
|
437
|
+
|
|
438
|
+
Dynamic tools run with the same privileges as Acai itself. Keep these security points in mind:
|
|
439
|
+
|
|
440
|
+
- **Input Validation**: Always validate and sanitize input parameters
|
|
441
|
+
- **Path Safety**: Be careful with file paths to prevent directory traversal
|
|
442
|
+
- **Resource Limits**: Tools are automatically killed after 30 seconds
|
|
443
|
+
- **No Shell Access**: Tools run directly with Node.js, not through a shell
|
|
444
|
+
|
|
445
|
+
### Example Tools
|
|
446
|
+
|
|
447
|
+
See the included `run-tests.js` tool in `.acai/tools/` for a complete example.
|
|
448
|
+
|
|
449
|
+
### Listing Tools
|
|
450
|
+
|
|
451
|
+
Use the `/list-tools` command to see all available tools, including dynamic tools:
|
|
452
|
+
|
|
453
|
+
```
|
|
454
|
+
> /list-tools
|
|
455
|
+
Available tools:
|
|
456
|
+
Static tools:
|
|
457
|
+
bash
|
|
458
|
+
readFile
|
|
459
|
+
editFile
|
|
460
|
+
...
|
|
461
|
+
Dynamic tools:
|
|
462
|
+
dynamic:run-tests
|
|
463
|
+
dynamic:my-custom-tool
|
|
464
|
+
|
|
465
|
+
Total: 14 static, 2 dynamic
|
|
466
|
+
```
|
|
467
|
+
|
|
247
468
|
## Configuration
|
|
248
469
|
|
|
249
470
|
### Project Configuration
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import type { LanguageModelUsage, ToolExecuteFunction } from "ai";
|
|
2
|
+
import { type ToolCallRepairFunction } from "ai";
|
|
3
|
+
import type { MessageHistory } from "../messages.ts";
|
|
4
|
+
import type { ModelManager } from "../models/manager.ts";
|
|
5
|
+
import type { ModelMetadata } from "../models/providers.ts";
|
|
6
|
+
import type { TokenTracker } from "../tokens/tracker.ts";
|
|
7
|
+
import type { CompleteToolSet } from "../tools/index.ts";
|
|
8
|
+
type AgentOptions = {
|
|
9
|
+
modelManager: ModelManager;
|
|
10
|
+
tokenTracker: TokenTracker;
|
|
11
|
+
messageHistory: MessageHistory;
|
|
12
|
+
maxIterations?: number;
|
|
13
|
+
maxRetries?: number;
|
|
14
|
+
toolCallRepair?: ToolCallRepairFunction<CompleteToolSet>;
|
|
15
|
+
};
|
|
16
|
+
type RunOptions = {
|
|
17
|
+
systemPrompt: string;
|
|
18
|
+
input: string;
|
|
19
|
+
toolDefs: CompleteToolSet;
|
|
20
|
+
executors: Map<keyof CompleteToolSet, ToolExecuteFunction<unknown, string>>;
|
|
21
|
+
abortSignal?: AbortSignal;
|
|
22
|
+
};
|
|
23
|
+
export type ToolEvent = {
|
|
24
|
+
type: "tool-call-start";
|
|
25
|
+
name: string;
|
|
26
|
+
toolCallId: string;
|
|
27
|
+
msg: string;
|
|
28
|
+
args: unknown;
|
|
29
|
+
} | {
|
|
30
|
+
type: "tool-call-update";
|
|
31
|
+
name: string;
|
|
32
|
+
toolCallId: string;
|
|
33
|
+
msg: string;
|
|
34
|
+
args: unknown;
|
|
35
|
+
} | {
|
|
36
|
+
type: "tool-call-end";
|
|
37
|
+
name: string;
|
|
38
|
+
toolCallId: string;
|
|
39
|
+
msg: string;
|
|
40
|
+
args: unknown;
|
|
41
|
+
} | {
|
|
42
|
+
type: "tool-call-error";
|
|
43
|
+
name: string;
|
|
44
|
+
toolCallId: string;
|
|
45
|
+
msg: string;
|
|
46
|
+
args: unknown;
|
|
47
|
+
};
|
|
48
|
+
export type AgentEvent = {
|
|
49
|
+
type: "agent-start";
|
|
50
|
+
} | {
|
|
51
|
+
type: "agent-stop";
|
|
52
|
+
} | {
|
|
53
|
+
type: "agent-error";
|
|
54
|
+
message: string;
|
|
55
|
+
} | {
|
|
56
|
+
type: "step-start";
|
|
57
|
+
} | {
|
|
58
|
+
type: "step-stop";
|
|
59
|
+
} | {
|
|
60
|
+
type: "thinking-start";
|
|
61
|
+
content: string;
|
|
62
|
+
} | {
|
|
63
|
+
type: "thinking";
|
|
64
|
+
content: string;
|
|
65
|
+
} | {
|
|
66
|
+
type: "thinking-end";
|
|
67
|
+
content: string;
|
|
68
|
+
} | {
|
|
69
|
+
type: "message";
|
|
70
|
+
role: "user";
|
|
71
|
+
content: string;
|
|
72
|
+
} | {
|
|
73
|
+
type: "message-start";
|
|
74
|
+
role: "assistant";
|
|
75
|
+
content: string;
|
|
76
|
+
} | {
|
|
77
|
+
type: "message";
|
|
78
|
+
role: "assistant";
|
|
79
|
+
content: string;
|
|
80
|
+
} | {
|
|
81
|
+
type: "message-end";
|
|
82
|
+
role: "assistant";
|
|
83
|
+
content: string;
|
|
84
|
+
} | ToolEvent;
|
|
85
|
+
export type AgentState = {
|
|
86
|
+
modelId: string;
|
|
87
|
+
modelConfig: ModelMetadata;
|
|
88
|
+
steps: {
|
|
89
|
+
toolResults: Array<{
|
|
90
|
+
toolName: string;
|
|
91
|
+
}>;
|
|
92
|
+
toolCalls: Array<{
|
|
93
|
+
toolName: string;
|
|
94
|
+
}>;
|
|
95
|
+
}[];
|
|
96
|
+
usage: {
|
|
97
|
+
[K in keyof LanguageModelUsage]-?: number;
|
|
98
|
+
};
|
|
99
|
+
totalUsage: {
|
|
100
|
+
[K in keyof LanguageModelUsage]-?: number;
|
|
101
|
+
};
|
|
102
|
+
timestamps: {
|
|
103
|
+
start: number;
|
|
104
|
+
stop: number;
|
|
105
|
+
};
|
|
106
|
+
};
|
|
107
|
+
export declare class Agent {
|
|
108
|
+
private opts;
|
|
109
|
+
private _state;
|
|
110
|
+
private abortController;
|
|
111
|
+
constructor(opts: AgentOptions);
|
|
112
|
+
get state(): AgentState;
|
|
113
|
+
get abortSignal(): AbortSignal;
|
|
114
|
+
run(args: RunOptions): AsyncGenerator<AgentEvent>;
|
|
115
|
+
abort(): void;
|
|
116
|
+
resetState(): AgentState;
|
|
117
|
+
}
|
|
118
|
+
export {};
|
|
119
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../source/agent/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EAEpB,MAAM,IAAI,CAAC;AACZ,OAAO,EAGL,KAAK,sBAAsB,EAC5B,MAAM,IAAI,CAAC;AAEZ,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIzD,KAAK,YAAY,GAAG;IAClB,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,EAAE,YAAY,CAAC;IAC3B,cAAc,EAAE,cAAc,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,sBAAsB,CAAC,eAAe,CAAC,CAAC;CAC1D,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,eAAe,CAAC;IAC1B,SAAS,EAAE,GAAG,CAAC,MAAM,eAAe,EAAE,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5E,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,SAAS,GACjB;IACE,IAAI,EAAE,iBAAiB,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,OAAO,CAAC;CACf,GACD;IACE,IAAI,EAAE,kBAAkB,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,OAAO,CAAC;CACf,GACD;IACE,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,OAAO,CAAC;CACf,GACD;IACE,IAAI,EAAE,iBAAiB,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,OAAO,CAAC;CACf,CAAC;AAEN,MAAM,MAAM,UAAU,GAElB;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,GACvB;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GACtB;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAExC;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GACtB;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GAErB;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACvD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAE3D,SAAS,CAAC;AAcd,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,aAAa,CAAC;IAC3B,KAAK,EAAE;QACL,WAAW,EAAE,KAAK,CAAC;YAAE,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACzC,SAAS,EAAE,KAAK,CAAC;YAAE,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACxC,EAAE,CAAC;IACJ,KAAK,EAAE;SAAG,CAAC,IAAI,MAAM,kBAAkB,CAAC,CAAC,GAAG,MAAM;KAAE,CAAC;IACrD,UAAU,EAAE;SAAG,CAAC,IAAI,MAAM,kBAAkB,CAAC,CAAC,GAAG,MAAM;KAAE,CAAC;IAC1D,UAAU,EAAE;QACV,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH,CAAC;AAEF,qBAAa,KAAK;IAChB,OAAO,CAAC,IAAI,CAAe;IAC3B,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,eAAe,CAAkB;gBAE7B,IAAI,EAAE,YAAY;IAM9B,IAAI,KAAK,eAER;IAED,IAAI,WAAW,gBAEd;IAEM,GAAG,CAAC,IAAI,EAAE,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC;IAmYxD,KAAK;IAML,UAAU;CAgCX"}
|