openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
41 lines (40 loc) • 1.44 kB
JavaScript
//#region src/plugins/provider-oauth-flow.ts
const validateRequiredInput = (value) => value.trim().length > 0 ? void 0 : "Required";
/** Creates OAuth callbacks that use local browser auth locally and manual code entry on VPS hosts. */
function createVpsAwareOAuthHandlers(params) {
const manualPromptMessage = params.manualPromptMessage ?? "Paste the redirect URL";
let manualCodePromise;
return {
onAuth: async ({ url }) => {
if (params.isRemote) {
params.spin.stop("OAuth URL ready");
params.runtime.log(`\nOpen this URL in your LOCAL browser:\n\n${url}\n`);
await params.openUrl(url);
await params.prompter.note(`Open this URL in your LOCAL browser:\n\n${url}`, "OAuth sign-in");
manualCodePromise = params.prompter.text({
message: manualPromptMessage,
sensitive: true,
signal: params.manualPromptSignal,
validate: validateRequiredInput
});
manualCodePromise.catch(() => {});
return;
}
params.spin.update(params.localBrowserMessage);
await params.openUrl(url);
params.runtime.log(`Open: ${url}`);
},
onPrompt: async (prompt) => {
if (manualCodePromise) return manualCodePromise;
return await params.prompter.text({
message: prompt.message,
placeholder: prompt.placeholder,
sensitive: true,
signal: params.manualPromptSignal,
validate: validateRequiredInput
});
}
};
}
//#endregion
export { createVpsAwareOAuthHandlers as t };