@agenticc/core 1.0.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 (196) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +370 -0
  3. package/README.zh-CN.md +372 -0
  4. package/dist/audit/index.d.ts +9 -0
  5. package/dist/audit/index.d.ts.map +1 -0
  6. package/dist/audit/index.js +9 -0
  7. package/dist/audit/index.js.map +1 -0
  8. package/dist/audit/logger.d.ts +211 -0
  9. package/dist/audit/logger.d.ts.map +1 -0
  10. package/dist/audit/logger.js +268 -0
  11. package/dist/audit/logger.js.map +1 -0
  12. package/dist/audit/query.d.ts +164 -0
  13. package/dist/audit/query.d.ts.map +1 -0
  14. package/dist/audit/query.js +250 -0
  15. package/dist/audit/query.js.map +1 -0
  16. package/dist/conversation/context-builder.d.ts +119 -0
  17. package/dist/conversation/context-builder.d.ts.map +1 -0
  18. package/dist/conversation/context-builder.js +252 -0
  19. package/dist/conversation/context-builder.js.map +1 -0
  20. package/dist/conversation/index.d.ts +10 -0
  21. package/dist/conversation/index.d.ts.map +1 -0
  22. package/dist/conversation/index.js +10 -0
  23. package/dist/conversation/index.js.map +1 -0
  24. package/dist/conversation/message-store.d.ts +231 -0
  25. package/dist/conversation/message-store.d.ts.map +1 -0
  26. package/dist/conversation/message-store.js +404 -0
  27. package/dist/conversation/message-store.js.map +1 -0
  28. package/dist/conversation/session.d.ts +201 -0
  29. package/dist/conversation/session.d.ts.map +1 -0
  30. package/dist/conversation/session.js +285 -0
  31. package/dist/conversation/session.js.map +1 -0
  32. package/dist/core/agent.d.ts +277 -0
  33. package/dist/core/agent.d.ts.map +1 -0
  34. package/dist/core/agent.js +674 -0
  35. package/dist/core/agent.js.map +1 -0
  36. package/dist/core/agentic-loop.d.ts +98 -0
  37. package/dist/core/agentic-loop.d.ts.map +1 -0
  38. package/dist/core/agentic-loop.js +496 -0
  39. package/dist/core/agentic-loop.js.map +1 -0
  40. package/dist/core/index.d.ts +14 -0
  41. package/dist/core/index.d.ts.map +1 -0
  42. package/dist/core/index.js +14 -0
  43. package/dist/core/index.js.map +1 -0
  44. package/dist/core/intent-parser.d.ts +101 -0
  45. package/dist/core/intent-parser.d.ts.map +1 -0
  46. package/dist/core/intent-parser.js +221 -0
  47. package/dist/core/intent-parser.js.map +1 -0
  48. package/dist/core/plan-generator.d.ts +133 -0
  49. package/dist/core/plan-generator.d.ts.map +1 -0
  50. package/dist/core/plan-generator.js +294 -0
  51. package/dist/core/plan-generator.js.map +1 -0
  52. package/dist/core/plugin-manager.d.ts +120 -0
  53. package/dist/core/plugin-manager.d.ts.map +1 -0
  54. package/dist/core/plugin-manager.js +369 -0
  55. package/dist/core/plugin-manager.js.map +1 -0
  56. package/dist/core/response-handler.d.ts +141 -0
  57. package/dist/core/response-handler.d.ts.map +1 -0
  58. package/dist/core/response-handler.js +384 -0
  59. package/dist/core/response-handler.js.map +1 -0
  60. package/dist/core/tool-executor.d.ts +143 -0
  61. package/dist/core/tool-executor.d.ts.map +1 -0
  62. package/dist/core/tool-executor.js +354 -0
  63. package/dist/core/tool-executor.js.map +1 -0
  64. package/dist/core/tool-registry.d.ts +133 -0
  65. package/dist/core/tool-registry.d.ts.map +1 -0
  66. package/dist/core/tool-registry.js +252 -0
  67. package/dist/core/tool-registry.js.map +1 -0
  68. package/dist/index.d.ts +44 -0
  69. package/dist/index.d.ts.map +1 -0
  70. package/dist/index.js +47 -0
  71. package/dist/index.js.map +1 -0
  72. package/dist/knowledge/chunker.d.ts +78 -0
  73. package/dist/knowledge/chunker.d.ts.map +1 -0
  74. package/dist/knowledge/chunker.js +233 -0
  75. package/dist/knowledge/chunker.js.map +1 -0
  76. package/dist/knowledge/embedder.d.ts +93 -0
  77. package/dist/knowledge/embedder.d.ts.map +1 -0
  78. package/dist/knowledge/embedder.js +205 -0
  79. package/dist/knowledge/embedder.js.map +1 -0
  80. package/dist/knowledge/index.d.ts +10 -0
  81. package/dist/knowledge/index.d.ts.map +1 -0
  82. package/dist/knowledge/index.js +11 -0
  83. package/dist/knowledge/index.js.map +1 -0
  84. package/dist/knowledge/loaders/index.d.ts +10 -0
  85. package/dist/knowledge/loaders/index.d.ts.map +1 -0
  86. package/dist/knowledge/loaders/index.js +10 -0
  87. package/dist/knowledge/loaders/index.js.map +1 -0
  88. package/dist/knowledge/loaders/markdown.d.ts +88 -0
  89. package/dist/knowledge/loaders/markdown.d.ts.map +1 -0
  90. package/dist/knowledge/loaders/markdown.js +205 -0
  91. package/dist/knowledge/loaders/markdown.js.map +1 -0
  92. package/dist/knowledge/loaders/yaml.d.ts +112 -0
  93. package/dist/knowledge/loaders/yaml.d.ts.map +1 -0
  94. package/dist/knowledge/loaders/yaml.js +368 -0
  95. package/dist/knowledge/loaders/yaml.js.map +1 -0
  96. package/dist/knowledge/retriever.d.ts +144 -0
  97. package/dist/knowledge/retriever.d.ts.map +1 -0
  98. package/dist/knowledge/retriever.js +399 -0
  99. package/dist/knowledge/retriever.js.map +1 -0
  100. package/dist/knowledge/store.d.ts +146 -0
  101. package/dist/knowledge/store.d.ts.map +1 -0
  102. package/dist/knowledge/store.js +420 -0
  103. package/dist/knowledge/store.js.map +1 -0
  104. package/dist/llm/adapter.d.ts +194 -0
  105. package/dist/llm/adapter.d.ts.map +1 -0
  106. package/dist/llm/adapter.js +42 -0
  107. package/dist/llm/adapter.js.map +1 -0
  108. package/dist/llm/adapters/anyrouter.d.ts +84 -0
  109. package/dist/llm/adapters/anyrouter.d.ts.map +1 -0
  110. package/dist/llm/adapters/anyrouter.js +372 -0
  111. package/dist/llm/adapters/anyrouter.js.map +1 -0
  112. package/dist/llm/adapters/claude.d.ts +66 -0
  113. package/dist/llm/adapters/claude.d.ts.map +1 -0
  114. package/dist/llm/adapters/claude.js +323 -0
  115. package/dist/llm/adapters/claude.js.map +1 -0
  116. package/dist/llm/adapters/index.d.ts +12 -0
  117. package/dist/llm/adapters/index.d.ts.map +1 -0
  118. package/dist/llm/adapters/index.js +12 -0
  119. package/dist/llm/adapters/index.js.map +1 -0
  120. package/dist/llm/adapters/mimo.d.ts +85 -0
  121. package/dist/llm/adapters/mimo.d.ts.map +1 -0
  122. package/dist/llm/adapters/mimo.js +316 -0
  123. package/dist/llm/adapters/mimo.js.map +1 -0
  124. package/dist/llm/adapters/openai.d.ts +53 -0
  125. package/dist/llm/adapters/openai.d.ts.map +1 -0
  126. package/dist/llm/adapters/openai.js +293 -0
  127. package/dist/llm/adapters/openai.js.map +1 -0
  128. package/dist/llm/adapters/qwen.d.ts +53 -0
  129. package/dist/llm/adapters/qwen.d.ts.map +1 -0
  130. package/dist/llm/adapters/qwen.js +299 -0
  131. package/dist/llm/adapters/qwen.js.map +1 -0
  132. package/dist/llm/adapters/siliconflow.d.ts +69 -0
  133. package/dist/llm/adapters/siliconflow.d.ts.map +1 -0
  134. package/dist/llm/adapters/siliconflow.js +331 -0
  135. package/dist/llm/adapters/siliconflow.js.map +1 -0
  136. package/dist/llm/index.d.ts +9 -0
  137. package/dist/llm/index.d.ts.map +1 -0
  138. package/dist/llm/index.js +12 -0
  139. package/dist/llm/index.js.map +1 -0
  140. package/dist/llm/manager.d.ts +97 -0
  141. package/dist/llm/manager.d.ts.map +1 -0
  142. package/dist/llm/manager.js +337 -0
  143. package/dist/llm/manager.js.map +1 -0
  144. package/dist/test-utils/arbitraries.d.ts +230 -0
  145. package/dist/test-utils/arbitraries.d.ts.map +1 -0
  146. package/dist/test-utils/arbitraries.js +280 -0
  147. package/dist/test-utils/arbitraries.js.map +1 -0
  148. package/dist/test-utils/cleanup.d.ts +184 -0
  149. package/dist/test-utils/cleanup.d.ts.map +1 -0
  150. package/dist/test-utils/cleanup.js +282 -0
  151. package/dist/test-utils/cleanup.js.map +1 -0
  152. package/dist/test-utils/config.d.ts +80 -0
  153. package/dist/test-utils/config.d.ts.map +1 -0
  154. package/dist/test-utils/config.js +94 -0
  155. package/dist/test-utils/config.js.map +1 -0
  156. package/dist/test-utils/index.d.ts +10 -0
  157. package/dist/test-utils/index.d.ts.map +1 -0
  158. package/dist/test-utils/index.js +36 -0
  159. package/dist/test-utils/index.js.map +1 -0
  160. package/dist/test-utils/mocks.d.ts +170 -0
  161. package/dist/test-utils/mocks.d.ts.map +1 -0
  162. package/dist/test-utils/mocks.js +281 -0
  163. package/dist/test-utils/mocks.js.map +1 -0
  164. package/dist/types/config.d.ts +170 -0
  165. package/dist/types/config.d.ts.map +1 -0
  166. package/dist/types/config.js +120 -0
  167. package/dist/types/config.js.map +1 -0
  168. package/dist/types/knowledge.d.ts +95 -0
  169. package/dist/types/knowledge.d.ts.map +1 -0
  170. package/dist/types/knowledge.js +7 -0
  171. package/dist/types/knowledge.js.map +1 -0
  172. package/dist/types/loop.d.ts +148 -0
  173. package/dist/types/loop.d.ts.map +1 -0
  174. package/dist/types/loop.js +16 -0
  175. package/dist/types/loop.js.map +1 -0
  176. package/dist/types/plugin.d.ts +137 -0
  177. package/dist/types/plugin.d.ts.map +1 -0
  178. package/dist/types/plugin.js +15 -0
  179. package/dist/types/plugin.js.map +1 -0
  180. package/dist/types/response.d.ts +186 -0
  181. package/dist/types/response.d.ts.map +1 -0
  182. package/dist/types/response.js +99 -0
  183. package/dist/types/response.js.map +1 -0
  184. package/dist/types/streaming.d.ts +478 -0
  185. package/dist/types/streaming.d.ts.map +1 -0
  186. package/dist/types/streaming.js +483 -0
  187. package/dist/types/streaming.js.map +1 -0
  188. package/dist/types/tool.d.ts +118 -0
  189. package/dist/types/tool.d.ts.map +1 -0
  190. package/dist/types/tool.js +42 -0
  191. package/dist/types/tool.js.map +1 -0
  192. package/dist/utils/error.d.ts +22 -0
  193. package/dist/utils/error.d.ts.map +1 -0
  194. package/dist/utils/error.js +36 -0
  195. package/dist/utils/error.js.map +1 -0
  196. package/package.json +102 -0
@@ -0,0 +1,84 @@
1
+ /**
2
+ * AnyRouter LLM Adapter
3
+ *
4
+ * Implements the LLMAdapter interface for AnyRouter API.
5
+ * AnyRouter is a Claude Code API proxy service that provides
6
+ * OpenAI-compatible API access to Claude models.
7
+ *
8
+ * @see https://docs.anyrouter.top
9
+ */
10
+ import type { LLMAdapter, LLMAdapterConfig, GenerateOptions, ChatMessage, LLMResponse, EmbeddingResult, StreamCallback } from '../adapter.js';
11
+ import type { ToolDefinition } from '../../types/tool.js';
12
+ /**
13
+ * AnyRouter API endpoints
14
+ */
15
+ export declare const ANYROUTER_ENDPOINTS: {
16
+ /** Main site - direct connection */
17
+ readonly MAIN: "https://anyrouter.top";
18
+ /** China mainland optimized endpoint 1 */
19
+ readonly CN_OPTIMIZED_1: "https://pmpjfbhq.cn-nb1.rainapp.top";
20
+ /** China mainland optimized endpoint 2 */
21
+ readonly CN_OPTIMIZED_2: "https://a-ocnfniawgw.cn-shanghai.fcapp.run";
22
+ };
23
+ /**
24
+ * Available Claude models via AnyRouter
25
+ */
26
+ export declare const ANYROUTER_MODELS: {
27
+ readonly CLAUDE_OPUS_4_5: "claude-opus-4-5";
28
+ readonly CLAUDE_SONNET_4_5: "claude-sonnet-4-5";
29
+ readonly CLAUDE_3_5_SONNET: "claude-3-5-sonnet-20241022";
30
+ readonly CLAUDE_3_5_HAIKU: "claude-3-5-haiku-20241022";
31
+ readonly CLAUDE_3_OPUS: "claude-3-opus-20240229";
32
+ readonly GEMINI_2_5_PRO: "gemini-2.5-pro";
33
+ };
34
+ /**
35
+ * AnyRouter-specific configuration
36
+ */
37
+ export interface AnyRouterAdapterConfig extends LLMAdapterConfig {
38
+ /** Use China mainland optimized endpoint (default: false) */
39
+ useChinaEndpoint?: boolean;
40
+ /** Specific endpoint URL override */
41
+ endpoint?: string;
42
+ }
43
+ /**
44
+ * AnyRouter LLM Adapter implementation
45
+ *
46
+ * Provides access to Claude models via AnyRouter proxy with support for:
47
+ * - OpenAI-compatible chat completions
48
+ * - Function/tool calling
49
+ * - Streaming responses
50
+ * - China mainland optimized endpoints
51
+ */
52
+ export declare class AnyRouterAdapter implements LLMAdapter {
53
+ readonly provider = "anyrouter";
54
+ readonly model: string;
55
+ private client;
56
+ private defaultTemperature;
57
+ private defaultMaxTokens;
58
+ private baseURL;
59
+ constructor(config: AnyRouterAdapterConfig);
60
+ generate(prompt: string | ChatMessage[], options?: GenerateOptions): Promise<string>;
61
+ generateWithTools(prompt: string | ChatMessage[], tools: ToolDefinition[], options?: GenerateOptions): Promise<LLMResponse>;
62
+ embed(_text: string): Promise<EmbeddingResult>;
63
+ supportsEmbeddings(): boolean;
64
+ supportsToolCalling(): boolean;
65
+ supportsStreaming(): boolean;
66
+ generateWithToolsStream(prompt: string | ChatMessage[], tools: ToolDefinition[], onChunk: StreamCallback, options?: GenerateOptions): Promise<LLMResponse>;
67
+ /**
68
+ * Convert internal message format to OpenAI format
69
+ */
70
+ private convertMessages;
71
+ /**
72
+ * Map finish reason to internal format
73
+ */
74
+ private mapFinishReason;
75
+ /**
76
+ * Handle API errors
77
+ */
78
+ private handleError;
79
+ /**
80
+ * Map error codes to internal error codes
81
+ */
82
+ private mapErrorCode;
83
+ }
84
+ //# sourceMappingURL=anyrouter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anyrouter.d.ts","sourceRoot":"","sources":["../../../src/llm/adapters/anyrouter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EACV,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,WAAW,EAEX,eAAe,EACf,cAAc,EAEf,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;GAEG;AACH,eAAO,MAAM,mBAAmB;IAC9B,oCAAoC;;IAEpC,0CAA0C;;IAE1C,0CAA0C;;CAElC,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;CAUnB,CAAC;AAEX;;GAEG;AACH,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC9D,6DAA6D;IAC7D,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,qCAAqC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;GAQG;AACH,qBAAa,gBAAiB,YAAW,UAAU;IACjD,QAAQ,CAAC,QAAQ,eAAe;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,gBAAgB,CAAS;IAEjC,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE,sBAAsB;IAyBpC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,EAAE,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAiCpF,iBAAiB,CACrB,MAAM,EAAE,MAAM,GAAG,WAAW,EAAE,EAC9B,KAAK,EAAE,cAAc,EAAE,EACvB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,WAAW,CAAC;IAqEjB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IASpD,kBAAkB,IAAI,OAAO;IAI7B,mBAAmB,IAAI,OAAO;IAI9B,iBAAiB,IAAI,OAAO;IAItB,uBAAuB,CAC3B,MAAM,EAAE,MAAM,GAAG,WAAW,EAAE,EAC9B,KAAK,EAAE,cAAc,EAAE,EACvB,OAAO,EAAE,cAAc,EACvB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,WAAW,CAAC;IAwIvB;;OAEG;IACH,OAAO,CAAC,eAAe;IA8BvB;;OAEG;IACH,OAAO,CAAC,eAAe;IAevB;;OAEG;IACH,OAAO,CAAC,WAAW;IAuBnB;;OAEG;IACH,OAAO,CAAC,YAAY;CASrB"}
@@ -0,0 +1,372 @@
1
+ /**
2
+ * AnyRouter LLM Adapter
3
+ *
4
+ * Implements the LLMAdapter interface for AnyRouter API.
5
+ * AnyRouter is a Claude Code API proxy service that provides
6
+ * OpenAI-compatible API access to Claude models.
7
+ *
8
+ * @see https://docs.anyrouter.top
9
+ */
10
+ import OpenAI from 'openai';
11
+ import { LLMError, promptToMessages } from '../adapter.js';
12
+ /**
13
+ * AnyRouter API endpoints
14
+ */
15
+ export const ANYROUTER_ENDPOINTS = {
16
+ /** Main site - direct connection */
17
+ MAIN: 'https://anyrouter.top',
18
+ /** China mainland optimized endpoint 1 */
19
+ CN_OPTIMIZED_1: 'https://pmpjfbhq.cn-nb1.rainapp.top',
20
+ /** China mainland optimized endpoint 2 */
21
+ CN_OPTIMIZED_2: 'https://a-ocnfniawgw.cn-shanghai.fcapp.run',
22
+ };
23
+ /**
24
+ * Available Claude models via AnyRouter
25
+ */
26
+ export const ANYROUTER_MODELS = {
27
+ // Claude 4.x models
28
+ CLAUDE_OPUS_4_5: 'claude-opus-4-5',
29
+ CLAUDE_SONNET_4_5: 'claude-sonnet-4-5',
30
+ // Claude 3.x models
31
+ CLAUDE_3_5_SONNET: 'claude-3-5-sonnet-20241022',
32
+ CLAUDE_3_5_HAIKU: 'claude-3-5-haiku-20241022',
33
+ CLAUDE_3_OPUS: 'claude-3-opus-20240229',
34
+ // Gemini models
35
+ GEMINI_2_5_PRO: 'gemini-2.5-pro',
36
+ };
37
+ /**
38
+ * AnyRouter LLM Adapter implementation
39
+ *
40
+ * Provides access to Claude models via AnyRouter proxy with support for:
41
+ * - OpenAI-compatible chat completions
42
+ * - Function/tool calling
43
+ * - Streaming responses
44
+ * - China mainland optimized endpoints
45
+ */
46
+ export class AnyRouterAdapter {
47
+ provider = 'anyrouter';
48
+ model;
49
+ client;
50
+ defaultTemperature;
51
+ defaultMaxTokens;
52
+ baseURL;
53
+ constructor(config) {
54
+ this.model = config.model;
55
+ this.defaultTemperature = config.temperature ?? 0.7;
56
+ this.defaultMaxTokens = config.maxTokens ?? 8192;
57
+ // Determine base URL
58
+ this.baseURL = config.endpoint ?? config.baseUrl ?? '';
59
+ if (!this.baseURL) {
60
+ this.baseURL = config.useChinaEndpoint
61
+ ? ANYROUTER_ENDPOINTS.CN_OPTIMIZED_1
62
+ : ANYROUTER_ENDPOINTS.MAIN;
63
+ }
64
+ console.log(`[AnyRouter] Initializing adapter:`);
65
+ console.log(`[AnyRouter] - Base URL: ${this.baseURL}`);
66
+ console.log(`[AnyRouter] - Model: ${this.model}`);
67
+ console.log(`[AnyRouter] - API Key: ${config.apiKey?.substring(0, 10)}...`);
68
+ this.client = new OpenAI({
69
+ apiKey: config.apiKey,
70
+ baseURL: this.baseURL,
71
+ timeout: config.timeoutMs ?? 120000, // Claude responses can be slow
72
+ });
73
+ }
74
+ async generate(prompt, options) {
75
+ const messages = typeof prompt === 'string' ? promptToMessages(prompt, options?.systemPrompt) : prompt;
76
+ console.log(`[AnyRouter] generate() called`);
77
+ console.log(`[AnyRouter] - Messages count: ${messages.length}`);
78
+ console.log(`[AnyRouter] - Model: ${this.model}`);
79
+ console.log(`[AnyRouter] - Base URL: ${this.baseURL}`);
80
+ try {
81
+ const requestBody = {
82
+ model: this.model,
83
+ messages: this.convertMessages(messages),
84
+ temperature: options?.temperature ?? this.defaultTemperature,
85
+ max_tokens: options?.maxTokens ?? this.defaultMaxTokens,
86
+ stop: options?.stopSequences,
87
+ };
88
+ console.log(`[AnyRouter] Request body:`, JSON.stringify(requestBody, null, 2));
89
+ const response = await this.client.chat.completions.create(requestBody, {
90
+ signal: options?.abortSignal,
91
+ });
92
+ console.log(`[AnyRouter] Response received:`, JSON.stringify(response, null, 2));
93
+ return response.choices[0]?.message?.content ?? '';
94
+ }
95
+ catch (error) {
96
+ console.error(`[AnyRouter] Error in generate():`, error);
97
+ throw this.handleError(error);
98
+ }
99
+ }
100
+ async generateWithTools(prompt, tools, options) {
101
+ const messages = typeof prompt === 'string' ? promptToMessages(prompt, options?.systemPrompt) : prompt;
102
+ console.log(`[AnyRouter] generateWithTools() called`);
103
+ console.log(`[AnyRouter] - Messages count: ${messages.length}`);
104
+ console.log(`[AnyRouter] - Tools count: ${tools.length}`);
105
+ console.log(`[AnyRouter] - Model: ${this.model}`);
106
+ console.log(`[AnyRouter] - Base URL: ${this.baseURL}`);
107
+ try {
108
+ const requestBody = {
109
+ model: this.model,
110
+ messages: this.convertMessages(messages),
111
+ tools: tools.map((t) => ({
112
+ type: 'function',
113
+ function: t.function,
114
+ })),
115
+ temperature: options?.temperature ?? this.defaultTemperature,
116
+ max_tokens: options?.maxTokens ?? this.defaultMaxTokens,
117
+ stop: options?.stopSequences,
118
+ };
119
+ console.log(`[AnyRouter] Request body (truncated):`, JSON.stringify({
120
+ model: requestBody.model,
121
+ messagesCount: requestBody.messages.length,
122
+ toolsCount: requestBody.tools.length,
123
+ temperature: requestBody.temperature,
124
+ max_tokens: requestBody.max_tokens,
125
+ }));
126
+ const response = await this.client.chat.completions.create(requestBody, {
127
+ signal: options?.abortSignal,
128
+ });
129
+ console.log(`[AnyRouter] Response received, choices: ${response.choices?.length}`);
130
+ const choice = response.choices[0];
131
+ const message = choice?.message;
132
+ const toolCalls = message?.tool_calls?.map((tc) => ({
133
+ id: tc.id,
134
+ name: tc.function.name,
135
+ arguments: JSON.parse(tc.function.arguments),
136
+ }));
137
+ return {
138
+ content: message?.content ?? '',
139
+ toolCalls,
140
+ finishReason: this.mapFinishReason(choice?.finish_reason),
141
+ usage: response.usage
142
+ ? {
143
+ promptTokens: response.usage.prompt_tokens,
144
+ completionTokens: response.usage.completion_tokens,
145
+ totalTokens: response.usage.total_tokens,
146
+ }
147
+ : undefined,
148
+ };
149
+ }
150
+ catch (error) {
151
+ console.error(`[AnyRouter] Error in generateWithTools():`, error);
152
+ throw this.handleError(error);
153
+ }
154
+ }
155
+ async embed(_text) {
156
+ // AnyRouter focuses on Claude Code, embeddings not supported
157
+ throw new LLMError('AnyRouter does not support embeddings. Use SiliconFlow or OpenAI for embeddings.', 'INVALID_REQUEST', this.provider);
158
+ }
159
+ supportsEmbeddings() {
160
+ return false;
161
+ }
162
+ supportsToolCalling() {
163
+ return true;
164
+ }
165
+ supportsStreaming() {
166
+ return true;
167
+ }
168
+ async generateWithToolsStream(prompt, tools, onChunk, options) {
169
+ const messages = typeof prompt === 'string' ? promptToMessages(prompt, options?.systemPrompt) : prompt;
170
+ console.log(`[AnyRouter] generateWithToolsStream() called`);
171
+ console.log(`[AnyRouter] - Messages count: ${messages.length}`);
172
+ console.log(`[AnyRouter] - Tools count: ${tools.length}`);
173
+ console.log(`[AnyRouter] - Model: ${this.model}`);
174
+ console.log(`[AnyRouter] - Base URL: ${this.baseURL}`);
175
+ try {
176
+ const requestBody = {
177
+ model: this.model,
178
+ messages: this.convertMessages(messages),
179
+ tools: tools.map((t) => ({
180
+ type: 'function',
181
+ function: t.function,
182
+ })),
183
+ temperature: options?.temperature ?? this.defaultTemperature,
184
+ max_tokens: options?.maxTokens ?? this.defaultMaxTokens,
185
+ stop: options?.stopSequences,
186
+ stream: true,
187
+ };
188
+ console.log(`[AnyRouter] Stream request body (truncated):`, JSON.stringify({
189
+ model: requestBody.model,
190
+ messagesCount: requestBody.messages.length,
191
+ toolsCount: requestBody.tools.length,
192
+ temperature: requestBody.temperature,
193
+ max_tokens: requestBody.max_tokens,
194
+ stream: requestBody.stream,
195
+ }));
196
+ const stream = await this.client.chat.completions.create(requestBody, {
197
+ signal: options?.abortSignal,
198
+ });
199
+ console.log(`[AnyRouter] Stream created, starting iteration...`);
200
+ // Accumulate the response
201
+ let accumulatedContent = '';
202
+ const toolCallsMap = new Map();
203
+ let finishReason = 'stop';
204
+ let chunkCount = 0;
205
+ for await (const chunk of stream) {
206
+ chunkCount++;
207
+ const delta = chunk.choices[0]?.delta;
208
+ const chunkFinishReason = chunk.choices[0]?.finish_reason;
209
+ if (chunkCount <= 3 || chunkCount % 10 === 0) {
210
+ console.log(`[AnyRouter] Chunk ${chunkCount}:`, JSON.stringify(chunk));
211
+ }
212
+ // Handle content chunks
213
+ if (delta?.content) {
214
+ accumulatedContent += delta.content;
215
+ const streamChunk = {
216
+ type: 'content',
217
+ content: delta.content,
218
+ };
219
+ onChunk(streamChunk);
220
+ }
221
+ // Handle tool call chunks
222
+ if (delta?.tool_calls) {
223
+ for (const tc of delta.tool_calls) {
224
+ const index = tc.index;
225
+ // Get or create tool call entry
226
+ let toolCallEntry = toolCallsMap.get(index);
227
+ if (!toolCallEntry) {
228
+ toolCallEntry = { id: '', name: '', arguments: '' };
229
+ toolCallsMap.set(index, toolCallEntry);
230
+ }
231
+ // Accumulate tool call data
232
+ if (tc.id)
233
+ toolCallEntry.id = tc.id;
234
+ if (tc.function?.name)
235
+ toolCallEntry.name = tc.function.name;
236
+ if (tc.function?.arguments)
237
+ toolCallEntry.arguments += tc.function.arguments;
238
+ // Send tool call chunk
239
+ const streamChunk = {
240
+ type: 'tool_call',
241
+ toolCall: {
242
+ index,
243
+ id: tc.id,
244
+ name: tc.function?.name,
245
+ arguments: tc.function?.arguments,
246
+ },
247
+ };
248
+ onChunk(streamChunk);
249
+ }
250
+ }
251
+ // Update finish reason
252
+ if (chunkFinishReason) {
253
+ finishReason = this.mapFinishReason(chunkFinishReason);
254
+ }
255
+ }
256
+ console.log(`[AnyRouter] Stream completed, total chunks: ${chunkCount}`);
257
+ console.log(`[AnyRouter] Accumulated content length: ${accumulatedContent.length}`);
258
+ // Build final tool calls array
259
+ const toolCalls = toolCallsMap.size > 0
260
+ ? Array.from(toolCallsMap.entries())
261
+ .sort(([a], [b]) => a - b)
262
+ .map(([, tc]) => ({
263
+ id: tc.id,
264
+ name: tc.name,
265
+ arguments: JSON.parse(tc.arguments || '{}'),
266
+ }))
267
+ : undefined;
268
+ // Build final response
269
+ const response = {
270
+ content: accumulatedContent,
271
+ toolCalls,
272
+ finishReason,
273
+ };
274
+ // Send done chunk
275
+ onChunk({ type: 'done', response });
276
+ return response;
277
+ }
278
+ catch (error) {
279
+ console.error(`[AnyRouter] Error in generateWithToolsStream():`, error);
280
+ throw this.handleError(error);
281
+ }
282
+ }
283
+ /**
284
+ * Convert internal message format to OpenAI format
285
+ */
286
+ convertMessages(messages) {
287
+ return messages.map((msg) => {
288
+ if (msg.role === 'tool') {
289
+ return {
290
+ role: 'tool',
291
+ content: msg.content,
292
+ tool_call_id: msg.toolCallId ?? '',
293
+ };
294
+ }
295
+ if (msg.role === 'assistant' && msg.toolCalls && msg.toolCalls.length > 0) {
296
+ return {
297
+ role: 'assistant',
298
+ content: msg.content || null,
299
+ tool_calls: msg.toolCalls.map((tc) => ({
300
+ id: tc.id,
301
+ type: 'function',
302
+ function: {
303
+ name: tc.name,
304
+ arguments: JSON.stringify(tc.arguments),
305
+ },
306
+ })),
307
+ };
308
+ }
309
+ return {
310
+ role: msg.role,
311
+ content: msg.content,
312
+ };
313
+ });
314
+ }
315
+ /**
316
+ * Map finish reason to internal format
317
+ */
318
+ mapFinishReason(reason) {
319
+ switch (reason) {
320
+ case 'stop':
321
+ return 'stop';
322
+ case 'tool_calls':
323
+ return 'tool_calls';
324
+ case 'length':
325
+ return 'length';
326
+ case 'content_filter':
327
+ return 'content_filter';
328
+ default:
329
+ return 'stop';
330
+ }
331
+ }
332
+ /**
333
+ * Handle API errors
334
+ */
335
+ handleError(error) {
336
+ // Check for abort error first
337
+ if (error instanceof Error && error.name === 'AbortError') {
338
+ return new LLMError('Operation cancelled', 'CANCELLED', this.provider, error);
339
+ }
340
+ // Preserve existing LLMError instances
341
+ if (error instanceof LLMError) {
342
+ return error;
343
+ }
344
+ if (error instanceof OpenAI.APIError) {
345
+ const code = this.mapErrorCode(error.status, error.code);
346
+ return new LLMError(error.message, code, this.provider, error);
347
+ }
348
+ if (error instanceof Error) {
349
+ return new LLMError(error.message, 'UNKNOWN_ERROR', this.provider, error);
350
+ }
351
+ return new LLMError('Unknown error occurred', 'UNKNOWN_ERROR', this.provider);
352
+ }
353
+ /**
354
+ * Map error codes to internal error codes
355
+ */
356
+ mapErrorCode(status, code) {
357
+ if (status === 401)
358
+ return 'AUTHENTICATION_ERROR';
359
+ if (status === 429)
360
+ return 'RATE_LIMIT_ERROR';
361
+ if (status === 400)
362
+ return 'INVALID_REQUEST';
363
+ if (status === 404)
364
+ return 'MODEL_NOT_FOUND';
365
+ if (code === 'context_length_exceeded')
366
+ return 'CONTEXT_LENGTH_EXCEEDED';
367
+ if (code === 'content_filter')
368
+ return 'CONTENT_FILTER';
369
+ return 'UNKNOWN_ERROR';
370
+ }
371
+ }
372
+ //# sourceMappingURL=anyrouter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anyrouter.js","sourceRoot":"","sources":["../../../src/llm/adapters/anyrouter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Claude (Anthropic) LLM Adapter
3
+ *
4
+ * Implements the LLMAdapter interface for Anthropic's Claude API.
5
+ * Supports messages API and tool use.
6
+ */
7
+ import type { LLMAdapter, LLMAdapterConfig, GenerateOptions, ChatMessage, LLMResponse, EmbeddingResult, StreamCallback } from '../adapter.js';
8
+ import type { ToolDefinition } from '../../types/tool.js';
9
+ /**
10
+ * Claude-specific configuration
11
+ */
12
+ export interface ClaudeAdapterConfig extends LLMAdapterConfig {
13
+ /** Anthropic API version header */
14
+ apiVersion?: string;
15
+ }
16
+ /**
17
+ * Claude LLM Adapter implementation
18
+ */
19
+ export declare class ClaudeAdapter implements LLMAdapter {
20
+ readonly provider = "claude";
21
+ readonly model: string;
22
+ private client;
23
+ private defaultTemperature;
24
+ private defaultMaxTokens;
25
+ constructor(config: ClaudeAdapterConfig);
26
+ generate(prompt: string | ChatMessage[], options?: GenerateOptions): Promise<string>;
27
+ generateWithTools(prompt: string | ChatMessage[], tools: ToolDefinition[], options?: GenerateOptions): Promise<LLMResponse>;
28
+ embed(_text: string): Promise<EmbeddingResult>;
29
+ supportsEmbeddings(): boolean;
30
+ supportsToolCalling(): boolean;
31
+ supportsStreaming(): boolean;
32
+ generateWithToolsStream(prompt: string | ChatMessage[], tools: ToolDefinition[], onChunk: StreamCallback, options?: GenerateOptions): Promise<LLMResponse>;
33
+ /**
34
+ * Extract system prompt from messages
35
+ */
36
+ private extractSystemPrompt;
37
+ /**
38
+ * Convert internal message format to Claude format
39
+ */
40
+ private convertMessages;
41
+ /**
42
+ * Convert tool definitions to Claude format
43
+ */
44
+ private convertTools;
45
+ /**
46
+ * Extract text content from Claude response
47
+ */
48
+ private extractTextContent;
49
+ /**
50
+ * Extract tool calls from Claude response
51
+ */
52
+ private extractToolCalls;
53
+ /**
54
+ * Map Claude stop reason to internal format
55
+ */
56
+ private mapStopReason;
57
+ /**
58
+ * Handle Claude API errors
59
+ */
60
+ private handleError;
61
+ /**
62
+ * Map Claude error codes to internal error codes
63
+ */
64
+ private mapErrorCode;
65
+ }
66
+ //# sourceMappingURL=claude.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../../src/llm/adapters/claude.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EACV,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,WAAW,EAEX,eAAe,EACf,cAAc,EAEf,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,mCAAmC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,qBAAa,aAAc,YAAW,UAAU;IAC9C,QAAQ,CAAC,QAAQ,YAAY;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,gBAAgB,CAAS;gBAErB,MAAM,EAAE,mBAAmB;IAYjC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,EAAE,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IA4BpF,iBAAiB,CACrB,MAAM,EAAE,MAAM,GAAG,WAAW,EAAE,EAC9B,KAAK,EAAE,cAAc,EAAE,EACvB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,WAAW,CAAC;IAyCjB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAUpD,kBAAkB,IAAI,OAAO;IAI7B,mBAAmB,IAAI,OAAO;IAI9B,iBAAiB,IAAI,OAAO;IAItB,uBAAuB,CAC3B,MAAM,EAAE,MAAM,GAAG,WAAW,EAAE,EAC9B,KAAK,EAAE,cAAc,EAAE,EACvB,OAAO,EAAE,cAAc,EACvB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,WAAW,CAAC;IAsHvB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAe3B;;OAEG;IACH,OAAO,CAAC,eAAe;IA2CvB;;OAEG;IACH,OAAO,CAAC,YAAY;IAQpB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAS1B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAaxB;;OAEG;IACH,OAAO,CAAC,aAAa;IAarB;;OAEG;IACH,OAAO,CAAC,WAAW;IAuBnB;;OAEG;IACH,OAAO,CAAC,YAAY;CAOrB"}