Răsfoiți Sursa

feat: enhance provider model mapping and reasoning capabilities

- Add npm package tracking to provider model mapping
- Implement special handling for opencode provider with reasoning
- Update provider options mapping to use npm package names
Dax Raad 5 luni în urmă
părinte
comite
2d5bd26a59

+ 3 - 1
packages/opencode/src/provider/provider.ts

@@ -159,7 +159,7 @@ export namespace Provider {
     } = {}
     } = {}
     const models = new Map<
     const models = new Map<
       string,
       string,
-      { providerID: string; modelID: string; info: ModelsDev.Model; language: LanguageModel }
+      { providerID: string; modelID: string; info: ModelsDev.Model; language: LanguageModel; npm?: string }
     >()
     >()
     const sdk = new Map<number, SDK>()
     const sdk = new Map<number, SDK>()
 
 
@@ -378,12 +378,14 @@ export namespace Provider {
         modelID,
         modelID,
         info,
         info,
         language,
         language,
+        npm: info.provider?.npm ?? provider.info.npm,
       })
       })
       return {
       return {
         modelID,
         modelID,
         providerID,
         providerID,
         info,
         info,
         language,
         language,
+        npm: info.provider?.npm ?? provider.info.npm,
       }
       }
     } catch (e) {
     } catch (e) {
       if (e instanceof NoSuchModelError)
       if (e instanceof NoSuchModelError)

+ 5 - 0
packages/opencode/src/provider/transform.ts

@@ -96,6 +96,11 @@ export namespace ProviderTransform {
       if (providerID !== "azure") {
       if (providerID !== "azure") {
         result["textVerbosity"] = "low"
         result["textVerbosity"] = "low"
       }
       }
+      if (providerID === "opencode") {
+        result["promptCacheKey"] = sessionID
+        result["include"] = ["reasoning.encrypted_content"]
+        result["reasoningSummary"] = "detailed"
+      }
     }
     }
     return result
     return result
   }
   }

+ 1 - 1
packages/opencode/src/session/prompt.ts

@@ -268,7 +268,7 @@ export namespace SessionPrompt {
         maxOutputTokens: ProviderTransform.maxOutputTokens(model.providerID, outputLimit, params.options),
         maxOutputTokens: ProviderTransform.maxOutputTokens(model.providerID, outputLimit, params.options),
         abortSignal: abort.signal,
         abortSignal: abort.signal,
         providerOptions: {
         providerOptions: {
-          [model.providerID]: params.options,
+          [model.npm === "@ai-sdk/openai" ? "openai" : model.providerID]: params.options,
         },
         },
         stopWhen: stepCountIs(1),
         stopWhen: stepCountIs(1),
         temperature: params.temperature,
         temperature: params.temperature,