UNPKG

@lark-project/cli

Version:

飞书项目插件开发工具

30 lines (29 loc) 1.71 kB
import type { AppType } from "../../types"; /** * 全局只读插件注册表(`~/.lpm/plugins.json`,按域名累积)。 * * 目的:让**只读**命令(`lpm perm list`,token-only、无需 pluginSecret)能在插件工程目录之外 * (例如开发者自己的后端代码仓里)定位到插件,而无需在那个仓里落任何 handle 目录。 * * 安全边界(对齐"不走 workflow 不能改数据"不变量): * - **不存 pluginSecret**。改类命令(local-config set / update / publish)要 secret,secret 只在 * 工程目录的 plugin.config.json 里 → 它们天然只能在工程目录(=走 workflow)里跑。 * - 因此本注册表只服务读类定位;读错插件无害,故无需 active 选择 / 防误写护栏。 */ export interface PluginRegistryEntry { pluginId: string; /** 插件名(best-effort,可能缺省——plugin.config.json 不带 name)。 */ name?: string; app_type?: AppType; } /** origin → 该站点下记录过的插件。 */ export type PluginRegistry = Record<string, PluginRegistryEntry[]>; export declare function loadPluginRegistry(): PluginRegistry; /** 列出某站点下记录过的插件(域名按 origin 归一)。 */ export declare function listPlugins(siteDomain: string): PluginRegistryEntry[]; /** * 累积记录一个插件(按 origin + pluginId 去重、合并字段)。无 secret。 * 全程 best-effort——它只是定位用的便利缓存,任何失败都吞掉,绝不让主命令挂掉; * 内容无变化时跳过写盘(getLocalPluginConfig 会频繁调用)。 */ export declare function recordPlugin(siteDomain: string, entry: PluginRegistryEntry): void;