Shared utilities for opencode plugins.
npm install @four-bytes/opencode-plugin-libimport { createToast } from "@four-bytes/opencode-plugin-lib";
import type { PluginInput } from "@opencode-ai/plugin";
const _serverPlugin = async (input: PluginInput) => {
const toast = createToast(input.client, "My Plugin 🚀");
toast("Operation complete", "success");
};Creates a toast function bound to a plugin client. Silently swallows all errors — never breaks plugin operation on UI failure.
Returns: (message: string, variant?: "info" | "success" | "warning" | "error", title?: string) => void
Apache-2.0
If this plugin saves you tokens, consider leaving a ⭐ on GitHub.
Use session-scoped channels for per-session communication:
{plugin}/{sessionID}
Server side: Capture sessionID from hook callbacks (chat.message.input.sessionID, event.properties.sessionID).
TUI side: Receive sessionID from slot props (sidebar_content.props.session_id).
Wildcard: TUI can subscribe to {plugin}/+ for all sessions.