UNPKG

eve

Version:

Filesystem-first framework for durable backend AI agents that run anywhere.

3 lines (2 loc) • 2.02 kB
import{isNotImplemented}from"#public/channels/chat-sdk/notImplemented.js";function defaultAuthorizationEvents(){return{async"authorization.required"(e,t,n){if(!t.thread||e.candidateId!==void 0)return;let r=t.state.pendingAuthMessageIds??{};if(r[e.name]!==void 0)return;let i=authorizationDisplayName(e.name,e.authorization?.displayName),a=t.thread.isDM?authorizationPrompt({displayName:i,instructions:e.authorization?.instructions,url:e.authorization?.url,userCode:e.authorization?.userCode}):`Authorization required for ${i}. Continue in a direct message with this agent.`,o=await t.thread.post({markdown:a});o.id&&(t.state.pendingAuthMessageIds={...r,[e.name]:o.id})},async"authorization.completed"(e,t,n){if(!t.thread||e.candidateId!==void 0)return;let r=t.state.pendingAuthMessageIds??{},i=r[e.name];if(i===void 0)return;let a=authorizationCompleted({displayName:authorizationDisplayName(e.name,e.authorization?.displayName),outcome:e.outcome,reason:e.reason});try{await editMessage(t.thread,i,a)}catch(e){if(!isNotImplemented(e))throw e;t.state.editSupported=!1,await t.thread.post({markdown:a})}let o={...r};delete o[e.name],t.state.pendingAuthMessageIds=o,e.outcome===`authorized`&&await safeStartTyping(t.thread,`Connected. Resuming...`)}}}async function safeStartTyping(e,t){try{await e.startTyping(t)}catch(e){if(!isNotImplemented(e))throw e}}async function editMessage(e,t,n){await e.adapter.editMessage(e.id,t,{markdown:n})}function authorizationDisplayName(e,t){return t===void 0?e.length===0?e:e.charAt(0).toUpperCase()+e.slice(1):t}function authorizationPrompt(e){return[`Authorization required for ${e.displayName}.`,e.instructions,e.userCode===void 0?void 0:`Code: ${e.userCode}`,e.url].filter(e=>e!==void 0&&e.length>0).join(` `)}function authorizationCompleted(e){if(e.outcome===`authorized`)return`${e.displayName} connected.`;let t=e.reason===void 0?``:` (${e.reason})`,n=e.outcome===`timed-out`?`timed out`:e.outcome;return`${e.displayName} authorization ${n}${t}.`}export{defaultAuthorizationEvents};