UNPKG

eve

Version:

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

1 lines • 5.06 kB
import{t as e}from"../../_chunks/node/chunk-7WDLOIRP-B_IWkVtZ.js";var t=class extends Error{method;response;status;constructor(e,t){super(e),this.name=`SlackApiError`,this.method=t.method,this.response=t.response,this.status=t.status}},n=`https://slack.com/api/`;async function r(e){return typeof e==`function`?await e():e}async function i(e,i,a){let o=await r(a.token),s=f(i,a.contentType??`form`),c=await(a.fetch??fetch)(new URL(e,a.apiUrl??n),{body:s.body,headers:{authorization:`Bearer ${o}`,"content-type":s.contentType},method:`POST`}),l=await c.json();if(!c.ok)throw new t(`Slack ${e} returned HTTP ${c.status}`,{method:e,response:l,status:c.status});return l}async function a(e){let t=await i(`chat.postMessage`,m(e),e);return p(`chat.postMessage`,t),{channel:x(t.channel),id:b(t.ts),raw:t}}async function o(e){let t=await i(`chat.postEphemeral`,{...m(e),user:e.user},e);return p(`chat.postEphemeral`,t),{channel:x(t.channel),id:b(t.message_ts),raw:t}}async function s(e){let t=await i(`chat.update`,{...m(e),ts:e.ts},e);return p(`chat.update`,t),{channel:x(t.channel),id:b(t.ts),raw:t}}async function c(e){let t=await i(`chat.delete`,{channel:e.channel,ts:e.ts},e);return p(`chat.delete`,t),t}async function l(e,n,r={}){let i=await(r.fetch??fetch)(e,{body:JSON.stringify(h(n)),headers:{"content-type":`application/json`},method:`POST`});if(!i.ok)throw new t(`Slack response_url returned HTTP ${i.status}`,{method:`response_url`,status:i.status})}async function u(e,n){if(e.length===0)return{fileIds:[],raw:{ok:!0}};let a=await r(n.token),o=n.fetch??fetch,s=[];for(let r of e){let e=await y(r.data),c=await i(`files.getUploadURLExternal`,{alt_txt:r.altText,filename:r.filename,length:e.byteLength,snippet_type:r.snippetType},n);p(`files.getUploadURLExternal`,c);let l=b(c.upload_url),u=b(c.file_id);if(!(l&&u))throw new t(`Slack files.getUploadURLExternal returned no upload URL`,{method:`files.getUploadURLExternal`,response:c});let d=await o(l,{body:e,headers:{authorization:`Bearer ${a}`,"content-type":`application/octet-stream`},method:`POST`});if(!d.ok)throw new t(`Slack file upload returned HTTP ${d.status}`,{method:`files.upload`,status:d.status});s.push(u)}let c=await i(`files.completeUploadExternal`,{channel_id:n.channelId,files:e.map((e,t)=>({id:s[t],title:e.title??e.filename})),initial_comment:n.initialComment,thread_ts:n.threadTs},n);return p(`files.completeUploadExternal`,c),{fileIds:s,raw:c}}async function d(n){let i=n.fetch??fetch,a=e(n.url,n.apiUrl)?await r(n.token):void 0,o=await i(n.url,{headers:a?{authorization:`Bearer ${a}`}:void 0});if(!o.ok)throw new t(`Slack file fetch returned HTTP ${o.status}`,{method:`files.fetch`,status:o.status});return o}function f(e,t=`form`){if(t===`json`)return{body:JSON.stringify(v(e)),contentType:`application/json`};let n=new URLSearchParams;for(let[t,r]of Object.entries(e))r!=null&&n.set(t,_(r));return{body:n.toString(),contentType:`application/x-www-form-urlencoded`}}function p(e,n){if(n.ok!==!0)throw new t(`Slack ${e} failed: ${n.error??`unknown_error`}`,{method:e,response:n})}function m(e){return g(e),{blocks:e.blocks,channel:e.channel,markdown_text:e.markdownText,metadata:e.metadata,reply_broadcast:e.replyBroadcast,text:e.text,thread_ts:e.threadTs,unfurl_links:e.unfurlLinks,unfurl_media:e.unfurlMedia}}function h(e){return{blocks:e.blocks,delete_original:e.deleteOriginal,replace_original:e.replaceOriginal,response_type:e.responseType,text:e.text,thread_ts:e.threadTs}}function g(e){if(e.markdownText!==void 0&&(e.text!==void 0||e.blocks!==void 0))throw TypeError(`markdownText cannot be used with text or blocks`)}function _(e){return typeof e==`string`||typeof e==`number`||typeof e==`boolean`?String(e):JSON.stringify(e)}function v(e){let t={};for(let[n,r]of Object.entries(e))r!==void 0&&(t[n]=r);return t}async function y(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(await e.arrayBuffer())}function b(e){return typeof e==`string`?e:``}function x(e){return typeof e==`string`?e:void 0}async function S(e){let t=await i(`conversations.replies`,{channel:e.channel,cursor:e.cursor,include_all_metadata:e.includeAllMetadata,inclusive:e.inclusive,latest:e.latest,limit:e.limit,oldest:e.oldest,ts:e.ts},e);return p(`conversations.replies`,t),{messages:Array.isArray(t.messages)?t.messages:[],nextCursor:w(t),raw:t}}async function C(e){if(!(e.triggerId||e.interactivityPointer))throw TypeError(`triggerId or interactivityPointer is required`);let t=await i(`views.open`,{interactivity_pointer:e.interactivityPointer,trigger_id:e.triggerId,view:e.view},e);return p(`views.open`,t),{raw:t,view:t.view}}function w(e){let t=e.response_metadata?.next_cursor;return typeof t==`string`&&t.length>0?t:void 0}export{t as SlackApiError,p as assertSlackOk,i as callSlackApi,c as deleteSlackMessage,f as encodeSlackApiBody,d as fetchSlackFile,S as fetchSlackThreadReplies,C as openSlackView,o as postSlackEphemeral,a as postSlackMessage,r as resolveSlackBotToken,l as sendSlackResponseUrl,s as updateSlackMessage,u as uploadSlackFiles};