Dashboard › opencode › Distillation
23d4a17b-abbe-406e-a243-8f9c0d9f620a["lore_tm_v1_giUPniWZyeeZNR--P3kYIZESkIUUmf7dEG2NOBWnYHE"]
/home/byk/Code/opencode-v2-pilot/packages/plugin/src/promise/plugin.ts (63 lines), which imports OpenCodeClient from @opencode/client, GenerateApi and PluginApi from @opencode/client/promise/api, Location from @opencode/schema/location, PluginOptions from ../options.js, App from ../app.js, and Promise-domain types from ./agent.js, ./aisdk.js, ./catalog.js, ./command.js, ./event.js, ./integration.js, ./mcp.js, ./permission.js, ./reference.js, ./rpc.js, ./session.js, ./shell.js, ./skill.js, ./storage.js, ./tool.js, ./vcs.js, ./websearch.js, and ./worktree.js.Context interface in packages/plugin/src/promise/plugin.ts:25-52 exposes readonly fields app: App, location: Location.Info, options: PluginOptions, agent: AgentDomain, aisdk: AISDKDomain, catalog: CatalogDomain, command: CommandDomain, event: EventDomain, integration: IntegrationDomain, mcp: MCPDomain, generate: GenerateApi, permission: PermissionDomain, reference: ReferenceDomain, rpc: RpcDomain, session: SessionDomain, shell: ShellDomain, skill: SkillDomain, storage: StorageDomain, tool: ToolDomain, vcs: VcsDomain, websearch: WebSearchDomain, and worktree: WorktreeDomain.Context.experimental.terminal is typed as Pick<OpenCodeClient["experimental"]["persistentPty"], "read">, while Context.plugin is typed as Pick<PluginApi, "list"> (packages/plugin/src/promise/plugin.ts:34-41).packages/plugin/src/promise/plugin.ts:54 defines Cleanup exactly as () => Promise<void> | void.Plugin interface requires readonly id: string and setup: (context: Context) => Promise<Cleanup | void> | Cleanup | void (packages/plugin/src/promise/plugin.ts:56-59).define(plugin: Plugin) returns plugin unchanged in packages/plugin/src/promise/plugin.ts:61-63.