auto: sync OpenClaw config 2026-09-09 16:13

This commit is contained in:
2026-09-09 16:13:31 +08:00
parent c79d73c0fe
commit 0aa13d3cf0
440 changed files with 51636 additions and 13 deletions
+77
View File
@@ -0,0 +1,77 @@
/**
* Copyright (c) 2026 ByteDance Ltd. and/or its affiliates
* SPDX-License-Identifier: MIT
*
* OAuth 2.0 Device Authorization Grant (RFC 8628) for Lark/Feishu.
*
* Two-step flow:
* 1. `requestDeviceAuthorization` obtains device_code + user_code.
* 2. `pollDeviceToken` polls the token endpoint until the user authorises,
* rejects, or the code expires.
*
* All HTTP calls use the built-in `fetch` (Node 18+). The Lark SDK is not
* used here because these OAuth endpoints are outside the SDK's scope.
*/
import type { LarkBrand } from './types';
export interface DeviceAuthResponse {
deviceCode: string;
userCode: string;
verificationUri: string;
verificationUriComplete: string;
expiresIn: number;
interval: number;
}
export interface DeviceFlowTokenData {
accessToken: string;
refreshToken: string;
expiresIn: number;
refreshExpiresIn: number;
scope: string;
}
export type DeviceFlowResult = {
ok: true;
token: DeviceFlowTokenData;
} | {
ok: false;
error: DeviceFlowError;
message: string;
};
export type DeviceFlowError = 'authorization_pending' | 'slow_down' | 'access_denied' | 'expired_token';
/**
* Resolve the two OAuth endpoint URLs based on the configured brand.
*/
export declare function resolveOAuthEndpoints(brand: LarkBrand): {
deviceAuthorization: string;
token: string;
};
/**
* Request a device authorisation code from the Feishu OAuth server.
*
* Uses Confidential Client authentication (HTTP Basic with appId:appSecret).
* The `offline_access` scope is automatically appended so that the token
* response includes a refresh_token.
*/
export declare function requestDeviceAuthorization(params: {
appId: string;
appSecret: string;
brand: LarkBrand;
scope?: string;
}): Promise<DeviceAuthResponse>;
/**
* Poll the token endpoint until the user authorises, rejects, or the code
* expires.
*
* Handles `authorization_pending` (keep polling), `slow_down` (back off by
* +5 s), `access_denied` and `expired_token` (terminal errors).
*
* Pass an `AbortSignal` to cancel polling from the outside.
*/
export declare function pollDeviceToken(params: {
appId: string;
appSecret: string;
brand: LarkBrand;
deviceCode: string;
interval: number;
expiresIn: number;
signal?: AbortSignal;
}): Promise<DeviceFlowResult>;