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.
- package/LICENSE +21 -0
- package/README.md +477 -0
- package/dist/cli/install-skills.d.ts +11 -0
- package/dist/cli/install-skills.d.ts.map +1 -0
- package/dist/cli/install-skills.js +143 -0
- package/dist/cli/install-skills.js.map +1 -0
- package/dist/cli/recovery-commands.d.ts +41 -0
- package/dist/cli/recovery-commands.d.ts.map +1 -0
- package/dist/cli/recovery-commands.js +241 -0
- package/dist/cli/recovery-commands.js.map +1 -0
- package/dist/cli/setup-wizard.d.ts +25 -0
- package/dist/cli/setup-wizard.d.ts.map +1 -0
- package/dist/cli/setup-wizard.js +1417 -0
- package/dist/cli/setup-wizard.js.map +1 -0
- package/dist/cli/test-connection.d.ts +45 -0
- package/dist/cli/test-connection.d.ts.map +1 -0
- package/dist/cli/test-connection.js +317 -0
- package/dist/cli/test-connection.js.map +1 -0
- package/dist/cli.d.ts +75 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +704 -0
- package/dist/cli.js.map +1 -0
- package/dist/config/defaults.d.ts +57 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +99 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/index.d.ts +14 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +22 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/manager.d.ts +184 -0
- package/dist/config/manager.d.ts.map +1 -0
- package/dist/config/manager.js +347 -0
- package/dist/config/manager.js.map +1 -0
- package/dist/config/merger.d.ts +76 -0
- package/dist/config/merger.d.ts.map +1 -0
- package/dist/config/merger.js +189 -0
- package/dist/config/merger.js.map +1 -0
- package/dist/config/schema.d.ts +20 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +20 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/config/validator.d.ts +254 -0
- package/dist/config/validator.d.ts.map +1 -0
- package/dist/config/validator.js +363 -0
- package/dist/config/validator.js.map +1 -0
- package/dist/config/worktree-defaults.d.ts +23 -0
- package/dist/config/worktree-defaults.d.ts.map +1 -0
- package/dist/config/worktree-defaults.js +78 -0
- package/dist/config/worktree-defaults.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +44 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/tools/compare-agents.d.ts +25 -0
- package/dist/mcp/tools/compare-agents.d.ts.map +1 -0
- package/dist/mcp/tools/compare-agents.js +177 -0
- package/dist/mcp/tools/compare-agents.js.map +1 -0
- package/dist/mcp/tools/critique-plan.d.ts +26 -0
- package/dist/mcp/tools/critique-plan.d.ts.map +1 -0
- package/dist/mcp/tools/critique-plan.js +162 -0
- package/dist/mcp/tools/critique-plan.js.map +1 -0
- package/dist/mcp/tools/design-feedback.d.ts +26 -0
- package/dist/mcp/tools/design-feedback.d.ts.map +1 -0
- package/dist/mcp/tools/design-feedback.js +216 -0
- package/dist/mcp/tools/design-feedback.js.map +1 -0
- package/dist/mcp/tools/index.d.ts +50 -0
- package/dist/mcp/tools/index.d.ts.map +1 -0
- package/dist/mcp/tools/index.js +191 -0
- package/dist/mcp/tools/index.js.map +1 -0
- package/dist/mcp/tools/invoke-agent.d.ts +25 -0
- package/dist/mcp/tools/invoke-agent.d.ts.map +1 -0
- package/dist/mcp/tools/invoke-agent.js +141 -0
- package/dist/mcp/tools/invoke-agent.js.map +1 -0
- package/dist/mcp/tools/review-code.d.ts +25 -0
- package/dist/mcp/tools/review-code.d.ts.map +1 -0
- package/dist/mcp/tools/review-code.js +170 -0
- package/dist/mcp/tools/review-code.js.map +1 -0
- package/dist/mcp/tools/tasks/claim-next-task.d.ts +22 -0
- package/dist/mcp/tools/tasks/claim-next-task.d.ts.map +1 -0
- package/dist/mcp/tools/tasks/claim-next-task.js +203 -0
- package/dist/mcp/tools/tasks/claim-next-task.js.map +1 -0
- package/dist/mcp/tools/tasks/create-routed-task.d.ts +17 -0
- package/dist/mcp/tools/tasks/create-routed-task.d.ts.map +1 -0
- package/dist/mcp/tools/tasks/create-routed-task.js +178 -0
- package/dist/mcp/tools/tasks/create-routed-task.js.map +1 -0
- package/dist/mcp/tools/tasks/execute-pipeline.d.ts +22 -0
- package/dist/mcp/tools/tasks/execute-pipeline.d.ts.map +1 -0
- package/dist/mcp/tools/tasks/execute-pipeline.js +401 -0
- package/dist/mcp/tools/tasks/execute-pipeline.js.map +1 -0
- package/dist/mcp/tools/tasks/execute-task.d.ts +32 -0
- package/dist/mcp/tools/tasks/execute-task.d.ts.map +1 -0
- package/dist/mcp/tools/tasks/execute-task.js +284 -0
- package/dist/mcp/tools/tasks/execute-task.js.map +1 -0
- package/dist/mcp/tools/tasks/get-pipeline-status.d.ts +26 -0
- package/dist/mcp/tools/tasks/get-pipeline-status.d.ts.map +1 -0
- package/dist/mcp/tools/tasks/get-pipeline-status.js +460 -0
- package/dist/mcp/tools/tasks/get-pipeline-status.js.map +1 -0
- package/dist/mcp/tools/tasks/index.d.ts +36 -0
- package/dist/mcp/tools/tasks/index.d.ts.map +1 -0
- package/dist/mcp/tools/tasks/index.js +66 -0
- package/dist/mcp/tools/tasks/index.js.map +1 -0
- package/dist/mcp/tools/worktree/cleanup-worktrees.d.ts +17 -0
- package/dist/mcp/tools/worktree/cleanup-worktrees.d.ts.map +1 -0
- package/dist/mcp/tools/worktree/cleanup-worktrees.js +147 -0
- package/dist/mcp/tools/worktree/cleanup-worktrees.js.map +1 -0
- package/dist/mcp/tools/worktree/get-worktree-status.d.ts +17 -0
- package/dist/mcp/tools/worktree/get-worktree-status.d.ts.map +1 -0
- package/dist/mcp/tools/worktree/get-worktree-status.js +123 -0
- package/dist/mcp/tools/worktree/get-worktree-status.js.map +1 -0
- package/dist/mcp/tools/worktree/index.d.ts +41 -0
- package/dist/mcp/tools/worktree/index.d.ts.map +1 -0
- package/dist/mcp/tools/worktree/index.js +69 -0
- package/dist/mcp/tools/worktree/index.js.map +1 -0
- package/dist/mcp/tools/worktree/list-worktrees.d.ts +17 -0
- package/dist/mcp/tools/worktree/list-worktrees.d.ts.map +1 -0
- package/dist/mcp/tools/worktree/list-worktrees.js +136 -0
- package/dist/mcp/tools/worktree/list-worktrees.js.map +1 -0
- package/dist/mcp/tools/worktree/resolve-conflicts.d.ts +19 -0
- package/dist/mcp/tools/worktree/resolve-conflicts.d.ts.map +1 -0
- package/dist/mcp/tools/worktree/resolve-conflicts.js +228 -0
- package/dist/mcp/tools/worktree/resolve-conflicts.js.map +1 -0
- package/dist/mcp/transport/stdio.d.ts +13 -0
- package/dist/mcp/transport/stdio.d.ts.map +1 -0
- package/dist/mcp/transport/stdio.js +15 -0
- package/dist/mcp/transport/stdio.js.map +1 -0
- package/dist/observability/logger.d.ts +137 -0
- package/dist/observability/logger.d.ts.map +1 -0
- package/dist/observability/logger.js +235 -0
- package/dist/observability/logger.js.map +1 -0
- package/dist/observability/metrics.d.ts +250 -0
- package/dist/observability/metrics.d.ts.map +1 -0
- package/dist/observability/metrics.js +364 -0
- package/dist/observability/metrics.js.map +1 -0
- package/dist/persistence/index.d.ts +9 -0
- package/dist/persistence/index.d.ts.map +1 -0
- package/dist/persistence/index.js +9 -0
- package/dist/persistence/index.js.map +1 -0
- package/dist/persistence/state-schema.d.ts +116 -0
- package/dist/persistence/state-schema.d.ts.map +1 -0
- package/dist/persistence/state-schema.js +28 -0
- package/dist/persistence/state-schema.js.map +1 -0
- package/dist/persistence/state-store.d.ts +111 -0
- package/dist/persistence/state-store.d.ts.map +1 -0
- package/dist/persistence/state-store.js +291 -0
- package/dist/persistence/state-store.js.map +1 -0
- package/dist/providers/anthropic.d.ts +164 -0
- package/dist/providers/anthropic.d.ts.map +1 -0
- package/dist/providers/anthropic.js +500 -0
- package/dist/providers/anthropic.js.map +1 -0
- package/dist/providers/base.d.ts +151 -0
- package/dist/providers/base.d.ts.map +1 -0
- package/dist/providers/base.js +227 -0
- package/dist/providers/base.js.map +1 -0
- package/dist/providers/gemini.d.ts +85 -0
- package/dist/providers/gemini.d.ts.map +1 -0
- package/dist/providers/gemini.js +414 -0
- package/dist/providers/gemini.js.map +1 -0
- package/dist/providers/kimi.d.ts +19 -0
- package/dist/providers/kimi.d.ts.map +1 -0
- package/dist/providers/kimi.js +20 -0
- package/dist/providers/kimi.js.map +1 -0
- package/dist/providers/manager.d.ts +160 -0
- package/dist/providers/manager.d.ts.map +1 -0
- package/dist/providers/manager.js +264 -0
- package/dist/providers/manager.js.map +1 -0
- package/dist/providers/ollama.d.ts +83 -0
- package/dist/providers/ollama.d.ts.map +1 -0
- package/dist/providers/ollama.js +453 -0
- package/dist/providers/ollama.js.map +1 -0
- package/dist/providers/openai.d.ts +96 -0
- package/dist/providers/openai.d.ts.map +1 -0
- package/dist/providers/openai.js +457 -0
- package/dist/providers/openai.js.map +1 -0
- package/dist/providers/zai.d.ts +19 -0
- package/dist/providers/zai.d.ts.map +1 -0
- package/dist/providers/zai.js +20 -0
- package/dist/providers/zai.js.map +1 -0
- package/dist/router/context-manager.d.ts +2 -0
- package/dist/router/context-manager.d.ts.map +1 -0
- package/dist/router/context-manager.js +3 -0
- package/dist/router/context-manager.js.map +1 -0
- package/dist/router/engine.d.ts +169 -0
- package/dist/router/engine.d.ts.map +1 -0
- package/dist/router/engine.js +435 -0
- package/dist/router/engine.js.map +1 -0
- package/dist/router/pattern-executor.d.ts +317 -0
- package/dist/router/pattern-executor.d.ts.map +1 -0
- package/dist/router/pattern-executor.js +571 -0
- package/dist/router/pattern-executor.js.map +1 -0
- package/dist/router/role-resolver.d.ts +59 -0
- package/dist/router/role-resolver.d.ts.map +1 -0
- package/dist/router/role-resolver.js +95 -0
- package/dist/router/role-resolver.js.map +1 -0
- package/dist/server.d.ts +32 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +223 -0
- package/dist/server.js.map +1 -0
- package/dist/startup.d.ts +78 -0
- package/dist/startup.d.ts.map +1 -0
- package/dist/startup.js +107 -0
- package/dist/startup.js.map +1 -0
- package/dist/tasks/coordinator.d.ts +141 -0
- package/dist/tasks/coordinator.d.ts.map +1 -0
- package/dist/tasks/coordinator.js +331 -0
- package/dist/tasks/coordinator.js.map +1 -0
- package/dist/tasks/index.d.ts +13 -0
- package/dist/tasks/index.d.ts.map +1 -0
- package/dist/tasks/index.js +13 -0
- package/dist/tasks/index.js.map +1 -0
- package/dist/tasks/persistent-state-coordinator.d.ts +89 -0
- package/dist/tasks/persistent-state-coordinator.d.ts.map +1 -0
- package/dist/tasks/persistent-state-coordinator.js +371 -0
- package/dist/tasks/persistent-state-coordinator.js.map +1 -0
- package/dist/tasks/pipeline-manager.d.ts +103 -0
- package/dist/tasks/pipeline-manager.d.ts.map +1 -0
- package/dist/tasks/pipeline-manager.js +358 -0
- package/dist/tasks/pipeline-manager.js.map +1 -0
- package/dist/tasks/state-coordinator.d.ts +79 -0
- package/dist/tasks/state-coordinator.d.ts.map +1 -0
- package/dist/tasks/state-coordinator.js +200 -0
- package/dist/tasks/state-coordinator.js.map +1 -0
- package/dist/tasks/worker-mode.d.ts +65 -0
- package/dist/tasks/worker-mode.d.ts.map +1 -0
- package/dist/tasks/worker-mode.js +208 -0
- package/dist/tasks/worker-mode.js.map +1 -0
- package/dist/translation/errors.d.ts +203 -0
- package/dist/translation/errors.d.ts.map +1 -0
- package/dist/translation/errors.js +477 -0
- package/dist/translation/errors.js.map +1 -0
- package/dist/translation/index.d.ts +12 -0
- package/dist/translation/index.d.ts.map +1 -0
- package/dist/translation/index.js +32 -0
- package/dist/translation/index.js.map +1 -0
- package/dist/translation/messages.d.ts +295 -0
- package/dist/translation/messages.d.ts.map +1 -0
- package/dist/translation/messages.js +557 -0
- package/dist/translation/messages.js.map +1 -0
- package/dist/translation/streaming.d.ts +226 -0
- package/dist/translation/streaming.d.ts.map +1 -0
- package/dist/translation/streaming.js +520 -0
- package/dist/translation/streaming.js.map +1 -0
- package/dist/translation/tools.d.ts +209 -0
- package/dist/translation/tools.d.ts.map +1 -0
- package/dist/translation/tools.js +331 -0
- package/dist/translation/tools.js.map +1 -0
- package/dist/types.d.ts +747 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +86 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/circuit-breaker.d.ts +175 -0
- package/dist/utils/circuit-breaker.d.ts.map +1 -0
- package/dist/utils/circuit-breaker.js +315 -0
- package/dist/utils/circuit-breaker.js.map +1 -0
- package/dist/utils/env.d.ts +2 -0
- package/dist/utils/env.d.ts.map +1 -0
- package/dist/utils/env.js +3 -0
- package/dist/utils/env.js.map +1 -0
- package/dist/utils/git.d.ts +58 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/git.js +197 -0
- package/dist/utils/git.js.map +1 -0
- package/dist/utils/index.d.ts +9 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +9 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/merge-ordering.d.ts +45 -0
- package/dist/utils/merge-ordering.d.ts.map +1 -0
- package/dist/utils/merge-ordering.js +128 -0
- package/dist/utils/merge-ordering.js.map +1 -0
- package/dist/utils/retry.d.ts +106 -0
- package/dist/utils/retry.d.ts.map +1 -0
- package/dist/utils/retry.js +188 -0
- package/dist/utils/retry.js.map +1 -0
- package/dist/worktrees/branch-manager.d.ts +55 -0
- package/dist/worktrees/branch-manager.d.ts.map +1 -0
- package/dist/worktrees/branch-manager.js +129 -0
- package/dist/worktrees/branch-manager.js.map +1 -0
- package/dist/worktrees/conflict-handler.d.ts +72 -0
- package/dist/worktrees/conflict-handler.d.ts.map +1 -0
- package/dist/worktrees/conflict-handler.js +287 -0
- package/dist/worktrees/conflict-handler.js.map +1 -0
- package/dist/worktrees/conflict-parser.d.ts +28 -0
- package/dist/worktrees/conflict-parser.d.ts.map +1 -0
- package/dist/worktrees/conflict-parser.js +140 -0
- package/dist/worktrees/conflict-parser.js.map +1 -0
- package/dist/worktrees/index.d.ts +20 -0
- package/dist/worktrees/index.d.ts.map +1 -0
- package/dist/worktrees/index.js +20 -0
- package/dist/worktrees/index.js.map +1 -0
- package/dist/worktrees/instructions.d.ts +20 -0
- package/dist/worktrees/instructions.d.ts.map +1 -0
- package/dist/worktrees/instructions.js +84 -0
- package/dist/worktrees/instructions.js.map +1 -0
- package/dist/worktrees/manager.d.ts +76 -0
- package/dist/worktrees/manager.d.ts.map +1 -0
- package/dist/worktrees/manager.js +277 -0
- package/dist/worktrees/manager.js.map +1 -0
- package/dist/worktrees/pipeline-merge-orchestrator.d.ts +55 -0
- package/dist/worktrees/pipeline-merge-orchestrator.d.ts.map +1 -0
- package/dist/worktrees/pipeline-merge-orchestrator.js +221 -0
- package/dist/worktrees/pipeline-merge-orchestrator.js.map +1 -0
- package/dist/worktrees/pool.d.ts +95 -0
- package/dist/worktrees/pool.d.ts.map +1 -0
- package/dist/worktrees/pool.js +271 -0
- package/dist/worktrees/pool.js.map +1 -0
- package/dist/worktrees/recovery.d.ts +94 -0
- package/dist/worktrees/recovery.d.ts.map +1 -0
- package/dist/worktrees/recovery.js +371 -0
- package/dist/worktrees/recovery.js.map +1 -0
- package/dist/worktrees/resource-manager.d.ts +74 -0
- package/dist/worktrees/resource-manager.d.ts.map +1 -0
- package/dist/worktrees/resource-manager.js +228 -0
- package/dist/worktrees/resource-manager.js.map +1 -0
- 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"}
|