@tyvm/knowhow 0.0.91 → 0.0.93
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/.depcheckrc +0 -1
- package/package.json +9 -6
- package/scripts/check-isolated-deps.sh +69 -0
- package/src/agents/configurable/ConfigAgent.ts +2 -2
- package/src/chat/modules/AgentModule.ts +0 -1
- package/src/chat/types.ts +1 -1
- package/src/clients/gemini.ts +2 -2
- package/src/clients/openai.ts +1 -1
- package/src/clients/xai.ts +1 -1
- package/src/index.ts +7 -19
- package/src/services/EmbeddingsService.ts +70 -0
- package/src/services/KnowhowClient.ts +1 -1
- package/src/services/Mcp.ts +1 -5
- package/src/services/S3.ts +2 -70
- package/src/services/index.ts +4 -4
- package/src/services/modules/index.ts +3 -2
- package/src/services/modules/types.ts +3 -0
- package/tests/unit/modules/moduleLoading.test.ts +5 -0
- package/ts_build/package.json +9 -6
- package/ts_build/src/agents/base/base.js.map +1 -1
- package/ts_build/src/agents/index.js +20 -10
- package/ts_build/src/agents/index.js.map +1 -1
- package/ts_build/src/agents/tools/addInternalTools.js +1 -2
- package/ts_build/src/agents/tools/addInternalTools.js.map +1 -1
- package/ts_build/src/agents/tools/agentCall.js +1 -2
- package/ts_build/src/agents/tools/agentCall.js.map +1 -1
- package/ts_build/src/agents/tools/aiClient.js +10 -11
- package/ts_build/src/agents/tools/aiClient.js.map +1 -1
- package/ts_build/src/agents/tools/askHuman.js +1 -2
- package/ts_build/src/agents/tools/askHuman.js.map +1 -1
- package/ts_build/src/agents/tools/callPlugin.js +1 -2
- package/ts_build/src/agents/tools/callPlugin.js.map +1 -1
- package/ts_build/src/agents/tools/embeddingSearch.js +1 -2
- package/ts_build/src/agents/tools/embeddingSearch.js.map +1 -1
- package/ts_build/src/agents/tools/execCommand.d.ts +0 -1
- package/ts_build/src/agents/tools/execCommand.js +17 -7
- package/ts_build/src/agents/tools/execCommand.js.map +1 -1
- package/ts_build/src/agents/tools/executeScript/examples/dependency-injection-validation.js +2 -2
- package/ts_build/src/agents/tools/executeScript/examples/dependency-injection-validation.js.map +1 -1
- package/ts_build/src/agents/tools/executeScript/examples/quick-test.js +1 -2
- package/ts_build/src/agents/tools/executeScript/examples/quick-test.js.map +1 -1
- package/ts_build/src/agents/tools/executeScript/examples/serialization-test.js +2 -2
- package/ts_build/src/agents/tools/executeScript/examples/serialization-test.js.map +1 -1
- package/ts_build/src/agents/tools/executeScript/examples/test-runner.js +19 -9
- package/ts_build/src/agents/tools/executeScript/examples/test-runner.js.map +1 -1
- package/ts_build/src/agents/tools/executeScript/index.js +1 -2
- package/ts_build/src/agents/tools/executeScript/index.js.map +1 -1
- package/ts_build/src/agents/tools/fileSearch.js +1 -2
- package/ts_build/src/agents/tools/fileSearch.js.map +1 -1
- package/ts_build/src/agents/tools/finalAnswer.js +1 -2
- package/ts_build/src/agents/tools/finalAnswer.js.map +1 -1
- package/ts_build/src/agents/tools/googleSearch.js +2 -2
- package/ts_build/src/agents/tools/googleSearch.js.map +1 -1
- package/ts_build/src/agents/tools/language/definitions.js.map +1 -1
- package/ts_build/src/agents/tools/language/index.js +3 -4
- package/ts_build/src/agents/tools/language/index.js.map +1 -1
- package/ts_build/src/agents/tools/lazy/disableTools.js +1 -2
- package/ts_build/src/agents/tools/lazy/disableTools.js.map +1 -1
- package/ts_build/src/agents/tools/lazy/enableTools.js +1 -2
- package/ts_build/src/agents/tools/lazy/enableTools.js.map +1 -1
- package/ts_build/src/agents/tools/lazy/listAvailableTools.js +1 -2
- package/ts_build/src/agents/tools/lazy/listAvailableTools.js.map +1 -1
- package/ts_build/src/agents/tools/lintFile.js +1 -2
- package/ts_build/src/agents/tools/lintFile.js.map +1 -1
- package/ts_build/src/agents/tools/list.js +17 -7
- package/ts_build/src/agents/tools/list.js.map +1 -1
- package/ts_build/src/agents/tools/loadWebpage.js +1 -2
- package/ts_build/src/agents/tools/loadWebpage.js.map +1 -1
- package/ts_build/src/agents/tools/mcp/connectMcpServer.js +1 -2
- package/ts_build/src/agents/tools/mcp/connectMcpServer.js.map +1 -1
- package/ts_build/src/agents/tools/mcp/disconnectMcpServer.js +1 -2
- package/ts_build/src/agents/tools/mcp/disconnectMcpServer.js.map +1 -1
- package/ts_build/src/agents/tools/mcp/listAvailableMcpServers.js +1 -2
- package/ts_build/src/agents/tools/mcp/listAvailableMcpServers.js.map +1 -1
- package/ts_build/src/agents/tools/modifyFile.js +18 -9
- package/ts_build/src/agents/tools/modifyFile.js.map +1 -1
- package/ts_build/src/agents/tools/patch.js +24 -15
- package/ts_build/src/agents/tools/patch.js.map +1 -1
- package/ts_build/src/agents/tools/readBlocks.js +18 -9
- package/ts_build/src/agents/tools/readBlocks.js.map +1 -1
- package/ts_build/src/agents/tools/readFile.js +18 -9
- package/ts_build/src/agents/tools/readFile.js.map +1 -1
- package/ts_build/src/agents/tools/scanFile.js +18 -9
- package/ts_build/src/agents/tools/scanFile.js.map +1 -1
- package/ts_build/src/agents/tools/startAgentTask.js +19 -9
- package/ts_build/src/agents/tools/startAgentTask.js.map +1 -1
- package/ts_build/src/agents/tools/stringReplace.js +18 -9
- package/ts_build/src/agents/tools/stringReplace.js.map +1 -1
- package/ts_build/src/agents/tools/textSearch.js +1 -2
- package/ts_build/src/agents/tools/textSearch.js.map +1 -1
- package/ts_build/src/agents/tools/visionTool.js +1 -2
- package/ts_build/src/agents/tools/visionTool.js.map +1 -1
- package/ts_build/src/agents/tools/writeFile.js +19 -10
- package/ts_build/src/agents/tools/writeFile.js.map +1 -1
- package/ts_build/src/agents/tools/ycmd/client.js +19 -9
- package/ts_build/src/agents/tools/ycmd/client.js.map +1 -1
- package/ts_build/src/agents/tools/ycmd/detection.js +17 -7
- package/ts_build/src/agents/tools/ycmd/detection.js.map +1 -1
- package/ts_build/src/agents/tools/ycmd/installer.js +17 -7
- package/ts_build/src/agents/tools/ycmd/installer.js.map +1 -1
- package/ts_build/src/agents/tools/ycmd/server.js +17 -7
- package/ts_build/src/agents/tools/ycmd/server.js.map +1 -1
- package/ts_build/src/agents/tools/ycmd/serverManager.js +17 -7
- package/ts_build/src/agents/tools/ycmd/serverManager.js.map +1 -1
- package/ts_build/src/agents/tools/ycmd/tools/completion.js +1 -2
- package/ts_build/src/agents/tools/ycmd/tools/completion.js.map +1 -1
- package/ts_build/src/agents/tools/ycmd/tools/diagnostics.js +1 -2
- package/ts_build/src/agents/tools/ycmd/tools/diagnostics.js.map +1 -1
- package/ts_build/src/agents/tools/ycmd/tools/getLocations.js +19 -10
- package/ts_build/src/agents/tools/ycmd/tools/getLocations.js.map +1 -1
- package/ts_build/src/agents/tools/ycmd/tools/goto.js +1 -2
- package/ts_build/src/agents/tools/ycmd/tools/goto.js.map +1 -1
- package/ts_build/src/agents/tools/ycmd/tools/refactor.js +1 -2
- package/ts_build/src/agents/tools/ycmd/tools/refactor.js.map +1 -1
- package/ts_build/src/agents/tools/ycmd/tools/signature.js +1 -2
- package/ts_build/src/agents/tools/ycmd/tools/signature.js.map +1 -1
- package/ts_build/src/agents/tools/ycmd/tools/start.js +1 -2
- package/ts_build/src/agents/tools/ycmd/tools/start.js.map +1 -1
- package/ts_build/src/agents/tools/ycmd/utils/pathUtils.js +21 -12
- package/ts_build/src/agents/tools/ycmd/utils/pathUtils.js.map +1 -1
- package/ts_build/src/ai.js +25 -15
- package/ts_build/src/ai.js.map +1 -1
- package/ts_build/src/auth/browserLogin.js +20 -10
- package/ts_build/src/auth/browserLogin.js.map +1 -1
- package/ts_build/src/auth/spinner.js.map +1 -1
- package/ts_build/src/chat/CliChatService.js.map +1 -1
- package/ts_build/src/chat/modules/AgentModule.js +17 -7
- package/ts_build/src/chat/modules/AgentModule.js.map +1 -1
- package/ts_build/src/chat/modules/AskModule.js.map +1 -1
- package/ts_build/src/chat/modules/BaseChatModule.js.map +1 -1
- package/ts_build/src/chat/modules/CustomCommandsModule.js.map +1 -1
- package/ts_build/src/chat/modules/InternalChatModule.js.map +1 -1
- package/ts_build/src/chat/modules/RendererModule.js.map +1 -1
- package/ts_build/src/chat/modules/SearchModule.js.map +1 -1
- package/ts_build/src/chat/modules/SessionsModule.js +17 -7
- package/ts_build/src/chat/modules/SessionsModule.js.map +1 -1
- package/ts_build/src/chat/modules/SetupModule.js.map +1 -1
- package/ts_build/src/chat/modules/ShellCommandModule.js.map +1 -1
- package/ts_build/src/chat/modules/SystemModule.js.map +1 -1
- package/ts_build/src/chat/modules/VoiceModule.js.map +1 -1
- package/ts_build/src/chat/renderer/CompactRenderer.js.map +1 -1
- package/ts_build/src/chat/renderer/ConsoleRenderer.js.map +1 -1
- package/ts_build/src/chat/renderer/FancyRenderer.js.map +1 -1
- package/ts_build/src/chat/renderer/loadRenderer.js +26 -18
- package/ts_build/src/chat/renderer/loadRenderer.js.map +1 -1
- package/ts_build/src/chat/renderer/messagesToRenderEvents.js +1 -2
- package/ts_build/src/chat/renderer/messagesToRenderEvents.js.map +1 -1
- package/ts_build/src/chat/types.d.ts +1 -1
- package/ts_build/src/chat.js +1 -2
- package/ts_build/src/chat.js.map +1 -1
- package/ts_build/src/cli.js +17 -7
- package/ts_build/src/cli.js.map +1 -1
- package/ts_build/src/clients/anthropic.d.ts +74 -4
- package/ts_build/src/clients/anthropic.js.map +1 -1
- package/ts_build/src/clients/contextLimits.js +2 -2
- package/ts_build/src/clients/contextLimits.js.map +1 -1
- package/ts_build/src/clients/gemini.js +18 -8
- package/ts_build/src/clients/gemini.js.map +1 -1
- package/ts_build/src/clients/http.js.map +1 -1
- package/ts_build/src/clients/index.js.map +1 -1
- package/ts_build/src/clients/knowhowMcp.js.map +1 -1
- package/ts_build/src/clients/openai.d.ts +199 -1
- package/ts_build/src/clients/openai.js +1 -1
- package/ts_build/src/clients/openai.js.map +1 -1
- package/ts_build/src/clients/pricing/anthropic.d.ts +72 -4
- package/ts_build/src/clients/pricing/openai.d.ts +192 -1
- package/ts_build/src/clients/pricing/xai.d.ts +36 -7
- package/ts_build/src/clients/types.d.ts +0 -2
- package/ts_build/src/clients/xai.d.ts +38 -7
- package/ts_build/src/clients/xai.js +1 -1
- package/ts_build/src/clients/xai.js.map +1 -1
- package/ts_build/src/config.js +27 -18
- package/ts_build/src/config.js.map +1 -1
- package/ts_build/src/conversion.js +21 -12
- package/ts_build/src/conversion.js.map +1 -1
- package/ts_build/src/dataset/diffs/debug-errors.js.map +1 -1
- package/ts_build/src/dataset/diffs/debug.js.map +1 -1
- package/ts_build/src/dataset/diffs/generate.js +17 -7
- package/ts_build/src/dataset/diffs/generate.js.map +1 -1
- package/ts_build/src/dataset/diffs/jsonl.js.map +1 -1
- package/ts_build/src/dataset/diffs/test.js.map +1 -1
- package/ts_build/src/embeddings.d.ts +1 -1
- package/ts_build/src/embeddings.js +33 -23
- package/ts_build/src/embeddings.js.map +1 -1
- package/ts_build/src/fileSync.js +18 -9
- package/ts_build/src/fileSync.js.map +1 -1
- package/ts_build/src/hashes.js +22 -13
- package/ts_build/src/hashes.js.map +1 -1
- package/ts_build/src/index.js +33 -28
- package/ts_build/src/index.js.map +1 -1
- package/ts_build/src/login.js +3 -4
- package/ts_build/src/login.js.map +1 -1
- package/ts_build/src/microphone.js +24 -15
- package/ts_build/src/microphone.js.map +1 -1
- package/ts_build/src/migrations.js +3 -3
- package/ts_build/src/migrations.js.map +1 -1
- package/ts_build/src/plugins/AgentsMdPlugin.js +17 -7
- package/ts_build/src/plugins/AgentsMdPlugin.js.map +1 -1
- package/ts_build/src/plugins/GitPlugin.js +17 -7
- package/ts_build/src/plugins/GitPlugin.js.map +1 -1
- package/ts_build/src/plugins/LinterPlugin.js.map +1 -1
- package/ts_build/src/plugins/PluginBase.js.map +1 -1
- package/ts_build/src/plugins/SkillsPlugin.js +17 -7
- package/ts_build/src/plugins/SkillsPlugin.js.map +1 -1
- package/ts_build/src/plugins/embedding.js.map +1 -1
- package/ts_build/src/plugins/exec.js.map +1 -1
- package/ts_build/src/plugins/language.js.map +1 -1
- package/ts_build/src/plugins/plugins.d.ts +1 -1
- package/ts_build/src/plugins/plugins.js +18 -9
- package/ts_build/src/plugins/plugins.js.map +1 -1
- package/ts_build/src/plugins/tmux.js.map +1 -1
- package/ts_build/src/plugins/url.js.map +1 -1
- package/ts_build/src/plugins/vim.js.map +1 -1
- package/ts_build/src/processors/Base64ImageDetector.js +17 -7
- package/ts_build/src/processors/Base64ImageDetector.js.map +1 -1
- package/ts_build/src/processors/CustomVariables.js.map +1 -1
- package/ts_build/src/processors/HarmonyToolProcessor.js.map +1 -1
- package/ts_build/src/processors/JsonCompressor.js.map +1 -1
- package/ts_build/src/processors/TokenCompressor.js.map +1 -1
- package/ts_build/src/processors/ToolResponseCache.js.map +1 -1
- package/ts_build/src/processors/XmlToolCallProcessor.js.map +1 -1
- package/ts_build/src/processors/tools/grepToolResponse.js +2 -2
- package/ts_build/src/processors/tools/grepToolResponse.js.map +1 -1
- package/ts_build/src/processors/tools/jqToolResponse.js +19 -9
- package/ts_build/src/processors/tools/jqToolResponse.js.map +1 -1
- package/ts_build/src/processors/tools/listStoredToolResponses.js +2 -2
- package/ts_build/src/processors/tools/listStoredToolResponses.js.map +1 -1
- package/ts_build/src/processors/tools/tailToolResponse.js +2 -2
- package/ts_build/src/processors/tools/tailToolResponse.js.map +1 -1
- package/ts_build/src/services/AgentService.js.map +1 -1
- package/ts_build/src/services/AgentSyncFs.js +17 -7
- package/ts_build/src/services/AgentSyncFs.js.map +1 -1
- package/ts_build/src/services/AgentSyncKnowhowWeb.js.map +1 -1
- package/ts_build/src/services/DockerService.js +17 -7
- package/ts_build/src/services/DockerService.js.map +1 -1
- package/ts_build/src/services/EmbeddingService.d.ts +1 -1
- package/ts_build/src/services/EmbeddingService.js +17 -7
- package/ts_build/src/services/EmbeddingService.js.map +1 -1
- package/ts_build/src/services/EmbeddingsService.d.ts +14 -0
- package/ts_build/src/services/EmbeddingsService.js +33 -0
- package/ts_build/src/services/EmbeddingsService.js.map +1 -0
- package/ts_build/src/services/EventService.d.ts +0 -1
- package/ts_build/src/services/EventService.js.map +1 -1
- package/ts_build/src/services/KnowhowClient.js +3 -3
- package/ts_build/src/services/KnowhowClient.js.map +1 -1
- package/ts_build/src/services/LazyToolsService.js.map +1 -1
- package/ts_build/src/services/Mcp.d.ts +11 -15
- package/ts_build/src/services/Mcp.js +1 -5
- package/ts_build/src/services/Mcp.js.map +1 -1
- package/ts_build/src/services/McpServer.js.map +1 -1
- package/ts_build/src/services/McpWebsocketTransport.js.map +1 -1
- package/ts_build/src/services/MediaProcessorService.js +17 -7
- package/ts_build/src/services/MediaProcessorService.js.map +1 -1
- package/ts_build/src/services/MessageProcessor.js.map +1 -1
- package/ts_build/src/services/S3.d.ts +0 -4
- package/ts_build/src/services/S3.js +19 -49
- package/ts_build/src/services/S3.js.map +1 -1
- package/ts_build/src/services/SessionManager.js +17 -7
- package/ts_build/src/services/SessionManager.js.map +1 -1
- package/ts_build/src/services/SyncedAgentWatcher.js +17 -7
- package/ts_build/src/services/SyncedAgentWatcher.js.map +1 -1
- package/ts_build/src/services/SyncerService.js.map +1 -1
- package/ts_build/src/services/TaskRegistry.js.map +1 -1
- package/ts_build/src/services/Tools.js.map +1 -1
- package/ts_build/src/services/flags.js.map +1 -1
- package/ts_build/src/services/index.d.ts +3 -3
- package/ts_build/src/services/index.js +20 -10
- package/ts_build/src/services/index.js.map +1 -1
- package/ts_build/src/services/modules/index.js +3 -2
- package/ts_build/src/services/modules/index.js.map +1 -1
- package/ts_build/src/services/modules/types.d.ts +3 -0
- package/ts_build/src/services/script-execution/SandboxContext.js.map +1 -1
- package/ts_build/src/services/script-execution/ScriptExecutor.js.map +1 -1
- package/ts_build/src/services/script-execution/ScriptPolicy.js.map +1 -1
- package/ts_build/src/services/script-execution/ScriptTracer.js.map +1 -1
- package/ts_build/src/services/types.js +2 -2
- package/ts_build/src/services/types.js.map +1 -1
- package/ts_build/src/types.d.ts +1 -6
- package/ts_build/src/types.js +3 -3
- package/ts_build/src/types.js.map +1 -1
- package/ts_build/src/utils/InputQueueManager.js.map +1 -1
- package/ts_build/src/utils/http.d.ts +4 -4
- package/ts_build/src/utils/http.js.map +1 -1
- package/ts_build/src/utils/index.d.ts +1 -4
- package/ts_build/src/utils/index.js +27 -17
- package/ts_build/src/utils/index.js.map +1 -1
- package/ts_build/src/worker.js +18 -9
- package/ts_build/src/worker.js.map +1 -1
- package/ts_build/src/workerRegistry.js +24 -15
- package/ts_build/src/workerRegistry.js.map +1 -1
- package/ts_build/src/workers/auth/PasskeySetup.js.map +1 -1
- package/ts_build/src/workers/auth/WorkerPasskeyAuth.js.map +1 -1
- package/ts_build/src/workers/tools/getChallenge.js +1 -2
- package/ts_build/src/workers/tools/getChallenge.js.map +1 -1
- package/ts_build/src/workers/tools/listAllowedPorts.js +2 -2
- package/ts_build/src/workers/tools/listAllowedPorts.js.map +1 -1
- package/ts_build/src/workers/tools/lock.js +1 -2
- package/ts_build/src/workers/tools/lock.js.map +1 -1
- package/ts_build/src/workers/tools/unlock.js +1 -2
- package/ts_build/src/workers/tools/unlock.js.map +1 -1
- package/ts_build/tests/XmlToolCallProcessor.test.js.map +1 -1
- package/ts_build/tests/clients/AIClient.test.js.map +1 -1
- package/ts_build/tests/clients/pricing.test.js.map +1 -1
- package/ts_build/tests/compressor/bigstring.test.js.map +1 -1
- package/ts_build/tests/compressor/toolResponseCache.test.js +17 -7
- package/ts_build/tests/compressor/toolResponseCache.test.js.map +1 -1
- package/ts_build/tests/manual/agent-events/run-test.js.map +1 -1
- package/ts_build/tests/manual/browser-login/test_browser_login_basic.js +17 -7
- package/ts_build/tests/manual/browser-login/test_browser_login_basic.js.map +1 -1
- package/ts_build/tests/manual/browser-login/test_cli_integration.js +17 -7
- package/ts_build/tests/manual/browser-login/test_cli_integration.js.map +1 -1
- package/ts_build/tests/manual/browser-login/test_cross_platform_browser.js +17 -7
- package/ts_build/tests/manual/browser-login/test_cross_platform_browser.js.map +1 -1
- package/ts_build/tests/manual/browser-login/test_error_scenarios.js +17 -7
- package/ts_build/tests/manual/browser-login/test_error_scenarios.js.map +1 -1
- package/ts_build/tests/manual/file-edits/fileblocks/readwrite.test.js +17 -7
- package/ts_build/tests/manual/file-edits/fileblocks/readwrite.test.js.map +1 -1
- package/ts_build/tests/manual/file-edits/patching.test.js +17 -7
- package/ts_build/tests/manual/file-edits/patching.test.js.map +1 -1
- package/ts_build/tests/manual/modalities/google.modalities.test.js +17 -7
- package/ts_build/tests/manual/modalities/google.modalities.test.js.map +1 -1
- package/ts_build/tests/manual/modalities/openai.modalities.test.js +17 -7
- package/ts_build/tests/manual/modalities/openai.modalities.test.js.map +1 -1
- package/ts_build/tests/manual/modalities/streaming.test.js +17 -7
- package/ts_build/tests/manual/modalities/streaming.test.js.map +1 -1
- package/ts_build/tests/manual/modalities/xai.modalities.test.js +17 -7
- package/ts_build/tests/manual/modalities/xai.modalities.test.js.map +1 -1
- package/ts_build/tests/manual/ycmd/debug_diagnostics_test.js +17 -7
- package/ts_build/tests/manual/ycmd/debug_diagnostics_test.js.map +1 -1
- package/ts_build/tests/manual/ycmd/minimal_advanced_test.js +17 -7
- package/ts_build/tests/manual/ycmd/minimal_advanced_test.js.map +1 -1
- package/ts_build/tests/manual/ycmd/simple_diagnostics_test.js +17 -7
- package/ts_build/tests/manual/ycmd/simple_diagnostics_test.js.map +1 -1
- package/ts_build/tests/manual/ycmd/simple_test.js +17 -7
- package/ts_build/tests/manual/ycmd/simple_test.js.map +1 -1
- package/ts_build/tests/manual/ycmd/test-typescript-sample.js.map +1 -1
- package/ts_build/tests/manual/ycmd/test_advanced_features.js +18 -9
- package/ts_build/tests/manual/ycmd/test_advanced_features.js.map +1 -1
- package/ts_build/tests/manual/ycmd/test_advanced_with_tools.js +18 -9
- package/ts_build/tests/manual/ycmd/test_advanced_with_tools.js.map +1 -1
- package/ts_build/tests/manual/ycmd/test_comprehensive_typescript.js +17 -7
- package/ts_build/tests/manual/ycmd/test_comprehensive_typescript.js.map +1 -1
- package/ts_build/tests/manual/ycmd/test_diagnostics_file_changes.js +17 -7
- package/ts_build/tests/manual/ycmd/test_diagnostics_file_changes.js.map +1 -1
- package/ts_build/tests/manual/ycmd/test_diagnostics_fix.js +17 -7
- package/ts_build/tests/manual/ycmd/test_diagnostics_fix.js.map +1 -1
- package/ts_build/tests/manual/ycmd/test_diagnostics_simple.js +17 -7
- package/ts_build/tests/manual/ycmd/test_diagnostics_simple.js.map +1 -1
- package/ts_build/tests/manual/ycmd/test_diagnostics_timing.js +17 -7
- package/ts_build/tests/manual/ycmd/test_diagnostics_timing.js.map +1 -1
- package/ts_build/tests/manual/ycmd/test_discover_commands.js +18 -9
- package/ts_build/tests/manual/ycmd/test_discover_commands.js.map +1 -1
- package/ts_build/tests/manual/ycmd/test_endpoints.js +17 -7
- package/ts_build/tests/manual/ycmd/test_endpoints.js.map +1 -1
- package/ts_build/tests/manual/ycmd/test_final_comprehensive.js +17 -7
- package/ts_build/tests/manual/ycmd/test_final_comprehensive.js.map +1 -1
- package/ts_build/tests/manual/ycmd/test_final_validation.js +17 -7
- package/ts_build/tests/manual/ycmd/test_final_validation.js.map +1 -1
- package/ts_build/tests/manual/ycmd/test_individual_ycmd_tool.js.map +1 -1
- package/ts_build/tests/manual/ycmd/test_server_manager.js.map +1 -1
- package/ts_build/tests/manual/ycmd/test_simple_debug.js +17 -7
- package/ts_build/tests/manual/ycmd/test_simple_debug.js.map +1 -1
- package/ts_build/tests/manual/ycmd/test_tsserver_workflow.js +17 -7
- package/ts_build/tests/manual/ycmd/test_tsserver_workflow.js.map +1 -1
- package/ts_build/tests/manual/ycmd/test_typescript_simple.js +17 -7
- package/ts_build/tests/manual/ycmd/test_typescript_simple.js.map +1 -1
- package/ts_build/tests/manual/ycmd/test_typescript_ycmd.js +17 -7
- package/ts_build/tests/manual/ycmd/test_typescript_ycmd.js.map +1 -1
- package/ts_build/tests/manual/ycmd/test_workspace_config.js +17 -7
- package/ts_build/tests/manual/ycmd/test_workspace_config.js.map +1 -1
- package/ts_build/tests/manual/ycmd/test_ycmd_auto_start.js +17 -7
- package/ts_build/tests/manual/ycmd/test_ycmd_auto_start.js.map +1 -1
- package/ts_build/tests/manual/ycmd/test_ycmd_comprehensive.js +17 -7
- package/ts_build/tests/manual/ycmd/test_ycmd_comprehensive.js.map +1 -1
- package/ts_build/tests/manual/ycmd/test_ycmd_direct.js +17 -7
- package/ts_build/tests/manual/ycmd/test_ycmd_direct.js.map +1 -1
- package/ts_build/tests/manual/ycmd/test_ycmd_experiment.js +19 -9
- package/ts_build/tests/manual/ycmd/test_ycmd_experiment.js.map +1 -1
- package/ts_build/tests/manual/ycmd/test_ycmd_final.js +17 -7
- package/ts_build/tests/manual/ycmd/test_ycmd_final.js.map +1 -1
- package/ts_build/tests/manual/ycmd/test_ycmd_integration.js +18 -9
- package/ts_build/tests/manual/ycmd/test_ycmd_integration.js.map +1 -1
- package/ts_build/tests/manual/ycmd/test_ycmd_simple.js.map +1 -1
- package/ts_build/tests/manual/ycmd/working_simple_test.js +17 -7
- package/ts_build/tests/manual/ycmd/working_simple_test.js.map +1 -1
- package/ts_build/tests/patching/corrupted.test.js.map +1 -1
- package/ts_build/tests/patching/imports.test.js +17 -7
- package/ts_build/tests/patching/imports.test.js.map +1 -1
- package/ts_build/tests/plugins/language/languagePlugin-content-triggers.test.js +17 -7
- package/ts_build/tests/plugins/language/languagePlugin-content-triggers.test.js.map +1 -1
- package/ts_build/tests/plugins/language/languagePlugin-integration.test.js +17 -7
- package/ts_build/tests/plugins/language/languagePlugin-integration.test.js.map +1 -1
- package/ts_build/tests/plugins/language/languagePlugin.test.js +17 -7
- package/ts_build/tests/plugins/language/languagePlugin.test.js.map +1 -1
- package/ts_build/tests/processors/Base64ImageDetector.test.js +17 -7
- package/ts_build/tests/processors/Base64ImageDetector.test.js.map +1 -1
- package/ts_build/tests/processors/TokenCompressor.test.js.map +1 -1
- package/ts_build/tests/processors/ToolResponseCache.test.js.map +1 -1
- package/ts_build/tests/services/Tools.test.js.map +1 -1
- package/ts_build/tests/test.spec.js +17 -7
- package/ts_build/tests/test.spec.js.map +1 -1
- package/ts_build/tests/unit/InputQueueManager.test.js.map +1 -1
- package/ts_build/tests/unit/modules/moduleLoading.test.js +5 -0
- package/ts_build/tests/unit/modules/moduleLoading.test.js.map +1 -1
- package/src/services/GitHub.ts +0 -59
package/.depcheckrc
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tyvm/knowhow",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.93",
|
|
4
4
|
"description": "ai cli with plugins and agents",
|
|
5
5
|
"main": "ts_build/src/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -13,7 +13,8 @@
|
|
|
13
13
|
"start": "npm run compile && node --no-node-snapshot ts_build/src/server/index.js",
|
|
14
14
|
"dataset:diffs:generate": "ts-node src/dataset/diffs/generate.ts",
|
|
15
15
|
"dataset:diffs:jsonl": "ts-node src/dataset/diffs/jsonl.ts",
|
|
16
|
-
"prepublishOnly": "npm run compile",
|
|
16
|
+
"prepublishOnly": "npm run compile && bash scripts/check-isolated-deps.sh",
|
|
17
|
+
"check:isolated": "bash scripts/check-isolated-deps.sh",
|
|
17
18
|
"lint": "tslint ./src/**/*.ts",
|
|
18
19
|
"lint:deps": "depcheck --config=.depcheckrc",
|
|
19
20
|
"lint:all": "npm run lint && npm run lint:deps"
|
|
@@ -23,6 +24,7 @@
|
|
|
23
24
|
"license": "MIT",
|
|
24
25
|
"devDependencies": {
|
|
25
26
|
"@babel/preset-typescript": "^7.23.3",
|
|
27
|
+
"typescript": "^5.0.0",
|
|
26
28
|
"@types/diff": "^5.2.1",
|
|
27
29
|
"@types/express": "^4.17.13",
|
|
28
30
|
"@types/jest": "^29.5.13",
|
|
@@ -39,7 +41,6 @@
|
|
|
39
41
|
},
|
|
40
42
|
"dependencies": {
|
|
41
43
|
"@anthropic-ai/sdk": "^0.39.0",
|
|
42
|
-
"@aws-sdk/client-s3": "^3.588.0",
|
|
43
44
|
"@google/genai": "^0.14.1",
|
|
44
45
|
"@inquirer/editor": "^4.2.18",
|
|
45
46
|
"@modelcontextprotocol/sdk": "^1.13.3",
|
|
@@ -58,9 +59,8 @@
|
|
|
58
59
|
"node-jq": "^6.0.1",
|
|
59
60
|
"openai": "4.89.1",
|
|
60
61
|
"pdf-parse": "^1.1.1",
|
|
61
|
-
"typescript": "^4.6.3",
|
|
62
62
|
"ws": "^8.18.1",
|
|
63
|
-
"zod": "^3.
|
|
63
|
+
"zod": "^3.25.0"
|
|
64
64
|
},
|
|
65
65
|
"directories": {
|
|
66
66
|
"test": "tests"
|
|
@@ -73,5 +73,8 @@
|
|
|
73
73
|
"bugs": {
|
|
74
74
|
"url": "https://github.com/tyvm-ai/knowhow/issues"
|
|
75
75
|
},
|
|
76
|
-
"homepage": "https://github.com/tyvm-ai/knowhow#readme"
|
|
76
|
+
"homepage": "https://github.com/tyvm-ai/knowhow#readme",
|
|
77
|
+
"optionalDependencies": {
|
|
78
|
+
"esbuild-register": "^3.0.0"
|
|
79
|
+
}
|
|
77
80
|
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# check-isolated-deps.sh
|
|
3
|
+
# Verifies that packages/knowhow only imports dependencies it actually declares.
|
|
4
|
+
# Runs tsc in an isolated temp directory with NO parent node_modules available,
|
|
5
|
+
# so any dep resolved from the monorepo root will cause a real compile failure.
|
|
6
|
+
#
|
|
7
|
+
# Usage: bash scripts/check-isolated-deps.sh
|
|
8
|
+
# Also used as the "prepublishOnly" hook to prevent publishing broken packages.
|
|
9
|
+
|
|
10
|
+
set -e
|
|
11
|
+
|
|
12
|
+
PACKAGE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
13
|
+
MONOREPO_ROOT="$(cd "$PACKAGE_DIR/../.." && pwd)"
|
|
14
|
+
TUNNEL_DIR="$MONOREPO_ROOT/packages/knowhow-tunnel"
|
|
15
|
+
|
|
16
|
+
echo "=== Isolated dependency check for @tyvm/knowhow ==="
|
|
17
|
+
echo "Package dir: $PACKAGE_DIR"
|
|
18
|
+
|
|
19
|
+
# 1. Build knowhow-tunnel so we can pack it
|
|
20
|
+
echo ""
|
|
21
|
+
echo "--- Building knowhow-tunnel ---"
|
|
22
|
+
cd "$TUNNEL_DIR"
|
|
23
|
+
npm run build --silent
|
|
24
|
+
|
|
25
|
+
# Pack and capture just the filename (redirect stderr so npm warnings don't corrupt JSON)
|
|
26
|
+
TUNNEL_TARBALL=$(npm pack --json 2>/dev/null | node -e "process.stdin.resume(); let d=''; process.stdin.on('data',c=>d+=c); process.stdin.on('end',()=>console.log(JSON.parse(d)[0].filename))")
|
|
27
|
+
TUNNEL_TARBALL_PATH="$TUNNEL_DIR/$TUNNEL_TARBALL"
|
|
28
|
+
echo "Packed tunnel: $TUNNEL_TARBALL_PATH"
|
|
29
|
+
|
|
30
|
+
# 2. Create isolated temp directory
|
|
31
|
+
WORK_DIR=$(mktemp -d)
|
|
32
|
+
trap "rm -rf '$WORK_DIR'; rm -f '$TUNNEL_TARBALL_PATH'" EXIT
|
|
33
|
+
echo ""
|
|
34
|
+
echo "--- Creating isolated workspace at $WORK_DIR ---"
|
|
35
|
+
|
|
36
|
+
# 3. Copy package source (excluding node_modules and ts_build)
|
|
37
|
+
rsync -a \
|
|
38
|
+
--exclude='node_modules' \
|
|
39
|
+
--exclude='ts_build' \
|
|
40
|
+
--exclude='.knowhow' \
|
|
41
|
+
--exclude='scripts' \
|
|
42
|
+
"$PACKAGE_DIR/" "$WORK_DIR/"
|
|
43
|
+
|
|
44
|
+
# 4. Copy the tunnel tarball into work dir and rewrite the dependency
|
|
45
|
+
cp "$TUNNEL_TARBALL_PATH" "$WORK_DIR/$TUNNEL_TARBALL"
|
|
46
|
+
cd "$WORK_DIR"
|
|
47
|
+
|
|
48
|
+
# Replace workspace dep reference with local tarball path
|
|
49
|
+
node -e "
|
|
50
|
+
const fs = require('fs');
|
|
51
|
+
const pkg = JSON.parse(fs.readFileSync('./package.json', 'utf8'));
|
|
52
|
+
pkg.dependencies['@tyvm/knowhow-tunnel'] = 'file:./' + process.argv[1];
|
|
53
|
+
fs.writeFileSync('./package.json', JSON.stringify(pkg, null, 2));
|
|
54
|
+
" "$TUNNEL_TARBALL"
|
|
55
|
+
|
|
56
|
+
echo "Updated @tyvm/knowhow-tunnel dep to local tarball"
|
|
57
|
+
|
|
58
|
+
# 5. Install in isolated dir (include devDeps for tsc) — NO parent node_modules accessible
|
|
59
|
+
echo ""
|
|
60
|
+
echo "--- Running npm install (isolated, including devDependencies) ---"
|
|
61
|
+
npm install --ignore-scripts 2>&1 | grep -v "^npm warn deprecated" | grep -v "^$" || true
|
|
62
|
+
|
|
63
|
+
# 6. Run tsc --noEmit from the isolated dir
|
|
64
|
+
echo ""
|
|
65
|
+
echo "--- Running tsc --noEmit (isolated) ---"
|
|
66
|
+
./node_modules/.bin/tsc --noEmit
|
|
67
|
+
|
|
68
|
+
echo ""
|
|
69
|
+
echo "=== Isolated dependency check PASSED ==="
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { AgentContext, BaseAgent } from "../base/base";
|
|
2
2
|
import { Message } from "../../clients/types";
|
|
3
3
|
import { Assistant, Config } from "../../types";
|
|
4
|
-
import { EventService, ToolsService } from "
|
|
5
|
-
import { MessageProcessor } from "
|
|
4
|
+
import { EventService, ToolsService } from "../../services";
|
|
5
|
+
import { MessageProcessor } from "../../services/MessageProcessor";
|
|
6
6
|
|
|
7
7
|
export class ConfigAgent extends BaseAgent {
|
|
8
8
|
name: string;
|
|
@@ -37,7 +37,6 @@ import {
|
|
|
37
37
|
agents,
|
|
38
38
|
} from "../../agents";
|
|
39
39
|
import { ToolCallEvent } from "../../agents/base/base";
|
|
40
|
-
import { $Command } from "@aws-sdk/client-s3";
|
|
41
40
|
import { KnowhowSimpleClient } from "../../services/KnowhowClient";
|
|
42
41
|
|
|
43
42
|
export class AgentModule extends BaseChatModule {
|
package/src/chat/types.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { ChatInteraction, Config } from "../types";
|
|
5
5
|
import { BaseAgent } from "../agents/base/base";
|
|
6
|
-
import { ToolsService } from "
|
|
6
|
+
import { ToolsService } from "../services";
|
|
7
7
|
import { AgentRenderer } from "./renderer/types";
|
|
8
8
|
|
|
9
9
|
export interface ChatContext {
|
package/src/clients/gemini.ts
CHANGED
|
@@ -688,7 +688,7 @@ export class GenericGeminiClient implements GenericClient {
|
|
|
688
688
|
const mimeType = audioPart.inlineData.mimeType || "audio/wav";
|
|
689
689
|
|
|
690
690
|
// Gemini returns raw PCM (audio/L16) - convert to WAV format for playability
|
|
691
|
-
let audioBuffer = rawBuffer;
|
|
691
|
+
let audioBuffer: Buffer = rawBuffer;
|
|
692
692
|
if (mimeType.includes("L16") || mimeType.includes("pcm")) {
|
|
693
693
|
// Parse sample rate from mime type e.g. "audio/L16;codec=pcm;rate=24000"
|
|
694
694
|
const rateMatch = mimeType.match(/rate=(\d+)/);
|
|
@@ -883,7 +883,7 @@ export class GenericGeminiClient implements GenericClient {
|
|
|
883
883
|
*/
|
|
884
884
|
async uploadFile(options: FileUploadOptions): Promise<FileUploadResponse> {
|
|
885
885
|
try {
|
|
886
|
-
const blob = new Blob([options.data], { type: options.mimeType });
|
|
886
|
+
const blob = new Blob([new Uint8Array(options.data)], { type: options.mimeType });
|
|
887
887
|
const uploadedFile = await this.client.files.upload({
|
|
888
888
|
file: blob,
|
|
889
889
|
config: {
|
package/src/clients/openai.ts
CHANGED
|
@@ -398,7 +398,7 @@ export class GenericOpenAiClient implements GenericClient {
|
|
|
398
398
|
if (!apiKey) throw new Error("OpenAI API key not set");
|
|
399
399
|
const formData = new FormData();
|
|
400
400
|
formData.append("purpose", "assistants");
|
|
401
|
-
const blob = new Blob([options.data], { type: options.mimeType || "application/octet-stream" });
|
|
401
|
+
const blob = new Blob([new Uint8Array(options.data)], { type: options.mimeType || "application/octet-stream" });
|
|
402
402
|
formData.append("file", blob, options.fileName || "upload");
|
|
403
403
|
const response = await fetch("https://api.openai.com/v1/files", {
|
|
404
404
|
method: "POST",
|
package/src/clients/xai.ts
CHANGED
|
@@ -345,7 +345,7 @@ export class GenericXAIClient implements GenericClient {
|
|
|
345
345
|
|
|
346
346
|
const formData = new FormData();
|
|
347
347
|
formData.append("purpose", "assistants");
|
|
348
|
-
const blob = new Blob([options.data], { type: options.mimeType || "application/octet-stream" });
|
|
348
|
+
const blob = new Blob([new Uint8Array(options.data)], { type: options.mimeType || "application/octet-stream" });
|
|
349
349
|
formData.append("file", blob, options.fileName || "upload");
|
|
350
350
|
|
|
351
351
|
const response = await fetch("https://api.x.ai/v1/files", {
|
package/src/index.ts
CHANGED
|
@@ -105,7 +105,7 @@ export async function purge(globPath: string) {
|
|
|
105
105
|
|
|
106
106
|
export async function upload() {
|
|
107
107
|
const config = await getConfig();
|
|
108
|
-
const { AwsS3, knowhowApiClient } = services();
|
|
108
|
+
const { AwsS3, Embeddings, knowhowApiClient } = services();
|
|
109
109
|
|
|
110
110
|
for (const source of config.embedSources) {
|
|
111
111
|
const bucketName = source.remote;
|
|
@@ -125,16 +125,15 @@ export async function upload() {
|
|
|
125
125
|
items,
|
|
126
126
|
};
|
|
127
127
|
|
|
128
|
-
if (source.remoteType
|
|
128
|
+
if (Embeddings.hasResolver(source.remoteType) && source.remoteType !== "knowhow") {
|
|
129
129
|
console.log(
|
|
130
130
|
"Uploading",
|
|
131
131
|
source.output,
|
|
132
132
|
"to",
|
|
133
133
|
`${bucketName}/${embeddingName}.json`
|
|
134
134
|
);
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
await AwsS3.uploadFile(source.output, bucketName, s3Key);
|
|
135
|
+
const remoteKey = `${embeddingName}.json`;
|
|
136
|
+
await Embeddings.upload(source.remoteType, source.output, bucketName, remoteKey);
|
|
138
137
|
} else if (source.remoteType === "knowhow") {
|
|
139
138
|
if (!source.remoteId) {
|
|
140
139
|
throw new Error("remoteId is required for knowhow uploads");
|
|
@@ -357,7 +356,7 @@ export async function handleSingleOutputGeneration(
|
|
|
357
356
|
|
|
358
357
|
export async function download() {
|
|
359
358
|
const config = await getConfig();
|
|
360
|
-
const { AwsS3,
|
|
359
|
+
const { AwsS3, Embeddings, knowhowApiClient } = services();
|
|
361
360
|
|
|
362
361
|
for (const source of config.embedSources) {
|
|
363
362
|
const { remote, remoteType } = source;
|
|
@@ -375,28 +374,17 @@ export async function download() {
|
|
|
375
374
|
const fileName = `${name}.json`;
|
|
376
375
|
const destinationPath = source.output;
|
|
377
376
|
|
|
378
|
-
if (remoteType
|
|
379
|
-
const bucketName = remote;
|
|
377
|
+
if (Embeddings.hasResolver(remoteType)) {
|
|
380
378
|
console.log(
|
|
381
379
|
"Downloading",
|
|
382
380
|
fileName,
|
|
383
381
|
`from ${remoteType}`,
|
|
384
|
-
bucketName,
|
|
385
|
-
"to",
|
|
386
|
-
destinationPath
|
|
387
|
-
);
|
|
388
|
-
await AwsS3.downloadFile(bucketName, fileName, destinationPath);
|
|
389
|
-
} else if (remoteType === "github") {
|
|
390
|
-
console.log(
|
|
391
|
-
"Downloading",
|
|
392
|
-
fileName,
|
|
393
|
-
"from GitHub repo",
|
|
394
382
|
remote,
|
|
395
383
|
"to",
|
|
396
384
|
destinationPath
|
|
397
385
|
);
|
|
398
386
|
const embeddingPath = ".knowhow/embeddings/" + fileName;
|
|
399
|
-
await
|
|
387
|
+
await Embeddings.download(remoteType, remote, embeddingPath, destinationPath);
|
|
400
388
|
} else if (remoteType === "knowhow") {
|
|
401
389
|
if (!source.remoteId) {
|
|
402
390
|
throw new Error("remoteId is required for knowhow downloads");
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
type DownloaderFn = (
|
|
2
|
+
remote: string,
|
|
3
|
+
filePath: string,
|
|
4
|
+
destinationPath: string
|
|
5
|
+
) => Promise<void>;
|
|
6
|
+
|
|
7
|
+
type UploaderFn = (
|
|
8
|
+
localPath: string,
|
|
9
|
+
remote: string,
|
|
10
|
+
remoteKey: string
|
|
11
|
+
) => Promise<void>;
|
|
12
|
+
|
|
13
|
+
export interface EmbeddingsResolver {
|
|
14
|
+
download: DownloaderFn;
|
|
15
|
+
upload?: UploaderFn;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* EmbeddingsService manages pluggable resolvers for remote embedding sources.
|
|
20
|
+
* Modules can register a resolver for a given remoteType (e.g. "github", "s3")
|
|
21
|
+
* via registerResolver(), and the core upload()/download() functions delegate to it.
|
|
22
|
+
*/
|
|
23
|
+
export class EmbeddingsService {
|
|
24
|
+
private resolvers = new Map<string, EmbeddingsResolver>();
|
|
25
|
+
|
|
26
|
+
registerResolver(remoteType: string, resolver: EmbeddingsResolver): void {
|
|
27
|
+
this.resolvers.set(remoteType, resolver);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
hasResolver(remoteType: string): boolean {
|
|
31
|
+
return this.resolvers.has(remoteType);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
async download(
|
|
35
|
+
remoteType: string,
|
|
36
|
+
remote: string,
|
|
37
|
+
filePath: string,
|
|
38
|
+
destinationPath: string
|
|
39
|
+
): Promise<void> {
|
|
40
|
+
const resolver = this.resolvers.get(remoteType);
|
|
41
|
+
if (!resolver) {
|
|
42
|
+
throw new Error(
|
|
43
|
+
`No resolver registered for remoteType: "${remoteType}". ` +
|
|
44
|
+
`Install and configure the appropriate knowhow module (e.g. @tyvm/knowhow-module-github).`
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
await resolver.download(remote, filePath, destinationPath);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
async upload(
|
|
51
|
+
remoteType: string,
|
|
52
|
+
localPath: string,
|
|
53
|
+
remote: string,
|
|
54
|
+
remoteKey: string
|
|
55
|
+
): Promise<void> {
|
|
56
|
+
const resolver = this.resolvers.get(remoteType);
|
|
57
|
+
if (!resolver) {
|
|
58
|
+
throw new Error(
|
|
59
|
+
`No resolver registered for remoteType: "${remoteType}". ` +
|
|
60
|
+
`Install and configure the appropriate knowhow module (e.g. @tyvm/knowhow-module-s3).`
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
if (!resolver.upload) {
|
|
64
|
+
throw new Error(
|
|
65
|
+
`Resolver for remoteType: "${remoteType}" does not support uploads.`
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
await resolver.upload(localPath, remote, remoteKey);
|
|
69
|
+
}
|
|
70
|
+
}
|
package/src/services/Mcp.ts
CHANGED
package/src/services/S3.ts
CHANGED
|
@@ -1,86 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
S3Client,
|
|
3
|
-
HeadBucketCommand,
|
|
4
|
-
CreateBucketCommand,
|
|
5
|
-
GetObjectCommand,
|
|
6
|
-
PutObjectCommand,
|
|
7
|
-
GetObjectCommandInput,
|
|
8
|
-
PutObjectCommandInput,
|
|
9
|
-
} from "@aws-sdk/client-s3";
|
|
10
|
-
|
|
11
1
|
import * as fs from "fs";
|
|
12
|
-
|
|
13
|
-
import { createWriteStream } from "fs";
|
|
14
|
-
import * as path from "path";
|
|
2
|
+
import { createWriteStream, createReadStream } from "fs";
|
|
15
3
|
import { pipeline, Readable } from "stream";
|
|
16
4
|
import * as util from "util";
|
|
17
5
|
|
|
18
|
-
import { createReadStream } from "fs";
|
|
19
6
|
const pipelineAsync = util.promisify(pipeline);
|
|
20
7
|
|
|
21
8
|
export class S3Service {
|
|
22
|
-
private s3: S3Client;
|
|
23
|
-
|
|
24
|
-
constructor() {
|
|
25
|
-
this.s3 = new S3Client();
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
async uploadFile(
|
|
29
|
-
filePath: string,
|
|
30
|
-
bucketName: string,
|
|
31
|
-
key: string
|
|
32
|
-
): Promise<void> {
|
|
33
|
-
const fileContent = await fsPromises.readFile(filePath);
|
|
34
|
-
|
|
35
|
-
const params = {
|
|
36
|
-
Bucket: bucketName,
|
|
37
|
-
Key: key,
|
|
38
|
-
Body: fileContent,
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
// create bucket if it doesn't exist
|
|
42
|
-
try {
|
|
43
|
-
await this.s3.send(new HeadBucketCommand({ Bucket: bucketName }));
|
|
44
|
-
} catch (error) {
|
|
45
|
-
const statusCode = error.$metadata.httpStatusCode;
|
|
46
|
-
if (statusCode === 404) {
|
|
47
|
-
await this.s3.send(new CreateBucketCommand({ Bucket: bucketName }));
|
|
48
|
-
console.log(`Bucket ${bucketName} created successfully`);
|
|
49
|
-
} else {
|
|
50
|
-
throw error;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
await this.s3.send(new PutObjectCommand(params));
|
|
55
|
-
console.log(`File uploaded successfully to ${bucketName}/${key}`);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
async downloadFile(
|
|
59
|
-
bucketName: string,
|
|
60
|
-
key: string,
|
|
61
|
-
destinationPath: string
|
|
62
|
-
): Promise<void> {
|
|
63
|
-
const params = {
|
|
64
|
-
Bucket: bucketName,
|
|
65
|
-
Key: key,
|
|
66
|
-
};
|
|
67
|
-
const { Body } = await this.s3.send(new GetObjectCommand(params));
|
|
68
|
-
const fileStream = createWriteStream(destinationPath);
|
|
69
|
-
|
|
70
|
-
await pipelineAsync(Body as NodeJS.ReadableStream, fileStream);
|
|
71
|
-
|
|
72
|
-
console.log(
|
|
73
|
-
`File downloaded successfully from ${bucketName}/${key} to ${destinationPath}`
|
|
74
|
-
);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
9
|
async uploadToPresignedUrl(
|
|
78
10
|
presignedUrl: string,
|
|
79
11
|
filePath: string
|
|
80
12
|
): Promise<void> {
|
|
81
13
|
try {
|
|
82
14
|
const fileStream = createReadStream(filePath);
|
|
83
|
-
const fileStats = await
|
|
15
|
+
const fileStats = await fs.promises.stat(filePath);
|
|
84
16
|
|
|
85
17
|
const response = await fetch(presignedUrl, {
|
|
86
18
|
method: "PUT",
|
package/src/services/index.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { AIClient, Clients } from "../clients";
|
|
|
2
2
|
import { AgentService } from "./AgentService";
|
|
3
3
|
import { EventService } from "./EventService";
|
|
4
4
|
import { FlagsService } from "./flags";
|
|
5
|
-
import {
|
|
5
|
+
import { EmbeddingsService } from "./EmbeddingsService";
|
|
6
6
|
import { KnowhowSimpleClient } from "./KnowhowClient";
|
|
7
7
|
import { McpService } from "./Mcp";
|
|
8
8
|
import { S3Service } from "./S3";
|
|
@@ -18,7 +18,7 @@ import { MediaProcessorService } from "./MediaProcessorService";
|
|
|
18
18
|
export * from "./AgentService";
|
|
19
19
|
export * from "./EventService";
|
|
20
20
|
export * from "./flags";
|
|
21
|
-
export * from "./
|
|
21
|
+
export * from "./EmbeddingsService";
|
|
22
22
|
export * from "./S3";
|
|
23
23
|
export * from "./Tools";
|
|
24
24
|
export * from "./LazyToolsService";
|
|
@@ -38,8 +38,8 @@ let Singletons = {} as {
|
|
|
38
38
|
Tools: ToolsService;
|
|
39
39
|
Events: EventService;
|
|
40
40
|
Agents: AgentService;
|
|
41
|
+
Embeddings: EmbeddingsService;
|
|
41
42
|
Flags: FlagsService;
|
|
42
|
-
GitHub: GitHubService;
|
|
43
43
|
Mcp: McpService;
|
|
44
44
|
AwsS3: S3Service;
|
|
45
45
|
Docker: DockerService;
|
|
@@ -67,8 +67,8 @@ export const services = (): typeof Singletons => {
|
|
|
67
67
|
Clients,
|
|
68
68
|
Docker: new DockerService(),
|
|
69
69
|
Events,
|
|
70
|
+
Embeddings: new EmbeddingsService(),
|
|
70
71
|
Flags: new FlagsService(),
|
|
71
|
-
GitHub: new GitHubService(),
|
|
72
72
|
Mcp: new McpService(),
|
|
73
73
|
MediaProcessor: new MediaProcessorService(Clients),
|
|
74
74
|
Plugins,
|
|
@@ -10,9 +10,10 @@ export class ModulesService {
|
|
|
10
10
|
|
|
11
11
|
// If no context provided, fall back to global singletons
|
|
12
12
|
if (!context) {
|
|
13
|
-
const { Clients, Plugins, Agents, Tools, MediaProcessor } = services();
|
|
13
|
+
const { Clients, Plugins, Agents, Tools, Embeddings, MediaProcessor } = services();
|
|
14
14
|
context = {
|
|
15
15
|
Agents,
|
|
16
|
+
Embeddings,
|
|
16
17
|
Plugins,
|
|
17
18
|
Clients,
|
|
18
19
|
Tools,
|
|
@@ -35,7 +36,7 @@ export class ModulesService {
|
|
|
35
36
|
|
|
36
37
|
for (const modulePath of allModulePaths) {
|
|
37
38
|
const importedModule = require(modulePath) as KnowhowModule;
|
|
38
|
-
await importedModule.init({ config, cwd: process.cwd() });
|
|
39
|
+
await importedModule.init({ config, cwd: process.cwd(), context });
|
|
39
40
|
|
|
40
41
|
for (const agent of importedModule.agents) {
|
|
41
42
|
agentService.registerAgent(agent);
|
|
@@ -4,6 +4,7 @@ import { Tool } from "../../clients/types";
|
|
|
4
4
|
import { Config } from "../../types";
|
|
5
5
|
import { GenericClient } from "../../clients/types";
|
|
6
6
|
import { AgentService } from "../AgentService";
|
|
7
|
+
import { EmbeddingsService } from "../EmbeddingsService";
|
|
7
8
|
import { PluginService } from "../../plugins/plugins";
|
|
8
9
|
import { AIClient } from "../../clients";
|
|
9
10
|
import { ToolsService } from "../Tools";
|
|
@@ -42,10 +43,12 @@ export type ModuleClient = {
|
|
|
42
43
|
export type InitParams = {
|
|
43
44
|
config: Config;
|
|
44
45
|
cwd: string;
|
|
46
|
+
context?: ModuleContext;
|
|
45
47
|
};
|
|
46
48
|
|
|
47
49
|
export interface ModuleContext {
|
|
48
50
|
Agents: AgentService;
|
|
51
|
+
Embeddings: EmbeddingsService;
|
|
49
52
|
Plugins: PluginService;
|
|
50
53
|
Clients: AIClient;
|
|
51
54
|
Tools: ToolsService;
|
|
@@ -47,6 +47,11 @@ function makeContext(overrides?: Partial<ModuleContext>): ModuleContext {
|
|
|
47
47
|
addTool: jest.fn(),
|
|
48
48
|
setFunction: jest.fn(),
|
|
49
49
|
} as any,
|
|
50
|
+
Embeddings: {
|
|
51
|
+
registerDownloader: jest.fn(),
|
|
52
|
+
hasDownloader: jest.fn(),
|
|
53
|
+
download: jest.fn(),
|
|
54
|
+
} as any,
|
|
50
55
|
...overrides,
|
|
51
56
|
};
|
|
52
57
|
}
|
package/ts_build/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tyvm/knowhow",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.93",
|
|
4
4
|
"description": "ai cli with plugins and agents",
|
|
5
5
|
"main": "ts_build/src/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -13,7 +13,8 @@
|
|
|
13
13
|
"start": "npm run compile && node --no-node-snapshot ts_build/src/server/index.js",
|
|
14
14
|
"dataset:diffs:generate": "ts-node src/dataset/diffs/generate.ts",
|
|
15
15
|
"dataset:diffs:jsonl": "ts-node src/dataset/diffs/jsonl.ts",
|
|
16
|
-
"prepublishOnly": "npm run compile",
|
|
16
|
+
"prepublishOnly": "npm run compile && bash scripts/check-isolated-deps.sh",
|
|
17
|
+
"check:isolated": "bash scripts/check-isolated-deps.sh",
|
|
17
18
|
"lint": "tslint ./src/**/*.ts",
|
|
18
19
|
"lint:deps": "depcheck --config=.depcheckrc",
|
|
19
20
|
"lint:all": "npm run lint && npm run lint:deps"
|
|
@@ -23,6 +24,7 @@
|
|
|
23
24
|
"license": "MIT",
|
|
24
25
|
"devDependencies": {
|
|
25
26
|
"@babel/preset-typescript": "^7.23.3",
|
|
27
|
+
"typescript": "^5.0.0",
|
|
26
28
|
"@types/diff": "^5.2.1",
|
|
27
29
|
"@types/express": "^4.17.13",
|
|
28
30
|
"@types/jest": "^29.5.13",
|
|
@@ -39,7 +41,6 @@
|
|
|
39
41
|
},
|
|
40
42
|
"dependencies": {
|
|
41
43
|
"@anthropic-ai/sdk": "^0.39.0",
|
|
42
|
-
"@aws-sdk/client-s3": "^3.588.0",
|
|
43
44
|
"@google/genai": "^0.14.1",
|
|
44
45
|
"@inquirer/editor": "^4.2.18",
|
|
45
46
|
"@modelcontextprotocol/sdk": "^1.13.3",
|
|
@@ -58,9 +59,8 @@
|
|
|
58
59
|
"node-jq": "^6.0.1",
|
|
59
60
|
"openai": "4.89.1",
|
|
60
61
|
"pdf-parse": "^1.1.1",
|
|
61
|
-
"typescript": "^4.6.3",
|
|
62
62
|
"ws": "^8.18.1",
|
|
63
|
-
"zod": "^3.
|
|
63
|
+
"zod": "^3.25.0"
|
|
64
64
|
},
|
|
65
65
|
"directories": {
|
|
66
66
|
"test": "tests"
|
|
@@ -73,5 +73,8 @@
|
|
|
73
73
|
"bugs": {
|
|
74
74
|
"url": "https://github.com/tyvm-ai/knowhow/issues"
|
|
75
75
|
},
|
|
76
|
-
"homepage": "https://github.com/tyvm-ai/knowhow#readme"
|
|
76
|
+
"homepage": "https://github.com/tyvm-ai/knowhow#readme",
|
|
77
|
+
"optionalDependencies": {
|
|
78
|
+
"esbuild-register": "^3.0.0"
|
|
79
|
+
}
|
|
77
80
|
}
|