mirror of
https://github.com/anomalyco/opencode.git
synced 2026-05-25 23:15:18 +00:00
27 lines
955 B
TypeScript
27 lines
955 B
TypeScript
import { Effect } from "effect"
|
|
import { AuthV2 } from "../auth"
|
|
import { PluginV2 } from "../plugin"
|
|
|
|
export const AuthPlugin = PluginV2.define({
|
|
id: PluginV2.ID.make("auth"),
|
|
effect: Effect.gen(function* () {
|
|
const auth = yield* AuthV2.Service
|
|
return {
|
|
"provider.update": Effect.fn(function* (evt) {
|
|
const account = yield* auth.active(AuthV2.ServiceID.make(evt.provider.id)).pipe(Effect.orDie)
|
|
if (!account) return
|
|
evt.provider.enabled = {
|
|
via: "auth",
|
|
service: account.serviceID,
|
|
}
|
|
if (account.credential.type === "api") {
|
|
evt.provider.options.aisdk.provider.apiKey = account.credential.key
|
|
Object.assign(evt.provider.options.aisdk.provider, account.credential.metadata ?? {})
|
|
}
|
|
if (account.credential.type === "oauth") {
|
|
evt.provider.options.aisdk.provider.apiKey = account.credential.access
|
|
}
|
|
}),
|
|
}
|
|
}),
|
|
})
|