Vyline DOCS

Plugins & Themes

現在のruntimeで使える範囲だけを記載します。

Plugin SDK

import { definePlugin } from "@vyline/plugin-sdk";

export default definePlugin({
  id: "my-plugin",
  name: "My Plugin",
  version: "0.1.0",
  permissions: ["messages:read"],
  activate(ctx) {
    ctx.messages.on("message", (message) => {
      ctx.logger.info(`received: ${message.id}`);
    });
  },
  deactivate() {},
});

data/plugins/<pluginId>/manifest.jsonindex.ts または index.js を置き、設定画面またはAPIからアカウントごとに有効化します。BunがTypeScriptを直接読み込むため、plugin単体のbuildは必須ではありません。

現在runtimeで使える権限

権限公開される機能
messages:readctx.messages.on("message", ...)
settings:readctx.settings.get(...)
settings:writectx.settings.set(...)

SDKの型には将来用のpermission名もありますが、permission文字列が型にあることとruntime実装済みであることは同じではありません。送信・通知・media・storage・UI拡張は現行runtimeの公開機能として扱わないでください。

pluginの例外はactivate/handler単位で捕捉されます。有効状態と設定はアカウント別に保存されます。ただしpluginは同じホスト上で実行するローカルコードなので、信頼できないpluginを配置しないでください。

Themes

Themeは単なるaccent colorではありません。代表token:

id, name, accent, accentContrast,
bg, surface, surface2, sidebar,
text, textDim, border,
msgIn, msgOut, msgInText, msgOutText,
radius, chatBg, pattern

presetは Vyline/packages/themes/src/index.tsTHEME_PRESETS に追加します。本体側は @vyline/themes を読み込むため、presetの追加だけならUIの状態管理やBackendを変更する必要はありません。

ページ名・設定名・エラー名で検索