| 1234567891011121314151617181920212223242526272829303132 |
- import { Effect } from "effect"
- import { PluginV2 } from "../../plugin"
- import { ProviderV2 } from "../../provider"
- export const OpencodePlugin = PluginV2.define({
- id: PluginV2.ID.make("opencode"),
- effect: Effect.gen(function* () {
- let hasKey = false
- return {
- "catalog.transform": Effect.fn(function* (evt) {
- const item = evt.data.find((record) => record.provider.id === ProviderV2.ID.opencode)
- if (!item) return
- hasKey = Boolean(
- process.env.OPENCODE_API_KEY ||
- item.provider.env.some((env) => process.env[env]) ||
- item.provider.options.aisdk.provider.apiKey ||
- (item.provider.enabled && item.provider.enabled.via === "account"),
- )
- evt.provider.update(item.provider.id, (provider) => {
- if (!hasKey) provider.options.aisdk.provider.apiKey = "public"
- })
- if (hasKey) return
- for (const model of item.models.values()) {
- if (!model.cost.some((cost) => cost.input > 0)) continue
- evt.model.update(item.provider.id, model.id, (draft) => {
- draft.enabled = false
- })
- }
- }),
- }
- }),
- })
|