|
|
@@ -1,4 +1,5 @@
|
|
|
import z from "zod"
|
|
|
+import os from "os"
|
|
|
import fuzzysort from "fuzzysort"
|
|
|
import { Config } from "../config/config"
|
|
|
import { mapValues, mergeDeep, omit, pickBy, sortBy } from "remeda"
|
|
|
@@ -35,8 +36,9 @@ import { createGateway } from "@ai-sdk/gateway"
|
|
|
import { createTogetherAI } from "@ai-sdk/togetherai"
|
|
|
import { createPerplexity } from "@ai-sdk/perplexity"
|
|
|
import { createVercel } from "@ai-sdk/vercel"
|
|
|
-import { createGitLab } from "@gitlab/gitlab-ai-provider"
|
|
|
+import { createGitLab, VERSION as GITLAB_PROVIDER_VERSION } from "@gitlab/gitlab-ai-provider"
|
|
|
import { ProviderTransform } from "./transform"
|
|
|
+import { Installation } from "../installation"
|
|
|
|
|
|
export namespace Provider {
|
|
|
const log = Log.create({ service: "provider" })
|
|
|
@@ -424,11 +426,17 @@ export namespace Provider {
|
|
|
const config = await Config.get()
|
|
|
const providerConfig = config.provider?.["gitlab"]
|
|
|
|
|
|
+ const aiGatewayHeaders = {
|
|
|
+ "User-Agent": `opencode/${Installation.VERSION} gitlab-ai-provider/${GITLAB_PROVIDER_VERSION} (${os.platform()} ${os.release()}; ${os.arch()})`,
|
|
|
+ ...(providerConfig?.options?.aiGatewayHeaders || {}),
|
|
|
+ }
|
|
|
+
|
|
|
return {
|
|
|
autoload: !!apiKey,
|
|
|
options: {
|
|
|
instanceUrl,
|
|
|
apiKey,
|
|
|
+ aiGatewayHeaders,
|
|
|
featureFlags: {
|
|
|
duo_agent_platform_agentic_chat: true,
|
|
|
duo_agent_platform: true,
|
|
|
@@ -437,6 +445,7 @@ export namespace Provider {
|
|
|
},
|
|
|
async getModel(sdk: ReturnType<typeof createGitLab>, modelID: string) {
|
|
|
return sdk.agenticChat(modelID, {
|
|
|
+ aiGatewayHeaders,
|
|
|
featureFlags: {
|
|
|
duo_agent_platform_agentic_chat: true,
|
|
|
duo_agent_platform: true,
|