@lssm/lib.ai-providers 0.0.0-canary-20251217052941 → 0.0.0-canary-20251217060433

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.
@@ -0,0 +1,18 @@
1
+ import { Provider, ProviderAvailability, ProviderConfig } from "./types.js";
2
+
3
+ //#region src/factory.d.ts
4
+
5
+ /**
6
+ * Create a provider from configuration
7
+ */
8
+ declare function createProvider(config: ProviderConfig): Provider;
9
+ /**
10
+ * Create a provider from environment variables
11
+ */
12
+ declare function createProviderFromEnv(): Provider;
13
+ /**
14
+ * Get all available providers with their status
15
+ */
16
+ declare function getAvailableProviders(): ProviderAvailability[];
17
+ //#endregion
18
+ export { createProvider, createProviderFromEnv, getAvailableProviders };
@@ -0,0 +1,6 @@
1
+ import { LegacyConfig, LegacyProviderName, ModelCapabilities, ModelInfo, Provider, ProviderAvailability, ProviderConfig, ProviderMode, ProviderName } from "./types.js";
2
+ import { createProvider, createProviderFromEnv, getAvailableProviders } from "./factory.js";
3
+ import { DEFAULT_MODELS, MODELS, getDefaultModel, getModelInfo, getModelsForProvider, getRecommendedModels } from "./models.js";
4
+ import { ValidationResult, getEnvVarName, hasCredentials, isOllamaRunning, listOllamaModels, validateProvider as validateProvider$1 } from "./validation.js";
5
+ import { getAIProvider, validateProvider } from "./legacy.js";
6
+ export { DEFAULT_MODELS, LegacyConfig, LegacyProviderName, MODELS, ModelCapabilities, ModelInfo, Provider, ProviderAvailability, ProviderConfig, ProviderMode, ProviderName, ValidationResult, createProvider, createProviderFromEnv, getAIProvider, getAvailableProviders, getDefaultModel, getEnvVarName, getModelInfo, getModelsForProvider, getRecommendedModels, hasCredentials, isOllamaRunning, listOllamaModels, validateProvider as validateLegacyProvider, validateProvider$1 as validateProvider };
@@ -0,0 +1,23 @@
1
+ import { LegacyConfig } from "./types.js";
2
+ import { getRecommendedModels } from "./models.js";
3
+ import { LanguageModel } from "ai";
4
+
5
+ //#region src/legacy.d.ts
6
+
7
+ /**
8
+ * Get AI provider from legacy Config type
9
+ *
10
+ * @deprecated Use createProvider() instead
11
+ */
12
+ declare function getAIProvider(config: LegacyConfig): LanguageModel;
13
+ /**
14
+ * Validate provider from legacy Config type
15
+ *
16
+ * @deprecated Use validateProvider() from './validation' instead
17
+ */
18
+ declare function validateProvider(config: LegacyConfig): Promise<{
19
+ success: boolean;
20
+ error?: string;
21
+ }>;
22
+ //#endregion
23
+ export { getAIProvider, getRecommendedModels, validateProvider };
@@ -0,0 +1,30 @@
1
+ import { ModelInfo, ProviderName } from "./types.js";
2
+
3
+ //#region src/models.d.ts
4
+
5
+ /**
6
+ * Default models per provider
7
+ */
8
+ declare const DEFAULT_MODELS: Record<ProviderName, string>;
9
+ /**
10
+ * All recommended models with metadata
11
+ */
12
+ declare const MODELS: ModelInfo[];
13
+ /**
14
+ * Get models for a specific provider
15
+ */
16
+ declare function getModelsForProvider(provider: ProviderName): ModelInfo[];
17
+ /**
18
+ * Get model info by ID
19
+ */
20
+ declare function getModelInfo(modelId: string): ModelInfo | undefined;
21
+ /**
22
+ * Get recommended models for a provider (legacy format)
23
+ */
24
+ declare function getRecommendedModels(provider: ProviderName | 'claude' | 'custom'): string[];
25
+ /**
26
+ * Get default model for a provider
27
+ */
28
+ declare function getDefaultModel(provider: ProviderName): string;
29
+ //#endregion
30
+ export { DEFAULT_MODELS, MODELS, getDefaultModel, getModelInfo, getModelsForProvider, getRecommendedModels };
@@ -0,0 +1,112 @@
1
+ import { LanguageModel } from "ai";
2
+
3
+ //#region src/types.d.ts
4
+
5
+ /**
6
+ * Supported AI providers
7
+ */
8
+ type ProviderName = 'ollama' | 'openai' | 'anthropic' | 'mistral' | 'gemini';
9
+ /**
10
+ * Legacy provider names (for backwards compatibility)
11
+ */
12
+ type LegacyProviderName = 'claude' | 'openai' | 'ollama' | 'custom';
13
+ /**
14
+ * Provider mode determines how API keys are resolved
15
+ */
16
+ type ProviderMode = 'local' | 'byok' | 'managed';
17
+ /**
18
+ * Configuration for creating a provider
19
+ */
20
+ interface ProviderConfig {
21
+ /** Which provider to use */
22
+ provider: ProviderName;
23
+ /** Specific model to use (optional, uses provider default) */
24
+ model?: string;
25
+ /** API key for BYOK mode */
26
+ apiKey?: string;
27
+ /** Custom base URL (for Ollama or custom endpoints) */
28
+ baseUrl?: string;
29
+ /** API proxy URL for managed mode */
30
+ proxyUrl?: string;
31
+ /** Organization/tenant ID for managed mode */
32
+ organizationId?: string;
33
+ }
34
+ /**
35
+ * Model capability flags
36
+ */
37
+ interface ModelCapabilities {
38
+ /** Supports image/vision input */
39
+ vision: boolean;
40
+ /** Supports tool/function calling */
41
+ tools: boolean;
42
+ /** Supports extended thinking/reasoning */
43
+ reasoning: boolean;
44
+ /** Supports streaming */
45
+ streaming: boolean;
46
+ }
47
+ /**
48
+ * Model information
49
+ */
50
+ interface ModelInfo {
51
+ /** Model identifier */
52
+ id: string;
53
+ /** Human-readable name */
54
+ name: string;
55
+ /** Provider this model belongs to */
56
+ provider: ProviderName;
57
+ /** Context window size in tokens */
58
+ contextWindow: number;
59
+ /** Model capabilities */
60
+ capabilities: ModelCapabilities;
61
+ /** Approximate cost per million tokens (input, output) */
62
+ costPerMillion?: {
63
+ input: number;
64
+ output: number;
65
+ };
66
+ }
67
+ /**
68
+ * AI Provider interface
69
+ */
70
+ interface Provider {
71
+ /** Provider name */
72
+ readonly name: ProviderName;
73
+ /** Current model ID */
74
+ readonly model: string;
75
+ /** Provider mode */
76
+ readonly mode: ProviderMode;
77
+ /**
78
+ * Get the underlying AI SDK language model
79
+ */
80
+ getModel(): LanguageModel;
81
+ /**
82
+ * List available models for this provider
83
+ */
84
+ listModels(): Promise<ModelInfo[]>;
85
+ /**
86
+ * Validate the provider configuration/credentials
87
+ */
88
+ validate(): Promise<{
89
+ valid: boolean;
90
+ error?: string;
91
+ }>;
92
+ }
93
+ /**
94
+ * Provider availability info
95
+ */
96
+ interface ProviderAvailability {
97
+ provider: ProviderName;
98
+ available: boolean;
99
+ mode: ProviderMode;
100
+ reason?: string;
101
+ }
102
+ /**
103
+ * Legacy Config type for backwards compatibility
104
+ * This matches the Config type from contractspec-workspace
105
+ */
106
+ interface LegacyConfig {
107
+ aiProvider: LegacyProviderName;
108
+ aiModel?: string;
109
+ customEndpoint?: string;
110
+ }
111
+ //#endregion
112
+ export { LegacyConfig, LegacyProviderName, ModelCapabilities, ModelInfo, Provider, ProviderAvailability, ProviderConfig, ProviderMode, ProviderName };
@@ -0,0 +1,34 @@
1
+ import { ProviderConfig, ProviderName } from "./types.js";
2
+
3
+ //#region src/validation.d.ts
4
+
5
+ /**
6
+ * Validation result
7
+ */
8
+ interface ValidationResult {
9
+ valid: boolean;
10
+ error?: string;
11
+ warnings?: string[];
12
+ }
13
+ /**
14
+ * Validate a provider configuration
15
+ */
16
+ declare function validateProvider(config: ProviderConfig): Promise<ValidationResult>;
17
+ /**
18
+ * Check if a provider has required credentials
19
+ */
20
+ declare function hasCredentials(provider: ProviderName): boolean;
21
+ /**
22
+ * Get the environment variable name for a provider's API key
23
+ */
24
+ declare function getEnvVarName(provider: ProviderName): string | null;
25
+ /**
26
+ * Check if Ollama is running
27
+ */
28
+ declare function isOllamaRunning(baseUrl?: string): Promise<boolean>;
29
+ /**
30
+ * List available Ollama models
31
+ */
32
+ declare function listOllamaModels(baseUrl?: string): Promise<string[]>;
33
+ //#endregion
34
+ export { ValidationResult, getEnvVarName, hasCredentials, isOllamaRunning, listOllamaModels, validateProvider };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lssm/lib.ai-providers",
3
- "version": "0.0.0-canary-20251217052941",
3
+ "version": "0.0.0-canary-20251217060433",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
@@ -32,18 +32,18 @@
32
32
  "zod": "^4.1.13"
33
33
  },
34
34
  "devDependencies": {
35
- "@lssm/tool.tsdown": "0.0.0-canary-20251217052941",
36
- "@lssm/tool.typescript": "0.0.0-canary-20251217052941",
35
+ "@lssm/tool.tsdown": "0.0.0-canary-20251217060433",
36
+ "@lssm/tool.typescript": "0.0.0-canary-20251217060433",
37
37
  "tsdown": "^0.17.4",
38
38
  "typescript": "^5.9.3"
39
39
  },
40
40
  "exports": {
41
- ".": "./src/index.ts",
42
- "./factory": "./src/factory.ts",
43
- "./legacy": "./src/legacy.ts",
44
- "./models": "./src/models.ts",
45
- "./types": "./src/types.ts",
46
- "./validation": "./src/validation.ts",
41
+ ".": "./dist/index.js",
42
+ "./factory": "./dist/factory.js",
43
+ "./legacy": "./dist/legacy.js",
44
+ "./models": "./dist/models.js",
45
+ "./types": "./dist/types.js",
46
+ "./validation": "./dist/validation.js",
47
47
  "./*": "./*"
48
48
  },
49
49
  "publishConfig": {