@tyvm/knowhow 0.0.33 → 0.0.34
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/autodoc/plugins/downloader/downloader.mdx +2 -2
- package/benchmarks/.dockerignore +7 -0
- package/benchmarks/README.md +166 -0
- package/benchmarks/docker/Dockerfile +68 -0
- package/benchmarks/example-config.yml +27 -0
- package/benchmarks/jest.config.js +13 -0
- package/benchmarks/package-lock.json +4297 -0
- package/benchmarks/package.json +39 -0
- package/benchmarks/results/4542435/2025-08-05/lms/lms-openai-gpt-oss-20b.json +2814 -0
- package/benchmarks/results/4542435/2025-08-05/lms/lms-qwen-qwen3-30b-a3b-2507.json +2014 -0
- package/benchmarks/results/4fb9125/2025-08-07/anthropic/anthropic-claude-sonnet-4-20250514.json +3121 -0
- package/benchmarks/results/5766aee/2025-08-02/lms-qwen/qwen3-coder-30b.json +98 -0
- package/benchmarks/results/6d73808/2025-08-07/openai/openai-gpt-5.json +3256 -0
- package/benchmarks/results/77bf0a6/2025-08-02/lms-qwen/qwen3-30b-a3b-2507.json +4298 -0
- package/benchmarks/results/8c0d445/2025-08-03/anthropic/anthropic-claude-sonnet-4-20250514.json +3031 -0
- package/benchmarks/results/8c0d445/2025-08-03/openai/openai-gpt-4.1-2025-04-14.json +2990 -0
- package/benchmarks/results/ac6b2ab/2025-08-03/anthropic/anthropic-claude-sonnet-4-20250514.json +3256 -0
- package/benchmarks/results/ac6b2ab/2025-08-03/lms/lms-qwen-qwen3-coder-30b.json +3007 -0
- package/benchmarks/results/ac6b2ab/2025-08-03/openai/openai-gpt-4.1-2025-04-14.json +3256 -0
- package/benchmarks/results/ac6b2ab/2025-08-03/openai/openai-gpt-4.1-mini-2025-04-14.json +3036 -0
- package/benchmarks/results/ac6b2ab/2025-08-03/openai/openai-gpt-4.1-nano-2025-04-14.json +3280 -0
- package/benchmarks/results/adff675/2025-08-04/lms/lms-qwen-qwen3-30b-a3b-2507.json +1920 -0
- package/benchmarks/results/adff675/2025-08-04/lms/lms-qwen-qwen3-coder-30b.json +3281 -0
- package/benchmarks/results/b502ed9/2025-08-03/lms-qwen/qwen3-coder-30b.json +2896 -0
- package/benchmarks/results/d1a8129/2025-08-03/lms/lms-qwen-qwen3-coder-30b.json +3011 -0
- package/benchmarks/results/e60471c/2025-08-03/lms/qwen3-30b-a3b-2507.json +3003 -0
- package/benchmarks/scripts/build-and-run.sh +47 -0
- package/benchmarks/scripts/clone-exercism.sh +92 -0
- package/benchmarks/scripts/validate.sh +48 -0
- package/benchmarks/src/__tests__/runner.test.ts +27 -0
- package/benchmarks/src/cli.ts +90 -0
- package/benchmarks/src/evaluators/EvaluatorRegistry.ts +64 -0
- package/benchmarks/src/evaluators/JavaScriptEvaluator.ts +183 -0
- package/benchmarks/src/evaluators/index.ts +3 -0
- package/benchmarks/src/evaluators/types.ts +22 -0
- package/benchmarks/src/index.ts +3 -0
- package/benchmarks/src/providers.ts +13 -0
- package/benchmarks/src/runner.ts +824 -0
- package/benchmarks/src/types.ts +63 -0
- package/benchmarks/tsconfig.json +19 -0
- package/jest.config.js +2 -1
- package/leaderboard/README.md +148 -0
- package/leaderboard/app/api/benchmark-data/route.ts +131 -0
- package/leaderboard/app/api/benchmark-detail/route.ts +172 -0
- package/leaderboard/app/details/[model]/[provider]/[language]/page.tsx +501 -0
- package/leaderboard/app/exercise/[model]/[provider]/[language]/[exercise]/page.tsx +375 -0
- package/leaderboard/app/globals.css +27 -0
- package/leaderboard/app/layout.tsx +21 -0
- package/leaderboard/app/page.tsx +170 -0
- package/leaderboard/components/LeaderboardTable.tsx +168 -0
- package/leaderboard/components/PerformanceChart.tsx +109 -0
- package/leaderboard/next-env.d.ts +5 -0
- package/leaderboard/next.config.js +4 -0
- package/leaderboard/package-lock.json +6363 -0
- package/leaderboard/package.json +28 -0
- package/leaderboard/postcss.config.js +6 -0
- package/leaderboard/tailwind.config.js +17 -0
- package/leaderboard/tsconfig.json +28 -0
- package/leaderboard/types/benchmark.ts +67 -0
- package/leaderboard/utils/dataProcessor.ts +33 -0
- package/package.json +2 -1
- package/src/agents/base/base.ts +147 -21
- package/src/agents/base/prompt.ts +28 -0
- package/src/agents/index.ts +3 -0
- package/src/agents/patcher/patcher.ts +6 -4
- package/src/agents/setup/setup.ts +56 -0
- package/src/agents/tools/agentCall.ts +6 -2
- package/src/agents/tools/aiClient.ts +74 -8
- package/src/agents/tools/execCommand.ts +13 -14
- package/src/agents/tools/executeScript/README.md +16 -0
- package/src/agents/tools/index.ts +2 -0
- package/src/agents/tools/list.ts +73 -16
- package/src/agents/tools/startAgentTask.ts +109 -0
- package/src/agents/tools/textSearch.ts +1 -1
- package/src/agents/tools/visionTool.ts +31 -2
- package/src/agents/tools/ycmd/client.ts +608 -0
- package/src/agents/tools/ycmd/definitions.ts +294 -0
- package/src/agents/tools/ycmd/detection.ts +211 -0
- package/src/agents/tools/ycmd/index.ts +11 -0
- package/src/agents/tools/ycmd/installer.ts +251 -0
- package/src/agents/tools/ycmd/server.ts +535 -0
- package/src/agents/tools/ycmd/serverManager.ts +316 -0
- package/src/agents/tools/ycmd/tools/completion.ts +113 -0
- package/src/agents/tools/ycmd/tools/diagnostics.ts +155 -0
- package/src/agents/tools/ycmd/tools/getLocations.ts +173 -0
- package/src/agents/tools/ycmd/tools/goto.ts +169 -0
- package/src/agents/tools/ycmd/tools/refactor.ts +204 -0
- package/src/agents/tools/ycmd/tools/signature.ts +174 -0
- package/src/agents/tools/ycmd/tools/start.ts +95 -0
- package/src/agents/tools/ycmd/utils/pathUtils.ts +59 -0
- package/src/ai.ts +15 -0
- package/src/chat/CliChatService.ts +277 -0
- package/src/chat/modules/AgentModule.ts +980 -0
- package/src/chat/modules/AskModule.ts +98 -0
- package/src/chat/modules/BaseChatModule.ts +66 -0
- package/src/chat/modules/InternalChatModule.ts +174 -0
- package/src/chat/modules/SearchModule.ts +166 -0
- package/src/chat/modules/SetupModule.ts +185 -0
- package/src/chat/modules/SystemModule.ts +120 -0
- package/src/chat/modules/VoiceModule.ts +70 -0
- package/src/chat/modules/index.js +5 -0
- package/src/chat/types.ts +97 -0
- package/src/chat.ts +9 -1
- package/src/chat2.ts +62 -0
- package/src/cli.ts +264 -35
- package/src/clients/anthropic.ts +14 -7
- package/src/clients/gemini.ts +15 -7
- package/src/clients/http.ts +17 -7
- package/src/clients/index.ts +117 -4
- package/src/clients/knowhow.ts +7 -2
- package/src/clients/knowhowMcp.ts +118 -0
- package/src/clients/openai.ts +32 -8
- package/src/clients/types.ts +1 -0
- package/src/clients/xai.ts +17 -5
- package/src/config.ts +30 -5
- package/src/conversion.ts +4 -1
- package/src/login.ts +26 -9
- package/src/microphone.ts +0 -1
- package/src/plugins/downloader/downloader.ts +72 -24
- package/src/plugins/downloader/plugin.ts +3 -1
- package/src/plugins/plugins.ts +3 -0
- package/src/processors/CustomVariables.ts +425 -0
- package/src/processors/HarmonyToolProcessor.ts +264 -0
- package/src/processors/XmlToolCallProcessor.ts +533 -0
- package/src/processors/index.ts +3 -0
- package/src/prompts/KnowhowConfigExamples.ts +376 -0
- package/src/services/KnowhowClient.ts +49 -3
- package/src/services/Mcp.ts +42 -3
- package/src/services/McpServer.ts +14 -4
- package/src/services/McpWebsocketTransport.ts +21 -7
- package/src/services/MessageProcessor.ts +10 -5
- package/src/services/index.ts +5 -0
- package/src/services/script-execution/ScriptExecutor.ts +34 -1
- package/src/services/types.ts +17 -14
- package/src/types.ts +17 -0
- package/src/utils/index.ts +138 -0
- package/tests/XmlToolCallProcessor.test.ts +468 -0
- package/tests/manual/ycmd/debug_diagnostics_test.ts +127 -0
- package/tests/manual/ycmd/fixtures/debug_diagnostics.ts +26 -0
- package/tests/manual/ycmd/fixtures/file_change_test.ts +17 -0
- package/tests/manual/ycmd/minimal_advanced_test.ts +108 -0
- package/tests/manual/ycmd/simple_diagnostics_test.ts +61 -0
- package/tests/manual/ycmd/simple_test.ts +74 -0
- package/tests/manual/ycmd/test-typescript-sample.ts +34 -0
- package/tests/manual/ycmd/test_advanced_features.ts +407 -0
- package/tests/manual/ycmd/test_advanced_with_tools.ts +320 -0
- package/tests/manual/ycmd/test_comprehensive_typescript.ts +179 -0
- package/tests/manual/ycmd/test_diagnostics_file_changes.ts +249 -0
- package/tests/manual/ycmd/test_diagnostics_fix.ts +99 -0
- package/tests/manual/ycmd/test_diagnostics_simple.ts +100 -0
- package/tests/manual/ycmd/test_diagnostics_timing.ts +120 -0
- package/tests/manual/ycmd/test_discover_commands.ts +310 -0
- package/tests/manual/ycmd/test_endpoints.ts +115 -0
- package/tests/manual/ycmd/test_final_comprehensive.ts +218 -0
- package/tests/manual/ycmd/test_final_validation.ts +150 -0
- package/tests/manual/ycmd/test_implementation.js +42 -0
- package/tests/manual/ycmd/test_individual_ycmd_tool.ts +39 -0
- package/tests/manual/ycmd/test_server_manager.ts +52 -0
- package/tests/manual/ycmd/test_simple_debug.ts +86 -0
- package/tests/manual/ycmd/test_tsserver_workflow.js +83 -0
- package/tests/manual/ycmd/test_tsserver_workflow.ts +122 -0
- package/tests/manual/ycmd/test_typescript_simple.ts +48 -0
- package/tests/manual/ycmd/test_typescript_ycmd.ts +105 -0
- package/tests/manual/ycmd/test_workspace_config.ts +90 -0
- package/tests/manual/ycmd/test_ycmd_auto_start.ts +137 -0
- package/tests/manual/ycmd/test_ycmd_comprehensive.ts +73 -0
- package/tests/manual/ycmd/test_ycmd_connection.py +10 -0
- package/tests/manual/ycmd/test_ycmd_direct.ts +142 -0
- package/tests/manual/ycmd/test_ycmd_experiment.ts +48 -0
- package/tests/manual/ycmd/test_ycmd_final.ts +200 -0
- package/tests/manual/ycmd/test_ycmd_fixed.py +18 -0
- package/tests/manual/ycmd/test_ycmd_integration.ts +112 -0
- package/tests/manual/ycmd/test_ycmd_simple.ts +45 -0
- package/tests/manual/ycmd/test_ycmd_usage.py +27 -0
- package/tests/manual/ycmd/working_simple_test.ts +134 -0
- package/ts_build/src/agents/base/base.d.ts +14 -1
- package/ts_build/src/agents/base/base.js +91 -17
- package/ts_build/src/agents/base/base.js.map +1 -1
- package/ts_build/src/agents/base/prompt.d.ts +1 -1
- package/ts_build/src/agents/base/prompt.js +28 -0
- package/ts_build/src/agents/base/prompt.js.map +1 -1
- package/ts_build/src/agents/index.d.ts +2 -0
- package/ts_build/src/agents/index.js +2 -0
- package/ts_build/src/agents/index.js.map +1 -1
- package/ts_build/src/agents/patcher/patcher.js +6 -3
- package/ts_build/src/agents/patcher/patcher.js.map +1 -1
- package/ts_build/src/agents/setup/setup.d.ts +8 -0
- package/ts_build/src/agents/setup/setup.js +59 -0
- package/ts_build/src/agents/setup/setup.js.map +1 -0
- package/ts_build/src/agents/tools/agentCall.js +5 -2
- package/ts_build/src/agents/tools/agentCall.js.map +1 -1
- package/ts_build/src/agents/tools/aiClient.d.ts +6 -5
- package/ts_build/src/agents/tools/aiClient.js +37 -6
- package/ts_build/src/agents/tools/aiClient.js.map +1 -1
- package/ts_build/src/agents/tools/execCommand.d.ts +2 -2
- package/ts_build/src/agents/tools/execCommand.js +5 -6
- package/ts_build/src/agents/tools/execCommand.js.map +1 -1
- package/ts_build/src/agents/tools/executeScript/index.d.ts +1 -1
- package/ts_build/src/agents/tools/index.d.ts +2 -0
- package/ts_build/src/agents/tools/index.js +2 -0
- package/ts_build/src/agents/tools/index.js.map +1 -1
- package/ts_build/src/agents/tools/list.js +66 -16
- package/ts_build/src/agents/tools/list.js.map +1 -1
- package/ts_build/src/agents/tools/startAgentTask.d.ts +13 -0
- package/ts_build/src/agents/tools/startAgentTask.js +74 -0
- package/ts_build/src/agents/tools/startAgentTask.js.map +1 -0
- package/ts_build/src/agents/tools/startChatTask.d.ts +13 -0
- package/ts_build/src/agents/tools/startChatTask.js +73 -0
- package/ts_build/src/agents/tools/startChatTask.js.map +1 -0
- package/ts_build/src/agents/tools/textSearch.js +1 -1
- package/ts_build/src/agents/tools/textSearch.js.map +1 -1
- package/ts_build/src/agents/tools/visionTool.d.ts +1 -1
- package/ts_build/src/agents/tools/visionTool.js +23 -3
- package/ts_build/src/agents/tools/visionTool.js.map +1 -1
- package/ts_build/src/agents/tools/ycmd/client.d.ts +93 -0
- package/ts_build/src/agents/tools/ycmd/client.js +355 -0
- package/ts_build/src/agents/tools/ycmd/client.js.map +1 -0
- package/ts_build/src/agents/tools/ycmd/definitions.d.ts +345 -0
- package/ts_build/src/agents/tools/ycmd/definitions.js +298 -0
- package/ts_build/src/agents/tools/ycmd/definitions.js.map +1 -0
- package/ts_build/src/agents/tools/ycmd/detection.d.ts +11 -0
- package/ts_build/src/agents/tools/ycmd/detection.js +175 -0
- package/ts_build/src/agents/tools/ycmd/detection.js.map +1 -0
- package/ts_build/src/agents/tools/ycmd/index.d.ts +8 -0
- package/ts_build/src/agents/tools/ycmd/index.js +20 -0
- package/ts_build/src/agents/tools/ycmd/index.js.map +1 -0
- package/ts_build/src/agents/tools/ycmd/installer.d.ts +19 -0
- package/ts_build/src/agents/tools/ycmd/installer.js +196 -0
- package/ts_build/src/agents/tools/ycmd/installer.js.map +1 -0
- package/ts_build/src/agents/tools/ycmd/server.d.ts +35 -0
- package/ts_build/src/agents/tools/ycmd/server.js +363 -0
- package/ts_build/src/agents/tools/ycmd/server.js.map +1 -0
- package/ts_build/src/agents/tools/ycmd/serverManager.d.ts +39 -0
- package/ts_build/src/agents/tools/ycmd/serverManager.js +210 -0
- package/ts_build/src/agents/tools/ycmd/serverManager.js.map +1 -0
- package/ts_build/src/agents/tools/ycmd/tools/completion.d.ts +22 -0
- package/ts_build/src/agents/tools/ycmd/tools/completion.js +72 -0
- package/ts_build/src/agents/tools/ycmd/tools/completion.js.map +1 -0
- package/ts_build/src/agents/tools/ycmd/tools/diagnostics.d.ts +42 -0
- package/ts_build/src/agents/tools/ycmd/tools/diagnostics.js +88 -0
- package/ts_build/src/agents/tools/ycmd/tools/diagnostics.js.map +1 -0
- package/ts_build/src/agents/tools/ycmd/tools/getLocations.d.ts +22 -0
- package/ts_build/src/agents/tools/ycmd/tools/getLocations.js +142 -0
- package/ts_build/src/agents/tools/ycmd/tools/getLocations.js.map +1 -0
- package/ts_build/src/agents/tools/ycmd/tools/goto.d.ts +20 -0
- package/ts_build/src/agents/tools/ycmd/tools/goto.js +101 -0
- package/ts_build/src/agents/tools/ycmd/tools/goto.js.map +1 -0
- package/ts_build/src/agents/tools/ycmd/tools/refactor.d.ts +32 -0
- package/ts_build/src/agents/tools/ycmd/tools/refactor.js +123 -0
- package/ts_build/src/agents/tools/ycmd/tools/refactor.js.map +1 -0
- package/ts_build/src/agents/tools/ycmd/tools/signature.d.ts +25 -0
- package/ts_build/src/agents/tools/ycmd/tools/signature.js +110 -0
- package/ts_build/src/agents/tools/ycmd/tools/signature.js.map +1 -0
- package/ts_build/src/agents/tools/ycmd/tools/start.d.ts +17 -0
- package/ts_build/src/agents/tools/ycmd/tools/start.js +65 -0
- package/ts_build/src/agents/tools/ycmd/tools/start.js.map +1 -0
- package/ts_build/src/agents/tools/ycmd/utils/pathUtils.d.ts +4 -0
- package/ts_build/src/agents/tools/ycmd/utils/pathUtils.js +67 -0
- package/ts_build/src/agents/tools/ycmd/utils/pathUtils.js.map +1 -0
- package/ts_build/src/ai.d.ts +1 -0
- package/ts_build/src/ai.js +40 -1
- package/ts_build/src/ai.js.map +1 -1
- package/ts_build/src/chat/ChatCommandHandler.d.ts +36 -0
- package/ts_build/src/chat/ChatCommandHandler.js +268 -0
- package/ts_build/src/chat/ChatCommandHandler.js.map +1 -0
- package/ts_build/src/chat/ChatInputManager.d.ts +22 -0
- package/ts_build/src/chat/ChatInputManager.js +85 -0
- package/ts_build/src/chat/ChatInputManager.js.map +1 -0
- package/ts_build/src/chat/ChatManager.d.ts +49 -0
- package/ts_build/src/chat/ChatManager.js +271 -0
- package/ts_build/src/chat/ChatManager.js.map +1 -0
- package/ts_build/src/chat/ChatSession.d.ts +32 -0
- package/ts_build/src/chat/ChatSession.js +3 -0
- package/ts_build/src/chat/ChatSession.js.map +1 -0
- package/ts_build/src/chat/ChatSessionManager.d.ts +19 -0
- package/ts_build/src/chat/ChatSessionManager.js +188 -0
- package/ts_build/src/chat/ChatSessionManager.js.map +1 -0
- package/ts_build/src/chat/ChatStateManager.d.ts +58 -0
- package/ts_build/src/chat/ChatStateManager.js +156 -0
- package/ts_build/src/chat/ChatStateManager.js.map +1 -0
- package/ts_build/src/chat/CliChatService.d.ts +35 -0
- package/ts_build/src/chat/CliChatService.js +201 -0
- package/ts_build/src/chat/CliChatService.js.map +1 -0
- package/ts_build/src/chat/InterruptibleInput.d.ts +20 -0
- package/ts_build/src/chat/InterruptibleInput.js +109 -0
- package/ts_build/src/chat/InterruptibleInput.js.map +1 -0
- package/ts_build/src/chat/interfaces/ChatModule.d.ts +6 -0
- package/ts_build/src/chat/interfaces/ChatModule.js +3 -0
- package/ts_build/src/chat/interfaces/ChatModule.js.map +1 -0
- package/ts_build/src/chat/modules/AgentModule.d.ts +56 -0
- package/ts_build/src/chat/modules/AgentModule.js +705 -0
- package/ts_build/src/chat/modules/AgentModule.js.map +1 -0
- package/ts_build/src/chat/modules/AskModule.d.ts +10 -0
- package/ts_build/src/chat/modules/AskModule.js +63 -0
- package/ts_build/src/chat/modules/AskModule.js.map +1 -0
- package/ts_build/src/chat/modules/BaseChatModule.d.ts +14 -0
- package/ts_build/src/chat/modules/BaseChatModule.js +32 -0
- package/ts_build/src/chat/modules/BaseChatModule.js.map +1 -0
- package/ts_build/src/chat/modules/InternalChatModule.d.ts +24 -0
- package/ts_build/src/chat/modules/InternalChatModule.js +127 -0
- package/ts_build/src/chat/modules/InternalChatModule.js.map +1 -0
- package/ts_build/src/chat/modules/SearchModule.d.ts +12 -0
- package/ts_build/src/chat/modules/SearchModule.js +119 -0
- package/ts_build/src/chat/modules/SearchModule.js.map +1 -0
- package/ts_build/src/chat/modules/SetupModule.d.ts +15 -0
- package/ts_build/src/chat/modules/SetupModule.js +147 -0
- package/ts_build/src/chat/modules/SetupModule.js.map +1 -0
- package/ts_build/src/chat/modules/SystemModule.d.ts +14 -0
- package/ts_build/src/chat/modules/SystemModule.js +90 -0
- package/ts_build/src/chat/modules/SystemModule.js.map +1 -0
- package/ts_build/src/chat/modules/VoiceModule.d.ts +11 -0
- package/ts_build/src/chat/modules/VoiceModule.js +57 -0
- package/ts_build/src/chat/modules/VoiceModule.js.map +1 -0
- package/ts_build/src/chat/types.d.ts +83 -0
- package/ts_build/src/chat/types.js +3 -0
- package/ts_build/src/chat/types.js.map +1 -0
- package/ts_build/src/chat.js +7 -1
- package/ts_build/src/chat.js.map +1 -1
- package/ts_build/src/chat2.d.ts +3 -0
- package/ts_build/src/chat2.js +47 -0
- package/ts_build/src/chat2.js.map +1 -0
- package/ts_build/src/cli.js +218 -37
- package/ts_build/src/cli.js.map +1 -1
- package/ts_build/src/clients/anthropic.d.ts +5 -2
- package/ts_build/src/clients/anthropic.js +12 -7
- package/ts_build/src/clients/anthropic.js.map +1 -1
- package/ts_build/src/clients/gemini.d.ts +6 -3
- package/ts_build/src/clients/gemini.js +13 -7
- package/ts_build/src/clients/gemini.js.map +1 -1
- package/ts_build/src/clients/http.d.ts +1 -0
- package/ts_build/src/clients/http.js +12 -5
- package/ts_build/src/clients/http.js.map +1 -1
- package/ts_build/src/clients/index.d.ts +10 -0
- package/ts_build/src/clients/index.js +74 -4
- package/ts_build/src/clients/index.js.map +1 -1
- package/ts_build/src/clients/knowhow.d.ts +3 -1
- package/ts_build/src/clients/knowhow.js +8 -2
- package/ts_build/src/clients/knowhow.js.map +1 -1
- package/ts_build/src/clients/knowhowMcp.d.ts +20 -0
- package/ts_build/src/clients/knowhowMcp.js +86 -0
- package/ts_build/src/clients/knowhowMcp.js.map +1 -0
- package/ts_build/src/clients/openai.d.ts +5 -2
- package/ts_build/src/clients/openai.js +29 -8
- package/ts_build/src/clients/openai.js.map +1 -1
- package/ts_build/src/clients/types.d.ts +1 -0
- package/ts_build/src/clients/xai.d.ts +5 -2
- package/ts_build/src/clients/xai.js +15 -5
- package/ts_build/src/clients/xai.js.map +1 -1
- package/ts_build/src/config.js +24 -3
- package/ts_build/src/config.js.map +1 -1
- package/ts_build/src/conversion.js +6 -4
- package/ts_build/src/conversion.js.map +1 -1
- package/ts_build/src/login.d.ts +1 -1
- package/ts_build/src/login.js +21 -7
- package/ts_build/src/login.js.map +1 -1
- package/ts_build/src/microphone.js.map +1 -1
- package/ts_build/src/plugins/downloader/downloader.d.ts +4 -5
- package/ts_build/src/plugins/downloader/downloader.js +55 -26
- package/ts_build/src/plugins/downloader/downloader.js.map +1 -1
- package/ts_build/src/plugins/downloader/plugin.js +5 -3
- package/ts_build/src/plugins/downloader/plugin.js.map +1 -1
- package/ts_build/src/plugins/plugins.js +3 -0
- package/ts_build/src/plugins/plugins.js.map +1 -1
- package/ts_build/src/processors/CustomVariables.d.ts +32 -0
- package/ts_build/src/processors/CustomVariables.js +297 -0
- package/ts_build/src/processors/CustomVariables.js.map +1 -0
- package/ts_build/src/processors/HarmonyToolProcessor.d.ts +15 -0
- package/ts_build/src/processors/HarmonyToolProcessor.js +154 -0
- package/ts_build/src/processors/HarmonyToolProcessor.js.map +1 -0
- package/ts_build/src/processors/XmlToolCallProcessor.d.ts +14 -0
- package/ts_build/src/processors/XmlToolCallProcessor.js +357 -0
- package/ts_build/src/processors/XmlToolCallProcessor.js.map +1 -0
- package/ts_build/src/processors/index.d.ts +3 -0
- package/ts_build/src/processors/index.js +7 -1
- package/ts_build/src/processors/index.js.map +1 -1
- package/ts_build/src/prompts/KnowhowConfigExamples.d.ts +2 -0
- package/ts_build/src/prompts/KnowhowConfigExamples.js +379 -0
- package/ts_build/src/prompts/KnowhowConfigExamples.js.map +1 -0
- package/ts_build/src/services/KnowhowClient.d.ts +22 -0
- package/ts_build/src/services/KnowhowClient.js +14 -2
- package/ts_build/src/services/KnowhowClient.js.map +1 -1
- package/ts_build/src/services/Mcp.d.ts +1 -0
- package/ts_build/src/services/Mcp.js +20 -3
- package/ts_build/src/services/Mcp.js.map +1 -1
- package/ts_build/src/services/McpServer.d.ts +1 -1
- package/ts_build/src/services/McpServer.js +8 -4
- package/ts_build/src/services/McpServer.js.map +1 -1
- package/ts_build/src/services/McpWebsocketTransport.js +17 -7
- package/ts_build/src/services/McpWebsocketTransport.js.map +1 -1
- package/ts_build/src/services/MessageProcessor.d.ts +1 -1
- package/ts_build/src/services/MessageProcessor.js +4 -4
- package/ts_build/src/services/MessageProcessor.js.map +1 -1
- package/ts_build/src/services/index.d.ts +2 -0
- package/ts_build/src/services/index.js +4 -0
- package/ts_build/src/services/index.js.map +1 -1
- package/ts_build/src/services/script-execution/ScriptExecutor.d.ts +1 -0
- package/ts_build/src/services/script-execution/ScriptExecutor.js +23 -0
- package/ts_build/src/services/script-execution/ScriptExecutor.js.map +1 -1
- package/ts_build/src/services/types.d.ts +2 -6
- package/ts_build/src/services/types.js +4 -4
- package/ts_build/src/services/types.js.map +1 -1
- package/ts_build/src/types.d.ts +11 -0
- package/ts_build/src/types.js +8 -0
- package/ts_build/src/types.js.map +1 -1
- package/ts_build/src/utils/index.d.ts +2 -0
- package/ts_build/src/utils/index.js +102 -1
- package/ts_build/src/utils/index.js.map +1 -1
- package/ts_build/tests/XmlToolCallProcessor.test.d.ts +1 -0
- package/ts_build/tests/XmlToolCallProcessor.test.js +376 -0
- package/ts_build/tests/XmlToolCallProcessor.test.js.map +1 -0
- package/ts_build/tests/manual/ycmd/debug_diagnostics_test.d.ts +1 -0
- package/ts_build/tests/manual/ycmd/debug_diagnostics_test.js +114 -0
- package/ts_build/tests/manual/ycmd/debug_diagnostics_test.js.map +1 -0
- package/ts_build/tests/manual/ycmd/minimal_advanced_test.d.ts +2 -0
- package/ts_build/tests/manual/ycmd/minimal_advanced_test.js +104 -0
- package/ts_build/tests/manual/ycmd/minimal_advanced_test.js.map +1 -0
- package/ts_build/tests/manual/ycmd/simple_diagnostics_test.d.ts +1 -0
- package/ts_build/tests/manual/ycmd/simple_diagnostics_test.js +74 -0
- package/ts_build/tests/manual/ycmd/simple_diagnostics_test.js.map +1 -0
- package/ts_build/tests/manual/ycmd/simple_test.d.ts +2 -0
- package/ts_build/tests/manual/ycmd/simple_test.js +82 -0
- package/ts_build/tests/manual/ycmd/simple_test.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test-typescript-sample.d.ts +14 -0
- package/ts_build/tests/manual/ycmd/test-typescript-sample.js +20 -0
- package/ts_build/tests/manual/ycmd/test-typescript-sample.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_advanced_features.d.ts +2 -0
- package/ts_build/tests/manual/ycmd/test_advanced_features.js +297 -0
- package/ts_build/tests/manual/ycmd/test_advanced_features.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_advanced_with_tools.d.ts +3 -0
- package/ts_build/tests/manual/ycmd/test_advanced_with_tools.js +262 -0
- package/ts_build/tests/manual/ycmd/test_advanced_with_tools.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_comprehensive_typescript.d.ts +2 -0
- package/ts_build/tests/manual/ycmd/test_comprehensive_typescript.js +186 -0
- package/ts_build/tests/manual/ycmd/test_comprehensive_typescript.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_diagnostics_file_changes.d.ts +1 -0
- package/ts_build/tests/manual/ycmd/test_diagnostics_file_changes.js +174 -0
- package/ts_build/tests/manual/ycmd/test_diagnostics_file_changes.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_diagnostics_fix.d.ts +2 -0
- package/ts_build/tests/manual/ycmd/test_diagnostics_fix.js +106 -0
- package/ts_build/tests/manual/ycmd/test_diagnostics_fix.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_diagnostics_simple.d.ts +1 -0
- package/ts_build/tests/manual/ycmd/test_diagnostics_simple.js +104 -0
- package/ts_build/tests/manual/ycmd/test_diagnostics_simple.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_diagnostics_timing.d.ts +1 -0
- package/ts_build/tests/manual/ycmd/test_diagnostics_timing.js +119 -0
- package/ts_build/tests/manual/ycmd/test_diagnostics_timing.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_discover_commands.d.ts +2 -0
- package/ts_build/tests/manual/ycmd/test_discover_commands.js +243 -0
- package/ts_build/tests/manual/ycmd/test_discover_commands.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_endpoints.d.ts +2 -0
- package/ts_build/tests/manual/ycmd/test_endpoints.js +120 -0
- package/ts_build/tests/manual/ycmd/test_endpoints.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_final_comprehensive.d.ts +2 -0
- package/ts_build/tests/manual/ycmd/test_final_comprehensive.js +221 -0
- package/ts_build/tests/manual/ycmd/test_final_comprehensive.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_final_validation.d.ts +2 -0
- package/ts_build/tests/manual/ycmd/test_final_validation.js +160 -0
- package/ts_build/tests/manual/ycmd/test_final_validation.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_individual_ycmd_tool.d.ts +2 -0
- package/ts_build/tests/manual/ycmd/test_individual_ycmd_tool.js +37 -0
- package/ts_build/tests/manual/ycmd/test_individual_ycmd_tool.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_server_manager.d.ts +1 -0
- package/ts_build/tests/manual/ycmd/test_server_manager.js +38 -0
- package/ts_build/tests/manual/ycmd/test_server_manager.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_simple_debug.d.ts +2 -0
- package/ts_build/tests/manual/ycmd/test_simple_debug.js +99 -0
- package/ts_build/tests/manual/ycmd/test_simple_debug.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_tsserver_workflow.d.ts +1 -0
- package/ts_build/tests/manual/ycmd/test_tsserver_workflow.js +128 -0
- package/ts_build/tests/manual/ycmd/test_tsserver_workflow.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_typescript_simple.d.ts +1 -0
- package/ts_build/tests/manual/ycmd/test_typescript_simple.js +66 -0
- package/ts_build/tests/manual/ycmd/test_typescript_simple.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_typescript_ycmd.d.ts +1 -0
- package/ts_build/tests/manual/ycmd/test_typescript_ycmd.js +105 -0
- package/ts_build/tests/manual/ycmd/test_typescript_ycmd.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_workspace_config.d.ts +1 -0
- package/ts_build/tests/manual/ycmd/test_workspace_config.js +89 -0
- package/ts_build/tests/manual/ycmd/test_workspace_config.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_ycmd_auto_start.d.ts +2 -0
- package/ts_build/tests/manual/ycmd/test_ycmd_auto_start.js +130 -0
- package/ts_build/tests/manual/ycmd/test_ycmd_auto_start.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_ycmd_comprehensive.d.ts +1 -0
- package/ts_build/tests/manual/ycmd/test_ycmd_comprehensive.js +83 -0
- package/ts_build/tests/manual/ycmd/test_ycmd_comprehensive.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_ycmd_direct.d.ts +2 -0
- package/ts_build/tests/manual/ycmd/test_ycmd_direct.js +149 -0
- package/ts_build/tests/manual/ycmd/test_ycmd_direct.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_ycmd_experiment.d.ts +15 -0
- package/ts_build/tests/manual/ycmd/test_ycmd_experiment.js +58 -0
- package/ts_build/tests/manual/ycmd/test_ycmd_experiment.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_ycmd_final.d.ts +2 -0
- package/ts_build/tests/manual/ycmd/test_ycmd_final.js +195 -0
- package/ts_build/tests/manual/ycmd/test_ycmd_final.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_ycmd_integration.d.ts +3 -0
- package/ts_build/tests/manual/ycmd/test_ycmd_integration.js +110 -0
- package/ts_build/tests/manual/ycmd/test_ycmd_integration.js.map +1 -0
- package/ts_build/tests/manual/ycmd/test_ycmd_simple.d.ts +2 -0
- package/ts_build/tests/manual/ycmd/test_ycmd_simple.js +36 -0
- package/ts_build/tests/manual/ycmd/test_ycmd_simple.js.map +1 -0
- package/ts_build/tests/manual/ycmd/working_simple_test.d.ts +2 -0
- package/ts_build/tests/manual/ycmd/working_simple_test.js +134 -0
- package/ts_build/tests/manual/ycmd/working_simple_test.js.map +1 -0
- package/tsconfig.json +3 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ToolsService } from "../../services/Tools";
|
|
2
2
|
import {
|
|
3
3
|
GenericClient,
|
|
4
4
|
CompletionOptions,
|
|
@@ -6,31 +6,97 @@ import {
|
|
|
6
6
|
EmbeddingOptions,
|
|
7
7
|
EmbeddingResponse,
|
|
8
8
|
} from "../../clients/types";
|
|
9
|
+
import { services } from "../../services";
|
|
9
10
|
|
|
10
11
|
export function createAiCompletion(
|
|
12
|
+
this: ToolsService,
|
|
11
13
|
provider: string,
|
|
12
14
|
options: CompletionOptions
|
|
13
15
|
): Promise<CompletionResponse> {
|
|
14
|
-
|
|
16
|
+
// Get context from bound ToolsService
|
|
17
|
+
const toolService = (
|
|
18
|
+
this instanceof ToolsService ? this : services().Tools
|
|
19
|
+
) as ToolsService;
|
|
20
|
+
|
|
21
|
+
const toolContext = toolService.getContext();
|
|
22
|
+
const { Clients: contextClients } = toolContext;
|
|
23
|
+
|
|
24
|
+
if (!contextClients) {
|
|
25
|
+
throw new Error("Clients not available in tool context");
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
return contextClients.createCompletion(provider, options);
|
|
15
29
|
}
|
|
16
30
|
|
|
17
31
|
export function createEmbedding(
|
|
32
|
+
this: ToolsService,
|
|
18
33
|
provider: string,
|
|
19
34
|
options: EmbeddingOptions
|
|
20
35
|
): Promise<EmbeddingResponse> {
|
|
21
|
-
|
|
36
|
+
// Get context from bound ToolsService
|
|
37
|
+
const toolService = (
|
|
38
|
+
this instanceof ToolsService ? this : services().Tools
|
|
39
|
+
) as ToolsService;
|
|
40
|
+
|
|
41
|
+
const toolContext = toolService.getContext();
|
|
42
|
+
const { Clients: contextClients } = toolContext;
|
|
43
|
+
|
|
44
|
+
if (!contextClients) {
|
|
45
|
+
throw new Error("Clients not available in tool context");
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return contextClients.createEmbedding(provider, options);
|
|
22
49
|
}
|
|
23
50
|
|
|
24
51
|
export async function listModelsForProvider(
|
|
52
|
+
this: ToolsService,
|
|
25
53
|
provider: string
|
|
26
54
|
): Promise<string[]> {
|
|
27
|
-
|
|
55
|
+
// Get context from bound ToolsService
|
|
56
|
+
const toolService = (
|
|
57
|
+
this instanceof ToolsService ? this : services().Tools
|
|
58
|
+
) as ToolsService;
|
|
59
|
+
|
|
60
|
+
const toolContext = toolService.getContext();
|
|
61
|
+
const { Clients: contextClients } = toolContext;
|
|
62
|
+
|
|
63
|
+
if (!contextClients) {
|
|
64
|
+
throw new Error("Clients not available in tool context");
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
return contextClients.getRegisteredModels(provider);
|
|
28
68
|
}
|
|
29
69
|
|
|
30
|
-
export async function listAllModels(
|
|
31
|
-
|
|
70
|
+
export async function listAllModels(
|
|
71
|
+
this: ToolsService
|
|
72
|
+
): Promise<Record<string, string[]>> {
|
|
73
|
+
// Get context from bound ToolsService
|
|
74
|
+
const toolService = (
|
|
75
|
+
this instanceof ToolsService ? this : services().Tools
|
|
76
|
+
) as ToolsService;
|
|
77
|
+
|
|
78
|
+
const toolContext = toolService.getContext();
|
|
79
|
+
const { Clients: contextClients } = toolContext;
|
|
80
|
+
|
|
81
|
+
if (!contextClients) {
|
|
82
|
+
throw new Error("Clients not available in tool context");
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
return contextClients.listAllModels();
|
|
32
86
|
}
|
|
33
87
|
|
|
34
|
-
export async function listAllProviders(): Promise<string[]> {
|
|
35
|
-
|
|
88
|
+
export async function listAllProviders(this: ToolsService): Promise<string[]> {
|
|
89
|
+
// Get context from bound ToolsService
|
|
90
|
+
const toolService = (
|
|
91
|
+
this instanceof ToolsService ? this : services().Tools
|
|
92
|
+
) as ToolsService;
|
|
93
|
+
|
|
94
|
+
const toolContext = toolService.getContext();
|
|
95
|
+
const { Clients: contextClients } = toolContext;
|
|
96
|
+
|
|
97
|
+
if (!contextClients) {
|
|
98
|
+
throw new Error("Clients not available in tool context");
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
return contextClients.listAllProviders();
|
|
36
102
|
}
|
|
@@ -4,9 +4,9 @@ import { promisify } from "util";
|
|
|
4
4
|
const execAsync = promisify(exec);
|
|
5
5
|
|
|
6
6
|
export interface ExecCommandOptions {
|
|
7
|
-
timeout?: number; // Timeout in milliseconds
|
|
8
|
-
|
|
9
|
-
waitForCompletion?: boolean; // Whether to wait for full completion (default:
|
|
7
|
+
timeout?: number; // Timeout in milliseconds (default: 5000)
|
|
8
|
+
continueInBackground?: boolean; // Whether to let command continue in background on timeout (default: false)
|
|
9
|
+
waitForCompletion?: boolean; // Whether to wait for full completion regardless of timeout (default: false)
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
// Enhanced exec function with timeout support
|
|
@@ -19,13 +19,10 @@ const execWithTimeout = async (
|
|
|
19
19
|
timedOut: boolean;
|
|
20
20
|
killed: boolean;
|
|
21
21
|
}> => {
|
|
22
|
-
const { timeout,
|
|
22
|
+
const { timeout = 5000, continueInBackground = false, waitForCompletion = false } = options;
|
|
23
23
|
|
|
24
|
-
// If
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
if (!timeout || waitForCompletion) {
|
|
28
|
-
// Default behavior - wait for completion
|
|
24
|
+
// If waitForCompletion is explicitly true, ignore timeout and wait indefinitely
|
|
25
|
+
if (waitForCompletion === true) {
|
|
29
26
|
try {
|
|
30
27
|
const result = await execAsync(command);
|
|
31
28
|
return { ...result, timedOut: false, killed: false };
|
|
@@ -39,7 +36,7 @@ const execWithTimeout = async (
|
|
|
39
36
|
}
|
|
40
37
|
}
|
|
41
38
|
|
|
42
|
-
// Timeout behavior
|
|
39
|
+
// Timeout behavior when waitForCompletion is false
|
|
43
40
|
return new Promise((resolve) => {
|
|
44
41
|
const childProcess = exec(command, (error, stdout, stderr) => {
|
|
45
42
|
if (error && !error.killed) {
|
|
@@ -60,7 +57,8 @@ const execWithTimeout = async (
|
|
|
60
57
|
});
|
|
61
58
|
|
|
62
59
|
const timeoutId = setTimeout(() => {
|
|
63
|
-
if (
|
|
60
|
+
if (!continueInBackground) {
|
|
61
|
+
// Kill the process if continueInBackground is false (default behavior)
|
|
64
62
|
childProcess.kill("SIGTERM");
|
|
65
63
|
// Force kill after additional 5 seconds if still running
|
|
66
64
|
setTimeout(() => {
|
|
@@ -75,6 +73,7 @@ const execWithTimeout = async (
|
|
|
75
73
|
killed: true,
|
|
76
74
|
});
|
|
77
75
|
} else {
|
|
76
|
+
// Let command continue in background
|
|
78
77
|
resolve({
|
|
79
78
|
stdout: "",
|
|
80
79
|
stderr: `Command timed out after ${timeout}ms but is still running in background`,
|
|
@@ -95,7 +94,7 @@ const execWithTimeout = async (
|
|
|
95
94
|
export const execCommand = async (
|
|
96
95
|
command: string,
|
|
97
96
|
timeout?: number,
|
|
98
|
-
|
|
97
|
+
continueInBackground?: boolean,
|
|
99
98
|
waitForCompletion?: boolean
|
|
100
99
|
): Promise<string> => {
|
|
101
100
|
let output = "";
|
|
@@ -103,7 +102,7 @@ export const execCommand = async (
|
|
|
103
102
|
|
|
104
103
|
const { stdout, stderr, timedOut, killed } = await execWithTimeout(command, {
|
|
105
104
|
timeout,
|
|
106
|
-
|
|
105
|
+
continueInBackground,
|
|
107
106
|
waitForCompletion,
|
|
108
107
|
});
|
|
109
108
|
|
|
@@ -133,4 +132,4 @@ export const execCommand = async (
|
|
|
133
132
|
: "";
|
|
134
133
|
|
|
135
134
|
return trimmedOutput.join("\n").slice(0, maxCharacters) + trimmedMessage;
|
|
136
|
-
};
|
|
135
|
+
};
|
|
@@ -2,6 +2,22 @@
|
|
|
2
2
|
|
|
3
3
|
The `executeScript` tool provides secure, isolated execution of TypeScript scripts with access to the Knowhow platform's tools and AI capabilities.
|
|
4
4
|
|
|
5
|
+
## Requirements
|
|
6
|
+
|
|
7
|
+
### Node.js Version and Configuration
|
|
8
|
+
|
|
9
|
+
**Important**: For Node.js 20.x and later, the `--no-node-snapshot` flag is required due to isolated-vm compatibility requirements.
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# Required for Node.js 20+
|
|
13
|
+
node --no-node-snapshot your-app.js
|
|
14
|
+
|
|
15
|
+
# Or set in package.json scripts
|
|
16
|
+
"scripts": {
|
|
17
|
+
"start": "node --no-node-snapshot dist/index.js"
|
|
18
|
+
}
|
|
19
|
+
```
|
|
20
|
+
|
|
5
21
|
## Features
|
|
6
22
|
|
|
7
23
|
- **Secure Sandbox**: Scripts run in isolated-vm with no access to Node.js APIs
|
package/src/agents/tools/list.ts
CHANGED
|
@@ -5,9 +5,11 @@ import { Plugins } from "../../plugins/plugins";
|
|
|
5
5
|
const pluginNames = Plugins.listPlugins().join(", ");
|
|
6
6
|
import * as github from "./github/definitions";
|
|
7
7
|
import * as asana from "./asana/definitions";
|
|
8
|
+
import * as ycmd from "./ycmd/definitions";
|
|
8
9
|
import * as language from "./language/definitions";
|
|
9
10
|
import { googleSearchDefinition } from "./googleSearch";
|
|
10
11
|
import { executeScriptDefinition } from "./executeScript/definition";
|
|
12
|
+
import { startAgentTaskDefinition } from "./startAgentTask";
|
|
11
13
|
|
|
12
14
|
export const includedTools = [
|
|
13
15
|
{
|
|
@@ -51,17 +53,17 @@ export const includedTools = [
|
|
|
51
53
|
timeout: {
|
|
52
54
|
type: "number",
|
|
53
55
|
description:
|
|
54
|
-
"Timeout in milliseconds (optional). If not provided,
|
|
56
|
+
"Timeout in milliseconds (optional). If not provided, defaults to 5000ms.",
|
|
55
57
|
},
|
|
56
|
-
|
|
58
|
+
continueInBackground: {
|
|
57
59
|
type: "boolean",
|
|
58
60
|
description:
|
|
59
|
-
"Whether to
|
|
61
|
+
"Whether to let command continue in background on timeout (default: false). If false, command is killed on timeout.",
|
|
60
62
|
},
|
|
61
63
|
waitForCompletion: {
|
|
62
64
|
type: "boolean",
|
|
63
65
|
description:
|
|
64
|
-
"Whether to wait for full completion regardless of timeout (default:
|
|
66
|
+
"Whether to wait for full completion regardless of timeout (default: false). When true, overrides timeout behavior.",
|
|
65
67
|
},
|
|
66
68
|
},
|
|
67
69
|
required: ["command"],
|
|
@@ -141,6 +143,16 @@ export const includedTools = [
|
|
|
141
143
|
type: "string",
|
|
142
144
|
description: "The prompt related to the image",
|
|
143
145
|
},
|
|
146
|
+
provider: {
|
|
147
|
+
type: "string",
|
|
148
|
+
description: "The AI provider to use (default: 'openai')",
|
|
149
|
+
default: "openai",
|
|
150
|
+
},
|
|
151
|
+
model: {
|
|
152
|
+
type: "string",
|
|
153
|
+
description: "The model to use (default: 'gpt-4o')",
|
|
154
|
+
default: "gpt-4o",
|
|
155
|
+
},
|
|
144
156
|
},
|
|
145
157
|
required: ["imageUrl", "question"],
|
|
146
158
|
},
|
|
@@ -366,7 +378,7 @@ export const includedTools = [
|
|
|
366
378
|
type: "function",
|
|
367
379
|
function: {
|
|
368
380
|
name: "createAiCompletion",
|
|
369
|
-
description: "Create a completion using the knowhow
|
|
381
|
+
description: "Create a completion using the knowhow AI client",
|
|
370
382
|
parameters: {
|
|
371
383
|
type: "object",
|
|
372
384
|
positional: true,
|
|
@@ -374,39 +386,82 @@ export const includedTools = [
|
|
|
374
386
|
provider: {
|
|
375
387
|
type: "string",
|
|
376
388
|
description:
|
|
377
|
-
"The AI provider to use (e.g., 'openai', 'anthropic'). Use listAllModels to
|
|
389
|
+
"The AI provider to use (e.g., 'openai', 'anthropic'). Use listAllModels to discover providers.",
|
|
378
390
|
},
|
|
391
|
+
|
|
379
392
|
options: {
|
|
380
393
|
type: "object",
|
|
381
|
-
description: "
|
|
394
|
+
description: "Provider-specific completion options",
|
|
382
395
|
properties: {
|
|
383
|
-
model: {
|
|
396
|
+
model: {
|
|
397
|
+
type: "string",
|
|
398
|
+
description: "The model to use",
|
|
399
|
+
},
|
|
400
|
+
|
|
384
401
|
messages: {
|
|
385
402
|
type: "array",
|
|
386
|
-
description: "The
|
|
387
|
-
items: {
|
|
388
|
-
|
|
389
|
-
properties: {
|
|
390
|
-
role: { type: "string" },
|
|
391
|
-
content: { type: "string" },
|
|
392
|
-
},
|
|
393
|
-
},
|
|
403
|
+
description: "The chat history for the completion",
|
|
404
|
+
items: { $ref: "#/definitions/message" },
|
|
405
|
+
minItems: 1,
|
|
394
406
|
},
|
|
407
|
+
|
|
395
408
|
max_tokens: {
|
|
396
409
|
type: "number",
|
|
397
410
|
description: "Maximum number of tokens to generate",
|
|
398
411
|
},
|
|
412
|
+
|
|
413
|
+
tools: {
|
|
414
|
+
type: "array",
|
|
415
|
+
description: "Tool definitions the model may call",
|
|
416
|
+
items: { $ref: "#/definitions/tool" },
|
|
417
|
+
},
|
|
399
418
|
},
|
|
400
419
|
required: ["model", "messages"],
|
|
401
420
|
},
|
|
402
421
|
},
|
|
403
422
|
required: ["provider"],
|
|
404
423
|
},
|
|
424
|
+
|
|
405
425
|
returns: {
|
|
406
426
|
type: "object",
|
|
407
427
|
description: "The completion response from the AI provider",
|
|
408
428
|
},
|
|
409
429
|
},
|
|
430
|
+
|
|
431
|
+
definitions: {
|
|
432
|
+
message: {
|
|
433
|
+
type: "object",
|
|
434
|
+
properties: {
|
|
435
|
+
role: {
|
|
436
|
+
type: "string",
|
|
437
|
+
enum: ["system", "user", "assistant", "tool"],
|
|
438
|
+
},
|
|
439
|
+
content: { type: "string" },
|
|
440
|
+
},
|
|
441
|
+
required: ["role", "content"],
|
|
442
|
+
},
|
|
443
|
+
|
|
444
|
+
tool: {
|
|
445
|
+
type: "object",
|
|
446
|
+
properties: {
|
|
447
|
+
type: {
|
|
448
|
+
type: "string",
|
|
449
|
+
enum: ["function"],
|
|
450
|
+
},
|
|
451
|
+
function: {
|
|
452
|
+
type: "object",
|
|
453
|
+
properties: {
|
|
454
|
+
name: { type: "string" },
|
|
455
|
+
description: { type: "string" },
|
|
456
|
+
parameters: { type: "object" },
|
|
457
|
+
returns: { type: "object" },
|
|
458
|
+
},
|
|
459
|
+
required: ["name", "description", "parameters"],
|
|
460
|
+
},
|
|
461
|
+
},
|
|
462
|
+
required: ["type", "function"],
|
|
463
|
+
},
|
|
464
|
+
},
|
|
410
465
|
},
|
|
411
466
|
|
|
412
467
|
{
|
|
@@ -555,7 +610,9 @@ export const includedTools = [
|
|
|
555
610
|
},
|
|
556
611
|
executeScriptDefinition,
|
|
557
612
|
googleSearchDefinition,
|
|
613
|
+
startAgentTaskDefinition,
|
|
558
614
|
...asana.definitions,
|
|
615
|
+
...ycmd.definitions,
|
|
559
616
|
...github.definitions,
|
|
560
617
|
...language.definitions,
|
|
561
618
|
] as Tool[];
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { Tool } from "../../clients/types";
|
|
2
|
+
import { execCommand } from "./execCommand";
|
|
3
|
+
|
|
4
|
+
interface StartAgentTaskParams {
|
|
5
|
+
messageId: string;
|
|
6
|
+
prompt: string;
|
|
7
|
+
provider?: string;
|
|
8
|
+
model?: string;
|
|
9
|
+
agentName?: string;
|
|
10
|
+
maxTimeLimit?: number;
|
|
11
|
+
maxSpendLimit?: number;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Creates a chat task in Knowhow based on a message ID and prompt.
|
|
16
|
+
* This allows external agents to start tasks that can receive real-time updates.
|
|
17
|
+
*/
|
|
18
|
+
export async function startAgentTask(params: StartAgentTaskParams) {
|
|
19
|
+
const {
|
|
20
|
+
messageId,
|
|
21
|
+
prompt,
|
|
22
|
+
provider,
|
|
23
|
+
model,
|
|
24
|
+
agentName,
|
|
25
|
+
maxTimeLimit,
|
|
26
|
+
maxSpendLimit,
|
|
27
|
+
} = params;
|
|
28
|
+
|
|
29
|
+
if (!messageId) {
|
|
30
|
+
throw new Error("messageId is required to create a chat task");
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
if (!prompt) {
|
|
34
|
+
throw new Error("prompt is required to create a chat task");
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const escapedPrompt = prompt.replace(/"/g, '\\"');
|
|
38
|
+
|
|
39
|
+
// Build the command with all optional parameters
|
|
40
|
+
let command = `knowhow agent --input "${escapedPrompt}" --message-id ${messageId}`;
|
|
41
|
+
|
|
42
|
+
if (provider) {
|
|
43
|
+
command += ` --provider ${provider}`;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
if (model) {
|
|
47
|
+
command += ` --model "${model}"`;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
if (agentName) {
|
|
51
|
+
command += ` --agent-name "${agentName}"`;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
if (maxTimeLimit !== undefined) {
|
|
55
|
+
command += ` --max-time-limit ${maxTimeLimit}`;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (maxSpendLimit !== undefined) {
|
|
59
|
+
command += ` --max-spend-limit ${maxSpendLimit}`;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return execCommand(command, 60000, true);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export const startAgentTaskDefinition: Tool = {
|
|
66
|
+
type: "function",
|
|
67
|
+
function: {
|
|
68
|
+
name: "startAgentTask",
|
|
69
|
+
description:
|
|
70
|
+
"Create a new chat task in Knowhow based on a message ID and prompt. This allows worker agents to start tasks and update knowhow's backend with all CLI agent options",
|
|
71
|
+
parameters: {
|
|
72
|
+
type: "object",
|
|
73
|
+
properties: {
|
|
74
|
+
messageId: {
|
|
75
|
+
type: "string",
|
|
76
|
+
description:
|
|
77
|
+
"The ID of the message in Knowhow to associate with this task",
|
|
78
|
+
},
|
|
79
|
+
prompt: {
|
|
80
|
+
type: "string",
|
|
81
|
+
description: "The prompt or description for the task to be created",
|
|
82
|
+
},
|
|
83
|
+
provider: {
|
|
84
|
+
type: "string",
|
|
85
|
+
description:
|
|
86
|
+
"AI provider (openai, anthropic, google, xai). Default: openai",
|
|
87
|
+
},
|
|
88
|
+
model: {
|
|
89
|
+
type: "string",
|
|
90
|
+
description: "Specific model for the provider",
|
|
91
|
+
},
|
|
92
|
+
agentName: {
|
|
93
|
+
type: "string",
|
|
94
|
+
description: "Which agent to use. Default: Patcher",
|
|
95
|
+
},
|
|
96
|
+
maxTimeLimit: {
|
|
97
|
+
type: "number",
|
|
98
|
+
description: "Time limit for agent execution in minutes. Default: 30",
|
|
99
|
+
},
|
|
100
|
+
maxSpendLimit: {
|
|
101
|
+
type: "number",
|
|
102
|
+
description: "Cost limit for agent execution in dollars. Default: 10",
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
required: ["messageId", "prompt"],
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
|
|
@@ -3,7 +3,7 @@ import { execCommand } from "./execCommand";
|
|
|
3
3
|
|
|
4
4
|
export async function textSearch(searchTerm) {
|
|
5
5
|
try {
|
|
6
|
-
const command = `ag -m 3 "${searchTerm}"`;
|
|
6
|
+
const command = `ag -m 3 -Q "${searchTerm}"`;
|
|
7
7
|
const output = await execCommand(command);
|
|
8
8
|
return output;
|
|
9
9
|
} catch (err) {
|
|
@@ -1,6 +1,35 @@
|
|
|
1
|
+
import { services, ToolsService } from "../../services";
|
|
1
2
|
import { askGptVision } from "../../ai";
|
|
3
|
+
import { Models } from "../../types";
|
|
2
4
|
|
|
3
|
-
export async function visionTool(
|
|
4
|
-
|
|
5
|
+
export async function visionTool(
|
|
6
|
+
imageUrl: string,
|
|
7
|
+
question: string,
|
|
8
|
+
provider = "openai",
|
|
9
|
+
model = Models.openai.GPT_4o
|
|
10
|
+
) {
|
|
11
|
+
const toolService =
|
|
12
|
+
this instanceof ToolsService ? (this as ToolsService) : services().Tools;
|
|
13
|
+
|
|
14
|
+
const { Clients } = toolService.getContext();
|
|
15
|
+
|
|
16
|
+
const response = await Clients.createCompletion(provider, {
|
|
17
|
+
model,
|
|
18
|
+
max_tokens: 2500,
|
|
19
|
+
messages: [
|
|
20
|
+
{
|
|
21
|
+
role: "user",
|
|
22
|
+
content: [
|
|
23
|
+
{ type: "text", text: question },
|
|
24
|
+
{
|
|
25
|
+
type: "image_url",
|
|
26
|
+
image_url: {
|
|
27
|
+
url: imageUrl,
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
],
|
|
31
|
+
},
|
|
32
|
+
],
|
|
33
|
+
});
|
|
5
34
|
return response.choices[0].message.content;
|
|
6
35
|
}
|