eve 0.13.1 → 0.13.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.
- package/CHANGELOG.md +13 -0
- package/dist/src/chunks/use-eve-agent-B18LYpfZ.js +5765 -0
- package/dist/src/chunks/use-eve-agent-BPI1nbo5.js +5795 -0
- package/dist/src/cli/dev/tui/provider-picker.d.ts +64 -0
- package/dist/src/cli/dev/tui/provider-picker.js +1 -0
- package/dist/src/cli/dev/tui/remote-auth-result.d.ts +21 -0
- package/dist/src/cli/dev/tui/remote-auth-result.js +1 -0
- package/dist/src/cli/dev/tui/remote-connection-probe.d.ts +9 -0
- package/dist/src/cli/dev/tui/remote-connection-probe.js +1 -0
- package/dist/src/cli/dev/tui/remote-connection-types.d.ts +67 -0
- package/dist/src/cli/dev/tui/remote-connection-types.js +1 -0
- package/dist/src/cli/dev/tui/remote-connection.d.ts +3 -0
- package/dist/src/cli/dev/tui/remote-connection.js +1 -0
- package/dist/src/cli/dev/tui/runner.js +1 -1
- package/dist/src/cli/dev/tui/setup-commands.d.ts +1 -1
- package/dist/src/cli/dev/tui/setup-commands.js +2 -2
- package/dist/src/cli/dev/tui/setup-flow.d.ts +3 -0
- package/dist/src/cli/dev/tui/setup-issues.d.ts +7 -0
- package/dist/src/cli/dev/tui/setup-issues.js +1 -1
- package/dist/src/cli/dev/tui/setup-panel.d.ts +25 -12
- package/dist/src/cli/dev/tui/setup-panel.js +3 -2
- package/dist/src/cli/dev/tui/target.d.ts +2 -0
- package/dist/src/cli/dev/tui/target.js +1 -1
- package/dist/src/cli/dev/tui/terminal-renderer.js +9 -9
- package/dist/src/cli/dev/tui/test/fake-setup-flow-renderer.js +1 -1
- package/dist/src/cli/dev/tui/tui.js +1 -1
- package/dist/src/cli/dev/tui/vercel-trusted-sources-policy.d.ts +22 -0
- package/dist/src/cli/dev/tui/vercel-trusted-sources-policy.js +1 -0
- package/dist/src/cli/dev/tui/vercel-trusted-sources.d.ts +48 -0
- package/dist/src/cli/dev/tui/vercel-trusted-sources.js +1 -0
- package/dist/src/client/agent-info-schema.d.ts +532 -0
- package/dist/src/client/agent-info-schema.js +1 -0
- package/dist/src/client/client.js +1 -1
- package/dist/src/client/types.d.ts +11 -169
- package/dist/src/client/types.js +1 -1
- package/dist/src/compiled/.vendor-stamp.json +4 -4
- package/dist/src/compiled/@chat-adapter/slack/_slack-web-api.d.ts +1 -0
- package/dist/src/compiled/@chat-adapter/slack/blocks.d.ts +160 -0
- package/dist/src/compiled/@chat-adapter/slack/blocks.js +8 -0
- package/dist/src/compiled/@chat-adapter/slack/index.d.ts +28 -3
- package/dist/src/compiled/@chat-adapter/slack/index.js +26 -26
- package/dist/src/compiled/_chunks/node/chunk-AYN7QRWH-Csu8sG38.js +1 -0
- package/dist/src/compiled/_chunks/node/{dist-BQYUcBqu.js → dist-W8yle6rh.js} +3 -3
- package/dist/src/compiled/chat/index.d.ts +4 -4
- package/dist/src/compiled/chat/index.js +1 -1
- package/dist/src/compiled/chat/{jsx-runtime-CFq1K_Ve.d.ts → jsx-runtime-CzthIo1o.d.ts} +6 -1
- package/dist/src/internal/application/package.js +1 -1
- package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.1/node_modules/@vercel/sdk/esm/lib/primitives.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.1/node_modules/@vercel/sdk/esm/lib/schemas.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.1/node_modules/@vercel/sdk/esm/models/aclaction.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.1/node_modules/@vercel/sdk/esm/models/sdkvalidationerror.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.1/node_modules/@vercel/sdk/esm/models/updateprojectprojectsaction.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.1/node_modules/@vercel/sdk/esm/models/updateprojectprojectsoptionsallowlist.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.1/node_modules/@vercel/sdk/esm/types/defaultToZeroValue.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.1/node_modules/@vercel/sdk/esm/types/fp.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.1/node_modules/@vercel/sdk/esm/types/primitives.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.1/node_modules/@vercel/sdk/esm/types/rfcdate.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.1/node_modules/@vercel/sdk/esm/types/smartUnion.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.1/node_modules/@vercel/sdk/esm/types/unrecognized.js +1 -0
- package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v3/ZodError.js +1 -0
- package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v3/errors.js +1 -0
- package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v3/external.js +1 -0
- package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v3/helpers/errorUtil.js +1 -0
- package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v3/helpers/parseUtil.js +1 -0
- package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v3/helpers/typeAliases.js +1 -0
- package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v3/helpers/util.js +1 -0
- package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v3/index.js +1 -0
- package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v3/locales/en.js +1 -0
- package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v3/types.js +1 -0
- package/dist/src/public/channels/slack/blocks.d.ts +3 -41
- package/dist/src/public/channels/slack/blocks.js +2 -3
- package/dist/src/public/channels/slack/defaults.js +3 -3
- package/dist/src/services/dev-client/client-options.js +1 -1
- package/dist/src/services/dev-client/credential-gate.d.ts +11 -6
- package/dist/src/services/dev-client/credential-gate.js +1 -1
- package/dist/src/services/dev-client/request-headers.d.ts +0 -12
- package/dist/src/services/dev-client/request-headers.js +1 -1
- package/dist/src/services/dev-client/vercel-auth-error.js +1 -1
- package/dist/src/setup/flows/model.d.ts +5 -5
- package/dist/src/setup/flows/model.js +1 -1
- package/dist/src/setup/flows/provider.d.ts +57 -0
- package/dist/src/setup/flows/provider.js +4 -0
- package/dist/src/setup/scaffold/create/project.js +1 -1
- package/dist/src/svelte/index.js +1 -1
- package/dist/src/svelte/use-eve-agent.js +1 -1
- package/dist/src/vue/index.js +1 -1
- package/dist/src/vue/use-eve-agent.js +1 -1
- package/docs/guides/client/overview.mdx +24 -0
- package/docs/guides/dev-tui.md +4 -4
- package/docs/guides/instrumentation.md +1 -1
- package/package.json +5 -4
- package/dist/src/chunks/use-eve-agent-DEm_Jg4k.js +0 -1343
- package/dist/src/chunks/use-eve-agent-DsXOQMFZ.js +0 -1313
- package/dist/src/setup/flows/vercel.d.ts +0 -37
- package/dist/src/setup/flows/vercel.js +0 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=/(?<![<\w])@([A-Z][A-Z0-9_]+)/g;function t(e){return e.replace(/</g,`<`).replace(/>/g,`>`).replace(/&/g,`&`)}function n(e){let n=e;return n=n.replace(/<@([A-Z0-9_]+)\|([^<>]+)>/g,`@$2`),n=n.replace(/<@([A-Z0-9_]+)>/g,`@$1`),n=n.replace(/<#[A-Z0-9_]+\|([^<>]+)>/g,`#$1`),n=n.replace(/<#([A-Z0-9_]+)>/g,`#$1`),n=n.replace(/<(https?:\/\/[^|<>]+)\|([^<>]+)>/g,`[$2]($1)`),n=n.replace(/<(https?:\/\/[^<>]+)>/g,`$1`),n=n.replace(/(?<![_*\\])\*([^*\n]+)\*(?![_*])/g,`**$1**`),n=n.replace(/(?<!~)~([^~\n]+)~(?!~)/g,`~~$1~~`),t(n)}function r(e){return e.replace(/\*\*(.+?)\*\*/g,`*$1*`)}function i(t){return t.replace(e,`<@$1>`)}export{r as n,n as r,i as t};
|
|
@@ -42,10 +42,10 @@ import{a as e,c as t,n,r,t as i}from"./dist-BdTs18CF.js";import a from"node:path
|
|
|
42
42
|
`)}extractPlainText(e){return W(this.toAst(e))}fromMarkdown(e){return this.fromAst(ns(e))}toMarkdown(e){return rs(this.toAst(e))}toPlainText(e){return this.extractPlainText(e)}renderPostable(e){if(typeof e==`string`)return e;if(`raw`in e)return e.raw;if(`markdown`in e)return this.fromMarkdown(e.markdown);if(`ast`in e)return this.fromAst(e.ast);if(`card`in e)return e.fallbackText||this.cardToFallbackText(e.card);if(`type`in e&&e.type===`card`)return this.cardToFallbackText(e);throw Error(`Invalid PostableMessage format`)}cardToFallbackText(e){let t=[];e.title&&t.push(`**${e.title}**`),e.subtitle&&t.push(e.subtitle);for(let n of e.children){let e=this.cardChildToFallbackText(n);e&&t.push(e)}return t.join(`
|
|
43
43
|
`)}cardChildToFallbackText(e){switch(e.type){case`text`:return e.content;case`fields`:return e.children.map(e=>`**${e.label}**: ${e.value}`).join(`
|
|
44
44
|
`);case`actions`:return null;case`table`:return $o(e.headers,e.rows);case`section`:return e.children.map(e=>this.cardChildToFallbackText(e)).filter(Boolean).join(`
|
|
45
|
-
`);default:return null}}};function ms(e){return typeof e==`object`&&!!e&&`type`in e&&e.type===`card`}function hs(e={}){return{type:`card`,title:e.title,subtitle:e.subtitle,imageUrl:e.imageUrl,children:e.children??[]}}function gs(e,t={}){return{type:`text`,content:e,style:t.style}}var _s=gs;function vs(e){return{type:`image`,url:e.url,alt:e.alt}}function ys(){return{type:`divider`}}function bs(e){return{type:`section`,children:e}}function xs(e){return{type:`actions`,children:e}}function Ss(e){return{type:`button`,id:e.id,label:e.label,style:e.style,value:e.value,disabled:e.disabled,actionType:e.actionType,callbackUrl:e.callbackUrl}}function Cs(e){return{type:`link-button`,url:e.url,label:e.label,style:e.style}}function ws(e){return{type:`field`,label:e.label,value:e.value}}function Ts(e){return{type:`fields`,children:e}}function Es(e){return{type:`table`,headers:e.headers,rows:e.rows,align:e.align}}function Ds(e){return{type:`link`,url:e.url,label:e.label}}function Os(e){if(typeof e!=`object`||!e)return!1;let t=e;if(typeof t.$$typeof!=`symbol`)return!1;let n=t.$$typeof.toString();return n.includes(`react.element`)||n.includes(`react.transitional.element`)}var ks=new Map([[hs,`Card`],[gs,`Text`],[vs,`Image`],[ys,`Divider`],[bs,`Section`],[xs,`Actions`],[Ss,`Button`],[Cs,`LinkButton`],[Ds,`CardLink`],[ws,`Field`],[Ts,`Fields`],[Es,`Table`]]);function As(e){if(!Os(e))return ms(e)||typeof e==`object`&&e&&`type`in e?e:null;let{type:t,props:n}=e,r=ks.get(t);if(!r){if(typeof t==`string`)throw Error(`HTML element <${t}> is not supported in card elements. Use Card, Text, Section, Actions, Button, Fields, Field, Image, or Divider components instead.`);return n.children?js(n.children)[0]??null:null}let i=n.children?js(n.children):[],a=e=>e.type!==`card`&&e.type!==`button`&&e.type!==`link-button`&&e.type!==`field`&&e.type!==`select`&&e.type!==`radio_select`;switch(r){case`Card`:return hs({title:n.title,subtitle:n.subtitle,imageUrl:n.imageUrl,children:i.filter(a)});case`Text`:return gs(Ms(n.children),{style:n.style});case`Image`:return vs({url:n.url,alt:n.alt});case`Divider`:return ys();case`Section`:return bs(i.filter(a));case`Actions`:return xs(i.filter(e=>e.type===`button`||e.type===`link-button`||e.type===`select`||e.type===`radio_select`));case`Button`:{let e=Ms(n.children);return Ss({id:n.id,label:n.label??e,style:n.style,value:n.value,actionType:n.actionType,disabled:n.disabled})}case`LinkButton`:{let e=Ms(n.children);return Cs({url:n.url,label:n.label??e,style:n.style})}case`CardLink`:{let e=Ms(n.children);return Ds({url:n.url,label:n.label??e})}case`Field`:return ws({label:n.label,value:n.value});case`Fields`:return Ts(i.filter(e=>e.type===`field`));case`Table`:return Es({headers:n.headers,rows:n.rows,align:n.align});default:return null}}function js(e){if(e==null)return[];if(Array.isArray(e))return e.flatMap(js);let t=As(e);return t&&typeof t==`object`&&`type`in t?t.type===`card`?t.children:[t]:[]}function Ms(e){return typeof e==`string`?e:typeof e==`number`?String(e):Array.isArray(e)?e.map(Ms).join(``):``}function Ns(e){let t=[];e.title&&t.push(`**${e.title}**`),e.subtitle&&t.push(e.subtitle);for(let n of e.children){let e=Ps(n);e&&t.push(e)}return t.join(`
|
|
45
|
+
`);default:return null}}};function ms(e){return typeof e==`object`&&!!e&&`type`in e&&e.type===`card`}function hs(e={}){return{type:`card`,title:e.title,subtitle:e.subtitle,imageUrl:e.imageUrl,children:e.children??[]}}function gs(e,t={}){return{type:`text`,content:e,style:t.style}}var _s=gs;function vs(e){return{type:`image`,url:e.url,alt:e.alt}}function ys(){return{type:`divider`}}function bs(e){return{type:`section`,children:e}}function xs(e){return{type:`actions`,children:e}}function Ss(e){return{type:`button`,id:e.id,label:e.label,style:e.style,value:e.value,disabled:e.disabled,actionType:e.actionType,callbackUrl:e.callbackUrl}}function Cs(e){return{type:`link-button`,id:e.id,url:e.url,label:e.label,style:e.style}}function ws(e){return{type:`field`,label:e.label,value:e.value}}function Ts(e){return{type:`fields`,children:e}}function Es(e){return{type:`table`,headers:e.headers,rows:e.rows,align:e.align}}function Ds(e){return{type:`link`,url:e.url,label:e.label}}function Os(e){if(typeof e!=`object`||!e)return!1;let t=e;if(typeof t.$$typeof!=`symbol`)return!1;let n=t.$$typeof.toString();return n.includes(`react.element`)||n.includes(`react.transitional.element`)}var ks=new Map([[hs,`Card`],[gs,`Text`],[vs,`Image`],[ys,`Divider`],[bs,`Section`],[xs,`Actions`],[Ss,`Button`],[Cs,`LinkButton`],[Ds,`CardLink`],[ws,`Field`],[Ts,`Fields`],[Es,`Table`]]);function As(e){if(!Os(e))return ms(e)||typeof e==`object`&&e&&`type`in e?e:null;let{type:t,props:n}=e,r=ks.get(t);if(!r){if(typeof t==`string`)throw Error(`HTML element <${t}> is not supported in card elements. Use Card, Text, Section, Actions, Button, Fields, Field, Image, or Divider components instead.`);return n.children?js(n.children)[0]??null:null}let i=n.children?js(n.children):[],a=e=>e.type!==`card`&&e.type!==`button`&&e.type!==`link-button`&&e.type!==`field`&&e.type!==`select`&&e.type!==`radio_select`;switch(r){case`Card`:return hs({title:n.title,subtitle:n.subtitle,imageUrl:n.imageUrl,children:i.filter(a)});case`Text`:return gs(Ms(n.children),{style:n.style});case`Image`:return vs({url:n.url,alt:n.alt});case`Divider`:return ys();case`Section`:return bs(i.filter(a));case`Actions`:return xs(i.filter(e=>e.type===`button`||e.type===`link-button`||e.type===`select`||e.type===`radio_select`));case`Button`:{let e=Ms(n.children);return Ss({id:n.id,label:n.label??e,style:n.style,value:n.value,actionType:n.actionType,disabled:n.disabled})}case`LinkButton`:{let e=Ms(n.children);return Cs({url:n.url,label:n.label??e,style:n.style})}case`CardLink`:{let e=Ms(n.children);return Ds({url:n.url,label:n.label??e})}case`Field`:return ws({label:n.label,value:n.value});case`Fields`:return Ts(i.filter(e=>e.type===`field`));case`Table`:return Es({headers:n.headers,rows:n.rows,align:n.align});default:return null}}function js(e){if(e==null)return[];if(Array.isArray(e))return e.flatMap(js);let t=As(e);return t&&typeof t==`object`&&`type`in t?t.type===`card`?t.children:[t]:[]}function Ms(e){return typeof e==`string`?e:typeof e==`number`?String(e):Array.isArray(e)?e.map(Ms).join(``):``}function Ns(e){let t=[];e.title&&t.push(`**${e.title}**`),e.subtitle&&t.push(e.subtitle);for(let n of e.children){let e=Ps(n);e&&t.push(e)}return t.join(`
|
|
46
46
|
`)}function Ps(e){switch(e.type){case`text`:return e.content;case`link`:return`${e.label} (${e.url})`;case`fields`:return e.children.map(e=>`${e.label}: ${e.value}`).join(`
|
|
47
47
|
`);case`actions`:return null;case`table`:return $o(e.headers,e.rows);case`section`:return e.children.map(e=>Ps(e)).filter(Boolean).join(`
|
|
48
|
-
`);default:return null}}var Fs=[`text_input`,`select`,`external_select`,`radio_select`,`text`,`fields`];function Is(e){return typeof e==`object`&&!!e&&`type`in e&&e.type===`modal`}function Ls(e){let t=e.filter(e=>typeof e==`object`&&!!e&&`type`in e&&Fs.includes(e.type));return t.length<e.length&&console.warn(`[chat] Modal contains unsupported child elements that were ignored`),t}function Rs(e){return{type:`modal`,callbackId:e.callbackId,callbackUrl:e.callbackUrl,title:e.title,submitLabel:e.submitLabel,closeLabel:e.closeLabel,notifyOnClose:e.notifyOnClose,privateMetadata:e.privateMetadata,children:e.children??[]}}function zs(e){return{type:`text_input`,id:e.id,label:e.label,placeholder:e.placeholder,initialValue:e.initialValue,multiline:e.multiline,optional:e.optional,maxLength:e.maxLength}}function Bs(e){if(!e.options||e.options.length===0)throw Error(`Select requires at least one option`);return{type:`select`,id:e.id,label:e.label,placeholder:e.placeholder,options:e.options,initialOption:e.initialOption,optional:e.optional}}function Vs(e){return{type:`external_select`,id:e.id,initialOption:e.initialOption,label:e.label,placeholder:e.placeholder,minQueryLength:e.minQueryLength,optional:e.optional}}function Hs(e){return{label:e.label,value:e.value,description:e.description}}function Us(e){if(!e.options||e.options.length===0)throw Error(`RadioSelect requires at least one option`);return{type:`radio_select`,id:e.id,label:e.label,options:e.options,initialOption:e.initialOption,optional:e.optional}}function Ws(e){if(typeof e!=`object`||!e)return!1;let t=e;if(typeof t.$$typeof!=`symbol`)return!1;let n=t.$$typeof.toString();return n.includes(`react.element`)||n.includes(`react.transitional.element`)}var Gs=new Map([[Rs,`Modal`],[zs,`TextInput`],[Bs,`Select`],[Vs,`ExternalSelect`],[Us,`RadioSelect`],[Hs,`SelectOption`]]);function Ks(e){if(!Ws(e))return Is(e)||typeof e==`object`&&e&&`type`in e?e:null;let{type:t,props:n}=e,r=Gs.get(t);if(!r)return n.children?qs(n.children)[0]??null:null;let i=n.children?qs(n.children):[];switch(r){case`Modal`:return Rs({callbackId:n.callbackId,title:n.title,submitLabel:n.submitLabel,closeLabel:n.closeLabel,notifyOnClose:n.notifyOnClose,privateMetadata:n.privateMetadata,children:Ls(i)});case`TextInput`:return zs({id:n.id,label:n.label,placeholder:n.placeholder,initialValue:n.initialValue,multiline:n.multiline,optional:n.optional,maxLength:n.maxLength});case`Select`:return Bs({id:n.id,label:n.label,placeholder:n.placeholder,options:i.filter(e=>e!==null&&`label`in e&&`value`in e&&!(`type`in e)),initialOption:n.initialOption,optional:n.optional});case`ExternalSelect`:return Vs({id:n.id,initialOption:n.initialOption,label:n.label,placeholder:n.placeholder,minQueryLength:n.minQueryLength,optional:n.optional});case`RadioSelect`:return Us({id:n.id,label:n.label,options:i.filter(e=>e!==null&&`label`in e&&`value`in e&&!(`type`in e)),initialOption:n.initialOption,optional:n.optional});case`SelectOption`:return Hs({label:n.label,value:n.value,description:n.description});default:return null}}function qs(e){if(e==null)return[];if(Array.isArray(e))return e.flatMap(qs);let t=Ks(e);return t?Is(t)?t.children:[t]:[]}var Js=Symbol.for(`chat.jsx.element`);function Ys(e){return typeof e==`object`&&!!e&&e.$$typeof===Js}function Xs(e){if(e==null)return[];if(Array.isArray(e))return e.flatMap(Xs);if(Ys(e)){let t=lc(e);return t?[t]:[]}return typeof e==`object`&&`type`in e?[e]:typeof e==`string`||typeof e==`number`?[String(e)]:[]}function Zs(e){return!(`id`in e||`url`in e||`label`in e)}function Qs(e){return`id`in e&&typeof e.id==`string`&&!(`url`in e)}function $s(e){return`url`in e&&typeof e.url==`string`&&!(`id`in e)}function ec(e){return`url`in e&&typeof e.url==`string`&&!(`id`in e)&&!(`alt`in e)&&!(`style`in e)}function tc(e){return`url`in e&&typeof e.url==`string`}function nc(e){return`label`in e&&`value`in e&&typeof e.label==`string`&&typeof e.value==`string`}function rc(e){return!(`id`in e||`url`in e||`callbackId`in e)&&(`title`in e||`subtitle`in e||`imageUrl`in e)}function ic(e){return`callbackId`in e&&`title`in e}function ac(e){return`id`in e&&`label`in e&&!(`options`in e)&&!(`value`in e)}function oc(e){return`id`in e&&`label`in e&&!(`value`in e)}function sc(e){return`id`in e&&`label`in e&&!(`value`in e)&&!(`children`in e)}function cc(e){return`label`in e&&`value`in e&&!(`id`in e)}function lc(e){let{type:t,props:n,children:r}=e,i=Xs(r);if(t===gs){let e=Zs(n)?n:{style:void 0};return gs(i.length>0?i.map(String).join(``):String(e.children??``),{style:e.style})}if(t===bs)return bs(i);if(t===xs)return xs(i);if(t===Ts)return Ts(i);if(t===Ss){if(!Qs(n))throw Error(`Button requires an 'id' prop`);let e=i.length>0?i.map(String).join(``):n.label??``;return Ss({id:n.id,label:e,style:n.style,value:n.value,actionType:n.actionType,callbackUrl:n.callbackUrl,disabled:n.disabled})}if(t===Cs){if(!$s(n))throw Error(`LinkButton requires a 'url' prop`);let e=i.length>0?i.map(String).join(``):n.label??``;return Cs({url:n.url,label:e,style:n.style})}if(t===Ds){if(!ec(n))throw Error(`CardLink requires a 'url' prop`);let e=i.length>0?i.map(String).join(``):n.label??``;return Ds({url:n.url,label:e})}if(t===vs){if(!tc(n))throw Error(`Image requires a 'url' prop`);return vs({url:n.url,alt:n.alt})}if(t===ws){if(!nc(n))throw Error(`Field requires 'label' and 'value' props`);return ws({label:n.label,value:n.value})}if(t===ys)return ys();if(t===Rs){if(!ic(n))throw Error(`Modal requires 'callbackId' and 'title' props`);return Rs({callbackId:n.callbackId,callbackUrl:n.callbackUrl,title:n.title,submitLabel:n.submitLabel,closeLabel:n.closeLabel,notifyOnClose:n.notifyOnClose,privateMetadata:n.privateMetadata,children:Ls(i)})}if(t===zs){if(!ac(n))throw Error(`TextInput requires 'id' and 'label' props`);return zs({id:n.id,label:n.label,placeholder:n.placeholder,initialValue:n.initialValue,multiline:n.multiline,optional:n.optional,maxLength:n.maxLength})}if(t===Bs){if(!oc(n))throw Error(`Select requires 'id' and 'label' props`);return Bs({id:n.id,label:n.label,placeholder:n.placeholder,initialOption:n.initialOption,optional:n.optional,options:i})}if(t===Vs){if(!sc(n))throw Error(`ExternalSelect requires 'id' and 'label' props`);return Vs({id:n.id,initialOption:n.initialOption,label:n.label,placeholder:n.placeholder,minQueryLength:n.minQueryLength,optional:n.optional})}if(t===Us){if(!oc(n))throw Error(`RadioSelect requires 'id' and 'label' props`);return Us({id:n.id,label:n.label,initialOption:n.initialOption,optional:n.optional,options:i})}if(t===Hs){if(!cc(n))throw Error(`SelectOption requires 'label' and 'value' props`);return Hs({label:n.label,value:n.value,description:n.description})}if(t===Es){let e=n;return Es({headers:e.headers,rows:e.rows})}let a=rc(n)?n:{};return hs({title:a.title,subtitle:a.subtitle,imageUrl:a.imageUrl,children:i})}function J(e){if(Ys(e)){let t=lc(e);if(t&&typeof t==`object`&&`type`in t&&t.type===`card`)return t}return typeof e==`object`&&e&&`type`in e&&e.type===`card`?e:null}function uc(e){if(Ys(e)){let t=lc(e);if(t&&typeof t==`object`&&`type`in t&&t.type===`modal`)return t}return Is(e)?e:null}function Y(e){if(Ys(e))return!0;if(typeof e==`object`&&e&&`$$typeof`in e&&typeof e.$$typeof==`symbol`){let t=e.$$typeof.toString();return t.includes(`react.element`)||t.includes(`react.transitional.element`)}return!1}var dc=[`text/`,`application/json`,`application/xml`,`application/javascript`,`application/typescript`,`application/yaml`,`application/x-yaml`,`application/toml`];function fc(e){return dc.some(t=>e===t||e.startsWith(t))}async function pc(e){if(e.type===`image`){if(e.fetchData)try{let t=await e.fetchData(),n=e.mimeType??`image/png`;return{type:`file`,data:`data:${n};base64,${t.toString(`base64`)}`,mediaType:n,filename:e.name}}catch(e){return console.error(`toAiMessages: failed to fetch image data`,e),null}return null}if(e.type===`file`&&e.mimeType&&fc(e.mimeType)){if(e.fetchData)try{let t=await e.fetchData();return{type:`file`,data:`data:${e.mimeType};base64,${t.toString(`base64`)}`,filename:e.name,mediaType:e.mimeType}}catch(e){return console.error(`toAiMessages: failed to fetch file data`,e),null}return null}return null}async function mc(e,t){let n=t?.includeNames??!1,r=t?.transformMessage,i=t?.onUnsupportedAttachment??(e=>{console.warn(`toAiMessages: unsupported attachment type "${e.type}"${e.name?` (${e.name})`:``} \u2014 skipped`)}),a=[...e].sort((e,t)=>(e.metadata.dateSent?.getTime()??0)-(t.metadata.dateSent?.getTime()??0)).filter(e=>e.text.trim());return(await Promise.all(a.map(async e=>{let t=e.author.isMe?`assistant`:`user`,a=n&&t===`user`?`[${e.author.userName}]: ${e.text}`:e.text;if(e.links&&e.links.length>0){let t=e.links.map(e=>{let t=e.fetchMessage?[`[Embedded message: ${e.url}]`]:[e.url];return e.title&&t.push(`Title: ${e.title}`),e.description&&t.push(`Description: ${e.description}`),e.siteName&&t.push(`Site: ${e.siteName}`),t.join(`
|
|
48
|
+
`);default:return null}}var Fs=[`text_input`,`select`,`external_select`,`radio_select`,`text`,`fields`];function Is(e){return typeof e==`object`&&!!e&&`type`in e&&e.type===`modal`}function Ls(e){let t=e.filter(e=>typeof e==`object`&&!!e&&`type`in e&&Fs.includes(e.type));return t.length<e.length&&console.warn(`[chat] Modal contains unsupported child elements that were ignored`),t}function Rs(e){return{type:`modal`,callbackId:e.callbackId,callbackUrl:e.callbackUrl,title:e.title,submitLabel:e.submitLabel,closeLabel:e.closeLabel,notifyOnClose:e.notifyOnClose,privateMetadata:e.privateMetadata,children:e.children??[]}}function zs(e){return{type:`text_input`,id:e.id,label:e.label,placeholder:e.placeholder,initialValue:e.initialValue,multiline:e.multiline,optional:e.optional,maxLength:e.maxLength}}function Bs(e){if(!e.options||e.options.length===0)throw Error(`Select requires at least one option`);return{type:`select`,id:e.id,label:e.label,placeholder:e.placeholder,options:e.options,initialOption:e.initialOption,optional:e.optional}}function Vs(e){return{type:`external_select`,id:e.id,initialOption:e.initialOption,label:e.label,placeholder:e.placeholder,minQueryLength:e.minQueryLength,optional:e.optional}}function Hs(e){return{label:e.label,value:e.value,description:e.description}}function Us(e){if(!e.options||e.options.length===0)throw Error(`RadioSelect requires at least one option`);return{type:`radio_select`,id:e.id,label:e.label,options:e.options,initialOption:e.initialOption,optional:e.optional}}function Ws(e){if(typeof e!=`object`||!e)return!1;let t=e;if(typeof t.$$typeof!=`symbol`)return!1;let n=t.$$typeof.toString();return n.includes(`react.element`)||n.includes(`react.transitional.element`)}var Gs=new Map([[Rs,`Modal`],[zs,`TextInput`],[Bs,`Select`],[Vs,`ExternalSelect`],[Us,`RadioSelect`],[Hs,`SelectOption`]]);function Ks(e){if(!Ws(e))return Is(e)||typeof e==`object`&&e&&`type`in e?e:null;let{type:t,props:n}=e,r=Gs.get(t);if(!r)return n.children?qs(n.children)[0]??null:null;let i=n.children?qs(n.children):[];switch(r){case`Modal`:return Rs({callbackId:n.callbackId,title:n.title,submitLabel:n.submitLabel,closeLabel:n.closeLabel,notifyOnClose:n.notifyOnClose,privateMetadata:n.privateMetadata,children:Ls(i)});case`TextInput`:return zs({id:n.id,label:n.label,placeholder:n.placeholder,initialValue:n.initialValue,multiline:n.multiline,optional:n.optional,maxLength:n.maxLength});case`Select`:return Bs({id:n.id,label:n.label,placeholder:n.placeholder,options:i.filter(e=>e!==null&&`label`in e&&`value`in e&&!(`type`in e)),initialOption:n.initialOption,optional:n.optional});case`ExternalSelect`:return Vs({id:n.id,initialOption:n.initialOption,label:n.label,placeholder:n.placeholder,minQueryLength:n.minQueryLength,optional:n.optional});case`RadioSelect`:return Us({id:n.id,label:n.label,options:i.filter(e=>e!==null&&`label`in e&&`value`in e&&!(`type`in e)),initialOption:n.initialOption,optional:n.optional});case`SelectOption`:return Hs({label:n.label,value:n.value,description:n.description});default:return null}}function qs(e){if(e==null)return[];if(Array.isArray(e))return e.flatMap(qs);let t=Ks(e);return t?Is(t)?t.children:[t]:[]}var Js=Symbol.for(`chat.jsx.element`);function Ys(e){return typeof e==`object`&&!!e&&e.$$typeof===Js}function Xs(e){if(e==null)return[];if(Array.isArray(e))return e.flatMap(Xs);if(Ys(e)){let t=lc(e);return t?[t]:[]}return typeof e==`object`&&`type`in e?[e]:typeof e==`string`||typeof e==`number`?[String(e)]:[]}function Zs(e){return!(`id`in e||`url`in e||`label`in e)}function Qs(e){return`id`in e&&typeof e.id==`string`&&!(`url`in e)}function $s(e){return`url`in e&&typeof e.url==`string`&&!(`id`in e)}function ec(e){return`url`in e&&typeof e.url==`string`&&!(`id`in e)&&!(`alt`in e)&&!(`style`in e)}function tc(e){return`url`in e&&typeof e.url==`string`}function nc(e){return`label`in e&&`value`in e&&typeof e.label==`string`&&typeof e.value==`string`}function rc(e){return!(`id`in e||`url`in e||`callbackId`in e)&&(`title`in e||`subtitle`in e||`imageUrl`in e)}function ic(e){return`callbackId`in e&&`title`in e}function ac(e){return`id`in e&&`label`in e&&!(`options`in e)&&!(`value`in e)}function oc(e){return`id`in e&&`label`in e&&!(`value`in e)}function sc(e){return`id`in e&&`label`in e&&!(`value`in e)&&!(`children`in e)}function cc(e){return`label`in e&&`value`in e&&!(`id`in e)}function lc(e){let{type:t,props:n,children:r}=e,i=Xs(r);if(t===gs){let e=Zs(n)?n:{style:void 0};return gs(i.length>0?i.map(String).join(``):String(e.children??``),{style:e.style})}if(t===bs)return bs(i);if(t===xs)return xs(i);if(t===Ts)return Ts(i);if(t===Ss){if(!Qs(n))throw Error(`Button requires an 'id' prop`);let e=i.length>0?i.map(String).join(``):n.label??``;return Ss({id:n.id,label:e,style:n.style,value:n.value,actionType:n.actionType,callbackUrl:n.callbackUrl,disabled:n.disabled})}if(t===Cs){if(!$s(n))throw Error(`LinkButton requires a 'url' prop`);let e=i.length>0?i.map(String).join(``):n.label??``;return Cs({id:n.id,url:n.url,label:e,style:n.style})}if(t===Ds){if(!ec(n))throw Error(`CardLink requires a 'url' prop`);let e=i.length>0?i.map(String).join(``):n.label??``;return Ds({url:n.url,label:e})}if(t===vs){if(!tc(n))throw Error(`Image requires a 'url' prop`);return vs({url:n.url,alt:n.alt})}if(t===ws){if(!nc(n))throw Error(`Field requires 'label' and 'value' props`);return ws({label:n.label,value:n.value})}if(t===ys)return ys();if(t===Rs){if(!ic(n))throw Error(`Modal requires 'callbackId' and 'title' props`);return Rs({callbackId:n.callbackId,callbackUrl:n.callbackUrl,title:n.title,submitLabel:n.submitLabel,closeLabel:n.closeLabel,notifyOnClose:n.notifyOnClose,privateMetadata:n.privateMetadata,children:Ls(i)})}if(t===zs){if(!ac(n))throw Error(`TextInput requires 'id' and 'label' props`);return zs({id:n.id,label:n.label,placeholder:n.placeholder,initialValue:n.initialValue,multiline:n.multiline,optional:n.optional,maxLength:n.maxLength})}if(t===Bs){if(!oc(n))throw Error(`Select requires 'id' and 'label' props`);return Bs({id:n.id,label:n.label,placeholder:n.placeholder,initialOption:n.initialOption,optional:n.optional,options:i})}if(t===Vs){if(!sc(n))throw Error(`ExternalSelect requires 'id' and 'label' props`);return Vs({id:n.id,initialOption:n.initialOption,label:n.label,placeholder:n.placeholder,minQueryLength:n.minQueryLength,optional:n.optional})}if(t===Us){if(!oc(n))throw Error(`RadioSelect requires 'id' and 'label' props`);return Us({id:n.id,label:n.label,initialOption:n.initialOption,optional:n.optional,options:i})}if(t===Hs){if(!cc(n))throw Error(`SelectOption requires 'label' and 'value' props`);return Hs({label:n.label,value:n.value,description:n.description})}if(t===Es){let e=n;return Es({headers:e.headers,rows:e.rows})}let a=rc(n)?n:{};return hs({title:a.title,subtitle:a.subtitle,imageUrl:a.imageUrl,children:i})}function J(e){if(Ys(e)){let t=lc(e);if(t&&typeof t==`object`&&`type`in t&&t.type===`card`)return t}return typeof e==`object`&&e&&`type`in e&&e.type===`card`?e:null}function uc(e){if(Ys(e)){let t=lc(e);if(t&&typeof t==`object`&&`type`in t&&t.type===`modal`)return t}return Is(e)?e:null}function Y(e){if(Ys(e))return!0;if(typeof e==`object`&&e&&`$$typeof`in e&&typeof e.$$typeof==`symbol`){let t=e.$$typeof.toString();return t.includes(`react.element`)||t.includes(`react.transitional.element`)}return!1}var dc=[`text/`,`application/json`,`application/xml`,`application/javascript`,`application/typescript`,`application/yaml`,`application/x-yaml`,`application/toml`];function fc(e){return dc.some(t=>e===t||e.startsWith(t))}async function pc(e){if(e.type===`image`){if(e.fetchData)try{let t=await e.fetchData(),n=e.mimeType??`image/png`;return{type:`file`,data:`data:${n};base64,${t.toString(`base64`)}`,mediaType:n,filename:e.name}}catch(e){return console.error(`toAiMessages: failed to fetch image data`,e),null}return null}if(e.type===`file`&&e.mimeType&&fc(e.mimeType)){if(e.fetchData)try{let t=await e.fetchData();return{type:`file`,data:`data:${e.mimeType};base64,${t.toString(`base64`)}`,filename:e.name,mediaType:e.mimeType}}catch(e){return console.error(`toAiMessages: failed to fetch file data`,e),null}return null}return null}async function mc(e,t){let n=t?.includeNames??!1,r=t?.transformMessage,i=t?.onUnsupportedAttachment??(e=>{console.warn(`toAiMessages: unsupported attachment type "${e.type}"${e.name?` (${e.name})`:``} \u2014 skipped`)}),a=[...e].sort((e,t)=>(e.metadata.dateSent?.getTime()??0)-(t.metadata.dateSent?.getTime()??0)).filter(e=>e.text.trim());return(await Promise.all(a.map(async e=>{let t=e.author.isMe?`assistant`:`user`,a=n&&t===`user`?`[${e.author.userName}]: ${e.text}`:e.text;if(e.links&&e.links.length>0){let t=e.links.map(e=>{let t=e.fetchMessage?[`[Embedded message: ${e.url}]`]:[e.url];return e.title&&t.push(`Title: ${e.title}`),e.description&&t.push(`Description: ${e.description}`),e.siteName&&t.push(`Site: ${e.siteName}`),t.join(`
|
|
49
49
|
`)}).join(`
|
|
50
50
|
|
|
51
51
|
`);a+=`
|
|
@@ -86,5 +86,5 @@ $$`:`${e}$$`},Dl=e=>wl(e)%2==0?e:El(e),Ol=e=>Tl(e)%2==1?`${e}$`:e,kl=(e,t,n)=>{i
|
|
|
86
86
|
`),r=e.split(`
|
|
87
87
|
`);n&&r.length>0&&r.at(-1)===``&&r.pop();let i=[],a=!1,o=!1;for(let e=0;e<r.length;e++){let t=r[e].trim();if(!a&&(t.startsWith("```")||t.startsWith(`~~~`))){o=!o,i.push(r[e]);continue}if(o){i.push(r[e]);continue}let n=t!==``&&(Au.test(t)||ju.test(t));if(n&&!a){let t=!1;for(let n=e;n<r.length;n++){let e=r[n].trim();if(ju.test(e)){t=!0;break}if(e===``||!Au.test(e))break}t&&(i.push("```"),a=!0)}else !n&&a&&(i.push("```"),a=!1);i.push(r[e])}a&&t&&i.push("```");let s=i.join(`
|
|
88
88
|
`);return n&&(s+=`
|
|
89
|
-
`),s}function Fu(e){return`adapterName`in e&&!(`adapter`in e)}var Iu=`thread-state:`;function Lu(e){return typeof e==`object`&&!!e&&Symbol.asyncIterator in e}var Ru=class e{id;channelId;isDM;channelVisibility;_adapter;_adapterName;_stateAdapterInstance;_recentMessages=[];_isSubscribedContext;_currentMessage;_streamingUpdateIntervalMs;_fallbackStreamingPlaceholderText;_channel;_threadHistory;_logger;constructor(e){this.id=e.id,this.channelId=e.channelId,this.isDM=e.isDM??!1,this.channelVisibility=e.channelVisibility??`unknown`,this._isSubscribedContext=e.isSubscribedContext??!1,this._currentMessage=e.currentMessage,this._logger=e.logger,this._streamingUpdateIntervalMs=e.streamingUpdateIntervalMs??500,this._fallbackStreamingPlaceholderText=e.fallbackStreamingPlaceholderText===void 0?`...`:e.fallbackStreamingPlaceholderText,Fu(e)?this._adapterName=e.adapterName:(this._adapter=e.adapter,this._stateAdapterInstance=e.stateAdapter,this._threadHistory=e.threadHistory),e.initialMessage&&(this._recentMessages=[e.initialMessage])}get adapter(){if(this._adapter)return this._adapter;if(!this._adapterName)throw Error(`Thread has no adapter configured`);let e=ou().getAdapter(this._adapterName);if(!e)throw Error(`Adapter "${this._adapterName}" not found in Chat singleton`);return this._adapter=e,e}get _stateAdapter(){if(this._stateAdapterInstance)return this._stateAdapterInstance;let e=ou();return this._stateAdapterInstance=e.getState(),this._stateAdapterInstance}get recentMessages(){return this._recentMessages}set recentMessages(e){this._recentMessages=e}get state(){return this._stateAdapter.get(`${Iu}${this.id}`)}async setState(e,t){let n=`${Iu}${this.id}`;if(t?.replace)await this._stateAdapter.set(n,e,yu);else{let t={...await this._stateAdapter.get(n),...e};await this._stateAdapter.set(n,t,yu)}}get channel(){if(!this._channel){let e=wu(this.adapter,this.id);this._channel=new Cu({id:e,adapter:this.adapter,stateAdapter:this._stateAdapter,isDM:this.isDM,channelVisibility:this.channelVisibility,threadHistory:this._threadHistory})}return this._channel}get messages(){let e=this.adapter,t=this.id,n=this._threadHistory;return{async*[Symbol.asyncIterator](){let r,i=!1;for(;;){let n=await e.fetchMessages(t,{cursor:r,direction:`backward`}),a=[...n.messages].reverse();for(let e of a)i=!0,yield e;if(!n.nextCursor||n.messages.length===0)break;r=n.nextCursor}if(!i&&n){let e=await n.getMessages(t);for(let t=e.length-1;t>=0;t--)yield e[t]}}}}get allMessages(){let e=this.adapter,t=this.id,n=this._threadHistory;return{async*[Symbol.asyncIterator](){let r,i=!1;for(;;){let n=await e.fetchMessages(t,{limit:100,cursor:r,direction:`forward`});for(let e of n.messages)i=!0,yield e;if(!n.nextCursor||n.messages.length===0)break;r=n.nextCursor}if(!i&&n){let e=await n.getMessages(t);for(let t of e)yield t}}}}async getParticipants(){let e=new Map;this._currentMessage&&!this._currentMessage.author.isMe&&!this._currentMessage.author.isBot&&e.set(this._currentMessage.author.userId,this._currentMessage.author);for await(let t of this.allMessages)t.author.isMe||t.author.isBot||e.has(t.author.userId)||e.set(t.author.userId,t.author);return[...e.values()]}async isSubscribed(){return this._isSubscribedContext?!0:this._stateAdapter.isSubscribed(this.id)}async subscribe(){await this._stateAdapter.subscribe(this.id),this.adapter.onThreadSubscribe&&await this.adapter.onThreadSubscribe(this.id)}async unsubscribe(){await this._stateAdapter.unsubscribe(this.id)}async post(e){if(pu(e)){if(e.kind===`stream`){let t=e.getPostData(),n={...t.options.updateIntervalMs?{updateIntervalMs:t.options.updateIntervalMs}:{},...t.options.groupTasks?{taskDisplayMode:t.options.groupTasks}:{},...t.options.endWith?{stopBlocks:t.options.endWith}:{}};return await this.handleStream(t.stream,n),e}return await this.handlePostableObject(e),e}if(Lu(e))return this.handleStream(e);let t=e;if(Y(e)){let n=J(e);if(!n)throw Error(`Invalid JSX element: must be a Card element`);t=n}t=await this.processCallbackUrls(t);let n=await this.adapter.postMessage(this.id,t),r=this.createSentMessage(n.id,t,n.threadId);return this._threadHistory&&await this._threadHistory.append(this.id,new Q(r)),r}async handlePostableObject(e){await mu(e,this.adapter,this.id,(e,t)=>this.adapter.postMessage(e,t),this._logger)}async postEphemeral(e,t,n){let{fallbackToDM:r}=n,i=typeof e==`string`?e:e.userId,a;if(Y(t)){let e=J(t);if(!e)throw Error(`Invalid JSX element: must be a Card element`);a=e}else a=t;if(a=await this.processCallbackUrls(a),this.adapter.postEphemeral)return this.adapter.postEphemeral(this.id,i,a);if(!r)return null;if(this.adapter.openDM){let e=await this.adapter.openDM(i),t=await this.adapter.postMessage(e,a);return{id:t.id,threadId:e,usedFallback:!0,raw:t.raw}}return null}async processCallbackUrls(e){if(typeof e==`string`)return e;if(`type`in e&&e.type===`card`)return tu(e,this._stateAdapter);if(`card`in e&&e.card?.type===`card`){let t=await tu(e.card,this._stateAdapter);if(t!==e.card)return{...e,card:t}}return e}async schedule(e,t){let n;if(Y(e)){let t=J(e);if(!t)throw Error(`Invalid JSX element: must be a Card element`);n=t}else n=e;if(n=await this.processCallbackUrls(n),!this.adapter.scheduleMessage)throw new _u(`Scheduled messages are not supported by this adapter`,`scheduling`);return this.adapter.scheduleMessage(this.id,n,t)}async handleStream(e,t){let n=lu(e),r={...t};if(this._currentMessage&&(r.recipientUserId=this._currentMessage.author.userId,r.recipientTeamId=this.extractSlackRecipientTeamId(this._currentMessage.raw)),this.adapter.stream){let e=``,t={[Symbol.asyncIterator]:()=>{let t=n[Symbol.asyncIterator]();return{async next(){let n=await t.next();if(!n.done){let t=n.value;typeof t==`string`?e+=t:t.type===`markdown_text`&&(e+=t.text)}return n}}}},i=await this.adapter.stream(this.id,t,r),a=this.createSentMessage(i.id,{markdown:e},i.threadId);return this._threadHistory&&await this._threadHistory.append(this.id,new Q(a)),a}let i={[Symbol.asyncIterator]:()=>{let e=n[Symbol.asyncIterator]();return{async next(){for(;;){let t=await e.next();if(t.done)return{value:void 0,done:!0};let n=t.value;if(typeof n==`string`)return{value:n,done:!1};if(n.type===`markdown_text`)return{value:n.text,done:!1}}}}}};return this.fallbackStream(i,r)}extractSlackRecipientTeamId(e){if(!e||typeof e!=`object`)return;let t=e;if(typeof t.team_id==`string`&&t.team_id)return t.team_id;if(typeof t.team==`string`&&t.team)return t.team;if(t.team&&typeof t.team==`object`&&typeof t.team.id==`string`&&t.team.id)return t.team.id;if(typeof t.user?.team_id==`string`&&t.user.team_id)return t.user.team_id}async startTyping(e){await this.adapter.startTyping(this.id,e)}async fallbackStream(e,t){let n=t?.updateIntervalMs??this._streamingUpdateIntervalMs,r=this._fallbackStreamingPlaceholderText,i=r===null?null:await this.adapter.postMessage(this.id,r),a=this.id,o=new Eu,s=``,c=!1,l=null,u=null;i&&(a=i.threadId||this.id,s=r??``);let d=()=>{u=setTimeout(()=>{l=f()},n)},f=async()=>{if(c||!i)return;let e=o.render();if(e.trim()&&e!==s)try{await this.adapter.editMessage(a,i.id,{markdown:e}),s=e}catch(e){this._logger?.warn(`fallbackStream edit failed`,e)}c||d()};i&&d();try{for await(let t of e)if(o.push(t),!i){let e=o.render();e.trim()&&(i=await this.adapter.postMessage(this.id,{markdown:e}),a=i.threadId||this.id,s=e,d())}}finally{c=!0,u&&=(clearTimeout(u),null)}l&&await l;let p=o.getText(),m=o.finish();i||(i=await this.adapter.postMessage(this.id,{markdown:p.trim()?p:` `}),a=i.threadId||this.id,s=p),m.trim()&&m!==s&&await this.adapter.editMessage(a,i.id,{markdown:p});let h=this.createSentMessage(i.id,{markdown:p},a);return this._threadHistory&&await this._threadHistory.append(this.id,new Q(h)),h}async refresh(){let e=await this.adapter.fetchMessages(this.id,{limit:50});e.messages.length>0?this._recentMessages=e.messages:this._threadHistory?this._recentMessages=await this._threadHistory.getMessages(this.id,50):this._recentMessages=[]}mentionUser(e){return`<@${e}>`}toJSON(){return{_type:`chat:Thread`,id:this.id,channelId:this.channelId,channelVisibility:this.channelVisibility,currentMessage:this._currentMessage?.toJSON(),isDM:this.isDM,adapterName:this._adapterName??this.adapter.name}}static fromJSON(t,n){let r=new e({id:t.id,adapterName:t.adapterName,channelId:t.channelId,channelVisibility:t.channelVisibility,currentMessage:t.currentMessage?Q.fromJSON(t.currentMessage):void 0,isDM:t.isDM});return n&&(r._adapter=n),r}static[n](e){return e.toJSON()}static[i](t){return e.fromJSON(t)}createSentMessage(e,t,n){let r=this.adapter,i=n||this.id,a=this,{plainText:o,formatted:s,attachments:c}=zu(t);return{id:e,threadId:i,text:o,formatted:s,raw:null,links:[],author:{userId:`self`,userName:r.userName,fullName:r.userName,isBot:!0,isMe:!0},metadata:{dateSent:new Date,edited:!1},attachments:c,toJSON(){return new Q(this).toJSON()},async edit(t){let n=t;if(Y(t)){let e=J(t);if(!e)throw Error(`Invalid JSX element: must be a Card element`);n=e}return n=await a.processCallbackUrls(n),await r.editMessage(i,e,n),a.createSentMessage(e,n)},async delete(){await r.deleteMessage(i,e)},async addReaction(t){await r.addReaction(i,e,t)},async removeReaction(t){await r.removeReaction(i,e,t)}}}createSentMessageFromMessage(e){let t=this.adapter,n=this.id,r=e.id,i=this;return{id:e.id,threadId:e.threadId,text:e.text,formatted:e.formatted,raw:e.raw,author:e.author,metadata:e.metadata,attachments:e.attachments,links:e.links,isMention:e.isMention,toJSON(){return e.toJSON()},async edit(e){let a=e;if(Y(e)){let t=J(e);if(!t)throw Error(`Invalid JSX element: must be a Card element`);a=t}return a=await i.processCallbackUrls(a),await t.editMessage(n,r,a),i.createSentMessage(r,a,n)},async delete(){await t.deleteMessage(n,r)},async addReaction(e){await t.addReaction(n,r,e)},async removeReaction(e){await t.removeReaction(n,r,e)}}}};function zu(e){if(typeof e==`string`)return{plainText:e,formatted:q([K([G(e)])]),attachments:[]};if(`raw`in e)return{plainText:e.raw,formatted:q([K([G(e.raw)])]),attachments:e.attachments||[]};if(`markdown`in e){let t=ns(e.markdown);return{plainText:W(t),formatted:t,attachments:e.attachments||[]}}if(`ast`in e)return{plainText:W(e.ast),formatted:e.ast,attachments:e.attachments||[]};if(`card`in e){let t=e.fallbackText||Ns(e.card);return{plainText:t,formatted:q([K([G(t)])]),attachments:[]}}if(`type`in e&&e.type===`card`){let t=Ns(e);return{plainText:t,formatted:q([K([G(t)])]),attachments:[]}}throw Error(`Invalid PostableMessage format`)}function Bu(e,t){if(t&&typeof t==`object`&&`_type`in t){let e=t;if(e._type===`chat:Thread`)return Ru.fromJSON(t);if(e._type===`chat:Channel`)return Cu.fromJSON(t);if(e._type===`chat:Message`)return Q.fromJSON(t)}return t}var Vu=100,Hu=10080*60*1e3,Uu=`msg-history:`,Wu=class{state;maxMessages;ttlMs;constructor(e,t){this.state=e,this.maxMessages=t?.maxMessages??Vu,this.ttlMs=t?.ttlMs??Hu}async append(e,t){let n=`${Uu}${e}`,r=t.toJSON();r.raw=null,await this.state.appendToList(n,r,{maxLength:this.maxMessages,ttlMs:this.ttlMs})}async getMessages(e,t){let n=`${Uu}${e}`,r=await this.state.getList(n);return(t&&r.length>t?r.slice(r.length-t):r).map(e=>Q.fromJSON(e))}},Gu=`transcripts:user:`,Ku=200,qu=50,Ju=/^(\d+)([smhd])$/,Yu=`__chatSdkTombstone`;function Xu(e){return typeof e==`object`&&!!e&&e[Yu]===!0}var Zu={s:1e3,m:6e4,h:36e5,d:864e5},Qu=class{state;maxPerUser;retentionMs;storeFormatted;constructor(e,t){this.state=e,this.maxPerUser=t.maxPerUser??Ku,this.retentionMs=ed(t.retention),this.storeFormatted=t.storeFormatted??!1}async append(e,t,n){let r=t instanceof Q,i,a,o;if(r){if(i=t.userKey,a=`user`,o=t.id,!i)return null}else if(i=n?.userKey,a=t.role,o=t.platformMessageId,!i)throw Error(`transcripts.append: options.userKey is required when appending an AppendInput`);let s={id:crypto.randomUUID(),userKey:i,role:a,text:t.text,platform:e.adapter.name,threadId:e.id,timestamp:Date.now()};return this.storeFormatted&&t.formatted&&(s.formatted=t.formatted),o!==void 0&&(s.platformMessageId=o),await this.state.appendToList($u(i),s,{maxLength:this.maxPerUser,ttlMs:this.retentionMs}),s}async list(e){let t=(await this.state.getList($u(e.userKey))).filter(e=>!Xu(e));if(e.platforms&&e.platforms.length>0){let n=new Set(e.platforms);t=t.filter(e=>n.has(e.platform))}if(e.threadId!==void 0){let n=e.threadId;t=t.filter(e=>e.threadId===n)}if(e.roles&&e.roles.length>0){let n=new Set(e.roles);t=t.filter(e=>n.has(e.role))}let n=e.limit??qu;return t.length>n&&(t=t.slice(t.length-n)),t}async count(e){return(await this.state.getList($u(e.userKey))).filter(e=>!Xu(e)).length}async delete(e){let t=$u(e.userKey),n=(await this.state.getList(t)).filter(e=>!Xu(e)).length,r={[Yu]:!0};return await this.state.appendToList(t,r,{maxLength:1,ttlMs:this.retentionMs}),{deleted:n}}};function $u(e){return`${Gu}${e}`}function ed(e){if(e===void 0)return;if(typeof e==`number`)return e;let t=Ju.exec(e);if(!t)throw Error(`Invalid duration: ${e} (expected number of ms, or "<n>[smhd]")`);return Number.parseInt(t[1],10)*Zu[t[2]]}var td=3e4;function nd(e){return new Promise(t=>setTimeout(t,e))}var rd=/^[UW][A-Z0-9]+$/,id=/^\d{17,19}$/,ad=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,od=/^\d+$/,sd=300*1e3,cd=1440*60*1e3,ld=class{registerSingleton(){return au(this),this}get transcripts(){if(!this._transcripts)throw Error("chat.transcripts is not configured — pass `transcripts` and `identity` to ChatConfig to enable it");return this._transcripts}static getSingleton(){return ou()}static hasSingleton(){return su()}adapters;_stateAdapter;userName;logger;_streamingUpdateIntervalMs;_fallbackStreamingPlaceholderText;_dedupeTtlMs;_onLockConflict;_threadHistory;_identity;_transcripts;_concurrencyStrategy;_concurrencyConfig;_concurrentSlots=new Map;_lockScope;mentionHandlers=[];directMessageHandlers=[];messagePatterns=[];subscribedMessageHandlers=[];reactionHandlers=[];actionHandlers=[];optionsLoadHandlers=[];modalSubmitHandlers=[];modalCloseHandlers=[];slashCommandHandlers=[];assistantThreadStartedHandlers=[];assistantContextChangedHandlers=[];appHomeOpenedHandlers=[];memberJoinedChannelHandlers=[];initPromise=null;initialized=!1;webhooks;constructor(e){this.userName=e.userName,this._stateAdapter=e.state,this.adapters=new Map,this._streamingUpdateIntervalMs=e.streamingUpdateIntervalMs??500,this._fallbackStreamingPlaceholderText=e.fallbackStreamingPlaceholderText===void 0?`...`:e.fallbackStreamingPlaceholderText,this._dedupeTtlMs=e.dedupeTtlMs??sd,this._onLockConflict=e.onLockConflict,this._lockScope=e.lockScope,typeof e.logger==`string`?this.logger=new vu(e.logger):this.logger=e.logger||new vu(`info`);let t=e.concurrency;if(t)if(typeof t==`string`)this._concurrencyStrategy=t,this._concurrencyConfig={debounceMs:1500,maxConcurrent:1/0,maxQueueSize:10,onQueueFull:`drop-oldest`,queueEntryTtlMs:9e4};else{if(t.maxConcurrent!==void 0&&t.maxConcurrent<1)throw Error(`concurrency.maxConcurrent must be >= 1 (got ${t.maxConcurrent})`);t.maxConcurrent!==void 0&&t.strategy!==`concurrent`&&this.logger.warn(`concurrency.maxConcurrent has no effect when strategy is "${t.strategy}" \u2014 it only applies to the "concurrent" strategy.`),this._concurrencyStrategy=t.strategy,this._concurrencyConfig={debounceMs:t.debounceMs??1500,maxConcurrent:t.maxConcurrent??1/0,maxQueueSize:t.maxQueueSize??10,onQueueFull:t.onQueueFull??`drop-oldest`,queueEntryTtlMs:t.queueEntryTtlMs??9e4}}else this._concurrencyStrategy=`drop`,this._concurrencyConfig={debounceMs:1500,maxConcurrent:1/0,maxQueueSize:10,onQueueFull:`drop-oldest`,queueEntryTtlMs:9e4};if(this._threadHistory=new Wu(this._stateAdapter,e.threadHistory??e.messageHistory),e.transcripts){if(!e.identity)throw Error(`ChatConfig.transcripts requires ChatConfig.identity to be set — the cross-platform user key must be resolvable`);this._identity=e.identity,this._transcripts=new Qu(this._stateAdapter,e.transcripts)}else this._identity=e.identity;let n={};for(let[t,r]of Object.entries(e.adapters))this.adapters.set(t,r),n[t]=(e,n)=>this.handleWebhook(t,e,n);this.webhooks=n,this.logger.debug(`Chat instance created`,{adapters:Object.keys(e.adapters)})}async handleWebhook(e,t,n){await this.ensureInitialized();let r=this.adapters.get(e);return r?r.handleWebhook(t,n):new Response(`Unknown adapter: ${e}`,{status:404})}async ensureInitialized(){this.initialized||(this.initPromise||=this.doInitialize(),await this.initPromise)}async doInitialize(){this.logger.info(`Initializing chat instance...`),await this._stateAdapter.connect(),this.logger.debug(`State connected`);let e=Array.from(this.adapters.values()).map(async e=>{this.logger.debug(`Initializing adapter`,e.name);let t=await e.initialize(this);return this.logger.debug(`Adapter initialized`,e.name),t});await Promise.all(e),this.initialized=!0,this.logger.info(`Chat instance initialized`,{adapters:Array.from(this.adapters.keys())})}async shutdown(){this.logger.info(`Shutting down chat instance...`);let e=Array.from(this.adapters.values()).map(async e=>{e.disconnect&&(this.logger.debug(`Disconnecting adapter`,e.name),await e.disconnect(),this.logger.debug(`Adapter disconnected`,e.name))}),t=await Promise.allSettled(e);for(let e of t)e.status===`rejected`&&this.logger.error(`Adapter disconnect failed`,e.reason);await this._stateAdapter.disconnect(),this.initialized=!1,this.initPromise=null,this.logger.info(`Chat instance shut down`)}async initialize(){await this.ensureInitialized()}onNewMention(e){this.mentionHandlers.push(e),this.logger.debug(`Registered mention handler`)}onDirectMessage(e){this.directMessageHandlers.push(e),this.logger.debug(`Registered direct message handler`)}onNewMessage(e,t){this.messagePatterns.push({pattern:e,handler:t}),this.logger.debug(`Registered message pattern handler`,{pattern:e.toString()})}onSubscribedMessage(e){this.subscribedMessageHandlers.push(e),this.logger.debug(`Registered subscribed message handler`)}onReaction(e,t){typeof e==`function`?(this.reactionHandlers.push({emoji:[],handler:e}),this.logger.debug(`Registered reaction handler for all emoji`)):t&&(this.reactionHandlers.push({emoji:e,handler:t}),this.logger.debug(`Registered reaction handler`,{emoji:e.map(e=>typeof e==`string`?e:e.name)}))}onAction(e,t){if(typeof e==`function`)this.actionHandlers.push({actionIds:[],handler:e}),this.logger.debug(`Registered action handler for all actions`);else if(t){let n=Array.isArray(e)?e:[e];this.actionHandlers.push({actionIds:n,handler:t}),this.logger.debug(`Registered action handler`,{actionIds:n})}}onOptionsLoad(e,t){if(typeof e==`function`)this.optionsLoadHandlers.push({actionIds:[],handler:e}),this.logger.debug(`Registered options load handler for all action IDs`);else if(t){let n=Array.isArray(e)?e:[e];this.optionsLoadHandlers.push({actionIds:n,handler:t}),this.logger.debug(`Registered options load handler`,{actionIds:n})}}onModalSubmit(e,t){if(typeof e==`function`)this.modalSubmitHandlers.push({callbackIds:[],handler:e}),this.logger.debug(`Registered modal submit handler for all modals`);else if(t){let n=Array.isArray(e)?e:[e];this.modalSubmitHandlers.push({callbackIds:n,handler:t}),this.logger.debug(`Registered modal submit handler`,{callbackIds:n})}}onModalClose(e,t){if(typeof e==`function`)this.modalCloseHandlers.push({callbackIds:[],handler:e}),this.logger.debug(`Registered modal close handler for all modals`);else if(t){let n=Array.isArray(e)?e:[e];this.modalCloseHandlers.push({callbackIds:n,handler:t}),this.logger.debug(`Registered modal close handler`,{callbackIds:n})}}onSlashCommand(e,t){if(typeof e==`function`)this.slashCommandHandlers.push({commands:[],handler:e}),this.logger.debug(`Registered slash command handler for all commands`);else if(t){let n=(Array.isArray(e)?e:[e]).map(e=>e.startsWith(`/`)?e:`/${e}`);this.slashCommandHandlers.push({commands:n,handler:t}),this.logger.debug(`Registered slash command handler`,{commands:n})}}onAssistantThreadStarted(e){this.assistantThreadStartedHandlers.push(e),this.logger.debug(`Registered assistant thread started handler`)}onAssistantContextChanged(e){this.assistantContextChangedHandlers.push(e),this.logger.debug(`Registered assistant context changed handler`)}onAppHomeOpened(e){this.appHomeOpenedHandlers.push(e),this.logger.debug(`Registered app home opened handler`)}onMemberJoinedChannel(e){this.memberJoinedChannelHandlers.push(e),this.logger.debug(`Registered member joined channel handler`)}getAdapter(e){return this.adapters.get(e)}reviver(){return this.registerSingleton(),Bu}processMessage(e,t,n,r){let i=(async()=>{let r=typeof n==`function`?await n():n;await this.handleIncomingMessage(e,t,r)})(),a=i.catch(e=>{this.logger.error(`Message processing error`,{error:e,threadId:t})});return r?.waitUntil&&r.waitUntil(a),i}processReaction(e,t){let n=this.handleReactionEvent(e).catch(t=>{this.logger.error(`Reaction processing error`,{error:t,emoji:e.emoji,messageId:e.messageId})});t?.waitUntil&&t.waitUntil(n)}processAction(e,t){let n=this.handleActionEvent(e,t).catch(t=>{this.logger.error(`Action processing error`,{error:t,actionId:e.actionId,messageId:e.messageId})});return t?.waitUntil&&t.waitUntil(n),n}async processOptionsLoad(e,t){let n=[...this.optionsLoadHandlers.filter(({actionIds:t})=>t.length>0&&t.includes(e.actionId)),...this.optionsLoadHandlers.filter(({actionIds:e})=>e.length===0)];for(let{handler:t}of n)try{let n=await t(e);if(n)return n}catch(t){this.logger.error(`Options load handler error`,{error:t,actionId:e.actionId})}}async processModalSubmit(e,t,n){let{callbackUrl:r,relatedThread:i,relatedMessage:a,relatedChannel:o}=await this.retrieveModalContext(e.adapter.name,t),s={...e,relatedThread:i,relatedMessage:a,relatedChannel:o},c;for(let{callbackIds:t,handler:n}of this.modalSubmitHandlers)if(t.length===0||t.includes(e.callbackId))try{let e=await n(s);if(e){c=e;break}}catch(t){this.logger.error(`Modal submit handler error`,{error:t,callbackId:e.callbackId})}if(r&&c?.action!==`errors`){let t=ru(r,{type:`modal_submit`,callbackId:e.callbackId,values:e.values,user:{id:e.user.userId,name:e.user.userName}}).then(({error:e})=>{e&&this.logger.error(`Modal callbackUrl POST failed`,{callbackUrl:r,error:e})}).catch(e=>{this.logger.error(`Modal callbackUrl POST failed`,{callbackUrl:r,error:e})});n?.waitUntil&&n.waitUntil(t)}return c}processModalClose(e,t,n){let r=(async()=>{let{relatedThread:n,relatedMessage:r,relatedChannel:i}=await this.retrieveModalContext(e.adapter.name,t),a={...e,relatedThread:n,relatedMessage:r,relatedChannel:i};for(let{callbackIds:t,handler:n}of this.modalCloseHandlers)(t.length===0||t.includes(e.callbackId))&&await n(a)})().catch(t=>{this.logger.error(`Modal close handler error`,{error:t,callbackId:e.callbackId})});n?.waitUntil&&n.waitUntil(r)}processSlashCommand(e,t){let n=this.handleSlashCommandEvent(e,t).catch(t=>{this.logger.error(`Slash command processing error`,{error:t,command:e.command,text:e.text})});t?.waitUntil&&t.waitUntil(n)}processAssistantThreadStarted(e,t){let n=(async()=>{for(let t of this.assistantThreadStartedHandlers)await t(e)})().catch(t=>{this.logger.error(`Assistant thread started handler error`,{error:t,threadId:e.threadId})});t?.waitUntil&&t.waitUntil(n)}processAssistantContextChanged(e,t){let n=(async()=>{for(let t of this.assistantContextChangedHandlers)await t(e)})().catch(t=>{this.logger.error(`Assistant context changed handler error`,{error:t,threadId:e.threadId})});t?.waitUntil&&t.waitUntil(n)}processAppHomeOpened(e,t){let n=(async()=>{for(let t of this.appHomeOpenedHandlers)await t(e)})().catch(t=>{this.logger.error(`App home opened handler error`,{error:t,userId:e.userId})});t?.waitUntil&&t.waitUntil(n)}processMemberJoinedChannel(e,t){let n=(async()=>{for(let t of this.memberJoinedChannelHandlers)await t(e)})().catch(t=>{this.logger.error(`Member joined channel handler error`,{error:t,channelId:e.channelId,userId:e.userId})});t?.waitUntil&&t.waitUntil(n)}async handleSlashCommandEvent(e,t){if(this.logger.debug(`Incoming slash command`,{adapter:e.adapter.name,command:e.command,text:e.text,user:e.user.userName}),e.user.isMe){this.logger.debug(`Skipping slash command from self`,{command:e.command});return}let n=new Cu({id:e.channelId,adapter:e.adapter,stateAdapter:this._stateAdapter}),r={...e,channel:n,openModal:async r=>{if(!(e.triggerId||t?.onOpenModal)){this.logger.warn(`Cannot open modal: no triggerId available`);return}if(!(t?.onOpenModal||e.adapter.openModal)){this.logger.warn(`Cannot open modal: ${e.adapter.name} does not support modals`);return}let i=r;if(Y(r)){let e=uc(r);if(!e)throw Error(`Invalid JSX element: must be a Modal element`);i=e}let a=crypto.randomUUID();if(await this.storeModalContext(e.adapter.name,a,void 0,void 0,n,i.callbackUrl),t?.onOpenModal)return t.onOpenModal(i,a);if(e.triggerId&&e.adapter.openModal)return e.adapter.openModal(e.triggerId,i,a)}};this.logger.debug(`Checking slash command handlers`,{handlerCount:this.slashCommandHandlers.length,command:e.command});for(let{commands:t,handler:n}of this.slashCommandHandlers){if(t.length===0){this.logger.debug(`Running catch-all slash command handler`),await n(r);continue}t.includes(e.command)&&(this.logger.debug(`Running matched slash command handler`,{command:e.command}),await n(r))}}async storeModalContext(e,t,n,r,i,a){let o=`modal-context:${e}:${t}`,s={thread:n?.toJSON(),message:r?.toJSON(),channel:i?.toJSON(),callbackUrl:a};try{await this._stateAdapter.set(o,s,cd)}catch(e){this.logger.error(`Failed to store modal context`,{contextId:t,error:e})}}async retrieveModalContext(e,t){if(!t)return{callbackUrl:void 0,relatedThread:void 0,relatedMessage:void 0,relatedChannel:void 0};let n=`modal-context:${e}:${t}`,r=await this._stateAdapter.get(n);if(!r)return{callbackUrl:void 0,relatedThread:void 0,relatedMessage:void 0,relatedChannel:void 0};await this._stateAdapter.delete(n);let i=this.adapters.get(e),a;r.thread&&(a=Ru.fromJSON(r.thread,i));let o;if(r.message&&a){let e=Q.fromJSON(r.message);o=a.createSentMessageFromMessage(e)}let s;return r.channel&&(s=Cu.fromJSON(r.channel,i)),{callbackUrl:r.callbackUrl,relatedThread:a,relatedMessage:o,relatedChannel:s}}async handleActionEvent(e,t){if(this.logger.debug(`Incoming action`,{adapter:e.adapter.name,actionId:e.actionId,value:e.value,user:e.user.userName,messageId:e.messageId,threadId:e.threadId}),e.user.isMe){this.logger.debug(`Skipping action from self`,{actionId:e.actionId});return}let{callbackToken:n}=Xl(e.value),r=null;n&&(r=await nu(n,this._stateAdapter));let i=r?{...e,value:r.originalValue}:e,a;if(r){let t=r.url;a=(async()=>{let{error:n}=await ru(t,{type:`action`,actionId:e.actionId,value:r.originalValue,user:{id:e.user.userId,name:e.user.userName},threadId:e.threadId,messageId:e.messageId});n&&this.logger.error(`Button callbackUrl POST failed`,{callbackUrl:t,actionId:e.actionId,error:n})})()}let o=e.messageId?new Q({id:e.messageId,threadId:e.threadId,text:``,formatted:{type:`root`,children:[]},raw:e.raw,author:e.user,metadata:{dateSent:new Date,edited:!1},attachments:[]}):{},s=e.threadId?await this.createThread(e.adapter,e.threadId,o,!1):null,c={...i,thread:s,openModal:async n=>{if(!(e.triggerId||t?.onOpenModal)){this.logger.warn(`Cannot open modal: no triggerId available`);return}if(!(t?.onOpenModal||e.adapter.openModal)){this.logger.warn(`Cannot open modal: ${e.adapter.name} does not support modals`);return}let r=n;if(Y(n)){let e=uc(n);if(!e)throw Error(`Invalid JSX element: must be a Modal element`);r=e}let i;if(s){if(e.messageId?.startsWith(`ephemeral:`)){let e=s.recentMessages[0];e&&typeof e.toJSON==`function`&&(i=e)}else if(e.messageId&&e.adapter.fetchMessage){let t=await e.adapter.fetchMessage(e.threadId,e.messageId).catch(()=>null);if(t)i=new Q(t);else{let e=s.recentMessages[0];e&&typeof e.toJSON==`function`&&(i=e)}}}let a=crypto.randomUUID(),o=s?s.channel:void 0;if(await this.storeModalContext(e.adapter.name,a,s||void 0,i,o,r.callbackUrl),t?.onOpenModal)return t.onOpenModal(r,a);if(e.triggerId&&e.adapter.openModal)return e.adapter.openModal(e.triggerId,r,a)}};this.logger.debug(`Checking action handlers`,{handlerCount:this.actionHandlers.length,actionId:e.actionId});for(let{actionIds:t,handler:n}of this.actionHandlers){if(t.length===0){this.logger.debug(`Running catch-all action handler`),await n(c);continue}t.includes(e.actionId)&&(this.logger.debug(`Running matched action handler`,{actionId:e.actionId}),await n(c))}a&&await a}async handleReactionEvent(e){if(this.logger.debug(`Incoming reaction`,{adapter:e.adapter?.name,emoji:e.emoji,rawEmoji:e.rawEmoji,added:e.added,user:e.user.userName,messageId:e.messageId,threadId:e.threadId}),e.user.isMe){this.logger.debug(`Skipping reaction from self`,{emoji:e.emoji});return}if(!e.adapter){this.logger.error(`Reaction event missing adapter`);return}let t=await this._stateAdapter.isSubscribed(e.threadId),n=await this.createThread(e.adapter,e.threadId,e.message??{},t),r={...e,adapter:e.adapter,thread:n};this.logger.debug(`Checking reaction handlers`,{handlerCount:this.reactionHandlers.length,emoji:e.emoji.name,rawEmoji:e.rawEmoji});for(let{emoji:e,handler:t}of this.reactionHandlers){if(e.length===0){this.logger.debug(`Running catch-all reaction handler`),await t(r);continue}let n=e.some(e=>{if(e===r.emoji)return!0;let t=typeof e==`string`?e:e.name;return t===r.emoji.name||t===r.rawEmoji});this.logger.debug(`Reaction filter check`,{filterEmoji:e.map(e=>typeof e==`string`?e:e.name),eventEmoji:r.emoji.name,matches:n}),n&&(this.logger.debug(`Running matched reaction handler`),await t(r))}}getState(){return this._stateAdapter}getUserName(){return this.userName}getLogger(e){return e?this.logger.child(e):this.logger}async openDM(e){let t=typeof e==`string`?e:e.userId,n=this.inferAdapterFromUserId(t);if(!n.openDM)throw new $(`Adapter "${n.name}" does not support openDM`,`NOT_SUPPORTED`);let r=await n.openDM(t);return this.createThread(n,r,{},!1)}async getUser(e){let t=typeof e==`string`?e:e.userId,n=this.inferAdapterFromUserId(t);if(!n.getUser)throw new $(`Adapter "${n.name}" does not support getUser`,`NOT_SUPPORTED`);return n.getUser(t)}channel(e){let t=e.split(`:`)[0];if(!t)throw new $(`Invalid channel ID: ${e}`,`INVALID_CHANNEL_ID`);let n=this.adapters.get(t);if(!n)throw new $(`Adapter "${t}" not found for channel ID "${e}"`,`ADAPTER_NOT_FOUND`);return new Cu({id:e,adapter:n,stateAdapter:this._stateAdapter})}thread(e){let t=e.split(`:`)[0];if(!t)throw new $(`Invalid thread ID: ${e}`,`INVALID_THREAD_ID`);let n=this.adapters.get(t);if(!n)throw new $(`Adapter "${t}" not found for thread ID "${e}"`,`ADAPTER_NOT_FOUND`);return this.createThread(n,e,{},!1)}inferAdapterFromUserId(e){if(e.startsWith(`users/`)){let e=this.adapters.get(`gchat`);if(e)return e}if(e.startsWith(`29:`)){let e=this.adapters.get(`teams`);if(e)return e}if(ad.test(e)){let e=this.adapters.get(`linear`);if(e)return e}if(rd.test(e)){let e=this.adapters.get(`slack`);if(e)return e}if(od.test(e)){let t=[];if(id.test(e)&&this.adapters.has(`discord`)&&t.push(`discord`),this.adapters.has(`telegram`)&&t.push(`telegram`),this.adapters.has(`github`)&&t.push(`github`),t.length===1){let e=this.adapters.get(t[0]);if(e)return e}if(t.length>1)throw new $(`Numeric userId "${e}" is ambiguous between adapters: ${t.join(`, `)}. Call the platform's adapter directly (e.g. \`adapter.getUser(userId)\`).`,`AMBIGUOUS_USER_ID`)}throw new $(`Cannot infer adapter from userId "${e}". Expected: Slack ("U..."), Teams ("29:..."), Google Chat ("users/..."), Linear (UUID), or Discord/Telegram/GitHub (numeric).`,`UNKNOWN_USER_ID_FORMAT`)}async getLockKey(e,t){let n=e.channelIdFromThreadId(t),r;if(typeof this._lockScope==`function`){let i=e.isDM?.(t)??!1;r=await this._lockScope({adapter:e,channelId:n,isDM:i,threadId:t})}else r=this._lockScope??e.lockScope??`thread`;return r===`channel`?n:t}async handleIncomingMessage(e,t,n){if(du(n,e),this.logger.debug(`Incoming message`,{adapter:e.name,threadId:t,messageId:n.id,text:n.text,author:n.author.userName,authorUserId:n.author.userId,isBot:n.author.isBot,isMe:n.author.isMe}),n.author.isMe){this.logger.debug(`Skipping message from self (isMe=true)`,{adapter:e.name,threadId:t,author:n.author.userName});return}let r=`dedupe:${e.name}:${n.id}`;if(!await this._stateAdapter.setIfNotExists(r,!0,this._dedupeTtlMs)){this.logger.debug(`Skipping duplicate message`,{adapter:e.name,messageId:n.id});return}if(e.persistThreadHistory||e.persistMessageHistory){let r=e.channelIdFromThreadId(t),i=[this._threadHistory.append(t,n)];r!==t&&i.push(this._threadHistory.append(r,n)),await Promise.all(i)}let i=await this.getLockKey(e,t),a=this._concurrencyStrategy;if(a===`concurrent`){await this.handleConcurrent(e,t,n);return}if(a===`queue`||a===`debounce`||a===`burst`){await this.handleQueueOrDebounce(e,t,i,n,a);return}await this.handleDrop(e,t,i,n)}async handleDrop(e,t,n,r){let i=await this._stateAdapter.acquireLock(n,td);if(!i&&((typeof this._onLockConflict==`function`?await this._onLockConflict(t,r):this._onLockConflict??`drop`)===`force`&&(this.logger.info(`Force-releasing lock on thread`,{threadId:t,lockKey:n}),await this._stateAdapter.forceReleaseLock(n),i=await this._stateAdapter.acquireLock(n,td)),!i))throw this.logger.warn(`Could not acquire lock on thread`,{threadId:t,lockKey:n}),new gu(`Could not acquire lock on thread ${t}. Another instance may be processing.`);this.logger.debug(`Lock acquired`,{threadId:t,lockKey:n,token:i.token});try{await this.dispatchToHandlers(e,t,r)}finally{await this._stateAdapter.releaseLock(i),this.logger.debug(`Lock released`,{threadId:t,lockKey:n})}}async handleQueueOrDebounce(e,t,n,r,i){let{maxQueueSize:a,queueEntryTtlMs:o,onQueueFull:s,debounceMs:c}=this._concurrencyConfig,l=await this._stateAdapter.acquireLock(n,td);if(!l){let e=i===`debounce`?1:a,c=await this._stateAdapter.queueDepth(n);if(c>=e&&i!==`debounce`&&s===`drop-newest`){this.logger.info(`message-dropped`,{threadId:t,lockKey:n,messageId:r.id,reason:`queue-full`});return}await this._stateAdapter.enqueue(n,{message:r,enqueuedAt:Date.now(),expiresAt:Date.now()+o},e),this.logger.info(i===`debounce`?`message-debounce-reset`:`message-queued`,{threadId:t,lockKey:n,messageId:r.id,queueDepth:Math.min(c+1,e)});return}this.logger.debug(`Lock acquired`,{threadId:t,lockKey:n,token:l.token});try{i===`debounce`?(await this._stateAdapter.enqueue(n,{message:r,enqueuedAt:Date.now(),expiresAt:Date.now()+o},1),this.logger.info(`message-debouncing`,{threadId:t,lockKey:n,messageId:r.id,debounceMs:c}),await this.debounceLoop(l,e,t,n)):i===`burst`?(await this._stateAdapter.enqueue(n,{message:r,enqueuedAt:Date.now(),expiresAt:Date.now()+o},a),this.logger.info(`message-debouncing`,{threadId:t,lockKey:n,messageId:r.id,debounceMs:c}),await nd(c),await this._stateAdapter.extendLock(l,td),await this.drainQueue(l,e,t,n)):(await this.dispatchToHandlers(e,t,r),await this.drainQueue(l,e,t,n))}finally{await this._stateAdapter.releaseLock(l),this.logger.debug(`Lock released`,{threadId:t,lockKey:n})}}async debounceLoop(e,t,n,r){let{debounceMs:i}=this._concurrencyConfig;for(;;){await nd(i),await this._stateAdapter.extendLock(e,td);let a=await this._stateAdapter.dequeue(r);if(!a)break;let o=this.rehydrateMessage(a.message,t);if(Date.now()>a.expiresAt){this.logger.info(`message-expired`,{threadId:n,lockKey:r,messageId:o.id});continue}if(await this._stateAdapter.queueDepth(r)>0){this.logger.info(`message-superseded`,{threadId:n,lockKey:r,droppedId:o.id});continue}this.logger.info(`message-dequeued`,{threadId:n,lockKey:r,messageId:o.id}),await this.dispatchToHandlers(t,n,o);break}}async drainQueue(e,t,n,r){for(;;){let i=[];for(;;){let e=await this._stateAdapter.dequeue(r);if(!e)break;let a=this.rehydrateMessage(e.message,t);Date.now()<=e.expiresAt?i.push({message:a,expiresAt:e.expiresAt}):this.logger.info(`message-expired`,{threadId:n,lockKey:r,messageId:a.id})}if(i.length===0)return;await this._stateAdapter.extendLock(e,td);let a=i.at(-1);if(!a)return;let o=i.slice(0,-1).map(e=>e.message);this.logger.info(`message-dequeued`,{threadId:n,lockKey:r,messageId:a.message.id,skippedCount:o.length,totalSinceLastHandler:i.length});let s={skipped:o,totalSinceLastHandler:i.length};await this.dispatchToHandlers(t,n,a.message,s)}}async handleConcurrent(e,t,n){let{maxConcurrent:r}=this._concurrencyConfig;if(!Number.isFinite(r)){await this.dispatchToHandlers(e,t,n);return}await this.acquireConcurrentSlot(t,r);try{await this.dispatchToHandlers(e,t,n)}finally{this.releaseConcurrentSlot(t)}}acquireConcurrentSlot(e,t){let n=this._concurrentSlots.get(e);return n||(n={inFlight:0,waiters:[]},this._concurrentSlots.set(e,n)),n.inFlight<t?(n.inFlight++,Promise.resolve()):new Promise(e=>{n.waiters.push(e)})}releaseConcurrentSlot(e){let t=this._concurrentSlots.get(e);if(!t)return;let n=t.waiters.shift();if(n){n();return}t.inFlight--,t.inFlight===0&&t.waiters.length===0&&this._concurrentSlots.delete(e)}async dispatchToHandlers(e,t,n,r){n.isMention=n.isMention||this.detectMention(e,n);let i=await this._stateAdapter.isSubscribed(t);this.logger.debug(`Subscription check`,{threadId:t,isSubscribed:i,subscribedHandlerCount:this.subscribedMessageHandlers.length});let a=await this.createThread(e,t,n,i);if(this._identity&&n.userKey===void 0)try{let t=await this._identity({adapter:e.name,author:n.author,message:n});t&&(n.userKey=t)}catch(r){this.logger.warn(`Identity resolver threw; skipping userKey`,{error:r,adapter:e.name,threadId:t,authorUserId:n.author.userId})}let o=e.isDM?.(t)??!1;if(o&&this.directMessageHandlers.length>0){this.logger.debug(`Direct message received - calling handlers`,{threadId:t,handlerCount:this.directMessageHandlers.length});let e=a.channel;for(let t of this.directMessageHandlers)await t(a,n,e,r);return}if(o&&(n.isMention=!0),i){this.logger.debug(`Message in subscribed thread - calling handlers`,{threadId:t,handlerCount:this.subscribedMessageHandlers.length}),await this.runHandlers(this.subscribedMessageHandlers,a,n,r);return}if(n.isMention){this.logger.debug(`Bot mentioned`,{threadId:t,text:n.text.slice(0,100)}),await this.runHandlers(this.mentionHandlers,a,n,r);return}this.logger.debug(`Checking message patterns`,{patternCount:this.messagePatterns.length,patterns:this.messagePatterns.map(e=>e.pattern.toString()),messageText:n.text});let s=!1;for(let{pattern:e,handler:t}of this.messagePatterns){let i=e.test(n.text);this.logger.debug(`Pattern test`,{pattern:e.toString(),text:n.text,matches:i}),i&&(this.logger.debug(`Message matched pattern - calling handler`,{pattern:e.toString()}),s=!0,await t(a,n,r))}s||this.logger.debug(`No handlers matched message`,{threadId:t,text:n.text.slice(0,100)})}createThread(e,t,n,r=!1){let i=e.channelIdFromThreadId(t),a=e.isDM?.(t)??!1,o=e.getChannelVisibility?.(t)??`unknown`;return new Ru({id:t,adapter:e,channelId:i,stateAdapter:this._stateAdapter,initialMessage:n,isSubscribedContext:r,isDM:a,channelVisibility:o,currentMessage:n,logger:this.logger,streamingUpdateIntervalMs:this._streamingUpdateIntervalMs,fallbackStreamingPlaceholderText:this._fallbackStreamingPlaceholderText,threadHistory:e.persistThreadHistory||e.persistMessageHistory?this._threadHistory:void 0})}detectMention(e,t){let n=e.userName||this.userName,r=e.botUserId;return!!(RegExp(`@${this.escapeRegex(n)}\\b`,`i`).test(t.text)||r&&(RegExp(`@${this.escapeRegex(r)}\\b`,`i`).test(t.text)||RegExp(`<@!?${this.escapeRegex(r)}>`,`i`).test(t.text)))}escapeRegex(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}rehydrateMessage(e,t){if(e instanceof Q)return t&&du(e,t),e;let n=e,r;if(n._type===`chat:Message`)r=Q.fromJSON(n);else{let e=n.metadata,t=e.dateSent,i=e.editedAt;r=new Q({id:n.id,threadId:n.threadId,text:n.text,formatted:n.formatted,raw:n.raw,author:n.author,metadata:{dateSent:t instanceof Date?t:new Date(t),edited:e.edited,editedAt:i?new Date(i instanceof Date?i.toISOString():i):void 0},attachments:n.attachments??[],isMention:n.isMention,links:n.links??[]})}t&&du(r,t);let i=t?.rehydrateAttachment?.bind(t);return i&&r.attachments.length>0&&(r.attachments=r.attachments.map(e=>e.fetchData?e:i(e))),r}async runHandlers(e,t,n,r){for(let i of e)await i(t,n,r)}},ud=Wu;function dd(e){return e?Array.isArray(e)?e.join(` `).trim():typeof e==`string`?e:`markdown`in e?W(ns(e.markdown)):`ast`in e?W(e.ast):``:``}var fd=class{$$typeof=fu;kind=`plan`;_model;_bound=null;constructor(e){let t=dd(e.initialMessage)||`Plan`,n={id:crypto.randomUUID(),title:t,status:`in_progress`};this._model={title:t,tasks:[n]}}isSupported(e){return!!e.postObject&&!!e.editObject}getPostData(){return this._model}getFallbackText(){let e=[];e.push(`\u{1F4CB} ${this._model.title||`Plan`}`);for(let t of this._model.tasks){let n={complete:`✅`,in_progress:`🔄`,error:`❌`}[t.status]??`⬜`;e.push(`${n} ${t.title}`)}return e.join(`
|
|
89
|
+
`),s}function Fu(e){return`adapterName`in e&&!(`adapter`in e)}var Iu=`thread-state:`;function Lu(e){return typeof e==`object`&&!!e&&Symbol.asyncIterator in e}var Ru=class e{id;channelId;isDM;channelVisibility;_adapter;_adapterName;_stateAdapterInstance;_recentMessages=[];_isSubscribedContext;_currentMessage;_streamingUpdateIntervalMs;_fallbackStreamingPlaceholderText;_channel;_threadHistory;_logger;constructor(e){this.id=e.id,this.channelId=e.channelId,this.isDM=e.isDM??!1,this.channelVisibility=e.channelVisibility??`unknown`,this._isSubscribedContext=e.isSubscribedContext??!1,this._currentMessage=e.currentMessage,this._logger=e.logger,this._streamingUpdateIntervalMs=e.streamingUpdateIntervalMs??500,this._fallbackStreamingPlaceholderText=e.fallbackStreamingPlaceholderText===void 0?`...`:e.fallbackStreamingPlaceholderText,Fu(e)?this._adapterName=e.adapterName:(this._adapter=e.adapter,this._stateAdapterInstance=e.stateAdapter,this._threadHistory=e.threadHistory),e.initialMessage&&(this._recentMessages=[e.initialMessage])}get adapter(){if(this._adapter)return this._adapter;if(!this._adapterName)throw Error(`Thread has no adapter configured`);let e=ou().getAdapter(this._adapterName);if(!e)throw Error(`Adapter "${this._adapterName}" not found in Chat singleton`);return this._adapter=e,e}get _stateAdapter(){if(this._stateAdapterInstance)return this._stateAdapterInstance;let e=ou();return this._stateAdapterInstance=e.getState(),this._stateAdapterInstance}get recentMessages(){return this._recentMessages}set recentMessages(e){this._recentMessages=e}get state(){return this._stateAdapter.get(`${Iu}${this.id}`)}async setState(e,t){let n=`${Iu}${this.id}`;if(t?.replace)await this._stateAdapter.set(n,e,yu);else{let t={...await this._stateAdapter.get(n),...e};await this._stateAdapter.set(n,t,yu)}}get channel(){if(!this._channel){let e=wu(this.adapter,this.id);this._channel=new Cu({id:e,adapter:this.adapter,stateAdapter:this._stateAdapter,isDM:this.isDM,channelVisibility:this.channelVisibility,threadHistory:this._threadHistory})}return this._channel}get messages(){let e=this.adapter,t=this.id,n=this._threadHistory;return{async*[Symbol.asyncIterator](){let r,i=!1;for(;;){let n=await e.fetchMessages(t,{cursor:r,direction:`backward`}),a=[...n.messages].reverse();for(let e of a)i=!0,yield e;if(!n.nextCursor||n.messages.length===0)break;r=n.nextCursor}if(!i&&n){let e=await n.getMessages(t);for(let t=e.length-1;t>=0;t--)yield e[t]}}}}get allMessages(){let e=this.adapter,t=this.id,n=this._threadHistory;return{async*[Symbol.asyncIterator](){let r,i=!1;for(;;){let n=await e.fetchMessages(t,{limit:100,cursor:r,direction:`forward`});for(let e of n.messages)i=!0,yield e;if(!n.nextCursor||n.messages.length===0)break;r=n.nextCursor}if(!i&&n){let e=await n.getMessages(t);for(let t of e)yield t}}}}async getParticipants(){let e=new Map;this._currentMessage&&!this._currentMessage.author.isMe&&!this._currentMessage.author.isBot&&e.set(this._currentMessage.author.userId,this._currentMessage.author);for await(let t of this.allMessages)t.author.isMe||t.author.isBot||e.has(t.author.userId)||e.set(t.author.userId,t.author);return[...e.values()]}async isSubscribed(){return this._isSubscribedContext?!0:this._stateAdapter.isSubscribed(this.id)}async subscribe(){await this._stateAdapter.subscribe(this.id),this.adapter.onThreadSubscribe&&await this.adapter.onThreadSubscribe(this.id)}async unsubscribe(){await this._stateAdapter.unsubscribe(this.id)}async post(e){if(pu(e)){if(e.kind===`stream`){let t=e.getPostData(),n={...t.options.updateIntervalMs?{updateIntervalMs:t.options.updateIntervalMs}:{},...t.options.groupTasks?{taskDisplayMode:t.options.groupTasks}:{},...t.options.endWith?{stopBlocks:t.options.endWith}:{}};return await this.handleStream(t.stream,n),e}return await this.handlePostableObject(e),e}if(Lu(e))return this.handleStream(e);let t=e;if(Y(e)){let n=J(e);if(!n)throw Error(`Invalid JSX element: must be a Card element`);t=n}t=await this.processCallbackUrls(t);let n=await this.adapter.postMessage(this.id,t),r=this.createSentMessage(n.id,t,n.threadId);return this._threadHistory&&await this._threadHistory.append(this.id,new Q(r)),r}async handlePostableObject(e){await mu(e,this.adapter,this.id,(e,t)=>this.adapter.postMessage(e,t),this._logger)}async postEphemeral(e,t,n){let{fallbackToDM:r}=n,i=typeof e==`string`?e:e.userId,a;if(Y(t)){let e=J(t);if(!e)throw Error(`Invalid JSX element: must be a Card element`);a=e}else a=t;if(a=await this.processCallbackUrls(a),this.adapter.postEphemeral)return this.adapter.postEphemeral(this.id,i,a);if(!r)return null;if(this.adapter.openDM){let e=await this.adapter.openDM(i),t=await this.adapter.postMessage(e,a);return{id:t.id,threadId:e,usedFallback:!0,raw:t.raw}}return null}async processCallbackUrls(e){if(typeof e==`string`)return e;if(`type`in e&&e.type===`card`)return tu(e,this._stateAdapter);if(`card`in e&&e.card?.type===`card`){let t=await tu(e.card,this._stateAdapter);if(t!==e.card)return{...e,card:t}}return e}async schedule(e,t){let n;if(Y(e)){let t=J(e);if(!t)throw Error(`Invalid JSX element: must be a Card element`);n=t}else n=e;if(n=await this.processCallbackUrls(n),!this.adapter.scheduleMessage)throw new _u(`Scheduled messages are not supported by this adapter`,`scheduling`);return this.adapter.scheduleMessage(this.id,n,t)}async handleStream(e,t){let n=lu(e),r={updateIntervalMs:this._streamingUpdateIntervalMs,...t};if(this._currentMessage&&(r.recipientUserId=this._currentMessage.author.userId,r.recipientTeamId=this.extractSlackRecipientTeamId(this._currentMessage.raw)),this.adapter.stream){let e=``,t={[Symbol.asyncIterator]:()=>{let t=n[Symbol.asyncIterator]();return{async next(){let n=await t.next();if(!n.done){let t=n.value;typeof t==`string`?e+=t:t.type===`markdown_text`&&(e+=t.text)}return n}}}},i=await this.adapter.stream(this.id,t,r);if(i){let t=this.createSentMessage(i.id,{markdown:e},i.threadId);return this._threadHistory&&await this._threadHistory.append(this.id,new Q(t)),t}}let i={[Symbol.asyncIterator]:()=>{let e=n[Symbol.asyncIterator]();return{async next(){for(;;){let t=await e.next();if(t.done)return{value:void 0,done:!0};let n=t.value;if(typeof n==`string`)return{value:n,done:!1};if(n.type===`markdown_text`)return{value:n.text,done:!1}}}}}};return this.fallbackStream(i,r)}extractSlackRecipientTeamId(e){if(!e||typeof e!=`object`)return;let t=e;if(typeof t.team_id==`string`&&t.team_id)return t.team_id;if(typeof t.team==`string`&&t.team)return t.team;if(t.team&&typeof t.team==`object`&&typeof t.team.id==`string`&&t.team.id)return t.team.id;if(typeof t.user?.team_id==`string`&&t.user.team_id)return t.user.team_id}async startTyping(e){await this.adapter.startTyping(this.id,e)}async fallbackStream(e,t){let n=t?.updateIntervalMs??this._streamingUpdateIntervalMs,r=this._fallbackStreamingPlaceholderText,i=r===null?null:await this.adapter.postMessage(this.id,r),a=this.id,o=new Eu,s=``,c=!1,l=null,u=null;i&&(a=i.threadId||this.id,s=r??``);let d=()=>{u=setTimeout(()=>{l=f()},n)},f=async()=>{if(c||!i)return;let e=o.render();if(e.trim()&&e!==s)try{await this.adapter.editMessage(a,i.id,{markdown:e}),s=e}catch(e){this._logger?.warn(`fallbackStream edit failed`,e)}c||d()};i&&d();try{for await(let t of e)if(o.push(t),!i){let e=o.render();e.trim()&&(i=await this.adapter.postMessage(this.id,{markdown:e}),a=i.threadId||this.id,s=e,d())}}finally{c=!0,u&&=(clearTimeout(u),null)}l&&await l;let p=o.getText(),m=o.finish();i||(i=await this.adapter.postMessage(this.id,{markdown:p.trim()?p:` `}),a=i.threadId||this.id,s=p),m.trim()&&m!==s&&await this.adapter.editMessage(a,i.id,{markdown:p});let h=this.createSentMessage(i.id,{markdown:p},a);return this._threadHistory&&await this._threadHistory.append(this.id,new Q(h)),h}async refresh(){let e=await this.adapter.fetchMessages(this.id,{limit:50});e.messages.length>0?this._recentMessages=e.messages:this._threadHistory?this._recentMessages=await this._threadHistory.getMessages(this.id,50):this._recentMessages=[]}mentionUser(e){return`<@${e}>`}toJSON(){return{_type:`chat:Thread`,id:this.id,channelId:this.channelId,channelVisibility:this.channelVisibility,currentMessage:this._currentMessage?.toJSON(),isDM:this.isDM,adapterName:this._adapterName??this.adapter.name}}static fromJSON(t,n){let r=new e({id:t.id,adapterName:t.adapterName,channelId:t.channelId,channelVisibility:t.channelVisibility,currentMessage:t.currentMessage?Q.fromJSON(t.currentMessage):void 0,isDM:t.isDM});return n&&(r._adapter=n),r}static[n](e){return e.toJSON()}static[i](t){return e.fromJSON(t)}createSentMessage(e,t,n){let r=this.adapter,i=n||this.id,a=this,{plainText:o,formatted:s,attachments:c}=zu(t);return{id:e,threadId:i,text:o,formatted:s,raw:null,links:[],author:{userId:`self`,userName:r.userName,fullName:r.userName,isBot:!0,isMe:!0},metadata:{dateSent:new Date,edited:!1},attachments:c,toJSON(){return new Q(this).toJSON()},async edit(t){let n=t;if(Y(t)){let e=J(t);if(!e)throw Error(`Invalid JSX element: must be a Card element`);n=e}return n=await a.processCallbackUrls(n),await r.editMessage(i,e,n),a.createSentMessage(e,n)},async delete(){await r.deleteMessage(i,e)},async addReaction(t){await r.addReaction(i,e,t)},async removeReaction(t){await r.removeReaction(i,e,t)}}}createSentMessageFromMessage(e){let t=this.adapter,n=this.id,r=e.id,i=this;return{id:e.id,threadId:e.threadId,text:e.text,formatted:e.formatted,raw:e.raw,author:e.author,metadata:e.metadata,attachments:e.attachments,links:e.links,isMention:e.isMention,toJSON(){return e.toJSON()},async edit(e){let a=e;if(Y(e)){let t=J(e);if(!t)throw Error(`Invalid JSX element: must be a Card element`);a=t}return a=await i.processCallbackUrls(a),await t.editMessage(n,r,a),i.createSentMessage(r,a,n)},async delete(){await t.deleteMessage(n,r)},async addReaction(e){await t.addReaction(n,r,e)},async removeReaction(e){await t.removeReaction(n,r,e)}}}};function zu(e){if(typeof e==`string`)return{plainText:e,formatted:q([K([G(e)])]),attachments:[]};if(`raw`in e)return{plainText:e.raw,formatted:q([K([G(e.raw)])]),attachments:e.attachments||[]};if(`markdown`in e){let t=ns(e.markdown);return{plainText:W(t),formatted:t,attachments:e.attachments||[]}}if(`ast`in e)return{plainText:W(e.ast),formatted:e.ast,attachments:e.attachments||[]};if(`card`in e){let t=e.fallbackText||Ns(e.card);return{plainText:t,formatted:q([K([G(t)])]),attachments:[]}}if(`type`in e&&e.type===`card`){let t=Ns(e);return{plainText:t,formatted:q([K([G(t)])]),attachments:[]}}throw Error(`Invalid PostableMessage format`)}function Bu(e,t){if(t&&typeof t==`object`&&`_type`in t){let e=t;if(e._type===`chat:Thread`)return Ru.fromJSON(t);if(e._type===`chat:Channel`)return Cu.fromJSON(t);if(e._type===`chat:Message`)return Q.fromJSON(t)}return t}var Vu=100,Hu=10080*60*1e3,Uu=`msg-history:`,Wu=class{state;maxMessages;ttlMs;constructor(e,t){this.state=e,this.maxMessages=t?.maxMessages??Vu,this.ttlMs=t?.ttlMs??Hu}async append(e,t){let n=`${Uu}${e}`,r=t.toJSON();r.raw=null,await this.state.appendToList(n,r,{maxLength:this.maxMessages,ttlMs:this.ttlMs})}async getMessages(e,t){let n=`${Uu}${e}`,r=await this.state.getList(n);return(t&&r.length>t?r.slice(r.length-t):r).map(e=>Q.fromJSON(e))}},Gu=`transcripts:user:`,Ku=200,qu=50,Ju=/^(\d+)([smhd])$/,Yu=`__chatSdkTombstone`;function Xu(e){return typeof e==`object`&&!!e&&e[Yu]===!0}var Zu={s:1e3,m:6e4,h:36e5,d:864e5},Qu=class{state;maxPerUser;retentionMs;storeFormatted;constructor(e,t){this.state=e,this.maxPerUser=t.maxPerUser??Ku,this.retentionMs=ed(t.retention),this.storeFormatted=t.storeFormatted??!1}async append(e,t,n){let r=t instanceof Q,i,a,o;if(r){if(i=t.userKey,a=`user`,o=t.id,!i)return null}else if(i=n?.userKey,a=t.role,o=t.platformMessageId,!i)throw Error(`transcripts.append: options.userKey is required when appending an AppendInput`);let s={id:crypto.randomUUID(),userKey:i,role:a,text:t.text,platform:e.adapter.name,threadId:e.id,timestamp:Date.now()};return this.storeFormatted&&t.formatted&&(s.formatted=t.formatted),o!==void 0&&(s.platformMessageId=o),await this.state.appendToList($u(i),s,{maxLength:this.maxPerUser,ttlMs:this.retentionMs}),s}async list(e){let t=(await this.state.getList($u(e.userKey))).filter(e=>!Xu(e));if(e.platforms&&e.platforms.length>0){let n=new Set(e.platforms);t=t.filter(e=>n.has(e.platform))}if(e.threadId!==void 0){let n=e.threadId;t=t.filter(e=>e.threadId===n)}if(e.roles&&e.roles.length>0){let n=new Set(e.roles);t=t.filter(e=>n.has(e.role))}let n=e.limit??qu;return t.length>n&&(t=t.slice(t.length-n)),t}async count(e){return(await this.state.getList($u(e.userKey))).filter(e=>!Xu(e)).length}async delete(e){let t=$u(e.userKey),n=(await this.state.getList(t)).filter(e=>!Xu(e)).length,r={[Yu]:!0};return await this.state.appendToList(t,r,{maxLength:1,ttlMs:this.retentionMs}),{deleted:n}}};function $u(e){return`${Gu}${e}`}function ed(e){if(e===void 0)return;if(typeof e==`number`)return e;let t=Ju.exec(e);if(!t)throw Error(`Invalid duration: ${e} (expected number of ms, or "<n>[smhd]")`);return Number.parseInt(t[1],10)*Zu[t[2]]}var td=3e4;function nd(e){return new Promise(t=>setTimeout(t,e))}var rd=/^[UW][A-Z0-9]+$/,id=/^\d{17,19}$/,ad=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,od=/^\d+$/,sd=300*1e3,cd=1440*60*1e3,ld=class{registerSingleton(){return au(this),this}get transcripts(){if(!this._transcripts)throw Error("chat.transcripts is not configured — pass `transcripts` and `identity` to ChatConfig to enable it");return this._transcripts}static getSingleton(){return ou()}static hasSingleton(){return su()}adapters;_stateAdapter;userName;logger;_streamingUpdateIntervalMs;_fallbackStreamingPlaceholderText;_dedupeTtlMs;_onLockConflict;_threadHistory;_identity;_transcripts;_concurrencyStrategy;_concurrencyConfig;_concurrentSlots=new Map;_lockScope;mentionHandlers=[];directMessageHandlers=[];messagePatterns=[];subscribedMessageHandlers=[];reactionHandlers=[];actionHandlers=[];optionsLoadHandlers=[];modalSubmitHandlers=[];modalCloseHandlers=[];slashCommandHandlers=[];assistantThreadStartedHandlers=[];assistantContextChangedHandlers=[];appHomeOpenedHandlers=[];memberJoinedChannelHandlers=[];initPromise=null;initialized=!1;webhooks;constructor(e){this.userName=e.userName,this._stateAdapter=e.state,this.adapters=new Map,this._streamingUpdateIntervalMs=e.streamingUpdateIntervalMs??500,this._fallbackStreamingPlaceholderText=e.fallbackStreamingPlaceholderText===void 0?`...`:e.fallbackStreamingPlaceholderText,this._dedupeTtlMs=e.dedupeTtlMs??sd,this._onLockConflict=e.onLockConflict,this._lockScope=e.lockScope,typeof e.logger==`string`?this.logger=new vu(e.logger):this.logger=e.logger||new vu(`info`);let t=e.concurrency;if(t)if(typeof t==`string`)this._concurrencyStrategy=t,this._concurrencyConfig={debounceMs:1500,maxConcurrent:1/0,maxQueueSize:10,onQueueFull:`drop-oldest`,queueEntryTtlMs:9e4};else{if(t.maxConcurrent!==void 0&&t.maxConcurrent<1)throw Error(`concurrency.maxConcurrent must be >= 1 (got ${t.maxConcurrent})`);t.maxConcurrent!==void 0&&t.strategy!==`concurrent`&&this.logger.warn(`concurrency.maxConcurrent has no effect when strategy is "${t.strategy}" \u2014 it only applies to the "concurrent" strategy.`),this._concurrencyStrategy=t.strategy,this._concurrencyConfig={debounceMs:t.debounceMs??1500,maxConcurrent:t.maxConcurrent??1/0,maxQueueSize:t.maxQueueSize??10,onQueueFull:t.onQueueFull??`drop-oldest`,queueEntryTtlMs:t.queueEntryTtlMs??9e4}}else this._concurrencyStrategy=`drop`,this._concurrencyConfig={debounceMs:1500,maxConcurrent:1/0,maxQueueSize:10,onQueueFull:`drop-oldest`,queueEntryTtlMs:9e4};if(this._threadHistory=new Wu(this._stateAdapter,e.threadHistory??e.messageHistory),e.transcripts){if(!e.identity)throw Error(`ChatConfig.transcripts requires ChatConfig.identity to be set — the cross-platform user key must be resolvable`);this._identity=e.identity,this._transcripts=new Qu(this._stateAdapter,e.transcripts)}else this._identity=e.identity;let n={};for(let[t,r]of Object.entries(e.adapters))this.adapters.set(t,r),n[t]=(e,n)=>this.handleWebhook(t,e,n);this.webhooks=n,this.logger.debug(`Chat instance created`,{adapters:Object.keys(e.adapters)})}async handleWebhook(e,t,n){await this.ensureInitialized();let r=this.adapters.get(e);return r?r.handleWebhook(t,n):new Response(`Unknown adapter: ${e}`,{status:404})}async ensureInitialized(){this.initialized||(this.initPromise||=this.doInitialize(),await this.initPromise)}async doInitialize(){this.logger.info(`Initializing chat instance...`),await this._stateAdapter.connect(),this.logger.debug(`State connected`);let e=Array.from(this.adapters.values()).map(async e=>{this.logger.debug(`Initializing adapter`,e.name);let t=await e.initialize(this);return this.logger.debug(`Adapter initialized`,e.name),t});await Promise.all(e),this.initialized=!0,this.logger.info(`Chat instance initialized`,{adapters:Array.from(this.adapters.keys())})}async shutdown(){this.logger.info(`Shutting down chat instance...`);let e=Array.from(this.adapters.values()).map(async e=>{e.disconnect&&(this.logger.debug(`Disconnecting adapter`,e.name),await e.disconnect(),this.logger.debug(`Adapter disconnected`,e.name))}),t=await Promise.allSettled(e);for(let e of t)e.status===`rejected`&&this.logger.error(`Adapter disconnect failed`,e.reason);await this._stateAdapter.disconnect(),this.initialized=!1,this.initPromise=null,this.logger.info(`Chat instance shut down`)}async initialize(){await this.ensureInitialized()}onNewMention(e){this.mentionHandlers.push(e),this.logger.debug(`Registered mention handler`)}onDirectMessage(e){this.directMessageHandlers.push(e),this.logger.debug(`Registered direct message handler`)}onNewMessage(e,t){this.messagePatterns.push({pattern:e,handler:t}),this.logger.debug(`Registered message pattern handler`,{pattern:e.toString()})}onSubscribedMessage(e){this.subscribedMessageHandlers.push(e),this.logger.debug(`Registered subscribed message handler`)}onReaction(e,t){typeof e==`function`?(this.reactionHandlers.push({emoji:[],handler:e}),this.logger.debug(`Registered reaction handler for all emoji`)):t&&(this.reactionHandlers.push({emoji:e,handler:t}),this.logger.debug(`Registered reaction handler`,{emoji:e.map(e=>typeof e==`string`?e:e.name)}))}onAction(e,t){if(typeof e==`function`)this.actionHandlers.push({actionIds:[],handler:e}),this.logger.debug(`Registered action handler for all actions`);else if(t){let n=Array.isArray(e)?e:[e];this.actionHandlers.push({actionIds:n,handler:t}),this.logger.debug(`Registered action handler`,{actionIds:n})}}onOptionsLoad(e,t){if(typeof e==`function`)this.optionsLoadHandlers.push({actionIds:[],handler:e}),this.logger.debug(`Registered options load handler for all action IDs`);else if(t){let n=Array.isArray(e)?e:[e];this.optionsLoadHandlers.push({actionIds:n,handler:t}),this.logger.debug(`Registered options load handler`,{actionIds:n})}}onModalSubmit(e,t){if(typeof e==`function`)this.modalSubmitHandlers.push({callbackIds:[],handler:e}),this.logger.debug(`Registered modal submit handler for all modals`);else if(t){let n=Array.isArray(e)?e:[e];this.modalSubmitHandlers.push({callbackIds:n,handler:t}),this.logger.debug(`Registered modal submit handler`,{callbackIds:n})}}onModalClose(e,t){if(typeof e==`function`)this.modalCloseHandlers.push({callbackIds:[],handler:e}),this.logger.debug(`Registered modal close handler for all modals`);else if(t){let n=Array.isArray(e)?e:[e];this.modalCloseHandlers.push({callbackIds:n,handler:t}),this.logger.debug(`Registered modal close handler`,{callbackIds:n})}}onSlashCommand(e,t){if(typeof e==`function`)this.slashCommandHandlers.push({commands:[],handler:e}),this.logger.debug(`Registered slash command handler for all commands`);else if(t){let n=(Array.isArray(e)?e:[e]).map(e=>e.startsWith(`/`)?e:`/${e}`);this.slashCommandHandlers.push({commands:n,handler:t}),this.logger.debug(`Registered slash command handler`,{commands:n})}}onAssistantThreadStarted(e){this.assistantThreadStartedHandlers.push(e),this.logger.debug(`Registered assistant thread started handler`)}onAssistantContextChanged(e){this.assistantContextChangedHandlers.push(e),this.logger.debug(`Registered assistant context changed handler`)}onAppHomeOpened(e){this.appHomeOpenedHandlers.push(e),this.logger.debug(`Registered app home opened handler`)}onMemberJoinedChannel(e){this.memberJoinedChannelHandlers.push(e),this.logger.debug(`Registered member joined channel handler`)}getAdapter(e){return this.adapters.get(e)}reviver(){return this.registerSingleton(),Bu}processMessage(e,t,n,r){let i=(async()=>{let r=typeof n==`function`?await n():n;await this.handleIncomingMessage(e,t,r)})(),a=i.catch(e=>{this.logger.error(`Message processing error`,{error:e,threadId:t})});return r?.waitUntil&&r.waitUntil(a),i}processReaction(e,t){let n=this.handleReactionEvent(e).catch(t=>{this.logger.error(`Reaction processing error`,{error:t,emoji:e.emoji,messageId:e.messageId})});t?.waitUntil&&t.waitUntil(n)}processAction(e,t){let n=this.handleActionEvent(e,t).catch(t=>{this.logger.error(`Action processing error`,{error:t,actionId:e.actionId,messageId:e.messageId})});return t?.waitUntil&&t.waitUntil(n),n}async processOptionsLoad(e,t){let n=[...this.optionsLoadHandlers.filter(({actionIds:t})=>t.length>0&&t.includes(e.actionId)),...this.optionsLoadHandlers.filter(({actionIds:e})=>e.length===0)];for(let{handler:t}of n)try{let n=await t(e);if(n)return n}catch(t){this.logger.error(`Options load handler error`,{error:t,actionId:e.actionId})}}async processModalSubmit(e,t,n){let{callbackUrl:r,relatedThread:i,relatedMessage:a,relatedChannel:o}=await this.retrieveModalContext(e.adapter.name,t),s={...e,relatedThread:i,relatedMessage:a,relatedChannel:o},c;for(let{callbackIds:t,handler:n}of this.modalSubmitHandlers)if(t.length===0||t.includes(e.callbackId))try{let e=await n(s);if(e){c=e;break}}catch(t){this.logger.error(`Modal submit handler error`,{error:t,callbackId:e.callbackId})}if(r&&c?.action!==`errors`){let t=ru(r,{type:`modal_submit`,callbackId:e.callbackId,values:e.values,user:{id:e.user.userId,name:e.user.userName}}).then(({error:e})=>{e&&this.logger.error(`Modal callbackUrl POST failed`,{callbackUrl:r,error:e})}).catch(e=>{this.logger.error(`Modal callbackUrl POST failed`,{callbackUrl:r,error:e})});n?.waitUntil&&n.waitUntil(t)}return c}processModalClose(e,t,n){let r=(async()=>{let{relatedThread:n,relatedMessage:r,relatedChannel:i}=await this.retrieveModalContext(e.adapter.name,t),a={...e,relatedThread:n,relatedMessage:r,relatedChannel:i};for(let{callbackIds:t,handler:n}of this.modalCloseHandlers)(t.length===0||t.includes(e.callbackId))&&await n(a)})().catch(t=>{this.logger.error(`Modal close handler error`,{error:t,callbackId:e.callbackId})});n?.waitUntil&&n.waitUntil(r)}processSlashCommand(e,t){let n=this.handleSlashCommandEvent(e,t).catch(t=>{this.logger.error(`Slash command processing error`,{error:t,command:e.command,text:e.text})});t?.waitUntil&&t.waitUntil(n)}processAssistantThreadStarted(e,t){let n=(async()=>{for(let t of this.assistantThreadStartedHandlers)await t(e)})().catch(t=>{this.logger.error(`Assistant thread started handler error`,{error:t,threadId:e.threadId})});t?.waitUntil&&t.waitUntil(n)}processAssistantContextChanged(e,t){let n=(async()=>{for(let t of this.assistantContextChangedHandlers)await t(e)})().catch(t=>{this.logger.error(`Assistant context changed handler error`,{error:t,threadId:e.threadId})});t?.waitUntil&&t.waitUntil(n)}processAppHomeOpened(e,t){let n=(async()=>{for(let t of this.appHomeOpenedHandlers)await t(e)})().catch(t=>{this.logger.error(`App home opened handler error`,{error:t,userId:e.userId})});t?.waitUntil&&t.waitUntil(n)}processMemberJoinedChannel(e,t){let n=(async()=>{for(let t of this.memberJoinedChannelHandlers)await t(e)})().catch(t=>{this.logger.error(`Member joined channel handler error`,{error:t,channelId:e.channelId,userId:e.userId})});t?.waitUntil&&t.waitUntil(n)}async handleSlashCommandEvent(e,t){if(this.logger.debug(`Incoming slash command`,{adapter:e.adapter.name,command:e.command,text:e.text,user:e.user.userName}),e.user.isMe){this.logger.debug(`Skipping slash command from self`,{command:e.command});return}let n=new Cu({id:e.channelId,adapter:e.adapter,stateAdapter:this._stateAdapter}),r={...e,channel:n,openModal:async r=>{if(!(e.triggerId||t?.onOpenModal)){this.logger.warn(`Cannot open modal: no triggerId available`);return}if(!(t?.onOpenModal||e.adapter.openModal)){this.logger.warn(`Cannot open modal: ${e.adapter.name} does not support modals`);return}let i=r;if(Y(r)){let e=uc(r);if(!e)throw Error(`Invalid JSX element: must be a Modal element`);i=e}let a=crypto.randomUUID();if(await this.storeModalContext(e.adapter.name,a,void 0,void 0,n,i.callbackUrl),t?.onOpenModal)return t.onOpenModal(i,a);if(e.triggerId&&e.adapter.openModal)return e.adapter.openModal(e.triggerId,i,a)}};this.logger.debug(`Checking slash command handlers`,{handlerCount:this.slashCommandHandlers.length,command:e.command});for(let{commands:t,handler:n}of this.slashCommandHandlers){if(t.length===0){this.logger.debug(`Running catch-all slash command handler`),await n(r);continue}t.includes(e.command)&&(this.logger.debug(`Running matched slash command handler`,{command:e.command}),await n(r))}}async storeModalContext(e,t,n,r,i,a){let o=`modal-context:${e}:${t}`,s={thread:n?.toJSON(),message:r?.toJSON(),channel:i?.toJSON(),callbackUrl:a};try{await this._stateAdapter.set(o,s,cd)}catch(e){this.logger.error(`Failed to store modal context`,{contextId:t,error:e})}}async retrieveModalContext(e,t){if(!t)return{callbackUrl:void 0,relatedThread:void 0,relatedMessage:void 0,relatedChannel:void 0};let n=`modal-context:${e}:${t}`,r=await this._stateAdapter.get(n);if(!r)return{callbackUrl:void 0,relatedThread:void 0,relatedMessage:void 0,relatedChannel:void 0};await this._stateAdapter.delete(n);let i=this.adapters.get(e),a;r.thread&&(a=Ru.fromJSON(r.thread,i));let o;if(r.message&&a){let e=Q.fromJSON(r.message);o=a.createSentMessageFromMessage(e)}let s;return r.channel&&(s=Cu.fromJSON(r.channel,i)),{callbackUrl:r.callbackUrl,relatedThread:a,relatedMessage:o,relatedChannel:s}}async handleActionEvent(e,t){if(this.logger.debug(`Incoming action`,{adapter:e.adapter.name,actionId:e.actionId,value:e.value,user:e.user.userName,messageId:e.messageId,threadId:e.threadId}),e.user.isMe){this.logger.debug(`Skipping action from self`,{actionId:e.actionId});return}let{callbackToken:n}=Xl(e.value),r=null;n&&(r=await nu(n,this._stateAdapter));let i=r?{...e,value:r.originalValue}:e,a;if(r){let t=r.url;a=(async()=>{let{error:n}=await ru(t,{type:`action`,actionId:e.actionId,value:r.originalValue,user:{id:e.user.userId,name:e.user.userName},threadId:e.threadId,messageId:e.messageId});n&&this.logger.error(`Button callbackUrl POST failed`,{callbackUrl:t,actionId:e.actionId,error:n})})()}let o=e.messageId?new Q({id:e.messageId,threadId:e.threadId,text:``,formatted:{type:`root`,children:[]},raw:e.raw,author:e.user,metadata:{dateSent:new Date,edited:!1},attachments:[]}):{},s=e.threadId?await this.createThread(e.adapter,e.threadId,o,!1):null,c={...i,thread:s,openModal:async n=>{if(!(e.triggerId||t?.onOpenModal)){this.logger.warn(`Cannot open modal: no triggerId available`);return}if(!(t?.onOpenModal||e.adapter.openModal)){this.logger.warn(`Cannot open modal: ${e.adapter.name} does not support modals`);return}let r=n;if(Y(n)){let e=uc(n);if(!e)throw Error(`Invalid JSX element: must be a Modal element`);r=e}let i;if(s){if(e.messageId?.startsWith(`ephemeral:`)){let e=s.recentMessages[0];e&&typeof e.toJSON==`function`&&(i=e)}else if(e.messageId&&e.adapter.fetchMessage){let t=await e.adapter.fetchMessage(e.threadId,e.messageId).catch(()=>null);if(t)i=new Q(t);else{let e=s.recentMessages[0];e&&typeof e.toJSON==`function`&&(i=e)}}}let a=crypto.randomUUID(),o=s?s.channel:void 0;if(await this.storeModalContext(e.adapter.name,a,s||void 0,i,o,r.callbackUrl),t?.onOpenModal)return t.onOpenModal(r,a);if(e.triggerId&&e.adapter.openModal)return e.adapter.openModal(e.triggerId,r,a)}};this.logger.debug(`Checking action handlers`,{handlerCount:this.actionHandlers.length,actionId:e.actionId});for(let{actionIds:t,handler:n}of this.actionHandlers){if(t.length===0){this.logger.debug(`Running catch-all action handler`),await n(c);continue}t.includes(e.actionId)&&(this.logger.debug(`Running matched action handler`,{actionId:e.actionId}),await n(c))}a&&await a}async handleReactionEvent(e){if(this.logger.debug(`Incoming reaction`,{adapter:e.adapter?.name,emoji:e.emoji,rawEmoji:e.rawEmoji,added:e.added,user:e.user.userName,messageId:e.messageId,threadId:e.threadId}),e.user.isMe){this.logger.debug(`Skipping reaction from self`,{emoji:e.emoji});return}if(!e.adapter){this.logger.error(`Reaction event missing adapter`);return}let t=await this._stateAdapter.isSubscribed(e.threadId),n=await this.createThread(e.adapter,e.threadId,e.message??{},t),r={...e,adapter:e.adapter,thread:n};this.logger.debug(`Checking reaction handlers`,{handlerCount:this.reactionHandlers.length,emoji:e.emoji.name,rawEmoji:e.rawEmoji});for(let{emoji:e,handler:t}of this.reactionHandlers){if(e.length===0){this.logger.debug(`Running catch-all reaction handler`),await t(r);continue}let n=e.some(e=>{if(e===r.emoji)return!0;let t=typeof e==`string`?e:e.name;return t===r.emoji.name||t===r.rawEmoji});this.logger.debug(`Reaction filter check`,{filterEmoji:e.map(e=>typeof e==`string`?e:e.name),eventEmoji:r.emoji.name,matches:n}),n&&(this.logger.debug(`Running matched reaction handler`),await t(r))}}getState(){return this._stateAdapter}getUserName(){return this.userName}getLogger(e){return e?this.logger.child(e):this.logger}async openDM(e){let t=typeof e==`string`?e:e.userId,n=this.inferAdapterFromUserId(t);if(!n.openDM)throw new $(`Adapter "${n.name}" does not support openDM`,`NOT_SUPPORTED`);let r=await n.openDM(t);return this.createThread(n,r,{},!1)}async getUser(e){let t=typeof e==`string`?e:e.userId,n=this.inferAdapterFromUserId(t);if(!n.getUser)throw new $(`Adapter "${n.name}" does not support getUser`,`NOT_SUPPORTED`);return n.getUser(t)}channel(e){let t=e.split(`:`)[0];if(!t)throw new $(`Invalid channel ID: ${e}`,`INVALID_CHANNEL_ID`);let n=this.adapters.get(t);if(!n)throw new $(`Adapter "${t}" not found for channel ID "${e}"`,`ADAPTER_NOT_FOUND`);return new Cu({id:e,adapter:n,stateAdapter:this._stateAdapter})}thread(e){let t=e.split(`:`)[0];if(!t)throw new $(`Invalid thread ID: ${e}`,`INVALID_THREAD_ID`);let n=this.adapters.get(t);if(!n)throw new $(`Adapter "${t}" not found for thread ID "${e}"`,`ADAPTER_NOT_FOUND`);return this.createThread(n,e,{},!1)}inferAdapterFromUserId(e){if(e.startsWith(`users/`)){let e=this.adapters.get(`gchat`);if(e)return e}if(e.startsWith(`29:`)){let e=this.adapters.get(`teams`);if(e)return e}if(ad.test(e)){let e=this.adapters.get(`linear`);if(e)return e}if(rd.test(e)){let e=this.adapters.get(`slack`);if(e)return e}if(od.test(e)){let t=[];if(id.test(e)&&this.adapters.has(`discord`)&&t.push(`discord`),this.adapters.has(`telegram`)&&t.push(`telegram`),this.adapters.has(`github`)&&t.push(`github`),t.length===1){let e=this.adapters.get(t[0]);if(e)return e}if(t.length>1)throw new $(`Numeric userId "${e}" is ambiguous between adapters: ${t.join(`, `)}. Call the platform's adapter directly (e.g. \`adapter.getUser(userId)\`).`,`AMBIGUOUS_USER_ID`)}throw new $(`Cannot infer adapter from userId "${e}". Expected: Slack ("U..."), Teams ("29:..."), Google Chat ("users/..."), Linear (UUID), or Discord/Telegram/GitHub (numeric).`,`UNKNOWN_USER_ID_FORMAT`)}async getLockKey(e,t){let n=e.channelIdFromThreadId(t),r;if(typeof this._lockScope==`function`){let i=e.isDM?.(t)??!1;r=await this._lockScope({adapter:e,channelId:n,isDM:i,threadId:t})}else r=this._lockScope??e.lockScope??`thread`;return r===`channel`?n:t}async handleIncomingMessage(e,t,n){if(du(n,e),this.logger.debug(`Incoming message`,{adapter:e.name,threadId:t,messageId:n.id,text:n.text,author:n.author.userName,authorUserId:n.author.userId,isBot:n.author.isBot,isMe:n.author.isMe}),n.author.isMe){this.logger.debug(`Skipping message from self (isMe=true)`,{adapter:e.name,threadId:t,author:n.author.userName});return}let r=`dedupe:${e.name}:${n.id}`;if(!await this._stateAdapter.setIfNotExists(r,!0,this._dedupeTtlMs)){this.logger.debug(`Skipping duplicate message`,{adapter:e.name,messageId:n.id});return}if(e.persistThreadHistory||e.persistMessageHistory){let r=e.channelIdFromThreadId(t),i=[this._threadHistory.append(t,n)];r!==t&&i.push(this._threadHistory.append(r,n)),await Promise.all(i)}let i=await this.getLockKey(e,t),a=this._concurrencyStrategy;if(a===`concurrent`){await this.handleConcurrent(e,t,n);return}if(a===`queue`||a===`debounce`||a===`burst`){await this.handleQueueOrDebounce(e,t,i,n,a);return}await this.handleDrop(e,t,i,n)}async handleDrop(e,t,n,r){let i=await this._stateAdapter.acquireLock(n,td);if(!i&&((typeof this._onLockConflict==`function`?await this._onLockConflict(t,r):this._onLockConflict??`drop`)===`force`&&(this.logger.info(`Force-releasing lock on thread`,{threadId:t,lockKey:n}),await this._stateAdapter.forceReleaseLock(n),i=await this._stateAdapter.acquireLock(n,td)),!i))throw this.logger.warn(`Could not acquire lock on thread`,{threadId:t,lockKey:n}),new gu(`Could not acquire lock on thread ${t}. Another instance may be processing.`);this.logger.debug(`Lock acquired`,{threadId:t,lockKey:n,token:i.token});try{await this.dispatchToHandlers(e,t,r)}finally{await this._stateAdapter.releaseLock(i),this.logger.debug(`Lock released`,{threadId:t,lockKey:n})}}async handleQueueOrDebounce(e,t,n,r,i){let{maxQueueSize:a,queueEntryTtlMs:o,onQueueFull:s,debounceMs:c}=this._concurrencyConfig,l=await this._stateAdapter.acquireLock(n,td);if(!l){let e=i===`debounce`?1:a,c=await this._stateAdapter.queueDepth(n);if(c>=e&&i!==`debounce`&&s===`drop-newest`){this.logger.info(`message-dropped`,{threadId:t,lockKey:n,messageId:r.id,reason:`queue-full`});return}await this._stateAdapter.enqueue(n,{message:r,enqueuedAt:Date.now(),expiresAt:Date.now()+o},e),this.logger.info(i===`debounce`?`message-debounce-reset`:`message-queued`,{threadId:t,lockKey:n,messageId:r.id,queueDepth:Math.min(c+1,e)});return}this.logger.debug(`Lock acquired`,{threadId:t,lockKey:n,token:l.token});try{i===`debounce`?(await this._stateAdapter.enqueue(n,{message:r,enqueuedAt:Date.now(),expiresAt:Date.now()+o},1),this.logger.info(`message-debouncing`,{threadId:t,lockKey:n,messageId:r.id,debounceMs:c}),await this.debounceLoop(l,e,t,n)):i===`burst`?(await this._stateAdapter.enqueue(n,{message:r,enqueuedAt:Date.now(),expiresAt:Date.now()+o},a),this.logger.info(`message-debouncing`,{threadId:t,lockKey:n,messageId:r.id,debounceMs:c}),await nd(c),await this._stateAdapter.extendLock(l,td),await this.drainQueue(l,e,t,n)):(await this.dispatchToHandlers(e,t,r),await this.drainQueue(l,e,t,n))}finally{await this._stateAdapter.releaseLock(l),this.logger.debug(`Lock released`,{threadId:t,lockKey:n})}}async debounceLoop(e,t,n,r){let{debounceMs:i}=this._concurrencyConfig;for(;;){await nd(i),await this._stateAdapter.extendLock(e,td);let a=await this._stateAdapter.dequeue(r);if(!a)break;let o=this.rehydrateMessage(a.message,t);if(Date.now()>a.expiresAt){this.logger.info(`message-expired`,{threadId:n,lockKey:r,messageId:o.id});continue}if(await this._stateAdapter.queueDepth(r)>0){this.logger.info(`message-superseded`,{threadId:n,lockKey:r,droppedId:o.id});continue}this.logger.info(`message-dequeued`,{threadId:n,lockKey:r,messageId:o.id}),await this.dispatchToHandlers(t,n,o);break}}async drainQueue(e,t,n,r){for(;;){let i=[];for(;;){let e=await this._stateAdapter.dequeue(r);if(!e)break;let a=this.rehydrateMessage(e.message,t);Date.now()<=e.expiresAt?i.push({message:a,expiresAt:e.expiresAt}):this.logger.info(`message-expired`,{threadId:n,lockKey:r,messageId:a.id})}if(i.length===0)return;await this._stateAdapter.extendLock(e,td);let a=i.at(-1);if(!a)return;let o=i.slice(0,-1).map(e=>e.message);this.logger.info(`message-dequeued`,{threadId:n,lockKey:r,messageId:a.message.id,skippedCount:o.length,totalSinceLastHandler:i.length});let s={skipped:o,totalSinceLastHandler:i.length};await this.dispatchToHandlers(t,n,a.message,s)}}async handleConcurrent(e,t,n){let{maxConcurrent:r}=this._concurrencyConfig;if(!Number.isFinite(r)){await this.dispatchToHandlers(e,t,n);return}await this.acquireConcurrentSlot(t,r);try{await this.dispatchToHandlers(e,t,n)}finally{this.releaseConcurrentSlot(t)}}acquireConcurrentSlot(e,t){let n=this._concurrentSlots.get(e);return n||(n={inFlight:0,waiters:[]},this._concurrentSlots.set(e,n)),n.inFlight<t?(n.inFlight++,Promise.resolve()):new Promise(e=>{n.waiters.push(e)})}releaseConcurrentSlot(e){let t=this._concurrentSlots.get(e);if(!t)return;let n=t.waiters.shift();if(n){n();return}t.inFlight--,t.inFlight===0&&t.waiters.length===0&&this._concurrentSlots.delete(e)}async dispatchToHandlers(e,t,n,r){n.isMention=n.isMention||this.detectMention(e,n);let i=await this._stateAdapter.isSubscribed(t);this.logger.debug(`Subscription check`,{threadId:t,isSubscribed:i,subscribedHandlerCount:this.subscribedMessageHandlers.length});let a=await this.createThread(e,t,n,i);if(this._identity&&n.userKey===void 0)try{let t=await this._identity({adapter:e.name,author:n.author,message:n});t&&(n.userKey=t)}catch(r){this.logger.warn(`Identity resolver threw; skipping userKey`,{error:r,adapter:e.name,threadId:t,authorUserId:n.author.userId})}let o=e.isDM?.(t)??!1;if(o&&this.directMessageHandlers.length>0){this.logger.debug(`Direct message received - calling handlers`,{threadId:t,handlerCount:this.directMessageHandlers.length});let e=a.channel;for(let t of this.directMessageHandlers)await t(a,n,e,r);return}if(o&&(n.isMention=!0),i){this.logger.debug(`Message in subscribed thread - calling handlers`,{threadId:t,handlerCount:this.subscribedMessageHandlers.length}),await this.runHandlers(this.subscribedMessageHandlers,a,n,r);return}if(n.isMention){this.logger.debug(`Bot mentioned`,{threadId:t,text:n.text.slice(0,100)}),await this.runHandlers(this.mentionHandlers,a,n,r);return}this.logger.debug(`Checking message patterns`,{patternCount:this.messagePatterns.length,patterns:this.messagePatterns.map(e=>e.pattern.toString()),messageText:n.text});let s=!1;for(let{pattern:e,handler:t}of this.messagePatterns){let i=e.test(n.text);this.logger.debug(`Pattern test`,{pattern:e.toString(),text:n.text,matches:i}),i&&(this.logger.debug(`Message matched pattern - calling handler`,{pattern:e.toString()}),s=!0,await t(a,n,r))}s||this.logger.debug(`No handlers matched message`,{threadId:t,text:n.text.slice(0,100)})}createThread(e,t,n,r=!1){let i=e.channelIdFromThreadId(t),a=e.isDM?.(t)??!1,o=e.getChannelVisibility?.(t)??`unknown`;return new Ru({id:t,adapter:e,channelId:i,stateAdapter:this._stateAdapter,initialMessage:n,isSubscribedContext:r,isDM:a,channelVisibility:o,currentMessage:n,logger:this.logger,streamingUpdateIntervalMs:this._streamingUpdateIntervalMs,fallbackStreamingPlaceholderText:this._fallbackStreamingPlaceholderText,threadHistory:e.persistThreadHistory||e.persistMessageHistory?this._threadHistory:void 0})}detectMention(e,t){let n=e.userName||this.userName,r=e.botUserId;return!!(RegExp(`@${this.escapeRegex(n)}\\b`,`i`).test(t.text)||r&&(RegExp(`@${this.escapeRegex(r)}\\b`,`i`).test(t.text)||RegExp(`<@!?${this.escapeRegex(r)}>`,`i`).test(t.text)))}escapeRegex(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}rehydrateMessage(e,t){if(e instanceof Q)return t&&du(e,t),e;let n=e,r;if(n._type===`chat:Message`)r=Q.fromJSON(n);else{let e=n.metadata,t=e.dateSent,i=e.editedAt;r=new Q({id:n.id,threadId:n.threadId,text:n.text,formatted:n.formatted,raw:n.raw,author:n.author,metadata:{dateSent:t instanceof Date?t:new Date(t),edited:e.edited,editedAt:i?new Date(i instanceof Date?i.toISOString():i):void 0},attachments:n.attachments??[],isMention:n.isMention,links:n.links??[]})}t&&du(r,t);let i=t?.rehydrateAttachment?.bind(t);return i&&r.attachments.length>0&&(r.attachments=r.attachments.map(e=>e.fetchData?e:i(e))),r}async runHandlers(e,t,n,r){for(let i of e)await i(t,n,r)}},ud=Wu;function dd(e){return e?Array.isArray(e)?e.join(` `).trim():typeof e==`string`?e:`markdown`in e?W(ns(e.markdown)):`ast`in e?W(e.ast):``:``}var fd=class{$$typeof=fu;kind=`plan`;_model;_bound=null;constructor(e){let t=dd(e.initialMessage)||`Plan`,n={id:crypto.randomUUID(),title:t,status:`in_progress`};this._model={title:t,tasks:[n]}}isSupported(e){return!!e.postObject&&!!e.editObject}getPostData(){return this._model}getFallbackText(){let e=[];e.push(`\u{1F4CB} ${this._model.title||`Plan`}`);for(let t of this._model.tasks){let n={complete:`✅`,in_progress:`🔄`,error:`❌`}[t.status]??`⬜`;e.push(`${n} ${t.title}`)}return e.join(`
|
|
90
90
|
`)}onPosted(e){this._bound={adapter:e.adapter,fallback:!this.isSupported(e.adapter),logger:e.logger,messageId:e.messageId,threadId:e.threadId,updateChain:Promise.resolve()}}get id(){return this._bound?.messageId??``}get threadId(){return this._bound?.threadId??``}get title(){return this._model.title}get tasks(){return this._model.tasks.map(e=>({id:e.id,title:e.title,status:e.status}))}get currentTask(){let e;for(let t=this._model.tasks.length-1;t>=0;t--)if(this._model.tasks[t].status===`in_progress`){e=this._model.tasks[t];break}return e??=this._model.tasks.at(-1),e?{id:e.id,title:e.title,status:e.status}:null}async addTask(e){if(!this.canMutate())return null;let t=dd(e.title)||`Task`;for(let e of this._model.tasks)e.status===`in_progress`&&(e.status=`complete`);let n={id:crypto.randomUUID(),title:t,status:`in_progress`,details:e.children};return this._model.tasks.push(n),this._model.title=t,await this.enqueueEdit(),{id:n.id,title:n.title,status:n.status}}async updateTask(e){if(!this.canMutate())return null;let t;if(typeof e==`object`&&e&&`id`in e&&e.id)t=this._model.tasks.find(t=>t.id===e.id);else{for(let e=this._model.tasks.length-1;e>=0;e--)if(this._model.tasks[e].status===`in_progress`){t=this._model.tasks[e];break}t??=this._model.tasks.at(-1)}return t?(e!==void 0&&(typeof e==`object`&&e&&`output`in e?(e.output!==void 0&&(t.output=e.output),e.status&&(t.status=e.status)):t.output=e),await this.enqueueEdit(),{id:t.id,title:t.title,status:t.status}):null}async reset(e){if(!this.canMutate())return null;let t=dd(e.initialMessage)||`Plan`,n={id:crypto.randomUUID(),title:t,status:`in_progress`};return this._model={title:t,tasks:[n]},await this.enqueueEdit(),{id:n.id,title:n.title,status:n.status}}async complete(e){if(this.canMutate()){for(let e of this._model.tasks)e.status===`in_progress`&&(e.status=`complete`);this._model.title=dd(e.completeMessage)||this._model.title,await this.enqueueEdit()}}canMutate(){return!!this._bound}enqueueEdit(){if(!this._bound)return Promise.resolve();let e=this._bound,t=async()=>{if(e.fallback)await e.adapter.editMessage(e.threadId,e.messageId,this.getFallbackText());else{let t=e.adapter.editObject;if(!t)return;await t.call(e.adapter,e.threadId,e.messageId,this.kind,this._model)}},n=e.updateChain.then(t,t);return e.updateChain=n.then(()=>void 0,t=>{e.logger?.warn(`Failed to edit plan`,t)}),n}},pd=class{$$typeof=fu;kind=`stream`;_stream;_options;constructor(e,t={}){this._stream=e,this._options=t}get stream(){return this._stream}get options(){return this._options}getFallbackText(){return``}getPostData(){return{stream:this._stream,options:this._options}}isSupported(e){return!0}onPosted(e){}},md=new Map;function hd(e){let t=md.get(e);return t||(t=Object.freeze({name:e,toString:()=>`{{emoji:${e}}}`,toJSON:()=>`{{emoji:${e}}}`}),md.set(e,t)),t}var gd={thumbs_up:{slack:[`+1`,`thumbsup`],gchat:`👍`},thumbs_down:{slack:[`-1`,`thumbsdown`],gchat:`👎`},clap:{slack:`clap`,gchat:`👏`},wave:{slack:`wave`,gchat:`👋`},pray:{slack:`pray`,gchat:`🙏`},muscle:{slack:`muscle`,gchat:`💪`},ok_hand:{slack:`ok_hand`,gchat:`👌`},point_up:{slack:`point_up`,gchat:`👆`},point_down:{slack:`point_down`,gchat:`👇`},point_left:{slack:`point_left`,gchat:`👈`},point_right:{slack:`point_right`,gchat:`👉`},raised_hands:{slack:`raised_hands`,gchat:`🙌`},shrug:{slack:`shrug`,gchat:`🤷`},facepalm:{slack:`facepalm`,gchat:`🤦`},heart:{slack:`heart`,gchat:[`❤️`,`❤`]},smile:{slack:[`smile`,`slightly_smiling_face`],gchat:`😊`},laugh:{slack:[`laughing`,`satisfied`,`joy`],gchat:[`😂`,`😆`]},thinking:{slack:`thinking_face`,gchat:`🤔`},sad:{slack:[`cry`,`sad`,`white_frowning_face`],gchat:`😢`},cry:{slack:`sob`,gchat:`😭`},angry:{slack:`angry`,gchat:`😠`},love_eyes:{slack:`heart_eyes`,gchat:`😍`},cool:{slack:`sunglasses`,gchat:`😎`},wink:{slack:`wink`,gchat:`😉`},surprised:{slack:`open_mouth`,gchat:`😮`},worried:{slack:`worried`,gchat:`😟`},confused:{slack:`confused`,gchat:`😕`},neutral:{slack:`neutral_face`,gchat:`😐`},sleeping:{slack:`sleeping`,gchat:`😴`},sick:{slack:`nauseated_face`,gchat:`🤢`},mind_blown:{slack:`exploding_head`,gchat:`🤯`},relieved:{slack:`relieved`,gchat:`😌`},grimace:{slack:`grimacing`,gchat:`😬`},rolling_eyes:{slack:`rolling_eyes`,gchat:`🙄`},hug:{slack:`hugging_face`,gchat:`🤗`},zany:{slack:`zany_face`,gchat:`🤪`},check:{slack:[`white_check_mark`,`heavy_check_mark`],gchat:[`✅`,`✔️`]},x:{slack:[`x`,`heavy_multiplication_x`],gchat:[`❌`,`✖️`]},question:{slack:`question`,gchat:[`❓`,`?`]},exclamation:{slack:`exclamation`,gchat:`❗`},warning:{slack:`warning`,gchat:`⚠️`},stop:{slack:`octagonal_sign`,gchat:`🛑`},info:{slack:`information_source`,gchat:`ℹ️`},100:{slack:`100`,gchat:`💯`},fire:{slack:`fire`,gchat:`🔥`},star:{slack:`star`,gchat:`⭐`},sparkles:{slack:`sparkles`,gchat:`✨`},lightning:{slack:`zap`,gchat:`⚡`},boom:{slack:`boom`,gchat:`💥`},eyes:{slack:`eyes`,gchat:`👀`},green_circle:{slack:`large_green_circle`,gchat:`🟢`},yellow_circle:{slack:`large_yellow_circle`,gchat:`🟡`},red_circle:{slack:`red_circle`,gchat:`🔴`},blue_circle:{slack:`large_blue_circle`,gchat:`🔵`},white_circle:{slack:`white_circle`,gchat:`⚪`},black_circle:{slack:`black_circle`,gchat:`⚫`},rocket:{slack:`rocket`,gchat:`🚀`},party:{slack:[`tada`,`partying_face`],gchat:[`🎉`,`🥳`]},confetti:{slack:`confetti_ball`,gchat:`🎊`},balloon:{slack:`balloon`,gchat:`🎈`},gift:{slack:`gift`,gchat:`🎁`},trophy:{slack:`trophy`,gchat:`🏆`},medal:{slack:`first_place_medal`,gchat:`🥇`},lightbulb:{slack:`bulb`,gchat:`💡`},gear:{slack:`gear`,gchat:`⚙️`},wrench:{slack:`wrench`,gchat:`🔧`},hammer:{slack:`hammer`,gchat:`🔨`},bug:{slack:`bug`,gchat:`🐛`},link:{slack:`link`,gchat:`🔗`},lock:{slack:`lock`,gchat:`🔒`},unlock:{slack:`unlock`,gchat:`🔓`},key:{slack:`key`,gchat:`🔑`},pin:{slack:`pushpin`,gchat:`📌`},memo:{slack:`memo`,gchat:`📝`},clipboard:{slack:`clipboard`,gchat:`📋`},calendar:{slack:`calendar`,gchat:`📅`},clock:{slack:`clock1`,gchat:`🕐`},hourglass:{slack:`hourglass`,gchat:`⏳`},bell:{slack:`bell`,gchat:`🔔`},megaphone:{slack:`mega`,gchat:`📢`},speech_bubble:{slack:`speech_balloon`,gchat:`💬`},email:{slack:`email`,gchat:`📧`},inbox:{slack:`inbox_tray`,gchat:`📥`},outbox:{slack:`outbox_tray`,gchat:`📤`},package:{slack:`package`,gchat:`📦`},folder:{slack:`file_folder`,gchat:`📁`},file:{slack:`page_facing_up`,gchat:`📄`},chart_up:{slack:`chart_with_upwards_trend`,gchat:`📈`},chart_down:{slack:`chart_with_downwards_trend`,gchat:`📉`},coffee:{slack:`coffee`,gchat:`☕`},pizza:{slack:`pizza`,gchat:`🍕`},beer:{slack:`beer`,gchat:`🍺`},arrow_up:{slack:`arrow_up`,gchat:`⬆️`},arrow_down:{slack:`arrow_down`,gchat:`⬇️`},arrow_left:{slack:`arrow_left`,gchat:`⬅️`},arrow_right:{slack:`arrow_right`,gchat:`➡️`},refresh:{slack:`arrows_counterclockwise`,gchat:`🔄`},sun:{slack:`sunny`,gchat:`☀️`},cloud:{slack:`cloud`,gchat:`☁️`},rain:{slack:`rain_cloud`,gchat:`🌧️`},snow:{slack:`snowflake`,gchat:`❄️`},rainbow:{slack:`rainbow`,gchat:`🌈`}},_d=class{emojiMap;slackToNormalized;gchatToNormalized;constructor(e){this.emojiMap={...gd,...e},this.slackToNormalized=new Map,this.gchatToNormalized=new Map,this.buildReverseMaps()}buildReverseMaps(){for(let[e,t]of Object.entries(this.emojiMap)){let n=Array.isArray(t.slack)?t.slack:[t.slack];for(let t of n)this.slackToNormalized.set(t.toLowerCase(),e);let r=Array.isArray(t.gchat)?t.gchat:[t.gchat];for(let t of r)this.gchatToNormalized.set(t,e)}}fromSlack(e){let t=e.replace(/^:|:$/g,``).toLowerCase();return hd(this.slackToNormalized.get(t)??e)}fromGChat(e){return hd(this.gchatToNormalized.get(e)??e)}fromTeams(e){return hd({like:`thumbs_up`,heart:`heart`,laugh:`laugh`,surprised:`surprised`,sad:`sad`,angry:`angry`}[e]??e)}toSlack(e){let t=typeof e==`string`?e:e.name,n=this.emojiMap[t];return n?Array.isArray(n.slack)?n.slack[0]:n.slack:t}toGChat(e){let t=typeof e==`string`?e:e.name,n=this.emojiMap[t];return n?Array.isArray(n.gchat)?n.gchat[0]:n.gchat:t}toDiscord(e){return this.toGChat(e)}matches(e,t){let n=typeof t==`string`?t:t.name,r=this.emojiMap[n];if(!r)return e===n;let i=Array.isArray(r.slack)?r.slack:[r.slack],a=Array.isArray(r.gchat)?r.gchat:[r.gchat],o=e.replace(/^:|:$/g,``).toLowerCase();return i.some(e=>e.toLowerCase()===o)||a.includes(e)}extend(e){Object.assign(this.emojiMap,e),this.buildReverseMaps()}},vd=new _d,yd=/\{\{emoji:([a-z0-9_]+)\}\}/gi;function bd(e,t,n=vd){return e.replace(yd,(e,r)=>{switch(t){case`slack`:return`:${n.toSlack(r)}:`;case`gchat`:return n.toGChat(r);case`teams`:return n.toGChat(r);case`discord`:return n.toDiscord(r);case`messenger`:return n.toGChat(r);case`github`:return n.toGChat(r);case`linear`:return n.toGChat(r);case`whatsapp`:return n.toGChat(r);default:return n.toGChat(r)}})}function xd(e){let t=`thumbs_up.thumbs_down.clap.wave.pray.muscle.ok_hand.point_up.point_down.point_left.point_right.raised_hands.shrug.facepalm.heart.smile.laugh.thinking.sad.cry.angry.love_eyes.cool.wink.surprised.worried.confused.neutral.sleeping.sick.mind_blown.relieved.grimace.rolling_eyes.hug.zany.check.x.question.exclamation.warning.stop.info.100.fire.star.sparkles.lightning.boom.eyes.green_circle.yellow_circle.red_circle.blue_circle.white_circle.black_circle.rocket.party.confetti.balloon.gift.trophy.medal.lightbulb.gear.wrench.hammer.bug.link.lock.unlock.key.pin.memo.clipboard.calendar.clock.hourglass.bell.megaphone.speech_bubble.email.inbox.outbox.package.folder.file.chart_up.chart_down.coffee.pizza.beer.arrow_up.arrow_down.arrow_left.arrow_right.refresh.sun.cloud.rain.snow.rainbow`.split(`.`),n={custom:e=>hd(e)};for(let e of t)n[e]=hd(e);if(e){for(let t of Object.keys(e))n[t]=hd(t);vd.extend(e)}return n}var Sd=xd(),Cd=xs,wd=Ss,Td=hs,Ed=Ps,Dd=Ds,Od=_s,kd=ys,Ad=ws,jd=Ts,Md=As,Nd=vs,Pd=ms,Fd=Y,Id=Cs,Ld=bs,Rd=Es,zd=J,Bd=uc,Vd=Ks,Hd=Is,Ud=Vs,Wd=Rs,Gd=Us,Kd=Bs,qd=Hs,Jd=zs;export{mc as $,pd as A,Qo as At,wu as B,fd as C,K as Ct,Kd as D,rs as Dt,Ld as E,cs as Et,Ru as F,hd as G,lu as H,Ed as I,Hd as J,Pd as K,bd as L,Rd as M,W as Mt,Jd as N,as as Nt,qd as O,os as Ot,Wu as P,Bd as Q,xd as R,_u as S,is as St,hu as T,q as Tt,Md as U,Sd as V,Vd as W,Bu as X,pu as Y,zd as Z,Id as _,Zo as _t,Od as a,ts as at,ud as b,Ro as bt,$ as c,Wo as ct,kd as d,Uo as dt,ps as et,_d as f,Go as ft,Nd as g,Bo as gt,jd as h,zo as ht,Dd as i,es as it,yu as j,G as jt,Eu as k,$o as kt,vu as l,Ho as lt,Ad as m,qo as mt,wd as n,us as nt,Cu as o,ls as ot,Ud as p,Jo as pt,Fd as q,Td as r,ss as rt,ld as s,Ko as st,Cd as t,fs as tt,gd as u,Vo as ut,gu as v,Yo as vt,Gd as w,ns as wt,Wd as x,ds as xt,Q as y,Xo as yt,vd as z};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export {
|
|
1
|
+
import { ay as PostableObject, b as Adapter, az as PostableObjectContext, aN as StreamChunk, aU as ThreadHistoryCache, aV as ThreadHistoryConfig, aO as StreamEvent, L as EmojiFormats, M as EmojiMapConfig, N as EmojiValue, b4 as WellKnownEmoji, G as CustomEmojiMap, c as AdapterPostableMessage } from './chat-BjhJs_sP.js';
|
|
2
|
+
export { A as ActionEvent, a as ActionHandler, d as AiAssistantMessage, e as AiFilePart, f as AiImagePart, g as AiMessage, h as AiMessagePart, i as AiTextPart, j as AiUserMessage, k as AppHomeOpenedEvent, l as AppHomeOpenedHandler, m as AppendInput, n as AppendOptions, o as AssistantContextChangedEvent, p as AssistantContextChangedHandler, q as AssistantThreadStartedEvent, r as AssistantThreadStartedHandler, s as Attachment, t as Author, C as Channel, u as ChannelImpl, v as ChannelInfo, w as ChannelVisibility, x as Chat, y as ChatConfig, z as ChatInstance, B as ConcurrencyConfig, D as ConcurrencyStrategy, E as ConsoleLogger, F as CountQuery, H as DeleteTarget, I as DirectMessageHandler, J as DurationString, K as Emoji, O as EphemeralMessage, P as FetchDirection, Q as FetchOptions, R as FetchResult, S as FileUpload, T as FormattedContent, U as IdentityContext, V as IdentityResolver, W as LinkPreview, X as ListQuery, Y as ListThreadsOptions, Z as ListThreadsResult, _ as Lock, $ as LockScope, a0 as LockScopeContext, a1 as LogLevel, a2 as Logger, a3 as MarkdownTextChunk, a4 as MemberJoinedChannelEvent, a5 as MemberJoinedChannelHandler, a6 as MentionHandler, a7 as Message, a8 as MessageContext, a9 as MessageData, aa as MessageHandler, ab as MessageMetadata, ac as MessageSubject, ad as ModalClearResponse, ae as ModalCloseEvent, af as ModalCloseHandler, ag as ModalCloseResponse, ah as ModalErrorsResponse, ai as ModalPushResponse, aj as ModalResponse, ak as ModalSubmitEvent, al as ModalSubmitHandler, am as ModalUpdateResponse, an as OptionsLoadEvent, ao as OptionsLoadGroup, ap as OptionsLoadHandler, aq as OptionsLoadResult, ar as PlanUpdateChunk, as as PostEphemeralOptions, at as Postable, au as PostableAst, av as PostableCard, aw as PostableMarkdown, ax as PostableMessage, aA as PostableRaw, aB as QueueEntry, aC as RawMessage, aD as ReactionEvent, aE as ReactionHandler, aF as ScheduledMessage, aG as SentMessage, aH as SerializedChannel, aI as SerializedMessage, aJ as SerializedThread, aK as SlashCommandEvent, aL as SlashCommandHandler, aM as StateAdapter, aP as StreamOptions, aQ as SubscribedMessageHandler, aR as THREAD_STATE_TTL_MS, aS as TaskUpdateChunk, aT as Thread, aW as ThreadImpl, aX as ThreadInfo, aY as ThreadSummary, aZ as ToAiMessagesOptions, a_ as TranscriptEntry, a$ as TranscriptRole, b0 as TranscriptsApi, b1 as TranscriptsConfig, b2 as UserInfo, b3 as WebhookOptions, b5 as deriveChannelId, b6 as isPostableObject, b7 as toAiMessages } from './chat-BjhJs_sP.js';
|
|
3
3
|
import { Root, List, Content, Blockquote, Code, Emphasis, InlineCode, Delete, Link, ListItem, Paragraph, Strong, TableCell, Table as Table$1, TableRow, Text } from './_mdast.js';
|
|
4
4
|
export { Blockquote, Code, Content, Delete, Emphasis, InlineCode, Link, List, ListItem, Table as MdastTable, Nodes, Paragraph, Root, Strong, TableCell, TableRow, Text } from './_mdast.js';
|
|
5
|
-
import {
|
|
6
|
-
export {
|
|
5
|
+
import { g as CardElement, C as CardChild, A as ActionsComponent, B as ButtonComponent, f as CardComponent, j as CardLinkComponent, a9 as TextComponent, D as DividerComponent, E as ExternalSelectComponent, F as FieldComponent, w as FieldsComponent, I as ImageComponent, L as LinkButtonComponent, P as ModalComponent, T as RadioSelectComponent, W as SectionComponent, Y as SelectComponent, _ as SelectOptionComponent, a3 as Table$2, ab as TextInputComponent, ah as cardChildToFallbackText$1, ai as fromReactElement$1, aj as fromReactModalElement$1, ak as isCardElement$1, am as isJSX$1, an as isModalElement$1, ar as toCardElement$1, as as toModalElement$1 } from './jsx-runtime-CzthIo1o.js';
|
|
6
|
+
export { a as ActionsElement, b as ButtonElement, c as ButtonOptions, d as ButtonProps, e as ButtonStyle, h as CardJSXElement, i as CardJSXProps, k as CardLinkProps, l as CardOptions, m as CardProps, n as ChatElement, o as ContainerProps, p as DividerElement, q as DividerProps, r as ExternalSelectElement, s as ExternalSelectOptions, t as ExternalSelectProps, u as FieldElement, v as FieldProps, x as FieldsElement, z as ImageElement, G as ImageProps, H as LinkButtonElement, K as LinkButtonOptions, M as LinkButtonProps, N as LinkElement, O as ModalChild, Q as ModalElement, R as ModalOptions, S as ModalProps, U as RadioSelectElement, V as RadioSelectOptions, X as SectionElement, Z as SelectElement, $ as SelectOptionElement, a0 as SelectOptionProps, a1 as SelectOptions, a2 as SelectProps, a4 as TableAlignment, a6 as TableElement, a7 as TableOptions, aa as TextElement, ac as TextInputElement, ad as TextInputOptions, ae as TextInputProps, af as TextProps, ag as TextStyle } from './jsx-runtime-CzthIo1o.js';
|
|
7
7
|
import './_workflow-serde.js';
|
|
8
8
|
|
|
9
9
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{$ as e,A as t,At as n,B as r,C as i,Ct as a,D as o,Dt as s,E as c,Et as l,F as u,G as d,H as f,I as p,J as m,K as h,L as g,M as _,Mt as v,N as y,Nt as b,O as x,Ot as S,P as C,Q as w,R as T,S as E,St as D,T as O,Tt as k,U as A,V as j,W as M,X as N,Y as P,Z as F,_ as I,_t as L,a as R,at as z,b as B,bt as V,c as H,ct as U,d as W,dt as G,et as K,f as q,ft as J,g as Y,gt as X,h as Z,ht as Q,i as $,it as ee,j as te,jt as ne,k as re,kt as ie,l as ae,lt as oe,m as se,mt as ce,n as le,nt as ue,o as de,ot as fe,p as pe,pt as me,q as he,r as ge,rt as _e,s as ve,st as ye,t as be,tt as xe,u as Se,ut as Ce,v as we,vt as Te,w as Ee,wt as De,x as Oe,xt as ke,y as Ae,yt as je,z as Me}from"../_chunks/node/dist-
|
|
1
|
+
import{$ as e,A as t,At as n,B as r,C as i,Ct as a,D as o,Dt as s,E as c,Et as l,F as u,G as d,H as f,I as p,J as m,K as h,L as g,M as _,Mt as v,N as y,Nt as b,O as x,Ot as S,P as C,Q as w,R as T,S as E,St as D,T as O,Tt as k,U as A,V as j,W as M,X as N,Y as P,Z as F,_ as I,_t as L,a as R,at as z,b as B,bt as V,c as H,ct as U,d as W,dt as G,et as K,f as q,ft as J,g as Y,gt as X,h as Z,ht as Q,i as $,it as ee,j as te,jt as ne,k as re,kt as ie,l as ae,lt as oe,m as se,mt as ce,n as le,nt as ue,o as de,ot as fe,p as pe,pt as me,q as he,r as ge,rt as _e,s as ve,st as ye,t as be,tt as xe,u as Se,ut as Ce,v as we,vt as Te,w as Ee,wt as De,x as Oe,xt as ke,y as Ae,yt as je,z as Me}from"../_chunks/node/dist-W8yle6rh.js";export{be as Actions,K as BaseFormatConverter,le as Button,ge as Card,$ as CardLink,R as CardText,de as ChannelImpl,ve as Chat,H as ChatError,ae as ConsoleLogger,Se as DEFAULT_EMOJI_MAP,W as Divider,q as EmojiResolver,pe as ExternalSelect,se as Field,Z as Fields,Y as Image,I as LinkButton,we as LockError,Ae as Message,B as MessageHistoryCache,Oe as Modal,E as NotImplementedError,i as Plan,Ee as RadioSelect,O as RateLimitError,c as Section,o as Select,x as SelectOption,re as StreamingMarkdownRenderer,t as StreamingPlan,te as THREAD_STATE_TTL_MS,_ as Table,y as TextInput,C as ThreadHistoryCache,u as ThreadImpl,xe as blockquote,p as cardChildToFallbackText,ue as codeBlock,g as convertEmojiPlaceholders,T as createEmoji,Me as defaultEmojiResolver,r as deriveChannelId,j as emoji,_e as emphasis,f as fromFullStream,A as fromReactElement,M as fromReactModalElement,d as getEmoji,ee as getNodeChildren,z as getNodeValue,fe as inlineCode,ye as isBlockquoteNode,h as isCardElement,U as isCodeNode,oe as isDeleteNode,Ce as isEmphasisNode,G as isInlineCodeNode,he as isJSX,J as isLinkNode,me as isListItemNode,ce as isListNode,m as isModalElement,Q as isParagraphNode,P as isPostableObject,X as isStrongNode,L as isTableCellNode,Te as isTableNode,je as isTableRowNode,V as isTextNode,ke as link,D as markdownToPlainText,a as paragraph,De as parseMarkdown,N as reviver,k as root,l as strikethrough,s as stringifyMarkdown,S as strong,ie as tableElementToAscii,n as tableToAscii,ne as text,e as toAiMessages,F as toCardElement,w as toModalElement,v as toPlainText,b as walkAst};
|
|
@@ -68,6 +68,8 @@ interface ButtonElement {
|
|
|
68
68
|
}
|
|
69
69
|
/** Link button element that opens a URL */
|
|
70
70
|
interface LinkButtonElement {
|
|
71
|
+
/** Optional action identifier emitted by platforms that report link clicks */
|
|
72
|
+
id?: string;
|
|
71
73
|
/** Button label text */
|
|
72
74
|
label: string;
|
|
73
75
|
/** Visual style */
|
|
@@ -268,6 +270,8 @@ interface ButtonOptions {
|
|
|
268
270
|
declare function Button(options: ButtonOptions): ButtonElement;
|
|
269
271
|
/** Options for LinkButton */
|
|
270
272
|
interface LinkButtonOptions {
|
|
273
|
+
/** Optional action identifier emitted by platforms that report link clicks */
|
|
274
|
+
id?: string;
|
|
271
275
|
/** Button label text */
|
|
272
276
|
label: string;
|
|
273
277
|
/** Visual style */
|
|
@@ -546,6 +550,7 @@ interface ButtonProps {
|
|
|
546
550
|
/** Props for LinkButton component in JSX */
|
|
547
551
|
interface LinkButtonProps {
|
|
548
552
|
children?: string | number | (string | number | undefined)[];
|
|
553
|
+
id?: string;
|
|
549
554
|
label?: string;
|
|
550
555
|
style?: ButtonStyle;
|
|
551
556
|
url: string;
|
|
@@ -779,4 +784,4 @@ declare namespace JSX {
|
|
|
779
784
|
}
|
|
780
785
|
}
|
|
781
786
|
|
|
782
|
-
export { type
|
|
787
|
+
export { type SelectOptionElement as $, type ActionsComponent as A, type ButtonComponent as B, type CardChild as C, type DividerComponent as D, type ExternalSelectComponent as E, type FieldComponent as F, type ImageProps as G, type LinkButtonElement as H, type ImageComponent as I, JSX as J, type LinkButtonOptions as K, type LinkButtonComponent as L, type LinkButtonProps as M, type LinkElement as N, type ModalChild as O, type ModalComponent as P, type ModalElement as Q, type ModalOptions as R, type ModalProps as S, type RadioSelectComponent as T, type RadioSelectElement as U, type RadioSelectOptions as V, type SectionComponent as W, type SectionElement as X, type SelectComponent as Y, type SelectElement as Z, type SelectOptionComponent as _, type ActionsElement as a, type SelectOptionProps as a0, type SelectOptions as a1, type SelectProps as a2, Table as a3, type TableAlignment as a4, type TableComponent as a5, type TableElement as a6, type TableOptions as a7, type TableProps as a8, type TextComponent as a9, type TextElement as aa, type TextInputComponent as ab, type TextInputElement as ac, type TextInputOptions as ad, type TextInputProps as ae, type TextProps as af, type TextStyle as ag, cardChildToFallbackText as ah, fromReactElement as ai, fromReactModalElement as aj, isCardElement as ak, isCardLinkProps as al, isJSX as am, isModalElement as an, jsx as ao, jsxDEV as ap, jsxs as aq, toCardElement as ar, toModalElement as as, type ButtonElement as b, type ButtonOptions as c, type ButtonProps as d, type ButtonStyle as e, type CardComponent as f, type CardElement as g, type CardJSXElement as h, type CardJSXProps as i, type CardLinkComponent as j, type CardLinkProps as k, type CardOptions as l, type CardProps as m, type ChatElement as n, type ContainerProps as o, type DividerElement as p, type DividerProps as q, type ExternalSelectElement as r, type ExternalSelectOptions as s, type ExternalSelectProps as t, type FieldElement as u, type FieldProps as v, type FieldsComponent as w, type FieldsElement as x, Fragment as y, type ImageElement as z };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createRequire}from"node:module";import{existsSync,readFileSync,realpathSync}from"node:fs";import{basename,dirname,join}from"node:path";import{EVE_PACKAGE_NAME}from"#internal/package-name.js";import{fileURLToPath}from"node:url";let cachedPackageInfo;const BUNDLED_FALLBACK_PACKAGE_VERSION=`0.13.
|
|
1
|
+
import{createRequire}from"node:module";import{existsSync,readFileSync,realpathSync}from"node:fs";import{basename,dirname,join}from"node:path";import{EVE_PACKAGE_NAME}from"#internal/package-name.js";import{fileURLToPath}from"node:url";let cachedPackageInfo;const BUNDLED_FALLBACK_PACKAGE_VERSION=`0.13.3`,WORKFLOW_MODULE_ALIASES={"workflow/api":`src/compiled/@workflow/core/runtime.js`,"workflow/errors":`src/compiled/@workflow/errors/index.js`,"workflow/internal/private":`src/compiled/@workflow/core/private.js`,"workflow/runtime":`src/compiled/@workflow/core/runtime.js`};function resolveFallbackPackageVersion(){return BUNDLED_FALLBACK_PACKAGE_VERSION.startsWith(`__`)?`0.0.0`:BUNDLED_FALLBACK_PACKAGE_VERSION}const FALLBACK_PACKAGE_INFO={name:EVE_PACKAGE_NAME,version:resolveFallbackPackageVersion()};function resolveCurrentModulePath(){return typeof __filename==`string`?__filename:resolveCurrentModulePathFromStack()}function resolveCurrentModulePathFromStack(){let e=Error.prepareStackTrace;try{Error.prepareStackTrace=(e,t)=>t;let e=Error().stack?.[0]?.getFileName();if(typeof e!=`string`||e.length===0)throw Error(`Failed to resolve the current module path from the stack trace.`);return e.startsWith(`file:`)?fileURLToPath(e):e}finally{Error.prepareStackTrace=e}}const require=createRequire(resolveCurrentModulePath());function isBuildOutputPackageRoot(e){return basename(e)===`dist`&&existsSync(join(dirname(e),`package.json`))}function resolvePackageBuildRoot(){let e=dirname(realpathSync(resolveCurrentModulePath()));for(;;){if(isBuildOutputPackageRoot(e))return e;let t=dirname(e);if(t===e)return null;e=t}}function findNearestPackageRoot(e){let n=e;for(;;){if(existsSync(join(n,`package.json`))&&!isBuildOutputPackageRoot(n))return n;let r=dirname(n);if(r===n)throw Error(`Failed to resolve package root from "${e}".`);n=r}}function resolvePackageRoot(){return findNearestPackageRoot(dirname(realpathSync(resolveCurrentModulePath())))}function tryResolvePackageRoot(){try{return resolvePackageRoot()}catch{return}}function rewriteSourceFilePathForBuild(e){return e.replace(/\.[cm]?tsx?$/,`.js`)}function resolvePackageSourceFilePath(e){let t=resolvePackageBuildRoot();return t===null?join(resolvePackageRoot(),e):join(t,rewriteSourceFilePathForBuild(e))}function resolvePackageSourceDirectoryPath(e){let t=resolvePackageBuildRoot();return join(t===null?resolvePackageRoot():t,e)}function resolvePackageDependencyPath(e){return require.resolve(e)}function resolvePackageCompiledFilePath(e){let t=resolvePackageBuildRoot();return t===null?join(resolvePackageRoot(),`.generated`,`compiled`,e.replace(/^src\/compiled\//,``)):join(t,e)}function normalizeInstalledPackageInfo(e){let t=e;if(!(typeof t.name!=`string`||typeof t.version!=`string`))return{name:t.name,version:t.version}}function tryReadInstalledPackageInfo(e,t){let r=normalizeInstalledPackageInfo(JSON.parse(readFileSync(e,`utf8`)));if(r?.name===t)return r}function resolveInstalledPackageInfo(){if(cachedPackageInfo)return cachedPackageInfo;let e=tryResolvePackageRoot(),t=e===void 0?void 0:tryReadInstalledPackageInfo(join(e,`package.json`),EVE_PACKAGE_NAME);if(t)return cachedPackageInfo=t,cachedPackageInfo;try{let e=tryReadInstalledPackageInfo(require.resolve(`${EVE_PACKAGE_NAME}/package.json`),EVE_PACKAGE_NAME);if(e)return cachedPackageInfo=e,cachedPackageInfo}catch{}return cachedPackageInfo={...FALLBACK_PACKAGE_INFO},cachedPackageInfo}function resolveWorkflowModulePath(e){if(e===`workflow`)return resolvePackageSourceFilePath(`src/internal/workflow/index.ts`);if(e===`workflow/internal/builtins`)return resolvePackageSourceFilePath(`src/internal/workflow/builtins.ts`);let t=WORKFLOW_MODULE_ALIASES[e];return t===void 0?require.resolve(e):resolvePackageCompiledFilePath(t)}export{resolveInstalledPackageInfo,resolvePackageDependencyPath,resolvePackageRoot,resolvePackageSourceDirectoryPath,resolvePackageSourceFilePath,resolveWorkflowModulePath};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function remap(e,t){let n={};if(!Object.keys(t).length)return n=e,n;for(let[r,i]of Object.entries(e)){let e=t[r];e!==null&&(n[e??r]=i)}return n}export{remap};
|
package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.1/node_modules/@vercel/sdk/esm/lib/schemas.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"../../../../../../zod@4.4.3/node_modules/zod/v3/ZodError.js";import"../../../../../../zod@4.4.3/node_modules/zod/v3/index.js";import{SDKValidationError}from"../models/sdkvalidationerror.js";import{ERR,OK}from"../types/fp.js";function safeParse(t,n,r){try{return OK(n(t))}catch(e){return ERR(new SDKValidationError(r,e,t))}}export{safeParse};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{nativeEnumType}from"../../../../../../zod@4.4.3/node_modules/zod/v3/types.js";import"../../../../../../zod@4.4.3/node_modules/zod/v3/index.js";const ACLAction$inboundSchema=nativeEnumType({Create:`create`,Delete:`delete`,List:`list`,Read:`read`,Update:`update`});export{ACLAction$inboundSchema};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{ZodError}from"../../../../../../zod@4.4.3/node_modules/zod/v3/ZodError.js";import"../../../../../../zod@4.4.3/node_modules/zod/v3/index.js";var SDKValidationError=class extends Error{rawValue;rawMessage;static[Symbol.hasInstance](e){return!(!(e instanceof Error)||!(`rawValue`in e)||!(`rawMessage`in e)||!(`pretty`in e)||typeof e.pretty!=`function`)}constructor(e,t,n){super(`${e}: ${t}`),this.name=`SDKValidationError`,this.cause=t,this.rawValue=n,this.rawMessage=e}pretty(){return this.cause instanceof ZodError?`${this.rawMessage}\n${formatZodError(this.cause)}`:this.toString()}};function formatZodError(e,t=0){let n=` `.repeat(t);n=t>0?`│${n}`:n,n+=` `.repeat(t);let r=``,append=e=>r+=`\n${n}${e}`,i=e.issues.length,a=i===1?`${i} issue found`:`${i} issues found`;i&&append(`┌ ${a}:`);for(let n of e.issues){let e=n.path.join(`.`);switch(e=e?`<root>.${e}`:`<root>`,append(`│ • [${e}]: ${n.message} (${n.code})`),n.code){case`invalid_literal`:case`invalid_type`:append(`│ Want: ${n.expected}`),append(`│ Got: ${n.received}`);break;case`unrecognized_keys`:append(`│ Keys: ${n.keys.join(`, `)}`);break;case`invalid_enum_value`:append(`│ Allowed: ${n.options.join(`, `)}`),append(`│ Got: ${n.received}`);break;case`invalid_union_discriminator`:append(`│ Allowed: ${n.options.join(`, `)}`);break;case`invalid_union`:{let e=n.unionErrors.length;append(`│ ✖︎ Attemped to deserialize into one of ${e} union members:`),n.unionErrors.forEach((n,r)=>{append(`│ ✖︎ Member ${r+1} of ${e}`),append(`${formatZodError(n,t+1)}`)})}}}return e.issues.length&&append(`└─*`),r.slice(1)}export{SDKValidationError};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{arrayType,lazyType,literalType,nativeEnumType,nullableType,objectType,recordType,unionType}from"../../../../../../zod@4.4.3/node_modules/zod/v3/types.js";import"../../../../../../zod@4.4.3/node_modules/zod/v3/index.js";import{remap}from"../lib/primitives.js";import{safeParse}from"../lib/schemas.js";import{boolean,literal,nullable,number,optional,string}from"../types/primitives.js";import{smartUnion}from"../types/smartUnion.js";import{ACLAction$inboundSchema}from"./aclaction.js";const UpdateProjectProjectsResponseDeploymentType={All:`all`,AllExceptCustomDomains:`all_except_custom_domains`,Preview:`preview`,ProdDeploymentUrlsAndAllPreviews:`prod_deployment_urls_and_all_previews`},UpdateProjectProjectsFunctionDefaultMemoryType={Performance:`performance`,PerformanceXl:`performance_xl`,Standard:`standard`,StandardLegacy:`standard_legacy`},UpdateProjectProjectsBuildMachineType={Enhanced:`enhanced`,Standard:`standard`,Turbo:`turbo`},UpdateProjectProjectsBuildMachineSelection={Elastic:`elastic`,Fixed:`fixed`},UpdateProjectProjectsConfiguration={SkipNamespaceQueue:`SKIP_NAMESPACE_QUEUE`,WaitForNamespaceQueue:`WAIT_FOR_NAMESPACE_QUEUE`},UpdateProjectProjectsResponseFunctionDefaultMemoryType={Performance:`performance`,PerformanceXl:`performance_xl`,Standard:`standard`,StandardLegacy:`standard_legacy`},UpdateProjectProjectsResponseBuildMachineType={Enhanced:`enhanced`,Standard:`standard`,Turbo:`turbo`},UpdateProjectProjectsResponseBuildMachineSelection={Elastic:`elastic`,Fixed:`fixed`},UpdateProjectProjectsResponseConfiguration={SkipNamespaceQueue:`SKIP_NAMESPACE_QUEUE`,WaitForNamespaceQueue:`WAIT_FOR_NAMESPACE_QUEUE`},UpdateProjectProjectsResponse200DeploymentType={All:`all`,AllExceptCustomDomains:`all_except_custom_domains`,Preview:`preview`,ProdDeploymentUrlsAndAllPreviews:`prod_deployment_urls_and_all_previews`},UpdateProjectCve55182MigrationAppliedFrom={All:`all`,AllExceptCustomDomains:`all_except_custom_domains`,Preview:`preview`,ProdDeploymentUrlsAndAllPreviews:`prod_deployment_urls_and_all_previews`},UpdateProjectApril2026SecurityIncidentMigrationAppliedFrom={All:`all`,AllExceptCustomDomains:`all_except_custom_domains`,Preview:`preview`,ProdDeploymentUrlsAndAllPreviews:`prod_deployment_urls_and_all_previews`},UpdateProjectJobStatus={Failed:`failed`,InProgress:`in-progress`,Pending:`pending`,Skipped:`skipped`,Succeeded:`succeeded`},UpdateProjectProjectsResponseType={Promote:`promote`,Rollback:`rollback`},UpdateProjectTrustedIpsProjectsDeploymentType={All:`all`,AllExceptCustomDomains:`all_except_custom_domains`,Preview:`preview`,ProdDeploymentUrlsAndAllPreviews:`prod_deployment_urls_and_all_previews`,Production:`production`},UpdateProjectTrustedIpsDeploymentType={All:`all`,AllExceptCustomDomains:`all_except_custom_domains`,Preview:`preview`,ProdDeploymentUrlsAndAllPreviews:`prod_deployment_urls_and_all_previews`,Production:`production`},UpdateProjectTrustedIpsProtectionMode={Additional:`additional`,Exclusive:`exclusive`},UpdateProjectFromProjectsResponsePreset={AllCustom:`all-custom`},UpdateProjectFromProjectsPreset={AllCustom:`all-custom`},UpdateProjectToProjectsResponse200ApplicationJSONResponseBodyPreset={AllCustom:`all-custom`},UpdateProjectToProjectsResponse200ApplicationJSONPreset={AllCustom:`all-custom`},UpdateProjectToProjectsResponse200Preset={AllCustom:`all-custom`},UpdateProjectToProjectsResponsePreset={AllCustom:`all-custom`},UpdateProjectCreateDeployments={Disabled:`disabled`,Enabled:`enabled`},UpdateProjectProjectsResponse200ApplicationJSONResponseBodySecurityAction={Challenge:`challenge`,Deny:`deny`,Log:`log`},UpdateProjectProjectsResponse200ApplicationJSONResponseBodySecurityManagedRulesAction={Challenge:`challenge`,Deny:`deny`,Log:`log`},UpdateProjectProjectsResponse200ApplicationJSONResponseBodySecurityManagedRulesBotFilterAction={Challenge:`challenge`,Deny:`deny`,Log:`log`},UpdateProjectProjectsResponse200ApplicationJSONAction={Challenge:`challenge`,Deny:`deny`,Log:`log`},UpdateProjectProjectsResponse200ApplicationJSONResponseBodyAction={Challenge:`challenge`,Deny:`deny`,Log:`log`},UpdateProjectLogHeaders2={Wildcard:`*`},UpdateProjectProjectsIssuerMode={Global:`global`,Team:`team`},UpdateProjectSourcesProjectsResponse200Provider={Bitbucket:`bitbucket`,Github:`github`},UpdateProjectEnvironmentsProjectsResponse200Target={Preview:`preview`,Production:`production`},UpdateProjectProjectsSources={Cli:`cli`,DeployHook:`deploy-hook`,Git:`git`,Integration:`integration`,RestApi:`rest-api`,V0:`v0`},UpdateProjectEnvironmentsProjectsResponseTarget={Preview:`preview`,Production:`production`},UpdateProjectFlatRateTier={Advanced:`advanced`,Base:`base`,Critical:`critical`,Standard:`standard`},UpdateProjectKind={Flat:`flat`},UpdateProjectProjectsResponse200Action={Blocked:`blocked`},UpdateProjectHasProjectsKey={XVercelIpCountry:`x-vercel-ip-country`},UpdateProjectRouteProjectsAction={BlockLegalCwc:`block_legal_cwc`},UpdateProjectHasProjectsResponseKey={XVercelIpCountry:`x-vercel-ip-country`},UpdateProjectRouteAction={BlockLegalCwc:`block_legal_cwc`},UpdateProjectProjectsResponseAction={AddDeploymentInterstitial:`add-deployment-interstitial`,AddProjectInterstitial:`add-project-interstitial`,RemoveDeploymentInterstitial:`remove-deployment-interstitial`,RemoveProjectInterstitial:`remove-project-interstitial`},UpdateProjectHasKey={XVercelIpCountry:`x-vercel-ip-country`},UpdateProjectInternalRoutesAction={BlockLegalCwc:`block_legal_cwc`},UpdateProjectProjectsAction={Accept:`accept`,Cancel:`cancel`,Delete:`delete`};objectType({}),objectType({deploymentType:nativeEnumType(UpdateProjectProjectsResponseDeploymentType),connectorId:string()});const UpdateProjectSandboxUrls$inboundSchema=objectType({inheritDeploymentProtection:optional(boolean())});objectType({sandboxUrls:optional(lazyType(()=>UpdateProjectSandboxUrls$inboundSchema))});const UpdateProjectProjectsFunctionDefaultMemoryType$inboundSchema=nativeEnumType(UpdateProjectProjectsFunctionDefaultMemoryType),UpdateProjectProjectsBuildMachineType$inboundSchema=nativeEnumType(UpdateProjectProjectsBuildMachineType),UpdateProjectProjectsBuildMachineSelection$inboundSchema=nativeEnumType(UpdateProjectProjectsBuildMachineSelection),UpdateProjectProjectsBuildQueue$inboundSchema=objectType({configuration:optional(nativeEnumType(UpdateProjectProjectsConfiguration))});objectType({elasticConcurrencyEnabled:optional(boolean()),fluid:optional(boolean()),functionDefaultRegions:arrayType(string()),functionDefaultTimeout:optional(number()),functionDefaultMemoryType:optional(UpdateProjectProjectsFunctionDefaultMemoryType$inboundSchema),functionZeroConfigFailover:optional(boolean()),buildMachineType:optional(UpdateProjectProjectsBuildMachineType$inboundSchema),buildMachineSelection:optional(UpdateProjectProjectsBuildMachineSelection$inboundSchema),buildMachineElasticLastUpdated:optional(number()),isNSNBDisabled:optional(boolean()),buildQueue:optional(lazyType(()=>UpdateProjectProjectsBuildQueue$inboundSchema)),enableFunctionsBeta:optional(boolean())}),objectType({userId:string(),username:string(),description:string(),createdAt:number()});const UpdateProjectStages$inboundSchema=objectType({targetPercentage:number(),requireApproval:optional(boolean()),duration:optional(number()),linearShift:optional(boolean())});objectType({target:string(),stages:nullableType(arrayType(lazyType(()=>UpdateProjectStages$inboundSchema))).optional(),canaryResponseHeader:optional(boolean())});const UpdateProjectProjectsResponseFunctionDefaultMemoryType$inboundSchema=nativeEnumType(UpdateProjectProjectsResponseFunctionDefaultMemoryType),UpdateProjectProjectsResponseBuildMachineType$inboundSchema=nativeEnumType(UpdateProjectProjectsResponseBuildMachineType),UpdateProjectProjectsResponseBuildMachineSelection$inboundSchema=nativeEnumType(UpdateProjectProjectsResponseBuildMachineSelection),UpdateProjectProjectsResponseBuildQueue$inboundSchema=objectType({configuration:optional(nativeEnumType(UpdateProjectProjectsResponseConfiguration))});objectType({elasticConcurrencyEnabled:optional(boolean()),fluid:optional(boolean()),functionDefaultRegions:arrayType(string()),functionDefaultTimeout:optional(number()),functionDefaultMemoryType:optional(UpdateProjectProjectsResponseFunctionDefaultMemoryType$inboundSchema),functionZeroConfigFailover:optional(boolean()),buildMachineType:optional(UpdateProjectProjectsResponseBuildMachineType$inboundSchema),buildMachineSelection:optional(UpdateProjectProjectsResponseBuildMachineSelection$inboundSchema),buildMachineElasticLastUpdated:optional(number()),isNSNBDisabled:optional(boolean()),buildQueue:optional(lazyType(()=>UpdateProjectProjectsResponseBuildQueue$inboundSchema)),enableFunctionsBeta:optional(boolean())}),objectType({builds:boolean(),enabled:boolean(),regions:arrayType(string())});const UpdateProjectProjectsResponse200DeploymentType$inboundSchema=nativeEnumType(UpdateProjectProjectsResponse200DeploymentType),UpdateProjectCve55182MigrationAppliedFrom$inboundSchema=nativeEnumType(UpdateProjectCve55182MigrationAppliedFrom),UpdateProjectApril2026SecurityIncidentMigrationAppliedFrom$inboundSchema=nativeEnumType(UpdateProjectApril2026SecurityIncidentMigrationAppliedFrom);objectType({deploymentType:UpdateProjectProjectsResponse200DeploymentType$inboundSchema,cve55182MigrationAppliedFrom:nullableType(UpdateProjectCve55182MigrationAppliedFrom$inboundSchema).optional(),april2026SecurityIncidentMigrationAppliedFrom:nullableType(UpdateProjectApril2026SecurityIncidentMigrationAppliedFrom$inboundSchema).optional()}),smartUnion([number(),boolean()]);const UpdateProjectProjectsBuilds$inboundSchema=objectType({use:string(),src:optional(string()),dest:optional(string())}),UpdateProjectProjectsCreator$inboundSchema=objectType({email:string(),githubLogin:optional(string()),gitlabLogin:optional(string()),uid:string(),username:string()});objectType({alias:optional(arrayType(string())),aliasAssigned:nullableType(smartUnion([number(),boolean()])).optional(),builds:optional(arrayType(lazyType(()=>UpdateProjectProjectsBuilds$inboundSchema))),createdAt:number(),createdIn:string(),creator:nullable(lazyType(()=>UpdateProjectProjectsCreator$inboundSchema)),deploymentHostname:string(),name:string(),forced:optional(boolean()),id:string(),meta:optional(recordType(string())),plan:string(),private:boolean(),readyState:string(),requestedAt:optional(number()),target:nullableType(string()).optional(),teamId:nullableType(string()).optional(),type:string(),url:string(),userId:string(),withCache:optional(boolean())}),objectType({oauth2Connection:optional(arrayType(ACLAction$inboundSchema)),user:optional(arrayType(ACLAction$inboundSchema)),userConnection:optional(arrayType(ACLAction$inboundSchema)),userMfaConfiguration:optional(arrayType(ACLAction$inboundSchema)),userPreference:optional(arrayType(ACLAction$inboundSchema)),userSudo:optional(arrayType(ACLAction$inboundSchema)),webAuthn:optional(arrayType(ACLAction$inboundSchema)),accessGroup:optional(arrayType(ACLAction$inboundSchema)),agent:optional(arrayType(ACLAction$inboundSchema)),aiGatewayRules:optional(arrayType(ACLAction$inboundSchema)),aiGatewayUsage:optional(arrayType(ACLAction$inboundSchema)),alerts:optional(arrayType(ACLAction$inboundSchema)),alertRules:optional(arrayType(ACLAction$inboundSchema)),aliasGlobal:optional(arrayType(ACLAction$inboundSchema)),analyticsSampling:optional(arrayType(ACLAction$inboundSchema)),analyticsUsage:optional(arrayType(ACLAction$inboundSchema)),apiKey:optional(arrayType(ACLAction$inboundSchema)),apiKeyAiGateway:optional(arrayType(ACLAction$inboundSchema)),apiKeyOwnedBySelf:optional(arrayType(ACLAction$inboundSchema)),oauth2Application:optional(arrayType(ACLAction$inboundSchema)),vercelAppInstallation:optional(arrayType(ACLAction$inboundSchema)),vercelAppInstallationRequest:optional(arrayType(ACLAction$inboundSchema)),auditLog:optional(arrayType(ACLAction$inboundSchema)),billingAddress:optional(arrayType(ACLAction$inboundSchema)),billingInformation:optional(arrayType(ACLAction$inboundSchema)),billingInvoice:optional(arrayType(ACLAction$inboundSchema)),billingInvoiceEmailRecipient:optional(arrayType(ACLAction$inboundSchema)),billingInvoiceLanguage:optional(arrayType(ACLAction$inboundSchema)),billingPlan:optional(arrayType(ACLAction$inboundSchema)),billingPurchaseOrder:optional(arrayType(ACLAction$inboundSchema)),billingRefund:optional(arrayType(ACLAction$inboundSchema)),billingTaxId:optional(arrayType(ACLAction$inboundSchema)),blob:optional(arrayType(ACLAction$inboundSchema)),blobStoreTokenSet:optional(arrayType(ACLAction$inboundSchema)),budget:optional(arrayType(ACLAction$inboundSchema)),cacheArtifact:optional(arrayType(ACLAction$inboundSchema)),cacheArtifactUsageEvent:optional(arrayType(ACLAction$inboundSchema)),codeChecks:optional(arrayType(ACLAction$inboundSchema)),ciInvocations:optional(arrayType(ACLAction$inboundSchema)),ciLogs:optional(arrayType(ACLAction$inboundSchema)),concurrentBuilds:optional(arrayType(ACLAction$inboundSchema)),connect:optional(arrayType(ACLAction$inboundSchema)),connectConfiguration:optional(arrayType(ACLAction$inboundSchema)),connexClient:optional(arrayType(ACLAction$inboundSchema)),connexClientProject:optional(arrayType(ACLAction$inboundSchema)),connexToken:optional(arrayType(ACLAction$inboundSchema)),buildMachineDefault:optional(arrayType(ACLAction$inboundSchema)),dataCacheBillingSettings:optional(arrayType(ACLAction$inboundSchema)),defaultDeploymentProtection:optional(arrayType(ACLAction$inboundSchema)),deploymentPolicy:optional(arrayType(ACLAction$inboundSchema)),domain:optional(arrayType(ACLAction$inboundSchema)),domainAcceptDelegation:optional(arrayType(ACLAction$inboundSchema)),domainAuthCodes:optional(arrayType(ACLAction$inboundSchema)),domainCertificate:optional(arrayType(ACLAction$inboundSchema)),domainCheckConfig:optional(arrayType(ACLAction$inboundSchema)),domainMove:optional(arrayType(ACLAction$inboundSchema)),domainPurchase:optional(arrayType(ACLAction$inboundSchema)),domainRecord:optional(arrayType(ACLAction$inboundSchema)),domainTransferIn:optional(arrayType(ACLAction$inboundSchema)),drain:optional(arrayType(ACLAction$inboundSchema)),edgeConfig:optional(arrayType(ACLAction$inboundSchema)),edgeConfigItem:optional(arrayType(ACLAction$inboundSchema)),edgeConfigSchema:optional(arrayType(ACLAction$inboundSchema)),edgeConfigToken:optional(arrayType(ACLAction$inboundSchema)),endpointVerification:optional(arrayType(ACLAction$inboundSchema)),event:optional(arrayType(ACLAction$inboundSchema)),fileUpload:optional(arrayType(ACLAction$inboundSchema)),flagsExplorerSubscription:optional(arrayType(ACLAction$inboundSchema)),gitRepository:optional(arrayType(ACLAction$inboundSchema)),imageOptimizationNewPrice:optional(arrayType(ACLAction$inboundSchema)),integration:optional(arrayType(ACLAction$inboundSchema)),integrationAccount:optional(arrayType(ACLAction$inboundSchema)),integrationConfiguration:optional(arrayType(ACLAction$inboundSchema)),integrationConfigurationProjects:optional(arrayType(ACLAction$inboundSchema)),integrationConfigurationRole:optional(arrayType(ACLAction$inboundSchema)),integrationConfigurationTransfer:optional(arrayType(ACLAction$inboundSchema)),integrationDeploymentAction:optional(arrayType(ACLAction$inboundSchema)),integrationEvent:optional(arrayType(ACLAction$inboundSchema)),integrationLog:optional(arrayType(ACLAction$inboundSchema)),integrationResource:optional(arrayType(ACLAction$inboundSchema)),integrationResourceData:optional(arrayType(ACLAction$inboundSchema)),integrationResourceReplCommand:optional(arrayType(ACLAction$inboundSchema)),integrationResourceSecrets:optional(arrayType(ACLAction$inboundSchema)),integrationSSOSession:optional(arrayType(ACLAction$inboundSchema)),integrationStrict:optional(arrayType(ACLAction$inboundSchema)),integrationStoreTokenSet:optional(arrayType(ACLAction$inboundSchema)),integrationVercelConfigurationOverride:optional(arrayType(ACLAction$inboundSchema)),integrationPullRequest:optional(arrayType(ACLAction$inboundSchema)),ipBlocking:optional(arrayType(ACLAction$inboundSchema)),jobGlobal:optional(arrayType(ACLAction$inboundSchema)),kmsIssuer:optional(arrayType(ACLAction$inboundSchema)),kmsProjectGrant:optional(arrayType(ACLAction$inboundSchema)),logDrain:optional(arrayType(ACLAction$inboundSchema)),marketplaceBillingData:optional(arrayType(ACLAction$inboundSchema)),marketplaceExperimentationEdgeConfigData:optional(arrayType(ACLAction$inboundSchema)),marketplaceExperimentationItem:optional(arrayType(ACLAction$inboundSchema)),marketplaceInstallationMember:optional(arrayType(ACLAction$inboundSchema)),marketplaceInvoice:optional(arrayType(ACLAction$inboundSchema)),marketplaceSettings:optional(arrayType(ACLAction$inboundSchema)),Monitoring:optional(arrayType(ACLAction$inboundSchema)),monitoringAlert:optional(arrayType(ACLAction$inboundSchema)),monitoringChart:optional(arrayType(ACLAction$inboundSchema)),monitoringQuery:optional(arrayType(ACLAction$inboundSchema)),monitoringSettings:optional(arrayType(ACLAction$inboundSchema)),notificationCustomerBudget:optional(arrayType(ACLAction$inboundSchema)),notificationDeploymentFailed:optional(arrayType(ACLAction$inboundSchema)),notificationDomainConfiguration:optional(arrayType(ACLAction$inboundSchema)),notificationDomainExpire:optional(arrayType(ACLAction$inboundSchema)),notificationDomainMoved:optional(arrayType(ACLAction$inboundSchema)),notificationDomainPurchase:optional(arrayType(ACLAction$inboundSchema)),notificationDomainRenewal:optional(arrayType(ACLAction$inboundSchema)),notificationDomainTransfer:optional(arrayType(ACLAction$inboundSchema)),notificationDomainUnverified:optional(arrayType(ACLAction$inboundSchema)),NotificationMonitoringAlert:optional(arrayType(ACLAction$inboundSchema)),notificationPaymentFailed:optional(arrayType(ACLAction$inboundSchema)),notificationPreferences:optional(arrayType(ACLAction$inboundSchema)),notificationStatementOfReasons:optional(arrayType(ACLAction$inboundSchema)),notificationUsageAlert:optional(arrayType(ACLAction$inboundSchema)),oidcFederationPolicy:optional(arrayType(ACLAction$inboundSchema)),observabilityConfiguration:optional(arrayType(ACLAction$inboundSchema)),observabilityFunnel:optional(arrayType(ACLAction$inboundSchema)),observabilityNotebook:optional(arrayType(ACLAction$inboundSchema)),openTelemetryEndpoint:optional(arrayType(ACLAction$inboundSchema)),ownEvent:optional(arrayType(ACLAction$inboundSchema)),organization:optional(arrayType(ACLAction$inboundSchema)),organizationDomain:optional(arrayType(ACLAction$inboundSchema)),organizationTeam:optional(arrayType(ACLAction$inboundSchema)),passwordProtectionInvoiceItem:optional(arrayType(ACLAction$inboundSchema)),paymentMethod:optional(arrayType(ACLAction$inboundSchema)),permissions:optional(arrayType(ACLAction$inboundSchema)),postgres:optional(arrayType(ACLAction$inboundSchema)),postgresStoreTokenSet:optional(arrayType(ACLAction$inboundSchema)),previewDeploymentSuffix:optional(arrayType(ACLAction$inboundSchema)),privateCloudAccount:optional(arrayType(ACLAction$inboundSchema)),projectTransferIn:optional(arrayType(ACLAction$inboundSchema)),proTrialOnboarding:optional(arrayType(ACLAction$inboundSchema)),rateLimit:optional(arrayType(ACLAction$inboundSchema)),redis:optional(arrayType(ACLAction$inboundSchema)),redisStoreTokenSet:optional(arrayType(ACLAction$inboundSchema)),remoteCaching:optional(arrayType(ACLAction$inboundSchema)),repository:optional(arrayType(ACLAction$inboundSchema)),samlConfig:optional(arrayType(ACLAction$inboundSchema)),secret:optional(arrayType(ACLAction$inboundSchema)),sensitiveEnvironmentVariablePolicy:optional(arrayType(ACLAction$inboundSchema)),sharedEnvVars:optional(arrayType(ACLAction$inboundSchema)),sharedEnvVarsProduction:optional(arrayType(ACLAction$inboundSchema)),space:optional(arrayType(ACLAction$inboundSchema)),spaceRun:optional(arrayType(ACLAction$inboundSchema)),storeIsLocked:optional(arrayType(ACLAction$inboundSchema)),storeTokenSetSensitive:optional(arrayType(ACLAction$inboundSchema)),storeTransfer:optional(arrayType(ACLAction$inboundSchema)),supportCase:optional(arrayType(ACLAction$inboundSchema)),supportCaseComment:optional(arrayType(ACLAction$inboundSchema)),team:optional(arrayType(ACLAction$inboundSchema)),teamAccessRequest:optional(arrayType(ACLAction$inboundSchema)),teamFellowMembership:optional(arrayType(ACLAction$inboundSchema)),teamGitExclusivity:optional(arrayType(ACLAction$inboundSchema)),teamInvite:optional(arrayType(ACLAction$inboundSchema)),teamInviteCode:optional(arrayType(ACLAction$inboundSchema)),teamInviteLink:optional(arrayType(ACLAction$inboundSchema)),teamJoin:optional(arrayType(ACLAction$inboundSchema)),teamMemberMfaStatus:optional(arrayType(ACLAction$inboundSchema)),teamMicrofrontends:optional(arrayType(ACLAction$inboundSchema)),teamOwnMembership:optional(arrayType(ACLAction$inboundSchema)),teamOwnMembershipDisconnectSAML:optional(arrayType(ACLAction$inboundSchema)),teamSudo:optional(arrayType(ACLAction$inboundSchema)),teamTokenInvalidation:optional(arrayType(ACLAction$inboundSchema)),token:optional(arrayType(ACLAction$inboundSchema)),toolbarComment:optional(arrayType(ACLAction$inboundSchema)),usage:optional(arrayType(ACLAction$inboundSchema)),usageCycle:optional(arrayType(ACLAction$inboundSchema)),vcrRepository:optional(arrayType(ACLAction$inboundSchema)),vercelRun:optional(arrayType(ACLAction$inboundSchema)),vpcPeeringConnection:optional(arrayType(ACLAction$inboundSchema)),webAnalyticsPlan:optional(arrayType(ACLAction$inboundSchema)),webhook:optional(arrayType(ACLAction$inboundSchema)),"webhook-event":optional(arrayType(ACLAction$inboundSchema)),aliasProject:optional(arrayType(ACLAction$inboundSchema)),aliasProtectionBypass:optional(arrayType(ACLAction$inboundSchema)),bulkRedirects:optional(arrayType(ACLAction$inboundSchema)),buildMachine:optional(arrayType(ACLAction$inboundSchema)),connectConfigurationLink:optional(arrayType(ACLAction$inboundSchema)),dataCacheNamespace:optional(arrayType(ACLAction$inboundSchema)),deployment:optional(arrayType(ACLAction$inboundSchema)),deploymentBuildLogs:optional(arrayType(ACLAction$inboundSchema)),deploymentCheck:optional(arrayType(ACLAction$inboundSchema)),deploymentCheckPreview:optional(arrayType(ACLAction$inboundSchema)),deploymentCheckReRunFromProductionBranch:optional(arrayType(ACLAction$inboundSchema)),deploymentProductionGit:optional(arrayType(ACLAction$inboundSchema)),deploymentV0:optional(arrayType(ACLAction$inboundSchema)),deploymentPreview:optional(arrayType(ACLAction$inboundSchema)),deploymentPrivate:optional(arrayType(ACLAction$inboundSchema)),deploymentPromote:optional(arrayType(ACLAction$inboundSchema)),deploymentRollback:optional(arrayType(ACLAction$inboundSchema)),edgeCacheNamespace:optional(arrayType(ACLAction$inboundSchema)),environments:optional(arrayType(ACLAction$inboundSchema)),job:optional(arrayType(ACLAction$inboundSchema)),logs:optional(arrayType(ACLAction$inboundSchema)),logsPreset:optional(arrayType(ACLAction$inboundSchema)),observabilityData:optional(arrayType(ACLAction$inboundSchema)),onDemandBuild:optional(arrayType(ACLAction$inboundSchema)),onDemandConcurrency:optional(arrayType(ACLAction$inboundSchema)),optionsAllowlist:optional(arrayType(ACLAction$inboundSchema)),passwordProtection:optional(arrayType(ACLAction$inboundSchema)),privateLinkEndpoint:optional(arrayType(ACLAction$inboundSchema)),productionAliasProtectionBypass:optional(arrayType(ACLAction$inboundSchema)),project:optional(arrayType(ACLAction$inboundSchema)),projectAccessGroup:optional(arrayType(ACLAction$inboundSchema)),projectAnalyticsSampling:optional(arrayType(ACLAction$inboundSchema)),projectAnalyticsUsage:optional(arrayType(ACLAction$inboundSchema)),projectCheck:optional(arrayType(ACLAction$inboundSchema)),projectCheckRun:optional(arrayType(ACLAction$inboundSchema)),projectDeploymentExpiration:optional(arrayType(ACLAction$inboundSchema)),projectDeploymentHook:optional(arrayType(ACLAction$inboundSchema)),projectDeploymentProtectionStrict:optional(arrayType(ACLAction$inboundSchema)),projectDomain:optional(arrayType(ACLAction$inboundSchema)),projectDomainCheckConfig:optional(arrayType(ACLAction$inboundSchema)),projectDomainMove:optional(arrayType(ACLAction$inboundSchema)),projectEvent:optional(arrayType(ACLAction$inboundSchema)),projectEnvVars:optional(arrayType(ACLAction$inboundSchema)),projectEnvVarsProduction:optional(arrayType(ACLAction$inboundSchema)),projectEnvVarsUnownedByIntegration:optional(arrayType(ACLAction$inboundSchema)),projectFlags:optional(arrayType(ACLAction$inboundSchema)),projectFlagsProduction:optional(arrayType(ACLAction$inboundSchema)),projectFlagsSdkKey:optional(arrayType(ACLAction$inboundSchema)),projectFromV0:optional(arrayType(ACLAction$inboundSchema)),projectId:optional(arrayType(ACLAction$inboundSchema)),projectIntegrationConfiguration:optional(arrayType(ACLAction$inboundSchema)),projectLink:optional(arrayType(ACLAction$inboundSchema)),projectMember:optional(arrayType(ACLAction$inboundSchema)),projectMonitoring:optional(arrayType(ACLAction$inboundSchema)),projectOIDCToken:optional(arrayType(ACLAction$inboundSchema)),projectPermissions:optional(arrayType(ACLAction$inboundSchema)),projectProductionBranch:optional(arrayType(ACLAction$inboundSchema)),projectProtectionBypass:optional(arrayType(ACLAction$inboundSchema)),projectRollingRelease:optional(arrayType(ACLAction$inboundSchema)),projectRoutes:optional(arrayType(ACLAction$inboundSchema)),projectSupportCase:optional(arrayType(ACLAction$inboundSchema)),projectSupportCaseComment:optional(arrayType(ACLAction$inboundSchema)),projectTier:optional(arrayType(ACLAction$inboundSchema)),projectTransfer:optional(arrayType(ACLAction$inboundSchema)),projectTransferOut:optional(arrayType(ACLAction$inboundSchema)),projectUsage:optional(arrayType(ACLAction$inboundSchema)),pageIntegrity:optional(arrayType(ACLAction$inboundSchema)),seawallConfig:optional(arrayType(ACLAction$inboundSchema)),securityPlusConfiguration:optional(arrayType(ACLAction$inboundSchema)),shareableLinkStrict:optional(arrayType(ACLAction$inboundSchema)),sharedEnvVarConnection:optional(arrayType(ACLAction$inboundSchema)),skewProtection:optional(arrayType(ACLAction$inboundSchema)),analytics:optional(arrayType(ACLAction$inboundSchema)),trustedIps:optional(arrayType(ACLAction$inboundSchema)),trustedSources:optional(arrayType(ACLAction$inboundSchema)),v0Chat:optional(arrayType(ACLAction$inboundSchema)),webAnalytics:optional(arrayType(ACLAction$inboundSchema))}).transform(e=>remap(e,{Monitoring:`monitoring`,NotificationMonitoringAlert:`notificationMonitoringAlert`,"webhook-event":`webhookEvent`,projectFlagsSdkKey:`projectFlagsSDKKey`})),objectType({});const UpdateProjectJobStatus$inboundSchema=nativeEnumType(UpdateProjectJobStatus),UpdateProjectProjectsResponseType$inboundSchema=nativeEnumType(UpdateProjectProjectsResponseType);objectType({fromDeploymentId:nullable(string()),toDeploymentId:string(),fromRollingReleaseId:optional(string()),jobStatus:UpdateProjectJobStatus$inboundSchema,requestedAt:number(),type:UpdateProjectProjectsResponseType$inboundSchema});const UpdateProjectProtectionBypass2$inboundSchema=objectType({createdAt:number(),createdBy:string(),scope:literal(`automation-bypass`),isEnvVar:optional(boolean()),note:optional(string())}),UpdateProjectProtectionBypass1$inboundSchema=objectType({createdAt:number(),createdBy:string(),scope:literal(`integration-automation-bypass`),integrationId:string(),configurationId:string()});unionType([lazyType(()=>UpdateProjectProtectionBypass1$inboundSchema),lazyType(()=>UpdateProjectProtectionBypass2$inboundSchema)]);const UpdateProjectTrustedIps2$inboundSchema=objectType({deploymentType:nativeEnumType(UpdateProjectTrustedIpsProjectsDeploymentType)}),UpdateProjectTrustedIpsDeploymentType$inboundSchema=nativeEnumType(UpdateProjectTrustedIpsDeploymentType),UpdateProjectTrustedIpsAddresses$inboundSchema=objectType({value:string(),note:optional(string())}),UpdateProjectTrustedIpsProtectionMode$inboundSchema=nativeEnumType(UpdateProjectTrustedIpsProtectionMode),UpdateProjectTrustedIps1$inboundSchema=objectType({deploymentType:UpdateProjectTrustedIpsDeploymentType$inboundSchema,addresses:arrayType(lazyType(()=>UpdateProjectTrustedIpsAddresses$inboundSchema)),protectionMode:UpdateProjectTrustedIpsProtectionMode$inboundSchema});smartUnion([lazyType(()=>UpdateProjectTrustedIps1$inboundSchema),lazyType(()=>UpdateProjectTrustedIps2$inboundSchema)]);const UpdateProjectFromProjectsResponsePreset$inboundSchema=nativeEnumType(UpdateProjectFromProjectsResponsePreset),UpdateProjectFrom2$inboundSchema=objectType({slugs:optional(arrayType(string())),preset:UpdateProjectFromProjectsResponsePreset$inboundSchema}),UpdateProjectFromProjectsPreset$inboundSchema=nativeEnumType(UpdateProjectFromProjectsPreset),UpdateProjectFrom1$inboundSchema=objectType({slugs:arrayType(string()),preset:optional(UpdateProjectFromProjectsPreset$inboundSchema)});smartUnion([lazyType(()=>UpdateProjectFrom1$inboundSchema),lazyType(()=>UpdateProjectFrom2$inboundSchema)]);const UpdateProjectToProjectsResponse200ApplicationJSONResponseBodyPreset$inboundSchema=nativeEnumType(UpdateProjectToProjectsResponse200ApplicationJSONResponseBodyPreset),UpdateProjectToProjectsResponse2$inboundSchema=objectType({slugs:optional(arrayType(string())),preset:UpdateProjectToProjectsResponse200ApplicationJSONResponseBodyPreset$inboundSchema}),UpdateProjectToProjectsResponse200ApplicationJSONPreset$inboundSchema=nativeEnumType(UpdateProjectToProjectsResponse200ApplicationJSONPreset),UpdateProjectToProjectsResponse1$inboundSchema=objectType({slugs:arrayType(string()),preset:optional(UpdateProjectToProjectsResponse200ApplicationJSONPreset$inboundSchema)});smartUnion([lazyType(()=>UpdateProjectToProjectsResponse1$inboundSchema),lazyType(()=>UpdateProjectToProjectsResponse2$inboundSchema)]);const UpdateProjectCustomAllow$inboundSchema=objectType({from:smartUnion([lazyType(()=>UpdateProjectFrom1$inboundSchema),lazyType(()=>UpdateProjectFrom2$inboundSchema)]),to:smartUnion([lazyType(()=>UpdateProjectToProjectsResponse1$inboundSchema),lazyType(()=>UpdateProjectToProjectsResponse2$inboundSchema)])}),UpdateProjectProjectsProjects$inboundSchema=objectType({label:optional(string()),customAllow:optional(arrayType(lazyType(()=>UpdateProjectCustomAllow$inboundSchema)))}),UpdateProjectToProjectsResponse200Preset$inboundSchema=nativeEnumType(UpdateProjectToProjectsResponse200Preset),UpdateProjectToProjects2$inboundSchema=objectType({slugs:optional(arrayType(string())),preset:UpdateProjectToProjectsResponse200Preset$inboundSchema}),UpdateProjectToProjectsResponsePreset$inboundSchema=nativeEnumType(UpdateProjectToProjectsResponsePreset),UpdateProjectToProjects1$inboundSchema=objectType({slugs:arrayType(string()),preset:optional(UpdateProjectToProjectsResponsePreset$inboundSchema)});smartUnion([lazyType(()=>UpdateProjectToProjects1$inboundSchema),lazyType(()=>UpdateProjectToProjects2$inboundSchema)]);const UpdateProjectOidcProviders$inboundSchema=objectType({to:smartUnion([lazyType(()=>UpdateProjectToProjects1$inboundSchema),lazyType(()=>UpdateProjectToProjects2$inboundSchema)]),label:optional(string()),claims:recordType(arrayType(string()))}),UpdateProjectTrustedSources$inboundSchema=objectType({projects:optional(recordType(lazyType(()=>UpdateProjectProjectsProjects$inboundSchema))),oidcProviders:optional(recordType(arrayType(lazyType(()=>UpdateProjectOidcProviders$inboundSchema))))});function updateProjectTrustedSourcesFromJSON(e){return safeParse(e,e=>UpdateProjectTrustedSources$inboundSchema.parse(JSON.parse(e)),`Failed to parse 'UpdateProjectTrustedSources' from JSON`)}objectType({onPullRequest:boolean(),onCommit:boolean()});const UpdateProjectCreateDeployments$inboundSchema=nativeEnumType(UpdateProjectCreateDeployments),UpdateProjectConsolidatedGitCommitStatus$inboundSchema=objectType({enabled:boolean(),propagateFailures:boolean()});objectType({createDeployments:UpdateProjectCreateDeployments$inboundSchema,disableRepositoryDispatchEvents:optional(boolean()),requireVerifiedCommits:optional(boolean()),gitCommitStatus:optional(boolean()),consolidatedGitCommitStatus:optional(lazyType(()=>UpdateProjectConsolidatedGitCommitStatus$inboundSchema))}),objectType({id:string(),disabledAt:optional(number()),canceledAt:optional(number()),enabledAt:optional(number()),hasData:optional(literal(!0))});const UpdateProjectProjectsResponse200ApplicationJSONResponseBodySecurityAction$inboundSchema=nativeEnumType(UpdateProjectProjectsResponse200ApplicationJSONResponseBodySecurityAction),UpdateProjectVercelRuleset$inboundSchema=objectType({active:boolean(),action:optional(UpdateProjectProjectsResponse200ApplicationJSONResponseBodySecurityAction$inboundSchema)}),UpdateProjectProjectsResponse200ApplicationJSONResponseBodySecurityManagedRulesAction$inboundSchema=nativeEnumType(UpdateProjectProjectsResponse200ApplicationJSONResponseBodySecurityManagedRulesAction),UpdateProjectTrafficSources$inboundSchema=objectType({active:boolean(),action:optional(UpdateProjectProjectsResponse200ApplicationJSONResponseBodySecurityManagedRulesAction$inboundSchema)}),UpdateProjectProjectsResponse200ApplicationJSONResponseBodySecurityManagedRulesBotFilterAction$inboundSchema=nativeEnumType(UpdateProjectProjectsResponse200ApplicationJSONResponseBodySecurityManagedRulesBotFilterAction),UpdateProjectBotFilter$inboundSchema=objectType({active:boolean(),action:optional(UpdateProjectProjectsResponse200ApplicationJSONResponseBodySecurityManagedRulesBotFilterAction$inboundSchema)}),UpdateProjectProjectsResponse200ApplicationJSONAction$inboundSchema=nativeEnumType(UpdateProjectProjectsResponse200ApplicationJSONAction),UpdateProjectAiBots$inboundSchema=objectType({active:boolean(),action:optional(UpdateProjectProjectsResponse200ApplicationJSONAction$inboundSchema)}),UpdateProjectProjectsResponse200ApplicationJSONResponseBodyAction$inboundSchema=nativeEnumType(UpdateProjectProjectsResponse200ApplicationJSONResponseBodyAction),UpdateProjectOwasp$inboundSchema=objectType({active:boolean(),action:optional(UpdateProjectProjectsResponse200ApplicationJSONResponseBodyAction$inboundSchema)}),UpdateProjectManagedRules$inboundSchema=objectType({vercel_ruleset:lazyType(()=>UpdateProjectVercelRuleset$inboundSchema),traffic_sources:lazyType(()=>UpdateProjectTrafficSources$inboundSchema),bot_filter:lazyType(()=>UpdateProjectBotFilter$inboundSchema),ai_bots:lazyType(()=>UpdateProjectAiBots$inboundSchema),owasp:lazyType(()=>UpdateProjectOwasp$inboundSchema)}).transform(e=>remap(e,{vercel_ruleset:`vercelRuleset`,traffic_sources:`trafficSources`,bot_filter:`botFilter`,ai_bots:`aiBots`})),UpdateProjectLogHeaders2$inboundSchema=nativeEnumType(UpdateProjectLogHeaders2);smartUnion([arrayType(string()),UpdateProjectLogHeaders2$inboundSchema]);const UpdateProjectSecurityPlusMetadata$inboundSchema=objectType({updatedAt:number(),firstEnabledAt:optional(number())});objectType({attackModeEnabled:optional(boolean()),attackModeUpdatedAt:optional(number()),firewallEnabled:optional(boolean()),firewallUpdatedAt:optional(number()),attackModeActiveUntil:nullableType(number()).optional(),firewallConfigVersion:optional(number()),firewallSeawallEnabled:optional(boolean()),ja3Enabled:optional(boolean()),ja4Enabled:optional(boolean()),firewallBypassIps:optional(arrayType(string())),managedRules:nullableType(lazyType(()=>UpdateProjectManagedRules$inboundSchema)).optional(),botIdEnabled:optional(boolean()),log_headers:optional(smartUnion([arrayType(string()),UpdateProjectLogHeaders2$inboundSchema])),securityPlus:optional(boolean()),securityPlusMetadata:optional(lazyType(()=>UpdateProjectSecurityPlusMetadata$inboundSchema)),pageIntegrityEnabled:optional(boolean())}).transform(e=>remap(e,{log_headers:`logHeaders`}));const UpdateProjectProjectsIssuerMode$inboundSchema=nativeEnumType(UpdateProjectProjectsIssuerMode);objectType({enabled:optional(boolean()),issuerMode:optional(UpdateProjectProjectsIssuerMode$inboundSchema)});const UpdateProjectSourcesProjects2$inboundSchema=objectType({provider:literal(`gitlab`),namespace:string(),project:optional(string())}),UpdateProjectSourcesProjects1$inboundSchema=objectType({provider:nativeEnumType(UpdateProjectSourcesProjectsResponse200Provider),org:string(),repo:optional(string())});unionType([lazyType(()=>UpdateProjectSourcesProjects1$inboundSchema).and(objectType({provider:literalType(`bitbucket`)})),lazyType(()=>UpdateProjectSourcesProjects1$inboundSchema).and(objectType({provider:literalType(`github`)})),lazyType(()=>UpdateProjectSourcesProjects2$inboundSchema)]);const UpdateProjectEnvironmentsProjectsResponse2002$inboundSchema=objectType({type:literal(`custom`),environmentId:string()}),UpdateProjectEnvironmentsProjectsResponse200Target$inboundSchema=nativeEnumType(UpdateProjectEnvironmentsProjectsResponse200Target),UpdateProjectEnvironmentsProjectsResponse2001$inboundSchema=objectType({type:literal(`system`),target:UpdateProjectEnvironmentsProjectsResponse200Target$inboundSchema});unionType([lazyType(()=>UpdateProjectEnvironmentsProjectsResponse2001$inboundSchema),lazyType(()=>UpdateProjectEnvironmentsProjectsResponse2002$inboundSchema)]);const UpdateProjectGitSources$inboundSchema=objectType({sources:arrayType(unionType([lazyType(()=>UpdateProjectSourcesProjects1$inboundSchema).and(objectType({provider:literalType(`bitbucket`)})),lazyType(()=>UpdateProjectSourcesProjects1$inboundSchema).and(objectType({provider:literalType(`github`)})),lazyType(()=>UpdateProjectSourcesProjects2$inboundSchema)])),enabled:boolean(),environments:arrayType(unionType([lazyType(()=>UpdateProjectEnvironmentsProjectsResponse2001$inboundSchema),lazyType(()=>UpdateProjectEnvironmentsProjectsResponse2002$inboundSchema)]))}),UpdateProjectProjectsSources$inboundSchema=nativeEnumType(UpdateProjectProjectsSources),UpdateProjectEnvironmentsProjectsResponse2$inboundSchema=objectType({type:literal(`custom`),environmentId:string()}),UpdateProjectEnvironmentsProjectsResponseTarget$inboundSchema=nativeEnumType(UpdateProjectEnvironmentsProjectsResponseTarget),UpdateProjectEnvironmentsProjectsResponse1$inboundSchema=objectType({type:literal(`system`),target:UpdateProjectEnvironmentsProjectsResponseTarget$inboundSchema});unionType([lazyType(()=>UpdateProjectEnvironmentsProjectsResponse1$inboundSchema),lazyType(()=>UpdateProjectEnvironmentsProjectsResponse2$inboundSchema)]);const UpdateProjectDeploymentSources$inboundSchema=objectType({sources:arrayType(UpdateProjectProjectsSources$inboundSchema),enabled:boolean(),environments:arrayType(unionType([lazyType(()=>UpdateProjectEnvironmentsProjectsResponse1$inboundSchema),lazyType(()=>UpdateProjectEnvironmentsProjectsResponse2$inboundSchema)]))});objectType({gitSources:nullableType(arrayType(lazyType(()=>UpdateProjectGitSources$inboundSchema))).optional(),deploymentSources:nullableType(arrayType(lazyType(()=>UpdateProjectDeploymentSources$inboundSchema))).optional()}),nativeEnumType(UpdateProjectFlatRateTier),objectType({kind:nativeEnumType(UpdateProjectKind),exceededAllowanceUntil:optional(number()),bypassThrottleUntil:optional(number()),throttled:optional(boolean())}),objectType({webAnalytics:optional(boolean())});const UpdateProjectHistory$inboundSchema=objectType({scanner:string(),reason:string(),by:string(),byId:string(),at:number()}),UpdateProjectBlock$inboundSchema=objectType({action:nativeEnumType(UpdateProjectProjectsResponse200Action),reason:string(),statusCode:number(),createdAt:number(),caseId:optional(string()),actor:optional(string()),comment:optional(string()),ineligibleForAppeal:optional(boolean()),isCascading:optional(boolean())}),UpdateProjectHasProjectsResponse200Value$inboundSchema=objectType({eq:string()}),UpdateProjectHasProjects2$inboundSchema=objectType({type:literal(`host`),value:lazyType(()=>UpdateProjectHasProjectsResponse200Value$inboundSchema)}),UpdateProjectHasProjectsKey$inboundSchema=nativeEnumType(UpdateProjectHasProjectsKey),UpdateProjectHasProjectsResponseValue$inboundSchema=objectType({eq:string()}),UpdateProjectHasProjects1$inboundSchema=objectType({type:literal(`header`),key:UpdateProjectHasProjectsKey$inboundSchema,value:lazyType(()=>UpdateProjectHasProjectsResponseValue$inboundSchema)});unionType([lazyType(()=>UpdateProjectHasProjects1$inboundSchema),lazyType(()=>UpdateProjectHasProjects2$inboundSchema)]);const UpdateProjectRouteProjectsMitigate$inboundSchema=objectType({action:nativeEnumType(UpdateProjectRouteProjectsAction)}),UpdateProjectRouteProjects2$inboundSchema=objectType({has:arrayType(unionType([lazyType(()=>UpdateProjectHasProjects1$inboundSchema),lazyType(()=>UpdateProjectHasProjects2$inboundSchema)])),mitigate:lazyType(()=>UpdateProjectRouteProjectsMitigate$inboundSchema),src:optional(string())}),UpdateProjectRouteProjects1$inboundSchema=objectType({src:string(),status:number()});smartUnion([lazyType(()=>UpdateProjectRouteProjects1$inboundSchema),lazyType(()=>UpdateProjectRouteProjects2$inboundSchema)]);const UpdateProjectBlockHistory4$inboundSchema=objectType({action:literal(`route-unblocked`),route:smartUnion([lazyType(()=>UpdateProjectRouteProjects1$inboundSchema),lazyType(()=>UpdateProjectRouteProjects2$inboundSchema)]),statusCode:optional(number()),createdAt:number(),caseId:optional(string()),actor:optional(string()),comment:optional(string()),ineligibleForAppeal:optional(boolean()),isCascading:optional(boolean())}),UpdateProjectHasProjectsResponse200ApplicationJSONResponseBodyValue$inboundSchema=objectType({eq:string()}),UpdateProjectHasProjectsResponse2$inboundSchema=objectType({type:literal(`host`),value:lazyType(()=>UpdateProjectHasProjectsResponse200ApplicationJSONResponseBodyValue$inboundSchema)}),UpdateProjectHasProjectsResponseKey$inboundSchema=nativeEnumType(UpdateProjectHasProjectsResponseKey),UpdateProjectHasProjectsResponse200ApplicationJSONValue$inboundSchema=objectType({eq:string()}),UpdateProjectHasProjectsResponse1$inboundSchema=objectType({type:literal(`header`),key:UpdateProjectHasProjectsResponseKey$inboundSchema,value:lazyType(()=>UpdateProjectHasProjectsResponse200ApplicationJSONValue$inboundSchema)});unionType([lazyType(()=>UpdateProjectHasProjectsResponse1$inboundSchema),lazyType(()=>UpdateProjectHasProjectsResponse2$inboundSchema)]);const UpdateProjectRouteMitigate$inboundSchema=objectType({action:nativeEnumType(UpdateProjectRouteAction)}),UpdateProjectRoute2$inboundSchema=objectType({has:arrayType(unionType([lazyType(()=>UpdateProjectHasProjectsResponse1$inboundSchema),lazyType(()=>UpdateProjectHasProjectsResponse2$inboundSchema)])),mitigate:lazyType(()=>UpdateProjectRouteMitigate$inboundSchema),src:optional(string())}),UpdateProjectRoute1$inboundSchema=objectType({src:string(),status:number()});smartUnion([lazyType(()=>UpdateProjectRoute1$inboundSchema),lazyType(()=>UpdateProjectRoute2$inboundSchema)]);const UpdateProjectBlockHistory3$inboundSchema=objectType({action:literal(`route-blocked`),route:smartUnion([lazyType(()=>UpdateProjectRoute1$inboundSchema),lazyType(()=>UpdateProjectRoute2$inboundSchema)]),reason:string(),createdAt:number(),caseId:optional(string()),actor:optional(string()),comment:optional(string()),ineligibleForAppeal:optional(boolean()),isCascading:optional(boolean())}),UpdateProjectBlockHistory2$inboundSchema=objectType({action:literal(`unblocked`),createdAt:number(),caseId:optional(string()),actor:optional(string()),comment:optional(string()),ineligibleForAppeal:optional(boolean()),isCascading:optional(boolean())}),UpdateProjectBlockHistory1$inboundSchema=objectType({action:literal(`blocked`),reason:string(),statusCode:number(),createdAt:number(),caseId:optional(string()),actor:optional(string()),comment:optional(string()),ineligibleForAppeal:optional(boolean()),isCascading:optional(boolean())});unionType([lazyType(()=>UpdateProjectBlockHistory1$inboundSchema),lazyType(()=>UpdateProjectBlockHistory2$inboundSchema),lazyType(()=>UpdateProjectBlockHistory3$inboundSchema),lazyType(()=>UpdateProjectBlockHistory4$inboundSchema)]);const UpdateProjectInterstitialHistory$inboundSchema=objectType({action:nativeEnumType(UpdateProjectProjectsResponseAction),createdAt:number(),caseId:optional(string()),reason:optional(string()),actor:optional(string()),comment:optional(string())});objectType({scanner:optional(string()),history:arrayType(lazyType(()=>UpdateProjectHistory$inboundSchema)),updatedAt:number(),block:optional(lazyType(()=>UpdateProjectBlock$inboundSchema)),blockHistory:optional(arrayType(unionType([lazyType(()=>UpdateProjectBlockHistory1$inboundSchema),lazyType(()=>UpdateProjectBlockHistory2$inboundSchema),lazyType(()=>UpdateProjectBlockHistory3$inboundSchema),lazyType(()=>UpdateProjectBlockHistory4$inboundSchema)]))),interstitial:optional(boolean()),interstitialHistory:optional(arrayType(lazyType(()=>UpdateProjectInterstitialHistory$inboundSchema)))});const UpdateProjectHasProjectsValue$inboundSchema=objectType({eq:string()}),UpdateProjectHas2$inboundSchema=objectType({type:literal(`host`),value:lazyType(()=>UpdateProjectHasProjectsValue$inboundSchema)}),UpdateProjectHasKey$inboundSchema=nativeEnumType(UpdateProjectHasKey),UpdateProjectHasValue$inboundSchema=objectType({eq:string()}),UpdateProjectHas1$inboundSchema=objectType({type:literal(`header`),key:UpdateProjectHasKey$inboundSchema,value:lazyType(()=>UpdateProjectHasValue$inboundSchema)});unionType([lazyType(()=>UpdateProjectHas1$inboundSchema),lazyType(()=>UpdateProjectHas2$inboundSchema)]);const UpdateProjectInternalRoutesMitigate$inboundSchema=objectType({action:nativeEnumType(UpdateProjectInternalRoutesAction)}),UpdateProjectInternalRoutes2$inboundSchema=objectType({has:arrayType(unionType([lazyType(()=>UpdateProjectHas1$inboundSchema),lazyType(()=>UpdateProjectHas2$inboundSchema)])),mitigate:lazyType(()=>UpdateProjectInternalRoutesMitigate$inboundSchema),src:optional(string())}),UpdateProjectInternalRoutes1$inboundSchema=objectType({src:string(),status:number()});smartUnion([lazyType(()=>UpdateProjectInternalRoutes1$inboundSchema),lazyType(()=>UpdateProjectInternalRoutes2$inboundSchema)]),nativeEnumType(UpdateProjectProjectsAction);export{updateProjectTrustedSourcesFromJSON};
|