From a433766a31fbf5c0597aec757de59a3d882c02fa Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Thu, 14 Aug 2025 16:24:46 -0400 Subject: allow plugins to create custom auth providers --- packages/plugin/src/index.ts | 55 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) (limited to 'packages/plugin/src') diff --git a/packages/plugin/src/index.ts b/packages/plugin/src/index.ts index 7ea82d2aa..1a6cbf124 100644 --- a/packages/plugin/src/index.ts +++ b/packages/plugin/src/index.ts @@ -1,4 +1,14 @@ -import type { Event, createOpencodeClient, App, Model, Provider, Permission, UserMessage, Part } from "@opencode-ai/sdk" +import type { + Event, + createOpencodeClient, + App, + Model, + Provider, + Permission, + UserMessage, + Part, + Auth, +} from "@opencode-ai/sdk" import type { BunShell } from "./shell" export type PluginInput = { @@ -10,6 +20,49 @@ export type Plugin = (input: PluginInput) => Promise export interface Hooks { event?: (input: { event: Event }) => Promise + auth?: { + provider: string + loader?: (auth: () => Promise, provider: Provider) => Promise> + methods: ( + | { + type: "oauth" + label: string + authorize(): Promise< + { url: string; instructions: string } & ( + | { + method: "auto" + callback(): Promise< + | { + type: "success" + refresh: string + access: string + expires: number + } + | { + type: "failed" + } + > + } + | { + method: "code" + callback(code: string): Promise< + | { + type: "success" + refresh: string + access: string + expires: number + } + | { + type: "failed" + } + > + } + ) + > + } + | { type: "api"; label: string } + )[] + } /** * Called when a new message is received */ -- cgit v1.2.3