summaryrefslogtreecommitdiffhomepage
path: root/packages/plugin/src
diff options
context:
space:
mode:
Diffstat (limited to 'packages/plugin/src')
-rw-r--r--packages/plugin/src/index.ts55
1 files changed, 54 insertions, 1 deletions
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<Hooks>
export interface Hooks {
event?: (input: { event: Event }) => Promise<void>
+ auth?: {
+ provider: string
+ loader?: (auth: () => Promise<Auth>, provider: Provider) => Promise<Record<string, any>>
+ 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
*/