@nanocollective/nanocoder 1.14.3 → 1.15.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.
Files changed (185) hide show
  1. package/README.md +25 -1
  2. package/dist/ai-sdk-client.d.ts +22 -0
  3. package/dist/ai-sdk-client.d.ts.map +1 -0
  4. package/dist/ai-sdk-client.js +385 -0
  5. package/dist/ai-sdk-client.js.map +1 -0
  6. package/dist/app.d.ts.map +1 -1
  7. package/dist/app.js +1 -1
  8. package/dist/app.js.map +1 -1
  9. package/dist/client-factory.d.ts.map +1 -1
  10. package/dist/client-factory.js +5 -5
  11. package/dist/client-factory.js.map +1 -1
  12. package/dist/commands/index.d.ts +1 -0
  13. package/dist/commands/index.d.ts.map +1 -1
  14. package/dist/commands/index.js +1 -0
  15. package/dist/commands/index.js.map +1 -1
  16. package/dist/commands/recommendations.js +1 -1
  17. package/dist/commands/recommendations.js.map +1 -1
  18. package/dist/commands/streaming.d.ts +3 -0
  19. package/dist/commands/streaming.d.ts.map +1 -0
  20. package/dist/commands/streaming.js +23 -0
  21. package/dist/commands/streaming.js.map +1 -0
  22. package/dist/commands.d.ts.map +1 -1
  23. package/dist/commands.js +17 -3
  24. package/dist/commands.js.map +1 -1
  25. package/dist/components/assistant-message.d.ts +0 -1
  26. package/dist/components/assistant-message.d.ts.map +1 -1
  27. package/dist/components/assistant-message.js +70 -122
  28. package/dist/components/assistant-message.js.map +1 -1
  29. package/dist/components/thinking-indicator.js +1 -1
  30. package/dist/components/thinking-indicator.js.map +1 -1
  31. package/dist/components/user-input.d.ts.map +1 -1
  32. package/dist/components/user-input.js +135 -27
  33. package/dist/components/user-input.js.map +1 -1
  34. package/dist/components/user-message.d.ts.map +1 -1
  35. package/dist/components/user-message.js +34 -1
  36. package/dist/components/user-message.js.map +1 -1
  37. package/dist/config/preferences.d.ts +2 -0
  38. package/dist/config/preferences.d.ts.map +1 -1
  39. package/dist/config/preferences.js +10 -0
  40. package/dist/config/preferences.js.map +1 -1
  41. package/dist/hooks/useAppInitialization.d.ts.map +1 -1
  42. package/dist/hooks/useAppInitialization.js +2 -1
  43. package/dist/hooks/useAppInitialization.js.map +1 -1
  44. package/dist/hooks/useChatHandler.d.ts +2 -0
  45. package/dist/hooks/useChatHandler.d.ts.map +1 -1
  46. package/dist/hooks/useChatHandler.js +59 -9
  47. package/dist/hooks/useChatHandler.js.map +1 -1
  48. package/dist/mcp/mcp-client.d.ts +20 -1
  49. package/dist/mcp/mcp-client.d.ts.map +1 -1
  50. package/dist/mcp/mcp-client.js +57 -0
  51. package/dist/mcp/mcp-client.js.map +1 -1
  52. package/dist/message-handler.d.ts.map +1 -1
  53. package/dist/message-handler.js +7 -2
  54. package/dist/message-handler.js.map +1 -1
  55. package/dist/tool-calling/index.d.ts +1 -1
  56. package/dist/tool-calling/index.d.ts.map +1 -1
  57. package/dist/tool-calling/index.js +1 -1
  58. package/dist/tool-calling/index.js.map +1 -1
  59. package/dist/tool-calling/json-parser.d.ts +19 -2
  60. package/dist/tool-calling/json-parser.d.ts.map +1 -1
  61. package/dist/tool-calling/json-parser.js +65 -28
  62. package/dist/tool-calling/json-parser.js.map +1 -1
  63. package/dist/tool-calling/json-parser.spec.d.ts +2 -0
  64. package/dist/tool-calling/json-parser.spec.d.ts.map +1 -0
  65. package/dist/tool-calling/json-parser.spec.js +518 -0
  66. package/dist/tool-calling/json-parser.spec.js.map +1 -0
  67. package/dist/tool-calling/tool-parser.d.ts +20 -0
  68. package/dist/tool-calling/tool-parser.d.ts.map +1 -0
  69. package/dist/tool-calling/tool-parser.js +58 -0
  70. package/dist/tool-calling/tool-parser.js.map +1 -0
  71. package/dist/tool-calling/tool-parser.spec.d.ts +2 -0
  72. package/dist/tool-calling/tool-parser.spec.d.ts.map +1 -0
  73. package/dist/tool-calling/tool-parser.spec.js +250 -0
  74. package/dist/tool-calling/tool-parser.spec.js.map +1 -0
  75. package/dist/tool-calling/xml-parser.d.ts +17 -0
  76. package/dist/tool-calling/xml-parser.d.ts.map +1 -1
  77. package/dist/tool-calling/xml-parser.js +101 -13
  78. package/dist/tool-calling/xml-parser.js.map +1 -1
  79. package/dist/tool-calling/xml-parser.spec.d.ts +2 -0
  80. package/dist/tool-calling/xml-parser.spec.d.ts.map +1 -0
  81. package/dist/tool-calling/xml-parser.spec.js +437 -0
  82. package/dist/tool-calling/xml-parser.spec.js.map +1 -0
  83. package/dist/tools/create-file.d.ts.map +1 -1
  84. package/dist/tools/create-file.js +26 -23
  85. package/dist/tools/create-file.js.map +1 -1
  86. package/dist/tools/delete-lines.d.ts.map +1 -1
  87. package/dist/tools/delete-lines.js +29 -27
  88. package/dist/tools/delete-lines.js.map +1 -1
  89. package/dist/tools/execute-bash.d.ts.map +1 -1
  90. package/dist/tools/execute-bash.js +21 -19
  91. package/dist/tools/execute-bash.js.map +1 -1
  92. package/dist/tools/fetch-url.d.ts.map +1 -1
  93. package/dist/tools/fetch-url.js +21 -19
  94. package/dist/tools/fetch-url.js.map +1 -1
  95. package/dist/tools/index.d.ts +2 -2
  96. package/dist/tools/index.d.ts.map +1 -1
  97. package/dist/tools/index.js +8 -6
  98. package/dist/tools/index.js.map +1 -1
  99. package/dist/tools/insert-lines.d.ts.map +1 -1
  100. package/dist/tools/insert-lines.js +29 -27
  101. package/dist/tools/insert-lines.js.map +1 -1
  102. package/dist/tools/read-file.d.ts.map +1 -1
  103. package/dist/tools/read-file.js +23 -19
  104. package/dist/tools/read-file.js.map +1 -1
  105. package/dist/tools/read-many-files.d.ts.map +1 -1
  106. package/dist/tools/read-many-files.js +24 -20
  107. package/dist/tools/read-many-files.js.map +1 -1
  108. package/dist/tools/replace-lines.d.ts.map +1 -1
  109. package/dist/tools/replace-lines.js +33 -31
  110. package/dist/tools/replace-lines.js.map +1 -1
  111. package/dist/tools/search-files.d.ts.map +1 -1
  112. package/dist/tools/search-files.js +33 -31
  113. package/dist/tools/search-files.js.map +1 -1
  114. package/dist/tools/tool-manager.d.ts +35 -19
  115. package/dist/tools/tool-manager.d.ts.map +1 -1
  116. package/dist/tools/tool-manager.js +63 -33
  117. package/dist/tools/tool-manager.js.map +1 -1
  118. package/dist/tools/tool-registry.d.ts +121 -0
  119. package/dist/tools/tool-registry.d.ts.map +1 -0
  120. package/dist/tools/tool-registry.js +195 -0
  121. package/dist/tools/tool-registry.js.map +1 -0
  122. package/dist/tools/web-search.d.ts.map +1 -1
  123. package/dist/tools/web-search.js +25 -23
  124. package/dist/tools/web-search.js.map +1 -1
  125. package/dist/types/config.d.ts +2 -1
  126. package/dist/types/config.d.ts.map +1 -1
  127. package/dist/types/core.d.ts +58 -3
  128. package/dist/types/core.d.ts.map +1 -1
  129. package/dist/types/core.js +2 -0
  130. package/dist/types/core.js.map +1 -1
  131. package/dist/utils/file-autocomplete.d.ts +31 -0
  132. package/dist/utils/file-autocomplete.d.ts.map +1 -0
  133. package/dist/utils/file-autocomplete.js +156 -0
  134. package/dist/utils/file-autocomplete.js.map +1 -0
  135. package/dist/utils/file-autocomplete.spec.d.ts +2 -0
  136. package/dist/utils/file-autocomplete.spec.d.ts.map +1 -0
  137. package/dist/utils/file-autocomplete.spec.js +142 -0
  138. package/dist/utils/file-autocomplete.spec.js.map +1 -0
  139. package/dist/utils/file-content-loader.d.ts +31 -0
  140. package/dist/utils/file-content-loader.d.ts.map +1 -0
  141. package/dist/utils/file-content-loader.js +142 -0
  142. package/dist/utils/file-content-loader.js.map +1 -0
  143. package/dist/utils/file-content-loader.spec.d.ts +2 -0
  144. package/dist/utils/file-content-loader.spec.d.ts.map +1 -0
  145. package/dist/utils/file-content-loader.spec.js +140 -0
  146. package/dist/utils/file-content-loader.spec.js.map +1 -0
  147. package/dist/utils/file-mention-handler.d.ts +21 -0
  148. package/dist/utils/file-mention-handler.d.ts.map +1 -0
  149. package/dist/utils/file-mention-handler.js +59 -0
  150. package/dist/utils/file-mention-handler.js.map +1 -0
  151. package/dist/utils/file-mention-handler.spec.d.ts +2 -0
  152. package/dist/utils/file-mention-handler.spec.d.ts.map +1 -0
  153. package/dist/utils/file-mention-handler.spec.js +147 -0
  154. package/dist/utils/file-mention-handler.spec.js.map +1 -0
  155. package/dist/utils/file-mention-parser.d.ts +40 -0
  156. package/dist/utils/file-mention-parser.d.ts.map +1 -0
  157. package/dist/utils/file-mention-parser.js +122 -0
  158. package/dist/utils/file-mention-parser.js.map +1 -0
  159. package/dist/utils/file-mention-parser.spec.d.ts +2 -0
  160. package/dist/utils/file-mention-parser.spec.d.ts.map +1 -0
  161. package/dist/utils/file-mention-parser.spec.js +149 -0
  162. package/dist/utils/file-mention-parser.spec.js.map +1 -0
  163. package/dist/utils/fuzzy-matching.d.ts +13 -0
  164. package/dist/utils/fuzzy-matching.d.ts.map +1 -0
  165. package/dist/utils/fuzzy-matching.js +127 -0
  166. package/dist/utils/fuzzy-matching.js.map +1 -0
  167. package/dist/utils/fuzzy-matching.spec.d.ts +2 -0
  168. package/dist/utils/fuzzy-matching.spec.d.ts.map +1 -0
  169. package/dist/utils/fuzzy-matching.spec.js +123 -0
  170. package/dist/utils/fuzzy-matching.spec.js.map +1 -0
  171. package/dist/utils/prompt-assembly.spec.js +100 -2
  172. package/dist/utils/prompt-assembly.spec.js.map +1 -1
  173. package/dist/utils/prompt-processor.d.ts +2 -2
  174. package/dist/utils/prompt-processor.d.ts.map +1 -1
  175. package/dist/utils/prompt-processor.js +24 -41
  176. package/dist/utils/prompt-processor.js.map +1 -1
  177. package/package.json +7 -4
  178. package/dist/langgraph-client.d.ts +0 -19
  179. package/dist/langgraph-client.d.ts.map +0 -1
  180. package/dist/langgraph-client.js +0 -295
  181. package/dist/langgraph-client.js.map +0 -1
  182. package/dist/mcp/mcp-tool-adapter.d.ts +0 -22
  183. package/dist/mcp/mcp-tool-adapter.d.ts.map +0 -1
  184. package/dist/mcp/mcp-tool-adapter.js +0 -50
  185. package/dist/mcp/mcp-tool-adapter.js.map +0 -1
@@ -96,7 +96,7 @@ export function processPromptTemplate(tools) {
96
96
  * Inject dynamic tool documentation into the prompt template
97
97
  */
98
98
  function injectToolDocumentation(prompt, tools) {
99
- if (tools.length === 0) {
99
+ if (Object.keys(tools).length === 0) {
100
100
  return prompt.replace(/<!-- DYNAMIC_TOOLS_SECTION_START -->[\s\S]*?<!-- DYNAMIC_TOOLS_SECTION_END -->/, 'No additional tools are currently available.');
101
101
  }
102
102
  // Generate tool documentation
@@ -109,55 +109,34 @@ function injectToolDocumentation(prompt, tools) {
109
109
  */
110
110
  function generateToolDocumentation(tools) {
111
111
  const sections = ['Available Tools\n'];
112
+ // Convert tools record to array of [name, tool] entries
113
+ const toolEntries = Object.entries(tools);
112
114
  // Group tools by category (built-in vs MCP)
113
- const builtInTools = tools.filter(tool => !tool.function.name.includes('__'));
114
- const mcpTools = tools.filter(tool => tool.function.name.includes('__'));
115
+ const builtInTools = toolEntries.filter(([name]) => !name.includes('__'));
116
+ const mcpTools = toolEntries.filter(([name]) => name.includes('__'));
115
117
  if (builtInTools.length > 0) {
116
118
  sections.push('Built-in Tools:\n');
117
- builtInTools.forEach(tool => {
118
- sections.push(formatToolDocumentation(tool));
119
+ builtInTools.forEach(([name, tool]) => {
120
+ sections.push(formatToolDocumentation(name, tool));
119
121
  });
120
122
  }
121
123
  if (mcpTools.length > 0) {
122
124
  sections.push('\nMCP Tools:\n');
123
- mcpTools.forEach(tool => {
124
- sections.push(formatToolDocumentation(tool));
125
- });
126
- }
127
- // Add XML format examples for all models
128
- if (tools.length > 0) {
129
- sections.push('\nXML Format Examples:\n');
130
- // Show tool examples in XML format
131
- tools.forEach(tool => {
132
- const params = tool.function.parameters?.properties || {};
133
- const paramNames = Object.keys(params).slice(0, 2); // Show max 2 params per example
134
- sections.push(`${tool.function.name}:`);
135
- sections.push('```xml');
136
- sections.push(`<${tool.function.name}>`);
137
- paramNames.forEach(paramName => {
138
- sections.push(`<${paramName}>value</${paramName}>`);
139
- });
140
- sections.push(`</${tool.function.name}>`);
141
- sections.push('```\n');
125
+ mcpTools.forEach(([name, tool]) => {
126
+ sections.push(formatToolDocumentation(name, tool));
142
127
  });
143
128
  }
129
+ // Note: XML format examples omitted since AI SDK tools don't expose parameter schemas
130
+ // The model will learn tool usage from function calling or from the system prompt
144
131
  return sections.join('\n');
145
132
  }
146
- function formatToolDocumentation(tool) {
147
- const { name, description, parameters } = tool.function;
148
- let doc = `${name}: ${description}\n`;
149
- if (parameters.properties && Object.keys(parameters.properties).length > 0) {
150
- doc += 'Parameters:\n';
151
- Object.entries(parameters.properties).forEach(([paramName, schema]) => {
152
- const required = parameters.required?.includes(paramName)
153
- ? ' (required)'
154
- : ' (optional)';
155
- const paramDescription = schema.description || schema.type || 'No description';
156
- doc += `- ${paramName}${required}: ${paramDescription}\n`;
157
- });
158
- doc += '\n';
159
- }
160
- return doc;
133
+ /**
134
+ * Format documentation for a single tool
135
+ */
136
+ function formatToolDocumentation(name, _tool) {
137
+ // AI SDK's Tool type doesn't expose description or parameters directly
138
+ // We just list the tool name - the model will learn from usage
139
+ return `${name}\n`;
161
140
  }
162
141
  /**
163
142
  * Assemble the final prompt by replacing all placeholders with their full content
@@ -177,8 +156,12 @@ export function assemblePrompt(inputState) {
177
156
  break;
178
157
  }
179
158
  case PlaceholderType.FILE: {
180
- // For file, could add file headers or other formatting
181
- replacementContent = placeholderContent.content;
159
+ // Format file content with header for LLM context
160
+ const fileName = placeholderContent.filePath.split('/').pop() ||
161
+ placeholderContent.filePath;
162
+ const header = `=== File: ${fileName} ===`;
163
+ const footer = '='.repeat(header.length);
164
+ replacementContent = `${header}\n${placeholderContent.content}\n${footer}`;
182
165
  break;
183
166
  }
184
167
  default: {
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-processor.js","sourceRoot":"","sources":["../../source/utils/prompt-processor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prompt-processor.js","sourceRoot":"","sources":["../../source/utils/prompt-processor.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@nanocollective/nanocoder",
3
3
  "main": "dist/cli.js",
4
- "version": "1.14.3",
4
+ "version": "1.15.0",
5
5
  "description": "A local-first CLI coding agent that brings the power of agentic coding tools like Claude Code and Gemini CLI to local models or controlled APIs like OpenRouter",
6
6
  "keywords": [
7
7
  "cli",
@@ -11,7 +11,8 @@
11
11
  "ollama",
12
12
  "openrouter",
13
13
  "local",
14
- "typescript"
14
+ "typescript",
15
+ "llama-cpp"
15
16
  ],
16
17
  "author": "Nano Collective",
17
18
  "license": "MIT",
@@ -34,6 +35,7 @@
34
35
  "build": "tsc && tsc-alias && chmod +x dist/cli.js",
35
36
  "dev": "tsc --watch",
36
37
  "start": "node dist/cli.js",
38
+ "release:nix": "./scripts/update-nix-version.sh",
37
39
  "test:all": "./scripts/test.sh",
38
40
  "test:ava": "ava",
39
41
  "test:ava:coverage": "c8 ava",
@@ -50,13 +52,14 @@
50
52
  "source/app/prompts/main-prompt.md"
51
53
  ],
52
54
  "dependencies": {
53
- "@langchain/core": "^0.3.72",
54
- "@langchain/openai": "^0.6.15",
55
+ "@ai-sdk/openai-compatible": "^1.0.24",
55
56
  "@mishieck/ink-titled-box": "^0.3.0",
56
57
  "@modelcontextprotocol/sdk": "^1.17.3",
57
58
  "@nanocollective/get-md": "^1.0.1",
59
+ "ai": "^5.0.82",
58
60
  "cheerio": "^1.1.2",
59
61
  "cli-highlight": "^2.1.11",
62
+ "cli-table3": "^0.6.5",
60
63
  "dotenv": "^17.2.3",
61
64
  "ignore": "^7.0.5",
62
65
  "ink": "^6.3.1",
@@ -1,19 +0,0 @@
1
- import type { Message, Tool, LLMClient, LangChainProviderConfig, LLMChatResponse } from './types/index.js';
2
- export declare class LangGraphClient implements LLMClient {
3
- private chatModel;
4
- private currentModel;
5
- private availableModels;
6
- private providerConfig;
7
- private modelInfoCache;
8
- private undiciAgent;
9
- constructor(providerConfig: LangChainProviderConfig);
10
- static create(providerConfig: LangChainProviderConfig): Promise<LangGraphClient>;
11
- private createChatModel;
12
- setModel(model: string): void;
13
- getCurrentModel(): string;
14
- getContextSize(): number;
15
- getAvailableModels(): Promise<string[]>;
16
- chat(messages: Message[], tools: Tool[], signal?: AbortSignal): Promise<LLMChatResponse>;
17
- clearContext(): Promise<void>;
18
- }
19
- //# sourceMappingURL=langgraph-client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"langgraph-client.d.ts","sourceRoot":"","sources":["../source/langgraph-client.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACX,OAAO,EACP,IAAI,EACJ,SAAS,EACT,uBAAuB,EACvB,eAAe,EACf,MAAM,eAAe,CAAC;AAoJvB,qBAAa,eAAgB,YAAW,SAAS;IAChD,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,eAAe,CAAW;IAClC,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,cAAc,CAAqC;IAC3D,OAAO,CAAC,WAAW,CAAQ;gBAEf,cAAc,EAAE,uBAAuB;IA0BnD,MAAM,CAAC,MAAM,CACZ,cAAc,EAAE,uBAAuB,GACrC,OAAO,CAAC,eAAe,CAAC;IAK3B,OAAO,CAAC,eAAe;IA8CvB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK7B,eAAe,IAAI,MAAM;IAIzB,cAAc,IAAI,MAAM;IA0BxB,kBAAkB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIjC,IAAI,CACT,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,EAAE,IAAI,EAAE,EACb,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,eAAe,CAAC;IAoGrB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;CAGnC"}
@@ -1,295 +0,0 @@
1
- import { ChatOpenAI } from '@langchain/openai';
2
- import { Agent, fetch } from 'undici';
3
- import { AIMessage, HumanMessage, SystemMessage, ToolMessage, } from '@langchain/core/messages';
4
- import { XMLToolCallParser } from './tool-calling/xml-parser.js';
5
- /**
6
- * Parses LangChain/API errors into user-friendly messages
7
- */
8
- function parseAPIError(error) {
9
- if (!(error instanceof Error)) {
10
- return 'An unknown error occurred while communicating with the model';
11
- }
12
- const errorMessage = error.message;
13
- // Extract status code and clean message from common error patterns
14
- // Pattern: "400 400 Bad Request: message" or "Error: 400 message"
15
- const statusMatch = errorMessage.match(/(?:Error: )?(\d{3})\s+(?:\d{3}\s+)?(?:Bad Request|[^:]+):\s*(.+)/i);
16
- if (statusMatch) {
17
- const [, statusCode, message] = statusMatch;
18
- const cleanMessage = message.trim();
19
- switch (statusCode) {
20
- case '400':
21
- return `Bad request: ${cleanMessage}`;
22
- case '401':
23
- return 'Authentication failed: Invalid API key or credentials';
24
- case '403':
25
- return 'Access forbidden: Check your API permissions';
26
- case '404':
27
- return 'Model not found: The requested model may not exist or is unavailable';
28
- case '429':
29
- return 'Rate limit exceeded: Too many requests. Please wait and try again';
30
- case '500':
31
- case '502':
32
- case '503':
33
- return `Server error: ${cleanMessage}`;
34
- default:
35
- return `Request failed (${statusCode}): ${cleanMessage}`;
36
- }
37
- }
38
- // Handle timeout errors
39
- if (errorMessage.includes('timeout') || errorMessage.includes('ETIMEDOUT')) {
40
- return 'Request timed out: The model took too long to respond';
41
- }
42
- // Handle network errors
43
- if (errorMessage.includes('ECONNREFUSED') ||
44
- errorMessage.includes('connect')) {
45
- return 'Connection failed: Unable to reach the model server';
46
- }
47
- // Handle context length errors specifically
48
- if (errorMessage.includes('context length') ||
49
- errorMessage.includes('too many tokens')) {
50
- return 'Context too large: Please reduce the conversation length or message size';
51
- }
52
- // Handle token limit errors
53
- if (errorMessage.includes('reduce the number of tokens')) {
54
- return 'Too many tokens: Please shorten your message or clear conversation history';
55
- }
56
- // If we can't parse it, return a cleaned up version
57
- // Remove "Error: " prefix and any technical stack traces
58
- return errorMessage.replace(/^Error:\s*/i, '').split('\n')[0];
59
- }
60
- /**
61
- * Converts our Message format to LangChain BaseMessage format
62
- */
63
- function convertToLangChainMessage(message) {
64
- switch (message.role) {
65
- case 'user':
66
- return new HumanMessage(message.content || '');
67
- case 'system':
68
- return new SystemMessage(message.content || '');
69
- case 'assistant':
70
- if (message.tool_calls && message.tool_calls.length > 0) {
71
- return new AIMessage({
72
- content: message.content || '',
73
- tool_calls: message.tool_calls.map(tc => ({
74
- id: tc.id,
75
- name: tc.function.name,
76
- args: tc.function.arguments,
77
- })),
78
- });
79
- }
80
- return new AIMessage(message.content || '');
81
- case 'tool':
82
- return new ToolMessage({
83
- content: message.content || '',
84
- tool_call_id: message.tool_call_id || '',
85
- name: message.name || '',
86
- });
87
- default: {
88
- const unknownMessage = message;
89
- throw new Error(`Unsupported message role: ${unknownMessage.role}`);
90
- }
91
- }
92
- }
93
- /**
94
- * Converts LangChain AIMessage back to our Message format
95
- */
96
- function convertFromLangChainMessage(message) {
97
- const result = {
98
- role: 'assistant',
99
- content: message.content,
100
- };
101
- if (message.tool_calls && message.tool_calls.length > 0) {
102
- result.tool_calls = message.tool_calls.map(tc => ({
103
- id: tc.id || '',
104
- function: {
105
- name: tc.name,
106
- arguments: tc.args,
107
- },
108
- }));
109
- }
110
- return result;
111
- }
112
- export class LangGraphClient {
113
- chatModel;
114
- currentModel;
115
- availableModels;
116
- providerConfig;
117
- modelInfoCache = new Map();
118
- undiciAgent;
119
- constructor(providerConfig) {
120
- this.providerConfig = providerConfig;
121
- this.availableModels = providerConfig.models;
122
- this.currentModel = providerConfig.models[0] || '';
123
- const { requestTimeout, socketTimeout, connectionPool } = this.providerConfig;
124
- const resolvedSocketTimeout = socketTimeout === -1
125
- ? 0
126
- : socketTimeout || requestTimeout === -1
127
- ? 0
128
- : requestTimeout || 120000;
129
- this.undiciAgent = new Agent({
130
- connect: {
131
- timeout: resolvedSocketTimeout,
132
- },
133
- bodyTimeout: resolvedSocketTimeout,
134
- headersTimeout: resolvedSocketTimeout,
135
- keepAliveTimeout: connectionPool?.idleTimeout,
136
- keepAliveMaxTimeout: connectionPool?.cumulativeMaxIdleTimeout,
137
- });
138
- this.chatModel = this.createChatModel();
139
- }
140
- static create(providerConfig) {
141
- const client = new LangGraphClient(providerConfig);
142
- return Promise.resolve(client);
143
- }
144
- createChatModel() {
145
- const { config, requestTimeout } = this.providerConfig;
146
- const customFetch = (url, options = {}) => {
147
- // Ensure the abort signal is preserved from options
148
- return fetch(url, {
149
- ...options,
150
- signal: options.signal, // Explicitly preserve the signal
151
- dispatcher: this.undiciAgent,
152
- });
153
- };
154
- // Add OpenRouter-specific headers for app attribution
155
- const defaultHeaders = {};
156
- if (this.providerConfig.name.toLowerCase() === 'openrouter') {
157
- defaultHeaders['HTTP-Referer'] =
158
- 'https://github.com/Nano-Collective/nanocoder';
159
- defaultHeaders['X-Title'] = 'Nanocoder';
160
- }
161
- const chatConfig = {
162
- modelName: this.currentModel,
163
- openAIApiKey: config.apiKey ?? 'dummy-key',
164
- configuration: {
165
- baseURL: config.baseURL ?? '',
166
- fetch: customFetch,
167
- defaultHeaders,
168
- },
169
- ...config,
170
- };
171
- if (requestTimeout === -1) {
172
- chatConfig.timeout = undefined;
173
- }
174
- else if (requestTimeout) {
175
- chatConfig.timeout = requestTimeout;
176
- }
177
- else {
178
- // default
179
- chatConfig.timeout = 120000; // 2 minutes
180
- }
181
- return new ChatOpenAI(chatConfig);
182
- }
183
- setModel(model) {
184
- this.currentModel = model;
185
- this.chatModel = this.createChatModel();
186
- }
187
- getCurrentModel() {
188
- return this.currentModel;
189
- }
190
- getContextSize() {
191
- // For OpenRouter, get from cached model info
192
- if (this.providerConfig.name.toLowerCase() === 'openrouter') {
193
- const modelData = this.modelInfoCache.get(this.currentModel);
194
- if (modelData?.context_length) {
195
- return modelData.context_length;
196
- }
197
- return 0;
198
- }
199
- // For OpenAI-compatible (local models), we can't reliably know the context
200
- if (this.providerConfig.name === 'openai-compatible') {
201
- return 0;
202
- }
203
- // Try to get from LangChain model if available
204
- const chatModelWithMaxTokens = this.chatModel;
205
- if (chatModelWithMaxTokens.maxTokens) {
206
- return chatModelWithMaxTokens.maxTokens;
207
- }
208
- return 0;
209
- }
210
- getAvailableModels() {
211
- return Promise.resolve(this.availableModels);
212
- }
213
- async chat(messages, tools, signal) {
214
- // Check if already aborted before starting
215
- if (signal?.aborted) {
216
- throw new Error('Operation was cancelled');
217
- }
218
- try {
219
- const langchainMessages = messages.map(convertToLangChainMessage);
220
- let result;
221
- // Create options object with abort signal if provided
222
- const invokeOptions = signal ? { signal } : {};
223
- // Try to bind tools if available - fallback to XML parsing
224
- if (tools.length > 0) {
225
- try {
226
- // Convert our tools to LangChain format
227
- const langchainTools = tools.map(tool => ({
228
- type: 'function',
229
- function: {
230
- name: tool.function.name,
231
- description: tool.function.description,
232
- parameters: tool.function.parameters,
233
- },
234
- }));
235
- // Try binding tools to the model
236
- const modelWithTools = this.chatModel.bindTools(langchainTools, {
237
- parallel_tool_calls: false,
238
- });
239
- result = (await modelWithTools.invoke(langchainMessages, invokeOptions));
240
- }
241
- catch {
242
- // Tool binding failed, fall back to base model
243
- result = (await this.chatModel.invoke(langchainMessages, invokeOptions));
244
- }
245
- }
246
- else {
247
- // No tools, use base model
248
- result = (await this.chatModel.invoke(langchainMessages, invokeOptions));
249
- }
250
- let convertedMessage = convertFromLangChainMessage(result);
251
- // If no native tool calls but tools are available, try XML parsing
252
- if (tools.length > 0 &&
253
- (!convertedMessage.tool_calls ||
254
- convertedMessage.tool_calls.length === 0) &&
255
- convertedMessage.content) {
256
- const content = convertedMessage.content;
257
- if (XMLToolCallParser.hasToolCalls(content)) {
258
- const parsedToolCalls = XMLToolCallParser.parseToolCalls(content);
259
- const toolCalls = XMLToolCallParser.convertToToolCalls(parsedToolCalls);
260
- const cleanedContent = XMLToolCallParser.removeToolCallsFromContent(content);
261
- convertedMessage = {
262
- ...convertedMessage,
263
- content: cleanedContent,
264
- tool_calls: toolCalls,
265
- };
266
- }
267
- }
268
- return {
269
- choices: [
270
- {
271
- message: {
272
- role: 'assistant',
273
- content: convertedMessage.content,
274
- tool_calls: convertedMessage.tool_calls,
275
- },
276
- },
277
- ],
278
- };
279
- }
280
- catch (error) {
281
- // Check if this was a cancellation
282
- if (error instanceof Error && error.name === 'AbortError') {
283
- throw new Error('Operation was cancelled');
284
- }
285
- // Parse and throw a user-friendly error
286
- const userMessage = parseAPIError(error);
287
- // Throw cleaned error for user display
288
- throw new Error(userMessage);
289
- }
290
- }
291
- async clearContext() {
292
- // No internal state to clear in unified approach
293
- }
294
- }
295
- //# sourceMappingURL=langgraph-client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"langgraph-client.js","sourceRoot":"","sources":["../source/langgraph-client.ts"],"names":[],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- import type { ToolHandler } from '../types/index.js';
2
- import { MCPClient } from '../mcp/mcp-client.js';
3
- /**
4
- * Creates tool handlers for MCP tools that integrate with the existing tool system
5
- */
6
- export declare class MCPToolAdapter {
7
- private mcpClient;
8
- constructor(mcpClient: MCPClient);
9
- /**
10
- * Creates a tool handler function for an MCP tool
11
- */
12
- createToolHandler(toolName: string): ToolHandler;
13
- /**
14
- * Registers all MCP tools in the tool registry
15
- */
16
- registerMCPTools(toolRegistry: Record<string, ToolHandler>): void;
17
- /**
18
- * Unregisters all MCP tools from the tool registry
19
- */
20
- unregisterMCPTools(toolRegistry: Record<string, ToolHandler>): void;
21
- }
22
- //# sourceMappingURL=mcp-tool-adapter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp-tool-adapter.d.ts","sourceRoot":"","sources":["../../source/mcp/mcp-tool-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAC,SAAS,EAAC,MAAM,kBAAkB,CAAC;AAG3C;;GAEG;AACH,qBAAa,cAAc;IAC1B,OAAO,CAAC,SAAS,CAAY;gBAEjB,SAAS,EAAE,SAAS;IAIhC;;OAEG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW;IAahD;;OAEG;IACH,gBAAgB,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,IAAI;IAejE;;OAEG;IACH,kBAAkB,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,IAAI;CAQnE"}
@@ -1,50 +0,0 @@
1
- import { logError } from '../utils/message-queue.js';
2
- /**
3
- * Creates tool handlers for MCP tools that integrate with the existing tool system
4
- */
5
- export class MCPToolAdapter {
6
- mcpClient;
7
- constructor(mcpClient) {
8
- this.mcpClient = mcpClient;
9
- }
10
- /**
11
- * Creates a tool handler function for an MCP tool
12
- */
13
- createToolHandler(toolName) {
14
- return async (args) => {
15
- try {
16
- const result = await this.mcpClient.callTool(toolName, args);
17
- return result;
18
- }
19
- catch (error) {
20
- const errorMessage = error instanceof Error ? error.message : 'Unknown error';
21
- return `Error executing MCP tool: ${errorMessage}`;
22
- }
23
- };
24
- }
25
- /**
26
- * Registers all MCP tools in the tool registry
27
- */
28
- registerMCPTools(toolRegistry) {
29
- const mcpTools = this.mcpClient.getAllTools();
30
- for (const tool of mcpTools) {
31
- const toolName = tool.function.name;
32
- // Check for conflicts with existing tools
33
- if (toolRegistry[toolName]) {
34
- logError(`Warning: MCP tool "${toolName}" conflicts with existing tool. MCP tool will override.`);
35
- }
36
- toolRegistry[toolName] = this.createToolHandler(toolName);
37
- }
38
- }
39
- /**
40
- * Unregisters all MCP tools from the tool registry
41
- */
42
- unregisterMCPTools(toolRegistry) {
43
- const mcpTools = this.mcpClient.getAllTools();
44
- for (const tool of mcpTools) {
45
- const toolName = tool.function.name;
46
- delete toolRegistry[toolName];
47
- }
48
- }
49
- }
50
- //# sourceMappingURL=mcp-tool-adapter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp-tool-adapter.js","sourceRoot":"","sources":["../../source/mcp/mcp-tool-adapter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AAE/C;;GAEG;AACH,MAAM,OAAO,cAAc;IAClB,SAAS,CAAY;IAE7B,YAAY,SAAoB;QAC/B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,QAAgB;QACjC,OAAO,KAAK,EAAE,IAA6B,EAAE,EAAE;YAC9C,IAAI,CAAC;gBACJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBAC7D,OAAO,MAAM,CAAC;YACf,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,MAAM,YAAY,GACjB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;gBAC1D,OAAO,6BAA6B,YAAY,EAAE,CAAC;YACpD,CAAC;QACF,CAAC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,YAAyC;QACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;QAE9C,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACpC,0CAA0C;YAC1C,IAAI,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC5B,QAAQ,CACP,sBAAsB,QAAQ,yDAAyD,CACvF,CAAC;YACH,CAAC;YACD,YAAY,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAC3D,CAAC;IACF,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,YAAyC;QAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;QAE9C,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACpC,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC;IACF,CAAC;CACD"}