feat: unwrap provider namespaces to flat exports + barrel (#22760)
This commit is contained in:
@@ -6,7 +6,7 @@ import { generateObject, streamObject, type ModelMessage } from "ai"
|
|||||||
import { Instance } from "../project/instance"
|
import { Instance } from "../project/instance"
|
||||||
import { Truncate } from "../tool"
|
import { Truncate } from "../tool"
|
||||||
import { Auth } from "../auth"
|
import { Auth } from "../auth"
|
||||||
import { ProviderTransform } from "../provider/transform"
|
import { ProviderTransform } from "../provider"
|
||||||
|
|
||||||
import PROMPT_GENERATE from "./generate.txt"
|
import PROMPT_GENERATE from "./generate.txt"
|
||||||
import PROMPT_COMPACTION from "./prompt/compaction.txt"
|
import PROMPT_COMPACTION from "./prompt/compaction.txt"
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ import type {
|
|||||||
} from "@octokit/webhooks-types"
|
} from "@octokit/webhooks-types"
|
||||||
import { UI } from "../ui"
|
import { UI } from "../ui"
|
||||||
import { cmd } from "./cmd"
|
import { cmd } from "./cmd"
|
||||||
import { ModelsDev } from "../../provider/models"
|
import { ModelsDev } from "../../provider"
|
||||||
import { Instance } from "@/project/instance"
|
import { Instance } from "@/project/instance"
|
||||||
import { bootstrap } from "../bootstrap"
|
import { bootstrap } from "../bootstrap"
|
||||||
import { SessionShare } from "@/share"
|
import { SessionShare } from "@/share"
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import type { Argv } from "yargs"
|
|||||||
import { Instance } from "../../project/instance"
|
import { Instance } from "../../project/instance"
|
||||||
import { Provider } from "../../provider"
|
import { Provider } from "../../provider"
|
||||||
import { ProviderID } from "../../provider/schema"
|
import { ProviderID } from "../../provider/schema"
|
||||||
import { ModelsDev } from "../../provider/models"
|
import { ModelsDev } from "../../provider"
|
||||||
import { cmd } from "./cmd"
|
import { cmd } from "./cmd"
|
||||||
import { UI } from "../ui"
|
import { UI } from "../ui"
|
||||||
import { EOL } from "os"
|
import { EOL } from "os"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { AppRuntime } from "../../effect/app-runtime"
|
|||||||
import { cmd } from "./cmd"
|
import { cmd } from "./cmd"
|
||||||
import * as prompts from "@clack/prompts"
|
import * as prompts from "@clack/prompts"
|
||||||
import { UI } from "../ui"
|
import { UI } from "../ui"
|
||||||
import { ModelsDev } from "../../provider/models"
|
import { ModelsDev } from "../../provider"
|
||||||
import { map, pipe, sortBy, values } from "remeda"
|
import { map, pipe, sortBy, values } from "remeda"
|
||||||
import path from "path"
|
import path from "path"
|
||||||
import os from "os"
|
import os from "os"
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import { Storage } from "@/storage"
|
|||||||
import { Snapshot } from "@/snapshot"
|
import { Snapshot } from "@/snapshot"
|
||||||
import { Plugin } from "@/plugin"
|
import { Plugin } from "@/plugin"
|
||||||
import { Provider } from "@/provider"
|
import { Provider } from "@/provider"
|
||||||
import { ProviderAuth } from "@/provider/auth"
|
import { ProviderAuth } from "@/provider"
|
||||||
import { Agent } from "@/agent/agent"
|
import { Agent } from "@/agent/agent"
|
||||||
import { Skill } from "@/skill"
|
import { Skill } from "@/skill"
|
||||||
import { Discovery } from "@/skill/discovery"
|
import { Discovery } from "@/skill/discovery"
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ import { ProviderID } from "./schema"
|
|||||||
import { Array as Arr, Effect, Layer, Record, Result, Context, Schema } from "effect"
|
import { Array as Arr, Effect, Layer, Record, Result, Context, Schema } from "effect"
|
||||||
import z from "zod"
|
import z from "zod"
|
||||||
|
|
||||||
export namespace ProviderAuth {
|
|
||||||
const When = Schema.Struct({
|
const When = Schema.Struct({
|
||||||
key: Schema.String,
|
key: Schema.String,
|
||||||
op: Schema.Literals(["eq", "neq"]),
|
op: Schema.Literals(["eq", "neq"]),
|
||||||
@@ -224,4 +223,3 @@ export namespace ProviderAuth {
|
|||||||
export const defaultLayer = Layer.suspend(() =>
|
export const defaultLayer = Layer.suspend(() =>
|
||||||
layer.pipe(Layer.provide(Auth.defaultLayer), Layer.provide(Plugin.defaultLayer)),
|
layer.pipe(Layer.provide(Auth.defaultLayer), Layer.provide(Plugin.defaultLayer)),
|
||||||
)
|
)
|
||||||
}
|
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ import { STATUS_CODES } from "http"
|
|||||||
import { iife } from "@/util/iife"
|
import { iife } from "@/util/iife"
|
||||||
import type { ProviderID } from "./schema"
|
import type { ProviderID } from "./schema"
|
||||||
|
|
||||||
export namespace ProviderError {
|
|
||||||
// Adapted from overflow detection patterns in:
|
// Adapted from overflow detection patterns in:
|
||||||
// https://github.com/badlogic/pi-mono/blob/main/packages/ai/src/utils/overflow.ts
|
// https://github.com/badlogic/pi-mono/blob/main/packages/ai/src/utils/overflow.ts
|
||||||
const OVERFLOW_PATTERNS = [
|
const OVERFLOW_PATTERNS = [
|
||||||
@@ -194,4 +193,3 @@ export namespace ProviderError {
|
|||||||
metadata,
|
metadata,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|||||||
@@ -1 +1,5 @@
|
|||||||
export * as Provider from "./provider"
|
export * as Provider from "./provider"
|
||||||
|
export * as ProviderAuth from "./auth"
|
||||||
|
export * as ProviderError from "./error"
|
||||||
|
export * as ModelsDev from "./models"
|
||||||
|
export * as ProviderTransform from "./transform"
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ import { Hash } from "@opencode-ai/shared/util/hash"
|
|||||||
// Falls back to undefined in dev mode when snapshot doesn't exist
|
// Falls back to undefined in dev mode when snapshot doesn't exist
|
||||||
/* @ts-ignore */
|
/* @ts-ignore */
|
||||||
|
|
||||||
export namespace ModelsDev {
|
|
||||||
const log = Log.create({ service: "models.dev" })
|
const log = Log.create({ service: "models.dev" })
|
||||||
const source = url()
|
const source = url()
|
||||||
const filepath = path.join(
|
const filepath = path.join(
|
||||||
@@ -156,26 +155,25 @@ export namespace ModelsDev {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export async function refresh(force = false) {
|
export async function refresh(force = false) {
|
||||||
if (skip(force)) return ModelsDev.Data.reset()
|
if (skip(force)) return Data.reset()
|
||||||
await Flock.withLock(`models-dev:${filepath}`, async () => {
|
await Flock.withLock(`models-dev:${filepath}`, async () => {
|
||||||
if (skip(force)) return ModelsDev.Data.reset()
|
if (skip(force)) return Data.reset()
|
||||||
const result = await fetchApi()
|
const result = await fetchApi()
|
||||||
if (!result.ok) return
|
if (!result.ok) return
|
||||||
await Filesystem.write(filepath, result.text)
|
await Filesystem.write(filepath, result.text)
|
||||||
ModelsDev.Data.reset()
|
Data.reset()
|
||||||
}).catch((e) => {
|
}).catch((e) => {
|
||||||
log.error("Failed to fetch models.dev", {
|
log.error("Failed to fetch models.dev", {
|
||||||
error: e,
|
error: e,
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (!Flag.OPENCODE_DISABLE_MODELS_FETCH && !process.argv.includes("--get-yargs-completions")) {
|
if (!Flag.OPENCODE_DISABLE_MODELS_FETCH && !process.argv.includes("--get-yargs-completions")) {
|
||||||
void ModelsDev.refresh()
|
void refresh()
|
||||||
setInterval(
|
setInterval(
|
||||||
async () => {
|
async () => {
|
||||||
await ModelsDev.refresh()
|
await refresh()
|
||||||
},
|
},
|
||||||
60 * 1000 * 60,
|
60 * 1000 * 60,
|
||||||
).unref()
|
).unref()
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import { Hash } from "@opencode-ai/shared/util/hash"
|
|||||||
import { Plugin } from "../plugin"
|
import { Plugin } from "../plugin"
|
||||||
import { NamedError } from "@opencode-ai/shared/util/error"
|
import { NamedError } from "@opencode-ai/shared/util/error"
|
||||||
import { type LanguageModelV3 } from "@ai-sdk/provider"
|
import { type LanguageModelV3 } from "@ai-sdk/provider"
|
||||||
import { ModelsDev } from "./models"
|
import * as ModelsDev from "./models"
|
||||||
import { Auth } from "../auth"
|
import { Auth } from "../auth"
|
||||||
import { Env } from "../env"
|
import { Env } from "../env"
|
||||||
import { Instance } from "../project/instance"
|
import { Instance } from "../project/instance"
|
||||||
@@ -55,7 +55,7 @@ import {
|
|||||||
} from "gitlab-ai-provider"
|
} from "gitlab-ai-provider"
|
||||||
import { fromNodeProviderChain } from "@aws-sdk/credential-providers"
|
import { fromNodeProviderChain } from "@aws-sdk/credential-providers"
|
||||||
import { GoogleAuth } from "google-auth-library"
|
import { GoogleAuth } from "google-auth-library"
|
||||||
import { ProviderTransform } from "./transform"
|
import * as ProviderTransform from "./transform"
|
||||||
import { Installation } from "../installation"
|
import { Installation } from "../installation"
|
||||||
import { ModelID, ProviderID } from "./schema"
|
import { ModelID, ProviderID } from "./schema"
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { mergeDeep, unique } from "remeda"
|
|||||||
import type { JSONSchema7 } from "@ai-sdk/provider"
|
import type { JSONSchema7 } from "@ai-sdk/provider"
|
||||||
import type { JSONSchema } from "zod/v4/core"
|
import type { JSONSchema } from "zod/v4/core"
|
||||||
import type * as Provider from "./provider"
|
import type * as Provider from "./provider"
|
||||||
import type { ModelsDev } from "./models"
|
import type * as ModelsDev from "./models"
|
||||||
import { iife } from "@/util/iife"
|
import { iife } from "@/util/iife"
|
||||||
import { Flag } from "@/flag/flag"
|
import { Flag } from "@/flag/flag"
|
||||||
|
|
||||||
@@ -17,7 +17,6 @@ function mimeToModality(mime: string): Modality | undefined {
|
|||||||
return undefined
|
return undefined
|
||||||
}
|
}
|
||||||
|
|
||||||
export namespace ProviderTransform {
|
|
||||||
export const OUTPUT_TOKEN_MAX = Flag.OPENCODE_EXPERIMENTAL_OUTPUT_TOKEN_MAX || 32_000
|
export const OUTPUT_TOKEN_MAX = Flag.OPENCODE_EXPERIMENTAL_OUTPUT_TOKEN_MAX || 32_000
|
||||||
|
|
||||||
// Maps npm package to the key the AI SDK expects for providerOptions
|
// Maps npm package to the key the AI SDK expects for providerOptions
|
||||||
@@ -1089,4 +1088,3 @@ export namespace ProviderTransform {
|
|||||||
|
|
||||||
return schema as JSONSchema7
|
return schema as JSONSchema7
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { ProviderAuth } from "@/provider/auth"
|
import { ProviderAuth } from "@/provider"
|
||||||
import { Effect, Layer } from "effect"
|
import { Effect, Layer } from "effect"
|
||||||
import { HttpApi, HttpApiBuilder, HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi"
|
import { HttpApi, HttpApiBuilder, HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi"
|
||||||
|
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ import { describeRoute, validator, resolver } from "hono-openapi"
|
|||||||
import z from "zod"
|
import z from "zod"
|
||||||
import { Config } from "../../config"
|
import { Config } from "../../config"
|
||||||
import { Provider } from "../../provider"
|
import { Provider } from "../../provider"
|
||||||
import { ModelsDev } from "../../provider/models"
|
import { ModelsDev } from "../../provider"
|
||||||
import { ProviderAuth } from "../../provider/auth"
|
import { ProviderAuth } from "../../provider"
|
||||||
import { ProviderID } from "../../provider/schema"
|
import { ProviderID } from "../../provider/schema"
|
||||||
import { AppRuntime } from "../../effect/app-runtime"
|
import { AppRuntime } from "../../effect/app-runtime"
|
||||||
import { mapValues } from "remeda"
|
import { mapValues } from "remeda"
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import * as Stream from "effect/Stream"
|
|||||||
import { streamText, wrapLanguageModel, type ModelMessage, type Tool, tool, jsonSchema } from "ai"
|
import { streamText, wrapLanguageModel, type ModelMessage, type Tool, tool, jsonSchema } from "ai"
|
||||||
import { mergeDeep, pipe } from "remeda"
|
import { mergeDeep, pipe } from "remeda"
|
||||||
import { GitLabWorkflowLanguageModel } from "gitlab-ai-provider"
|
import { GitLabWorkflowLanguageModel } from "gitlab-ai-provider"
|
||||||
import { ProviderTransform } from "@/provider/transform"
|
import { ProviderTransform } from "@/provider"
|
||||||
import { Config } from "@/config"
|
import { Config } from "@/config"
|
||||||
import { Instance } from "@/project/instance"
|
import { Instance } from "@/project/instance"
|
||||||
import type { Agent } from "@/agent/agent"
|
import type { Agent } from "@/agent/agent"
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import { Snapshot } from "@/snapshot"
|
|||||||
import { SyncEvent } from "../sync"
|
import { SyncEvent } from "../sync"
|
||||||
import { Database, NotFoundError, and, desc, eq, inArray, lt, or } from "@/storage"
|
import { Database, NotFoundError, and, desc, eq, inArray, lt, or } from "@/storage"
|
||||||
import { MessageTable, PartTable, SessionTable } from "./session.sql"
|
import { MessageTable, PartTable, SessionTable } from "./session.sql"
|
||||||
import { ProviderError } from "@/provider/error"
|
import { ProviderError } from "@/provider"
|
||||||
import { iife } from "@/util/iife"
|
import { iife } from "@/util/iife"
|
||||||
import { errorMessage } from "@/util/error"
|
import { errorMessage } from "@/util/error"
|
||||||
import type { SystemError } from "bun"
|
import type { SystemError } from "bun"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import type { Config } from "@/config"
|
import type { Config } from "@/config"
|
||||||
import type { Provider } from "@/provider"
|
import type { Provider } from "@/provider"
|
||||||
import { ProviderTransform } from "@/provider/transform"
|
import { ProviderTransform } from "@/provider"
|
||||||
import type { MessageV2 } from "./message-v2"
|
import type { MessageV2 } from "./message-v2"
|
||||||
|
|
||||||
const COMPACTION_BUFFER = 20_000
|
const COMPACTION_BUFFER = 20_000
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import { ModelID, ProviderID } from "../provider/schema"
|
|||||||
import { type Tool as AITool, tool, jsonSchema, type ToolExecutionOptions, asSchema } from "ai"
|
import { type Tool as AITool, tool, jsonSchema, type ToolExecutionOptions, asSchema } from "ai"
|
||||||
import { SessionCompaction } from "./compaction"
|
import { SessionCompaction } from "./compaction"
|
||||||
import { Bus } from "../bus"
|
import { Bus } from "../bus"
|
||||||
import { ProviderTransform } from "../provider/transform"
|
import { ProviderTransform } from "../provider"
|
||||||
import { SystemPrompt } from "./system"
|
import { SystemPrompt } from "./system"
|
||||||
import { Instruction } from "./instruction"
|
import { Instruction } from "./instruction"
|
||||||
import { Plugin } from "../plugin"
|
import { Plugin } from "../plugin"
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import fs from "fs/promises"
|
|||||||
import { Effect } from "effect"
|
import { Effect } from "effect"
|
||||||
import { tmpdir } from "../fixture/fixture"
|
import { tmpdir } from "../fixture/fixture"
|
||||||
import { Instance } from "../../src/project/instance"
|
import { Instance } from "../../src/project/instance"
|
||||||
import { ProviderAuth } from "../../src/provider/auth"
|
import { ProviderAuth } from "../../src/provider"
|
||||||
import { ProviderID } from "../../src/provider/schema"
|
import { ProviderID } from "../../src/provider/schema"
|
||||||
|
|
||||||
describe("plugin.auth-override", () => {
|
describe("plugin.auth-override", () => {
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import { tmpdir } from "../fixture/fixture"
|
|||||||
import { Global } from "../../src/global"
|
import { Global } from "../../src/global"
|
||||||
import { Instance } from "../../src/project/instance"
|
import { Instance } from "../../src/project/instance"
|
||||||
import { Plugin } from "../../src/plugin/index"
|
import { Plugin } from "../../src/plugin/index"
|
||||||
import { ModelsDev } from "../../src/provider/models"
|
import { ModelsDev } from "../../src/provider"
|
||||||
import { Provider } from "../../src/provider"
|
import { Provider } from "../../src/provider"
|
||||||
import { ProviderID, ModelID } from "../../src/provider/schema"
|
import { ProviderID, ModelID } from "../../src/provider/schema"
|
||||||
import { Filesystem } from "../../src/util"
|
import { Filesystem } from "../../src/util"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { describe, expect, test } from "bun:test"
|
import { describe, expect, test } from "bun:test"
|
||||||
import { ProviderTransform } from "../../src/provider/transform"
|
import { ProviderTransform } from "../../src/provider"
|
||||||
import { ModelID, ProviderID } from "../../src/provider/schema"
|
import { ModelID, ProviderID } from "../../src/provider/schema"
|
||||||
|
|
||||||
describe("ProviderTransform.options - setCacheKey", () => {
|
describe("ProviderTransform.options - setCacheKey", () => {
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ import { makeRuntime } from "../../src/effect/run-service"
|
|||||||
import { LLM } from "../../src/session/llm"
|
import { LLM } from "../../src/session/llm"
|
||||||
import { Instance } from "../../src/project/instance"
|
import { Instance } from "../../src/project/instance"
|
||||||
import { Provider } from "../../src/provider"
|
import { Provider } from "../../src/provider"
|
||||||
import { ProviderTransform } from "../../src/provider/transform"
|
import { ProviderTransform } from "../../src/provider"
|
||||||
import { ModelsDev } from "../../src/provider/models"
|
import { ModelsDev } from "../../src/provider"
|
||||||
import { ProviderID, ModelID } from "../../src/provider/schema"
|
import { ProviderID, ModelID } from "../../src/provider/schema"
|
||||||
import { Filesystem } from "../../src/util"
|
import { Filesystem } from "../../src/util"
|
||||||
import { tmpdir } from "../fixture/fixture"
|
import { tmpdir } from "../fixture/fixture"
|
||||||
|
|||||||
Reference in New Issue
Block a user