mcp-agent-foundry 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 (315) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +477 -0
  3. package/dist/cli/install-skills.d.ts +11 -0
  4. package/dist/cli/install-skills.d.ts.map +1 -0
  5. package/dist/cli/install-skills.js +143 -0
  6. package/dist/cli/install-skills.js.map +1 -0
  7. package/dist/cli/recovery-commands.d.ts +41 -0
  8. package/dist/cli/recovery-commands.d.ts.map +1 -0
  9. package/dist/cli/recovery-commands.js +241 -0
  10. package/dist/cli/recovery-commands.js.map +1 -0
  11. package/dist/cli/setup-wizard.d.ts +25 -0
  12. package/dist/cli/setup-wizard.d.ts.map +1 -0
  13. package/dist/cli/setup-wizard.js +1417 -0
  14. package/dist/cli/setup-wizard.js.map +1 -0
  15. package/dist/cli/test-connection.d.ts +45 -0
  16. package/dist/cli/test-connection.d.ts.map +1 -0
  17. package/dist/cli/test-connection.js +317 -0
  18. package/dist/cli/test-connection.js.map +1 -0
  19. package/dist/cli.d.ts +75 -0
  20. package/dist/cli.d.ts.map +1 -0
  21. package/dist/cli.js +704 -0
  22. package/dist/cli.js.map +1 -0
  23. package/dist/config/defaults.d.ts +57 -0
  24. package/dist/config/defaults.d.ts.map +1 -0
  25. package/dist/config/defaults.js +99 -0
  26. package/dist/config/defaults.js.map +1 -0
  27. package/dist/config/index.d.ts +14 -0
  28. package/dist/config/index.d.ts.map +1 -0
  29. package/dist/config/index.js +22 -0
  30. package/dist/config/index.js.map +1 -0
  31. package/dist/config/manager.d.ts +184 -0
  32. package/dist/config/manager.d.ts.map +1 -0
  33. package/dist/config/manager.js +347 -0
  34. package/dist/config/manager.js.map +1 -0
  35. package/dist/config/merger.d.ts +76 -0
  36. package/dist/config/merger.d.ts.map +1 -0
  37. package/dist/config/merger.js +189 -0
  38. package/dist/config/merger.js.map +1 -0
  39. package/dist/config/schema.d.ts +20 -0
  40. package/dist/config/schema.d.ts.map +1 -0
  41. package/dist/config/schema.js +20 -0
  42. package/dist/config/schema.js.map +1 -0
  43. package/dist/config/validator.d.ts +254 -0
  44. package/dist/config/validator.d.ts.map +1 -0
  45. package/dist/config/validator.js +363 -0
  46. package/dist/config/validator.js.map +1 -0
  47. package/dist/config/worktree-defaults.d.ts +23 -0
  48. package/dist/config/worktree-defaults.d.ts.map +1 -0
  49. package/dist/config/worktree-defaults.js +78 -0
  50. package/dist/config/worktree-defaults.js.map +1 -0
  51. package/dist/index.d.ts +8 -0
  52. package/dist/index.d.ts.map +1 -0
  53. package/dist/index.js +44 -0
  54. package/dist/index.js.map +1 -0
  55. package/dist/mcp/tools/compare-agents.d.ts +25 -0
  56. package/dist/mcp/tools/compare-agents.d.ts.map +1 -0
  57. package/dist/mcp/tools/compare-agents.js +177 -0
  58. package/dist/mcp/tools/compare-agents.js.map +1 -0
  59. package/dist/mcp/tools/critique-plan.d.ts +26 -0
  60. package/dist/mcp/tools/critique-plan.d.ts.map +1 -0
  61. package/dist/mcp/tools/critique-plan.js +162 -0
  62. package/dist/mcp/tools/critique-plan.js.map +1 -0
  63. package/dist/mcp/tools/design-feedback.d.ts +26 -0
  64. package/dist/mcp/tools/design-feedback.d.ts.map +1 -0
  65. package/dist/mcp/tools/design-feedback.js +216 -0
  66. package/dist/mcp/tools/design-feedback.js.map +1 -0
  67. package/dist/mcp/tools/index.d.ts +50 -0
  68. package/dist/mcp/tools/index.d.ts.map +1 -0
  69. package/dist/mcp/tools/index.js +191 -0
  70. package/dist/mcp/tools/index.js.map +1 -0
  71. package/dist/mcp/tools/invoke-agent.d.ts +25 -0
  72. package/dist/mcp/tools/invoke-agent.d.ts.map +1 -0
  73. package/dist/mcp/tools/invoke-agent.js +141 -0
  74. package/dist/mcp/tools/invoke-agent.js.map +1 -0
  75. package/dist/mcp/tools/review-code.d.ts +25 -0
  76. package/dist/mcp/tools/review-code.d.ts.map +1 -0
  77. package/dist/mcp/tools/review-code.js +170 -0
  78. package/dist/mcp/tools/review-code.js.map +1 -0
  79. package/dist/mcp/tools/tasks/claim-next-task.d.ts +22 -0
  80. package/dist/mcp/tools/tasks/claim-next-task.d.ts.map +1 -0
  81. package/dist/mcp/tools/tasks/claim-next-task.js +203 -0
  82. package/dist/mcp/tools/tasks/claim-next-task.js.map +1 -0
  83. package/dist/mcp/tools/tasks/create-routed-task.d.ts +17 -0
  84. package/dist/mcp/tools/tasks/create-routed-task.d.ts.map +1 -0
  85. package/dist/mcp/tools/tasks/create-routed-task.js +178 -0
  86. package/dist/mcp/tools/tasks/create-routed-task.js.map +1 -0
  87. package/dist/mcp/tools/tasks/execute-pipeline.d.ts +22 -0
  88. package/dist/mcp/tools/tasks/execute-pipeline.d.ts.map +1 -0
  89. package/dist/mcp/tools/tasks/execute-pipeline.js +401 -0
  90. package/dist/mcp/tools/tasks/execute-pipeline.js.map +1 -0
  91. package/dist/mcp/tools/tasks/execute-task.d.ts +32 -0
  92. package/dist/mcp/tools/tasks/execute-task.d.ts.map +1 -0
  93. package/dist/mcp/tools/tasks/execute-task.js +284 -0
  94. package/dist/mcp/tools/tasks/execute-task.js.map +1 -0
  95. package/dist/mcp/tools/tasks/get-pipeline-status.d.ts +26 -0
  96. package/dist/mcp/tools/tasks/get-pipeline-status.d.ts.map +1 -0
  97. package/dist/mcp/tools/tasks/get-pipeline-status.js +460 -0
  98. package/dist/mcp/tools/tasks/get-pipeline-status.js.map +1 -0
  99. package/dist/mcp/tools/tasks/index.d.ts +36 -0
  100. package/dist/mcp/tools/tasks/index.d.ts.map +1 -0
  101. package/dist/mcp/tools/tasks/index.js +66 -0
  102. package/dist/mcp/tools/tasks/index.js.map +1 -0
  103. package/dist/mcp/tools/worktree/cleanup-worktrees.d.ts +17 -0
  104. package/dist/mcp/tools/worktree/cleanup-worktrees.d.ts.map +1 -0
  105. package/dist/mcp/tools/worktree/cleanup-worktrees.js +147 -0
  106. package/dist/mcp/tools/worktree/cleanup-worktrees.js.map +1 -0
  107. package/dist/mcp/tools/worktree/get-worktree-status.d.ts +17 -0
  108. package/dist/mcp/tools/worktree/get-worktree-status.d.ts.map +1 -0
  109. package/dist/mcp/tools/worktree/get-worktree-status.js +123 -0
  110. package/dist/mcp/tools/worktree/get-worktree-status.js.map +1 -0
  111. package/dist/mcp/tools/worktree/index.d.ts +41 -0
  112. package/dist/mcp/tools/worktree/index.d.ts.map +1 -0
  113. package/dist/mcp/tools/worktree/index.js +69 -0
  114. package/dist/mcp/tools/worktree/index.js.map +1 -0
  115. package/dist/mcp/tools/worktree/list-worktrees.d.ts +17 -0
  116. package/dist/mcp/tools/worktree/list-worktrees.d.ts.map +1 -0
  117. package/dist/mcp/tools/worktree/list-worktrees.js +136 -0
  118. package/dist/mcp/tools/worktree/list-worktrees.js.map +1 -0
  119. package/dist/mcp/tools/worktree/resolve-conflicts.d.ts +19 -0
  120. package/dist/mcp/tools/worktree/resolve-conflicts.d.ts.map +1 -0
  121. package/dist/mcp/tools/worktree/resolve-conflicts.js +228 -0
  122. package/dist/mcp/tools/worktree/resolve-conflicts.js.map +1 -0
  123. package/dist/mcp/transport/stdio.d.ts +13 -0
  124. package/dist/mcp/transport/stdio.d.ts.map +1 -0
  125. package/dist/mcp/transport/stdio.js +15 -0
  126. package/dist/mcp/transport/stdio.js.map +1 -0
  127. package/dist/observability/logger.d.ts +137 -0
  128. package/dist/observability/logger.d.ts.map +1 -0
  129. package/dist/observability/logger.js +235 -0
  130. package/dist/observability/logger.js.map +1 -0
  131. package/dist/observability/metrics.d.ts +250 -0
  132. package/dist/observability/metrics.d.ts.map +1 -0
  133. package/dist/observability/metrics.js +364 -0
  134. package/dist/observability/metrics.js.map +1 -0
  135. package/dist/persistence/index.d.ts +9 -0
  136. package/dist/persistence/index.d.ts.map +1 -0
  137. package/dist/persistence/index.js +9 -0
  138. package/dist/persistence/index.js.map +1 -0
  139. package/dist/persistence/state-schema.d.ts +116 -0
  140. package/dist/persistence/state-schema.d.ts.map +1 -0
  141. package/dist/persistence/state-schema.js +28 -0
  142. package/dist/persistence/state-schema.js.map +1 -0
  143. package/dist/persistence/state-store.d.ts +111 -0
  144. package/dist/persistence/state-store.d.ts.map +1 -0
  145. package/dist/persistence/state-store.js +291 -0
  146. package/dist/persistence/state-store.js.map +1 -0
  147. package/dist/providers/anthropic.d.ts +164 -0
  148. package/dist/providers/anthropic.d.ts.map +1 -0
  149. package/dist/providers/anthropic.js +500 -0
  150. package/dist/providers/anthropic.js.map +1 -0
  151. package/dist/providers/base.d.ts +151 -0
  152. package/dist/providers/base.d.ts.map +1 -0
  153. package/dist/providers/base.js +227 -0
  154. package/dist/providers/base.js.map +1 -0
  155. package/dist/providers/gemini.d.ts +85 -0
  156. package/dist/providers/gemini.d.ts.map +1 -0
  157. package/dist/providers/gemini.js +414 -0
  158. package/dist/providers/gemini.js.map +1 -0
  159. package/dist/providers/kimi.d.ts +19 -0
  160. package/dist/providers/kimi.d.ts.map +1 -0
  161. package/dist/providers/kimi.js +20 -0
  162. package/dist/providers/kimi.js.map +1 -0
  163. package/dist/providers/manager.d.ts +160 -0
  164. package/dist/providers/manager.d.ts.map +1 -0
  165. package/dist/providers/manager.js +264 -0
  166. package/dist/providers/manager.js.map +1 -0
  167. package/dist/providers/ollama.d.ts +83 -0
  168. package/dist/providers/ollama.d.ts.map +1 -0
  169. package/dist/providers/ollama.js +453 -0
  170. package/dist/providers/ollama.js.map +1 -0
  171. package/dist/providers/openai.d.ts +96 -0
  172. package/dist/providers/openai.d.ts.map +1 -0
  173. package/dist/providers/openai.js +457 -0
  174. package/dist/providers/openai.js.map +1 -0
  175. package/dist/providers/zai.d.ts +19 -0
  176. package/dist/providers/zai.d.ts.map +1 -0
  177. package/dist/providers/zai.js +20 -0
  178. package/dist/providers/zai.js.map +1 -0
  179. package/dist/router/context-manager.d.ts +2 -0
  180. package/dist/router/context-manager.d.ts.map +1 -0
  181. package/dist/router/context-manager.js +3 -0
  182. package/dist/router/context-manager.js.map +1 -0
  183. package/dist/router/engine.d.ts +169 -0
  184. package/dist/router/engine.d.ts.map +1 -0
  185. package/dist/router/engine.js +435 -0
  186. package/dist/router/engine.js.map +1 -0
  187. package/dist/router/pattern-executor.d.ts +317 -0
  188. package/dist/router/pattern-executor.d.ts.map +1 -0
  189. package/dist/router/pattern-executor.js +571 -0
  190. package/dist/router/pattern-executor.js.map +1 -0
  191. package/dist/router/role-resolver.d.ts +59 -0
  192. package/dist/router/role-resolver.d.ts.map +1 -0
  193. package/dist/router/role-resolver.js +95 -0
  194. package/dist/router/role-resolver.js.map +1 -0
  195. package/dist/server.d.ts +32 -0
  196. package/dist/server.d.ts.map +1 -0
  197. package/dist/server.js +223 -0
  198. package/dist/server.js.map +1 -0
  199. package/dist/startup.d.ts +78 -0
  200. package/dist/startup.d.ts.map +1 -0
  201. package/dist/startup.js +107 -0
  202. package/dist/startup.js.map +1 -0
  203. package/dist/tasks/coordinator.d.ts +141 -0
  204. package/dist/tasks/coordinator.d.ts.map +1 -0
  205. package/dist/tasks/coordinator.js +331 -0
  206. package/dist/tasks/coordinator.js.map +1 -0
  207. package/dist/tasks/index.d.ts +13 -0
  208. package/dist/tasks/index.d.ts.map +1 -0
  209. package/dist/tasks/index.js +13 -0
  210. package/dist/tasks/index.js.map +1 -0
  211. package/dist/tasks/persistent-state-coordinator.d.ts +89 -0
  212. package/dist/tasks/persistent-state-coordinator.d.ts.map +1 -0
  213. package/dist/tasks/persistent-state-coordinator.js +371 -0
  214. package/dist/tasks/persistent-state-coordinator.js.map +1 -0
  215. package/dist/tasks/pipeline-manager.d.ts +103 -0
  216. package/dist/tasks/pipeline-manager.d.ts.map +1 -0
  217. package/dist/tasks/pipeline-manager.js +358 -0
  218. package/dist/tasks/pipeline-manager.js.map +1 -0
  219. package/dist/tasks/state-coordinator.d.ts +79 -0
  220. package/dist/tasks/state-coordinator.d.ts.map +1 -0
  221. package/dist/tasks/state-coordinator.js +200 -0
  222. package/dist/tasks/state-coordinator.js.map +1 -0
  223. package/dist/tasks/worker-mode.d.ts +65 -0
  224. package/dist/tasks/worker-mode.d.ts.map +1 -0
  225. package/dist/tasks/worker-mode.js +208 -0
  226. package/dist/tasks/worker-mode.js.map +1 -0
  227. package/dist/translation/errors.d.ts +203 -0
  228. package/dist/translation/errors.d.ts.map +1 -0
  229. package/dist/translation/errors.js +477 -0
  230. package/dist/translation/errors.js.map +1 -0
  231. package/dist/translation/index.d.ts +12 -0
  232. package/dist/translation/index.d.ts.map +1 -0
  233. package/dist/translation/index.js +32 -0
  234. package/dist/translation/index.js.map +1 -0
  235. package/dist/translation/messages.d.ts +295 -0
  236. package/dist/translation/messages.d.ts.map +1 -0
  237. package/dist/translation/messages.js +557 -0
  238. package/dist/translation/messages.js.map +1 -0
  239. package/dist/translation/streaming.d.ts +226 -0
  240. package/dist/translation/streaming.d.ts.map +1 -0
  241. package/dist/translation/streaming.js +520 -0
  242. package/dist/translation/streaming.js.map +1 -0
  243. package/dist/translation/tools.d.ts +209 -0
  244. package/dist/translation/tools.d.ts.map +1 -0
  245. package/dist/translation/tools.js +331 -0
  246. package/dist/translation/tools.js.map +1 -0
  247. package/dist/types.d.ts +747 -0
  248. package/dist/types.d.ts.map +1 -0
  249. package/dist/types.js +86 -0
  250. package/dist/types.js.map +1 -0
  251. package/dist/utils/circuit-breaker.d.ts +175 -0
  252. package/dist/utils/circuit-breaker.d.ts.map +1 -0
  253. package/dist/utils/circuit-breaker.js +315 -0
  254. package/dist/utils/circuit-breaker.js.map +1 -0
  255. package/dist/utils/env.d.ts +2 -0
  256. package/dist/utils/env.d.ts.map +1 -0
  257. package/dist/utils/env.js +3 -0
  258. package/dist/utils/env.js.map +1 -0
  259. package/dist/utils/git.d.ts +58 -0
  260. package/dist/utils/git.d.ts.map +1 -0
  261. package/dist/utils/git.js +197 -0
  262. package/dist/utils/git.js.map +1 -0
  263. package/dist/utils/index.d.ts +9 -0
  264. package/dist/utils/index.d.ts.map +1 -0
  265. package/dist/utils/index.js +9 -0
  266. package/dist/utils/index.js.map +1 -0
  267. package/dist/utils/merge-ordering.d.ts +45 -0
  268. package/dist/utils/merge-ordering.d.ts.map +1 -0
  269. package/dist/utils/merge-ordering.js +128 -0
  270. package/dist/utils/merge-ordering.js.map +1 -0
  271. package/dist/utils/retry.d.ts +106 -0
  272. package/dist/utils/retry.d.ts.map +1 -0
  273. package/dist/utils/retry.js +188 -0
  274. package/dist/utils/retry.js.map +1 -0
  275. package/dist/worktrees/branch-manager.d.ts +55 -0
  276. package/dist/worktrees/branch-manager.d.ts.map +1 -0
  277. package/dist/worktrees/branch-manager.js +129 -0
  278. package/dist/worktrees/branch-manager.js.map +1 -0
  279. package/dist/worktrees/conflict-handler.d.ts +72 -0
  280. package/dist/worktrees/conflict-handler.d.ts.map +1 -0
  281. package/dist/worktrees/conflict-handler.js +287 -0
  282. package/dist/worktrees/conflict-handler.js.map +1 -0
  283. package/dist/worktrees/conflict-parser.d.ts +28 -0
  284. package/dist/worktrees/conflict-parser.d.ts.map +1 -0
  285. package/dist/worktrees/conflict-parser.js +140 -0
  286. package/dist/worktrees/conflict-parser.js.map +1 -0
  287. package/dist/worktrees/index.d.ts +20 -0
  288. package/dist/worktrees/index.d.ts.map +1 -0
  289. package/dist/worktrees/index.js +20 -0
  290. package/dist/worktrees/index.js.map +1 -0
  291. package/dist/worktrees/instructions.d.ts +20 -0
  292. package/dist/worktrees/instructions.d.ts.map +1 -0
  293. package/dist/worktrees/instructions.js +84 -0
  294. package/dist/worktrees/instructions.js.map +1 -0
  295. package/dist/worktrees/manager.d.ts +76 -0
  296. package/dist/worktrees/manager.d.ts.map +1 -0
  297. package/dist/worktrees/manager.js +277 -0
  298. package/dist/worktrees/manager.js.map +1 -0
  299. package/dist/worktrees/pipeline-merge-orchestrator.d.ts +55 -0
  300. package/dist/worktrees/pipeline-merge-orchestrator.d.ts.map +1 -0
  301. package/dist/worktrees/pipeline-merge-orchestrator.js +221 -0
  302. package/dist/worktrees/pipeline-merge-orchestrator.js.map +1 -0
  303. package/dist/worktrees/pool.d.ts +95 -0
  304. package/dist/worktrees/pool.d.ts.map +1 -0
  305. package/dist/worktrees/pool.js +271 -0
  306. package/dist/worktrees/pool.js.map +1 -0
  307. package/dist/worktrees/recovery.d.ts +94 -0
  308. package/dist/worktrees/recovery.d.ts.map +1 -0
  309. package/dist/worktrees/recovery.js +371 -0
  310. package/dist/worktrees/recovery.js.map +1 -0
  311. package/dist/worktrees/resource-manager.d.ts +74 -0
  312. package/dist/worktrees/resource-manager.d.ts.map +1 -0
  313. package/dist/worktrees/resource-manager.js +228 -0
  314. package/dist/worktrees/resource-manager.js.map +1 -0
  315. package/package.json +88 -0
@@ -0,0 +1,264 @@
1
+ /**
2
+ * Provider Manager
3
+ *
4
+ * Manages the registry of LLM providers, handling provider creation,
5
+ * retrieval, and configuration updates. Provides a factory method for
6
+ * creating provider instances based on their type.
7
+ */
8
+ import { ConfigurationError } from '../types.js';
9
+ /**
10
+ * Manager for LLM provider instances.
11
+ *
12
+ * Handles:
13
+ * - Provider registration and retrieval
14
+ * - Provider instance creation via factory methods
15
+ * - Configuration updates with instance recreation
16
+ * - Lazy instantiation of providers
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * const manager = new ProviderManager();
21
+ *
22
+ * // Register provider factories
23
+ * manager.registerFactory('anthropic', (config) => new AnthropicProvider(config));
24
+ * manager.registerFactory('openai', (config) => new OpenAIProvider(config));
25
+ *
26
+ * // Update configurations (creates instances lazily)
27
+ * manager.updateConfig({
28
+ * anthropic: { api_key: 'sk-...' },
29
+ * openai: { api_key: 'sk-...' }
30
+ * });
31
+ *
32
+ * // Get a provider instance
33
+ * const provider = manager.get('anthropic');
34
+ * ```
35
+ */
36
+ export class ProviderManager {
37
+ /** Registry of provider factories and instances by name */
38
+ providers = new Map();
39
+ /** Registry of active provider instances */
40
+ instances = new Map();
41
+ /**
42
+ * Register a provider factory for a given provider type.
43
+ * The factory will be used to create provider instances when needed.
44
+ *
45
+ * @param name - Provider name (e.g., 'anthropic', 'openai')
46
+ * @param factory - Factory function that creates provider instances
47
+ */
48
+ registerFactory(name, factory) {
49
+ const existing = this.providers.get(name);
50
+ if (existing) {
51
+ // Update the factory but preserve existing config
52
+ existing.factory = factory;
53
+ // Clear instance so it will be recreated with new factory
54
+ delete existing.instance;
55
+ this.instances.delete(name);
56
+ }
57
+ else {
58
+ this.providers.set(name, { factory });
59
+ }
60
+ }
61
+ /**
62
+ * Register a pre-created provider instance directly.
63
+ * Useful for testing or custom provider implementations.
64
+ *
65
+ * @param name - Provider name
66
+ * @param provider - Provider instance
67
+ */
68
+ register(name, provider) {
69
+ this.instances.set(name, provider);
70
+ // Also store in providers map with a dummy factory
71
+ this.providers.set(name, {
72
+ factory: () => provider,
73
+ instance: provider,
74
+ });
75
+ }
76
+ /**
77
+ * Get a provider instance by name.
78
+ * Creates the instance lazily if it hasn't been created yet.
79
+ *
80
+ * @param name - Provider name
81
+ * @returns The provider instance
82
+ * @throws ConfigurationError if the provider is not registered or not configured
83
+ */
84
+ get(name) {
85
+ // Check for directly registered instance first
86
+ const directInstance = this.instances.get(name);
87
+ if (directInstance) {
88
+ return directInstance;
89
+ }
90
+ // Check for factory-based registration
91
+ const registration = this.providers.get(name);
92
+ if (!registration) {
93
+ throw new ConfigurationError(`Provider '${name}' is not registered. Available providers: ${this.listProviders().join(', ') || 'none'}`);
94
+ }
95
+ // Return existing instance if available
96
+ if (registration.instance) {
97
+ return registration.instance;
98
+ }
99
+ // Check if we have configuration
100
+ if (!registration.config) {
101
+ throw new ConfigurationError(`Provider '${name}' is registered but not configured. Call updateConfig() first.`);
102
+ }
103
+ // Create new instance
104
+ registration.instance = registration.factory(registration.config);
105
+ this.instances.set(name, registration.instance);
106
+ return registration.instance;
107
+ }
108
+ /**
109
+ * Check if a provider is registered (has a factory).
110
+ *
111
+ * @param name - Provider name
112
+ * @returns True if the provider is registered
113
+ */
114
+ has(name) {
115
+ return this.providers.has(name) || this.instances.has(name);
116
+ }
117
+ /**
118
+ * Check if a provider is configured and ready to use.
119
+ *
120
+ * @param name - Provider name
121
+ * @returns True if the provider is configured
122
+ */
123
+ isConfigured(name) {
124
+ const registration = this.providers.get(name);
125
+ return !!registration?.config || this.instances.has(name);
126
+ }
127
+ /**
128
+ * Update provider configurations.
129
+ * This will invalidate existing instances so they are recreated with new configs.
130
+ *
131
+ * @param configs - Map of provider name to configuration
132
+ */
133
+ updateConfig(configs) {
134
+ for (const [name, config] of Object.entries(configs)) {
135
+ const registration = this.providers.get(name);
136
+ if (registration) {
137
+ // Update config and clear instance to force recreation
138
+ registration.config = config;
139
+ delete registration.instance;
140
+ this.instances.delete(name);
141
+ }
142
+ else {
143
+ // Store config even if no factory registered yet
144
+ // This allows config to be loaded before factories are registered
145
+ this.providers.set(name, {
146
+ factory: () => {
147
+ throw new ConfigurationError(`No factory registered for provider '${name}'`);
148
+ },
149
+ config,
150
+ });
151
+ }
152
+ }
153
+ }
154
+ /**
155
+ * Get the configuration for a provider.
156
+ *
157
+ * @param name - Provider name
158
+ * @returns The provider configuration, or undefined if not configured
159
+ */
160
+ getConfig(name) {
161
+ return this.providers.get(name)?.config;
162
+ }
163
+ /**
164
+ * List all registered provider names.
165
+ *
166
+ * @returns Array of provider names
167
+ */
168
+ listProviders() {
169
+ const names = new Set();
170
+ this.providers.forEach((_, name) => names.add(name));
171
+ this.instances.forEach((_, name) => names.add(name));
172
+ return Array.from(names);
173
+ }
174
+ /**
175
+ * List all configured provider names (ready to use).
176
+ *
177
+ * @returns Array of configured provider names
178
+ */
179
+ listConfigured() {
180
+ return this.listProviders().filter((name) => this.isConfigured(name));
181
+ }
182
+ /**
183
+ * Remove a provider from the registry.
184
+ *
185
+ * @param name - Provider name to remove
186
+ */
187
+ remove(name) {
188
+ this.providers.delete(name);
189
+ this.instances.delete(name);
190
+ }
191
+ /**
192
+ * Clear all providers from the registry.
193
+ */
194
+ clear() {
195
+ this.providers.clear();
196
+ this.instances.clear();
197
+ }
198
+ /**
199
+ * Run health checks on all configured providers.
200
+ *
201
+ * @returns Map of provider name to health check result (true = healthy, Error = failed)
202
+ */
203
+ async healthCheckAll() {
204
+ const results = new Map();
205
+ const configured = this.listConfigured();
206
+ await Promise.all(configured.map(async (name) => {
207
+ try {
208
+ const provider = this.get(name);
209
+ await provider.healthCheck();
210
+ results.set(name, true);
211
+ }
212
+ catch (error) {
213
+ results.set(name, error instanceof Error ? error : new Error(String(error)));
214
+ }
215
+ }));
216
+ return results;
217
+ }
218
+ }
219
+ /**
220
+ * Create a provider instance based on provider type.
221
+ * This is a factory function that maps provider types to their implementations.
222
+ *
223
+ * Note: This function requires the provider implementations to be imported
224
+ * and registered. Use ProviderManager.registerFactory() to register providers.
225
+ *
226
+ * @param type - Provider type
227
+ * @param config - Provider configuration
228
+ * @param manager - Provider manager with registered factories
229
+ * @returns Provider instance
230
+ * @throws ConfigurationError if the provider type is not supported
231
+ */
232
+ export function createProvider(type, config, manager) {
233
+ // Update config and get instance from manager
234
+ manager.updateConfig({ [type]: config });
235
+ return manager.get(type);
236
+ }
237
+ /**
238
+ * Create a ProviderManager with default provider factories registered.
239
+ * Provider implementations must be passed in to avoid circular dependencies.
240
+ *
241
+ * @param factories - Map of provider type to factory function
242
+ * @returns Configured ProviderManager
243
+ *
244
+ * @example
245
+ * ```ts
246
+ * import { AnthropicProvider } from './anthropic.js';
247
+ * import { OpenAIProvider } from './openai.js';
248
+ *
249
+ * const manager = createProviderManager({
250
+ * anthropic: (config) => new AnthropicProvider(config),
251
+ * openai: (config) => new OpenAIProvider(config),
252
+ * });
253
+ * ```
254
+ */
255
+ export function createProviderManager(factories) {
256
+ const manager = new ProviderManager();
257
+ for (const [type, factory] of Object.entries(factories)) {
258
+ if (factory) {
259
+ manager.registerFactory(type, factory);
260
+ }
261
+ }
262
+ return manager;
263
+ }
264
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/providers/manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Ollama Provider Implementation
3
+ *
4
+ * Implements the Provider interface for Ollama's OpenAI-compatible API.
5
+ * Ollama provides local LLM inference with an API that mirrors OpenAI's format.
6
+ *
7
+ * Key characteristics:
8
+ * - Local server running at http://localhost:11434
9
+ * - No authentication required (local)
10
+ * - Uses OpenAI-compatible /v1/chat/completions endpoint
11
+ * - May not support all features (especially function calling)
12
+ * - Server may be slower than cloud providers
13
+ */
14
+ import { type CompletionRequest, type CompletionResponse, type StreamChunk } from '../types.js';
15
+ import { BaseProvider } from './base.js';
16
+ /**
17
+ * Ollama provider adapter for local LLM inference.
18
+ *
19
+ * Ollama provides an OpenAI-compatible API for running local models.
20
+ * This provider translates AgentRouter requests to the Ollama format
21
+ * and handles the specific characteristics of local inference.
22
+ *
23
+ * Features:
24
+ * - No authentication required (local server)
25
+ * - Supports streaming responses
26
+ * - Limited function calling support (depends on model)
27
+ * - Graceful connection error handling
28
+ */
29
+ export declare class OllamaProvider extends BaseProvider {
30
+ readonly name = "ollama";
31
+ private static readonly DEFAULT_BASE_URL;
32
+ /**
33
+ * Build headers for Ollama API requests.
34
+ * No authentication required for local server.
35
+ */
36
+ protected buildHeaders(): Record<string, string>;
37
+ /**
38
+ * Execute a completion request and return the full response.
39
+ */
40
+ complete(request: CompletionRequest): Promise<CompletionResponse>;
41
+ /**
42
+ * Execute a streaming completion request.
43
+ */
44
+ completeStream(request: CompletionRequest): AsyncIterable<StreamChunk>;
45
+ /**
46
+ * Check if the Ollama server is running and available.
47
+ * Uses the native Ollama tags API to list available models.
48
+ */
49
+ healthCheck(): Promise<void>;
50
+ /**
51
+ * Handle Ollama-specific errors with helpful messages.
52
+ */
53
+ private handleOllamaError;
54
+ /**
55
+ * Translate AgentRouter request to Ollama format.
56
+ */
57
+ private translateRequest;
58
+ /**
59
+ * Translate messages from AgentRouter format to Ollama format.
60
+ *
61
+ * Key translations:
62
+ * - Content blocks are flattened to strings
63
+ * - tool_use blocks become tool_calls array on assistant messages
64
+ * - tool_result blocks become separate role: "tool" messages
65
+ */
66
+ private translateMessages;
67
+ /**
68
+ * Translate tools from AgentRouter format to Ollama format.
69
+ */
70
+ private translateTools;
71
+ /**
72
+ * Translate Ollama response to AgentRouter format.
73
+ */
74
+ private translateResponse;
75
+ /**
76
+ * Translate Ollama streaming chunk to AgentRouter StreamChunk format.
77
+ *
78
+ * Ollama streams deltas that need to be accumulated for tool calls.
79
+ * Text content can be yielded immediately.
80
+ */
81
+ private translateStreamChunk;
82
+ }
83
+ //# sourceMappingURL=ollama.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../../src/providers/ollama.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAIjB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAkJzC;;;;;;;;;;;;GAYG;AACH,qBAAa,cAAe,SAAQ,YAAY;IAC9C,SAAgB,IAAI,YAAY;IAEhC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAA4B;IAEpE;;;OAGG;cACgB,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAazD;;OAEG;IACU,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAqB9E;;OAEG;IACW,cAAc,CAAC,OAAO,EAAE,iBAAiB,GAAG,aAAa,CAAC,WAAW,CAAC;IA4FpF;;;OAGG;IACU,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IA+BzC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAsCzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAcxB;;;;;;;OAOG;IACH,OAAO,CAAC,iBAAiB;IAoFzB;;OAEG;IACH,OAAO,CAAC,cAAc;IAWtB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA2DzB;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;CA+F7B"}