@sashabogi/foundation 0.1.6 → 0.1.8
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/dist/cli/setup-wizard.d.ts +30 -0
- package/dist/cli/setup-wizard.d.ts.map +1 -0
- package/dist/cli/setup-wizard.js +1645 -0
- package/dist/cli/setup-wizard.js.map +1 -0
- package/dist/cli/test-connection.d.ts +76 -0
- package/dist/cli/test-connection.d.ts.map +1 -0
- package/dist/cli/test-connection.js +697 -0
- package/dist/cli/test-connection.js.map +1 -0
- package/dist/cli.d.ts +3 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +50 -5
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/providers/anthropic.d.ts +178 -0
- package/dist/providers/anthropic.d.ts.map +1 -0
- package/dist/providers/anthropic.js +514 -0
- package/dist/providers/anthropic.js.map +1 -0
- package/dist/providers/base.d.ts +154 -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/deepseek.d.ts +23 -0
- package/dist/providers/deepseek.d.ts.map +1 -0
- package/dist/providers/deepseek.js +31 -0
- package/dist/providers/deepseek.js.map +1 -0
- package/dist/providers/fireworks.d.ts +23 -0
- package/dist/providers/fireworks.d.ts.map +1 -0
- package/dist/providers/fireworks.js +31 -0
- package/dist/providers/fireworks.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/groq.d.ts +23 -0
- package/dist/providers/groq.d.ts.map +1 -0
- package/dist/providers/groq.js +31 -0
- package/dist/providers/groq.js.map +1 -0
- package/dist/providers/index.d.ts +23 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +27 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/kimi-code.d.ts +32 -0
- package/dist/providers/kimi-code.d.ts.map +1 -0
- package/dist/providers/kimi-code.js +46 -0
- package/dist/providers/kimi-code.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 +27 -0
- package/dist/providers/kimi.js.map +1 -0
- package/dist/providers/manager.d.ts +144 -0
- package/dist/providers/manager.d.ts.map +1 -0
- package/dist/providers/manager.js +279 -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 +450 -0
- package/dist/providers/ollama.js.map +1 -0
- package/dist/providers/openai.d.ts +91 -0
- package/dist/providers/openai.d.ts.map +1 -0
- package/dist/providers/openai.js +445 -0
- package/dist/providers/openai.js.map +1 -0
- package/dist/providers/openrouter.d.ts +23 -0
- package/dist/providers/openrouter.d.ts.map +1 -0
- package/dist/providers/openrouter.js +31 -0
- package/dist/providers/openrouter.js.map +1 -0
- package/dist/providers/perplexity.d.ts +34 -0
- package/dist/providers/perplexity.d.ts.map +1 -0
- package/dist/providers/perplexity.js +58 -0
- package/dist/providers/perplexity.js.map +1 -0
- package/dist/providers/together.d.ts +23 -0
- package/dist/providers/together.d.ts.map +1 -0
- package/dist/providers/together.js +31 -0
- package/dist/providers/together.js.map +1 -0
- package/dist/providers/types.d.ts +229 -0
- package/dist/providers/types.d.ts.map +1 -0
- package/dist/providers/types.js +73 -0
- package/dist/providers/types.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 +27 -0
- package/dist/providers/zai.js.map +1 -0
- package/dist/services/provider.service.d.ts +28 -0
- package/dist/services/provider.service.d.ts.map +1 -1
- package/dist/services/provider.service.js +137 -13
- package/dist/services/provider.service.js.map +1 -1
- package/dist/tools/demerzel/engine.d.ts +67 -0
- package/dist/tools/demerzel/engine.d.ts.map +1 -0
- package/dist/tools/demerzel/engine.js +401 -0
- package/dist/tools/demerzel/engine.js.map +1 -0
- package/dist/tools/demerzel/enhanced-snapshot.d.ts +67 -0
- package/dist/tools/demerzel/enhanced-snapshot.d.ts.map +1 -0
- package/dist/tools/demerzel/enhanced-snapshot.js +481 -0
- package/dist/tools/demerzel/enhanced-snapshot.js.map +1 -0
- package/dist/tools/demerzel/index.d.ts +11 -0
- package/dist/tools/demerzel/index.d.ts.map +1 -1
- package/dist/tools/demerzel/index.js +656 -85
- package/dist/tools/demerzel/index.js.map +1 -1
- package/dist/tools/demerzel/prompts.d.ts +26 -0
- package/dist/tools/demerzel/prompts.d.ts.map +1 -0
- package/dist/tools/demerzel/prompts.js +181 -0
- package/dist/tools/demerzel/prompts.js.map +1 -0
- package/dist/tools/demerzel/semantic-search.d.ts +54 -0
- package/dist/tools/demerzel/semantic-search.d.ts.map +1 -0
- package/dist/tools/demerzel/semantic-search.js +205 -0
- package/dist/tools/demerzel/semantic-search.js.map +1 -0
- package/dist/tools/demerzel/snapshot.d.ts +30 -0
- package/dist/tools/demerzel/snapshot.d.ts.map +1 -0
- package/dist/tools/demerzel/snapshot.js +169 -0
- package/dist/tools/demerzel/snapshot.js.map +1 -0
- package/package.json +2 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kimi.d.ts","sourceRoot":"","sources":["../../src/providers/kimi.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAKjD;;;;;GAKG;AACH,qBAAa,YAAa,SAAQ,cAAc;IAC9C,SAAyB,IAAI,UAAU;gBAE3B,MAAM,EAAE,cAAc;CAQnC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kimi (Moonshot AI) Provider Implementation
|
|
3
|
+
*
|
|
4
|
+
* Kimi uses an OpenAI-compatible API format.
|
|
5
|
+
* This provider extends OpenAIProvider with the correct name identifier.
|
|
6
|
+
*/
|
|
7
|
+
import { OpenAIProvider } from './openai.js';
|
|
8
|
+
// Default base URL for Kimi API
|
|
9
|
+
const KIMI_BASE_URL = 'https://api.moonshot.ai/v1';
|
|
10
|
+
/**
|
|
11
|
+
* Kimi (Moonshot AI) API provider adapter.
|
|
12
|
+
*
|
|
13
|
+
* Uses OpenAI-compatible API format but with Kimi endpoints.
|
|
14
|
+
* Default base URL: https://api.moonshot.ai/v1
|
|
15
|
+
*/
|
|
16
|
+
export class KimiProvider extends OpenAIProvider {
|
|
17
|
+
name = 'kimi';
|
|
18
|
+
constructor(config) {
|
|
19
|
+
// Ensure base_url defaults to Kimi endpoint if not specified
|
|
20
|
+
const configWithDefaults = {
|
|
21
|
+
...config,
|
|
22
|
+
base_url: config.base_url ?? KIMI_BASE_URL,
|
|
23
|
+
};
|
|
24
|
+
super(configWithDefaults);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=kimi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kimi.js","sourceRoot":"","sources":["../../src/providers/kimi.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C,gCAAgC;AAChC,MAAM,aAAa,GAAG,4BAA4B,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,OAAO,YAAa,SAAQ,cAAc;IACrB,IAAI,GAAG,MAAM,CAAC;IAEvC,YAAY,MAAsB;QAChC,6DAA6D;QAC7D,MAAM,kBAAkB,GAAmB;YACzC,GAAG,MAAM;YACT,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,aAAa;SAC3C,CAAC;QACF,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAC5B,CAAC;CACF"}
|
|
@@ -0,0 +1,144 @@
|
|
|
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 { type Provider, type ProviderConfig, type ProviderType } from './types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Factory function type for creating provider instances.
|
|
11
|
+
*/
|
|
12
|
+
export type ProviderFactory = (config: ProviderConfig) => Provider;
|
|
13
|
+
/**
|
|
14
|
+
* Manager for LLM provider instances.
|
|
15
|
+
*
|
|
16
|
+
* Handles:
|
|
17
|
+
* - Provider registration and retrieval
|
|
18
|
+
* - Provider instance creation via factory methods
|
|
19
|
+
* - Configuration updates with instance recreation
|
|
20
|
+
* - Lazy instantiation of providers
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```ts
|
|
24
|
+
* const manager = new ProviderManager();
|
|
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 declare class ProviderManager {
|
|
37
|
+
/** Registry of provider factories and instances by name */
|
|
38
|
+
private readonly providers;
|
|
39
|
+
/** Registry of active provider instances */
|
|
40
|
+
private readonly instances;
|
|
41
|
+
/**
|
|
42
|
+
* Create a new ProviderManager with default factories registered.
|
|
43
|
+
*/
|
|
44
|
+
constructor();
|
|
45
|
+
/**
|
|
46
|
+
* Register a provider factory for a given provider type.
|
|
47
|
+
* The factory will be used to create provider instances when needed.
|
|
48
|
+
*
|
|
49
|
+
* @param name - Provider name (e.g., 'anthropic', 'openai')
|
|
50
|
+
* @param factory - Factory function that creates provider instances
|
|
51
|
+
*/
|
|
52
|
+
registerFactory(name: string, factory: ProviderFactory): void;
|
|
53
|
+
/**
|
|
54
|
+
* Register a pre-created provider instance directly.
|
|
55
|
+
* Useful for testing or custom provider implementations.
|
|
56
|
+
*
|
|
57
|
+
* @param name - Provider name
|
|
58
|
+
* @param provider - Provider instance
|
|
59
|
+
*/
|
|
60
|
+
register(name: string, provider: Provider): void;
|
|
61
|
+
/**
|
|
62
|
+
* Get a provider instance by name.
|
|
63
|
+
* Creates the instance lazily if it hasn't been created yet.
|
|
64
|
+
*
|
|
65
|
+
* @param name - Provider name
|
|
66
|
+
* @returns The provider instance
|
|
67
|
+
* @throws ConfigurationError if the provider is not registered or not configured
|
|
68
|
+
*/
|
|
69
|
+
get(name: string): Provider;
|
|
70
|
+
/**
|
|
71
|
+
* Check if a provider is registered (has a factory).
|
|
72
|
+
*
|
|
73
|
+
* @param name - Provider name
|
|
74
|
+
* @returns True if the provider is registered
|
|
75
|
+
*/
|
|
76
|
+
has(name: string): boolean;
|
|
77
|
+
/**
|
|
78
|
+
* Check if a provider is configured and ready to use.
|
|
79
|
+
*
|
|
80
|
+
* @param name - Provider name
|
|
81
|
+
* @returns True if the provider is configured
|
|
82
|
+
*/
|
|
83
|
+
isConfigured(name: string): boolean;
|
|
84
|
+
/**
|
|
85
|
+
* Update provider configurations.
|
|
86
|
+
* This will invalidate existing instances so they are recreated with new configs.
|
|
87
|
+
*
|
|
88
|
+
* @param configs - Map of provider name to configuration
|
|
89
|
+
*/
|
|
90
|
+
updateConfig(configs: Record<string, ProviderConfig>): void;
|
|
91
|
+
/**
|
|
92
|
+
* Get the configuration for a provider.
|
|
93
|
+
*
|
|
94
|
+
* @param name - Provider name
|
|
95
|
+
* @returns The provider configuration, or undefined if not configured
|
|
96
|
+
*/
|
|
97
|
+
getConfig(name: string): ProviderConfig | undefined;
|
|
98
|
+
/**
|
|
99
|
+
* List all registered provider names.
|
|
100
|
+
*
|
|
101
|
+
* @returns Array of provider names
|
|
102
|
+
*/
|
|
103
|
+
listProviders(): string[];
|
|
104
|
+
/**
|
|
105
|
+
* List all configured provider names (ready to use).
|
|
106
|
+
*
|
|
107
|
+
* @returns Array of configured provider names
|
|
108
|
+
*/
|
|
109
|
+
listConfigured(): string[];
|
|
110
|
+
/**
|
|
111
|
+
* Remove a provider from the registry.
|
|
112
|
+
*
|
|
113
|
+
* @param name - Provider name to remove
|
|
114
|
+
*/
|
|
115
|
+
remove(name: string): void;
|
|
116
|
+
/**
|
|
117
|
+
* Clear all providers from the registry.
|
|
118
|
+
*/
|
|
119
|
+
clear(): void;
|
|
120
|
+
/**
|
|
121
|
+
* Run health checks on all configured providers.
|
|
122
|
+
*
|
|
123
|
+
* @returns Map of provider name to health check result (true = healthy, Error = failed)
|
|
124
|
+
*/
|
|
125
|
+
healthCheckAll(): Promise<Map<string, true | Error>>;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Create a provider instance based on provider type.
|
|
129
|
+
* This is a factory function that maps provider types to their implementations.
|
|
130
|
+
*
|
|
131
|
+
* @param type - Provider type
|
|
132
|
+
* @param config - Provider configuration
|
|
133
|
+
* @param manager - Provider manager with registered factories
|
|
134
|
+
* @returns Provider instance
|
|
135
|
+
* @throws ConfigurationError if the provider type is not supported
|
|
136
|
+
*/
|
|
137
|
+
export declare function createProvider(type: ProviderType, config: ProviderConfig, manager: ProviderManager): Provider;
|
|
138
|
+
/**
|
|
139
|
+
* Create a ProviderManager with default provider factories registered.
|
|
140
|
+
*
|
|
141
|
+
* @returns Configured ProviderManager
|
|
142
|
+
*/
|
|
143
|
+
export declare function createProviderManager(): ProviderManager;
|
|
144
|
+
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/providers/manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAsB,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAiBvG;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,cAAc,KAAK,QAAQ,CAAC;AAiCnE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,eAAe;IAC1B,2DAA2D;IAC3D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA2C;IAErE,4CAA4C;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA+B;IAEzD;;OAEG;;IAQH;;;;;;OAMG;IACI,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,IAAI;IAcpE;;;;;;OAMG;IACI,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAUvD;;;;;;;OAOG;IACI,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;IAkClC;;;;;OAKG;IACI,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIjC;;;;;OAKG;IACI,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAK1C;;;;;OAKG;IACI,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,IAAI;IAwBlE;;;;;OAKG;IACI,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAI1D;;;;OAIG;IACI,aAAa,IAAI,MAAM,EAAE;IAOhC;;;;OAIG;IACI,cAAc,IAAI,MAAM,EAAE;IAIjC;;;;OAIG;IACI,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKjC;;OAEG;IACI,KAAK,IAAI,IAAI;IAKpB;;;;OAIG;IACU,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,GAAG,KAAK,CAAC,CAAC;CAkBlE;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,eAAe,GACvB,QAAQ,CAIV;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,eAAe,CAEvD"}
|
|
@@ -0,0 +1,279 @@
|
|
|
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
|
+
// Import all provider implementations
|
|
10
|
+
import { AnthropicProvider } from './anthropic.js';
|
|
11
|
+
import { OpenAIProvider } from './openai.js';
|
|
12
|
+
import { GeminiProvider } from './gemini.js';
|
|
13
|
+
import { OllamaProvider } from './ollama.js';
|
|
14
|
+
import { GroqProvider } from './groq.js';
|
|
15
|
+
import { TogetherProvider } from './together.js';
|
|
16
|
+
import { FireworksProvider } from './fireworks.js';
|
|
17
|
+
import { OpenRouterProvider } from './openrouter.js';
|
|
18
|
+
import { PerplexityProvider } from './perplexity.js';
|
|
19
|
+
import { KimiProvider } from './kimi.js';
|
|
20
|
+
import { KimiCodeProvider } from './kimi-code.js';
|
|
21
|
+
import { ZAIProvider } from './zai.js';
|
|
22
|
+
import { DeepSeekProvider } from './deepseek.js';
|
|
23
|
+
/**
|
|
24
|
+
* Default provider factories for all supported providers.
|
|
25
|
+
*/
|
|
26
|
+
const DEFAULT_FACTORIES = {
|
|
27
|
+
anthropic: (config) => new AnthropicProvider(config),
|
|
28
|
+
openai: (config) => new OpenAIProvider(config),
|
|
29
|
+
google: (config) => new GeminiProvider(config),
|
|
30
|
+
ollama: (config) => new OllamaProvider(config),
|
|
31
|
+
groq: (config) => new GroqProvider(config),
|
|
32
|
+
together: (config) => new TogetherProvider(config),
|
|
33
|
+
fireworks: (config) => new FireworksProvider(config),
|
|
34
|
+
openrouter: (config) => new OpenRouterProvider(config),
|
|
35
|
+
perplexity: (config) => new PerplexityProvider(config),
|
|
36
|
+
kimi: (config) => new KimiProvider(config),
|
|
37
|
+
'kimi-code': (config) => new KimiCodeProvider(config),
|
|
38
|
+
zai: (config) => new ZAIProvider(config),
|
|
39
|
+
deepseek: (config) => new DeepSeekProvider(config),
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* Manager for LLM provider instances.
|
|
43
|
+
*
|
|
44
|
+
* Handles:
|
|
45
|
+
* - Provider registration and retrieval
|
|
46
|
+
* - Provider instance creation via factory methods
|
|
47
|
+
* - Configuration updates with instance recreation
|
|
48
|
+
* - Lazy instantiation of providers
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```ts
|
|
52
|
+
* const manager = new ProviderManager();
|
|
53
|
+
*
|
|
54
|
+
* // Update configurations (creates instances lazily)
|
|
55
|
+
* manager.updateConfig({
|
|
56
|
+
* anthropic: { api_key: 'sk-...' },
|
|
57
|
+
* openai: { api_key: 'sk-...' }
|
|
58
|
+
* });
|
|
59
|
+
*
|
|
60
|
+
* // Get a provider instance
|
|
61
|
+
* const provider = manager.get('anthropic');
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
export class ProviderManager {
|
|
65
|
+
/** Registry of provider factories and instances by name */
|
|
66
|
+
providers = new Map();
|
|
67
|
+
/** Registry of active provider instances */
|
|
68
|
+
instances = new Map();
|
|
69
|
+
/**
|
|
70
|
+
* Create a new ProviderManager with default factories registered.
|
|
71
|
+
*/
|
|
72
|
+
constructor() {
|
|
73
|
+
// Register all default factories
|
|
74
|
+
for (const [type, factory] of Object.entries(DEFAULT_FACTORIES)) {
|
|
75
|
+
this.registerFactory(type, factory);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Register a provider factory for a given provider type.
|
|
80
|
+
* The factory will be used to create provider instances when needed.
|
|
81
|
+
*
|
|
82
|
+
* @param name - Provider name (e.g., 'anthropic', 'openai')
|
|
83
|
+
* @param factory - Factory function that creates provider instances
|
|
84
|
+
*/
|
|
85
|
+
registerFactory(name, factory) {
|
|
86
|
+
const existing = this.providers.get(name);
|
|
87
|
+
if (existing) {
|
|
88
|
+
// Update the factory but preserve existing config
|
|
89
|
+
existing.factory = factory;
|
|
90
|
+
// Clear instance so it will be recreated with new factory
|
|
91
|
+
delete existing.instance;
|
|
92
|
+
this.instances.delete(name);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
this.providers.set(name, { factory });
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Register a pre-created provider instance directly.
|
|
100
|
+
* Useful for testing or custom provider implementations.
|
|
101
|
+
*
|
|
102
|
+
* @param name - Provider name
|
|
103
|
+
* @param provider - Provider instance
|
|
104
|
+
*/
|
|
105
|
+
register(name, provider) {
|
|
106
|
+
this.instances.set(name, provider);
|
|
107
|
+
// Also store in providers map with a dummy factory
|
|
108
|
+
this.providers.set(name, {
|
|
109
|
+
factory: () => provider,
|
|
110
|
+
instance: provider,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Get a provider instance by name.
|
|
115
|
+
* Creates the instance lazily if it hasn't been created yet.
|
|
116
|
+
*
|
|
117
|
+
* @param name - Provider name
|
|
118
|
+
* @returns The provider instance
|
|
119
|
+
* @throws ConfigurationError if the provider is not registered or not configured
|
|
120
|
+
*/
|
|
121
|
+
get(name) {
|
|
122
|
+
// Check for directly registered instance first
|
|
123
|
+
const directInstance = this.instances.get(name);
|
|
124
|
+
if (directInstance) {
|
|
125
|
+
return directInstance;
|
|
126
|
+
}
|
|
127
|
+
// Check for factory-based registration
|
|
128
|
+
const registration = this.providers.get(name);
|
|
129
|
+
if (!registration) {
|
|
130
|
+
throw new ConfigurationError(`Provider '${name}' is not registered. Available providers: ${this.listProviders().join(', ') || 'none'}`);
|
|
131
|
+
}
|
|
132
|
+
// Return existing instance if available
|
|
133
|
+
if (registration.instance) {
|
|
134
|
+
return registration.instance;
|
|
135
|
+
}
|
|
136
|
+
// Check if we have configuration
|
|
137
|
+
if (!registration.config) {
|
|
138
|
+
throw new ConfigurationError(`Provider '${name}' is registered but not configured. Call updateConfig() first.`);
|
|
139
|
+
}
|
|
140
|
+
// Create new instance
|
|
141
|
+
registration.instance = registration.factory(registration.config);
|
|
142
|
+
this.instances.set(name, registration.instance);
|
|
143
|
+
return registration.instance;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Check if a provider is registered (has a factory).
|
|
147
|
+
*
|
|
148
|
+
* @param name - Provider name
|
|
149
|
+
* @returns True if the provider is registered
|
|
150
|
+
*/
|
|
151
|
+
has(name) {
|
|
152
|
+
return this.providers.has(name) || this.instances.has(name);
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Check if a provider is configured and ready to use.
|
|
156
|
+
*
|
|
157
|
+
* @param name - Provider name
|
|
158
|
+
* @returns True if the provider is configured
|
|
159
|
+
*/
|
|
160
|
+
isConfigured(name) {
|
|
161
|
+
const registration = this.providers.get(name);
|
|
162
|
+
return !!registration?.config || this.instances.has(name);
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Update provider configurations.
|
|
166
|
+
* This will invalidate existing instances so they are recreated with new configs.
|
|
167
|
+
*
|
|
168
|
+
* @param configs - Map of provider name to configuration
|
|
169
|
+
*/
|
|
170
|
+
updateConfig(configs) {
|
|
171
|
+
for (const [name, config] of Object.entries(configs)) {
|
|
172
|
+
const registration = this.providers.get(name);
|
|
173
|
+
if (registration) {
|
|
174
|
+
// Update config and clear instance to force recreation
|
|
175
|
+
registration.config = config;
|
|
176
|
+
delete registration.instance;
|
|
177
|
+
this.instances.delete(name);
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
// Store config even if no factory registered yet
|
|
181
|
+
// This allows config to be loaded before factories are registered
|
|
182
|
+
this.providers.set(name, {
|
|
183
|
+
factory: () => {
|
|
184
|
+
throw new ConfigurationError(`No factory registered for provider '${name}'`);
|
|
185
|
+
},
|
|
186
|
+
config,
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Get the configuration for a provider.
|
|
193
|
+
*
|
|
194
|
+
* @param name - Provider name
|
|
195
|
+
* @returns The provider configuration, or undefined if not configured
|
|
196
|
+
*/
|
|
197
|
+
getConfig(name) {
|
|
198
|
+
return this.providers.get(name)?.config;
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* List all registered provider names.
|
|
202
|
+
*
|
|
203
|
+
* @returns Array of provider names
|
|
204
|
+
*/
|
|
205
|
+
listProviders() {
|
|
206
|
+
const names = new Set();
|
|
207
|
+
this.providers.forEach((_, name) => names.add(name));
|
|
208
|
+
this.instances.forEach((_, name) => names.add(name));
|
|
209
|
+
return Array.from(names);
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* List all configured provider names (ready to use).
|
|
213
|
+
*
|
|
214
|
+
* @returns Array of configured provider names
|
|
215
|
+
*/
|
|
216
|
+
listConfigured() {
|
|
217
|
+
return this.listProviders().filter((name) => this.isConfigured(name));
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Remove a provider from the registry.
|
|
221
|
+
*
|
|
222
|
+
* @param name - Provider name to remove
|
|
223
|
+
*/
|
|
224
|
+
remove(name) {
|
|
225
|
+
this.providers.delete(name);
|
|
226
|
+
this.instances.delete(name);
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Clear all providers from the registry.
|
|
230
|
+
*/
|
|
231
|
+
clear() {
|
|
232
|
+
this.providers.clear();
|
|
233
|
+
this.instances.clear();
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Run health checks on all configured providers.
|
|
237
|
+
*
|
|
238
|
+
* @returns Map of provider name to health check result (true = healthy, Error = failed)
|
|
239
|
+
*/
|
|
240
|
+
async healthCheckAll() {
|
|
241
|
+
const results = new Map();
|
|
242
|
+
const configured = this.listConfigured();
|
|
243
|
+
await Promise.all(configured.map(async (name) => {
|
|
244
|
+
try {
|
|
245
|
+
const provider = this.get(name);
|
|
246
|
+
await provider.healthCheck();
|
|
247
|
+
results.set(name, true);
|
|
248
|
+
}
|
|
249
|
+
catch (error) {
|
|
250
|
+
results.set(name, error instanceof Error ? error : new Error(String(error)));
|
|
251
|
+
}
|
|
252
|
+
}));
|
|
253
|
+
return results;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Create a provider instance based on provider type.
|
|
258
|
+
* This is a factory function that maps provider types to their implementations.
|
|
259
|
+
*
|
|
260
|
+
* @param type - Provider type
|
|
261
|
+
* @param config - Provider configuration
|
|
262
|
+
* @param manager - Provider manager with registered factories
|
|
263
|
+
* @returns Provider instance
|
|
264
|
+
* @throws ConfigurationError if the provider type is not supported
|
|
265
|
+
*/
|
|
266
|
+
export function createProvider(type, config, manager) {
|
|
267
|
+
// Update config and get instance from manager
|
|
268
|
+
manager.updateConfig({ [type]: config });
|
|
269
|
+
return manager.get(type);
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Create a ProviderManager with default provider factories registered.
|
|
273
|
+
*
|
|
274
|
+
* @returns Configured ProviderManager
|
|
275
|
+
*/
|
|
276
|
+
export function createProviderManager() {
|
|
277
|
+
return new ProviderManager();
|
|
278
|
+
}
|
|
279
|
+
//# 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 Foundation 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 Foundation request to Ollama format.
|
|
56
|
+
*/
|
|
57
|
+
private translateRequest;
|
|
58
|
+
/**
|
|
59
|
+
* Translate messages from Foundation 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 Foundation format to Ollama format.
|
|
69
|
+
*/
|
|
70
|
+
private translateTools;
|
|
71
|
+
/**
|
|
72
|
+
* Translate Ollama response to Foundation format.
|
|
73
|
+
*/
|
|
74
|
+
private translateResponse;
|
|
75
|
+
/**
|
|
76
|
+
* Translate Ollama streaming chunk to Foundation 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,YAAY,CAAC;AAEpB,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;IAyFpF;;;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"}
|