eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 1.45 kB
JavaScript
import{normalizeChannelAudience}from"#shared/channel-audience.js";import{isThenable}from"#shared/guards.js";const deprecatedAudienceChannels=new Set;function warnDeprecatedMetadataAudience(e){deprecatedAudienceChannels.has(e)||(deprecatedAudienceChannels.add(e),console.warn(`channel ${e} uses deprecated metadata audience; move it to the audience() hook`))}function resolveAudience(e,t){return normalize(e,t)}function createMetadataAudienceProjector(e,t){return n=>resolveAudience({kind:e.kind,state:n.state,instrumentation:{metadata:t}},n)}function normalize(e,t){let n=e.instrumentation,r=n?.audience;if(r===void 0){let t=n?.metadata;if(t===void 0)return`unknown`;let r;try{r=t(e.state)}catch{return console.warn(`ignoring deprecated channel audience metadata for channel ${e.kind}`),`unknown`}if(isThenable(r))return console.warn(`ignoring deprecated channel audience metadata for channel ${e.kind}`),Promise.resolve(r).catch(()=>void 0),`unknown`;if(typeof r!=`object`||!r)return`unknown`;let i=r.audience;return i===void 0?`unknown`:(warnDeprecatedMetadataAudience(e.kind),normalizeChannelAudience(i))}try{let e=r(t);return isThenable(e)?(console.warn(`ignoring channel audience classifier because it returned a Promise`),Promise.resolve(e).catch(()=>void 0),`unknown`):normalizeChannelAudience(e)}catch{return console.warn(`ignoring channel audience classifier after failure`),`unknown`}}export{createMetadataAudienceProjector,resolveAudience};