eve 0.24.2 → 0.24.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/src/cli/dev/environment.d.ts +6 -0
  3. package/dist/src/cli/dev/environment.js +1 -1
  4. package/dist/src/compiled/.vendor-stamp.json +2 -1
  5. package/dist/src/compiled/@chat-adapter/slack/index.js +12 -12
  6. package/dist/src/compiled/@chat-adapter/twilio/index.js +1 -1
  7. package/dist/src/compiled/@vercel/sandbox/index.js +19 -19
  8. package/dist/src/compiled/@workflow/world-local/index.d.ts +14 -0
  9. package/dist/src/compiled/_chunks/node/{auth-CWHn3Yve.js → auth-BuQkq4Gr.js} +2 -2
  10. package/dist/src/compiled/_chunks/node/{dist-BdTs18CF.js → chunk-BTyA9uPd.js} +1 -1
  11. package/dist/src/compiled/_chunks/node/{dist-W8yle6rh.js → dist-CdH_Yoxt.js} +5 -5
  12. package/dist/src/compiled/_chunks/node/{dist-RHRJZ03Q.js → dist-Drt-_JVK.js} +1 -1
  13. package/dist/src/compiled/_chunks/node/dist-DsNhwdzf.js +1 -0
  14. package/dist/src/compiled/_chunks/node/retry-DngYleaI.js +1 -0
  15. package/dist/src/compiled/_chunks/node/token-DabMnh8F.js +1 -0
  16. package/dist/src/compiled/_chunks/node/token-util-BoSJPKrG.js +1 -0
  17. package/dist/src/compiled/_chunks/node/token-util-DVigMYWS.js +1 -0
  18. package/dist/src/compiled/_chunks/node/virtual-loader-B8K8w9cr.js +1 -0
  19. package/dist/src/compiled/chat/index.js +1 -1
  20. package/dist/src/compiled/env-runner/LICENSE +21 -0
  21. package/dist/src/compiled/env-runner/index.d.ts +38 -0
  22. package/dist/src/compiled/env-runner/index.js +1 -0
  23. package/dist/src/compiled/env-runner/node-worker.d.ts +1 -0
  24. package/dist/src/compiled/env-runner/node-worker.js +12 -0
  25. package/dist/src/compiler/compile-agent.d.ts +4 -6
  26. package/dist/src/compiler/compile-agent.js +1 -1
  27. package/dist/src/execution/create-session-step.d.ts +2 -2
  28. package/dist/src/execution/create-session-step.js +1 -1
  29. package/dist/src/execution/workflow-runtime.js +1 -1
  30. package/dist/src/internal/application/compiled-artifacts.d.ts +13 -0
  31. package/dist/src/internal/application/compiled-artifacts.js +3 -2
  32. package/dist/src/internal/application/dev-environment.d.ts +4 -0
  33. package/dist/src/internal/application/dev-environment.js +1 -0
  34. package/dist/src/internal/application/optional-package-install.d.ts +2 -10
  35. package/dist/src/internal/application/optional-package-install.js +1 -1
  36. package/dist/src/internal/application/output-publication-lock.js +1 -1
  37. package/dist/src/internal/application/package.js +1 -1
  38. package/dist/src/internal/application/tsconfig-dependencies.js +1 -1
  39. package/dist/src/internal/authored-module-loader.d.ts +3 -9
  40. package/dist/src/internal/authored-module-loader.js +2 -2
  41. package/dist/src/internal/authored-package-boundary.d.ts +0 -2
  42. package/dist/src/internal/authored-package-boundary.js +1 -1
  43. package/dist/src/internal/authored-package-tsconfig-paths.js +1 -1
  44. package/dist/src/internal/compiled-manifest-fingerprint.d.ts +5 -0
  45. package/dist/src/internal/compiled-manifest-fingerprint.js +1 -0
  46. package/dist/src/internal/materialized-authored-modules.d.ts +0 -3
  47. package/dist/src/internal/materialized-authored-modules.js +1 -1
  48. package/dist/src/internal/nitro/dev-client-address.d.ts +22 -0
  49. package/dist/src/internal/nitro/dev-client-address.js +1 -0
  50. package/dist/src/internal/nitro/dev-runtime-artifacts-retention.d.ts +12 -0
  51. package/dist/src/internal/nitro/dev-runtime-artifacts-retention.js +1 -0
  52. package/dist/src/internal/nitro/dev-runtime-artifacts.d.ts +19 -1
  53. package/dist/src/internal/nitro/dev-runtime-artifacts.js +1 -1
  54. package/dist/src/internal/nitro/development-generation.d.ts +5 -1
  55. package/dist/src/internal/nitro/development-generation.js +1 -1
  56. package/dist/src/internal/nitro/host/artifacts-config.d.ts +2 -0
  57. package/dist/src/internal/nitro/host/artifacts-config.js +1 -1
  58. package/dist/src/internal/nitro/host/channel-routes.d.ts +1 -13
  59. package/dist/src/internal/nitro/host/channel-routes.js +3 -3
  60. package/dist/src/internal/nitro/host/configure-nitro-routes.d.ts +1 -2
  61. package/dist/src/internal/nitro/host/configure-nitro-routes.js +2 -2
  62. package/dist/src/internal/nitro/host/create-application-nitro.d.ts +3 -5
  63. package/dist/src/internal/nitro/host/create-application-nitro.js +1 -1
  64. package/dist/src/internal/nitro/host/dev-authored-rebuild-coordinator.d.ts +32 -0
  65. package/dist/src/internal/nitro/host/dev-authored-rebuild-coordinator.js +1 -0
  66. package/dist/src/internal/nitro/host/dev-authored-source-watcher.d.ts +4 -15
  67. package/dist/src/internal/nitro/host/dev-authored-source-watcher.js +1 -1
  68. package/dist/src/internal/nitro/host/dev-host-candidate.d.ts +16 -0
  69. package/dist/src/internal/nitro/host/dev-host-candidate.js +1 -0
  70. package/dist/src/internal/nitro/host/dev-host-fingerprint.d.ts +2 -0
  71. package/dist/src/internal/nitro/host/dev-host-fingerprint.js +1 -0
  72. package/dist/src/internal/nitro/host/dev-host-workspace.d.ts +10 -0
  73. package/dist/src/internal/nitro/host/dev-host-workspace.js +1 -0
  74. package/dist/src/internal/nitro/host/dev-runner.d.ts +21 -0
  75. package/dist/src/internal/nitro/host/dev-runner.js +1 -0
  76. package/dist/src/internal/nitro/host/dev-server-http.d.ts +5 -0
  77. package/dist/src/internal/nitro/host/dev-server-http.js +1 -0
  78. package/dist/src/internal/nitro/host/dev-server-url.d.ts +6 -0
  79. package/dist/src/internal/nitro/host/dev-server-url.js +1 -0
  80. package/dist/src/internal/nitro/host/dev-workflow-world-setup.d.ts +9 -0
  81. package/dist/src/internal/nitro/host/dev-workflow-world-setup.js +1 -0
  82. package/dist/src/internal/nitro/host/dispatch-schedule-in-dev.js +1 -1
  83. package/dist/src/internal/nitro/host/drained-nitro-dev-server.d.ts +53 -0
  84. package/dist/src/internal/nitro/host/drained-nitro-dev-server.js +1 -0
  85. package/dist/src/internal/nitro/host/prepare-application-host.d.ts +4 -5
  86. package/dist/src/internal/nitro/host/prepare-application-host.js +1 -1
  87. package/dist/src/internal/nitro/host/start-development-server.d.ts +2 -5
  88. package/dist/src/internal/nitro/host/start-development-server.js +2 -2
  89. package/dist/src/internal/nitro/host/types.d.ts +6 -0
  90. package/dist/src/internal/nitro/routes/channel-dispatch.js +1 -1
  91. package/dist/src/internal/nitro/routes/runtime-artifacts.d.ts +7 -0
  92. package/dist/src/internal/nitro/routes/runtime-artifacts.js +1 -1
  93. package/dist/src/internal/nitro/routes/schedule-task.d.ts +9 -0
  94. package/dist/src/internal/nitro/routes/schedule-task.js +1 -1
  95. package/dist/src/internal/workflow/development-generation-context.d.ts +8 -0
  96. package/dist/src/internal/workflow/development-generation-context.js +1 -0
  97. package/dist/src/internal/workflow/development-world-client.d.ts +29 -0
  98. package/dist/src/internal/workflow/development-world-client.js +1 -0
  99. package/dist/src/internal/workflow/development-world-codec.d.ts +11 -0
  100. package/dist/src/internal/workflow/development-world-codec.js +1 -0
  101. package/dist/src/internal/workflow/development-world-protocol.d.ts +31 -0
  102. package/dist/src/internal/workflow/development-world-protocol.js +1 -0
  103. package/dist/src/internal/workflow/development-world-server.d.ts +27 -0
  104. package/dist/src/internal/workflow/development-world-server.js +1 -0
  105. package/dist/src/runtime/compiled-artifacts-source.d.ts +9 -0
  106. package/dist/src/runtime/compiled-artifacts-source.js +1 -1
  107. package/dist/src/runtime/durable-compiled-artifacts-source.d.ts +8 -0
  108. package/dist/src/runtime/durable-compiled-artifacts-source.js +1 -0
  109. package/dist/src/runtime/sessions/runtime-context-keys.js +1 -1
  110. package/dist/src/setup/scaffold/create/project.js +1 -1
  111. package/dist/src/shared/atomic-write-file.d.ts +1 -1
  112. package/dist/src/shared/atomic-write-file.js +1 -1
  113. package/dist/src/shared/rename-with-retry.d.ts +5 -0
  114. package/dist/src/shared/rename-with-retry.js +1 -0
  115. package/docs/agent-config.md +2 -0
  116. package/docs/concepts/execution-model-and-durability.md +1 -1
  117. package/docs/reference/cli.md +1 -1
  118. package/package.json +2 -1
  119. package/dist/src/compiled/_chunks/node/retry-DkR2H1Y0.js +0 -1
  120. package/dist/src/compiled/_chunks/node/token-ORseRyWn.js +0 -1
  121. package/dist/src/internal/bundler/nitro-node-file-trace.d.ts +0 -10
  122. package/dist/src/internal/bundler/nitro-node-file-trace.js +0 -1
  123. package/dist/src/internal/materialize-authored-external-dependencies.d.ts +0 -10
  124. package/dist/src/internal/materialize-authored-external-dependencies.js +0 -2
  125. package/dist/src/internal/nitro/host/dev-live-virtual-modules.d.ts +0 -15
  126. package/dist/src/internal/nitro/host/dev-live-virtual-modules.js +0 -1
  127. package/dist/src/internal/nitro/host/server-external-packages.d.ts +0 -5
  128. package/dist/src/internal/nitro/host/server-external-packages.js +0 -1
@@ -1 +1 @@
1
- import{At as e,Dt as t,Nt as n,S as r,et as i,l as a,vt as o,wt as s,y as c}from"../../_chunks/node/dist-W8yle6rh.js";import{a as l,d as u,f as d,i as f,u as p}from"../../_chunks/node/dist-RHRJZ03Q.js";import{n as m,r as h,t as g}from"../../_chunks/node/chunk-PFJ2G64A-B79fSABi.js";import{a as _,l as v,o as y,r as b,s as x}from"../../_chunks/node/chunk-5OX2R7AJ-CxVV-owP.js";import{a as S,n as C,r as w}from"../../_chunks/node/chunk-QZV7YRVM-Dzw4WEBv.js";function T(e){return l(e).replace(/\*/g,``)}var E=class extends i{toAst(e){return s(e)}fromAst(r){return t(n(structuredClone(r),t=>o(t)?{type:`code`,value:e(t)}:t)).trim()}renderPostable(e){return typeof e==`string`?e:`raw`in e?e.raw:`markdown`in e?this.fromMarkdown(e.markdown):`ast`in e?this.fromAst(e.ast):super.renderPostable(e)}};function D(e){return`twilio:${encodeURIComponent(e.sender)}:${encodeURIComponent(e.recipient)}`}function O(e){let[t,n,r]=e.split(`:`);if(t!==`twilio`||!n||!r)throw new f(`twilio`,`Invalid Twilio thread ID: ${e}`);return{recipient:decodeURIComponent(r),sender:decodeURIComponent(n)}}function k(e){let t=O(e);return`twilio:${encodeURIComponent(t.sender)}`}function A(){return new Response(`<Response></Response>`,{headers:{"content-type":`application/xml`},status:200})}function j(e){return e.startsWith(`MG`)?{messagingServiceSid:e}:{from:e}}function M(e){return e?.startsWith(`image/`)?`image`:e?.startsWith(`video/`)?`video`:e?.startsWith(`audio/`)?`audio`:`file`}var N=class{name=`twilio`;lockScope=`channel`;persistThreadHistory=!0;userName;chat=null;accountSid;apiUrl;authToken;fetch;formatConverter=new E;logger;messagingServiceSid;phoneNumber;statusCallbackUrl;webhookUrl;webhookVerifier;constructor(e={}){this.accountSid=e.accountSid,this.apiUrl=e.apiUrl,this.authToken=e.authToken,this.fetch=e.fetch,this.logger=e.logger??new a(`info`).child(`twilio`),this.messagingServiceSid=e.messagingServiceSid??process.env.TWILIO_MESSAGING_SERVICE_SID,this.phoneNumber=e.phoneNumber??process.env.TWILIO_PHONE_NUMBER,this.statusCallbackUrl=e.statusCallbackUrl,this.userName=e.userName??`bot`,this.webhookUrl=e.webhookUrl,this.webhookVerifier=e.webhookVerifier}async initialize(e){this.chat=e,this.logger.info(`Twilio adapter initialized`,{messagingServiceSid:this.messagingServiceSid,phoneNumber:this.phoneNumber})}async handleWebhook(e,t){let n;try{n=await S(e,{authToken:this.authToken,webhookUrl:this.webhookUrl,webhookVerifier:this.webhookVerifier})}catch(e){if(e instanceof w)return new Response(`Invalid signature`,{status:401});if(e instanceof C)return new Response(`Invalid webhook`,{status:400});throw e}if(n.kind!==`text`||!this.chat)return A();let r=this.encodeThreadId({recipient:n.from,sender:n.to}),i=this.parseTwilioTextPayload(n,r);return this.chat.processMessage(this,r,i,t),A()}async postMessage(e,t){let n=this.decodeThreadId(e),r=this.renderPostableText(t),i=this.mediaUrls(t);if(!r&&i.length===0)throw new f(`twilio`,`Message text cannot be empty`);let a=await v({...this.apiOptions(),body:r||i.length===0?h(r):void 0,mediaUrl:i,statusCallbackUrl:this.statusCallbackUrl,to:n.recipient,...j(n.sender)});return{id:a.sid,raw:a,threadId:this.threadIdForResource(a,n)}}async editMessage(){throw new r(`Twilio does not support editing sent messages`,`editMessage`)}async deleteMessage(e,t){await b({...this.apiOptions(),messageSid:t})}async addReaction(){throw new r(`Twilio does not support message reactions`,`addReaction`)}async removeReaction(){throw new r(`Twilio does not support message reactions`,`removeReaction`)}async startTyping(){}parseMessage(e){if(F(e)){if(e.kind!==`text`)throw new f(`twilio`,`Cannot parse unsupported webhook`);return this.parseTwilioTextPayload(e,this.encodeThreadId({recipient:e.from,sender:e.to}))}return this.parseTwilioResource(e,void 0)}async fetchMessage(e,t){let n=this.decodeThreadId(e);try{let e=await y({...this.apiOptions(),messageSid:t});return this.parseTwilioResource(e,n)}catch{return null}}async fetchMessages(e,t={}){let n=this.decodeThreadId(e),r=t.limit??50,[i,a]=await Promise.all([x({...this.apiOptions(),from:n.sender,limit:r,to:n.recipient}),x({...this.apiOptions(),from:n.recipient,limit:r,to:n.sender})]);return{messages:[...i,...a].map(e=>this.parseTwilioResource(e,n)).sort((e,t)=>e.metadata.dateSent.getTime()-t.metadata.dateSent.getTime()).slice(-r)}}async fetchThread(e){let t=this.decodeThreadId(e);return{channelId:this.channelIdFromThreadId(e),channelName:t.sender,id:e,isDM:!0,metadata:{...t}}}async getUser(e){return{fullName:e,isBot:!1,userId:e,userName:e}}async openDM(e){return this.encodeThreadId({recipient:e,sender:this.defaultSender()})}isDM(e){return e.startsWith(`twilio:`)}channelIdFromThreadId(e){return k(e)}encodeThreadId(e){return D(e)}decodeThreadId(e){return O(e)}renderFormatted(e){return this.formatConverter.fromAst(e)}rehydrateAttachment(e){let t=e.fetchMetadata?.twilioMediaUrl??e.url;return t?this.twilioAttachment({contentType:e.mimeType,url:t}):e}parseTwilioTextPayload(e,t){return new c({attachments:e.media.map(e=>this.twilioAttachment(e)),author:this.author(e.from,!1),formatted:this.formatConverter.toAst(e.body),id:e.messageSid??`twilio:${Date.now()}`,metadata:{dateSent:new Date,edited:!1},raw:e,text:e.body,threadId:t})}parseTwilioResource(e,t){let n=e.direction?.startsWith(`outbound`)??!1,r=e.from??e.messaging_service_sid??(n?t?.sender:t?.recipient),i=e.to??(n?t?.recipient:t?.sender);if(!(r&&i))throw new f(`twilio`,`Twilio message is missing routing`);let a=e.body??``,o=n?{recipient:t?.recipient??i,sender:t?.sender??r}:{recipient:r,sender:i};return new c({attachments:[],author:this.author(n?o.sender:r,n),formatted:this.formatConverter.toAst(a),id:e.sid,metadata:{dateSent:I(e.date_sent??e.date_created),edited:!1},raw:e,text:a,threadId:this.encodeThreadId(o)})}renderPostableText(e){let t=p(e);return m(t?T(t):this.formatConverter.renderPostable(e),{limit:g}).text}mediaUrls(e){if(u(e).length>0)throw new f(`twilio`,`Twilio adapter supports media attachments by public URL only`);let t=d(e),n=[];for(let e of t){if(typeof e.url!=`string`||e.url.length===0)throw new f(`twilio`,`Twilio adapter supports media attachments by public URL only`);n.push(e.url)}return n}twilioAttachment(e){return{fetchData:async()=>Buffer.from(await _({...this.apiOptions(),url:e.url})),fetchMetadata:{twilioMediaUrl:e.url},mimeType:e.contentType,type:M(e.contentType),url:e.url}}apiOptions(){return{apiUrl:this.apiUrl,credentials:{accountSid:this.accountSid,authToken:this.authToken},fetch:this.fetch}}defaultSender(){let e=this.phoneNumber??this.messagingServiceSid;if(!e)throw new f(`twilio`,`phoneNumber or messagingServiceSid is required`);return e}author(e,t){return{fullName:e,isBot:t,isMe:t,userId:e,userName:e}}threadIdForResource(e,t){return this.parseTwilioResource(e,t).threadId}};function P(e={}){return new N(e)}function F(e){return`kind`in e}function I(e){let t=e?new Date(e):new Date;return Number.isNaN(t.getTime())?new Date:t}export{N as TwilioAdapter,E as TwilioFormatConverter,T as cardToTwilioText,P as createTwilioAdapter};
1
+ import{At as e,Dt as t,Nt as n,S as r,et as i,l as a,vt as o,wt as s,y as c}from"../../_chunks/node/dist-CdH_Yoxt.js";import{a as l,d as u,f as d,i as f,u as p}from"../../_chunks/node/dist-Drt-_JVK.js";import{n as m,r as h,t as g}from"../../_chunks/node/chunk-PFJ2G64A-B79fSABi.js";import{a as _,l as v,o as y,r as b,s as x}from"../../_chunks/node/chunk-5OX2R7AJ-CxVV-owP.js";import{a as S,n as C,r as w}from"../../_chunks/node/chunk-QZV7YRVM-Dzw4WEBv.js";function T(e){return l(e).replace(/\*/g,``)}var E=class extends i{toAst(e){return s(e)}fromAst(r){return t(n(structuredClone(r),t=>o(t)?{type:`code`,value:e(t)}:t)).trim()}renderPostable(e){return typeof e==`string`?e:`raw`in e?e.raw:`markdown`in e?this.fromMarkdown(e.markdown):`ast`in e?this.fromAst(e.ast):super.renderPostable(e)}};function D(e){return`twilio:${encodeURIComponent(e.sender)}:${encodeURIComponent(e.recipient)}`}function O(e){let[t,n,r]=e.split(`:`);if(t!==`twilio`||!n||!r)throw new f(`twilio`,`Invalid Twilio thread ID: ${e}`);return{recipient:decodeURIComponent(r),sender:decodeURIComponent(n)}}function k(e){let t=O(e);return`twilio:${encodeURIComponent(t.sender)}`}function A(){return new Response(`<Response></Response>`,{headers:{"content-type":`application/xml`},status:200})}function j(e){return e.startsWith(`MG`)?{messagingServiceSid:e}:{from:e}}function M(e){return e?.startsWith(`image/`)?`image`:e?.startsWith(`video/`)?`video`:e?.startsWith(`audio/`)?`audio`:`file`}var N=class{name=`twilio`;lockScope=`channel`;persistThreadHistory=!0;userName;chat=null;accountSid;apiUrl;authToken;fetch;formatConverter=new E;logger;messagingServiceSid;phoneNumber;statusCallbackUrl;webhookUrl;webhookVerifier;constructor(e={}){this.accountSid=e.accountSid,this.apiUrl=e.apiUrl,this.authToken=e.authToken,this.fetch=e.fetch,this.logger=e.logger??new a(`info`).child(`twilio`),this.messagingServiceSid=e.messagingServiceSid??process.env.TWILIO_MESSAGING_SERVICE_SID,this.phoneNumber=e.phoneNumber??process.env.TWILIO_PHONE_NUMBER,this.statusCallbackUrl=e.statusCallbackUrl,this.userName=e.userName??`bot`,this.webhookUrl=e.webhookUrl,this.webhookVerifier=e.webhookVerifier}async initialize(e){this.chat=e,this.logger.info(`Twilio adapter initialized`,{messagingServiceSid:this.messagingServiceSid,phoneNumber:this.phoneNumber})}async handleWebhook(e,t){let n;try{n=await S(e,{authToken:this.authToken,webhookUrl:this.webhookUrl,webhookVerifier:this.webhookVerifier})}catch(e){if(e instanceof w)return new Response(`Invalid signature`,{status:401});if(e instanceof C)return new Response(`Invalid webhook`,{status:400});throw e}if(n.kind!==`text`||!this.chat)return A();let r=this.encodeThreadId({recipient:n.from,sender:n.to}),i=this.parseTwilioTextPayload(n,r);return this.chat.processMessage(this,r,i,t),A()}async postMessage(e,t){let n=this.decodeThreadId(e),r=this.renderPostableText(t),i=this.mediaUrls(t);if(!r&&i.length===0)throw new f(`twilio`,`Message text cannot be empty`);let a=await v({...this.apiOptions(),body:r||i.length===0?h(r):void 0,mediaUrl:i,statusCallbackUrl:this.statusCallbackUrl,to:n.recipient,...j(n.sender)});return{id:a.sid,raw:a,threadId:this.threadIdForResource(a,n)}}async editMessage(){throw new r(`Twilio does not support editing sent messages`,`editMessage`)}async deleteMessage(e,t){await b({...this.apiOptions(),messageSid:t})}async addReaction(){throw new r(`Twilio does not support message reactions`,`addReaction`)}async removeReaction(){throw new r(`Twilio does not support message reactions`,`removeReaction`)}async startTyping(){}parseMessage(e){if(F(e)){if(e.kind!==`text`)throw new f(`twilio`,`Cannot parse unsupported webhook`);return this.parseTwilioTextPayload(e,this.encodeThreadId({recipient:e.from,sender:e.to}))}return this.parseTwilioResource(e,void 0)}async fetchMessage(e,t){let n=this.decodeThreadId(e);try{let e=await y({...this.apiOptions(),messageSid:t});return this.parseTwilioResource(e,n)}catch{return null}}async fetchMessages(e,t={}){let n=this.decodeThreadId(e),r=t.limit??50,[i,a]=await Promise.all([x({...this.apiOptions(),from:n.sender,limit:r,to:n.recipient}),x({...this.apiOptions(),from:n.recipient,limit:r,to:n.sender})]);return{messages:[...i,...a].map(e=>this.parseTwilioResource(e,n)).sort((e,t)=>e.metadata.dateSent.getTime()-t.metadata.dateSent.getTime()).slice(-r)}}async fetchThread(e){let t=this.decodeThreadId(e);return{channelId:this.channelIdFromThreadId(e),channelName:t.sender,id:e,isDM:!0,metadata:{...t}}}async getUser(e){return{fullName:e,isBot:!1,userId:e,userName:e}}async openDM(e){return this.encodeThreadId({recipient:e,sender:this.defaultSender()})}isDM(e){return e.startsWith(`twilio:`)}channelIdFromThreadId(e){return k(e)}encodeThreadId(e){return D(e)}decodeThreadId(e){return O(e)}renderFormatted(e){return this.formatConverter.fromAst(e)}rehydrateAttachment(e){let t=e.fetchMetadata?.twilioMediaUrl??e.url;return t?this.twilioAttachment({contentType:e.mimeType,url:t}):e}parseTwilioTextPayload(e,t){return new c({attachments:e.media.map(e=>this.twilioAttachment(e)),author:this.author(e.from,!1),formatted:this.formatConverter.toAst(e.body),id:e.messageSid??`twilio:${Date.now()}`,metadata:{dateSent:new Date,edited:!1},raw:e,text:e.body,threadId:t})}parseTwilioResource(e,t){let n=e.direction?.startsWith(`outbound`)??!1,r=e.from??e.messaging_service_sid??(n?t?.sender:t?.recipient),i=e.to??(n?t?.recipient:t?.sender);if(!(r&&i))throw new f(`twilio`,`Twilio message is missing routing`);let a=e.body??``,o=n?{recipient:t?.recipient??i,sender:t?.sender??r}:{recipient:r,sender:i};return new c({attachments:[],author:this.author(n?o.sender:r,n),formatted:this.formatConverter.toAst(a),id:e.sid,metadata:{dateSent:I(e.date_sent??e.date_created),edited:!1},raw:e,text:a,threadId:this.encodeThreadId(o)})}renderPostableText(e){let t=p(e);return m(t?T(t):this.formatConverter.renderPostable(e),{limit:g}).text}mediaUrls(e){if(u(e).length>0)throw new f(`twilio`,`Twilio adapter supports media attachments by public URL only`);let t=d(e),n=[];for(let e of t){if(typeof e.url!=`string`||e.url.length===0)throw new f(`twilio`,`Twilio adapter supports media attachments by public URL only`);n.push(e.url)}return n}twilioAttachment(e){return{fetchData:async()=>Buffer.from(await _({...this.apiOptions(),url:e.url})),fetchMetadata:{twilioMediaUrl:e.url},mimeType:e.contentType,type:M(e.contentType),url:e.url}}apiOptions(){return{apiUrl:this.apiUrl,credentials:{accountSid:this.accountSid,authToken:this.authToken},fetch:this.fetch}}defaultSender(){let e=this.phoneNumber??this.messagingServiceSid;if(!e)throw new f(`twilio`,`phoneNumber or messagingServiceSid is required`);return e}author(e,t){return{fullName:e,isBot:t,isMe:t,userId:e,userName:e}}threadIdForResource(e,t){return this.parseTwilioResource(e,t).threadId}};function P(e={}){return new N(e)}function F(e){return`kind`in e}function I(e){let t=e?new Date(e):new Date;return Number.isNaN(t.getTime())?new Date:t}export{N as TwilioAdapter,E as TwilioFormatConverter,T as cardToTwilioText,P as createTwilioAdapter};