@lark-project/cli
Version:
飞书项目插件开发工具
25 lines (24 loc) • 1.53 kB
TypeScript
import { AppType } from "../../../types";
/**
* 确定要写进本地 plugin.config.json 的 `app_type`——**以后端为准,不以请求为准**。
*
* `lpm create --app-type X` 里的 X 只是"请求后端建成什么形态";后端可能忽略 / 改写它,
* 且 resume 路径根本不调 create 接口。所以本地的事实来源必须是 `GetAppDescriptionInfo`
* 返回的真实 `app_type` / `point_types`(与 config-only init 同一套判定,见
* dispatcher.ts 的 config-only 分支)。
*
* - 后端可达:返回 `deriveAppTypeFromBackend(descInfo)`;若与 `requested` 不一致,warn 出来
* (这正是"请求 ai_node 却建成 normal"这类需要暴露的异常信号)。
* - 后端不可达:由 `onUnreachable` 决定——
* - `'fallback'`(默认,`lpm create` 用):退回 `requested`(聊胜于无的兜底,至少不让 config
* 缺字段被当 normal)并 warn;`requested` 未传(如 `lpm init` 存量插件)则返回 undefined,
* 由调用方 no-op、保持原样。
* - `'throw'`(`lpm init --config-only` 用):直接抛出。config-only 是在"领养"一个已存在的
* 后端插件、没有 `requested` 可兜底,拿不到真实 app_type 就不能继续,必须 fail-fast。
*/
export declare function resolveBackendAppType({ siteDomain, appKey, requested, onUnreachable, }: {
siteDomain: string;
appKey: string;
requested?: AppType;
onUnreachable?: 'fallback' | 'throw';
}): Promise<AppType | undefined>;