orchid-ai 1.2.4 → 1.2.7

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/index.esm.js CHANGED
@@ -2049,6 +2049,7 @@ customModels, serverConfig, } = {}) {
2049
2049
  const effectiveInitialModel = initialModel || '';
2050
2050
  // State for auto-fetched models
2051
2051
  const [fetchedModels, setFetchedModels] = useState(null);
2052
+ const [modelsByTier, setModelsByTier] = useState(null);
2052
2053
  const [isLoadingModels, setIsLoadingModels] = useState(false);
2053
2054
  const [modelsError, setModelsError] = useState(null);
2054
2055
  // Track if user explicitly switched models; prevents defaultModel overrides after first user action
@@ -2132,6 +2133,10 @@ customModels, serverConfig, } = {}) {
2132
2133
  });
2133
2134
  });
2134
2135
  setFetchedModels(modelsByProvider);
2136
+ // Store modelsByTier if provided (used for tier-based selection)
2137
+ if (data.modelsByTier) {
2138
+ setModelsByTier(data.modelsByTier);
2139
+ }
2135
2140
  }
2136
2141
  else {
2137
2142
  throw new Error('Invalid response format from models endpoint');
@@ -2150,17 +2155,28 @@ customModels, serverConfig, } = {}) {
2150
2155
  fetchModels();
2151
2156
  }, [customModels, serverConfig, fetchedModels, isLoadingModels]);
2152
2157
  // Update initial model if we fetched models and need to auto-select from tier
2153
- // BUT: If initialTier is specified, we should NOT auto-select here - let server handle tier selection
2158
+ // If tier is specified, resolve it using modelsByTier from server
2154
2159
  useEffect(() => {
2155
2160
  // Only auto-select if:
2156
2161
  // 1. We have fetched models
2157
2162
  // 2. We're using the default initial model (or no model specified)
2158
- // 3. NO tier is specified (tier-based selection should happen server-side)
2159
- // 4. Current model still has the initial model
2163
+ // 3. Current model still has the initial model
2160
2164
  if (fetchedModels && Object.keys(fetchedModels).length > 0) {
2161
- // If tier is specified, don't auto-select - server will handle tier selection
2162
- // This prevents the hook from selecting a model when tier-based selection is desired
2163
- if (initialTier) {
2165
+ // If tier is specified, resolve it using modelsByTier so UI can show selected model
2166
+ if (initialTier && modelsByTier) {
2167
+ const provider = initialProvider.toLowerCase();
2168
+ const tierModels = modelsByTier[provider];
2169
+ if (tierModels && tierModels[initialTier] && currentModel.model === '') {
2170
+ // Resolve tier to specific model ID from server's modelsByTier
2171
+ setCurrentModel({
2172
+ provider: initialProvider,
2173
+ model: tierModels[initialTier],
2174
+ });
2175
+ return;
2176
+ }
2177
+ }
2178
+ // If tier is specified but no modelsByTier, don't auto-select - server will handle tier selection
2179
+ if (initialTier && !modelsByTier) {
2164
2180
  return;
2165
2181
  }
2166
2182
  // Auto-select only if:
@@ -2207,7 +2223,7 @@ customModels, serverConfig, } = {}) {
2207
2223
  }
2208
2224
  }
2209
2225
  }
2210
- }, [fetchedModels, initialProvider, initialTier, effectiveInitialModel, currentModel.model]);
2226
+ }, [fetchedModels, modelsByTier, initialProvider, initialTier, effectiveInitialModel, currentModel.model]);
2211
2227
  // Switch model function - just updates local state
2212
2228
  const switchModel = useCallback((model, provider) => {
2213
2229
  const newProvider = provider || currentModel.provider;
package/dist/index.js CHANGED
@@ -2051,6 +2051,7 @@ customModels, serverConfig, } = {}) {
2051
2051
  const effectiveInitialModel = initialModel || '';
2052
2052
  // State for auto-fetched models
2053
2053
  const [fetchedModels, setFetchedModels] = React.useState(null);
2054
+ const [modelsByTier, setModelsByTier] = React.useState(null);
2054
2055
  const [isLoadingModels, setIsLoadingModels] = React.useState(false);
2055
2056
  const [modelsError, setModelsError] = React.useState(null);
2056
2057
  // Track if user explicitly switched models; prevents defaultModel overrides after first user action
@@ -2134,6 +2135,10 @@ customModels, serverConfig, } = {}) {
2134
2135
  });
2135
2136
  });
2136
2137
  setFetchedModels(modelsByProvider);
2138
+ // Store modelsByTier if provided (used for tier-based selection)
2139
+ if (data.modelsByTier) {
2140
+ setModelsByTier(data.modelsByTier);
2141
+ }
2137
2142
  }
2138
2143
  else {
2139
2144
  throw new Error('Invalid response format from models endpoint');
@@ -2152,17 +2157,28 @@ customModels, serverConfig, } = {}) {
2152
2157
  fetchModels();
2153
2158
  }, [customModels, serverConfig, fetchedModels, isLoadingModels]);
2154
2159
  // Update initial model if we fetched models and need to auto-select from tier
2155
- // BUT: If initialTier is specified, we should NOT auto-select here - let server handle tier selection
2160
+ // If tier is specified, resolve it using modelsByTier from server
2156
2161
  React.useEffect(() => {
2157
2162
  // Only auto-select if:
2158
2163
  // 1. We have fetched models
2159
2164
  // 2. We're using the default initial model (or no model specified)
2160
- // 3. NO tier is specified (tier-based selection should happen server-side)
2161
- // 4. Current model still has the initial model
2165
+ // 3. Current model still has the initial model
2162
2166
  if (fetchedModels && Object.keys(fetchedModels).length > 0) {
2163
- // If tier is specified, don't auto-select - server will handle tier selection
2164
- // This prevents the hook from selecting a model when tier-based selection is desired
2165
- if (initialTier) {
2167
+ // If tier is specified, resolve it using modelsByTier so UI can show selected model
2168
+ if (initialTier && modelsByTier) {
2169
+ const provider = initialProvider.toLowerCase();
2170
+ const tierModels = modelsByTier[provider];
2171
+ if (tierModels && tierModels[initialTier] && currentModel.model === '') {
2172
+ // Resolve tier to specific model ID from server's modelsByTier
2173
+ setCurrentModel({
2174
+ provider: initialProvider,
2175
+ model: tierModels[initialTier],
2176
+ });
2177
+ return;
2178
+ }
2179
+ }
2180
+ // If tier is specified but no modelsByTier, don't auto-select - server will handle tier selection
2181
+ if (initialTier && !modelsByTier) {
2166
2182
  return;
2167
2183
  }
2168
2184
  // Auto-select only if:
@@ -2209,7 +2225,7 @@ customModels, serverConfig, } = {}) {
2209
2225
  }
2210
2226
  }
2211
2227
  }
2212
- }, [fetchedModels, initialProvider, initialTier, effectiveInitialModel, currentModel.model]);
2228
+ }, [fetchedModels, modelsByTier, initialProvider, initialTier, effectiveInitialModel, currentModel.model]);
2213
2229
  // Switch model function - just updates local state
2214
2230
  const switchModel = React.useCallback((model, provider) => {
2215
2231
  const newProvider = provider || currentModel.provider;
@@ -14252,8 +14252,8 @@ ${additionalContext}
14252
14252
  catch {
14253
14253
  // Fallback defaults with image support
14254
14254
  providerModels = [
14255
- { id: 'claude-3-5-haiku-20241022', name: 'Claude 3.5 Haiku', provider: providerName, available: true, computeWeight: 0.2, supportsImages: true },
14256
- { id: 'claude-3-5-sonnet-20241022', name: 'Claude 3.5 Sonnet', provider: providerName, available: true, computeWeight: 0.6, supportsImages: true },
14255
+ { id: 'claude-4-5-haiku-20251001', name: 'Claude 4.5 Haiku', provider: providerName, available: true, computeWeight: 0.2, supportsImages: true },
14256
+ { id: 'claude-4-5-sonnet-20250929', name: 'Claude 4.5 Sonnet', provider: providerName, available: true, computeWeight: 0.6, supportsImages: true },
14257
14257
  ];
14258
14258
  }
14259
14259
  break;
@@ -14272,8 +14272,8 @@ ${additionalContext}
14272
14272
  catch {
14273
14273
  // Fallback defaults with image support
14274
14274
  providerModels = [
14275
- { id: 'claude-3-5-haiku-20241022', name: 'Claude 3.5 Haiku', provider: providerName, available: true, computeWeight: 0.2, supportsImages: true },
14276
- { id: 'claude-3-5-sonnet-20241022', name: 'Claude 3.5 Sonnet', provider: providerName, available: true, computeWeight: 0.6, supportsImages: true },
14275
+ { id: 'claude-4-5-haiku-20251001', name: 'Claude 4.5 Haiku', provider: providerName, available: true, computeWeight: 0.2, supportsImages: true },
14276
+ { id: 'claude-4-5-sonnet-20250929', name: 'Claude 4.5 Sonnet', provider: providerName, available: true, computeWeight: 0.6, supportsImages: true },
14277
14277
  ];
14278
14278
  }
14279
14279
  break;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "orchid-ai",
3
- "version": "1.2.4",
3
+ "version": "1.2.7",
4
4
  "type": "module",
5
5
  "description": "AI-powered command processing and chat interface for React applications",
6
6
  "main": "dist/index.js",