Something went wrong. Try again.
opencode v2 mirror
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263import type { OpenCodeClient } from "@opencode-ai/client"import type { GenerateApi, PluginApi } from "@opencode-ai/client/promise/api"import type { Location } from "@opencode-ai/schema/location"import type { PluginOptions } from "../options.js"import type { VcsDiscovery } from "../vcs.js"import type { App } from "../app.js"import type { AgentDomain } from "./agent.js"import type { AISDKDomain } from "./aisdk.js"import type { CatalogDomain } from "./catalog.js"import type { CommandDomain } from "./command.js"import type { EventDomain } from "./event.js"import type { IntegrationDomain } from "./integration.js"import type { MCPDomain } from "./mcp.js"import type { PermissionDomain } from "./permission.js"import type { ReferenceDomain } from "./reference.js"import type { SessionDomain } from "./session.js"import type { ShellDomain } from "./shell.js"import type { SkillDomain } from "./skill.js"import type { StorageDomain } from "./storage.js"import type { ToolDomain } from "./tool.js"import type { VcsDomain } from "./vcs.js"import type { WebSearchDomain } from "./websearch.js"
export interface Context { readonly app: App readonly location: Location.Info readonly options: PluginOptions readonly agent: AgentDomain readonly aisdk: AISDKDomain readonly catalog: CatalogDomain readonly command: CommandDomain readonly event: EventDomain readonly experimental: { readonly terminal: Pick<OpenCodeClient["experimental"]["persistentPty"], "read"> } readonly integration: IntegrationDomain readonly mcp: MCPDomain readonly generate: GenerateApi readonly permission: PermissionDomain readonly plugin: PluginApi readonly reference: ReferenceDomain readonly session: SessionDomain readonly shell: ShellDomain readonly skill: SkillDomain readonly storage: StorageDomain readonly tool: ToolDomain readonly vcs: VcsDomain readonly websearch: WebSearchDomain}
export type Cleanup = () => Promise<void> | void
export interface Plugin { readonly id: string readonly tui?: boolean readonly vcs?: VcsDiscovery readonly setup: (context: Context) => Promise<Cleanup | void> | Cleanup | void}
export function define(plugin: Plugin) { return plugin}