micro-models-agent 0.3.0 → 0.5.0
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 +436 -436
- package/dist/agent/loop.d.ts +5 -5
- package/dist/agent/loop.d.ts.map +1 -1
- package/dist/agent/loop.js +422 -246
- package/dist/agent/loop.js.map +1 -1
- package/dist/agent/system-prompt.d.ts +3 -3
- package/dist/agent/system-prompt.d.ts.map +1 -1
- package/dist/agent/system-prompt.js +383 -278
- package/dist/agent/system-prompt.js.map +1 -1
- package/dist/cli/config.d.ts +1 -1
- package/dist/cli/config.d.ts.map +1 -1
- package/dist/cli/config.js +53 -28
- package/dist/cli/config.js.map +1 -1
- package/dist/config/config.d.ts +2 -1
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +75 -54
- package/dist/config/config.js.map +1 -1
- package/dist/config/types.d.ts +3 -1
- package/dist/config/types.d.ts.map +1 -1
- package/dist/logger.d.ts +10 -3
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +89 -38
- package/dist/logger.js.map +1 -1
- package/dist/plugins/builtin/lint-on-write/index.ts +96 -96
- package/dist/plugins/builtin/notify/index.js +6 -6
- package/dist/plugins/builtin/notify/index.ts +104 -104
- package/dist/setup-wizard.d.ts +1 -1
- package/dist/setup-wizard.d.ts.map +1 -1
- package/dist/setup-wizard.js +137 -105
- package/dist/setup-wizard.js.map +1 -1
- package/dist/skills/builtin/agent-test/SKILL.md +68 -68
- package/dist/skills/builtin/grill-me/SKILL.md +46 -46
- package/dist/skills/builtin/web-scraping/SKILL.md +422 -422
- package/dist/subagent/chat.d.ts +7 -0
- package/dist/subagent/chat.d.ts.map +1 -0
- package/dist/subagent/chat.js +257 -0
- package/dist/subagent/chat.js.map +1 -0
- package/dist/subagent/context.d.ts +2 -0
- package/dist/subagent/context.d.ts.map +1 -0
- package/dist/subagent/context.js +64 -0
- package/dist/subagent/context.js.map +1 -0
- package/dist/subagent/definition.d.ts +3 -0
- package/dist/subagent/definition.d.ts.map +1 -0
- package/dist/subagent/definition.js +22 -0
- package/dist/subagent/definition.js.map +1 -0
- package/dist/subagent/errors.d.ts +7 -0
- package/dist/subagent/errors.d.ts.map +1 -0
- package/dist/subagent/errors.js +64 -0
- package/dist/subagent/errors.js.map +1 -0
- package/dist/subagent/validation.d.ts +11 -0
- package/dist/subagent/validation.d.ts.map +1 -0
- package/dist/subagent/validation.js +77 -0
- package/dist/subagent/validation.js.map +1 -0
- package/dist/tools/native/project-map.d.ts +2 -2
- package/dist/tools/native/project-map.d.ts.map +1 -1
- package/dist/tools/native/project-map.js +85 -57
- package/dist/tools/native/project-map.js.map +1 -1
- package/dist/tools/native/scaffold.js +113 -113
- package/dist/tools/subagent.d.ts +14 -57
- package/dist/tools/subagent.d.ts.map +1 -1
- package/dist/tools/subagent.js +112 -559
- package/dist/tools/subagent.js.map +1 -1
- package/dist/tools/web-browse.js +7 -7
- package/dist/ui/ink/components/App.d.ts +0 -1
- package/dist/ui/ink/components/App.d.ts.map +1 -1
- package/dist/ui/ink/components/App.js +2 -8
- package/dist/ui/ink/components/App.js.map +1 -1
- package/dist/ui/ink/components/Conversation.d.ts +1 -2
- package/dist/ui/ink/components/Conversation.d.ts.map +1 -1
- package/dist/ui/ink/components/Conversation.js +8 -2
- package/dist/ui/ink/components/Conversation.js.map +1 -1
- package/dist/ui/ink/components/MessageBlock.d.ts +13 -1
- package/dist/ui/ink/components/MessageBlock.d.ts.map +1 -1
- package/dist/ui/ink/components/MessageBlock.js +15 -27
- package/dist/ui/ink/components/MessageBlock.js.map +1 -1
- package/dist/ui/ink/components/PromptInput.d.ts +11 -0
- package/dist/ui/ink/components/PromptInput.d.ts.map +1 -1
- package/dist/ui/ink/components/PromptInput.js +18 -141
- package/dist/ui/ink/components/PromptInput.js.map +1 -1
- package/dist/ui/ink/components/SelectInput.d.ts.map +1 -1
- package/dist/ui/ink/components/SelectInput.js +3 -2
- package/dist/ui/ink/components/SelectInput.js.map +1 -1
- package/dist/ui/ink/components/StatusBar.d.ts.map +1 -1
- package/dist/ui/ink/components/StatusBar.js +14 -6
- package/dist/ui/ink/components/StatusBar.js.map +1 -1
- package/dist/ui/ink/components/StreamBlock.d.ts.map +1 -1
- package/dist/ui/ink/components/StreamBlock.js +3 -3
- package/dist/ui/ink/components/StreamBlock.js.map +1 -1
- package/dist/ui/ink/components/Tags.d.ts +8 -11
- package/dist/ui/ink/components/Tags.d.ts.map +1 -1
- package/dist/ui/ink/components/Tags.js +4 -16
- package/dist/ui/ink/components/Tags.js.map +1 -1
- package/dist/ui/ink/components/ToolCallBlock.d.ts +12 -0
- package/dist/ui/ink/components/ToolCallBlock.d.ts.map +1 -1
- package/dist/ui/ink/components/ToolCallBlock.js +8 -24
- package/dist/ui/ink/components/ToolCallBlock.js.map +1 -1
- package/dist/ui/ink/renderer.d.ts +0 -1
- package/dist/ui/ink/renderer.d.ts.map +1 -1
- package/dist/ui/ink/renderer.js +1 -4
- package/dist/ui/ink/renderer.js.map +1 -1
- package/package.json +47 -47
- package/dist/async-map.d.ts +0 -6
- package/dist/async-map.d.ts.map +0 -1
- package/dist/async-map.js +0 -16
- package/dist/async-map.js.map +0 -1
- package/dist/blog-api/types/index.d.ts +0 -2
- package/dist/blog-api/types/index.d.ts.map +0 -1
- package/dist/blog-api/types/index.js +0 -2
- package/dist/blog-api/types/index.js.map +0 -1
- package/dist/examples.d.ts +0 -22
- package/dist/examples.d.ts.map +0 -1
- package/dist/examples.js +0 -45
- package/dist/examples.js.map +0 -1
- package/dist/fibonacci.d.ts +0 -19
- package/dist/fibonacci.d.ts.map +0 -1
- package/dist/fibonacci.js +0 -61
- package/dist/fibonacci.js.map +0 -1
- package/dist/parfymerie-landing/src/App.d.ts +0 -4
- package/dist/parfymerie-landing/src/App.d.ts.map +0 -1
- package/dist/parfymerie-landing/src/App.js +0 -12
- package/dist/parfymerie-landing/src/App.js.map +0 -1
- package/dist/parfymerie-landing/src/main.d.ts +0 -2
- package/dist/parfymerie-landing/src/main.d.ts.map +0 -1
- package/dist/parfymerie-landing/src/main.js +0 -7
- package/dist/parfymerie-landing/src/main.js.map +0 -1
- package/dist/parfymerie-landing/vite.config.d.ts +0 -3
- package/dist/parfymerie-landing/vite.config.d.ts.map +0 -1
- package/dist/parfymerie-landing/vite.config.js +0 -7
- package/dist/parfymerie-landing/vite.config.js.map +0 -1
- package/dist/repl.d.ts +0 -5
- package/dist/repl.d.ts.map +0 -1
- package/dist/repl.js +0 -472
- package/dist/repl.js.map +0 -1
- package/dist/sort.d.ts +0 -8
- package/dist/sort.d.ts.map +0 -1
- package/dist/sort.js +0 -36
- package/dist/sort.js.map +0 -1
- package/dist/stack.d.ts +0 -9
- package/dist/stack.d.ts.map +0 -1
- package/dist/stack.js +0 -22
- package/dist/stack.js.map +0 -1
- package/dist/test-run.d.ts +0 -2
- package/dist/test-run.d.ts.map +0 -1
- package/dist/test-run.js +0 -13
- package/dist/test-run.js.map +0 -1
- package/dist/ui/components/diff-view.d.ts +0 -8
- package/dist/ui/components/diff-view.d.ts.map +0 -1
- package/dist/ui/components/diff-view.js +0 -25
- package/dist/ui/components/diff-view.js.map +0 -1
- package/dist/ui/double-press.d.ts +0 -9
- package/dist/ui/double-press.d.ts.map +0 -1
- package/dist/ui/double-press.js +0 -18
- package/dist/ui/double-press.js.map +0 -1
- package/dist/ui/ink/components/ActivityLog.d.ts +0 -12
- package/dist/ui/ink/components/ActivityLog.d.ts.map +0 -1
- package/dist/ui/ink/components/ActivityLog.js +0 -11
- package/dist/ui/ink/components/ActivityLog.js.map +0 -1
- package/dist/ui/ink/components/AgentStatus.d.ts +0 -13
- package/dist/ui/ink/components/AgentStatus.d.ts.map +0 -1
- package/dist/ui/ink/components/AgentStatus.js +0 -20
- package/dist/ui/ink/components/AgentStatus.js.map +0 -1
- package/dist/ui/ink/components/BottomBar.d.ts +0 -12
- package/dist/ui/ink/components/BottomBar.d.ts.map +0 -1
- package/dist/ui/ink/components/BottomBar.js +0 -22
- package/dist/ui/ink/components/BottomBar.js.map +0 -1
- package/dist/ui/ink/components/CheckboxInput.d.ts +0 -21
- package/dist/ui/ink/components/CheckboxInput.d.ts.map +0 -1
- package/dist/ui/ink/components/CheckboxInput.js +0 -36
- package/dist/ui/ink/components/CheckboxInput.js.map +0 -1
- package/dist/ui/ink/components/InputBox.d.ts +0 -25
- package/dist/ui/ink/components/InputBox.d.ts.map +0 -1
- package/dist/ui/ink/components/InputBox.js +0 -91
- package/dist/ui/ink/components/InputBox.js.map +0 -1
- package/dist/ui/ink/components/ModeSelector.d.ts +0 -8
- package/dist/ui/ink/components/ModeSelector.d.ts.map +0 -1
- package/dist/ui/ink/components/ModeSelector.js +0 -13
- package/dist/ui/ink/components/ModeSelector.js.map +0 -1
- package/dist/ui/ink/components/QuestionBox.d.ts +0 -14
- package/dist/ui/ink/components/QuestionBox.d.ts.map +0 -1
- package/dist/ui/ink/components/QuestionBox.js +0 -35
- package/dist/ui/ink/components/QuestionBox.js.map +0 -1
- package/dist/ui/ink/components/RadioInput.d.ts +0 -17
- package/dist/ui/ink/components/RadioInput.d.ts.map +0 -1
- package/dist/ui/ink/components/RadioInput.js +0 -30
- package/dist/ui/ink/components/RadioInput.js.map +0 -1
- package/dist/ui/ink/components/SliderInput.d.ts +0 -20
- package/dist/ui/ink/components/SliderInput.d.ts.map +0 -1
- package/dist/ui/ink/components/SliderInput.js +0 -40
- package/dist/ui/ink/components/SliderInput.js.map +0 -1
- package/dist/ui/ink/components/StartupScreen.d.ts +0 -19
- package/dist/ui/ink/components/StartupScreen.d.ts.map +0 -1
- package/dist/ui/ink/components/StartupScreen.js +0 -9
- package/dist/ui/ink/components/StartupScreen.js.map +0 -1
- package/dist/ui/ink/components/WelcomeScreen.d.ts +0 -10
- package/dist/ui/ink/components/WelcomeScreen.d.ts.map +0 -1
- package/dist/ui/ink/components/WelcomeScreen.js +0 -8
- package/dist/ui/ink/components/WelcomeScreen.js.map +0 -1
- package/dist/ui/ink/components/Window.d.ts +0 -30
- package/dist/ui/ink/components/Window.d.ts.map +0 -1
- package/dist/ui/ink/components/Window.js +0 -9
- package/dist/ui/ink/components/Window.js.map +0 -1
- package/dist/ui/ink/components/ui/_core.d.ts +0 -113
- package/dist/ui/ink/components/ui/_core.d.ts.map +0 -1
- package/dist/ui/ink/components/ui/_core.js +0 -83
- package/dist/ui/ink/components/ui/_core.js.map +0 -1
- package/dist/ui/ink/components/ui/autocomplete/Autocomplete.d.ts +0 -23
- package/dist/ui/ink/components/ui/autocomplete/Autocomplete.d.ts.map +0 -1
- package/dist/ui/ink/components/ui/autocomplete/Autocomplete.js +0 -56
- package/dist/ui/ink/components/ui/autocomplete/Autocomplete.js.map +0 -1
- package/dist/ui/ink/components/ui/autocomplete/index.d.ts +0 -3
- package/dist/ui/ink/components/ui/autocomplete/index.d.ts.map +0 -1
- package/dist/ui/ink/components/ui/autocomplete/index.js +0 -2
- package/dist/ui/ink/components/ui/autocomplete/index.js.map +0 -1
- package/dist/ui/ink/components/ui/badge/Badge.d.ts +0 -13
- package/dist/ui/ink/components/ui/badge/Badge.d.ts.map +0 -1
- package/dist/ui/ink/components/ui/badge/Badge.js +0 -17
- package/dist/ui/ink/components/ui/badge/Badge.js.map +0 -1
- package/dist/ui/ink/components/ui/badge/index.d.ts +0 -3
- package/dist/ui/ink/components/ui/badge/index.d.ts.map +0 -1
- package/dist/ui/ink/components/ui/badge/index.js +0 -2
- package/dist/ui/ink/components/ui/badge/index.js.map +0 -1
- package/dist/ui/ink/components/ui/divider/Divider.d.ts +0 -12
- package/dist/ui/ink/components/ui/divider/Divider.d.ts.map +0 -1
- package/dist/ui/ink/components/ui/divider/Divider.js +0 -27
- package/dist/ui/ink/components/ui/divider/Divider.js.map +0 -1
- package/dist/ui/ink/components/ui/divider/index.d.ts +0 -3
- package/dist/ui/ink/components/ui/divider/index.d.ts.map +0 -1
- package/dist/ui/ink/components/ui/divider/index.js +0 -2
- package/dist/ui/ink/components/ui/divider/index.js.map +0 -1
- package/dist/ui/ink/components/ui/header/Header.d.ts +0 -13
- package/dist/ui/ink/components/ui/header/Header.d.ts.map +0 -1
- package/dist/ui/ink/components/ui/header/Header.js +0 -33
- package/dist/ui/ink/components/ui/header/Header.js.map +0 -1
- package/dist/ui/ink/components/ui/header/index.d.ts +0 -3
- package/dist/ui/ink/components/ui/header/index.d.ts.map +0 -1
- package/dist/ui/ink/components/ui/header/index.js +0 -2
- package/dist/ui/ink/components/ui/header/index.js.map +0 -1
- package/dist/ui/ink/components/ui/json-viewer/JSONViewer.d.ts +0 -14
- package/dist/ui/ink/components/ui/json-viewer/JSONViewer.d.ts.map +0 -1
- package/dist/ui/ink/components/ui/json-viewer/JSONViewer.js +0 -144
- package/dist/ui/ink/components/ui/json-viewer/JSONViewer.js.map +0 -1
- package/dist/ui/ink/components/ui/json-viewer/index.d.ts +0 -3
- package/dist/ui/ink/components/ui/json-viewer/index.d.ts.map +0 -1
- package/dist/ui/ink/components/ui/json-viewer/index.js +0 -2
- package/dist/ui/ink/components/ui/json-viewer/index.js.map +0 -1
- package/dist/ui/ink/components/ui/key-hint/KeyHint.d.ts +0 -14
- package/dist/ui/ink/components/ui/key-hint/KeyHint.d.ts.map +0 -1
- package/dist/ui/ink/components/ui/key-hint/KeyHint.js +0 -5
- package/dist/ui/ink/components/ui/key-hint/KeyHint.js.map +0 -1
- package/dist/ui/ink/components/ui/key-hint/index.d.ts +0 -3
- package/dist/ui/ink/components/ui/key-hint/index.d.ts.map +0 -1
- package/dist/ui/ink/components/ui/key-hint/index.js +0 -2
- package/dist/ui/ink/components/ui/key-hint/index.js.map +0 -1
- package/dist/ui/ink/components/ui/markdown/Markdown.d.ts +0 -11
- package/dist/ui/ink/components/ui/markdown/Markdown.d.ts.map +0 -1
- package/dist/ui/ink/components/ui/markdown/Markdown.js +0 -129
- package/dist/ui/ink/components/ui/markdown/Markdown.js.map +0 -1
- package/dist/ui/ink/components/ui/markdown/index.d.ts +0 -3
- package/dist/ui/ink/components/ui/markdown/index.d.ts.map +0 -1
- package/dist/ui/ink/components/ui/markdown/index.js +0 -2
- package/dist/ui/ink/components/ui/markdown/index.js.map +0 -1
- package/dist/ui/ink/components/ui/scroll-area/ScrollArea.d.ts +0 -21
- package/dist/ui/ink/components/ui/scroll-area/ScrollArea.d.ts.map +0 -1
- package/dist/ui/ink/components/ui/scroll-area/ScrollArea.js +0 -42
- package/dist/ui/ink/components/ui/scroll-area/ScrollArea.js.map +0 -1
- package/dist/ui/ink/components/ui/scroll-area/index.d.ts +0 -3
- package/dist/ui/ink/components/ui/scroll-area/index.d.ts.map +0 -1
- package/dist/ui/ink/components/ui/scroll-area/index.js +0 -2
- package/dist/ui/ink/components/ui/scroll-area/index.js.map +0 -1
- package/dist/ui/ink/components/ui/select/Select.d.ts +0 -19
- package/dist/ui/ink/components/ui/select/Select.d.ts.map +0 -1
- package/dist/ui/ink/components/ui/select/Select.js +0 -73
- package/dist/ui/ink/components/ui/select/Select.js.map +0 -1
- package/dist/ui/ink/components/ui/select/index.d.ts +0 -3
- package/dist/ui/ink/components/ui/select/index.d.ts.map +0 -1
- package/dist/ui/ink/components/ui/select/index.js +0 -2
- package/dist/ui/ink/components/ui/select/index.js.map +0 -1
- package/dist/ui/ink/components/ui/spinner/Spinner.d.ts +0 -14
- package/dist/ui/ink/components/ui/spinner/Spinner.d.ts.map +0 -1
- package/dist/ui/ink/components/ui/spinner/Spinner.js +0 -16
- package/dist/ui/ink/components/ui/spinner/Spinner.js.map +0 -1
- package/dist/ui/ink/components/ui/spinner/index.d.ts +0 -3
- package/dist/ui/ink/components/ui/spinner/index.d.ts.map +0 -1
- package/dist/ui/ink/components/ui/spinner/index.js +0 -2
- package/dist/ui/ink/components/ui/spinner/index.js.map +0 -1
- package/dist/ui/ink/components/ui/status-indicator/StatusIndicator.d.ts +0 -12
- package/dist/ui/ink/components/ui/status-indicator/StatusIndicator.d.ts.map +0 -1
- package/dist/ui/ink/components/ui/status-indicator/StatusIndicator.js +0 -39
- package/dist/ui/ink/components/ui/status-indicator/StatusIndicator.js.map +0 -1
- package/dist/ui/ink/components/ui/status-indicator/index.d.ts +0 -3
- package/dist/ui/ink/components/ui/status-indicator/index.d.ts.map +0 -1
- package/dist/ui/ink/components/ui/status-indicator/index.js +0 -2
- package/dist/ui/ink/components/ui/status-indicator/index.js.map +0 -1
- package/dist/ui/ink/components/ui/streaming-text/StreamingText.d.ts +0 -13
- package/dist/ui/ink/components/ui/streaming-text/StreamingText.d.ts.map +0 -1
- package/dist/ui/ink/components/ui/streaming-text/StreamingText.js +0 -22
- package/dist/ui/ink/components/ui/streaming-text/StreamingText.js.map +0 -1
- package/dist/ui/ink/components/ui/streaming-text/index.d.ts +0 -3
- package/dist/ui/ink/components/ui/streaming-text/index.d.ts.map +0 -1
- package/dist/ui/ink/components/ui/streaming-text/index.js +0 -2
- package/dist/ui/ink/components/ui/streaming-text/index.js.map +0 -1
- package/dist/ui/ink/components/ui/tabs/Tabs.d.ts +0 -20
- package/dist/ui/ink/components/ui/tabs/Tabs.d.ts.map +0 -1
- package/dist/ui/ink/components/ui/tabs/Tabs.js +0 -53
- package/dist/ui/ink/components/ui/tabs/Tabs.js.map +0 -1
- package/dist/ui/ink/components/ui/tabs/index.d.ts +0 -3
- package/dist/ui/ink/components/ui/tabs/index.d.ts.map +0 -1
- package/dist/ui/ink/components/ui/tabs/index.js +0 -2
- package/dist/ui/ink/components/ui/tabs/index.js.map +0 -1
- package/dist/ui/ink/components/ui/text-input/TextInput.d.ts +0 -22
- package/dist/ui/ink/components/ui/text-input/TextInput.d.ts.map +0 -1
- package/dist/ui/ink/components/ui/text-input/TextInput.js +0 -57
- package/dist/ui/ink/components/ui/text-input/TextInput.js.map +0 -1
- package/dist/ui/ink/components/ui/text-input/index.d.ts +0 -3
- package/dist/ui/ink/components/ui/text-input/index.d.ts.map +0 -1
- package/dist/ui/ink/components/ui/text-input/index.js +0 -2
- package/dist/ui/ink/components/ui/text-input/index.js.map +0 -1
- package/dist/ui/ink/components/ui/token-counter/TokenCounter.d.ts +0 -17
- package/dist/ui/ink/components/ui/token-counter/TokenCounter.d.ts.map +0 -1
- package/dist/ui/ink/components/ui/token-counter/TokenCounter.js +0 -38
- package/dist/ui/ink/components/ui/token-counter/TokenCounter.js.map +0 -1
- package/dist/ui/ink/components/ui/token-counter/index.d.ts +0 -3
- package/dist/ui/ink/components/ui/token-counter/index.d.ts.map +0 -1
- package/dist/ui/ink/components/ui/token-counter/index.js +0 -2
- package/dist/ui/ink/components/ui/token-counter/index.js.map +0 -1
- package/dist/ui/ink/components/ui/typewriter/Typewriter.d.ts +0 -14
- package/dist/ui/ink/components/ui/typewriter/Typewriter.d.ts.map +0 -1
- package/dist/ui/ink/components/ui/typewriter/Typewriter.js +0 -57
- package/dist/ui/ink/components/ui/typewriter/Typewriter.js.map +0 -1
- package/dist/ui/ink/components/ui/typewriter/index.d.ts +0 -3
- package/dist/ui/ink/components/ui/typewriter/index.d.ts.map +0 -1
- package/dist/ui/ink/components/ui/typewriter/index.js +0 -2
- package/dist/ui/ink/components/ui/typewriter/index.js.map +0 -1
- package/dist/ui/opentui-renderer.d.ts +0 -53
- package/dist/ui/opentui-renderer.d.ts.map +0 -1
- package/dist/ui/opentui-renderer.js +0 -463
- package/dist/ui/opentui-renderer.js.map +0 -1
- package/dist/utils/memoize.d.ts +0 -14
- package/dist/utils/memoize.d.ts.map +0 -1
- package/dist/utils/memoize.js +0 -51
- package/dist/utils/memoize.js.map +0 -1
- package/dist/utils/types.d.ts +0 -6
- package/dist/utils/types.d.ts.map +0 -1
- package/dist/utils/types.js +0 -2
- package/dist/utils/types.js.map +0 -1
- package/dist/utils.d.ts +0 -22
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js +0 -81
- package/dist/utils.js.map +0 -1
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { LLMProvider, ChatMessage } from "../llm/provider.js";
|
|
2
|
+
import type { OutputRenderer } from "../ui/renderer.js";
|
|
3
|
+
export declare function doChat(provider: LLMProvider, messages: ChatMessage[], renderer: OutputRenderer, signal?: AbortSignal, retries?: number, showThinking?: boolean, caller?: "main" | "subagent", maxTokens?: number): Promise<{
|
|
4
|
+
response: string;
|
|
5
|
+
genTimeMs: number;
|
|
6
|
+
}>;
|
|
7
|
+
//# sourceMappingURL=chat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/subagent/chat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAUxD,wBAAsB,MAAM,CAC1B,QAAQ,EAAE,WAAW,EACrB,QAAQ,EAAE,WAAW,EAAE,EACvB,QAAQ,EAAE,cAAc,EACxB,MAAM,CAAC,EAAE,WAAW,EACpB,OAAO,SAAI,EACX,YAAY,UAAQ,EACpB,MAAM,GAAE,MAAM,GAAG,UAAmB,EACpC,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CA4QlD"}
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
import { LMStudioNative } from "../llm/lmstudio-native.js";
|
|
2
|
+
import { OpenAICompat } from "../llm/openai-compat.js";
|
|
3
|
+
import { logInfo, logWarn, logLLMRequest, logLLMResponse, } from "../logger.js";
|
|
4
|
+
import { getLLMConfig } from "../config/config.js";
|
|
5
|
+
export async function doChat(provider, messages, renderer, signal, retries = 1, showThinking = false, caller = "main", maxTokens) {
|
|
6
|
+
let lastReasoningText = "";
|
|
7
|
+
for (let attempt = 0; attempt <= retries; attempt++) {
|
|
8
|
+
const startTime = performance.now();
|
|
9
|
+
const fullText = [];
|
|
10
|
+
let started = false;
|
|
11
|
+
let reasoningBuf = false;
|
|
12
|
+
let currentReasoning = "";
|
|
13
|
+
let lastFinishReason = null;
|
|
14
|
+
let reasoningChunksCount = 0;
|
|
15
|
+
let contentChunksCount = 0;
|
|
16
|
+
if (signal?.aborted)
|
|
17
|
+
return { response: "", genTimeMs: 0 };
|
|
18
|
+
const lastMsg = messages[messages.length - 1];
|
|
19
|
+
logLLMRequest(provider.model, messages.length, lastMsg?.content || "", caller);
|
|
20
|
+
if (caller === "main") {
|
|
21
|
+
renderer.setStreamRole?.("assistant");
|
|
22
|
+
}
|
|
23
|
+
renderer.writeSpinner();
|
|
24
|
+
try {
|
|
25
|
+
let buf = "";
|
|
26
|
+
for await (const chunk of provider.chat(messages, {
|
|
27
|
+
temperature: 0.7,
|
|
28
|
+
signal,
|
|
29
|
+
showThinking,
|
|
30
|
+
enableThinking: true,
|
|
31
|
+
max_tokens: maxTokens,
|
|
32
|
+
})) {
|
|
33
|
+
if (!chunk.content && !chunk.reasoning && !chunk.finish_reason)
|
|
34
|
+
continue;
|
|
35
|
+
if (chunk.finish_reason) {
|
|
36
|
+
lastFinishReason = chunk.finish_reason;
|
|
37
|
+
}
|
|
38
|
+
if (chunk.content) {
|
|
39
|
+
fullText.push(chunk.content);
|
|
40
|
+
contentChunksCount++;
|
|
41
|
+
}
|
|
42
|
+
if (chunk.reasoning) {
|
|
43
|
+
reasoningChunksCount++;
|
|
44
|
+
currentReasoning += chunk.reasoning;
|
|
45
|
+
}
|
|
46
|
+
if (!chunk.content && !chunk.reasoning)
|
|
47
|
+
continue;
|
|
48
|
+
if (!started) {
|
|
49
|
+
renderer.clearSpinner();
|
|
50
|
+
started = true;
|
|
51
|
+
}
|
|
52
|
+
if (chunk.reasoning) {
|
|
53
|
+
if (showThinking) {
|
|
54
|
+
if (reasoningBuf === false) {
|
|
55
|
+
renderer.writeNewline();
|
|
56
|
+
renderer.writeDim("┈ reasoning ┈");
|
|
57
|
+
reasoningBuf = "";
|
|
58
|
+
}
|
|
59
|
+
reasoningBuf += chunk.reasoning;
|
|
60
|
+
}
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
if (reasoningBuf !== false && typeof reasoningBuf === "string") {
|
|
64
|
+
renderer.writeNewline();
|
|
65
|
+
renderer.writeDim(reasoningBuf);
|
|
66
|
+
reasoningBuf = false;
|
|
67
|
+
}
|
|
68
|
+
buf += chunk.content;
|
|
69
|
+
while (buf.length > 0) {
|
|
70
|
+
const tcStart = buf.indexOf("<tool_call>");
|
|
71
|
+
const tcEnd = buf.indexOf("</tool_call>");
|
|
72
|
+
if (tcStart === -1 && tcEnd === -1) {
|
|
73
|
+
const clean = buf.replace(/@grounding\[файл:\s*[^\]]*\]\n?/g, "");
|
|
74
|
+
if (clean)
|
|
75
|
+
renderer.writeMarkdownChunk(clean);
|
|
76
|
+
buf = "";
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
if (tcStart !== -1 && (tcEnd === -1 || tcStart < tcEnd)) {
|
|
80
|
+
if (tcStart > 0) {
|
|
81
|
+
const clean = buf
|
|
82
|
+
.slice(0, tcStart)
|
|
83
|
+
.replace(/@grounding\[файл:\s*[^\]]*\]\n?/g, "");
|
|
84
|
+
if (clean)
|
|
85
|
+
renderer.writeMarkdownChunk(clean);
|
|
86
|
+
}
|
|
87
|
+
buf = buf.slice(tcStart);
|
|
88
|
+
const closeIdx = buf.indexOf("</tool_call>");
|
|
89
|
+
if (closeIdx !== -1) {
|
|
90
|
+
buf = buf.slice(closeIdx + "</tool_call>".length);
|
|
91
|
+
}
|
|
92
|
+
break;
|
|
93
|
+
}
|
|
94
|
+
if (tcEnd !== -1 && (tcStart === -1 || tcEnd < tcStart)) {
|
|
95
|
+
const clean = buf
|
|
96
|
+
.slice(0, tcEnd)
|
|
97
|
+
.replace(/@grounding\[файл:\s*[^\]]*\]\n?/g, "");
|
|
98
|
+
if (clean)
|
|
99
|
+
renderer.writeMarkdownChunk(clean);
|
|
100
|
+
buf = buf.slice(tcEnd + "</tool_call>".length);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
if (reasoningBuf !== false && typeof reasoningBuf === "string") {
|
|
105
|
+
renderer.writeNewline();
|
|
106
|
+
renderer.writeDim(reasoningBuf);
|
|
107
|
+
}
|
|
108
|
+
if (currentReasoning) {
|
|
109
|
+
lastReasoningText = currentReasoning;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
catch (e) {
|
|
113
|
+
if (e.name === "AbortError") {
|
|
114
|
+
logLLMResponse(provider.model, 0, performance.now() - startTime, "Aborted", caller);
|
|
115
|
+
return { response: "", genTimeMs: 0 };
|
|
116
|
+
}
|
|
117
|
+
logLLMResponse(provider.model, 0, performance.now() - startTime, e.message, caller);
|
|
118
|
+
renderer.writeError(`\n[LLM] ${e.message}`);
|
|
119
|
+
const isNetworkError = !e.message?.includes("API ") && !e.message?.includes("status");
|
|
120
|
+
if (isNetworkError && attempt < retries) {
|
|
121
|
+
const delay = Math.min(2000 * (attempt + 1), 10000);
|
|
122
|
+
renderer.writeWarning(`[LLM] Network error, retrying in ${delay / 1000}s... (attempt ${attempt + 1}/${retries})`);
|
|
123
|
+
await new Promise((r) => setTimeout(r, delay));
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
const providerHint = provider instanceof LMStudioNative
|
|
127
|
+
? "Check that LM Studio is running on localhost:1234"
|
|
128
|
+
: provider instanceof OpenAICompat
|
|
129
|
+
? "Check that your API server is running and the API key is correct"
|
|
130
|
+
: "Check that your LLM server is running";
|
|
131
|
+
renderer.writeWarning(`[LLM] ${providerHint}`);
|
|
132
|
+
return { response: "", genTimeMs: 0 };
|
|
133
|
+
}
|
|
134
|
+
const genTimeMs = performance.now() - startTime;
|
|
135
|
+
const response = fullText.join("");
|
|
136
|
+
renderer.commitMarkdown();
|
|
137
|
+
if (response.trim()) {
|
|
138
|
+
logLLMResponse(provider.model, response.length, genTimeMs, undefined, caller);
|
|
139
|
+
return { response, genTimeMs };
|
|
140
|
+
}
|
|
141
|
+
const reason = lastFinishReason ?? "unknown";
|
|
142
|
+
logWarn("DOCHAT", `empty response #${attempt + 1}: finish_reason=${reason}, reasoning_chunks=${reasoningChunksCount}, content_chunks=${contentChunksCount}`);
|
|
143
|
+
if (lastFinishReason === "length") {
|
|
144
|
+
renderer.writeWarning(` [empty response: model hit max_tokens during reasoning (${reasoningChunksCount} reasoning chunks, 0 content chunks)]`);
|
|
145
|
+
}
|
|
146
|
+
else if (reasoningChunksCount > 0 && contentChunksCount === 0) {
|
|
147
|
+
renderer.writeWarning(` [empty response: model produced ${reasoningChunksCount} reasoning chunks but no content]`);
|
|
148
|
+
}
|
|
149
|
+
if (attempt < retries) {
|
|
150
|
+
renderer.writeDim(`[retry ${attempt + 1}/${retries}]`);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
const llmCfg = getLLMConfig();
|
|
154
|
+
if (llmCfg.retryWithoutThinking && lastReasoningText.trim()) {
|
|
155
|
+
logInfo("DOCHAT", `retrying without thinking (had ${lastReasoningText.length} reasoning chars)`);
|
|
156
|
+
renderer.writeDim(`[retry without thinking]`);
|
|
157
|
+
const retryResult = await doChatOnce(provider, messages, renderer, signal, false, showThinking, caller, maxTokens);
|
|
158
|
+
if (retryResult.response.trim()) {
|
|
159
|
+
logInfo("DOCHAT", `retry without thinking succeeded: ${retryResult.response.length} chars`);
|
|
160
|
+
return retryResult;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
if (lastReasoningText.trim()) {
|
|
164
|
+
logInfo("DOCHAT", `emergency: forcing content with low temperature`);
|
|
165
|
+
renderer.writeDim(`[emergency: forcing content with temperature=0.1]`);
|
|
166
|
+
const emergencyMessages = [
|
|
167
|
+
...messages,
|
|
168
|
+
{
|
|
169
|
+
role: "user",
|
|
170
|
+
content: "[System] You MUST produce a response now. Do NOT use thinking tags. Reply with a tool call or a direct answer. Any response is better than empty.",
|
|
171
|
+
},
|
|
172
|
+
];
|
|
173
|
+
const emergencyResult = await doChatOnce(provider, emergencyMessages, renderer, signal, false, showThinking, caller, maxTokens, 0.1);
|
|
174
|
+
if (emergencyResult.response.trim()) {
|
|
175
|
+
logInfo("DOCHAT", `emergency succeeded: ${emergencyResult.response.length} chars`);
|
|
176
|
+
return emergencyResult;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
if (llmCfg.fallbackToReasoning && lastReasoningText.trim()) {
|
|
180
|
+
logInfo("DOCHAT", `fallback: using reasoning as content (${lastReasoningText.length} chars)`);
|
|
181
|
+
renderer.writeWarning(` [fallback: using reasoning as content]`);
|
|
182
|
+
return { response: lastReasoningText, genTimeMs: 0 };
|
|
183
|
+
}
|
|
184
|
+
return { response: "", genTimeMs: 0 };
|
|
185
|
+
}
|
|
186
|
+
async function doChatOnce(provider, messages, renderer, signal, enableThinking = true, showThinking = false, caller = "main", maxTokens, temperature = 0.7) {
|
|
187
|
+
const startTime = performance.now();
|
|
188
|
+
const fullText = [];
|
|
189
|
+
let started = false;
|
|
190
|
+
if (signal?.aborted)
|
|
191
|
+
return { response: "", genTimeMs: 0 };
|
|
192
|
+
if (caller === "main") {
|
|
193
|
+
renderer.setStreamRole?.("assistant");
|
|
194
|
+
}
|
|
195
|
+
renderer.writeSpinner();
|
|
196
|
+
try {
|
|
197
|
+
let buf = "";
|
|
198
|
+
for await (const chunk of provider.chat(messages, {
|
|
199
|
+
temperature,
|
|
200
|
+
signal,
|
|
201
|
+
showThinking,
|
|
202
|
+
enableThinking,
|
|
203
|
+
max_tokens: maxTokens,
|
|
204
|
+
})) {
|
|
205
|
+
if (!chunk.content && !chunk.finish_reason)
|
|
206
|
+
continue;
|
|
207
|
+
if (chunk.content) {
|
|
208
|
+
fullText.push(chunk.content);
|
|
209
|
+
}
|
|
210
|
+
if (!chunk.content)
|
|
211
|
+
continue;
|
|
212
|
+
if (!started) {
|
|
213
|
+
renderer.clearSpinner();
|
|
214
|
+
started = true;
|
|
215
|
+
}
|
|
216
|
+
buf += chunk.content;
|
|
217
|
+
while (buf.length > 0) {
|
|
218
|
+
const tcStart = buf.indexOf("<tool_call>");
|
|
219
|
+
const tcEnd = buf.indexOf("</tool_call>");
|
|
220
|
+
if (tcStart === -1 && tcEnd === -1) {
|
|
221
|
+
if (buf)
|
|
222
|
+
renderer.writeMarkdownChunk(buf);
|
|
223
|
+
buf = "";
|
|
224
|
+
break;
|
|
225
|
+
}
|
|
226
|
+
if (tcStart !== -1 && (tcEnd === -1 || tcStart < tcEnd)) {
|
|
227
|
+
if (tcStart > 0) {
|
|
228
|
+
renderer.writeMarkdownChunk(buf.slice(0, tcStart));
|
|
229
|
+
}
|
|
230
|
+
buf = buf.slice(tcStart);
|
|
231
|
+
const closeIdx = buf.indexOf("</tool_call>");
|
|
232
|
+
if (closeIdx !== -1) {
|
|
233
|
+
buf = buf.slice(closeIdx + "</tool_call>".length);
|
|
234
|
+
}
|
|
235
|
+
break;
|
|
236
|
+
}
|
|
237
|
+
if (tcEnd !== -1 && (tcStart === -1 || tcEnd < tcStart)) {
|
|
238
|
+
renderer.writeMarkdownChunk(buf.slice(0, tcEnd));
|
|
239
|
+
buf = buf.slice(tcEnd + "</tool_call>".length);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
catch (e) {
|
|
245
|
+
if (e.name === "AbortError") {
|
|
246
|
+
return { response: "", genTimeMs: 0 };
|
|
247
|
+
}
|
|
248
|
+
renderer.writeError(`\n[LLM] ${e.message}`);
|
|
249
|
+
return { response: "", genTimeMs: 0 };
|
|
250
|
+
}
|
|
251
|
+
const genTimeMs = performance.now() - startTime;
|
|
252
|
+
const response = fullText.join("");
|
|
253
|
+
renderer.commitMarkdown();
|
|
254
|
+
logLLMResponse(provider.model, response.length, genTimeMs, undefined, caller);
|
|
255
|
+
return { response, genTimeMs };
|
|
256
|
+
}
|
|
257
|
+
//# sourceMappingURL=chat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/subagent/chat.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/subagent/context.ts"],"names":[],"mappings":"AAGA,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CA+DxD"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { readdirSync, existsSync, readFileSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
export function buildSubagentContext(cwd) {
|
|
4
|
+
const lines = [];
|
|
5
|
+
try {
|
|
6
|
+
const entries = readdirSync(cwd, { withFileTypes: true });
|
|
7
|
+
for (const entry of entries) {
|
|
8
|
+
if (!entry.isDirectory() ||
|
|
9
|
+
entry.name.startsWith(".") ||
|
|
10
|
+
entry.name === "node_modules")
|
|
11
|
+
continue;
|
|
12
|
+
const dirPath = join(cwd, entry.name);
|
|
13
|
+
try {
|
|
14
|
+
const files = readdirSync(dirPath, { recursive: true })
|
|
15
|
+
.filter((f) => /\.(ts|tsx|js|jsx)$/.test(f))
|
|
16
|
+
.slice(0, 20);
|
|
17
|
+
if (files.length > 0) {
|
|
18
|
+
lines.push(`Files in ${entry.name}/: ${files.join(", ")}`);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
/* skip unreadable dirs */
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
/* no entries */
|
|
28
|
+
}
|
|
29
|
+
try {
|
|
30
|
+
const rootFiles = readdirSync(cwd).filter((f) => /\.(ts|js)$/.test(f) && !f.startsWith("."));
|
|
31
|
+
if (rootFiles.length > 0) {
|
|
32
|
+
lines.push("Root files: " + rootFiles.join(", "));
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
/* skip */
|
|
37
|
+
}
|
|
38
|
+
try {
|
|
39
|
+
const pkgPath = join(cwd, "package.json");
|
|
40
|
+
if (existsSync(pkgPath)) {
|
|
41
|
+
const pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
|
|
42
|
+
const deps = Object.keys(pkg.dependencies || {});
|
|
43
|
+
const devDeps = Object.keys(pkg.devDependencies || {});
|
|
44
|
+
if (deps.length > 0)
|
|
45
|
+
lines.push("Dependencies: " + deps.join(", "));
|
|
46
|
+
if (devDeps.length > 0)
|
|
47
|
+
lines.push("DevDependencies: " + devDeps.join(", "));
|
|
48
|
+
lines.push("Module type: " + (pkg.type || "commonjs"));
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
/* no package.json */
|
|
53
|
+
}
|
|
54
|
+
try {
|
|
55
|
+
if (existsSync(join(cwd, "tsconfig.json"))) {
|
|
56
|
+
lines.push("Has tsconfig.json");
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
/* no tsconfig */
|
|
61
|
+
}
|
|
62
|
+
return lines.join("\n");
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/subagent/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../src/subagent/definition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,eAAO,MAAM,kBAAkB,EAAE,cAuBhC,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export const subagentDefinition = {
|
|
2
|
+
type: "function",
|
|
3
|
+
function: {
|
|
4
|
+
name: "subagent",
|
|
5
|
+
description: "Delegate a task to an isolated agent with a FRESH context (no history of prior errors). Use for: (1) each file when creating 3+ new files, (2) any task where you are stuck or making repeated errors, (3) simple single-step operations (bash, file read/write). The subagent has all tools and starts clean — ideal when accumulated context is causing confusion.",
|
|
6
|
+
parameters: {
|
|
7
|
+
type: "object",
|
|
8
|
+
properties: {
|
|
9
|
+
task: {
|
|
10
|
+
type: "string",
|
|
11
|
+
description: "What the subagent should do — be specific and include file paths",
|
|
12
|
+
},
|
|
13
|
+
existingFiles: {
|
|
14
|
+
type: "string",
|
|
15
|
+
description: "Comma-separated files the subagent can read for context (optional)",
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
required: ["task"],
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=definition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definition.js","sourceRoot":"","sources":["../../src/subagent/definition.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,kBAAkB,GAAmB;IAChD,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,WAAW,EACT,sWAAsW;QACxW,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,kEAAkE;iBACrE;gBACD,aAAa,EAAE;oBACb,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,oEAAoE;iBACvE;aACF;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB;KACF;CACF,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** Паттерны ошибок которые НЕ триггерят specialist (trivial) */
|
|
2
|
+
export declare const TRIVIAL_ERROR_PATTERNS: RegExp[];
|
|
3
|
+
/** Паттерны ошибок которые ВСЕГДА требуют specialist (не trivial) */
|
|
4
|
+
export declare const NON_TRIVIAL_ERROR_PATTERNS: RegExp[];
|
|
5
|
+
export declare function isTrivialError(toolName: string, errorOutput: string): boolean;
|
|
6
|
+
export declare function buildSpecialistTask(toolName: string, toolArgs: Record<string, unknown>, errorOutput: string, userTask: string, attemptCount: number): string;
|
|
7
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/subagent/errors.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,eAAO,MAAM,sBAAsB,UAMlC,CAAC;AAEF,qEAAqE;AACrE,eAAO,MAAM,0BAA0B,UAQtC,CAAC;AAEF,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAiB7E;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,GACnB,MAAM,CAgCR"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/** Паттерны ошибок которые НЕ триггерят specialist (trivial) */
|
|
2
|
+
export const TRIVIAL_ERROR_PATTERNS = [
|
|
3
|
+
/no results? found/i,
|
|
4
|
+
/pattern .* matched 0 results/i,
|
|
5
|
+
/0 files? matched/i,
|
|
6
|
+
/command not found.*grep/i,
|
|
7
|
+
/not a directory/i,
|
|
8
|
+
];
|
|
9
|
+
/** Паттерны ошибок которые ВСЕГДА требуют specialist (не trivial) */
|
|
10
|
+
export const NON_TRIVIAL_ERROR_PATTERNS = [
|
|
11
|
+
/unexpected token/i,
|
|
12
|
+
/syntaxerror/i,
|
|
13
|
+
/cannot find module/i,
|
|
14
|
+
/module not found/i,
|
|
15
|
+
/permission denied/i,
|
|
16
|
+
/enoent/i,
|
|
17
|
+
/eacces/i,
|
|
18
|
+
];
|
|
19
|
+
export function isTrivialError(toolName, errorOutput) {
|
|
20
|
+
if (NON_TRIVIAL_ERROR_PATTERNS.some((p) => p.test(errorOutput))) {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
if (toolName === "grep_search" || toolName === "glob_search") {
|
|
24
|
+
if (/0 results|0 files|no match/i.test(errorOutput) &&
|
|
25
|
+
errorOutput.length < 200) {
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
if (errorOutput.length < 10)
|
|
30
|
+
return true;
|
|
31
|
+
return TRIVIAL_ERROR_PATTERNS.some((p) => p.test(errorOutput));
|
|
32
|
+
}
|
|
33
|
+
export function buildSpecialistTask(toolName, toolArgs, errorOutput, userTask, attemptCount) {
|
|
34
|
+
const argsStr = JSON.stringify(toolArgs, null, 2);
|
|
35
|
+
let webHints = "";
|
|
36
|
+
if (toolName === "web_browse" && String(toolArgs?.action) === "evaluate") {
|
|
37
|
+
const code = String(toolArgs?.value ?? toolArgs?.code ?? "");
|
|
38
|
+
webHints = [
|
|
39
|
+
"",
|
|
40
|
+
'web_browse evaluate: "value" is JS code executed in browser context.',
|
|
41
|
+
"- return statements work: return document.title",
|
|
42
|
+
`- Current code that failed: ${code.slice(0, 300)}`,
|
|
43
|
+
].join("\n");
|
|
44
|
+
}
|
|
45
|
+
return [
|
|
46
|
+
`The tool "${toolName}" has failed ${attemptCount} times with the same error while working on: "${userTask.slice(0, 200)}"`,
|
|
47
|
+
"",
|
|
48
|
+
`Failed tool call:`,
|
|
49
|
+
` Tool: ${toolName}`,
|
|
50
|
+
` Arguments: ${argsStr}`,
|
|
51
|
+
"",
|
|
52
|
+
`Error output:`,
|
|
53
|
+
` ${errorOutput.slice(0, 500)}`,
|
|
54
|
+
webHints,
|
|
55
|
+
"",
|
|
56
|
+
`Your task: Diagnose WHY this tool call fails and FIX the underlying problem.`,
|
|
57
|
+
` - Read the relevant files to understand the actual state`,
|
|
58
|
+
` - Fix the root cause (wrong path, missing file, syntax error, etc.)`,
|
|
59
|
+
` - If the tool call arguments are wrong, correct them`,
|
|
60
|
+
` - If the file doesn't exist, create it`,
|
|
61
|
+
` - Return a clear summary of what you found and what you fixed`,
|
|
62
|
+
].join("\n");
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/subagent/errors.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,oBAAoB;IACpB,+BAA+B;IAC/B,mBAAmB;IACnB,0BAA0B;IAC1B,kBAAkB;CACnB,CAAC;AAEF,qEAAqE;AACrE,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,mBAAmB;IACnB,cAAc;IACd,qBAAqB;IACrB,mBAAmB;IACnB,oBAAoB;IACpB,SAAS;IACT,SAAS;CACV,CAAC;AAEF,MAAM,UAAU,cAAc,CAAC,QAAgB,EAAE,WAAmB;IAClE,IAAI,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;QAChE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,QAAQ,KAAK,aAAa,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;QAC7D,IACE,6BAA6B,CAAC,IAAI,CAAC,WAAW,CAAC;YAC/C,WAAW,CAAC,MAAM,GAAG,GAAG,EACxB,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,GAAG,EAAE;QAAE,OAAO,IAAI,CAAC;IAEzC,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,QAAgB,EAChB,QAAiC,EACjC,WAAmB,EACnB,QAAgB,EAChB,YAAoB;IAEpB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAElD,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,QAAQ,KAAK,YAAY,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC;QACzE,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,EAAE,KAAK,IAAI,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;QAC7D,QAAQ,GAAG;YACT,EAAE;YACF,sEAAsE;YACtE,iDAAiD;YACjD,+BAA+B,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;SACpD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAED,OAAO;QACL,aAAa,QAAQ,gBAAgB,YAAY,iDAAiD,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG;QAC3H,EAAE;QACF,mBAAmB;QACnB,WAAW,QAAQ,EAAE;QACrB,gBAAgB,OAAO,EAAE;QACzB,EAAE;QACF,eAAe;QACf,KAAK,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;QAChC,QAAQ;QACR,EAAE;QACF,8EAA8E;QAC9E,4DAA4D;QAC5D,uEAAuE;QACvE,wDAAwD;QACxD,0CAA0C;QAC1C,iEAAiE;KAClE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** Набор валидных инструментов (единый источник истины) */
|
|
2
|
+
export declare const VALID_TOOLS: Set<string>;
|
|
3
|
+
/** Обязательные аргументы для каждого инструмента */
|
|
4
|
+
export declare const REQUIRED_ARGS: Record<string, string[]>;
|
|
5
|
+
export declare function validateToolCall(parsed: any): {
|
|
6
|
+
valid: boolean;
|
|
7
|
+
name?: string;
|
|
8
|
+
cmd?: string;
|
|
9
|
+
error?: string;
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/subagent/validation.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,eAAO,MAAM,WAAW,aA0BtB,CAAC;AAEH,qDAAqD;AACrD,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAiBlD,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,GAAG,GAAG;IAC7C,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAgCA"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/** Набор валидных инструментов (единый источник истины) */
|
|
2
|
+
export const VALID_TOOLS = new Set([
|
|
3
|
+
"bash",
|
|
4
|
+
"plan",
|
|
5
|
+
"todo",
|
|
6
|
+
"question",
|
|
7
|
+
"approve",
|
|
8
|
+
"theme",
|
|
9
|
+
"user_profile",
|
|
10
|
+
"subagent",
|
|
11
|
+
"read_file",
|
|
12
|
+
"write_file",
|
|
13
|
+
"edit_file",
|
|
14
|
+
"list_dir",
|
|
15
|
+
"create_dir",
|
|
16
|
+
"delete_file",
|
|
17
|
+
"copy_file",
|
|
18
|
+
"move_file",
|
|
19
|
+
"file_info",
|
|
20
|
+
"glob_search",
|
|
21
|
+
"grep_search",
|
|
22
|
+
"tree",
|
|
23
|
+
"web_search",
|
|
24
|
+
"web_fetch",
|
|
25
|
+
"web_browse",
|
|
26
|
+
"scaffold",
|
|
27
|
+
"project_map",
|
|
28
|
+
]);
|
|
29
|
+
/** Обязательные аргументы для каждого инструмента */
|
|
30
|
+
export const REQUIRED_ARGS = {
|
|
31
|
+
read_file: ["path"],
|
|
32
|
+
write_file: ["path", "content"],
|
|
33
|
+
edit_file: ["path", "old_string", "new_string"],
|
|
34
|
+
list_dir: [],
|
|
35
|
+
create_dir: ["path"],
|
|
36
|
+
delete_file: ["path"],
|
|
37
|
+
copy_file: ["source", "destination"],
|
|
38
|
+
move_file: ["source", "destination"],
|
|
39
|
+
file_info: ["path"],
|
|
40
|
+
glob_search: ["pattern"],
|
|
41
|
+
grep_search: ["pattern"],
|
|
42
|
+
tree: [],
|
|
43
|
+
web_search: ["query"],
|
|
44
|
+
web_fetch: ["url"],
|
|
45
|
+
user_profile: [],
|
|
46
|
+
question: ["question"],
|
|
47
|
+
};
|
|
48
|
+
export function validateToolCall(parsed) {
|
|
49
|
+
if (!parsed || typeof parsed !== "object") {
|
|
50
|
+
return { valid: false, error: "Not an object" };
|
|
51
|
+
}
|
|
52
|
+
if (!parsed.name || !VALID_TOOLS.has(parsed.name)) {
|
|
53
|
+
return { valid: false, error: `Unknown tool: ${parsed.name}` };
|
|
54
|
+
}
|
|
55
|
+
if (!parsed.arguments || typeof parsed.arguments !== "object") {
|
|
56
|
+
return { valid: false, error: "Missing arguments" };
|
|
57
|
+
}
|
|
58
|
+
if (parsed.name === "bash") {
|
|
59
|
+
const cmd = String(parsed.arguments.cmd ?? "").trim();
|
|
60
|
+
if (!cmd)
|
|
61
|
+
return { valid: false, error: "Empty command" };
|
|
62
|
+
return { valid: true, name: parsed.name, cmd };
|
|
63
|
+
}
|
|
64
|
+
const required = REQUIRED_ARGS[parsed.name] ?? [];
|
|
65
|
+
const missing = required.filter((k) => {
|
|
66
|
+
const v = parsed.arguments[k];
|
|
67
|
+
return v === undefined || v === null || v === "";
|
|
68
|
+
});
|
|
69
|
+
if (missing.length > 0) {
|
|
70
|
+
return {
|
|
71
|
+
valid: false,
|
|
72
|
+
error: `Missing required argument(s): ${missing.join(", ")}. Tool "${parsed.name}" requires: ${required.join(", ")}`,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
return { valid: true, name: parsed.name };
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/subagent/validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { ToolDefinition } from
|
|
2
|
-
import type { ToolHandler } from
|
|
1
|
+
import type { ToolDefinition } from "../registry.js";
|
|
2
|
+
import type { ToolHandler } from "../types.js";
|
|
3
3
|
/**
|
|
4
4
|
* Инструмент project_map — получение информации о структуре проекта.
|
|
5
5
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-map.d.ts","sourceRoot":"","sources":["../../../src/tools/native/project-map.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"project-map.d.ts","sourceRoot":"","sources":["../../../src/tools/native/project-map.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C;;;;;;;;;GASG;AAEH,eAAO,MAAM,oBAAoB,EAAE,cA4BlC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,WAsL/B,CAAC"}
|