@nanocollective/nanocoder 1.16.4 → 1.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +53 -19
- package/assets/nanocoder-vscode.vsix +0 -0
- package/dist/app.d.ts +6 -1
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +54 -18
- package/dist/app.js.map +1 -1
- package/dist/cli.js +13 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +4 -29
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/mcp.d.ts +6 -0
- package/dist/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +25 -3
- package/dist/commands/mcp.js.map +1 -1
- package/dist/components/tool-confirmation.d.ts.map +1 -1
- package/dist/components/tool-confirmation.js +5 -19
- package/dist/components/tool-confirmation.js.map +1 -1
- package/dist/components/vscode-extension-prompt.d.ts +12 -0
- package/dist/components/vscode-extension-prompt.d.ts.map +1 -0
- package/dist/components/vscode-extension-prompt.js +115 -0
- package/dist/components/vscode-extension-prompt.js.map +1 -0
- package/dist/config/themes.js +2 -2
- package/dist/hooks/useAppInitialization.d.ts +2 -0
- package/dist/hooks/useAppInitialization.d.ts.map +1 -1
- package/dist/hooks/useAppInitialization.js +55 -1
- package/dist/hooks/useAppInitialization.js.map +1 -1
- package/dist/hooks/useChatHandler.d.ts.map +1 -1
- package/dist/hooks/useChatHandler.js +10 -71
- package/dist/hooks/useChatHandler.js.map +1 -1
- package/dist/hooks/useDirectoryTrust.d.ts.map +1 -1
- package/dist/hooks/useDirectoryTrust.js +4 -4
- package/dist/hooks/useDirectoryTrust.js.map +1 -1
- package/dist/hooks/useModeHandlers.d.ts +2 -1
- package/dist/hooks/useModeHandlers.d.ts.map +1 -1
- package/dist/hooks/useModeHandlers.js +13 -1
- package/dist/hooks/useModeHandlers.js.map +1 -1
- package/dist/hooks/useToolHandler.d.ts +0 -1
- package/dist/hooks/useToolHandler.d.ts.map +1 -1
- package/dist/hooks/useToolHandler.js +15 -75
- package/dist/hooks/useToolHandler.js.map +1 -1
- package/dist/hooks/useVSCodeServer.d.ts +45 -0
- package/dist/hooks/useVSCodeServer.d.ts.map +1 -0
- package/dist/hooks/useVSCodeServer.js +144 -0
- package/dist/hooks/useVSCodeServer.js.map +1 -0
- package/dist/lsp/index.d.ts +12 -0
- package/dist/lsp/index.d.ts.map +1 -0
- package/dist/lsp/index.js +11 -0
- package/dist/lsp/index.js.map +1 -0
- package/dist/lsp/lsp-client.d.ts +78 -0
- package/dist/lsp/lsp-client.d.ts.map +1 -0
- package/dist/lsp/lsp-client.js +378 -0
- package/dist/lsp/lsp-client.js.map +1 -0
- package/dist/lsp/lsp-client.spec.d.ts +2 -0
- package/dist/lsp/lsp-client.spec.d.ts.map +1 -0
- package/dist/lsp/lsp-client.spec.js +395 -0
- package/dist/lsp/lsp-client.spec.js.map +1 -0
- package/dist/lsp/lsp-manager.d.ts +124 -0
- package/dist/lsp/lsp-manager.d.ts.map +1 -0
- package/dist/lsp/lsp-manager.js +313 -0
- package/dist/lsp/lsp-manager.js.map +1 -0
- package/dist/lsp/lsp-manager.spec.d.ts +2 -0
- package/dist/lsp/lsp-manager.spec.d.ts.map +1 -0
- package/dist/lsp/lsp-manager.spec.js +388 -0
- package/dist/lsp/lsp-manager.spec.js.map +1 -0
- package/dist/lsp/protocol.d.ts +313 -0
- package/dist/lsp/protocol.d.ts.map +1 -0
- package/dist/lsp/protocol.js +70 -0
- package/dist/lsp/protocol.js.map +1 -0
- package/dist/lsp/protocol.spec.d.ts +2 -0
- package/dist/lsp/protocol.spec.d.ts.map +1 -0
- package/dist/lsp/protocol.spec.js +406 -0
- package/dist/lsp/protocol.spec.js.map +1 -0
- package/dist/lsp/server-discovery.d.ts +35 -0
- package/dist/lsp/server-discovery.d.ts.map +1 -0
- package/dist/lsp/server-discovery.js +291 -0
- package/dist/lsp/server-discovery.js.map +1 -0
- package/dist/lsp/server-discovery.spec.d.ts +2 -0
- package/dist/lsp/server-discovery.spec.d.ts.map +1 -0
- package/dist/lsp/server-discovery.spec.js +375 -0
- package/dist/lsp/server-discovery.spec.js.map +1 -0
- package/dist/mcp/mcp-client.d.ts +18 -0
- package/dist/mcp/mcp-client.d.ts.map +1 -1
- package/dist/mcp/mcp-client.js +59 -23
- package/dist/mcp/mcp-client.js.map +1 -1
- package/dist/mcp/mcp-client.spec.d.ts +2 -0
- package/dist/mcp/mcp-client.spec.d.ts.map +1 -0
- package/dist/mcp/mcp-client.spec.js +64 -0
- package/dist/mcp/mcp-client.spec.js.map +1 -0
- package/dist/mcp/transport-factory.d.ts +39 -0
- package/dist/mcp/transport-factory.d.ts.map +1 -0
- package/dist/mcp/transport-factory.js +176 -0
- package/dist/mcp/transport-factory.js.map +1 -0
- package/dist/mcp/transport-factory.spec.d.ts +2 -0
- package/dist/mcp/transport-factory.spec.d.ts.map +1 -0
- package/dist/mcp/transport-factory.spec.js +303 -0
- package/dist/mcp/transport-factory.spec.js.map +1 -0
- package/dist/message-handler.d.ts.map +1 -1
- package/dist/message-handler.js +6 -11
- package/dist/message-handler.js.map +1 -1
- package/dist/models/models-dev-client.spec.js +1 -0
- package/dist/models/models-dev-client.spec.js.map +1 -1
- package/dist/tools/create-file.d.ts.map +1 -1
- package/dist/tools/create-file.js +37 -3
- package/dist/tools/create-file.js.map +1 -1
- package/dist/tools/delete-lines.d.ts.map +1 -1
- package/dist/tools/delete-lines.js +41 -1
- package/dist/tools/delete-lines.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/insert-lines.d.ts.map +1 -1
- package/dist/tools/insert-lines.js +40 -1
- package/dist/tools/insert-lines.js.map +1 -1
- package/dist/tools/lsp-get-diagnostics.d.ts +3 -0
- package/dist/tools/lsp-get-diagnostics.d.ts.map +1 -0
- package/dist/tools/lsp-get-diagnostics.js +182 -0
- package/dist/tools/lsp-get-diagnostics.js.map +1 -0
- package/dist/tools/replace-lines.d.ts.map +1 -1
- package/dist/tools/replace-lines.js +44 -1
- package/dist/tools/replace-lines.js.map +1 -1
- package/dist/tools/tool-manager.d.ts +17 -0
- package/dist/tools/tool-manager.d.ts.map +1 -1
- package/dist/tools/tool-manager.js +12 -0
- package/dist/tools/tool-manager.js.map +1 -1
- package/dist/types/config.d.ts +27 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/mcp.d.ts +23 -1
- package/dist/types/mcp.d.ts.map +1 -1
- package/dist/utils/error-formatter.d.ts +22 -0
- package/dist/utils/error-formatter.d.ts.map +1 -0
- package/dist/utils/error-formatter.js +27 -0
- package/dist/utils/error-formatter.js.map +1 -0
- package/dist/utils/error-formatter.spec.d.ts +2 -0
- package/dist/utils/error-formatter.spec.d.ts.map +1 -0
- package/dist/utils/error-formatter.spec.js +147 -0
- package/dist/utils/error-formatter.spec.js.map +1 -0
- package/dist/utils/fuzzy-matching.spec.js +1 -0
- package/dist/utils/fuzzy-matching.spec.js.map +1 -1
- package/dist/utils/tool-args-parser.d.ts +37 -0
- package/dist/utils/tool-args-parser.d.ts.map +1 -0
- package/dist/utils/tool-args-parser.js +50 -0
- package/dist/utils/tool-args-parser.js.map +1 -0
- package/dist/utils/tool-args-parser.spec.d.ts +2 -0
- package/dist/utils/tool-args-parser.spec.d.ts.map +1 -0
- package/dist/utils/tool-args-parser.spec.js +111 -0
- package/dist/utils/tool-args-parser.spec.js.map +1 -0
- package/dist/utils/tool-cancellation.d.ts +21 -0
- package/dist/utils/tool-cancellation.d.ts.map +1 -0
- package/dist/utils/tool-cancellation.js +27 -0
- package/dist/utils/tool-cancellation.js.map +1 -0
- package/dist/utils/tool-cancellation.spec.d.ts +2 -0
- package/dist/utils/tool-cancellation.spec.d.ts.map +1 -0
- package/dist/utils/tool-cancellation.spec.js +186 -0
- package/dist/utils/tool-cancellation.spec.js.map +1 -0
- package/dist/utils/tool-result-display.d.ts +15 -0
- package/dist/utils/tool-result-display.d.ts.map +1 -0
- package/dist/utils/tool-result-display.js +51 -0
- package/dist/utils/tool-result-display.js.map +1 -0
- package/dist/vscode/extension-installer.d.ts +24 -0
- package/dist/vscode/extension-installer.d.ts.map +1 -0
- package/dist/vscode/extension-installer.js +110 -0
- package/dist/vscode/extension-installer.js.map +1 -0
- package/dist/vscode/extension-installer.spec.d.ts +2 -0
- package/dist/vscode/extension-installer.spec.d.ts.map +1 -0
- package/dist/vscode/extension-installer.spec.js +132 -0
- package/dist/vscode/extension-installer.spec.js.map +1 -0
- package/dist/vscode/index.d.ts +14 -0
- package/dist/vscode/index.d.ts.map +1 -0
- package/dist/vscode/index.js +14 -0
- package/dist/vscode/index.js.map +1 -0
- package/dist/vscode/protocol.d.ts +101 -0
- package/dist/vscode/protocol.d.ts.map +1 -0
- package/dist/vscode/protocol.js +7 -0
- package/dist/vscode/protocol.js.map +1 -0
- package/dist/vscode/protocol.spec.d.ts +2 -0
- package/dist/vscode/protocol.spec.d.ts.map +1 -0
- package/dist/vscode/protocol.spec.js +354 -0
- package/dist/vscode/protocol.spec.js.map +1 -0
- package/dist/vscode/vscode-server.d.ts +118 -0
- package/dist/vscode/vscode-server.d.ts.map +1 -0
- package/dist/vscode/vscode-server.js +303 -0
- package/dist/vscode/vscode-server.js.map +1 -0
- package/dist/vscode/vscode-server.spec.d.ts +2 -0
- package/dist/vscode/vscode-server.spec.d.ts.map +1 -0
- package/dist/vscode/vscode-server.spec.js +487 -0
- package/dist/vscode/vscode-server.spec.js.map +1 -0
- package/dist/wizard/steps/mcp-step.d.ts.map +1 -1
- package/dist/wizard/steps/mcp-step.js +139 -72
- package/dist/wizard/steps/mcp-step.js.map +1 -1
- package/dist/wizard/steps/summary-step.d.ts.map +1 -1
- package/dist/wizard/steps/summary-step.js +58 -2
- package/dist/wizard/steps/summary-step.js.map +1 -1
- package/dist/wizard/templates/mcp-templates.d.ts +20 -2
- package/dist/wizard/templates/mcp-templates.d.ts.map +1 -1
- package/dist/wizard/templates/mcp-templates.js +351 -7
- package/dist/wizard/templates/mcp-templates.js.map +1 -1
- package/dist/wizard/templates/mcp-templates.spec.js +257 -0
- package/dist/wizard/templates/mcp-templates.spec.js.map +1 -1
- package/dist/wizard/validation-array.spec.d.ts +2 -0
- package/dist/wizard/validation-array.spec.d.ts.map +1 -0
- package/dist/wizard/validation-array.spec.js +221 -0
- package/dist/wizard/validation-array.spec.js.map +1 -0
- package/dist/wizard/validation.d.ts +26 -1
- package/dist/wizard/validation.d.ts.map +1 -1
- package/dist/wizard/validation.js +15 -2
- package/dist/wizard/validation.js.map +1 -1
- package/dist/wizard/validation.spec.js +13 -5
- package/dist/wizard/validation.spec.js.map +1 -1
- package/package.json +7 -3
- package/source/app/prompts/main-prompt.md +6 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useModeHandlers.d.ts","sourceRoot":"","sources":["../../source/hooks/useModeHandlers.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,OAAO,EAAC,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"useModeHandlers.d.ts","sourceRoot":"","sources":["../../source/hooks/useModeHandlers.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,OAAO,EAAC,MAAM,cAAc,CAAC;AAWhD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,YAAY,CAAC;AAE5C,UAAU,oBAAoB;IAC7B,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,WAAW,CAAC;IAC1B,SAAS,EAAE,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,KAAK,IAAI,CAAC;IAC9C,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,eAAe,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IAC9C,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAC3C,uBAAuB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,0BAA0B,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACpD,uBAAuB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,wBAAwB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAClD,qBAAqB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C,cAAc,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC;IACrD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,sBAAsB,EAAE,CACvB,WAAW,EAAE,OAAO,sBAAsB,EAAE,WAAW,KACnD,OAAO,CAAC,IAAI,CAAC,CAAC;CACnB;AAED,wBAAgB,eAAe,CAAC,EAC/B,MAAM,EACN,YAAY,EACZ,eAAe,EACf,YAAY,EAAE,aAAa,EAC3B,SAAS,EACT,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,WAAW,EACX,uBAAuB,EACvB,0BAA0B,EAC1B,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,cAAc,EACd,mBAAmB,EACnB,sBAAsB,GACtB,EAAE,oBAAoB;;;;;;uCAY0B,MAAM;;6CA8BA,MAAM;;uCAsElB,WAAW;;;8CAyCE,MAAM;;EAgG7D"}
|
|
@@ -2,9 +2,10 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import { createLLMClient } from '../client-factory.js';
|
|
3
3
|
import { updateLastUsed, savePreferences, loadPreferences, } from '../config/preferences.js';
|
|
4
4
|
import { reloadAppConfig } from '../config/index.js';
|
|
5
|
+
import { getToolManager } from '../message-handler.js';
|
|
5
6
|
import SuccessMessage from '../components/success-message.js';
|
|
6
7
|
import ErrorMessage from '../components/error-message.js';
|
|
7
|
-
export function useModeHandlers({ client, currentModel, currentProvider, currentTheme: _currentTheme, setClient, setCurrentModel, setCurrentProvider, setCurrentTheme, setMessages, setIsModelSelectionMode, setIsProviderSelectionMode, setIsThemeSelectionMode, setIsRecommendationsMode, setIsConfigWizardMode, addToChatQueue, componentKeyCounter, }) {
|
|
8
|
+
export function useModeHandlers({ client, currentModel, currentProvider, currentTheme: _currentTheme, setClient, setCurrentModel, setCurrentProvider, setCurrentTheme, setMessages, setIsModelSelectionMode, setIsProviderSelectionMode, setIsThemeSelectionMode, setIsRecommendationsMode, setIsConfigWizardMode, addToChatQueue, componentKeyCounter, reinitializeMCPServers, }) {
|
|
8
9
|
// Helper function to enter model selection mode
|
|
9
10
|
const enterModelSelectionMode = () => {
|
|
10
11
|
setIsModelSelectionMode(true);
|
|
@@ -117,6 +118,17 @@ export function useModeHandlers({ client, currentModel, currentProvider, current
|
|
|
117
118
|
// Clear message history when switching providers
|
|
118
119
|
setMessages([]);
|
|
119
120
|
await newClient.clearContext();
|
|
121
|
+
// Reinitialize MCP servers with the new configuration
|
|
122
|
+
const toolManager = getToolManager();
|
|
123
|
+
if (toolManager) {
|
|
124
|
+
try {
|
|
125
|
+
await reinitializeMCPServers(toolManager);
|
|
126
|
+
addToChatQueue(_jsx(SuccessMessage, { message: "MCP servers reinitialized with new configuration.", hideBox: true }, `mcp-reinit-${componentKeyCounter}`));
|
|
127
|
+
}
|
|
128
|
+
catch (mcpError) {
|
|
129
|
+
addToChatQueue(_jsx(ErrorMessage, { message: `Failed to reinitialize MCP servers: ${String(mcpError)}`, hideBox: true }, `mcp-reinit-error-${componentKeyCounter}`));
|
|
130
|
+
}
|
|
131
|
+
}
|
|
120
132
|
addToChatQueue(_jsx(SuccessMessage, { message: `Ready! Using provider: ${actualProvider}, model: ${newModel}`, hideBox: true }, `config-init-${componentKeyCounter}`));
|
|
121
133
|
}
|
|
122
134
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useModeHandlers.js","sourceRoot":"","sources":["../../source/hooks/useModeHandlers.tsx"],"names":[],"mappings":";AACA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EACN,cAAc,EACd,eAAe,EACf,eAAe,GACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAC,eAAe,EAAC,MAAM,gBAAgB,CAAC;AAC/C,OAAO,cAAc,MAAM,8BAA8B,CAAC;AAC1D,OAAO,YAAY,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"useModeHandlers.js","sourceRoot":"","sources":["../../source/hooks/useModeHandlers.tsx"],"names":[],"mappings":";AACA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EACN,cAAc,EACd,eAAe,EACf,eAAe,GACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAC,eAAe,EAAC,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAC,cAAc,EAAC,MAAM,mBAAmB,CAAC;AACjD,OAAO,cAAc,MAAM,8BAA8B,CAAC;AAC1D,OAAO,YAAY,MAAM,4BAA4B,CAAC;AA0BtD,MAAM,UAAU,eAAe,CAAC,EAC/B,MAAM,EACN,YAAY,EACZ,eAAe,EACf,YAAY,EAAE,aAAa,EAC3B,SAAS,EACT,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,WAAW,EACX,uBAAuB,EACvB,0BAA0B,EAC1B,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,cAAc,EACd,mBAAmB,EACnB,sBAAsB,GACA;IACtB,gDAAgD;IAChD,MAAM,uBAAuB,GAAG,GAAG,EAAE;QACpC,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC,CAAC;IAEF,mDAAmD;IACnD,MAAM,0BAA0B,GAAG,GAAG,EAAE;QACvC,0BAA0B,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC,CAAC;IAEF,yBAAyB;IACzB,MAAM,iBAAiB,GAAG,KAAK,EAAE,aAAqB,EAAE,EAAE;QACzD,IAAI,MAAM,IAAI,aAAa,KAAK,YAAY,EAAE,CAAC;YAC9C,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YAC/B,eAAe,CAAC,aAAa,CAAC,CAAC;YAE/B,8CAA8C;YAC9C,WAAW,CAAC,EAAE,CAAC,CAAC;YAChB,MAAM,MAAM,CAAC,YAAY,EAAE,CAAC;YAE5B,qBAAqB;YACrB,cAAc,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;YAE/C,oCAAoC;YACpC,cAAc,CACb,KAAC,cAAc,IAEd,OAAO,EAAE,qBAAqB,aAAa,yBAAyB,EACpE,OAAO,EAAE,IAAI,IAFR,iBAAiB,mBAAmB,EAAE,CAG1C,CACF,CAAC;QACH,CAAC;QACD,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC,CAAC;IAEF,gCAAgC;IAChC,MAAM,0BAA0B,GAAG,GAAG,EAAE;QACvC,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC,CAAC;IAEF,4BAA4B;IAC5B,MAAM,oBAAoB,GAAG,KAAK,EAAE,gBAAwB,EAAE,EAAE;QAC/D,IAAI,gBAAgB,KAAK,eAAe,EAAE,CAAC;YAC1C,IAAI,CAAC;gBACJ,8CAA8C;gBAC9C,MAAM,EAAC,MAAM,EAAE,SAAS,EAAE,cAAc,EAAC,GAAG,MAAM,eAAe,CAChE,gBAAgB,CAChB,CAAC;gBAEF,4CAA4C;gBAC5C,IAAI,cAAc,KAAK,gBAAgB,EAAE,CAAC;oBACzC,wEAAwE;oBACxE,cAAc,CACb,KAAC,YAAY,IAEZ,OAAO,EAAE,GAAG,gBAAgB,kFAAkF,EAC9G,OAAO,EAAE,IAAI,IAFR,mBAAmB,mBAAmB,EAAE,CAG5C,CACF,CAAC;oBACF,OAAO,CAAC,wBAAwB;gBACjC,CAAC;gBAED,SAAS,CAAC,SAAS,CAAC,CAAC;gBACrB,kBAAkB,CAAC,cAAc,CAAC,CAAC;gBAEnC,oCAAoC;gBACpC,MAAM,QAAQ,GAAG,SAAS,CAAC,eAAe,EAAE,CAAC;gBAC7C,eAAe,CAAC,QAAQ,CAAC,CAAC;gBAE1B,iDAAiD;gBACjD,WAAW,CAAC,EAAE,CAAC,CAAC;gBAChB,MAAM,SAAS,CAAC,YAAY,EAAE,CAAC;gBAE/B,uFAAuF;gBACvF,cAAc,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;gBAEzC,oCAAoC;gBACpC,cAAc,CACb,KAAC,cAAc,IAEd,OAAO,EAAE,wBAAwB,cAAc,YAAY,QAAQ,yBAAyB,EAC5F,OAAO,EAAE,IAAI,IAFR,oBAAoB,mBAAmB,EAAE,CAG7C,CACF,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,6CAA6C;gBAC7C,cAAc,CACb,KAAC,YAAY,IAEZ,OAAO,EAAE,gCAAgC,gBAAgB,KAAK,MAAM,CACnE,KAAK,CACL,EAAE,EACH,OAAO,EAAE,IAAI,IAJR,kBAAkB,mBAAmB,EAAE,CAK3C,CACF,CAAC;YACH,CAAC;QACF,CAAC;QACD,0BAA0B,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC,CAAC;IAEF,mCAAmC;IACnC,MAAM,6BAA6B,GAAG,GAAG,EAAE;QAC1C,0BAA0B,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC,CAAC;IAEF,gDAAgD;IAChD,MAAM,uBAAuB,GAAG,GAAG,EAAE;QACpC,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC,CAAC;IAEF,yBAAyB;IACzB,MAAM,iBAAiB,GAAG,CAAC,aAA0B,EAAE,EAAE;QACxD,MAAM,WAAW,GAAG,eAAe,EAAE,CAAC;QACtC,WAAW,CAAC,aAAa,GAAG,aAAa,CAAC;QAC1C,eAAe,CAAC,WAAW,CAAC,CAAC;QAE7B,6DAA6D;QAC7D,eAAe,CAAC,aAAa,CAAC,CAAC;QAE/B,oCAAoC;QACpC,cAAc,CACb,KAAC,cAAc,IAEd,OAAO,EAAE,qBAAqB,aAAa,GAAG,EAC9C,OAAO,EAAE,IAAI,IAFR,iBAAiB,mBAAmB,EAAE,CAG1C,CACF,CAAC;QAEF,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC,CAAC;IAEF,gCAAgC;IAChC,MAAM,0BAA0B,GAAG,GAAG,EAAE;QACvC,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC,CAAC;IAEF,gDAAgD;IAChD,MAAM,wBAAwB,GAAG,GAAG,EAAE;QACrC,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC,CAAC;IAEF,gCAAgC;IAChC,MAAM,2BAA2B,GAAG,GAAG,EAAE;QACxC,wBAAwB,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC,CAAC;IAEF,8CAA8C;IAC9C,MAAM,qBAAqB,GAAG,GAAG,EAAE;QAClC,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEF,uCAAuC;IACvC,MAAM,0BAA0B,GAAG,KAAK,EAAE,UAAmB,EAAE,EAAE;QAChE,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,UAAU,EAAE,CAAC;YAChB,cAAc,CACb,KAAC,cAAc,IAEd,OAAO,EAAE,2BAA2B,UAAU,GAAG,EACjD,OAAO,EAAE,IAAI,IAFR,0BAA0B,mBAAmB,EAAE,CAGnD,CACF,CAAC;YAEF,iEAAiE;YACjE,eAAe,EAAE,CAAC;YAElB,6CAA6C;YAC7C,IAAI,CAAC;gBACJ,MAAM,WAAW,GAAG,eAAe,EAAE,CAAC;gBACtC,MAAM,EAAC,MAAM,EAAE,SAAS,EAAE,cAAc,EAAC,GAAG,MAAM,eAAe,CAChE,WAAW,CAAC,YAAY,CACxB,CAAC;gBACF,SAAS,CAAC,SAAS,CAAC,CAAC;gBACrB,kBAAkB,CAAC,cAAc,CAAC,CAAC;gBAEnC,MAAM,QAAQ,GAAG,SAAS,CAAC,eAAe,EAAE,CAAC;gBAC7C,eAAe,CAAC,QAAQ,CAAC,CAAC;gBAE1B,iDAAiD;gBACjD,WAAW,CAAC,EAAE,CAAC,CAAC;gBAChB,MAAM,SAAS,CAAC,YAAY,EAAE,CAAC;gBAE/B,sDAAsD;gBACtD,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;gBACrC,IAAI,WAAW,EAAE,CAAC;oBACjB,IAAI,CAAC;wBACJ,MAAM,sBAAsB,CAAC,WAAW,CAAC,CAAC;wBAC1C,cAAc,CACb,KAAC,cAAc,IAEd,OAAO,EAAC,mDAAmD,EAC3D,OAAO,EAAE,IAAI,IAFR,cAAc,mBAAmB,EAAE,CAGvC,CACF,CAAC;oBACH,CAAC;oBAAC,OAAO,QAAQ,EAAE,CAAC;wBACnB,cAAc,CACb,KAAC,YAAY,IAEZ,OAAO,EAAE,uCAAuC,MAAM,CACrD,QAAQ,CACR,EAAE,EACH,OAAO,EAAE,IAAI,IAJR,oBAAoB,mBAAmB,EAAE,CAK7C,CACF,CAAC;oBACH,CAAC;gBACF,CAAC;gBAED,cAAc,CACb,KAAC,cAAc,IAEd,OAAO,EAAE,0BAA0B,cAAc,YAAY,QAAQ,EAAE,EACvE,OAAO,EAAE,IAAI,IAFR,eAAe,mBAAmB,EAAE,CAGxC,CACF,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,cAAc,CACb,KAAC,YAAY,IAEZ,OAAO,EAAE,gDAAgD,MAAM,CAC9D,KAAK,CACL,EAAE,EACH,OAAO,EAAE,IAAI,IAJR,qBAAqB,mBAAmB,EAAE,CAK9C,CACF,CAAC;YACH,CAAC;QACF,CAAC;IACF,CAAC,CAAC;IAEF,MAAM,wBAAwB,GAAG,GAAG,EAAE;QACrC,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC,CAAC;IAEF,OAAO;QACN,uBAAuB;QACvB,0BAA0B;QAC1B,uBAAuB;QACvB,wBAAwB;QACxB,qBAAqB;QACrB,iBAAiB;QACjB,0BAA0B;QAC1B,oBAAoB;QACpB,6BAA6B;QAC7B,iBAAiB;QACjB,0BAA0B;QAC1B,2BAA2B;QAC3B,0BAA0B;QAC1B,wBAAwB;KACxB,CAAC;AACH,CAAC"}
|
|
@@ -25,7 +25,6 @@ export declare function useToolHandler({ pendingToolCalls, currentToolIndex, com
|
|
|
25
25
|
handleToolConfirmation: (confirmed: boolean) => void;
|
|
26
26
|
handleToolConfirmationCancel: () => void;
|
|
27
27
|
startToolConfirmationFlow: (toolCalls: ToolCall[], updatedMessages: Message[], assistantMsg: Message, systemMessage: Message) => void;
|
|
28
|
-
displayToolResult: (toolCall: ToolCall, result: ToolResult) => Promise<void>;
|
|
29
28
|
continueConversationWithToolResults: (toolResults?: ToolResult[]) => Promise<void>;
|
|
30
29
|
executeCurrentTool: () => Promise<void>;
|
|
31
30
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useToolHandler.d.ts","sourceRoot":"","sources":["../../source/hooks/useToolHandler.tsx"],"names":[],"mappings":"AAAA,OAAO,EACN,OAAO,EACP,SAAS,EACT,eAAe,EACf,QAAQ,EACR,UAAU,EACV,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAC,mBAAmB,EAAC,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"useToolHandler.d.ts","sourceRoot":"","sources":["../../source/hooks/useToolHandler.tsx"],"names":[],"mappings":"AAAA,OAAO,EACN,OAAO,EACP,SAAS,EACT,eAAe,EACf,QAAQ,EACR,UAAU,EACV,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAC,mBAAmB,EAAC,MAAM,qBAAqB,CAAC;AAOxD,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,UAAU,mBAAmB;IAC5B,gBAAgB,EAAE,QAAQ,EAAE,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB,EAAE,UAAU,EAAE,CAAC;IACnC,0BAA0B,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACvD,mBAAmB,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC;IACjD,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,uBAAuB,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IACzD,6BAA6B,EAAE,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,KAAK,IAAI,CAAC;IAC7E,yBAAyB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACnD,kBAAkB,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAC3C,cAAc,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC;IACrD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,0BAA0B,EAAE,MAAM,IAAI,CAAC;IACvC,0BAA0B,EAAE,CAC3B,aAAa,EAAE,OAAO,EACtB,QAAQ,EAAE,OAAO,EAAE,KACf,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,MAAM,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;CACrD;AAED,wBAAgB,cAAc,CAAC,EAC9B,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,0BAA0B,EAC1B,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACvB,6BAA6B,EAC7B,yBAAyB,EACzB,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,mBAAmB,EACnB,0BAA0B,EAC1B,0BAA0B,EAC1B,MAAM,EAAE,OAAO,EACf,eAAe,EAAE,gBAAgB,EACjC,kBAAkB,GAClB,EAAE,mBAAmB;wCA0CsB,OAAO;;2CAkQtC,QAAQ,EAAE,mBACJ,OAAO,EAAE,gBACZ,OAAO,iBACN,OAAO;wDA5SR,UAAU,EAAE;;EAgU3B"}
|
|
@@ -1,48 +1,12 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { processToolUse, getToolManager } from '../message-handler.js';
|
|
3
|
+
import { displayToolResult } from '../utils/tool-result-display.js';
|
|
4
|
+
import { parseToolArguments } from '../utils/tool-args-parser.js';
|
|
5
|
+
import { createCancellationResults } from '../utils/tool-cancellation.js';
|
|
6
|
+
import { getVSCodeServer } from '../vscode/index.js';
|
|
3
7
|
import InfoMessage from '../components/info-message.js';
|
|
4
8
|
import ErrorMessage from '../components/error-message.js';
|
|
5
|
-
import ToolMessage from '../components/tool-message.js';
|
|
6
|
-
import React from 'react';
|
|
7
9
|
export function useToolHandler({ pendingToolCalls, currentToolIndex, completedToolResults, currentConversationContext, setPendingToolCalls, setCurrentToolIndex, setCompletedToolResults, setCurrentConversationContext, setIsToolConfirmationMode, setIsToolExecuting, setMessages, addToChatQueue, componentKeyCounter, resetToolConfirmationState, onProcessAssistantResponse, client: _client, currentProvider: _currentProvider, setDevelopmentMode, }) {
|
|
8
|
-
// Display tool result with proper formatting
|
|
9
|
-
const displayToolResult = async (toolCall, result) => {
|
|
10
|
-
const toolManager = getToolManager();
|
|
11
|
-
if (toolManager) {
|
|
12
|
-
const formatter = toolManager.getToolFormatter(result.name);
|
|
13
|
-
if (formatter) {
|
|
14
|
-
try {
|
|
15
|
-
// Parse arguments if they're a JSON string
|
|
16
|
-
let parsedArgs = toolCall.function.arguments;
|
|
17
|
-
if (typeof parsedArgs === 'string') {
|
|
18
|
-
try {
|
|
19
|
-
parsedArgs = JSON.parse(parsedArgs);
|
|
20
|
-
}
|
|
21
|
-
catch {
|
|
22
|
-
// If parsing fails, use as-is
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
const formattedResult = await formatter(parsedArgs, result.content);
|
|
26
|
-
if (React.isValidElement(formattedResult)) {
|
|
27
|
-
addToChatQueue(React.cloneElement(formattedResult, {
|
|
28
|
-
key: `tool-result-${result.tool_call_id}-${componentKeyCounter}-${Date.now()}`,
|
|
29
|
-
}));
|
|
30
|
-
}
|
|
31
|
-
else {
|
|
32
|
-
addToChatQueue(_jsx(ToolMessage, { title: `⚒ ${result.name}`, message: String(formattedResult), hideBox: true }, `tool-result-${result.tool_call_id}-${componentKeyCounter}-${Date.now()}`));
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
catch {
|
|
36
|
-
// If formatter fails, show raw result
|
|
37
|
-
addToChatQueue(_jsx(ToolMessage, { title: `⚒ ${result.name}`, message: result.content, hideBox: true }, `tool-result-${result.tool_call_id}-${componentKeyCounter}`));
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
// No formatter, show raw result
|
|
42
|
-
addToChatQueue(_jsx(ToolMessage, { title: `⚒ ${result.name}`, message: result.content, hideBox: true }, `tool-result-${result.tool_call_id}-${componentKeyCounter}`));
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
};
|
|
46
10
|
// Continue conversation with tool results - maintains the proper loop
|
|
47
11
|
const continueConversationWithToolResults = async (toolResults) => {
|
|
48
12
|
if (!currentConversationContext) {
|
|
@@ -76,6 +40,11 @@ export function useToolHandler({ pendingToolCalls, currentToolIndex, completedTo
|
|
|
76
40
|
// Handle tool confirmation
|
|
77
41
|
const handleToolConfirmation = (confirmed) => {
|
|
78
42
|
if (!confirmed) {
|
|
43
|
+
// User cancelled - close all VS Code diffs
|
|
44
|
+
const vscodeServer = getVSCodeServer();
|
|
45
|
+
if (vscodeServer?.hasConnections()) {
|
|
46
|
+
vscodeServer.closeAllDiffs();
|
|
47
|
+
}
|
|
79
48
|
// User cancelled - show message
|
|
80
49
|
addToChatQueue(_jsx(InfoMessage, { message: "Tool execution cancelled by user", hideBox: true }, `tool-cancelled-${componentKeyCounter}`));
|
|
81
50
|
if (!currentConversationContext) {
|
|
@@ -84,12 +53,7 @@ export function useToolHandler({ pendingToolCalls, currentToolIndex, completedTo
|
|
|
84
53
|
}
|
|
85
54
|
// Create cancellation results for all pending tools
|
|
86
55
|
// This is critical to maintain conversation state integrity
|
|
87
|
-
const cancellationResults = pendingToolCalls
|
|
88
|
-
tool_call_id: toolCall.id,
|
|
89
|
-
role: 'tool',
|
|
90
|
-
name: toolCall.function.name,
|
|
91
|
-
content: 'Tool execution was cancelled by the user.',
|
|
92
|
-
}));
|
|
56
|
+
const cancellationResults = createCancellationResults(pendingToolCalls);
|
|
93
57
|
const { updatedMessages, assistantMsg } = currentConversationContext;
|
|
94
58
|
// Format tool results as standard tool messages
|
|
95
59
|
const toolMessages = cancellationResults.map(result => ({
|
|
@@ -133,16 +97,7 @@ export function useToolHandler({ pendingToolCalls, currentToolIndex, completedTo
|
|
|
133
97
|
const validator = toolManager.getToolValidator(currentTool.function.name);
|
|
134
98
|
if (validator) {
|
|
135
99
|
try {
|
|
136
|
-
|
|
137
|
-
let parsedArgs = currentTool.function.arguments;
|
|
138
|
-
if (typeof parsedArgs === 'string') {
|
|
139
|
-
try {
|
|
140
|
-
parsedArgs = JSON.parse(parsedArgs);
|
|
141
|
-
}
|
|
142
|
-
catch {
|
|
143
|
-
// If parsing fails, use as-is
|
|
144
|
-
}
|
|
145
|
-
}
|
|
100
|
+
const parsedArgs = parseToolArguments(currentTool.function.arguments);
|
|
146
101
|
const validationResult = await validator(parsedArgs);
|
|
147
102
|
if (!validationResult.valid) {
|
|
148
103
|
// Validation failed - show error and skip execution
|
|
@@ -201,18 +156,9 @@ export function useToolHandler({ pendingToolCalls, currentToolIndex, completedTo
|
|
|
201
156
|
try {
|
|
202
157
|
// Special handling for switch_mode tool
|
|
203
158
|
if (currentTool.function.name === 'switch_mode' && setDevelopmentMode) {
|
|
204
|
-
|
|
205
|
-
if (typeof parsedArgs === 'string') {
|
|
206
|
-
try {
|
|
207
|
-
parsedArgs = JSON.parse(parsedArgs);
|
|
208
|
-
}
|
|
209
|
-
catch {
|
|
210
|
-
// If parsing fails, use as-is
|
|
211
|
-
}
|
|
212
|
-
}
|
|
159
|
+
const parsedArgs = parseToolArguments(currentTool.function.arguments);
|
|
213
160
|
// Actually switch the mode
|
|
214
|
-
const requestedMode = parsedArgs
|
|
215
|
-
.mode;
|
|
161
|
+
const requestedMode = parsedArgs.mode;
|
|
216
162
|
setDevelopmentMode(requestedMode);
|
|
217
163
|
addToChatQueue(_jsx(InfoMessage, { message: `Development mode switched to: ${requestedMode.toUpperCase()}`, hideBox: true }, `mode-switched-${componentKeyCounter}-${Date.now()}`));
|
|
218
164
|
}
|
|
@@ -220,7 +166,7 @@ export function useToolHandler({ pendingToolCalls, currentToolIndex, completedTo
|
|
|
220
166
|
const newResults = [...completedToolResults, result];
|
|
221
167
|
setCompletedToolResults(newResults);
|
|
222
168
|
// Display the tool result
|
|
223
|
-
await displayToolResult(currentTool, result);
|
|
169
|
+
await displayToolResult(currentTool, result, toolManager, addToChatQueue, componentKeyCounter);
|
|
224
170
|
// Move to next tool or complete the process
|
|
225
171
|
if (currentToolIndex + 1 < pendingToolCalls.length) {
|
|
226
172
|
setCurrentToolIndex(currentToolIndex + 1);
|
|
@@ -249,12 +195,7 @@ export function useToolHandler({ pendingToolCalls, currentToolIndex, completedTo
|
|
|
249
195
|
}
|
|
250
196
|
// Create cancellation results for all pending tools
|
|
251
197
|
// This is critical to maintain conversation state integrity
|
|
252
|
-
const cancellationResults = pendingToolCalls
|
|
253
|
-
tool_call_id: toolCall.id,
|
|
254
|
-
role: 'tool',
|
|
255
|
-
name: toolCall.function.name,
|
|
256
|
-
content: 'Tool execution was cancelled by the user.',
|
|
257
|
-
}));
|
|
198
|
+
const cancellationResults = createCancellationResults(pendingToolCalls);
|
|
258
199
|
const { updatedMessages, assistantMsg } = currentConversationContext;
|
|
259
200
|
// Format tool results as standard tool messages
|
|
260
201
|
const toolMessages = cancellationResults.map(result => ({
|
|
@@ -291,7 +232,6 @@ export function useToolHandler({ pendingToolCalls, currentToolIndex, completedTo
|
|
|
291
232
|
handleToolConfirmation,
|
|
292
233
|
handleToolConfirmationCancel,
|
|
293
234
|
startToolConfirmationFlow,
|
|
294
|
-
displayToolResult,
|
|
295
235
|
continueConversationWithToolResults,
|
|
296
236
|
executeCurrentTool,
|
|
297
237
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useToolHandler.js","sourceRoot":"","sources":["../../source/hooks/useToolHandler.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAC,cAAc,EAAE,cAAc,EAAC,MAAM,mBAAmB,CAAC;AAEjE,OAAO,
|
|
1
|
+
{"version":3,"file":"useToolHandler.js","sourceRoot":"","sources":["../../source/hooks/useToolHandler.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { DiagnosticInfo } from '../vscode/protocol.js';
|
|
2
|
+
interface UseVSCodeServerProps {
|
|
3
|
+
enabled: boolean;
|
|
4
|
+
port?: number;
|
|
5
|
+
currentModel?: string;
|
|
6
|
+
currentProvider?: string;
|
|
7
|
+
onPrompt?: (prompt: string, context?: {
|
|
8
|
+
filePath?: string;
|
|
9
|
+
selection?: string;
|
|
10
|
+
cursorPosition?: {
|
|
11
|
+
line: number;
|
|
12
|
+
character: number;
|
|
13
|
+
};
|
|
14
|
+
}) => void;
|
|
15
|
+
onDiagnosticsReceived?: (diagnostics: DiagnosticInfo[]) => void;
|
|
16
|
+
}
|
|
17
|
+
interface UseVSCodeServerReturn {
|
|
18
|
+
isConnected: boolean;
|
|
19
|
+
connectionCount: number;
|
|
20
|
+
sendAssistantMessage: (content: string, isStreaming?: boolean) => void;
|
|
21
|
+
notifyFileChange: (filePath: string, originalContent: string, newContent: string, toolName: string, toolArgs: Record<string, unknown>) => string | null;
|
|
22
|
+
requestDiagnostics: (filePath?: string) => void;
|
|
23
|
+
updateStatus: () => void;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Hook to manage VS Code server integration
|
|
27
|
+
*/
|
|
28
|
+
export declare function useVSCodeServer({ enabled, port, currentModel, currentProvider, onPrompt, onDiagnosticsReceived, }: UseVSCodeServerProps): UseVSCodeServerReturn;
|
|
29
|
+
/**
|
|
30
|
+
* Check if VS Code mode was requested via CLI flag
|
|
31
|
+
*/
|
|
32
|
+
export declare function isVSCodeModeEnabled(): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Get VS Code server port from CLI args or default
|
|
35
|
+
*/
|
|
36
|
+
export declare function getVSCodePort(): number;
|
|
37
|
+
/**
|
|
38
|
+
* Helper to create file change notification with automatic content reading
|
|
39
|
+
*/
|
|
40
|
+
export declare function createFileChangeFromTool(filePath: string, newContent: string, _toolName: string, _toolArgs: Record<string, unknown>): {
|
|
41
|
+
originalContent: string;
|
|
42
|
+
newContent: string;
|
|
43
|
+
};
|
|
44
|
+
export {};
|
|
45
|
+
//# sourceMappingURL=useVSCodeServer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useVSCodeServer.d.ts","sourceRoot":"","sources":["../../source/hooks/useVSCodeServer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,mBAAmB,CAAC;AAGtD,UAAU,oBAAoB;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,CACV,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QACT,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,cAAc,CAAC,EAAE;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAC,CAAC;KACnD,KACG,IAAI,CAAC;IACV,qBAAqB,CAAC,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,KAAK,IAAI,CAAC;CAChE;AAED,UAAU,qBAAqB;IAC9B,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACvE,gBAAgB,EAAE,CACjB,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC7B,MAAM,GAAG,IAAI,CAAC;IACnB,kBAAkB,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,YAAY,EAAE,MAAM,IAAI,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAC/B,OAAO,EACP,IAAmB,EACnB,YAAY,EACZ,eAAe,EACf,QAAQ,EACR,qBAAqB,GACrB,EAAE,oBAAoB,GAAG,qBAAqB,CA4I9C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAWtC;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACvC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC;IACF,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;CACnB,CAcA"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { useEffect, useRef, useCallback, useState } from 'react';
|
|
2
|
+
import { getVSCodeServer, DEFAULT_PORT } from '../vscode/index.js';
|
|
3
|
+
import * as fs from 'fs';
|
|
4
|
+
/**
|
|
5
|
+
* Hook to manage VS Code server integration
|
|
6
|
+
*/
|
|
7
|
+
export function useVSCodeServer({ enabled, port = DEFAULT_PORT, currentModel, currentProvider, onPrompt, onDiagnosticsReceived, }) {
|
|
8
|
+
const serverRef = useRef(null);
|
|
9
|
+
const [isConnected, setIsConnected] = useState(false);
|
|
10
|
+
const [connectionCount, setConnectionCount] = useState(0);
|
|
11
|
+
// Store callbacks in refs to avoid re-creating server on callback changes
|
|
12
|
+
const onPromptRef = useRef(onPrompt);
|
|
13
|
+
const onDiagnosticsReceivedRef = useRef(onDiagnosticsReceived);
|
|
14
|
+
const currentModelRef = useRef(currentModel);
|
|
15
|
+
const currentProviderRef = useRef(currentProvider);
|
|
16
|
+
// Keep refs up to date
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
onPromptRef.current = onPrompt;
|
|
19
|
+
}, [onPrompt]);
|
|
20
|
+
useEffect(() => {
|
|
21
|
+
onDiagnosticsReceivedRef.current = onDiagnosticsReceived;
|
|
22
|
+
}, [onDiagnosticsReceived]);
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
currentModelRef.current = currentModel;
|
|
25
|
+
}, [currentModel]);
|
|
26
|
+
useEffect(() => {
|
|
27
|
+
currentProviderRef.current = currentProvider;
|
|
28
|
+
}, [currentProvider]);
|
|
29
|
+
// Initialize server on mount if enabled
|
|
30
|
+
useEffect(() => {
|
|
31
|
+
if (!enabled) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const initServer = async () => {
|
|
35
|
+
const server = getVSCodeServer(port);
|
|
36
|
+
serverRef.current = server;
|
|
37
|
+
// Set up callbacks using refs
|
|
38
|
+
server.onCallbacks({
|
|
39
|
+
onPrompt: (prompt, context) => {
|
|
40
|
+
onPromptRef.current?.(prompt, context);
|
|
41
|
+
},
|
|
42
|
+
onDiagnosticsResponse: diagnostics => {
|
|
43
|
+
onDiagnosticsReceivedRef.current?.(diagnostics);
|
|
44
|
+
},
|
|
45
|
+
onConnect: () => {
|
|
46
|
+
setIsConnected(true);
|
|
47
|
+
setConnectionCount(server.getConnectionCount());
|
|
48
|
+
// Send current status
|
|
49
|
+
if (currentModelRef.current || currentProviderRef.current) {
|
|
50
|
+
server.sendStatus(currentModelRef.current, currentProviderRef.current);
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
onDisconnect: () => {
|
|
54
|
+
const hasConnections = server.hasConnections();
|
|
55
|
+
setIsConnected(hasConnections);
|
|
56
|
+
setConnectionCount(server.getConnectionCount());
|
|
57
|
+
},
|
|
58
|
+
});
|
|
59
|
+
// Start the server
|
|
60
|
+
await server.start();
|
|
61
|
+
};
|
|
62
|
+
void initServer();
|
|
63
|
+
// Cleanup on unmount
|
|
64
|
+
return () => {
|
|
65
|
+
if (serverRef.current) {
|
|
66
|
+
void serverRef.current.stop();
|
|
67
|
+
serverRef.current = null;
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
}, [enabled, port]);
|
|
71
|
+
// Update status when model/provider changes
|
|
72
|
+
useEffect(() => {
|
|
73
|
+
if (serverRef.current && enabled && isConnected) {
|
|
74
|
+
serverRef.current.sendStatus(currentModel, currentProvider);
|
|
75
|
+
}
|
|
76
|
+
}, [enabled, currentModel, currentProvider, isConnected]);
|
|
77
|
+
const sendAssistantMessage = useCallback((content, isStreaming = false) => {
|
|
78
|
+
if (serverRef.current && enabled) {
|
|
79
|
+
serverRef.current.sendAssistantMessage(content, isStreaming);
|
|
80
|
+
}
|
|
81
|
+
}, [enabled]);
|
|
82
|
+
const notifyFileChange = useCallback((filePath, originalContent, newContent, toolName, toolArgs) => {
|
|
83
|
+
if (serverRef.current && enabled && isConnected) {
|
|
84
|
+
return serverRef.current.sendFileChange(filePath, originalContent, newContent, toolName, toolArgs);
|
|
85
|
+
}
|
|
86
|
+
return null;
|
|
87
|
+
}, [enabled, isConnected]);
|
|
88
|
+
const requestDiagnostics = useCallback((filePath) => {
|
|
89
|
+
if (serverRef.current && enabled) {
|
|
90
|
+
serverRef.current.requestDiagnostics(filePath);
|
|
91
|
+
}
|
|
92
|
+
}, [enabled]);
|
|
93
|
+
const updateStatus = useCallback(() => {
|
|
94
|
+
if (serverRef.current && enabled) {
|
|
95
|
+
serverRef.current.sendStatus(currentModel, currentProvider);
|
|
96
|
+
}
|
|
97
|
+
}, [enabled, currentModel, currentProvider]);
|
|
98
|
+
return {
|
|
99
|
+
isConnected,
|
|
100
|
+
connectionCount,
|
|
101
|
+
sendAssistantMessage,
|
|
102
|
+
notifyFileChange,
|
|
103
|
+
requestDiagnostics,
|
|
104
|
+
updateStatus,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Check if VS Code mode was requested via CLI flag
|
|
109
|
+
*/
|
|
110
|
+
export function isVSCodeModeEnabled() {
|
|
111
|
+
return process.argv.includes('--vscode');
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Get VS Code server port from CLI args or default
|
|
115
|
+
*/
|
|
116
|
+
export function getVSCodePort() {
|
|
117
|
+
const portArgIndex = process.argv.findIndex(arg => arg === '--vscode-port' || arg === '-p');
|
|
118
|
+
if (portArgIndex !== -1 && process.argv[portArgIndex + 1]) {
|
|
119
|
+
const port = parseInt(process.argv[portArgIndex + 1], 10);
|
|
120
|
+
if (!isNaN(port) && port > 0 && port < 65536) {
|
|
121
|
+
return port;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return DEFAULT_PORT;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Helper to create file change notification with automatic content reading
|
|
128
|
+
*/
|
|
129
|
+
export function createFileChangeFromTool(filePath, newContent, _toolName, _toolArgs) {
|
|
130
|
+
let originalContent = '';
|
|
131
|
+
try {
|
|
132
|
+
if (fs.existsSync(filePath)) {
|
|
133
|
+
originalContent = fs.readFileSync(filePath, 'utf-8');
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
// File doesn't exist or can't be read - that's fine for create operations
|
|
138
|
+
}
|
|
139
|
+
return {
|
|
140
|
+
originalContent,
|
|
141
|
+
newContent,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=useVSCodeServer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useVSCodeServer.js","sourceRoot":"","sources":["../../source/hooks/useVSCodeServer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LSP Integration Module
|
|
3
|
+
*
|
|
4
|
+
* Provides Language Server Protocol support for Nanocoder:
|
|
5
|
+
* - Auto-discovery of installed language servers
|
|
6
|
+
* - Multi-language support with routing
|
|
7
|
+
* - Diagnostics, completions, code actions, and formatting
|
|
8
|
+
*/
|
|
9
|
+
export { type LSPServerConfig } from './lsp-client.js';
|
|
10
|
+
export { getLSPManager, type LSPManagerConfig, type LSPInitResult, type DiagnosticsResult, } from './lsp-manager.js';
|
|
11
|
+
export { type Diagnostic, type Position, type Range, type Location, type CompletionItem, type CodeAction, type TextEdit, type WorkspaceEdit, type FormattingOptions, type PublishDiagnosticsParams, DiagnosticSeverity, } from './protocol.js';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../source/lsp/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAC,KAAK,eAAe,EAAC,MAAM,cAAc,CAAC;AAElD,OAAO,EACN,aAAa,EACb,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,iBAAiB,GACtB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACN,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,KAAK,EACV,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,kBAAkB,GAClB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LSP Integration Module
|
|
3
|
+
*
|
|
4
|
+
* Provides Language Server Protocol support for Nanocoder:
|
|
5
|
+
* - Auto-discovery of installed language servers
|
|
6
|
+
* - Multi-language support with routing
|
|
7
|
+
* - Diagnostics, completions, code actions, and formatting
|
|
8
|
+
*/
|
|
9
|
+
export { getLSPManager, } from './lsp-manager.js';
|
|
10
|
+
export { DiagnosticSeverity, } from './protocol.js';
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../source/lsp/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EACN,aAAa,GAIb,MAAM,eAAe,CAAC;AAEvB,OAAO,EAWN,kBAAkB,GAClB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LSP Client implementation
|
|
3
|
+
* Manages connections to language servers via JSON-RPC over stdio
|
|
4
|
+
*/
|
|
5
|
+
import { EventEmitter } from 'events';
|
|
6
|
+
import { InitializeResult, ServerCapabilities, Diagnostic, Position, CompletionItem, CodeAction, TextEdit, FormattingOptions } from './protocol.js';
|
|
7
|
+
export interface LSPServerConfig {
|
|
8
|
+
name: string;
|
|
9
|
+
command: string;
|
|
10
|
+
args?: string[];
|
|
11
|
+
env?: Record<string, string>;
|
|
12
|
+
languages: string[];
|
|
13
|
+
rootUri?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare class LSPClient extends EventEmitter {
|
|
16
|
+
private config;
|
|
17
|
+
private process;
|
|
18
|
+
private buffer;
|
|
19
|
+
private requestId;
|
|
20
|
+
private pendingRequests;
|
|
21
|
+
private initialized;
|
|
22
|
+
private serverCapabilities;
|
|
23
|
+
private openDocuments;
|
|
24
|
+
constructor(config: LSPServerConfig);
|
|
25
|
+
/**
|
|
26
|
+
* Start the language server process and initialize
|
|
27
|
+
*/
|
|
28
|
+
start(): Promise<InitializeResult>;
|
|
29
|
+
/**
|
|
30
|
+
* Stop the language server
|
|
31
|
+
*/
|
|
32
|
+
stop(): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Check if the server is running and initialized
|
|
35
|
+
*/
|
|
36
|
+
isReady(): boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Get server capabilities
|
|
39
|
+
*/
|
|
40
|
+
getCapabilities(): ServerCapabilities | null;
|
|
41
|
+
/**
|
|
42
|
+
* Open a text document
|
|
43
|
+
*/
|
|
44
|
+
openDocument(uri: string, languageId: string, text: string): void;
|
|
45
|
+
/**
|
|
46
|
+
* Update a text document
|
|
47
|
+
*/
|
|
48
|
+
updateDocument(uri: string, text: string): void;
|
|
49
|
+
/**
|
|
50
|
+
* Close a text document
|
|
51
|
+
*/
|
|
52
|
+
closeDocument(uri: string): void;
|
|
53
|
+
/**
|
|
54
|
+
* Get completions at a position
|
|
55
|
+
*/
|
|
56
|
+
getCompletions(uri: string, position: Position): Promise<CompletionItem[]>;
|
|
57
|
+
/**
|
|
58
|
+
* Get code actions (quick fixes, refactorings)
|
|
59
|
+
*/
|
|
60
|
+
getCodeActions(uri: string, diagnostics: Diagnostic[], startLine: number, startChar: number, endLine: number, endChar: number): Promise<CodeAction[]>;
|
|
61
|
+
/**
|
|
62
|
+
* Format a document
|
|
63
|
+
*/
|
|
64
|
+
formatDocument(uri: string, options?: Partial<FormattingOptions>): Promise<TextEdit[]>;
|
|
65
|
+
/**
|
|
66
|
+
* Request diagnostics for a document (pull model)
|
|
67
|
+
* Note: Most LSPs use push model via publishDiagnostics notification
|
|
68
|
+
*/
|
|
69
|
+
getDiagnostics(uri: string): Promise<Diagnostic[]>;
|
|
70
|
+
private initialize;
|
|
71
|
+
private sendRequest;
|
|
72
|
+
private sendNotification;
|
|
73
|
+
private send;
|
|
74
|
+
private handleData;
|
|
75
|
+
private handleMessage;
|
|
76
|
+
private handleNotification;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=lsp-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lsp-client.d.ts","sourceRoot":"","sources":["../../source/lsp/lsp-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAC,YAAY,EAAC,MAAM,QAAQ,CAAC;AACpC,OAAO,EAKN,gBAAgB,EAChB,kBAAkB,EAElB,UAAU,EAIV,QAAQ,EACR,cAAc,EAEd,UAAU,EAEV,QAAQ,EAER,iBAAiB,EAEjB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,eAAe;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAQD,qBAAa,SAAU,SAAQ,YAAY;IAS9B,OAAO,CAAC,MAAM;IAR1B,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,eAAe,CAAmD;IAC1E,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,kBAAkB,CAAmC;IAC7D,OAAO,CAAC,aAAa,CAAkC;gBAEnC,MAAM,EAAE,eAAe;IAI3C;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAsCxC;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB3B;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,eAAe,IAAI,kBAAkB,GAAG,IAAI;IAI5C;;OAEG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAgBjE;;OAEG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAY/C;;OAEG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAUhC;;OAEG;IACG,cAAc,CACnB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,QAAQ,GAChB,OAAO,CAAC,cAAc,EAAE,CAAC;IAqB5B;;OAEG;IACG,cAAc,CACnB,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,UAAU,EAAE,EACzB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACb,OAAO,CAAC,UAAU,EAAE,CAAC;IAoBxB;;OAEG;IACG,cAAc,CACnB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAClC,OAAO,CAAC,QAAQ,EAAE,CAAC;IAsBtB;;;OAGG;IACG,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;YAkB1C,UAAU;IA4ExB,OAAO,CAAC,WAAW;IA4BnB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,IAAI;IAMZ,OAAO,CAAC,UAAU;IAuClB,OAAO,CAAC,aAAa;IAqBrB,OAAO,CAAC,kBAAkB;CAW1B"}
|