eve 0.26.1 → 0.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/dist/src/chunks/{use-eve-agent-CruinZmd.js → use-eve-agent-AeQLLhu9.js} +118 -92
  3. package/dist/src/chunks/{use-eve-agent-BkztZA0v.js → use-eve-agent-PMY2WkAt.js} +118 -92
  4. package/dist/src/cli/commands/info.d.ts +2 -0
  5. package/dist/src/cli/commands/info.js +1 -1
  6. package/dist/src/client/message-action-parts.d.ts +43 -0
  7. package/dist/src/client/message-action-parts.js +1 -0
  8. package/dist/src/client/message-reducer.js +1 -1
  9. package/dist/src/compiled/.vendor-stamp.json +4 -4
  10. package/dist/src/compiled/@chat-adapter/slack/blocks.d.ts +47 -2
  11. package/dist/src/compiled/@chat-adapter/slack/blocks.js +10 -8
  12. package/dist/src/compiled/@chat-adapter/slack/index.d.ts +168 -8
  13. package/dist/src/compiled/@chat-adapter/slack/index.js +28 -28
  14. package/dist/src/compiled/@chat-adapter/slack/{types-AntsVifS.d.ts → types-CdGmMyOr.d.ts} +1 -1
  15. package/dist/src/compiled/@chat-adapter/slack/webhook.d.ts +2 -2
  16. package/dist/src/compiled/@chat-adapter/twilio/index.d.ts +1 -1
  17. package/dist/src/compiled/@chat-adapter/twilio/index.js +1 -1
  18. package/dist/src/compiled/@chat-adapter/twilio/webhook.d.ts +2 -2
  19. package/dist/src/compiled/@vercel/sandbox/index.js +12 -12
  20. package/dist/src/compiled/_chunks/node/{auth-Cuszvn7l.js → auth-BuQkq4Gr.js} +2 -2
  21. package/dist/src/compiled/_chunks/node/{dist-CdH_Yoxt.js → dist-BweCayKF.js} +42 -35
  22. package/dist/src/compiled/_chunks/node/{dist-Drt-_JVK.js → dist-DvkWiagq.js} +6 -4
  23. package/dist/src/compiled/chat/index.d.ts +17 -6
  24. package/dist/src/compiled/chat/index.js +1 -1
  25. package/dist/src/compiled/chat/{jsx-runtime-CzthIo1o.d.ts → jsx-runtime-_JEEAotp.d.ts} +125 -5
  26. package/dist/src/compiler/model-catalog.js +1 -1
  27. package/dist/src/evals/autoevals-client.js +1 -1
  28. package/dist/src/execution/sandbox/bindings/vercel-credentials.js +1 -1
  29. package/dist/src/execution/sandbox/bindings/vercel-lookup.js +1 -1
  30. package/dist/src/execution/session.d.ts +0 -2
  31. package/dist/src/execution/session.js +1 -1
  32. package/dist/src/execution/skills/instructions.d.ts +3 -3
  33. package/dist/src/execution/skills/instructions.js +2 -2
  34. package/dist/src/execution/workflow-steps.js +1 -1
  35. package/dist/src/harness/compaction-prompt.d.ts +19 -1
  36. package/dist/src/harness/compaction-prompt.js +7 -5
  37. package/dist/src/harness/compaction.d.ts +4 -11
  38. package/dist/src/harness/compaction.js +1 -1
  39. package/dist/src/harness/messages.d.ts +7 -0
  40. package/dist/src/harness/messages.js +1 -1
  41. package/dist/src/harness/prompt-cache.d.ts +16 -5
  42. package/dist/src/harness/prompt-cache.js +1 -1
  43. package/dist/src/harness/stale-input-responses.js +2 -2
  44. package/dist/src/harness/token-estimate.d.ts +9 -0
  45. package/dist/src/harness/token-estimate.js +1 -0
  46. package/dist/src/harness/tool-loop.js +2 -2
  47. package/dist/src/internal/application/compiled-artifacts.js +9 -3
  48. package/dist/src/internal/application/package.js +1 -1
  49. package/dist/src/internal/gateway.d.ts +19 -0
  50. package/dist/src/internal/gateway.js +1 -0
  51. package/dist/src/internal/nitro/host/copy-host-middleware.js +1 -1
  52. package/dist/src/internal/user-agent.d.ts +11 -0
  53. package/dist/src/internal/user-agent.js +1 -0
  54. package/dist/src/public/channels/auth.d.ts +59 -9
  55. package/dist/src/public/channels/auth.js +1 -1
  56. package/dist/src/public/next/index.js +1 -1
  57. package/dist/src/public/nuxt/index.d.ts +1 -1
  58. package/dist/src/public/nuxt/index.js +1 -1
  59. package/dist/src/public/nuxt/module.d.ts +10 -24
  60. package/dist/src/public/nuxt/module.js +1 -1
  61. package/dist/src/public/nuxt/routing.d.ts +5 -39
  62. package/dist/src/public/nuxt/routing.js +1 -1
  63. package/dist/src/public/nuxt/vercel-services.d.ts +117 -0
  64. package/dist/src/public/nuxt/vercel-services.js +1 -0
  65. package/dist/src/public/tools/defaults.d.ts +3 -3
  66. package/dist/src/runtime/framework-tools/index.d.ts +3 -2
  67. package/dist/src/runtime/framework-tools/index.js +1 -1
  68. package/dist/src/runtime/framework-tools/skill.d.ts +6 -1
  69. package/dist/src/runtime/framework-tools/skill.js +1 -1
  70. package/dist/src/runtime/framework-tools/todo.js +1 -1
  71. package/dist/src/runtime/governance/auth/http-basic.js +1 -1
  72. package/dist/src/runtime/resolve-agent-graph.js +1 -1
  73. package/dist/src/setup/boxes/select-model.js +1 -1
  74. package/dist/src/setup/gateway-models.js +1 -1
  75. package/dist/src/setup/scaffold/create/project.js +1 -1
  76. package/dist/src/setup/validate-gateway-key.js +1 -1
  77. package/dist/src/{public/next → shared}/resolve-eve-binary.d.ts +1 -1
  78. package/dist/src/svelte/index.js +1 -1
  79. package/dist/src/svelte/use-eve-agent.js +1 -1
  80. package/dist/src/vue/index.js +1 -1
  81. package/dist/src/vue/use-eve-agent.js +1 -1
  82. package/docs/concepts/sessions-runs-and-streaming.md +7 -7
  83. package/docs/extensions.md +115 -77
  84. package/docs/guides/auth-and-route-protection.md +14 -1
  85. package/docs/guides/frontend/nuxt.mdx +22 -1
  86. package/docs/meta.json +1 -0
  87. package/docs/reference/cli.md +1 -1
  88. package/docs/schedules.mdx +1 -1
  89. package/docs/skills.mdx +1 -1
  90. package/package.json +5 -5
  91. package/dist/src/execution/sandbox/bindings/vercel-user-agent.d.ts +0 -6
  92. package/dist/src/execution/sandbox/bindings/vercel-user-agent.js +0 -1
  93. package/dist/src/execution/workflow-skill-root.d.ts +0 -6
  94. package/dist/src/execution/workflow-skill-root.js +0 -1
  95. package/dist/src/public/nuxt/vercel-json.d.ts +0 -17
  96. package/dist/src/public/nuxt/vercel-json.js +0 -1
  97. /package/dist/src/{public/next → shared}/resolve-eve-binary.js +0 -0
@@ -35,56 +35,63 @@ import{o as e,r as t,t as n}from"./chunk-BTyA9uPd.js";import{n as r,t as i}from"
35
35
  `,inConstruct:`tableCell`},{atBreak:!0,character:`|`,after:`[ :-]`},{character:`|`,inConstruct:`tableCell`},{atBreak:!0,character:`:`,after:`-`},{atBreak:!0,character:`-`,after:`[:|-]`}],handlers:{inlineCode:f,table:o,tableCell:c,tableRow:s}};function o(e,t,n,r){return l(u(e,n,r),e.align)}function s(e,t,n,r){let i=l([d(e,n,r)]);return i.slice(0,i.indexOf(`
36
36
  `))}function c(e,t,n,r){let i=n.enter(`tableCell`),o=n.enter(`phrasing`),s=n.containerPhrasing(e,{...r,before:a,after:a});return o(),i(),s}function l(e,t){return Ke(e,{align:t,alignDelimiters:r,padding:n,stringLength:i})}function u(e,t,n){let r=e.children,i=-1,a=[],o=t.enter(`table`);for(;++i<r.length;)a[i]=d(r[i],t,n);return o(),a}function d(e,t,n){let r=e.children,i=-1,a=[],o=t.enter(`tableRow`);for(;++i<r.length;)a[i]=c(r[i],e,t,n);return o(),a}function f(e,t,n){let r=Zt.inlineCode(e,t,n);return n.stack.includes(`tableCell`)&&(r=r.replace(/\|/g,`\\$&`)),r}}function Ln(){return{exit:{taskListCheckValueChecked:zn,taskListCheckValueUnchecked:zn,paragraph:Bn}}}function Rn(){return{unsafe:[{atBreak:!0,character:`-`,after:`[:|-]`}],handlers:{listItem:Vn}}}function zn(e){let t=this.stack[this.stack.length-2];t.type,t.checked=e.type===`taskListCheckValueChecked`}function Bn(e){let t=this.stack[this.stack.length-2];if(t&&t.type===`listItem`&&typeof t.checked==`boolean`){let e=this.stack[this.stack.length-1];e.type;let n=e.children[0];if(n&&n.type===`text`){let r=t.children,i=-1,a;for(;++i<r.length;){let e=r[i];if(e.type===`paragraph`){a=e;break}}a===e&&(n.value=n.value.slice(1),n.value.length===0?e.children.shift():e.position&&n.position&&typeof n.position.start.offset==`number`&&(n.position.start.column++,n.position.start.offset++,e.position.start=Object.assign({},n.position.start)))}}this.exit(e)}function Vn(e,t,n,r){let i=e.children[0],a=typeof e.checked==`boolean`&&i&&i.type===`paragraph`,o=`[`+(e.checked?`x`:` `)+`] `,s=n.createTracker(r);a&&s.move(o);let c=Zt.listItem(e,t,n,{...r,...s.current()});return a&&(c=c.replace(/^(?:[*+-]|\d+\.)([\r\n]| {1,3})/,l)),c;function l(e){return e+o}}function Hn(){return[ue(),Pe(),ze(),On(),Ln()]}function Un(e){return{extensions:[de(),Fe(e),Be(),In(e),Rn()]}}function I(e,t,n,r){let i=e.length,a=0,o;if(t=t<0?-t>i?0:i+t:t>i?i:t,n=n>0?n:0,r.length<1e4)o=Array.from(r),o.unshift(t,n),e.splice(...o);else for(n&&e.splice(t,n);a<r.length;)o=r.slice(a,a+1e4),o.unshift(t,0),e.splice(...o),a+=1e4,t+=1e4}function L(e,t){return e.length>0?(I(e,e.length,0,t),e):t}const Wn={}.hasOwnProperty;function Gn(e){let t={},n=-1;for(;++n<e.length;)Kn(t,e[n]);return t}function Kn(e,t){let n;for(n in t){let r=(Wn.call(e,n)?e[n]:void 0)||(e[n]={}),i=t[n],a;if(i)for(a in i){Wn.call(r,a)||(r[a]=[]);let e=i[a];qn(r[a],Array.isArray(e)?e:e?[e]:[])}}}function qn(e,t){let n=-1,r=[];for(;++n<t.length;)(t[n].add===`after`?e:r).push(t[n]);I(e,0,0,r)}const Jn={tokenize:or,partial:!0},Yn={tokenize:sr,partial:!0},Xn={tokenize:cr,partial:!0},Zn={tokenize:lr,partial:!0},Qn={tokenize:ur,partial:!0},$n={name:`wwwAutolink`,tokenize:ir,previous:dr},er={name:`protocolAutolink`,tokenize:ar,previous:fr},R={name:`emailAutolink`,tokenize:rr,previous:pr},z={};function tr(){return{text:z}}let nr=48;for(;nr<123;)z[nr]=R,nr++,nr===58?nr=65:nr===91&&(nr=97);z[43]=R,z[45]=R,z[46]=R,z[95]=R,z[72]=[R,er],z[104]=[R,er],z[87]=[R,$n],z[119]=[R,$n];function rr(e,t,n){let r=this,i,a;return o;function o(t){return!mr(t)||!pr.call(r,r.previous)||hr(r.events)?n(t):(e.enter(`literalAutolink`),e.enter(`literalAutolinkEmail`),s(t))}function s(t){return mr(t)?(e.consume(t),s):t===64?(e.consume(t),c):n(t)}function c(t){return t===46?e.check(Qn,u,l)(t):t===45||t===95||h(t)?(a=!0,e.consume(t),c):u(t)}function l(t){return e.consume(t),i=!0,c}function u(o){return a&&i&&m(r.previous)?(e.exit(`literalAutolinkEmail`),e.exit(`literalAutolink`),t(o)):n(o)}}function ir(e,t,n){let r=this;return i;function i(t){return t!==87&&t!==119||!dr.call(r,r.previous)||hr(r.events)?n(t):(e.enter(`literalAutolink`),e.enter(`literalAutolinkWww`),e.check(Jn,e.attempt(Yn,e.attempt(Xn,a),n),n)(t))}function a(n){return e.exit(`literalAutolinkWww`),e.exit(`literalAutolink`),t(n)}}function ar(e,t,n){let r=this,i=``,a=!1;return o;function o(t){return(t===72||t===104)&&fr.call(r,r.previous)&&!hr(r.events)?(e.enter(`literalAutolink`),e.enter(`literalAutolinkHttp`),i+=String.fromCodePoint(t),e.consume(t),s):n(t)}function s(t){if(m(t)&&i.length<5)return i+=String.fromCodePoint(t),e.consume(t),s;if(t===58){let n=i.toLowerCase();if(n===`http`||n===`https`)return e.consume(t),c}return n(t)}function c(t){return t===47?(e.consume(t),a?l:(a=!0,c)):n(t)}function l(t){return t===null||_(t)||S(t)||T(t)||w(t)?n(t):e.attempt(Yn,e.attempt(Xn,u),n)(t)}function u(n){return e.exit(`literalAutolinkHttp`),e.exit(`literalAutolink`),t(n)}}function or(e,t,n){let r=0;return i;function i(t){return(t===87||t===119)&&r<3?(r++,e.consume(t),i):t===46&&r===3?(e.consume(t),a):n(t)}function a(e){return e===null?n(e):t(e)}}function sr(e,t,n){let r,i,a;return o;function o(t){return t===46||t===95?e.check(Zn,c,s)(t):t===null||S(t)||T(t)||t!==45&&w(t)?c(t):(a=!0,e.consume(t),o)}function s(t){return t===95?r=!0:(i=r,r=void 0),e.consume(t),o}function c(e){return i||r||!a?n(e):t(e)}}function cr(e,t){let n=0,r=0;return i;function i(o){return o===40?(n++,e.consume(o),i):o===41&&r<n?a(o):o===33||o===34||o===38||o===39||o===41||o===42||o===44||o===46||o===58||o===59||o===60||o===63||o===93||o===95||o===126?e.check(Zn,t,a)(o):o===null||S(o)||T(o)?t(o):(e.consume(o),i)}function a(t){return t===41&&r++,e.consume(t),i}}function lr(e,t,n){return r;function r(o){return o===33||o===34||o===39||o===41||o===42||o===44||o===46||o===58||o===59||o===63||o===95||o===126?(e.consume(o),r):o===38?(e.consume(o),a):o===93?(e.consume(o),i):o===60||o===null||S(o)||T(o)?t(o):n(o)}function i(e){return e===null||e===40||e===91||S(e)||T(e)?t(e):r(e)}function a(e){return m(e)?o(e):n(e)}function o(t){return t===59?(e.consume(t),r):m(t)?(e.consume(t),o):n(t)}}function ur(e,t,n){return r;function r(t){return e.consume(t),i}function i(e){return h(e)?n(e):t(e)}}function dr(e){return e===null||e===40||e===42||e===95||e===91||e===93||e===126||S(e)}function fr(e){return!m(e)}function pr(e){return!(e===47||mr(e))}function mr(e){return e===43||e===45||e===46||e===95||h(e)}function hr(e){let t=e.length,n=!1;for(;t--;){let r=e[t][1];if((r.type===`labelLink`||r.type===`labelImage`)&&!r._balanced){n=!0;break}if(r._gfmAutolinkLiteralWalkedInto){n=!1;break}}return e.length>0&&!n&&(e[e.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),n}function gr(e,t,n){let r=[],i=-1;for(;++i<e.length;){let a=e[i].resolveAll;a&&!r.includes(a)&&(t=a(t,n),r.push(a))}return t}const _r={name:`attention`,resolveAll:vr,tokenize:yr};function vr(e,t){let n=-1,r,i,a,o,s,c,l,u;for(;++n<e.length;)if(e[n][0]===`enter`&&e[n][1].type===`attentionSequence`&&e[n][1]._close){for(r=n;r--;)if(e[r][0]===`exit`&&e[r][1].type===`attentionSequence`&&e[r][1]._open&&t.sliceSerialize(e[r][1]).charCodeAt(0)===t.sliceSerialize(e[n][1]).charCodeAt(0)){if((e[r][1]._close||e[n][1]._open)&&(e[n][1].end.offset-e[n][1].start.offset)%3&&!((e[r][1].end.offset-e[r][1].start.offset+e[n][1].end.offset-e[n][1].start.offset)%3))continue;c=e[r][1].end.offset-e[r][1].start.offset>1&&e[n][1].end.offset-e[n][1].start.offset>1?2:1;let d={...e[r][1].end},f={...e[n][1].start};br(d,-c),br(f,c),o={type:c>1?`strongSequence`:`emphasisSequence`,start:d,end:{...e[r][1].end}},s={type:c>1?`strongSequence`:`emphasisSequence`,start:{...e[n][1].start},end:f},a={type:c>1?`strongText`:`emphasisText`,start:{...e[r][1].end},end:{...e[n][1].start}},i={type:c>1?`strong`:`emphasis`,start:{...o.start},end:{...s.end}},e[r][1].end={...o.start},e[n][1].start={...s.end},l=[],e[r][1].end.offset-e[r][1].start.offset&&(l=L(l,[[`enter`,e[r][1],t],[`exit`,e[r][1],t]])),l=L(l,[[`enter`,i,t],[`enter`,o,t],[`exit`,o,t],[`enter`,a,t]]),l=L(l,gr(t.parser.constructs.insideSpan.null,e.slice(r+1,n),t)),l=L(l,[[`exit`,a,t],[`enter`,s,t],[`exit`,s,t],[`exit`,i,t]]),e[n][1].end.offset-e[n][1].start.offset?(u=2,l=L(l,[[`enter`,e[n][1],t],[`exit`,e[n][1],t]])):u=0,I(e,r-1,n-r+3,l),n=r+l.length-u-2;break}}for(n=-1;++n<e.length;)e[n][1].type===`attentionSequence`&&(e[n][1].type=`data`);return e}function yr(e,t){let n=this.parser.constructs.attentionMarkers.null,r=this.previous,i=ht(r),a;return o;function o(t){return a=t,e.enter(`attentionSequence`),s(t)}function s(o){if(o===a)return e.consume(o),s;let c=e.exit(`attentionSequence`),l=ht(o),u=!l||l===2&&i||n.includes(o),d=!i||i===2&&l||n.includes(r);return c._open=!!(a===42?u:u&&(i||!d)),c._close=!!(a===42?d:d&&(l||!u)),t(o)}}function br(e,t){e.column+=t,e.offset+=t,e._bufferIndex+=t}const xr={name:`autolink`,tokenize:Sr};function Sr(e,t,n){let r=0;return i;function i(t){return e.enter(`autolink`),e.enter(`autolinkMarker`),e.consume(t),e.exit(`autolinkMarker`),e.enter(`autolinkProtocol`),a}function a(t){return m(t)?(e.consume(t),o):t===64?n(t):l(t)}function o(e){return e===43||e===45||e===46||h(e)?(r=1,s(e)):l(e)}function s(t){return t===58?(e.consume(t),r=0,c):(t===43||t===45||t===46||h(t))&&r++<32?(e.consume(t),s):(r=0,l(t))}function c(r){return r===62?(e.exit(`autolinkProtocol`),e.enter(`autolinkMarker`),e.consume(r),e.exit(`autolinkMarker`),e.exit(`autolink`),t):r===null||r===32||r===60||_(r)?n(r):(e.consume(r),c)}function l(t){return t===64?(e.consume(t),u):g(t)?(e.consume(t),l):n(t)}function u(e){return h(e)?d(e):n(e)}function d(n){return n===46?(e.consume(n),r=0,u):n===62?(e.exit(`autolinkProtocol`).type=`autolinkEmail`,e.enter(`autolinkMarker`),e.consume(n),e.exit(`autolinkMarker`),e.exit(`autolink`),t):f(n)}function f(t){if((t===45||h(t))&&r++<63){let n=t===45?f:d;return e.consume(t),n}return n(t)}}function B(e,t,n,r){let i=r?r-1:1/0,a=0;return o;function o(r){return C(r)?(e.enter(n),s(r)):t(r)}function s(r){return C(r)&&a++<i?(e.consume(r),s):(e.exit(n),t(r))}}const Cr={partial:!0,tokenize:wr};function wr(e,t,n){return r;function r(t){return C(t)?B(e,i,`linePrefix`)(t):i(t)}function i(e){return e===null||x(e)?t(e):n(e)}}const Tr={continuation:{tokenize:Dr},exit:Or,name:`blockQuote`,tokenize:Er};function Er(e,t,n){let r=this;return i;function i(t){if(t===62){let n=r.containerState;return n.open||=(e.enter(`blockQuote`,{_container:!0}),!0),e.enter(`blockQuotePrefix`),e.enter(`blockQuoteMarker`),e.consume(t),e.exit(`blockQuoteMarker`),a}return n(t)}function a(n){return C(n)?(e.enter(`blockQuotePrefixWhitespace`),e.consume(n),e.exit(`blockQuotePrefixWhitespace`),e.exit(`blockQuotePrefix`),t):(e.exit(`blockQuotePrefix`),t(n))}}function Dr(e,t,n){let r=this;return i;function i(t){return C(t)?B(e,a,`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(t):a(t)}function a(r){return e.attempt(Tr,t,n)(r)}}function Or(e){e.exit(`blockQuote`)}const kr={name:`characterEscape`,tokenize:Ar};function Ar(e,t,n){return r;function r(t){return e.enter(`characterEscape`),e.enter(`escapeMarker`),e.consume(t),e.exit(`escapeMarker`),i}function i(r){return b(r)?(e.enter(`characterEscapeValue`),e.consume(r),e.exit(`characterEscapeValue`),e.exit(`characterEscape`),t):n(r)}}const jr={name:`characterReference`,tokenize:Mr};function Mr(e,t,n){let r=this,i=0,a,o;return s;function s(t){return e.enter(`characterReference`),e.enter(`characterReferenceMarker`),e.consume(t),e.exit(`characterReferenceMarker`),c}function c(t){return t===35?(e.enter(`characterReferenceMarkerNumeric`),e.consume(t),e.exit(`characterReferenceMarkerNumeric`),l):(e.enter(`characterReferenceValue`),a=31,o=h,u(t))}function l(t){return t===88||t===120?(e.enter(`characterReferenceMarkerHexadecimal`),e.consume(t),e.exit(`characterReferenceMarkerHexadecimal`),e.enter(`characterReferenceValue`),a=6,o=y,u):(e.enter(`characterReferenceValue`),a=7,o=v,u(t))}function u(s){if(s===59&&i){let i=e.exit(`characterReferenceValue`);return o===h&&!an(r.sliceSerialize(i))?n(s):(e.enter(`characterReferenceMarker`),e.consume(s),e.exit(`characterReferenceMarker`),e.exit(`characterReference`),t)}return o(s)&&i++<a?(e.consume(s),u):n(s)}}const Nr={partial:!0,tokenize:Ir},Pr={concrete:!0,name:`codeFenced`,tokenize:Fr};function Fr(e,t,n){let r=this,i={partial:!0,tokenize:S},a=0,o=0,s;return c;function c(e){return l(e)}function l(t){let n=r.events[r.events.length-1];return a=n&&n[1].type===`linePrefix`?n[2].sliceSerialize(n[1],!0).length:0,s=t,e.enter(`codeFenced`),e.enter(`codeFencedFence`),e.enter(`codeFencedFenceSequence`),u(t)}function u(t){return t===s?(o++,e.consume(t),u):o<3?n(t):(e.exit(`codeFencedFenceSequence`),C(t)?B(e,d,`whitespace`)(t):d(t))}function d(n){return n===null||x(n)?(e.exit(`codeFencedFence`),r.interrupt?t(n):e.check(Nr,h,b)(n)):(e.enter(`codeFencedFenceInfo`),e.enter(`chunkString`,{contentType:`string`}),f(n))}function f(t){return t===null||x(t)?(e.exit(`chunkString`),e.exit(`codeFencedFenceInfo`),d(t)):C(t)?(e.exit(`chunkString`),e.exit(`codeFencedFenceInfo`),B(e,p,`whitespace`)(t)):t===96&&t===s?n(t):(e.consume(t),f)}function p(t){return t===null||x(t)?d(t):(e.enter(`codeFencedFenceMeta`),e.enter(`chunkString`,{contentType:`string`}),m(t))}function m(t){return t===null||x(t)?(e.exit(`chunkString`),e.exit(`codeFencedFenceMeta`),d(t)):t===96&&t===s?n(t):(e.consume(t),m)}function h(t){return e.attempt(i,b,g)(t)}function g(t){return e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),_}function _(t){return a>0&&C(t)?B(e,v,`linePrefix`,a+1)(t):v(t)}function v(t){return t===null||x(t)?e.check(Nr,h,b)(t):(e.enter(`codeFlowValue`),y(t))}function y(t){return t===null||x(t)?(e.exit(`codeFlowValue`),v(t)):(e.consume(t),y)}function b(n){return e.exit(`codeFenced`),t(n)}function S(e,t,n){let i=0;return a;function a(t){return e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),c}function c(t){return e.enter(`codeFencedFence`),C(t)?B(e,l,`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(t):l(t)}function l(t){return t===s?(e.enter(`codeFencedFenceSequence`),u(t)):n(t)}function u(t){return t===s?(i++,e.consume(t),u):i>=o?(e.exit(`codeFencedFenceSequence`),C(t)?B(e,d,`whitespace`)(t):d(t)):n(t)}function d(r){return r===null||x(r)?(e.exit(`codeFencedFence`),t(r)):n(r)}}}function Ir(e,t,n){let r=this;return i;function i(t){return t===null?n(t):(e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),a)}function a(e){return r.parser.lazy[r.now().line]?n(e):t(e)}}const Lr={name:`codeIndented`,tokenize:zr},Rr={partial:!0,tokenize:Br};function zr(e,t,n){let r=this;return i;function i(t){return e.enter(`codeIndented`),B(e,a,`linePrefix`,5)(t)}function a(e){let t=r.events[r.events.length-1];return t&&t[1].type===`linePrefix`&&t[2].sliceSerialize(t[1],!0).length>=4?o(e):n(e)}function o(t){return t===null?c(t):x(t)?e.attempt(Rr,o,c)(t):(e.enter(`codeFlowValue`),s(t))}function s(t){return t===null||x(t)?(e.exit(`codeFlowValue`),o(t)):(e.consume(t),s)}function c(n){return e.exit(`codeIndented`),t(n)}}function Br(e,t,n){let r=this;return i;function i(t){return r.parser.lazy[r.now().line]?n(t):x(t)?(e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),i):B(e,a,`linePrefix`,5)(t)}function a(e){let a=r.events[r.events.length-1];return a&&a[1].type===`linePrefix`&&a[2].sliceSerialize(a[1],!0).length>=4?t(e):x(e)?i(e):n(e)}}const Vr={name:`codeText`,previous:Ur,resolve:Hr,tokenize:Wr};function Hr(e){let t=e.length-4,n=3,r,i;if((e[n][1].type===`lineEnding`||e[n][1].type===`space`)&&(e[t][1].type===`lineEnding`||e[t][1].type===`space`)){for(r=n;++r<t;)if(e[r][1].type===`codeTextData`){e[n][1].type=`codeTextPadding`,e[t][1].type=`codeTextPadding`,n+=2,t-=2;break}}for(r=n-1,t++;++r<=t;)i===void 0?r!==t&&e[r][1].type!==`lineEnding`&&(i=r):(r===t||e[r][1].type===`lineEnding`)&&(e[i][1].type=`codeTextData`,r!==i+2&&(e[i][1].end=e[r-1][1].end,e.splice(i+2,r-i-2),t-=r-i-2,r=i+2),i=void 0);return e}function Ur(e){return e!==96||this.events[this.events.length-1][1].type===`characterEscape`}function Wr(e,t,n){let r=0,i,a;return o;function o(t){return e.enter(`codeText`),e.enter(`codeTextSequence`),s(t)}function s(t){return t===96?(e.consume(t),r++,s):(e.exit(`codeTextSequence`),c(t))}function c(t){return t===null?n(t):t===32?(e.enter(`space`),e.consume(t),e.exit(`space`),c):t===96?(a=e.enter(`codeTextSequence`),i=0,u(t)):x(t)?(e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),c):(e.enter(`codeTextData`),l(t))}function l(t){return t===null||t===32||t===96||x(t)?(e.exit(`codeTextData`),c(t)):(e.consume(t),l)}function u(n){return n===96?(e.consume(n),i++,u):i===r?(e.exit(`codeTextSequence`),e.exit(`codeText`),t(n)):(a.type=`codeTextData`,l(n))}}var Gr=class{constructor(e){this.left=e?[...e]:[],this.right=[]}get(e){if(e<0||e>=this.left.length+this.right.length)throw RangeError("Cannot access index `"+e+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return e<this.left.length?this.left[e]:this.right[this.right.length-e+this.left.length-1]}get length(){return this.left.length+this.right.length}shift(){return this.setCursor(0),this.right.pop()}slice(e,t){let n=t??1/0;return n<this.left.length?this.left.slice(e,n):e>this.left.length?this.right.slice(this.right.length-n+this.left.length,this.right.length-e+this.left.length).reverse():this.left.slice(e).concat(this.right.slice(this.right.length-n+this.left.length).reverse())}splice(e,t,n){let r=t||0;this.setCursor(Math.trunc(e));let i=this.right.splice(this.right.length-r,1/0);return n&&Kr(this.left,n),i.reverse()}pop(){return this.setCursor(1/0),this.left.pop()}push(e){this.setCursor(1/0),this.left.push(e)}pushMany(e){this.setCursor(1/0),Kr(this.left,e)}unshift(e){this.setCursor(0),this.right.push(e)}unshiftMany(e){this.setCursor(0),Kr(this.right,e.reverse())}setCursor(e){if(!(e===this.left.length||e>this.left.length&&this.right.length===0||e<0&&this.left.length===0))if(e<this.left.length){let t=this.left.splice(e,1/0);Kr(this.right,t.reverse())}else{let t=this.right.splice(this.left.length+this.right.length-e,1/0);Kr(this.left,t.reverse())}}};function Kr(e,t){let n=0;if(t.length<1e4)e.push(...t);else for(;n<t.length;)e.push(...t.slice(n,n+1e4)),n+=1e4}function qr(e){let t={},n=-1,r,i,a,o,s,c,l,u=new Gr(e);for(;++n<u.length;){for(;n in t;)n=t[n];if(r=u.get(n),n&&r[1].type===`chunkFlow`&&u.get(n-1)[1].type===`listItemPrefix`&&(c=r[1]._tokenizer.events,a=0,a<c.length&&c[a][1].type===`lineEndingBlank`&&(a+=2),a<c.length&&c[a][1].type===`content`))for(;++a<c.length&&c[a][1].type!==`content`;)c[a][1].type===`chunkText`&&(c[a][1]._isInFirstContentOfListItem=!0,a++);if(r[0]===`enter`)r[1].contentType&&(Object.assign(t,Jr(u,n)),n=t[n],l=!0);else if(r[1]._container){for(a=n,i=void 0;a--;)if(o=u.get(a),o[1].type===`lineEnding`||o[1].type===`lineEndingBlank`)o[0]===`enter`&&(i&&(u.get(i)[1].type=`lineEndingBlank`),o[1].type=`lineEnding`,i=a);else if(!(o[1].type===`linePrefix`||o[1].type===`listItemIndent`))break;i&&(r[1].end={...u.get(i)[1].start},s=u.slice(i,n),s.unshift(r),u.splice(i,n-i+1,s))}}return I(e,0,1/0,u.slice(0)),!l}function Jr(e,t){let n=e.get(t)[1],r=e.get(t)[2],i=t-1,a=[],o=n._tokenizer;o||(o=r.parser[n.contentType](n.start),n._contentTypeTextTrailing&&(o._contentTypeTextTrailing=!0));let s=o.events,c=[],l={},u,d,f=-1,p=n,m=0,h=0,g=[h];for(;p;){for(;e.get(++i)[1]!==p;);a.push(i),p._tokenizer||(u=r.sliceStream(p),p.next||u.push(null),d&&o.defineSkip(p.start),p._isInFirstContentOfListItem&&(o._gfmTasklistFirstContentOfListItem=!0),o.write(u),p._isInFirstContentOfListItem&&(o._gfmTasklistFirstContentOfListItem=void 0)),d=p,p=p.next}for(p=n;++f<s.length;)s[f][0]===`exit`&&s[f-1][0]===`enter`&&s[f][1].type===s[f-1][1].type&&s[f][1].start.line!==s[f][1].end.line&&(h=f+1,g.push(h),p._tokenizer=void 0,p.previous=void 0,p=p.next);for(o.events=[],p?(p._tokenizer=void 0,p.previous=void 0):g.pop(),f=g.length;f--;){let t=s.slice(g[f],g[f+1]),n=a.pop();c.push([n,n+t.length-1]),e.splice(n,2,t)}for(c.reverse(),f=-1;++f<c.length;)l[m+c[f][0]]=m+c[f][1],m+=c[f][1]-c[f][0]-1;return l}const Yr={resolve:Zr,tokenize:Qr},Xr={partial:!0,tokenize:$r};function Zr(e){return qr(e),e}function Qr(e,t){let n;return r;function r(t){return e.enter(`content`),n=e.enter(`chunkContent`,{contentType:`content`}),i(t)}function i(t){return t===null?a(t):x(t)?e.check(Xr,o,a)(t):(e.consume(t),i)}function a(n){return e.exit(`chunkContent`),e.exit(`content`),t(n)}function o(t){return e.consume(t),e.exit(`chunkContent`),n.next=e.enter(`chunkContent`,{contentType:`content`,previous:n}),n=n.next,i}}function $r(e,t,n){let r=this;return i;function i(t){return e.exit(`chunkContent`),e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),B(e,a,`linePrefix`)}function a(i){if(i===null||x(i))return n(i);let a=r.events[r.events.length-1];return!r.parser.constructs.disable.null.includes(`codeIndented`)&&a&&a[1].type===`linePrefix`&&a[2].sliceSerialize(a[1],!0).length>=4?t(i):e.interrupt(r.parser.constructs.flow,n,t)(i)}}function ei(e,t,n,r,i,a,o,s,c){let l=c||1/0,u=0;return d;function d(t){return t===60?(e.enter(r),e.enter(i),e.enter(a),e.consume(t),e.exit(a),f):t===null||t===32||t===41||_(t)?n(t):(e.enter(r),e.enter(o),e.enter(s),e.enter(`chunkString`,{contentType:`string`}),h(t))}function f(n){return n===62?(e.enter(a),e.consume(n),e.exit(a),e.exit(i),e.exit(r),t):(e.enter(s),e.enter(`chunkString`,{contentType:`string`}),p(n))}function p(t){return t===62?(e.exit(`chunkString`),e.exit(s),f(t)):t===null||t===60||x(t)?n(t):(e.consume(t),t===92?m:p)}function m(t){return t===60||t===62||t===92?(e.consume(t),p):p(t)}function h(i){return!u&&(i===null||i===41||S(i))?(e.exit(`chunkString`),e.exit(s),e.exit(o),e.exit(r),t(i)):u<l&&i===40?(e.consume(i),u++,h):i===41?(e.consume(i),u--,h):i===null||i===32||i===40||_(i)?n(i):(e.consume(i),i===92?g:h)}function g(t){return t===40||t===41||t===92?(e.consume(t),h):h(t)}}function ti(e,t,n,r,i,a){let o=this,s=0,c;return l;function l(t){return e.enter(r),e.enter(i),e.consume(t),e.exit(i),e.enter(a),u}function u(l){return s>999||l===null||l===91||l===93&&!c||l===94&&!s&&`_hiddenFootnoteSupport`in o.parser.constructs?n(l):l===93?(e.exit(a),e.enter(i),e.consume(l),e.exit(i),e.exit(r),t):x(l)?(e.enter(`lineEnding`),e.consume(l),e.exit(`lineEnding`),u):(e.enter(`chunkString`,{contentType:`string`}),d(l))}function d(t){return t===null||t===91||t===93||x(t)||s++>999?(e.exit(`chunkString`),u(t)):(e.consume(t),c||=!C(t),t===92?f:d)}function f(t){return t===91||t===92||t===93?(e.consume(t),s++,d):d(t)}}function ni(e,t,n,r,i,a){let o;return s;function s(t){return t===34||t===39||t===40?(e.enter(r),e.enter(i),e.consume(t),e.exit(i),o=t===40?41:t,c):n(t)}function c(n){return n===o?(e.enter(i),e.consume(n),e.exit(i),e.exit(r),t):(e.enter(a),l(n))}function l(t){return t===o?(e.exit(a),c(o)):t===null?n(t):x(t)?(e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),B(e,l,`linePrefix`)):(e.enter(`chunkString`,{contentType:`string`}),u(t))}function u(t){return t===o||t===null||x(t)?(e.exit(`chunkString`),l(t)):(e.consume(t),t===92?d:u)}function d(t){return t===o||t===92?(e.consume(t),u):u(t)}}function ri(e,t){let n;return r;function r(i){return x(i)?(e.enter(`lineEnding`),e.consume(i),e.exit(`lineEnding`),n=!0,r):C(i)?B(e,r,n?`linePrefix`:`lineSuffix`)(i):t(i)}}const ii={name:`definition`,tokenize:oi},ai={partial:!0,tokenize:si};function oi(e,t,n){let r=this,i;return a;function a(t){return e.enter(`definition`),o(t)}function o(t){return ti.call(r,e,s,n,`definitionLabel`,`definitionLabelMarker`,`definitionLabelString`)(t)}function s(t){return i=F(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)),t===58?(e.enter(`definitionMarker`),e.consume(t),e.exit(`definitionMarker`),c):n(t)}function c(t){return S(t)?ri(e,l)(t):l(t)}function l(t){return ei(e,u,n,`definitionDestination`,`definitionDestinationLiteral`,`definitionDestinationLiteralMarker`,`definitionDestinationRaw`,`definitionDestinationString`)(t)}function u(t){return e.attempt(ai,d,d)(t)}function d(t){return C(t)?B(e,f,`whitespace`)(t):f(t)}function f(a){return a===null||x(a)?(e.exit(`definition`),r.parser.defined.push(i),t(a)):n(a)}}function si(e,t,n){return r;function r(t){return S(t)?ri(e,i)(t):n(t)}function i(t){return ni(e,a,n,`definitionTitle`,`definitionTitleMarker`,`definitionTitleString`)(t)}function a(t){return C(t)?B(e,o,`whitespace`)(t):o(t)}function o(e){return e===null||x(e)?t(e):n(e)}}const ci={name:`hardBreakEscape`,tokenize:li};function li(e,t,n){return r;function r(t){return e.enter(`hardBreakEscape`),e.consume(t),i}function i(r){return x(r)?(e.exit(`hardBreakEscape`),t(r)):n(r)}}const ui={name:`headingAtx`,resolve:di,tokenize:fi};function di(e,t){let n=e.length-2,r=3,i,a;return e[r][1].type===`whitespace`&&(r+=2),n-2>r&&e[n][1].type===`whitespace`&&(n-=2),e[n][1].type===`atxHeadingSequence`&&(r===n-1||n-4>r&&e[n-2][1].type===`whitespace`)&&(n-=r+1===n?2:4),n>r&&(i={type:`atxHeadingText`,start:e[r][1].start,end:e[n][1].end},a={type:`chunkText`,start:e[r][1].start,end:e[n][1].end,contentType:`text`},I(e,r,n-r+1,[[`enter`,i,t],[`enter`,a,t],[`exit`,a,t],[`exit`,i,t]])),e}function fi(e,t,n){let r=0;return i;function i(t){return e.enter(`atxHeading`),a(t)}function a(t){return e.enter(`atxHeadingSequence`),o(t)}function o(t){return t===35&&r++<6?(e.consume(t),o):t===null||S(t)?(e.exit(`atxHeadingSequence`),s(t)):n(t)}function s(n){return n===35?(e.enter(`atxHeadingSequence`),c(n)):n===null||x(n)?(e.exit(`atxHeading`),t(n)):C(n)?B(e,s,`whitespace`)(n):(e.enter(`atxHeadingText`),l(n))}function c(t){return t===35?(e.consume(t),c):(e.exit(`atxHeadingSequence`),s(t))}function l(t){return t===null||t===35||S(t)?(e.exit(`atxHeadingText`),s(t)):(e.consume(t),l)}}const pi=`address.article.aside.base.basefont.blockquote.body.caption.center.col.colgroup.dd.details.dialog.dir.div.dl.dt.fieldset.figcaption.figure.footer.form.frame.frameset.h1.h2.h3.h4.h5.h6.head.header.hr.html.iframe.legend.li.link.main.menu.menuitem.nav.noframes.ol.optgroup.option.p.param.search.section.summary.table.tbody.td.tfoot.th.thead.title.tr.track.ul`.split(`.`),mi=[`pre`,`script`,`style`,`textarea`],hi={concrete:!0,name:`htmlFlow`,resolveTo:vi,tokenize:yi},gi={partial:!0,tokenize:xi},_i={partial:!0,tokenize:bi};function vi(e){let t=e.length;for(;t--&&!(e[t][0]===`enter`&&e[t][1].type===`htmlFlow`););return t>1&&e[t-2][1].type===`linePrefix`&&(e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2)),e}function yi(e,t,n){let r=this,i,a,o,s,c;return l;function l(e){return u(e)}function u(t){return e.enter(`htmlFlow`),e.enter(`htmlFlowData`),e.consume(t),d}function d(s){return s===33?(e.consume(s),f):s===47?(e.consume(s),a=!0,_):s===63?(e.consume(s),i=3,r.interrupt?t:P):m(s)?(e.consume(s),o=String.fromCharCode(s),v):n(s)}function f(a){return a===45?(e.consume(a),i=2,p):a===91?(e.consume(a),i=5,s=0,g):m(a)?(e.consume(a),i=4,r.interrupt?t:P):n(a)}function p(i){return i===45?(e.consume(i),r.interrupt?t:P):n(i)}function g(i){return i===`CDATA[`.charCodeAt(s++)?(e.consume(i),s===6?r.interrupt?t:j:g):n(i)}function _(t){return m(t)?(e.consume(t),o=String.fromCharCode(t),v):n(t)}function v(s){if(s===null||s===47||s===62||S(s)){let c=s===47,l=o.toLowerCase();return!c&&!a&&mi.includes(l)?(i=1,r.interrupt?t(s):j(s)):pi.includes(o.toLowerCase())?(i=6,c?(e.consume(s),y):r.interrupt?t(s):j(s)):(i=7,r.interrupt&&!r.parser.lazy[r.now().line]?n(s):a?b(s):w(s))}return s===45||h(s)?(e.consume(s),o+=String.fromCharCode(s),v):n(s)}function y(i){return i===62?(e.consume(i),r.interrupt?t:j):n(i)}function b(t){return C(t)?(e.consume(t),b):te(t)}function w(t){return t===47?(e.consume(t),te):t===58||t===95||m(t)?(e.consume(t),T):C(t)?(e.consume(t),w):te(t)}function T(t){return t===45||t===46||t===58||t===95||h(t)?(e.consume(t),T):E(t)}function E(t){return t===61?(e.consume(t),D):C(t)?(e.consume(t),E):w(t)}function D(t){return t===null||t===60||t===61||t===62||t===96?n(t):t===34||t===39?(e.consume(t),c=t,O):C(t)?(e.consume(t),D):ee(t)}function O(t){return t===c?(e.consume(t),c=null,k):t===null||x(t)?n(t):(e.consume(t),O)}function ee(t){return t===null||t===34||t===39||t===47||t===60||t===61||t===62||t===96||S(t)?E(t):(e.consume(t),ee)}function k(e){return e===47||e===62||C(e)?w(e):n(e)}function te(t){return t===62?(e.consume(t),A):n(t)}function A(t){return t===null||x(t)?j(t):C(t)?(e.consume(t),A):n(t)}function j(t){return t===45&&i===2?(e.consume(t),M):t===60&&i===1?(e.consume(t),N):t===62&&i===4?(e.consume(t),se):t===63&&i===3?(e.consume(t),P):t===93&&i===5?(e.consume(t),oe):x(t)&&(i===6||i===7)?(e.exit(`htmlFlowData`),e.check(gi,ce,ne)(t)):t===null||x(t)?(e.exit(`htmlFlowData`),ne(t)):(e.consume(t),j)}function ne(t){return e.check(_i,re,ce)(t)}function re(t){return e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),ie}function ie(t){return t===null||x(t)?ne(t):(e.enter(`htmlFlowData`),j(t))}function M(t){return t===45?(e.consume(t),P):j(t)}function N(t){return t===47?(e.consume(t),o=``,ae):j(t)}function ae(t){if(t===62){let n=o.toLowerCase();return mi.includes(n)?(e.consume(t),se):j(t)}return m(t)&&o.length<8?(e.consume(t),o+=String.fromCharCode(t),ae):j(t)}function oe(t){return t===93?(e.consume(t),P):j(t)}function P(t){return t===62?(e.consume(t),se):t===45&&i===2?(e.consume(t),P):j(t)}function se(t){return t===null||x(t)?(e.exit(`htmlFlowData`),ce(t)):(e.consume(t),se)}function ce(n){return e.exit(`htmlFlow`),t(n)}}function bi(e,t,n){let r=this;return i;function i(t){return x(t)?(e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),a):n(t)}function a(e){return r.parser.lazy[r.now().line]?n(e):t(e)}}function xi(e,t,n){return r;function r(r){return e.enter(`lineEnding`),e.consume(r),e.exit(`lineEnding`),e.attempt(Cr,t,n)}}const Si={name:`htmlText`,tokenize:Ci};function Ci(e,t,n){let r=this,i,a,o;return s;function s(t){return e.enter(`htmlText`),e.enter(`htmlTextData`),e.consume(t),c}function c(t){return t===33?(e.consume(t),l):t===47?(e.consume(t),E):t===63?(e.consume(t),w):m(t)?(e.consume(t),ee):n(t)}function l(t){return t===45?(e.consume(t),u):t===91?(e.consume(t),a=0,g):m(t)?(e.consume(t),b):n(t)}function u(t){return t===45?(e.consume(t),p):n(t)}function d(t){return t===null?n(t):t===45?(e.consume(t),f):x(t)?(o=d,N(t)):(e.consume(t),d)}function f(t){return t===45?(e.consume(t),p):d(t)}function p(e){return e===62?M(e):e===45?f(e):d(e)}function g(t){return t===`CDATA[`.charCodeAt(a++)?(e.consume(t),a===6?_:g):n(t)}function _(t){return t===null?n(t):t===93?(e.consume(t),v):x(t)?(o=_,N(t)):(e.consume(t),_)}function v(t){return t===93?(e.consume(t),y):_(t)}function y(t){return t===62?M(t):t===93?(e.consume(t),y):_(t)}function b(t){return t===null||t===62?M(t):x(t)?(o=b,N(t)):(e.consume(t),b)}function w(t){return t===null?n(t):t===63?(e.consume(t),T):x(t)?(o=w,N(t)):(e.consume(t),w)}function T(e){return e===62?M(e):w(e)}function E(t){return m(t)?(e.consume(t),D):n(t)}function D(t){return t===45||h(t)?(e.consume(t),D):O(t)}function O(t){return x(t)?(o=O,N(t)):C(t)?(e.consume(t),O):M(t)}function ee(t){return t===45||h(t)?(e.consume(t),ee):t===47||t===62||S(t)?k(t):n(t)}function k(t){return t===47?(e.consume(t),M):t===58||t===95||m(t)?(e.consume(t),te):x(t)?(o=k,N(t)):C(t)?(e.consume(t),k):M(t)}function te(t){return t===45||t===46||t===58||t===95||h(t)?(e.consume(t),te):A(t)}function A(t){return t===61?(e.consume(t),j):x(t)?(o=A,N(t)):C(t)?(e.consume(t),A):k(t)}function j(t){return t===null||t===60||t===61||t===62||t===96?n(t):t===34||t===39?(e.consume(t),i=t,ne):x(t)?(o=j,N(t)):C(t)?(e.consume(t),j):(e.consume(t),re)}function ne(t){return t===i?(e.consume(t),i=void 0,ie):t===null?n(t):x(t)?(o=ne,N(t)):(e.consume(t),ne)}function re(t){return t===null||t===34||t===39||t===60||t===61||t===96?n(t):t===47||t===62||S(t)?k(t):(e.consume(t),re)}function ie(e){return e===47||e===62||S(e)?k(e):n(e)}function M(r){return r===62?(e.consume(r),e.exit(`htmlTextData`),e.exit(`htmlText`),t):n(r)}function N(t){return e.exit(`htmlTextData`),e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),ae}function ae(t){return C(t)?B(e,oe,`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(t):oe(t)}function oe(t){return e.enter(`htmlTextData`),o(t)}}const wi={name:`labelEnd`,resolveAll:Oi,resolveTo:ki,tokenize:Ai},Ti={tokenize:ji},Ei={tokenize:Mi},Di={tokenize:Ni};function Oi(e){let t=-1,n=[];for(;++t<e.length;){let r=e[t][1];if(n.push(e[t]),r.type===`labelImage`||r.type===`labelLink`||r.type===`labelEnd`){let e=r.type===`labelImage`?4:2;r.type=`data`,t+=e}}return e.length!==n.length&&I(e,0,e.length,n),e}function ki(e,t){let n=e.length,r=0,i,a,o,s;for(;n--;)if(i=e[n][1],a){if(i.type===`link`||i.type===`labelLink`&&i._inactive)break;e[n][0]===`enter`&&i.type===`labelLink`&&(i._inactive=!0)}else if(o){if(e[n][0]===`enter`&&(i.type===`labelImage`||i.type===`labelLink`)&&!i._balanced&&(a=n,i.type!==`labelLink`)){r=2;break}}else i.type===`labelEnd`&&(o=n);let c={type:e[a][1].type===`labelLink`?`link`:`image`,start:{...e[a][1].start},end:{...e[e.length-1][1].end}},l={type:`label`,start:{...e[a][1].start},end:{...e[o][1].end}},u={type:`labelText`,start:{...e[a+r+2][1].end},end:{...e[o-2][1].start}};return s=[[`enter`,c,t],[`enter`,l,t]],s=L(s,e.slice(a+1,a+r+3)),s=L(s,[[`enter`,u,t]]),s=L(s,gr(t.parser.constructs.insideSpan.null,e.slice(a+r+4,o-3),t)),s=L(s,[[`exit`,u,t],e[o-2],e[o-1],[`exit`,l,t]]),s=L(s,e.slice(o+1)),s=L(s,[[`exit`,c,t]]),I(e,a,e.length,s),e}function Ai(e,t,n){let r=this,i=r.events.length,a,o;for(;i--;)if((r.events[i][1].type===`labelImage`||r.events[i][1].type===`labelLink`)&&!r.events[i][1]._balanced){a=r.events[i][1];break}return s;function s(t){return a?a._inactive?d(t):(o=r.parser.defined.includes(F(r.sliceSerialize({start:a.end,end:r.now()}))),e.enter(`labelEnd`),e.enter(`labelMarker`),e.consume(t),e.exit(`labelMarker`),e.exit(`labelEnd`),c):n(t)}function c(t){return t===40?e.attempt(Ti,u,o?u:d)(t):t===91?e.attempt(Ei,u,o?l:d)(t):o?u(t):d(t)}function l(t){return e.attempt(Di,u,d)(t)}function u(e){return t(e)}function d(e){return a._balanced=!0,n(e)}}function ji(e,t,n){return r;function r(t){return e.enter(`resource`),e.enter(`resourceMarker`),e.consume(t),e.exit(`resourceMarker`),i}function i(t){return S(t)?ri(e,a)(t):a(t)}function a(t){return t===41?u(t):ei(e,o,s,`resourceDestination`,`resourceDestinationLiteral`,`resourceDestinationLiteralMarker`,`resourceDestinationRaw`,`resourceDestinationString`,32)(t)}function o(t){return S(t)?ri(e,c)(t):u(t)}function s(e){return n(e)}function c(t){return t===34||t===39||t===40?ni(e,l,n,`resourceTitle`,`resourceTitleMarker`,`resourceTitleString`)(t):u(t)}function l(t){return S(t)?ri(e,u)(t):u(t)}function u(r){return r===41?(e.enter(`resourceMarker`),e.consume(r),e.exit(`resourceMarker`),e.exit(`resource`),t):n(r)}}function Mi(e,t,n){let r=this;return i;function i(t){return ti.call(r,e,a,o,`reference`,`referenceMarker`,`referenceString`)(t)}function a(e){return r.parser.defined.includes(F(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)))?t(e):n(e)}function o(e){return n(e)}}function Ni(e,t,n){return r;function r(t){return e.enter(`reference`),e.enter(`referenceMarker`),e.consume(t),e.exit(`referenceMarker`),i}function i(r){return r===93?(e.enter(`referenceMarker`),e.consume(r),e.exit(`referenceMarker`),e.exit(`reference`),t):n(r)}}const Pi={name:`labelStartImage`,resolveAll:wi.resolveAll,tokenize:Fi};function Fi(e,t,n){let r=this;return i;function i(t){return e.enter(`labelImage`),e.enter(`labelImageMarker`),e.consume(t),e.exit(`labelImageMarker`),a}function a(t){return t===91?(e.enter(`labelMarker`),e.consume(t),e.exit(`labelMarker`),e.exit(`labelImage`),o):n(t)}function o(e){return e===94&&`_hiddenFootnoteSupport`in r.parser.constructs?n(e):t(e)}}const Ii={name:`labelStartLink`,resolveAll:wi.resolveAll,tokenize:Li};function Li(e,t,n){let r=this;return i;function i(t){return e.enter(`labelLink`),e.enter(`labelMarker`),e.consume(t),e.exit(`labelMarker`),e.exit(`labelLink`),a}function a(e){return e===94&&`_hiddenFootnoteSupport`in r.parser.constructs?n(e):t(e)}}const Ri={name:`lineEnding`,tokenize:zi};function zi(e,t){return n;function n(n){return e.enter(`lineEnding`),e.consume(n),e.exit(`lineEnding`),B(e,t,`linePrefix`)}}const Bi={name:`thematicBreak`,tokenize:Vi};function Vi(e,t,n){let r=0,i;return a;function a(t){return e.enter(`thematicBreak`),o(t)}function o(e){return i=e,s(e)}function s(a){return a===i?(e.enter(`thematicBreakSequence`),c(a)):r>=3&&(a===null||x(a))?(e.exit(`thematicBreak`),t(a)):n(a)}function c(t){return t===i?(e.consume(t),r++,c):(e.exit(`thematicBreakSequence`),C(t)?B(e,s,`whitespace`)(t):s(t))}}const V={continuation:{tokenize:Gi},exit:qi,name:`list`,tokenize:Wi},Hi={partial:!0,tokenize:Ji},Ui={partial:!0,tokenize:Ki};function Wi(e,t,n){let r=this,i=r.events[r.events.length-1],a=i&&i[1].type===`linePrefix`?i[2].sliceSerialize(i[1],!0).length:0,o=0;return s;function s(t){let i=r.containerState.type||(t===42||t===43||t===45?`listUnordered`:`listOrdered`);if(i===`listUnordered`?!r.containerState.marker||t===r.containerState.marker:v(t)){if(r.containerState.type||(r.containerState.type=i,e.enter(i,{_container:!0})),i===`listUnordered`)return e.enter(`listItemPrefix`),t===42||t===45?e.check(Bi,n,l)(t):l(t);if(!r.interrupt||t===49)return e.enter(`listItemPrefix`),e.enter(`listItemValue`),c(t)}return n(t)}function c(t){return v(t)&&++o<10?(e.consume(t),c):(!r.interrupt||o<2)&&(r.containerState.marker?t===r.containerState.marker:t===41||t===46)?(e.exit(`listItemValue`),l(t)):n(t)}function l(t){return e.enter(`listItemMarker`),e.consume(t),e.exit(`listItemMarker`),r.containerState.marker=r.containerState.marker||t,e.check(Cr,r.interrupt?n:u,e.attempt(Hi,f,d))}function u(e){return r.containerState.initialBlankLine=!0,a++,f(e)}function d(t){return C(t)?(e.enter(`listItemPrefixWhitespace`),e.consume(t),e.exit(`listItemPrefixWhitespace`),f):n(t)}function f(n){return r.containerState.size=a+r.sliceSerialize(e.exit(`listItemPrefix`),!0).length,t(n)}}function Gi(e,t,n){let r=this;return r.containerState._closeFlow=void 0,e.check(Cr,i,a);function i(n){return r.containerState.furtherBlankLines=r.containerState.furtherBlankLines||r.containerState.initialBlankLine,B(e,t,`listItemIndent`,r.containerState.size+1)(n)}function a(n){return r.containerState.furtherBlankLines||!C(n)?(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,o(n)):(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,e.attempt(Ui,t,o)(n))}function o(i){return r.containerState._closeFlow=!0,r.interrupt=void 0,B(e,e.attempt(V,t,n),`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(i)}}function Ki(e,t,n){let r=this;return B(e,i,`listItemIndent`,r.containerState.size+1);function i(e){let i=r.events[r.events.length-1];return i&&i[1].type===`listItemIndent`&&i[2].sliceSerialize(i[1],!0).length===r.containerState.size?t(e):n(e)}}function qi(e){e.exit(this.containerState.type)}function Ji(e,t,n){let r=this;return B(e,i,`listItemPrefixWhitespace`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:5);function i(e){let i=r.events[r.events.length-1];return!C(e)&&i&&i[1].type===`listItemPrefixWhitespace`?t(e):n(e)}}const Yi={name:`setextUnderline`,resolveTo:Xi,tokenize:Zi};function Xi(e,t){let n=e.length,r,i,a;for(;n--;)if(e[n][0]===`enter`){if(e[n][1].type===`content`){r=n;break}e[n][1].type===`paragraph`&&(i=n)}else e[n][1].type===`content`&&e.splice(n,1),!a&&e[n][1].type===`definition`&&(a=n);let o={type:`setextHeading`,start:{...e[r][1].start},end:{...e[e.length-1][1].end}};return e[i][1].type=`setextHeadingText`,a?(e.splice(i,0,[`enter`,o,t]),e.splice(a+1,0,[`exit`,e[r][1],t]),e[r][1].end={...e[a][1].end}):e[r][1]=o,e.push([`exit`,o,t]),e}function Zi(e,t,n){let r=this,i;return a;function a(t){let a=r.events.length,s;for(;a--;)if(r.events[a][1].type!==`lineEnding`&&r.events[a][1].type!==`linePrefix`&&r.events[a][1].type!==`content`){s=r.events[a][1].type===`paragraph`;break}return!r.parser.lazy[r.now().line]&&(r.interrupt||s)?(e.enter(`setextHeadingLine`),i=t,o(t)):n(t)}function o(t){return e.enter(`setextHeadingLineSequence`),s(t)}function s(t){return t===i?(e.consume(t),s):(e.exit(`setextHeadingLineSequence`),C(t)?B(e,c,`lineSuffix`)(t):c(t))}function c(r){return r===null||x(r)?(e.exit(`setextHeadingLine`),t(r)):n(r)}}const Qi={tokenize:oa,partial:!0};function $i(){return{document:{91:{name:`gfmFootnoteDefinition`,tokenize:ra,continuation:{tokenize:ia},exit:aa}},text:{91:{name:`gfmFootnoteCall`,tokenize:na},93:{name:`gfmPotentialFootnoteCall`,add:`after`,tokenize:ea,resolveTo:ta}}}}function ea(e,t,n){let r=this,i=r.events.length,a=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),o;for(;i--;){let e=r.events[i][1];if(e.type===`labelImage`){o=e;break}if(e.type===`gfmFootnoteCall`||e.type===`labelLink`||e.type===`label`||e.type===`image`||e.type===`link`)break}return s;function s(i){if(!o||!o._balanced)return n(i);let s=F(r.sliceSerialize({start:o.end,end:r.now()}));return s.codePointAt(0)!==94||!a.includes(s.slice(1))?n(i):(e.enter(`gfmFootnoteCallLabelMarker`),e.consume(i),e.exit(`gfmFootnoteCallLabelMarker`),t(i))}}function ta(e,t){let n=e.length;for(;n--;)if(e[n][1].type===`labelImage`&&e[n][0]===`enter`){e[n][1];break}e[n+1][1].type=`data`,e[n+3][1].type=`gfmFootnoteCallLabelMarker`;let r={type:`gfmFootnoteCall`,start:Object.assign({},e[n+3][1].start),end:Object.assign({},e[e.length-1][1].end)},i={type:`gfmFootnoteCallMarker`,start:Object.assign({},e[n+3][1].end),end:Object.assign({},e[n+3][1].end)};i.end.column++,i.end.offset++,i.end._bufferIndex++;let a={type:`gfmFootnoteCallString`,start:Object.assign({},i.end),end:Object.assign({},e[e.length-1][1].start)},o={type:`chunkString`,contentType:`string`,start:Object.assign({},a.start),end:Object.assign({},a.end)},s=[e[n+1],e[n+2],[`enter`,r,t],e[n+3],e[n+4],[`enter`,i,t],[`exit`,i,t],[`enter`,a,t],[`enter`,o,t],[`exit`,o,t],[`exit`,a,t],e[e.length-2],e[e.length-1],[`exit`,r,t]];return e.splice(n,e.length-n+1,...s),e}function na(e,t,n){let r=this,i=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),a=0,o;return s;function s(t){return e.enter(`gfmFootnoteCall`),e.enter(`gfmFootnoteCallLabelMarker`),e.consume(t),e.exit(`gfmFootnoteCallLabelMarker`),c}function c(t){return t===94?(e.enter(`gfmFootnoteCallMarker`),e.consume(t),e.exit(`gfmFootnoteCallMarker`),e.enter(`gfmFootnoteCallString`),e.enter(`chunkString`).contentType=`string`,l):n(t)}function l(s){if(a>999||s===93&&!o||s===null||s===91||S(s))return n(s);if(s===93){e.exit(`chunkString`);let a=e.exit(`gfmFootnoteCallString`);return i.includes(F(r.sliceSerialize(a)))?(e.enter(`gfmFootnoteCallLabelMarker`),e.consume(s),e.exit(`gfmFootnoteCallLabelMarker`),e.exit(`gfmFootnoteCall`),t):n(s)}return S(s)||(o=!0),a++,e.consume(s),s===92?u:l}function u(t){return t===91||t===92||t===93?(e.consume(t),a++,l):l(t)}}function ra(e,t,n){let r=this,i=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),a,o=0,s;return c;function c(t){return e.enter(`gfmFootnoteDefinition`)._container=!0,e.enter(`gfmFootnoteDefinitionLabel`),e.enter(`gfmFootnoteDefinitionLabelMarker`),e.consume(t),e.exit(`gfmFootnoteDefinitionLabelMarker`),l}function l(t){return t===94?(e.enter(`gfmFootnoteDefinitionMarker`),e.consume(t),e.exit(`gfmFootnoteDefinitionMarker`),e.enter(`gfmFootnoteDefinitionLabelString`),e.enter(`chunkString`).contentType=`string`,u):n(t)}function u(t){if(o>999||t===93&&!s||t===null||t===91||S(t))return n(t);if(t===93){e.exit(`chunkString`);let n=e.exit(`gfmFootnoteDefinitionLabelString`);return a=F(r.sliceSerialize(n)),e.enter(`gfmFootnoteDefinitionLabelMarker`),e.consume(t),e.exit(`gfmFootnoteDefinitionLabelMarker`),e.exit(`gfmFootnoteDefinitionLabel`),f}return S(t)||(s=!0),o++,e.consume(t),t===92?d:u}function d(t){return t===91||t===92||t===93?(e.consume(t),o++,u):u(t)}function f(t){return t===58?(e.enter(`definitionMarker`),e.consume(t),e.exit(`definitionMarker`),i.includes(a)||i.push(a),B(e,p,`gfmFootnoteDefinitionWhitespace`)):n(t)}function p(e){return t(e)}}function ia(e,t,n){return e.check(Cr,t,e.attempt(Qi,t,n))}function aa(e){e.exit(`gfmFootnoteDefinition`)}function oa(e,t,n){let r=this;return B(e,i,`gfmFootnoteDefinitionIndent`,5);function i(e){let i=r.events[r.events.length-1];return i&&i[1].type===`gfmFootnoteDefinitionIndent`&&i[2].sliceSerialize(i[1],!0).length===4?t(e):n(e)}}function sa(e){let t=(e||{}).singleTilde,n={name:`strikethrough`,tokenize:i,resolveAll:r};return t??=!0,{text:{126:n},insideSpan:{null:[n]},attentionMarkers:{null:[126]}};function r(e,t){let n=-1;for(;++n<e.length;)if(e[n][0]===`enter`&&e[n][1].type===`strikethroughSequenceTemporary`&&e[n][1]._close){let r=n;for(;r--;)if(e[r][0]===`exit`&&e[r][1].type===`strikethroughSequenceTemporary`&&e[r][1]._open&&e[n][1].end.offset-e[n][1].start.offset===e[r][1].end.offset-e[r][1].start.offset){e[n][1].type=`strikethroughSequence`,e[r][1].type=`strikethroughSequence`;let i={type:`strikethrough`,start:Object.assign({},e[r][1].start),end:Object.assign({},e[n][1].end)},a={type:`strikethroughText`,start:Object.assign({},e[r][1].end),end:Object.assign({},e[n][1].start)},o=[[`enter`,i,t],[`enter`,e[r][1],t],[`exit`,e[r][1],t],[`enter`,a,t]],s=t.parser.constructs.insideSpan.null;s&&I(o,o.length,0,gr(s,e.slice(r+1,n),t)),I(o,o.length,0,[[`exit`,a,t],[`enter`,e[n][1],t],[`exit`,e[n][1],t],[`exit`,i,t]]),I(e,r-1,n-r+3,o),n=r+o.length-2;break}}for(n=-1;++n<e.length;)e[n][1].type===`strikethroughSequenceTemporary`&&(e[n][1].type=`data`);return e}function i(e,n,r){let i=this.previous,a=this.events,o=0;return s;function s(t){return i===126&&a[a.length-1][1].type!==`characterEscape`?r(t):(e.enter(`strikethroughSequenceTemporary`),c(t))}function c(a){let s=ht(i);if(a===126)return o>1?r(a):(e.consume(a),o++,c);if(o<2&&!t)return r(a);let l=e.exit(`strikethroughSequenceTemporary`),u=ht(a);return l._open=!u||u===2&&!!s,l._close=!s||s===2&&!!u,n(a)}}}var ca=class{constructor(){this.map=[]}add(e,t,n){la(this,e,t,n)}consume(e){if(this.map.sort(function(e,t){return e[0]-t[0]}),this.map.length===0)return;let t=this.map.length,n=[];for(;t>0;)--t,n.push(e.slice(this.map[t][0]+this.map[t][1]),this.map[t][2]),e.length=this.map[t][0];n.push(e.slice()),e.length=0;let r=n.pop();for(;r;){for(let t of r)e.push(t);r=n.pop()}this.map.length=0}};function la(e,t,n,r){let i=0;if(!(n===0&&r.length===0)){for(;i<e.map.length;){if(e.map[i][0]===t){e.map[i][1]+=n,e.map[i][2].push(...r);return}i+=1}e.map.push([t,n,r])}}function ua(e,t){let n=!1,r=[];for(;t<e.length;){let i=e[t];if(n){if(i[0]===`enter`)i[1].type===`tableContent`&&r.push(e[t+1][1].type===`tableDelimiterMarker`?`left`:`none`);else if(i[1].type===`tableContent`){if(e[t-1][1].type===`tableDelimiterMarker`){let e=r.length-1;r[e]=r[e]===`left`?`center`:`right`}}else if(i[1].type===`tableDelimiterRow`)break}else i[0]===`enter`&&i[1].type===`tableDelimiterRow`&&(n=!0);t+=1}return r}function da(){return{flow:{null:{name:`table`,tokenize:fa,resolveAll:pa}}}}function fa(e,t,n){let r=this,i=0,a=0,o;return s;function s(e){let t=r.events.length-1;for(;t>-1;){let e=r.events[t][1].type;if(e===`lineEnding`||e===`linePrefix`)t--;else break}let i=t>-1?r.events[t][1].type:null,a=i===`tableHead`||i===`tableRow`?T:c;return a===T&&r.parser.lazy[r.now().line]?n(e):a(e)}function c(t){return e.enter(`tableHead`),e.enter(`tableRow`),l(t)}function l(e){return e===124?u(e):(o=!0,a+=1,u(e))}function u(t){return t===null?n(t):x(t)?a>1?(a=0,r.interrupt=!0,e.exit(`tableRow`),e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),p):n(t):C(t)?B(e,u,`whitespace`)(t):(a+=1,o&&(o=!1,i+=1),t===124?(e.enter(`tableCellDivider`),e.consume(t),e.exit(`tableCellDivider`),o=!0,u):(e.enter(`data`),d(t)))}function d(t){return t===null||t===124||S(t)?(e.exit(`data`),u(t)):(e.consume(t),t===92?f:d)}function f(t){return t===92||t===124?(e.consume(t),d):d(t)}function p(t){return r.interrupt=!1,r.parser.lazy[r.now().line]?n(t):(e.enter(`tableDelimiterRow`),o=!1,C(t)?B(e,m,`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(t):m(t))}function m(t){return t===45||t===58?g(t):t===124?(o=!0,e.enter(`tableCellDivider`),e.consume(t),e.exit(`tableCellDivider`),h):w(t)}function h(t){return C(t)?B(e,g,`whitespace`)(t):g(t)}function g(t){return t===58?(a+=1,o=!0,e.enter(`tableDelimiterMarker`),e.consume(t),e.exit(`tableDelimiterMarker`),_):t===45?(a+=1,_(t)):t===null||x(t)?b(t):w(t)}function _(t){return t===45?(e.enter(`tableDelimiterFiller`),v(t)):w(t)}function v(t){return t===45?(e.consume(t),v):t===58?(o=!0,e.exit(`tableDelimiterFiller`),e.enter(`tableDelimiterMarker`),e.consume(t),e.exit(`tableDelimiterMarker`),y):(e.exit(`tableDelimiterFiller`),y(t))}function y(t){return C(t)?B(e,b,`whitespace`)(t):b(t)}function b(n){return n===124?m(n):n===null||x(n)?!o||i!==a?w(n):(e.exit(`tableDelimiterRow`),e.exit(`tableHead`),t(n)):w(n)}function w(e){return n(e)}function T(t){return e.enter(`tableRow`),E(t)}function E(n){return n===124?(e.enter(`tableCellDivider`),e.consume(n),e.exit(`tableCellDivider`),E):n===null||x(n)?(e.exit(`tableRow`),t(n)):C(n)?B(e,E,`whitespace`)(n):(e.enter(`data`),D(n))}function D(t){return t===null||t===124||S(t)?(e.exit(`data`),E(t)):(e.consume(t),t===92?O:D)}function O(t){return t===92||t===124?(e.consume(t),D):D(t)}}function pa(e,t){let n=-1,r=!0,i=0,a=[0,0,0,0],o=[0,0,0,0],s=!1,c=0,l,u,d,f=new ca;for(;++n<e.length;){let p=e[n],m=p[1];p[0]===`enter`?m.type===`tableHead`?(s=!1,c!==0&&(ha(f,t,c,l,u),u=void 0,c=0),l={type:`table`,start:Object.assign({},m.start),end:Object.assign({},m.end)},f.add(n,0,[[`enter`,l,t]])):m.type===`tableRow`||m.type===`tableDelimiterRow`?(r=!0,d=void 0,a=[0,0,0,0],o=[0,n+1,0,0],s&&(s=!1,u={type:`tableBody`,start:Object.assign({},m.start),end:Object.assign({},m.end)},f.add(n,0,[[`enter`,u,t]])),i=m.type===`tableDelimiterRow`?2:u?3:1):i&&(m.type===`data`||m.type===`tableDelimiterMarker`||m.type===`tableDelimiterFiller`)?(r=!1,o[2]===0&&(a[1]!==0&&(o[0]=o[1],d=ma(f,t,a,i,void 0,d),a=[0,0,0,0]),o[2]=n)):m.type===`tableCellDivider`&&(r?r=!1:(a[1]!==0&&(o[0]=o[1],d=ma(f,t,a,i,void 0,d)),a=o,o=[a[1],n,0,0])):m.type===`tableHead`?(s=!0,c=n):m.type===`tableRow`||m.type===`tableDelimiterRow`?(c=n,a[1]===0?o[1]!==0&&(d=ma(f,t,o,i,n,d)):(o[0]=o[1],d=ma(f,t,a,i,n,d)),i=0):i&&(m.type===`data`||m.type===`tableDelimiterMarker`||m.type===`tableDelimiterFiller`)&&(o[3]=n)}for(c!==0&&ha(f,t,c,l,u),f.consume(t.events),n=-1;++n<t.events.length;){let e=t.events[n];e[0]===`enter`&&e[1].type===`table`&&(e[1]._align=ua(t.events,n))}return e}function ma(e,t,n,r,i,a){let o=r===1?`tableHeader`:r===2?`tableDelimiter`:`tableData`;n[0]!==0&&(a.end=Object.assign({},ga(t.events,n[0])),e.add(n[0],0,[[`exit`,a,t]]));let s=ga(t.events,n[1]);if(a={type:o,start:Object.assign({},s),end:Object.assign({},s)},e.add(n[1],0,[[`enter`,a,t]]),n[2]!==0){let i=ga(t.events,n[2]),a=ga(t.events,n[3]),o={type:`tableContent`,start:Object.assign({},i),end:Object.assign({},a)};if(e.add(n[2],0,[[`enter`,o,t]]),r!==2){let r=t.events[n[2]],i=t.events[n[3]];if(r[1].end=Object.assign({},i[1].end),r[1].type=`chunkText`,r[1].contentType=`text`,n[3]>n[2]+1){let t=n[2]+1,r=n[3]-n[2]-1;e.add(t,r,[])}}e.add(n[3]+1,0,[[`exit`,o,t]])}return i!==void 0&&(a.end=Object.assign({},ga(t.events,i)),e.add(i,0,[[`exit`,a,t]]),a=void 0),a}function ha(e,t,n,r,i){let a=[],o=ga(t.events,n);i&&(i.end=Object.assign({},o),a.push([`exit`,i,t])),r.end=Object.assign({},o),a.push([`exit`,r,t]),e.add(n+1,0,a)}function ga(e,t){let n=e[t],r=n[0]===`enter`?`start`:`end`;return n[1][r]}const _a={name:`tasklistCheck`,tokenize:ya};function va(){return{text:{91:_a}}}function ya(e,t,n){let r=this;return i;function i(t){return r.previous!==null||!r._gfmTasklistFirstContentOfListItem?n(t):(e.enter(`taskListCheck`),e.enter(`taskListCheckMarker`),e.consume(t),e.exit(`taskListCheckMarker`),a)}function a(t){return S(t)?(e.enter(`taskListCheckValueUnchecked`),e.consume(t),e.exit(`taskListCheckValueUnchecked`),o):t===88||t===120?(e.enter(`taskListCheckValueChecked`),e.consume(t),e.exit(`taskListCheckValueChecked`),o):n(t)}function o(t){return t===93?(e.enter(`taskListCheckMarker`),e.consume(t),e.exit(`taskListCheckMarker`),e.exit(`taskListCheck`),s):n(t)}function s(r){return x(r)?t(r):C(r)?e.check({tokenize:ba},t,n)(r):n(r)}}function ba(e,t,n){return B(e,r,`whitespace`);function r(e){return e===null?n(e):t(e)}}function xa(e){return Gn([tr(),$i(),sa(e),da(),va()])}const Sa={};function Ca(e){let t=this,n=e||Sa,r=t.data(),i=r.micromarkExtensions||=[],a=r.fromMarkdownExtensions||=[],o=r.toMarkdownExtensions||=[];i.push(xa(n)),a.push(Hn()),o.push(Un(n))}const wa={tokenize:Ta};function Ta(e){let t=e.attempt(this.parser.constructs.contentInitial,r,i),n;return t;function r(n){if(n===null){e.consume(n);return}return e.enter(`lineEnding`),e.consume(n),e.exit(`lineEnding`),B(e,t,`linePrefix`)}function i(t){return e.enter(`paragraph`),a(t)}function a(t){let r=e.enter(`chunkText`,{contentType:`text`,previous:n});return n&&(n.next=r),n=r,o(t)}function o(t){if(t===null){e.exit(`chunkText`),e.exit(`paragraph`),e.consume(t);return}return x(t)?(e.consume(t),e.exit(`chunkText`),a):(e.consume(t),o)}}const Ea={tokenize:Oa},Da={tokenize:ka};function Oa(e){let t=this,n=[],r=0,i,a,o;return s;function s(i){if(r<n.length){let a=n[r];return t.containerState=a[1],e.attempt(a[0].continuation,c,l)(i)}return l(i)}function c(e){if(r++,t.containerState._closeFlow){t.containerState._closeFlow=void 0,i&&v();let n=t.events.length,a=n,o;for(;a--;)if(t.events[a][0]===`exit`&&t.events[a][1].type===`chunkFlow`){o=t.events[a][1].end;break}_(r);let s=n;for(;s<t.events.length;)t.events[s][1].end={...o},s++;return I(t.events,a+1,0,t.events.slice(n)),t.events.length=s,l(e)}return s(e)}function l(a){if(r===n.length){if(!i)return f(a);if(i.currentConstruct&&i.currentConstruct.concrete)return m(a);t.interrupt=!!(i.currentConstruct&&!i._gfmTableDynamicInterruptHack)}return t.containerState={},e.check(Da,u,d)(a)}function u(e){return i&&v(),_(r),f(e)}function d(e){return t.parser.lazy[t.now().line]=r!==n.length,o=t.now().offset,m(e)}function f(n){return t.containerState={},e.attempt(Da,p,m)(n)}function p(e){return r++,n.push([t.currentConstruct,t.containerState]),f(e)}function m(n){if(n===null){i&&v(),_(0),e.consume(n);return}return i||=t.parser.flow(t.now()),e.enter(`chunkFlow`,{_tokenizer:i,contentType:`flow`,previous:a}),h(n)}function h(n){if(n===null){g(e.exit(`chunkFlow`),!0),_(0),e.consume(n);return}return x(n)?(e.consume(n),g(e.exit(`chunkFlow`)),r=0,t.interrupt=void 0,s):(e.consume(n),h)}function g(e,n){let s=t.sliceStream(e);if(n&&s.push(null),e.previous=a,a&&(a.next=e),a=e,i.defineSkip(e.start),i.write(s),t.parser.lazy[e.start.line]){let e=i.events.length;for(;e--;)if(i.events[e][1].start.offset<o&&(!i.events[e][1].end||i.events[e][1].end.offset>o))return;let n=t.events.length,a=n,s,c;for(;a--;)if(t.events[a][0]===`exit`&&t.events[a][1].type===`chunkFlow`){if(s){c=t.events[a][1].end;break}s=!0}for(_(r),e=n;e<t.events.length;)t.events[e][1].end={...c},e++;I(t.events,a+1,0,t.events.slice(n)),t.events.length=e}}function _(r){let i=n.length;for(;i-- >r;){let r=n[i];t.containerState=r[1],r[0].exit.call(t,e)}n.length=r}function v(){i.write([null]),a=void 0,i=void 0,t.containerState._closeFlow=void 0}}function ka(e,t,n){return B(e,e.attempt(this.parser.constructs.document,t,n),`linePrefix`,this.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)}const Aa={tokenize:ja};function ja(e){let t=this,n=e.attempt(Cr,r,e.attempt(this.parser.constructs.flowInitial,i,B(e,e.attempt(this.parser.constructs.flow,i,e.attempt(Yr,i)),`linePrefix`)));return n;function r(r){if(r===null){e.consume(r);return}return e.enter(`lineEndingBlank`),e.consume(r),e.exit(`lineEndingBlank`),t.currentConstruct=void 0,n}function i(r){if(r===null){e.consume(r);return}return e.enter(`lineEnding`),e.consume(r),e.exit(`lineEnding`),t.currentConstruct=void 0,n}}const Ma={resolveAll:Ia()},Na=Fa(`string`),Pa=Fa(`text`);function Fa(e){return{resolveAll:Ia(e===`text`?La:void 0),tokenize:t};function t(t){let n=this,r=this.parser.constructs[e],i=t.attempt(r,a,o);return a;function a(e){return c(e)?i(e):o(e)}function o(e){if(e===null){t.consume(e);return}return t.enter(`data`),t.consume(e),s}function s(e){return c(e)?(t.exit(`data`),i(e)):(t.consume(e),s)}function c(e){if(e===null)return!0;let t=r[e],i=-1;if(t)for(;++i<t.length;){let e=t[i];if(!e.previous||e.previous.call(n,n.previous))return!0}return!1}}}function Ia(e){return t;function t(t,n){let r=-1,i;for(;++r<=t.length;)i===void 0?t[r]&&t[r][1].type===`data`&&(i=r,r++):(!t[r]||t[r][1].type!==`data`)&&(r!==i+2&&(t[i][1].end=t[r-1][1].end,t.splice(i+2,r-i-2),r=i+2),i=void 0);return e?e(t,n):t}}function La(e,t){let n=0;for(;++n<=e.length;)if((n===e.length||e[n][1].type===`lineEnding`)&&e[n-1][1].type===`data`){let r=e[n-1][1],i=t.sliceStream(r),a=i.length,o=-1,s=0,c;for(;a--;){let e=i[a];if(typeof e==`string`){for(o=e.length;e.charCodeAt(o-1)===32;)s++,o--;if(o)break;o=-1}else if(e===-2)c=!0,s++;else if(e!==-1){a++;break}}if(t._contentTypeTextTrailing&&n===e.length&&(s=0),s){let i={type:n===e.length||c||s<2?`lineSuffix`:`hardBreakTrailing`,start:{_bufferIndex:a?o:r.start._bufferIndex+o,_index:r.start._index+a,line:r.end.line,column:r.end.column-s,offset:r.end.offset-s},end:{...r.end}};r.end={...i.start},r.start.offset===r.end.offset?Object.assign(r,i):(e.splice(n,0,[`enter`,i,t],[`exit`,i,t]),n+=2)}n++}return e}var Ra=t({attentionMarkers:()=>Ka,contentInitial:()=>Ba,disable:()=>qa,document:()=>za,flow:()=>Ha,flowInitial:()=>Va,insideSpan:()=>Ga,string:()=>Ua,text:()=>Wa});const za={42:V,43:V,45:V,48:V,49:V,50:V,51:V,52:V,53:V,54:V,55:V,56:V,57:V,62:Tr},Ba={91:ii},Va={[-2]:Lr,[-1]:Lr,32:Lr},Ha={35:ui,42:Bi,45:[Yi,Bi],60:hi,61:Yi,95:Bi,96:Pr,126:Pr},Ua={38:jr,92:kr},Wa={[-5]:Ri,[-4]:Ri,[-3]:Ri,33:Pi,38:jr,42:_r,60:[xr,Si],91:Ii,92:[ci,kr],93:wi,95:_r,96:Vr},Ga={null:[_r,Ma]},Ka={null:[42,95]},qa={null:[]};function Ja(e,t,n){let r={_bufferIndex:-1,_index:0,line:n&&n.line||1,column:n&&n.column||1,offset:n&&n.offset||0},i={},a=[],o=[],s=[],c={attempt:w(S),check:w(C),consume:v,enter:y,exit:b,interrupt:w(C,{interrupt:!0})},l={code:null,containerState:{},defineSkip:h,events:[],now:m,parser:e,previous:null,sliceSerialize:f,sliceStream:p,write:d},u=t.tokenize.call(l,c);return t.resolveAll&&a.push(t),l;function d(e){return o=L(o,e),g(),o[o.length-1]===null?(T(t,0),l.events=gr(a,l.events,l),l.events):[]}function f(e,t){return Xa(p(e),t)}function p(e){return Ya(o,e)}function m(){let{_bufferIndex:e,_index:t,line:n,column:i,offset:a}=r;return{_bufferIndex:e,_index:t,line:n,column:i,offset:a}}function h(e){i[e.line]=e.column,D()}function g(){let e;for(;r._index<o.length;){let t=o[r._index];if(typeof t==`string`)for(e=r._index,r._bufferIndex<0&&(r._bufferIndex=0);r._index===e&&r._bufferIndex<t.length;)_(t.charCodeAt(r._bufferIndex));else _(t)}}function _(e){u=u(e)}function v(e){x(e)?(r.line++,r.column=1,r.offset+=e===-3?2:1,D()):e!==-1&&(r.column++,r.offset++),r._bufferIndex<0?r._index++:(r._bufferIndex++,r._bufferIndex===o[r._index].length&&(r._bufferIndex=-1,r._index++)),l.previous=e}function y(e,t){let n=t||{};return n.type=e,n.start=m(),l.events.push([`enter`,n,l]),s.push(n),n}function b(e){let t=s.pop();return t.end=m(),l.events.push([`exit`,t,l]),t}function S(e,t){T(e,t.from)}function C(e,t){t.restore()}function w(e,t){return n;function n(n,r,i){let a,o,s,u;return Array.isArray(n)?f(n):`tokenize`in n?f([n]):d(n);function d(e){return t;function t(t){let n=t!==null&&e[t],r=t!==null&&e.null;return f([...Array.isArray(n)?n:n?[n]:[],...Array.isArray(r)?r:r?[r]:[]])(t)}}function f(e){return a=e,o=0,e.length===0?i:p(e[o])}function p(e){return n;function n(n){return u=E(),s=e,e.partial||(l.currentConstruct=e),e.name&&l.parser.constructs.disable.null.includes(e.name)?h(n):e.tokenize.call(t?Object.assign(Object.create(l),t):l,c,m,h)(n)}}function m(t){return e(s,u),r}function h(e){return u.restore(),++o<a.length?p(a[o]):i}}}function T(e,t){e.resolveAll&&!a.includes(e)&&a.push(e),e.resolve&&I(l.events,t,l.events.length-t,e.resolve(l.events.slice(t),l)),e.resolveTo&&(l.events=e.resolveTo(l.events,l))}function E(){let e=m(),t=l.previous,n=l.currentConstruct,i=l.events.length,a=Array.from(s);return{from:i,restore:o};function o(){r=e,l.previous=t,l.currentConstruct=n,l.events.length=i,s=a,D()}}function D(){r.line in i&&r.column<2&&(r.column=i[r.line],r.offset+=i[r.line]-1)}}function Ya(e,t){let n=t.start._index,r=t.start._bufferIndex,i=t.end._index,a=t.end._bufferIndex,o;if(n===i)o=[e[n].slice(r,a)];else{if(o=e.slice(n,i),r>-1){let e=o[0];typeof e==`string`?o[0]=e.slice(r):o.shift()}a>0&&o.push(e[i].slice(0,a))}return o}function Xa(e,t){let n=-1,r=[],i;for(;++n<e.length;){let a=e[n],o;if(typeof a==`string`)o=a;else switch(a){case-5:o=`\r`;break;case-4:o=`
37
37
  `;break;case-3:o=`\r
38
- `;break;case-2:o=t?` `:` `;break;case-1:if(!t&&i)continue;o=` `;break;default:o=String.fromCharCode(a)}i=a===-2,r.push(o)}return r.join(``)}function Za(e){let t={constructs:Gn([Ra,...(e||{}).extensions||[]]),content:n(wa),defined:[],document:n(Ea),flow:n(Aa),lazy:{},string:n(Na),text:n(Pa)};return t;function n(e){return n;function n(n){return Ja(t,e,n)}}}function Qa(e){for(;!qr(e););return e}const $a=/[\0\t\n\r]/g;function eo(){let e=1,t=``,n=!0,r;return i;function i(i,a,o){let s=[],c,l,u,d,f;for(i=t+(typeof i==`string`?i.toString():new TextDecoder(a||void 0).decode(i)),u=0,t=``,n&&=(i.charCodeAt(0)===65279&&u++,void 0);u<i.length;){if($a.lastIndex=u,c=$a.exec(i),d=c&&c.index!==void 0?c.index:i.length,f=i.charCodeAt(d),!c){t=i.slice(u);break}if(f===10&&u===d&&r)s.push(-3),r=void 0;else switch(r&&=(s.push(-5),void 0),u<d&&(s.push(i.slice(u,d)),e+=d-u),f){case 0:s.push(65533),e++;break;case 9:for(l=Math.ceil(e/4)*4,s.push(-2);e++<l;)s.push(-1);break;case 10:s.push(-4),e=1;break;default:r=!0,e=1}u=d+1}return o&&(r&&s.push(-5),t&&s.push(t),s.push(null)),s}}function to(e){return!e||typeof e!=`object`?``:`position`in e||`type`in e?ro(e.position):`start`in e||`end`in e?ro(e):`line`in e||`column`in e?no(e):``}function no(e){return io(e&&e.line)+`:`+io(e&&e.column)}function ro(e){return no(e&&e.start)+`-`+no(e&&e.end)}function io(e){return e&&typeof e==`number`?e:1}const ao={}.hasOwnProperty;function oo(e,t,n){return t&&typeof t==`object`&&(n=t,t=void 0),so(n)(Qa(Za(n).document().write(eo()(e,t,!0))))}function so(e){let t={transforms:[],canContainEols:[`emphasis`,`fragment`,`heading`,`paragraph`,`strong`],enter:{autolink:a(xe),autolinkProtocol:E,autolinkEmail:E,atxHeading:a(_e),blockQuote:a(fe),characterEscape:E,characterReference:E,codeFenced:a(pe),codeFencedFenceInfo:o,codeFencedFenceMeta:o,codeIndented:a(pe,o),codeText:a(me,o),codeTextData:E,data:E,codeFlowValue:E,definition:a(he),definitionDestinationString:o,definitionLabelString:o,definitionTitleString:o,emphasis:a(ge),hardBreakEscape:a(ve),hardBreakTrailing:a(ve),htmlFlow:a(ye,o),htmlFlowData:E,htmlText:a(ye,o),htmlTextData:E,image:a(be),label:o,link:a(xe),listItem:a(Ce),listItemValue:p,listOrdered:a(Se,f),listUnordered:a(Se),paragraph:a(we),reference:oe,referenceString:o,resourceDestinationString:o,resourceTitleString:o,setextHeading:a(_e),strong:a(Te),thematicBreak:a(De)},exit:{atxHeading:c(),atxHeadingSequence:S,autolink:c(),autolinkEmail:de,autolinkProtocol:ue,blockQuote:c(),characterEscapeValue:D,characterReferenceMarkerHexadecimal:se,characterReferenceMarkerNumeric:se,characterReferenceValue:ce,characterReference:le,codeFenced:c(_),codeFencedFence:g,codeFencedFenceInfo:m,codeFencedFenceMeta:h,codeFlowValue:D,codeIndented:c(v),codeText:c(A),codeTextData:D,data:D,definition:c(),definitionDestinationString:x,definitionLabelString:y,definitionTitleString:b,emphasis:c(),hardBreakEscape:c(ee),hardBreakTrailing:c(ee),htmlFlow:c(k),htmlFlowData:D,htmlText:c(te),htmlTextData:D,image:c(ne),label:ie,labelText:re,lineEnding:O,link:c(j),listItem:c(),listOrdered:c(),listUnordered:c(),paragraph:c(),referenceString:P,resourceDestinationString:M,resourceTitleString:N,resource:ae,setextHeading:c(T),setextHeadingLineSequence:w,setextHeadingText:C,strong:c(),thematicBreak:c()}};co(t,(e||{}).mdastExtensions||[]);let n={};return r;function r(e){let r={type:`root`,children:[]},a={stack:[r],tokenStack:[],config:t,enter:s,exit:u,buffer:o,resume:d,data:n},c=[],l=-1;for(;++l<e.length;)(e[l][1].type===`listOrdered`||e[l][1].type===`listUnordered`)&&(e[l][0]===`enter`?c.push(l):l=i(e,c.pop(),l));for(l=-1;++l<e.length;){let n=t[e[l][0]];ao.call(n,e[l][1].type)&&n[e[l][1].type].call(Object.assign({sliceSerialize:e[l][2].sliceSerialize},a),e[l][1])}if(a.tokenStack.length>0){let e=a.tokenStack[a.tokenStack.length-1];(e[1]||uo).call(a,void 0,e[0])}for(r.position={start:H(e.length>0?e[0][1].start:{line:1,column:1,offset:0}),end:H(e.length>0?e[e.length-2][1].end:{line:1,column:1,offset:0})},l=-1;++l<t.transforms.length;)r=t.transforms[l](r)||r;return r}function i(e,t,n){let r=t-1,i=-1,a=!1,o,s,c,l;for(;++r<=n;){let t=e[r];switch(t[1].type){case`listUnordered`:case`listOrdered`:case`blockQuote`:t[0]===`enter`?i++:i--,l=void 0;break;case`lineEndingBlank`:t[0]===`enter`&&(o&&!l&&!i&&!c&&(c=r),l=void 0);break;case`linePrefix`:case`listItemValue`:case`listItemMarker`:case`listItemPrefix`:case`listItemPrefixWhitespace`:break;default:l=void 0}if(!i&&t[0]===`enter`&&t[1].type===`listItemPrefix`||i===-1&&t[0]===`exit`&&(t[1].type===`listUnordered`||t[1].type===`listOrdered`)){if(o){let i=r;for(s=void 0;i--;){let t=e[i];if(t[1].type===`lineEnding`||t[1].type===`lineEndingBlank`){if(t[0]===`exit`)continue;s&&(e[s][1].type=`lineEndingBlank`,a=!0),t[1].type=`lineEnding`,s=i}else if(!(t[1].type===`linePrefix`||t[1].type===`blockQuotePrefix`||t[1].type===`blockQuotePrefixWhitespace`||t[1].type===`blockQuoteMarker`||t[1].type===`listItemIndent`))break}c&&(!s||c<s)&&(o._spread=!0),o.end=Object.assign({},s?e[s][1].start:t[1].end),e.splice(s||r,0,[`exit`,o,t[2]]),r++,n++}if(t[1].type===`listItemPrefix`){let i={type:`listItem`,_spread:!1,start:Object.assign({},t[1].start),end:void 0};o=i,e.splice(r,0,[`enter`,i,t[2]]),r++,n++,c=void 0,l=!0}}}return e[t][1]._spread=a,n}function a(e,t){return n;function n(n){s.call(this,e(n),n),t&&t.call(this,n)}}function o(){this.stack.push({type:`fragment`,children:[]})}function s(e,t,n){this.stack[this.stack.length-1].children.push(e),this.stack.push(e),this.tokenStack.push([t,n||void 0]),e.position={start:H(t.start),end:void 0}}function c(e){return t;function t(t){e&&e.call(this,t),u.call(this,t)}}function u(e,t){let n=this.stack.pop(),r=this.tokenStack.pop();if(r)r[0].type!==e.type&&(t?t.call(this,e,r[0]):(r[1]||uo).call(this,e,r[0]));else throw Error("Cannot close `"+e.type+"` ("+to({start:e.start,end:e.end})+`): it’s not open`);n.position.end=H(e.end)}function d(){return l(this.stack.pop())}function f(){this.data.expectingFirstListItemValue=!0}function p(e){if(this.data.expectingFirstListItemValue){let t=this.stack[this.stack.length-2];t.start=Number.parseInt(this.sliceSerialize(e),10),this.data.expectingFirstListItemValue=void 0}}function m(){let e=this.resume(),t=this.stack[this.stack.length-1];t.lang=e}function h(){let e=this.resume(),t=this.stack[this.stack.length-1];t.meta=e}function g(){this.data.flowCodeInside||(this.buffer(),this.data.flowCodeInside=!0)}function _(){let e=this.resume(),t=this.stack[this.stack.length-1];t.value=e.replace(/^(\r?\n|\r)|(\r?\n|\r)$/g,``),this.data.flowCodeInside=void 0}function v(){let e=this.resume(),t=this.stack[this.stack.length-1];t.value=e.replace(/(\r?\n|\r)$/g,``)}function y(e){let t=this.resume(),n=this.stack[this.stack.length-1];n.label=t,n.identifier=F(this.sliceSerialize(e)).toLowerCase()}function b(){let e=this.resume(),t=this.stack[this.stack.length-1];t.title=e}function x(){let e=this.resume(),t=this.stack[this.stack.length-1];t.url=e}function S(e){let t=this.stack[this.stack.length-1];t.depth||=this.sliceSerialize(e).length}function C(){this.data.setextHeadingSlurpLineEnding=!0}function w(e){let t=this.stack[this.stack.length-1];t.depth=this.sliceSerialize(e).codePointAt(0)===61?1:2}function T(){this.data.setextHeadingSlurpLineEnding=void 0}function E(e){let t=this.stack[this.stack.length-1].children,n=t[t.length-1];(!n||n.type!==`text`)&&(n=Ee(),n.position={start:H(e.start),end:void 0},t.push(n)),this.stack.push(n)}function D(e){let t=this.stack.pop();t.value+=this.sliceSerialize(e),t.position.end=H(e.end)}function O(e){let n=this.stack[this.stack.length-1];if(this.data.atHardBreak){let t=n.children[n.children.length-1];t.position.end=H(e.end),this.data.atHardBreak=void 0;return}!this.data.setextHeadingSlurpLineEnding&&t.canContainEols.includes(n.type)&&(E.call(this,e),D.call(this,e))}function ee(){this.data.atHardBreak=!0}function k(){let e=this.resume(),t=this.stack[this.stack.length-1];t.value=e}function te(){let e=this.resume(),t=this.stack[this.stack.length-1];t.value=e}function A(){let e=this.resume(),t=this.stack[this.stack.length-1];t.value=e}function j(){let e=this.stack[this.stack.length-1];if(this.data.inReference){let t=this.data.referenceType||`shortcut`;e.type+=`Reference`,e.referenceType=t,delete e.url,delete e.title}else delete e.identifier,delete e.label;this.data.referenceType=void 0}function ne(){let e=this.stack[this.stack.length-1];if(this.data.inReference){let t=this.data.referenceType||`shortcut`;e.type+=`Reference`,e.referenceType=t,delete e.url,delete e.title}else delete e.identifier,delete e.label;this.data.referenceType=void 0}function re(e){let t=this.sliceSerialize(e),n=this.stack[this.stack.length-2];n.label=cn(t),n.identifier=F(t).toLowerCase()}function ie(){let e=this.stack[this.stack.length-1],t=this.resume(),n=this.stack[this.stack.length-1];this.data.inReference=!0,n.type===`link`?n.children=e.children:n.alt=t}function M(){let e=this.resume(),t=this.stack[this.stack.length-1];t.url=e}function N(){let e=this.resume(),t=this.stack[this.stack.length-1];t.title=e}function ae(){this.data.inReference=void 0}function oe(){this.data.referenceType=`collapsed`}function P(e){let t=this.resume(),n=this.stack[this.stack.length-1];n.label=t,n.identifier=F(this.sliceSerialize(e)).toLowerCase(),this.data.referenceType=`full`}function se(e){this.data.characterReferenceType=e.type}function ce(e){let t=this.sliceSerialize(e),n=this.data.characterReferenceType,r;n?(r=on(t,n===`characterReferenceMarkerNumeric`?10:16),this.data.characterReferenceType=void 0):r=an(t);let i=this.stack[this.stack.length-1];i.value+=r}function le(e){let t=this.stack.pop();t.position.end=H(e.end)}function ue(e){D.call(this,e);let t=this.stack[this.stack.length-1];t.url=this.sliceSerialize(e)}function de(e){D.call(this,e);let t=this.stack[this.stack.length-1];t.url=`mailto:`+this.sliceSerialize(e)}function fe(){return{type:`blockquote`,children:[]}}function pe(){return{type:`code`,lang:null,meta:null,value:``}}function me(){return{type:`inlineCode`,value:``}}function he(){return{type:`definition`,identifier:``,label:null,title:null,url:``}}function ge(){return{type:`emphasis`,children:[]}}function _e(){return{type:`heading`,depth:0,children:[]}}function ve(){return{type:`break`}}function ye(){return{type:`html`,value:``}}function be(){return{type:`image`,title:null,url:``,alt:null}}function xe(){return{type:`link`,title:null,url:``,children:[]}}function Se(e){return{type:`list`,ordered:e.type===`listOrdered`,start:null,spread:e._spread,children:[]}}function Ce(e){return{type:`listItem`,spread:e._spread,checked:null,children:[]}}function we(){return{type:`paragraph`,children:[]}}function Te(){return{type:`strong`,children:[]}}function Ee(){return{type:`text`,value:``}}function De(){return{type:`thematicBreak`}}}function H(e){return{line:e.line,column:e.column,offset:e.offset}}function co(e,t){let n=-1;for(;++n<t.length;){let r=t[n];Array.isArray(r)?co(e,r):lo(e,r)}}function lo(e,t){let n;for(n in t)if(ao.call(t,n))switch(n){case`canContainEols`:{let r=t[n];r&&e[n].push(...r);break}case`transforms`:{let r=t[n];r&&e[n].push(...r);break}case`enter`:case`exit`:{let r=t[n];r&&Object.assign(e[n],r);break}}}function uo(e,t){throw Error(e?"Cannot close `"+e.type+"` ("+to({start:e.start,end:e.end})+"): a different token (`"+t.type+"`, "+to({start:t.start,end:t.end})+`) is open`:"Cannot close document, a token (`"+t.type+"`, "+to({start:t.start,end:t.end})+`) is still open`)}function fo(e){let t=this;t.parser=n;function n(n){return oo(n,{...t.data(`settings`),...e,extensions:t.data(`micromarkExtensions`)||[],mdastExtensions:t.data(`fromMarkdownExtensions`)||[]})}}function po(e){let t=this;t.compiler=n;function n(n){return xn(n,{...t.data(`settings`),...e,extensions:t.data(`toMarkdownExtensions`)||[]})}}function mo(e){if(e)throw e}var ho=e(n(((e,t)=>{var n=Object.prototype.hasOwnProperty,r=Object.prototype.toString,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=function(e){return typeof Array.isArray==`function`?Array.isArray(e):r.call(e)===`[object Array]`},s=function(e){if(!e||r.call(e)!==`[object Object]`)return!1;var t=n.call(e,`constructor`),i=e.constructor&&e.constructor.prototype&&n.call(e.constructor.prototype,`isPrototypeOf`);if(e.constructor&&!t&&!i)return!1;for(var a in e);return a===void 0||n.call(e,a)},c=function(e,t){i&&t.name===`__proto__`?i(e,t.name,{enumerable:!0,configurable:!0,value:t.newValue,writable:!0}):e[t.name]=t.newValue},l=function(e,t){if(t===`__proto__`){if(!n.call(e,t))return;if(a)return a(e,t).value}return e[t]};t.exports=function e(){var t,n,r,i,a,u,d=arguments[0],f=1,p=arguments.length,m=!1;for(typeof d==`boolean`&&(m=d,d=arguments[1]||{},f=2),(d==null||typeof d!=`object`&&typeof d!=`function`)&&(d={});f<p;++f)if(t=arguments[f],t!=null)for(n in t)r=l(d,n),i=l(t,n),d!==i&&(m&&i&&(s(i)||(a=o(i)))?(a?(a=!1,u=r&&o(r)?r:[]):u=r&&s(r)?r:{},c(d,{name:n,newValue:e(m,u,i)})):i!==void 0&&c(d,{name:n,newValue:i}));return d}}))(),1);function go(e){if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)}function _o(){let e=[],t={run:n,use:r};return t;function n(...t){let n=-1,r=t.pop();if(typeof r!=`function`)throw TypeError(`Expected function as last argument, not `+r);i(null,...t);function i(a,...o){let s=e[++n],c=-1;if(a){r(a);return}for(;++c<t.length;)(o[c]===null||o[c]===void 0)&&(o[c]=t[c]);t=o,s?vo(s,i)(...o):r(null,...o)}}function r(n){if(typeof n!=`function`)throw TypeError("Expected `middelware` to be a function, not "+n);return e.push(n),t}}function vo(e,t){let n;return r;function r(...t){let r=e.length>t.length,o;r&&t.push(i);try{o=e.apply(this,t)}catch(e){let t=e;if(r&&n)throw t;return i(t)}r||(o&&o.then&&typeof o.then==`function`?o.then(a,i):o instanceof Error?i(o):a(o))}function i(e,...r){n||(n=!0,t(e,...r))}function a(e){i(null,e)}}var U=class extends Error{constructor(e,t,n){super(),typeof t==`string`&&(n=t,t=void 0);let r=``,i={},a=!1;if(t&&(i=`line`in t&&`column`in t||`start`in t&&`end`in t?{place:t}:`type`in t?{ancestors:[t],place:t.position}:{...t}),typeof e==`string`?r=e:!i.cause&&e&&(a=!0,r=e.message,i.cause=e),!i.ruleId&&!i.source&&typeof n==`string`){let e=n.indexOf(`:`);e===-1?i.ruleId=n:(i.source=n.slice(0,e),i.ruleId=n.slice(e+1))}if(!i.place&&i.ancestors&&i.ancestors){let e=i.ancestors[i.ancestors.length-1];e&&(i.place=e.position)}let o=i.place&&`start`in i.place?i.place.start:i.place;this.ancestors=i.ancestors||void 0,this.cause=i.cause||void 0,this.column=o?o.column:void 0,this.fatal=void 0,this.file=``,this.message=r,this.line=o?o.line:void 0,this.name=to(i.place)||`1:1`,this.place=i.place||void 0,this.reason=this.message,this.ruleId=i.ruleId||void 0,this.source=i.source||void 0,this.stack=a&&i.cause&&typeof i.cause.stack==`string`?i.cause.stack:``,this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}};U.prototype.file=``,U.prototype.name=``,U.prototype.reason=``,U.prototype.message=``,U.prototype.stack=``,U.prototype.column=void 0,U.prototype.line=void 0,U.prototype.ancestors=void 0,U.prototype.cause=void 0,U.prototype.fatal=void 0,U.prototype.place=void 0,U.prototype.ruleId=void 0,U.prototype.source=void 0;function yo(e){return!!(typeof e==`object`&&e&&`href`in e&&e.href&&`protocol`in e&&e.protocol&&e.auth===void 0)}const bo=[`history`,`path`,`basename`,`stem`,`extname`,`dirname`];var xo=class{constructor(e){let t;t=e?yo(e)?{path:e}:typeof e==`string`||To(e)?{value:e}:e:{},this.cwd=`cwd`in t?``:o.cwd(),this.data={},this.history=[],this.messages=[],this.value,this.map,this.result,this.stored;let n=-1;for(;++n<bo.length;){let e=bo[n];e in t&&t[e]!==void 0&&t[e]!==null&&(this[e]=e===`history`?[...t[e]]:t[e])}let r;for(r in t)bo.includes(r)||(this[r]=t[r])}get basename(){return typeof this.path==`string`?a.basename(this.path):void 0}set basename(e){Co(e,`basename`),So(e,`basename`),this.path=a.join(this.dirname||``,e)}get dirname(){return typeof this.path==`string`?a.dirname(this.path):void 0}set dirname(e){wo(this.basename,`dirname`),this.path=a.join(e||``,this.basename)}get extname(){return typeof this.path==`string`?a.extname(this.path):void 0}set extname(e){if(So(e,`extname`),wo(this.dirname,`extname`),e){if(e.codePointAt(0)!==46)throw Error("`extname` must start with `.`");if(e.includes(`.`,1))throw Error("`extname` cannot contain multiple dots")}this.path=a.join(this.dirname,this.stem+(e||``))}get path(){return this.history[this.history.length-1]}set path(e){yo(e)&&(e=s(e)),Co(e,`path`),this.path!==e&&this.history.push(e)}get stem(){return typeof this.path==`string`?a.basename(this.path,this.extname):void 0}set stem(e){Co(e,`stem`),So(e,`stem`),this.path=a.join(this.dirname||``,e+(this.extname||``))}fail(e,t,n){let r=this.message(e,t,n);throw r.fatal=!0,r}info(e,t,n){let r=this.message(e,t,n);return r.fatal=void 0,r}message(e,t,n){let r=new U(e,t,n);return this.path&&(r.name=this.path+`:`+r.name,r.file=this.path),r.fatal=!1,this.messages.push(r),r}toString(e){return this.value===void 0?``:typeof this.value==`string`?this.value:new TextDecoder(e||void 0).decode(this.value)}};function So(e,t){if(e&&e.includes(a.sep))throw Error("`"+t+"` cannot be a path: did not expect `"+a.sep+"`")}function Co(e,t){if(!e)throw Error("`"+t+"` cannot be empty")}function wo(e,t){if(!e)throw Error("Setting `"+t+"` requires `path` to be set too")}function To(e){return!!(e&&typeof e==`object`&&`byteLength`in e&&`byteOffset`in e)}const Eo=(function(e){let t=this.constructor.prototype,n=t[e],r=function(){return n.apply(r,arguments)};return Object.setPrototypeOf(r,t),r}),Do={}.hasOwnProperty,Oo=new class e extends Eo{constructor(){super(`copy`),this.Compiler=void 0,this.Parser=void 0,this.attachers=[],this.compiler=void 0,this.freezeIndex=-1,this.frozen=void 0,this.namespace={},this.parser=void 0,this.transformers=_o()}copy(){let t=new e,n=-1;for(;++n<this.attachers.length;){let e=this.attachers[n];t.use(...e)}return t.data((0,ho.default)(!0,{},this.namespace)),t}data(e,t){return typeof e==`string`?arguments.length===2?(jo(`data`,this.frozen),this.namespace[e]=t,this):Do.call(this.namespace,e)&&this.namespace[e]||void 0:e?(jo(`data`,this.frozen),this.namespace=e,this):this.namespace}freeze(){if(this.frozen)return this;let e=this;for(;++this.freezeIndex<this.attachers.length;){let[t,...n]=this.attachers[this.freezeIndex];if(n[0]===!1)continue;n[0]===!0&&(n[0]=void 0);let r=t.call(e,...n);typeof r==`function`&&this.transformers.use(r)}return this.frozen=!0,this.freezeIndex=1/0,this}parse(e){this.freeze();let t=Po(e),n=this.parser||this.Parser;return ko(`parse`,n),n(String(t),t)}process(e,t){let n=this;return this.freeze(),ko(`process`,this.parser||this.Parser),Ao(`process`,this.compiler||this.Compiler),t?r(void 0,t):new Promise(r);function r(r,i){let a=Po(e),o=n.parse(a);n.run(o,a,function(e,t,r){if(e||!t||!r)return s(e);let i=t,a=n.stringify(i,r);Io(a)?r.value=a:r.result=a,s(e,r)});function s(e,n){e||!n?i(e):r?r(n):t(void 0,n)}}}processSync(e){let t=!1,n;return this.freeze(),ko(`processSync`,this.parser||this.Parser),Ao(`processSync`,this.compiler||this.Compiler),this.process(e,r),No(`processSync`,`process`,t),n;function r(e,r){t=!0,mo(e),n=r}}run(e,t,n){Mo(e),this.freeze();let r=this.transformers;return!n&&typeof t==`function`&&(n=t,t=void 0),n?i(void 0,n):new Promise(i);function i(i,a){let o=Po(t);r.run(e,o,s);function s(t,r,o){let s=r||e;t?a(t):i?i(s):n(void 0,s,o)}}}runSync(e,t){let n=!1,r;return this.run(e,t,i),No(`runSync`,`run`,n),r;function i(e,t){mo(e),r=t,n=!0}}stringify(e,t){this.freeze();let n=Po(t),r=this.compiler||this.Compiler;return Ao(`stringify`,r),Mo(e),r(e,n)}use(e,...t){let n=this.attachers,r=this.namespace;if(jo(`use`,this.frozen),e!=null)if(typeof e==`function`)s(e,t);else if(typeof e==`object`)Array.isArray(e)?o(e):a(e);else throw TypeError("Expected usable value, not `"+e+"`");return this;function i(e){if(typeof e==`function`)s(e,[]);else if(typeof e==`object`)if(Array.isArray(e)){let[t,...n]=e;s(t,n)}else a(e);else throw TypeError("Expected usable value, not `"+e+"`")}function a(e){if(!(`plugins`in e)&&!(`settings`in e))throw Error("Expected usable value but received an empty preset, which is probably a mistake: presets typically come with `plugins` and sometimes with `settings`, but this has neither");o(e.plugins),e.settings&&(r.settings=(0,ho.default)(!0,r.settings,e.settings))}function o(e){let t=-1;if(e!=null)if(Array.isArray(e))for(;++t<e.length;){let n=e[t];i(n)}else throw TypeError("Expected a list of plugins, not `"+e+"`")}function s(e,t){let r=-1,i=-1;for(;++r<n.length;)if(n[r][0]===e){i=r;break}if(i===-1)n.push([e,...t]);else if(t.length>0){let[r,...a]=t,o=n[i][1];go(o)&&go(r)&&(r=(0,ho.default)(!0,o,r)),n[i]=[e,r,...a]}}}}().freeze();function ko(e,t){if(typeof t!=`function`)throw TypeError("Cannot `"+e+"` without `parser`")}function Ao(e,t){if(typeof t!=`function`)throw TypeError("Cannot `"+e+"` without `compiler`")}function jo(e,t){if(t)throw Error("Cannot call `"+e+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function Mo(e){if(!go(e)||typeof e.type!=`string`)throw TypeError("Expected node, got `"+e+"`")}function No(e,t,n){if(!n)throw Error("`"+e+"` finished async. Use `"+t+"` instead")}function Po(e){return Fo(e)?e:new xo(e)}function Fo(e){return!!(e&&typeof e==`object`&&`message`in e&&`messages`in e)}function Io(e){return typeof e==`string`||Lo(e)}function Lo(e){return!!(e&&typeof e==`object`&&`byteLength`in e&&`byteOffset`in e)}function Ro(e){return e.type===`text`}function zo(e){return e.type===`paragraph`}function Bo(e){return e.type===`strong`}function Vo(e){return e.type===`emphasis`}function Ho(e){return e.type===`delete`}function Uo(e){return e.type===`inlineCode`}function Wo(e){return e.type===`code`}function Go(e){return e.type===`link`}function Ko(e){return e.type===`blockquote`}function qo(e){return e.type===`list`}function Jo(e){return e.type===`listItem`}function Yo(e){return e.type===`table`}function Xo(e){return e.type===`tableRow`}function Zo(e){return e.type===`tableCell`}function Qo(e){let t=[];for(let n of e.children){let e=[];for(let t of n.children)e.push(l(t));t.push(e)}if(t.length===0)return``;let n=t[0];return $o(n,t.slice(1))}function $o(e,t){let n=[e,...t],r=Math.max(...n.map(e=>e.length));if(r===0)return``;let i=Array.from({length:r},()=>0);for(let e of n)for(let t=0;t<r;t++){let n=(e[t]||``).length;n>i[t]&&(i[t]=n)}let a=e=>Array.from({length:r},(t,n)=>(e[n]||``).padEnd(i[n])).join(` | `).trimEnd(),o=[];o.push(a(e)),o.push(i.map(e=>`-`.repeat(e)).join(`-|-`));for(let e of t)o.push(a(e));return o.join(`
39
- `)}function es(e){return`children`in e&&Array.isArray(e.children)?e.children:[]}function ts(e){return`value`in e&&typeof e.value==`string`?e.value:``}function ns(e){return Oo().use(fo).use(Ca).parse(e)}function rs(e,t){return Oo().use(po,t).use(Ca).stringify(e)}function W(e){return l(e)}function is(e){return l(ns(e))}function as(e,t){return`children`in e&&Array.isArray(e.children)&&(e.children=e.children.map(e=>{let n=t(e);return n===null?null:as(n,t)}).filter(e=>e!==null)),e}function G(e){return{type:`text`,value:e}}function os(e){return{type:`strong`,children:e}}function ss(e){return{type:`emphasis`,children:e}}function cs(e){return{type:`delete`,children:e}}function ls(e){return{type:`inlineCode`,value:e}}function us(e,t){return{type:`code`,value:e,lang:t}}function ds(e,t,n){return{type:`link`,url:e,children:t,title:n}}function fs(e){return{type:`blockquote`,children:e}}function K(e){return{type:`paragraph`,children:e}}function q(e){return{type:`root`,children:e}}var ps=class{renderList(e,t,n,r=`-`){let i=` `.repeat(t),a=e.start??1,o=[];for(let[s,c]of es(e).entries()){let l=e.ordered?`${a+s}.`:r,u=!0;for(let e of es(c)){if(qo(e)){o.push(this.renderList(e,t+1,n,r));continue}let a=n(e);a.trim()&&(u?(o.push(`${i}${l} ${a}`),u=!1):o.push(`${i} ${a}`))}}return o.join(`
40
- `)}defaultNodeToText(e,t){let n=es(e);return n.length>0?n.map(t).join(``):ts(e)}fromAstWithNodeConverter(e,t){let n=[];for(let r of e.children)n.push(t(r));return n.join(`
38
+ `;break;case-2:o=t?` `:` `;break;case-1:if(!t&&i)continue;o=` `;break;default:o=String.fromCharCode(a)}i=a===-2,r.push(o)}return r.join(``)}function Za(e){let t={constructs:Gn([Ra,...(e||{}).extensions||[]]),content:n(wa),defined:[],document:n(Ea),flow:n(Aa),lazy:{},string:n(Na),text:n(Pa)};return t;function n(e){return n;function n(n){return Ja(t,e,n)}}}function Qa(e){for(;!qr(e););return e}const $a=/[\0\t\n\r]/g;function eo(){let e=1,t=``,n=!0,r;return i;function i(i,a,o){let s=[],c,l,u,d,f;for(i=t+(typeof i==`string`?i.toString():new TextDecoder(a||void 0).decode(i)),u=0,t=``,n&&=(i.charCodeAt(0)===65279&&u++,void 0);u<i.length;){if($a.lastIndex=u,c=$a.exec(i),d=c&&c.index!==void 0?c.index:i.length,f=i.charCodeAt(d),!c){t=i.slice(u);break}if(f===10&&u===d&&r)s.push(-3),r=void 0;else switch(r&&=(s.push(-5),void 0),u<d&&(s.push(i.slice(u,d)),e+=d-u),f){case 0:s.push(65533),e++;break;case 9:for(l=Math.ceil(e/4)*4,s.push(-2);e++<l;)s.push(-1);break;case 10:s.push(-4),e=1;break;default:r=!0,e=1}u=d+1}return o&&(r&&s.push(-5),t&&s.push(t),s.push(null)),s}}function to(e){return!e||typeof e!=`object`?``:`position`in e||`type`in e?ro(e.position):`start`in e||`end`in e?ro(e):`line`in e||`column`in e?no(e):``}function no(e){return io(e&&e.line)+`:`+io(e&&e.column)}function ro(e){return no(e&&e.start)+`-`+no(e&&e.end)}function io(e){return e&&typeof e==`number`?e:1}const ao={}.hasOwnProperty;function oo(e,t,n){return t&&typeof t==`object`&&(n=t,t=void 0),so(n)(Qa(Za(n).document().write(eo()(e,t,!0))))}function so(e){let t={transforms:[],canContainEols:[`emphasis`,`fragment`,`heading`,`paragraph`,`strong`],enter:{autolink:a(xe),autolinkProtocol:E,autolinkEmail:E,atxHeading:a(_e),blockQuote:a(fe),characterEscape:E,characterReference:E,codeFenced:a(pe),codeFencedFenceInfo:o,codeFencedFenceMeta:o,codeIndented:a(pe,o),codeText:a(me,o),codeTextData:E,data:E,codeFlowValue:E,definition:a(he),definitionDestinationString:o,definitionLabelString:o,definitionTitleString:o,emphasis:a(ge),hardBreakEscape:a(ve),hardBreakTrailing:a(ve),htmlFlow:a(ye,o),htmlFlowData:E,htmlText:a(ye,o),htmlTextData:E,image:a(be),label:o,link:a(xe),listItem:a(Ce),listItemValue:p,listOrdered:a(Se,f),listUnordered:a(Se),paragraph:a(we),reference:oe,referenceString:o,resourceDestinationString:o,resourceTitleString:o,setextHeading:a(_e),strong:a(Te),thematicBreak:a(De)},exit:{atxHeading:c(),atxHeadingSequence:S,autolink:c(),autolinkEmail:de,autolinkProtocol:ue,blockQuote:c(),characterEscapeValue:D,characterReferenceMarkerHexadecimal:se,characterReferenceMarkerNumeric:se,characterReferenceValue:ce,characterReference:le,codeFenced:c(_),codeFencedFence:g,codeFencedFenceInfo:m,codeFencedFenceMeta:h,codeFlowValue:D,codeIndented:c(v),codeText:c(A),codeTextData:D,data:D,definition:c(),definitionDestinationString:x,definitionLabelString:y,definitionTitleString:b,emphasis:c(),hardBreakEscape:c(ee),hardBreakTrailing:c(ee),htmlFlow:c(k),htmlFlowData:D,htmlText:c(te),htmlTextData:D,image:c(ne),label:ie,labelText:re,lineEnding:O,link:c(j),listItem:c(),listOrdered:c(),listUnordered:c(),paragraph:c(),referenceString:P,resourceDestinationString:M,resourceTitleString:N,resource:ae,setextHeading:c(T),setextHeadingLineSequence:w,setextHeadingText:C,strong:c(),thematicBreak:c()}};lo(t,(e||{}).mdastExtensions||[]);let n={};return r;function r(e){let r={type:`root`,children:[]},a={stack:[r],tokenStack:[],config:t,enter:s,exit:u,buffer:o,resume:d,data:n},c=[],l=-1;for(;++l<e.length;)(e[l][1].type===`listOrdered`||e[l][1].type===`listUnordered`)&&(e[l][0]===`enter`?c.push(l):l=i(e,c.pop(),l));for(l=-1;++l<e.length;){let n=t[e[l][0]];ao.call(n,e[l][1].type)&&n[e[l][1].type].call(Object.assign({sliceSerialize:e[l][2].sliceSerialize},a),e[l][1])}if(a.tokenStack.length>0){let e=a.tokenStack[a.tokenStack.length-1];(e[1]||fo).call(a,void 0,e[0])}for(r.position={start:co(e.length>0?e[0][1].start:{line:1,column:1,offset:0}),end:co(e.length>0?e[e.length-2][1].end:{line:1,column:1,offset:0})},l=-1;++l<t.transforms.length;)r=t.transforms[l](r)||r;return r}function i(e,t,n){let r=t-1,i=-1,a=!1,o,s,c,l;for(;++r<=n;){let t=e[r];switch(t[1].type){case`listUnordered`:case`listOrdered`:case`blockQuote`:t[0]===`enter`?i++:i--,l=void 0;break;case`lineEndingBlank`:t[0]===`enter`&&(o&&!l&&!i&&!c&&(c=r),l=void 0);break;case`linePrefix`:case`listItemValue`:case`listItemMarker`:case`listItemPrefix`:case`listItemPrefixWhitespace`:break;default:l=void 0}if(!i&&t[0]===`enter`&&t[1].type===`listItemPrefix`||i===-1&&t[0]===`exit`&&(t[1].type===`listUnordered`||t[1].type===`listOrdered`)){if(o){let i=r;for(s=void 0;i--;){let t=e[i];if(t[1].type===`lineEnding`||t[1].type===`lineEndingBlank`){if(t[0]===`exit`)continue;s&&(e[s][1].type=`lineEndingBlank`,a=!0),t[1].type=`lineEnding`,s=i}else if(!(t[1].type===`linePrefix`||t[1].type===`blockQuotePrefix`||t[1].type===`blockQuotePrefixWhitespace`||t[1].type===`blockQuoteMarker`||t[1].type===`listItemIndent`))break}c&&(!s||c<s)&&(o._spread=!0),o.end=Object.assign({},s?e[s][1].start:t[1].end),e.splice(s||r,0,[`exit`,o,t[2]]),r++,n++}if(t[1].type===`listItemPrefix`){let i={type:`listItem`,_spread:!1,start:Object.assign({},t[1].start),end:void 0};o=i,e.splice(r,0,[`enter`,i,t[2]]),r++,n++,c=void 0,l=!0}}}return e[t][1]._spread=a,n}function a(e,t){return n;function n(n){s.call(this,e(n),n),t&&t.call(this,n)}}function o(){this.stack.push({type:`fragment`,children:[]})}function s(e,t,n){this.stack[this.stack.length-1].children.push(e),this.stack.push(e),this.tokenStack.push([t,n||void 0]),e.position={start:co(t.start),end:void 0}}function c(e){return t;function t(t){e&&e.call(this,t),u.call(this,t)}}function u(e,t){let n=this.stack.pop(),r=this.tokenStack.pop();if(r)r[0].type!==e.type&&(t?t.call(this,e,r[0]):(r[1]||fo).call(this,e,r[0]));else throw Error("Cannot close `"+e.type+"` ("+to({start:e.start,end:e.end})+`): it’s not open`);n.position.end=co(e.end)}function d(){return l(this.stack.pop())}function f(){this.data.expectingFirstListItemValue=!0}function p(e){if(this.data.expectingFirstListItemValue){let t=this.stack[this.stack.length-2];t.start=Number.parseInt(this.sliceSerialize(e),10),this.data.expectingFirstListItemValue=void 0}}function m(){let e=this.resume(),t=this.stack[this.stack.length-1];t.lang=e}function h(){let e=this.resume(),t=this.stack[this.stack.length-1];t.meta=e}function g(){this.data.flowCodeInside||(this.buffer(),this.data.flowCodeInside=!0)}function _(){let e=this.resume(),t=this.stack[this.stack.length-1];t.value=e.replace(/^(\r?\n|\r)|(\r?\n|\r)$/g,``),this.data.flowCodeInside=void 0}function v(){let e=this.resume(),t=this.stack[this.stack.length-1];t.value=e.replace(/(\r?\n|\r)$/g,``)}function y(e){let t=this.resume(),n=this.stack[this.stack.length-1];n.label=t,n.identifier=F(this.sliceSerialize(e)).toLowerCase()}function b(){let e=this.resume(),t=this.stack[this.stack.length-1];t.title=e}function x(){let e=this.resume(),t=this.stack[this.stack.length-1];t.url=e}function S(e){let t=this.stack[this.stack.length-1];t.depth||=this.sliceSerialize(e).length}function C(){this.data.setextHeadingSlurpLineEnding=!0}function w(e){let t=this.stack[this.stack.length-1];t.depth=this.sliceSerialize(e).codePointAt(0)===61?1:2}function T(){this.data.setextHeadingSlurpLineEnding=void 0}function E(e){let t=this.stack[this.stack.length-1].children,n=t[t.length-1];(!n||n.type!==`text`)&&(n=Ee(),n.position={start:co(e.start),end:void 0},t.push(n)),this.stack.push(n)}function D(e){let t=this.stack.pop();t.value+=this.sliceSerialize(e),t.position.end=co(e.end)}function O(e){let n=this.stack[this.stack.length-1];if(this.data.atHardBreak){let t=n.children[n.children.length-1];t.position.end=co(e.end),this.data.atHardBreak=void 0;return}!this.data.setextHeadingSlurpLineEnding&&t.canContainEols.includes(n.type)&&(E.call(this,e),D.call(this,e))}function ee(){this.data.atHardBreak=!0}function k(){let e=this.resume(),t=this.stack[this.stack.length-1];t.value=e}function te(){let e=this.resume(),t=this.stack[this.stack.length-1];t.value=e}function A(){let e=this.resume(),t=this.stack[this.stack.length-1];t.value=e}function j(){let e=this.stack[this.stack.length-1];if(this.data.inReference){let t=this.data.referenceType||`shortcut`;e.type+=`Reference`,e.referenceType=t,delete e.url,delete e.title}else delete e.identifier,delete e.label;this.data.referenceType=void 0}function ne(){let e=this.stack[this.stack.length-1];if(this.data.inReference){let t=this.data.referenceType||`shortcut`;e.type+=`Reference`,e.referenceType=t,delete e.url,delete e.title}else delete e.identifier,delete e.label;this.data.referenceType=void 0}function re(e){let t=this.sliceSerialize(e),n=this.stack[this.stack.length-2];n.label=cn(t),n.identifier=F(t).toLowerCase()}function ie(){let e=this.stack[this.stack.length-1],t=this.resume(),n=this.stack[this.stack.length-1];this.data.inReference=!0,n.type===`link`?n.children=e.children:n.alt=t}function M(){let e=this.resume(),t=this.stack[this.stack.length-1];t.url=e}function N(){let e=this.resume(),t=this.stack[this.stack.length-1];t.title=e}function ae(){this.data.inReference=void 0}function oe(){this.data.referenceType=`collapsed`}function P(e){let t=this.resume(),n=this.stack[this.stack.length-1];n.label=t,n.identifier=F(this.sliceSerialize(e)).toLowerCase(),this.data.referenceType=`full`}function se(e){this.data.characterReferenceType=e.type}function ce(e){let t=this.sliceSerialize(e),n=this.data.characterReferenceType,r;n?(r=on(t,n===`characterReferenceMarkerNumeric`?10:16),this.data.characterReferenceType=void 0):r=an(t);let i=this.stack[this.stack.length-1];i.value+=r}function le(e){let t=this.stack.pop();t.position.end=co(e.end)}function ue(e){D.call(this,e);let t=this.stack[this.stack.length-1];t.url=this.sliceSerialize(e)}function de(e){D.call(this,e);let t=this.stack[this.stack.length-1];t.url=`mailto:`+this.sliceSerialize(e)}function fe(){return{type:`blockquote`,children:[]}}function pe(){return{type:`code`,lang:null,meta:null,value:``}}function me(){return{type:`inlineCode`,value:``}}function he(){return{type:`definition`,identifier:``,label:null,title:null,url:``}}function ge(){return{type:`emphasis`,children:[]}}function _e(){return{type:`heading`,depth:0,children:[]}}function ve(){return{type:`break`}}function ye(){return{type:`html`,value:``}}function be(){return{type:`image`,title:null,url:``,alt:null}}function xe(){return{type:`link`,title:null,url:``,children:[]}}function Se(e){return{type:`list`,ordered:e.type===`listOrdered`,start:null,spread:e._spread,children:[]}}function Ce(e){return{type:`listItem`,spread:e._spread,checked:null,children:[]}}function we(){return{type:`paragraph`,children:[]}}function Te(){return{type:`strong`,children:[]}}function Ee(){return{type:`text`,value:``}}function De(){return{type:`thematicBreak`}}}function co(e){return{line:e.line,column:e.column,offset:e.offset}}function lo(e,t){let n=-1;for(;++n<t.length;){let r=t[n];Array.isArray(r)?lo(e,r):uo(e,r)}}function uo(e,t){let n;for(n in t)if(ao.call(t,n))switch(n){case`canContainEols`:{let r=t[n];r&&e[n].push(...r);break}case`transforms`:{let r=t[n];r&&e[n].push(...r);break}case`enter`:case`exit`:{let r=t[n];r&&Object.assign(e[n],r);break}}}function fo(e,t){throw Error(e?"Cannot close `"+e.type+"` ("+to({start:e.start,end:e.end})+"): a different token (`"+t.type+"`, "+to({start:t.start,end:t.end})+`) is open`:"Cannot close document, a token (`"+t.type+"`, "+to({start:t.start,end:t.end})+`) is still open`)}function po(e){let t=this;t.parser=n;function n(n){return oo(n,{...t.data(`settings`),...e,extensions:t.data(`micromarkExtensions`)||[],mdastExtensions:t.data(`fromMarkdownExtensions`)||[]})}}function mo(e){let t=this;t.compiler=n;function n(n){return xn(n,{...t.data(`settings`),...e,extensions:t.data(`toMarkdownExtensions`)||[]})}}function ho(e){if(e)throw e}var go=e(n(((e,t)=>{var n=Object.prototype.hasOwnProperty,r=Object.prototype.toString,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=function(e){return typeof Array.isArray==`function`?Array.isArray(e):r.call(e)===`[object Array]`},s=function(e){if(!e||r.call(e)!==`[object Object]`)return!1;var t=n.call(e,`constructor`),i=e.constructor&&e.constructor.prototype&&n.call(e.constructor.prototype,`isPrototypeOf`);if(e.constructor&&!t&&!i)return!1;for(var a in e);return a===void 0||n.call(e,a)},c=function(e,t){i&&t.name===`__proto__`?i(e,t.name,{enumerable:!0,configurable:!0,value:t.newValue,writable:!0}):e[t.name]=t.newValue},l=function(e,t){if(t===`__proto__`){if(!n.call(e,t))return;if(a)return a(e,t).value}return e[t]};t.exports=function e(){var t,n,r,i,a,u,d=arguments[0],f=1,p=arguments.length,m=!1;for(typeof d==`boolean`&&(m=d,d=arguments[1]||{},f=2),(d==null||typeof d!=`object`&&typeof d!=`function`)&&(d={});f<p;++f)if(t=arguments[f],t!=null)for(n in t)r=l(d,n),i=l(t,n),d!==i&&(m&&i&&(s(i)||(a=o(i)))?(a?(a=!1,u=r&&o(r)?r:[]):u=r&&s(r)?r:{},c(d,{name:n,newValue:e(m,u,i)})):i!==void 0&&c(d,{name:n,newValue:i}));return d}}))(),1);function _o(e){if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)}function vo(){let e=[],t={run:n,use:r};return t;function n(...t){let n=-1,r=t.pop();if(typeof r!=`function`)throw TypeError(`Expected function as last argument, not `+r);i(null,...t);function i(a,...o){let s=e[++n],c=-1;if(a){r(a);return}for(;++c<t.length;)(o[c]===null||o[c]===void 0)&&(o[c]=t[c]);t=o,s?yo(s,i)(...o):r(null,...o)}}function r(n){if(typeof n!=`function`)throw TypeError("Expected `middelware` to be a function, not "+n);return e.push(n),t}}function yo(e,t){let n;return r;function r(...t){let r=e.length>t.length,o;r&&t.push(i);try{o=e.apply(this,t)}catch(e){let t=e;if(r&&n)throw t;return i(t)}r||(o&&o.then&&typeof o.then==`function`?o.then(a,i):o instanceof Error?i(o):a(o))}function i(e,...r){n||(n=!0,t(e,...r))}function a(e){i(null,e)}}var H=class extends Error{constructor(e,t,n){super(),typeof t==`string`&&(n=t,t=void 0);let r=``,i={},a=!1;if(t&&(i=`line`in t&&`column`in t||`start`in t&&`end`in t?{place:t}:`type`in t?{ancestors:[t],place:t.position}:{...t}),typeof e==`string`?r=e:!i.cause&&e&&(a=!0,r=e.message,i.cause=e),!i.ruleId&&!i.source&&typeof n==`string`){let e=n.indexOf(`:`);e===-1?i.ruleId=n:(i.source=n.slice(0,e),i.ruleId=n.slice(e+1))}if(!i.place&&i.ancestors&&i.ancestors){let e=i.ancestors[i.ancestors.length-1];e&&(i.place=e.position)}let o=i.place&&`start`in i.place?i.place.start:i.place;this.ancestors=i.ancestors||void 0,this.cause=i.cause||void 0,this.column=o?o.column:void 0,this.fatal=void 0,this.file=``,this.message=r,this.line=o?o.line:void 0,this.name=to(i.place)||`1:1`,this.place=i.place||void 0,this.reason=this.message,this.ruleId=i.ruleId||void 0,this.source=i.source||void 0,this.stack=a&&i.cause&&typeof i.cause.stack==`string`?i.cause.stack:``,this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}};H.prototype.file=``,H.prototype.name=``,H.prototype.reason=``,H.prototype.message=``,H.prototype.stack=``,H.prototype.column=void 0,H.prototype.line=void 0,H.prototype.ancestors=void 0,H.prototype.cause=void 0,H.prototype.fatal=void 0,H.prototype.place=void 0,H.prototype.ruleId=void 0,H.prototype.source=void 0;function bo(e){return!!(typeof e==`object`&&e&&`href`in e&&e.href&&`protocol`in e&&e.protocol&&e.auth===void 0)}const xo=[`history`,`path`,`basename`,`stem`,`extname`,`dirname`];var So=class{constructor(e){let t;t=e?bo(e)?{path:e}:typeof e==`string`||Eo(e)?{value:e}:e:{},this.cwd=`cwd`in t?``:o.cwd(),this.data={},this.history=[],this.messages=[],this.value,this.map,this.result,this.stored;let n=-1;for(;++n<xo.length;){let e=xo[n];e in t&&t[e]!==void 0&&t[e]!==null&&(this[e]=e===`history`?[...t[e]]:t[e])}let r;for(r in t)xo.includes(r)||(this[r]=t[r])}get basename(){return typeof this.path==`string`?a.basename(this.path):void 0}set basename(e){wo(e,`basename`),Co(e,`basename`),this.path=a.join(this.dirname||``,e)}get dirname(){return typeof this.path==`string`?a.dirname(this.path):void 0}set dirname(e){To(this.basename,`dirname`),this.path=a.join(e||``,this.basename)}get extname(){return typeof this.path==`string`?a.extname(this.path):void 0}set extname(e){if(Co(e,`extname`),To(this.dirname,`extname`),e){if(e.codePointAt(0)!==46)throw Error("`extname` must start with `.`");if(e.includes(`.`,1))throw Error("`extname` cannot contain multiple dots")}this.path=a.join(this.dirname,this.stem+(e||``))}get path(){return this.history[this.history.length-1]}set path(e){bo(e)&&(e=s(e)),wo(e,`path`),this.path!==e&&this.history.push(e)}get stem(){return typeof this.path==`string`?a.basename(this.path,this.extname):void 0}set stem(e){wo(e,`stem`),Co(e,`stem`),this.path=a.join(this.dirname||``,e+(this.extname||``))}fail(e,t,n){let r=this.message(e,t,n);throw r.fatal=!0,r}info(e,t,n){let r=this.message(e,t,n);return r.fatal=void 0,r}message(e,t,n){let r=new H(e,t,n);return this.path&&(r.name=this.path+`:`+r.name,r.file=this.path),r.fatal=!1,this.messages.push(r),r}toString(e){return this.value===void 0?``:typeof this.value==`string`?this.value:new TextDecoder(e||void 0).decode(this.value)}};function Co(e,t){if(e&&e.includes(a.sep))throw Error("`"+t+"` cannot be a path: did not expect `"+a.sep+"`")}function wo(e,t){if(!e)throw Error("`"+t+"` cannot be empty")}function To(e,t){if(!e)throw Error("Setting `"+t+"` requires `path` to be set too")}function Eo(e){return!!(e&&typeof e==`object`&&`byteLength`in e&&`byteOffset`in e)}const Do=(function(e){let t=this.constructor.prototype,n=t[e],r=function(){return n.apply(r,arguments)};return Object.setPrototypeOf(r,t),r}),Oo={}.hasOwnProperty,ko=new class e extends Do{constructor(){super(`copy`),this.Compiler=void 0,this.Parser=void 0,this.attachers=[],this.compiler=void 0,this.freezeIndex=-1,this.frozen=void 0,this.namespace={},this.parser=void 0,this.transformers=vo()}copy(){let t=new e,n=-1;for(;++n<this.attachers.length;){let e=this.attachers[n];t.use(...e)}return t.data((0,go.default)(!0,{},this.namespace)),t}data(e,t){return typeof e==`string`?arguments.length===2?(Mo(`data`,this.frozen),this.namespace[e]=t,this):Oo.call(this.namespace,e)&&this.namespace[e]||void 0:e?(Mo(`data`,this.frozen),this.namespace=e,this):this.namespace}freeze(){if(this.frozen)return this;let e=this;for(;++this.freezeIndex<this.attachers.length;){let[t,...n]=this.attachers[this.freezeIndex];if(n[0]===!1)continue;n[0]===!0&&(n[0]=void 0);let r=t.call(e,...n);typeof r==`function`&&this.transformers.use(r)}return this.frozen=!0,this.freezeIndex=1/0,this}parse(e){this.freeze();let t=Fo(e),n=this.parser||this.Parser;return Ao(`parse`,n),n(String(t),t)}process(e,t){let n=this;return this.freeze(),Ao(`process`,this.parser||this.Parser),jo(`process`,this.compiler||this.Compiler),t?r(void 0,t):new Promise(r);function r(r,i){let a=Fo(e),o=n.parse(a);n.run(o,a,function(e,t,r){if(e||!t||!r)return s(e);let i=t,a=n.stringify(i,r);Lo(a)?r.value=a:r.result=a,s(e,r)});function s(e,n){e||!n?i(e):r?r(n):t(void 0,n)}}}processSync(e){let t=!1,n;return this.freeze(),Ao(`processSync`,this.parser||this.Parser),jo(`processSync`,this.compiler||this.Compiler),this.process(e,r),Po(`processSync`,`process`,t),n;function r(e,r){t=!0,ho(e),n=r}}run(e,t,n){No(e),this.freeze();let r=this.transformers;return!n&&typeof t==`function`&&(n=t,t=void 0),n?i(void 0,n):new Promise(i);function i(i,a){let o=Fo(t);r.run(e,o,s);function s(t,r,o){let s=r||e;t?a(t):i?i(s):n(void 0,s,o)}}}runSync(e,t){let n=!1,r;return this.run(e,t,i),Po(`runSync`,`run`,n),r;function i(e,t){ho(e),r=t,n=!0}}stringify(e,t){this.freeze();let n=Fo(t),r=this.compiler||this.Compiler;return jo(`stringify`,r),No(e),r(e,n)}use(e,...t){let n=this.attachers,r=this.namespace;if(Mo(`use`,this.frozen),e!=null)if(typeof e==`function`)s(e,t);else if(typeof e==`object`)Array.isArray(e)?o(e):a(e);else throw TypeError("Expected usable value, not `"+e+"`");return this;function i(e){if(typeof e==`function`)s(e,[]);else if(typeof e==`object`)if(Array.isArray(e)){let[t,...n]=e;s(t,n)}else a(e);else throw TypeError("Expected usable value, not `"+e+"`")}function a(e){if(!(`plugins`in e)&&!(`settings`in e))throw Error("Expected usable value but received an empty preset, which is probably a mistake: presets typically come with `plugins` and sometimes with `settings`, but this has neither");o(e.plugins),e.settings&&(r.settings=(0,go.default)(!0,r.settings,e.settings))}function o(e){let t=-1;if(e!=null)if(Array.isArray(e))for(;++t<e.length;){let n=e[t];i(n)}else throw TypeError("Expected a list of plugins, not `"+e+"`")}function s(e,t){let r=-1,i=-1;for(;++r<n.length;)if(n[r][0]===e){i=r;break}if(i===-1)n.push([e,...t]);else if(t.length>0){let[r,...a]=t,o=n[i][1];_o(o)&&_o(r)&&(r=(0,go.default)(!0,o,r)),n[i]=[e,r,...a]}}}}().freeze();function Ao(e,t){if(typeof t!=`function`)throw TypeError("Cannot `"+e+"` without `parser`")}function jo(e,t){if(typeof t!=`function`)throw TypeError("Cannot `"+e+"` without `compiler`")}function Mo(e,t){if(t)throw Error("Cannot call `"+e+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function No(e){if(!_o(e)||typeof e.type!=`string`)throw TypeError("Expected node, got `"+e+"`")}function Po(e,t,n){if(!n)throw Error("`"+e+"` finished async. Use `"+t+"` instead")}function Fo(e){return Io(e)?e:new So(e)}function Io(e){return!!(e&&typeof e==`object`&&`message`in e&&`messages`in e)}function Lo(e){return typeof e==`string`||Ro(e)}function Ro(e){return!!(e&&typeof e==`object`&&`byteLength`in e&&`byteOffset`in e)}function zo(e){return e.type===`text`}function Bo(e){return e.type===`paragraph`}function Vo(e){return e.type===`strong`}function Ho(e){return e.type===`emphasis`}function Uo(e){return e.type===`delete`}function Wo(e){return e.type===`inlineCode`}function Go(e){return e.type===`code`}function Ko(e){return e.type===`link`}function qo(e){return e.type===`blockquote`}function Jo(e){return e.type===`list`}function Yo(e){return e.type===`listItem`}function Xo(e){return e.type===`table`}function Zo(e){return e.type===`tableRow`}function Qo(e){return e.type===`tableCell`}function $o(e){let t=[];for(let n of e.children){let e=[];for(let t of n.children)e.push(l(t));t.push(e)}if(t.length===0)return``;let n=t[0];return es(n,t.slice(1))}function es(e,t){let n=[e,...t],r=Math.max(...n.map(e=>e.length));if(r===0)return``;let i=Array.from({length:r},()=>0);for(let e of n)for(let t=0;t<r;t++){let n=(e[t]||``).length;n>i[t]&&(i[t]=n)}let a=e=>Array.from({length:r},(t,n)=>(e[n]||``).padEnd(i[n])).join(` | `).trimEnd(),o=[];o.push(a(e)),o.push(i.map(e=>`-`.repeat(e)).join(`-|-`));for(let e of t)o.push(a(e));return o.join(`
39
+ `)}function ts(e){let{chart:t,title:n}=e;return t.type===`pie`?`${n}
40
+ ${es([`Label`,`Value`],t.segments.map(e=>[e.label,String(e.value)]))}`:`${n}
41
+ ${es([t.xLabel??``,...t.series.map(e=>e.name)],t.categories.map(e=>[e,...t.series.map(t=>{let n=t.data.find(t=>t.label===e);return n?String(n.value):``})]))}`}function ns(e){return`children`in e&&Array.isArray(e.children)?e.children:[]}function rs(e){return`value`in e&&typeof e.value==`string`?e.value:``}function is(e){return ko().use(po).use(Ca).parse(e)}function as(e,t){return ko().use(mo,t).use(Ca).stringify(e)}function os(e){return`value`in e&&typeof e.value==`string`?e.value:`alt`in e&&typeof e.alt==`string`?e.alt:null}function ss(e,t){return`children`in e&&Array.isArray(e.children)?e.children.map(e=>cs(e)).filter(e=>e.length>0).join(t):``}function cs(e){let t=os(e);if(t!==null)return t;switch(e.type){case`root`:return ss(e,`
41
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
+ `);case`list`:case`table`:return ss(e,`
44
+ `);case`listItem`:case`blockquote`:return ss(e,`
45
+ `);case`tableRow`:return ss(e,` `);case`break`:return`
46
+ `;case`thematicBreak`:return``;case`tableCell`:return ss(e,``);default:return ss(e,``)}}function U(e){return cs(e)}function ls(e){return U(is(e))}function us(e,t){return`children`in e&&Array.isArray(e.children)&&(e.children=e.children.map(e=>{let n=t(e);return n===null?null:us(n,t)}).filter(e=>e!==null)),e}function W(e){return{type:`text`,value:e}}function ds(e){return{type:`strong`,children:e}}function fs(e){return{type:`emphasis`,children:e}}function ps(e){return{type:`delete`,children:e}}function ms(e){return{type:`inlineCode`,value:e}}function hs(e,t){return{type:`code`,value:e,lang:t}}function gs(e,t,n){return{type:`link`,url:e,children:t,title:n}}function _s(e){return{type:`blockquote`,children:e}}function G(e){return{type:`paragraph`,children:e}}function K(e){return{type:`root`,children:e}}var vs=class{renderList(e,t,n,r=`-`){let i=` `.repeat(t),a=e.start??1,o=[];for(let[s,c]of ns(e).entries()){let l=e.ordered?`${a+s}.`:r,u=!0;for(let e of ns(c)){if(Jo(e)){o.push(this.renderList(e,t+1,n,r));continue}let a=n(e);a.trim()&&(u?(o.push(`${i}${l} ${a}`),u=!1):o.push(`${i} ${a}`))}}return o.join(`
47
+ `)}defaultNodeToText(e,t){let n=ns(e);return n.length>0?n.map(t).join(``):rs(e)}fromAstWithNodeConverter(e,t){let n=[];for(let r of e.children)n.push(t(r));return n.join(`
48
+
49
+ `)}extractPlainText(e){return U(this.toAst(e))}fromMarkdown(e){return this.fromAst(is(e))}toMarkdown(e){return as(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
50
  `)}cardChildToFallbackText(e){switch(e.type){case`text`:return e.content;case`fields`:return e.children.map(e=>`**${e.label}**: ${e.value}`).join(`
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`,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
- `)}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
- `);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({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(`
51
+ `);case`actions`:return null;case`table`:return es(e.headers,e.rows);case`chart`:return ts(e);case`section`:return e.children.map(e=>this.cardChildToFallbackText(e)).filter(Boolean).join(`
52
+ `);default:return null}}};function ys(e){return typeof e==`object`&&!!e&&`type`in e&&e.type===`card`}function bs(e={}){return{type:`card`,title:e.title,subtitle:e.subtitle,imageUrl:e.imageUrl,children:e.children??[]}}function xs(e,t={}){return{type:`text`,content:e,style:t.style}}var Ss=xs;function Cs(e){return{type:`image`,url:e.url,alt:e.alt}}function ws(){return{type:`divider`}}function Ts(e){return{type:`section`,children:e}}function Es(e){return{type:`actions`,children:e}}function Ds(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 Os(e){return{type:`link-button`,id:e.id,url:e.url,label:e.label,style:e.style}}function ks(e){return{type:`field`,label:e.label,value:e.value}}function As(e){return{type:`fields`,children:e}}function js(e){return{type:`table`,headers:e.headers,rows:e.rows,align:e.align,caption:e.caption,pageSize:e.pageSize}}function Ms(e){return{type:`chart`,title:e.title,chart:e.chart}}function Ns(e){return{type:`link`,url:e.url,label:e.label}}function Ps(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 Fs=new Map([[bs,`Card`],[xs,`Text`],[Cs,`Image`],[ws,`Divider`],[Ts,`Section`],[Es,`Actions`],[Ds,`Button`],[Os,`LinkButton`],[Ns,`CardLink`],[ks,`Field`],[As,`Fields`],[js,`Table`],[Ms,`Chart`]]);function Is(e){if(!Ps(e))return ys(e)||typeof e==`object`&&e&&`type`in e?e:null;let{type:t,props:n}=e,r=Fs.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?Ls(n.children)[0]??null:null}let i=n.children?Ls(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 bs({title:n.title,subtitle:n.subtitle,imageUrl:n.imageUrl,children:i.filter(a)});case`Text`:return xs(Rs(n.children),{style:n.style});case`Image`:return Cs({url:n.url,alt:n.alt});case`Divider`:return ws();case`Section`:return Ts(i.filter(a));case`Actions`:return Es(i.filter(e=>e.type===`button`||e.type===`link-button`||e.type===`select`||e.type===`radio_select`));case`Button`:{let e=Rs(n.children);return Ds({id:n.id,label:n.label??e,style:n.style,value:n.value,actionType:n.actionType,disabled:n.disabled})}case`LinkButton`:{let e=Rs(n.children);return Os({url:n.url,label:n.label??e,style:n.style})}case`CardLink`:{let e=Rs(n.children);return Ns({url:n.url,label:n.label??e})}case`Field`:return ks({label:n.label,value:n.value});case`Fields`:return As(i.filter(e=>e.type===`field`));case`Table`:return js({headers:n.headers,rows:n.rows,align:n.align,caption:n.caption,pageSize:n.pageSize});case`Chart`:return Ms({title:n.title,chart:n.chart});default:return null}}function Ls(e){if(e==null)return[];if(Array.isArray(e))return e.flatMap(Ls);let t=Is(e);return t&&typeof t==`object`&&`type`in t?t.type===`card`?t.children:[t]:[]}function Rs(e){return typeof e==`string`?e:typeof e==`number`?String(e):Array.isArray(e)?e.map(Rs).join(``):``}function zs(e){let t=[];e.title&&t.push(`**${e.title}**`),e.subtitle&&t.push(e.subtitle);for(let n of e.children){let e=Bs(n);e&&t.push(e)}return t.join(`
53
+ `)}function Bs(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(`
54
+ `);case`actions`:return null;case`table`:return es(e.headers,e.rows);case`chart`:return ts(e);case`section`:return e.children.map(e=>Bs(e)).filter(Boolean).join(`
55
+ `);default:return null}}var Vs=[`text_input`,`select`,`external_select`,`radio_select`,`text`,`fields`];function Hs(e){return typeof e==`object`&&!!e&&`type`in e&&e.type===`modal`}function Us(e){let t=e.filter(e=>typeof e==`object`&&!!e&&`type`in e&&Vs.includes(e.type));return t.length<e.length&&console.warn(`[chat] Modal contains unsupported child elements that were ignored`),t}function Ws(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 Gs(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 Ks(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 qs(e){return{type:`external_select`,id:e.id,initialOption:e.initialOption,label:e.label,placeholder:e.placeholder,minQueryLength:e.minQueryLength,optional:e.optional}}function Js(e){return{label:e.label,value:e.value,description:e.description}}function Ys(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 Xs(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 Zs=new Map([[Ws,`Modal`],[Gs,`TextInput`],[Ks,`Select`],[qs,`ExternalSelect`],[Ys,`RadioSelect`],[Js,`SelectOption`]]);function Qs(e){if(!Xs(e))return Hs(e)||typeof e==`object`&&e&&`type`in e?e:null;let{type:t,props:n}=e,r=Zs.get(t);if(!r)return n.children?$s(n.children)[0]??null:null;let i=n.children?$s(n.children):[];switch(r){case`Modal`:return Ws({callbackId:n.callbackId,title:n.title,submitLabel:n.submitLabel,closeLabel:n.closeLabel,notifyOnClose:n.notifyOnClose,privateMetadata:n.privateMetadata,children:Us(i)});case`TextInput`:return Gs({id:n.id,label:n.label,placeholder:n.placeholder,initialValue:n.initialValue,multiline:n.multiline,optional:n.optional,maxLength:n.maxLength});case`Select`:return Ks({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 qs({id:n.id,initialOption:n.initialOption,label:n.label,placeholder:n.placeholder,minQueryLength:n.minQueryLength,optional:n.optional});case`RadioSelect`:return Ys({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 Js({label:n.label,value:n.value,description:n.description});default:return null}}function $s(e){if(e==null)return[];if(Array.isArray(e))return e.flatMap($s);let t=Qs(e);return t?Hs(t)?t.children:[t]:[]}var ec=Symbol.for(`chat.jsx.element`);function tc(e){return typeof e==`object`&&!!e&&e.$$typeof===ec}function nc(e){if(e==null)return[];if(Array.isArray(e))return e.flatMap(nc);if(tc(e)){let t=hc(e);return t?[t]:[]}return typeof e==`object`&&`type`in e?[e]:typeof e==`string`||typeof e==`number`?[String(e)]:[]}function rc(e){return!(`id`in e||`url`in e||`label`in e)}function ic(e){return`id`in e&&typeof e.id==`string`&&!(`url`in e)}function ac(e){return`url`in e&&typeof e.url==`string`&&!(`id`in e)}function oc(e){return`url`in e&&typeof e.url==`string`&&!(`id`in e)&&!(`alt`in e)&&!(`style`in e)}function sc(e){return`url`in e&&typeof e.url==`string`}function cc(e){return`label`in e&&`value`in e&&typeof e.label==`string`&&typeof e.value==`string`}function lc(e){return!(`id`in e||`url`in e||`callbackId`in e)&&(`title`in e||`subtitle`in e||`imageUrl`in e)}function uc(e){return`callbackId`in e&&`title`in e}function dc(e){return`id`in e&&`label`in e&&!(`options`in e)&&!(`value`in e)}function fc(e){return`id`in e&&`label`in e&&!(`value`in e)}function pc(e){return`id`in e&&`label`in e&&!(`value`in e)&&!(`children`in e)}function mc(e){return`label`in e&&`value`in e&&!(`id`in e)}function hc(e){let{type:t,props:n,children:r}=e,i=nc(r);if(t===xs){let e=rc(n)?n:{style:void 0};return xs(i.length>0?i.map(String).join(``):String(e.children??``),{style:e.style})}if(t===Ts)return Ts(i);if(t===Es)return Es(i);if(t===As)return As(i);if(t===Ds){if(!ic(n))throw Error(`Button requires an 'id' prop`);let e=i.length>0?i.map(String).join(``):n.label??``;return Ds({id:n.id,label:e,style:n.style,value:n.value,actionType:n.actionType,callbackUrl:n.callbackUrl,disabled:n.disabled})}if(t===Os){if(!ac(n))throw Error(`LinkButton requires a 'url' prop`);let e=i.length>0?i.map(String).join(``):n.label??``;return Os({id:n.id,url:n.url,label:e,style:n.style})}if(t===Ns){if(!oc(n))throw Error(`CardLink requires a 'url' prop`);let e=i.length>0?i.map(String).join(``):n.label??``;return Ns({url:n.url,label:e})}if(t===Cs){if(!sc(n))throw Error(`Image requires a 'url' prop`);return Cs({url:n.url,alt:n.alt})}if(t===ks){if(!cc(n))throw Error(`Field requires 'label' and 'value' props`);return ks({label:n.label,value:n.value})}if(t===ws)return ws();if(t===Ws){if(!uc(n))throw Error(`Modal requires 'callbackId' and 'title' props`);return Ws({callbackId:n.callbackId,callbackUrl:n.callbackUrl,title:n.title,submitLabel:n.submitLabel,closeLabel:n.closeLabel,notifyOnClose:n.notifyOnClose,privateMetadata:n.privateMetadata,children:Us(i)})}if(t===Gs){if(!dc(n))throw Error(`TextInput requires 'id' and 'label' props`);return Gs({id:n.id,label:n.label,placeholder:n.placeholder,initialValue:n.initialValue,multiline:n.multiline,optional:n.optional,maxLength:n.maxLength})}if(t===Ks){if(!fc(n))throw Error(`Select requires 'id' and 'label' props`);return Ks({id:n.id,label:n.label,placeholder:n.placeholder,initialOption:n.initialOption,optional:n.optional,options:i})}if(t===qs){if(!pc(n))throw Error(`ExternalSelect requires 'id' and 'label' props`);return qs({id:n.id,initialOption:n.initialOption,label:n.label,placeholder:n.placeholder,minQueryLength:n.minQueryLength,optional:n.optional})}if(t===Ys){if(!fc(n))throw Error(`RadioSelect requires 'id' and 'label' props`);return Ys({id:n.id,label:n.label,initialOption:n.initialOption,optional:n.optional,options:i})}if(t===Js){if(!mc(n))throw Error(`SelectOption requires 'label' and 'value' props`);return Js({label:n.label,value:n.value,description:n.description})}if(t===js){let e=n;return js({headers:e.headers,rows:e.rows,caption:e.caption,pageSize:e.pageSize})}if(t===Ms){let e=n;return Ms({title:e.title,chart:e.chart})}let a=lc(n)?n:{};return bs({title:a.title,subtitle:a.subtitle,imageUrl:a.imageUrl,children:i})}function q(e){if(tc(e)){let t=hc(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 gc(e){if(tc(e)){let t=hc(e);if(t&&typeof t==`object`&&`type`in t&&t.type===`modal`)return t}return Hs(e)?e:null}function J(e){if(tc(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 _c=[`text/`,`application/json`,`application/xml`,`application/javascript`,`application/typescript`,`application/yaml`,`application/x-yaml`,`application/toml`];function vc(e){return _c.some(t=>e===t||e.startsWith(t))}async function yc(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&&vc(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 bc(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
56
  `)}).join(`
50
57
 
51
58
  `);a+=`
52
59
 
53
60
  Links:
54
- ${t}`}let o;if(t===`user`){let n=[];for(let t of e.attachments??[]){let r=await pc(t);r?n.push(r):(t.type===`video`||t.type===`audio`)&&i(t,e)}o=n.length>0?{role:t,content:[{type:`text`,text:a},...n]}:{role:t,content:a}}else o={role:t,content:a};return r?{result:await r(o,e),source:e}:{result:o,source:e}}))).filter(e=>e.result!=null).map(e=>e.result)}var hc=Object.defineProperty,gc=Object.defineProperties,_c=Object.getOwnPropertyDescriptors,vc=Object.getOwnPropertySymbols,yc=Object.prototype.hasOwnProperty,bc=Object.prototype.propertyIsEnumerable,xc=(e,t,n)=>t in e?hc(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Sc=(e,t)=>{for(var n in t||={})yc.call(t,n)&&xc(e,n,t[n]);if(vc)for(var n of vc(t))bc.call(t,n)&&xc(e,n,t[n]);return e},Cc=(e,t)=>gc(e,_c(t)),X=(e,t)=>{let n=!1,r=!1;for(let i=0;i<t;i+=1){if(e[i]===`\\`&&i+1<e.length&&e[i+1]==="`"){i+=1;continue}if(e.substring(i,i+3)==="```"){r=!r,i+=2;continue}!r&&e[i]==="`"&&(n=!n)}return n||r},wc=(e,t)=>{let n=e.substring(t,t+3)==="```",r=t>0&&e.substring(t-1,t+2)==="```",i=t>1&&e.substring(t-2,t+1)==="```";return n||r||i},Tc=e=>{let t=0;for(let n=0;n<e.length;n+=1){if(e[n]===`\\`&&n+1<e.length&&e[n+1]==="`"){n+=1;continue}e[n]==="`"&&!wc(e,n)&&(t+=1)}return t},Ec=(e,t)=>{let n=!1,r=!1,i=-1;for(let a=0;a<e.length;a+=1){if(e[a]===`\\`&&a+1<e.length&&e[a+1]==="`"){a+=1;continue}if(e.substring(a,a+3)==="```"){r=!r,a+=2;continue}if(!r&&e[a]==="`")if(n){if(i<t&&t<a)return!0;n=!1,i=-1}else n=!0,i=a}return!1},Dc=/^(\s*(?:[-*+]|\d+[.)]) +)>(=?\s*[$]?\d)/gm,Oc=e=>!e||typeof e!=`string`||!e.includes(`>`)?e:e.replace(Dc,(t,n,r,i)=>X(e,i)?t:`${n}\\>${r}`),kc=/(\*\*)([^*]*\*?)$/,Ac=/(__)([^_]*?)$/,jc=/(\*\*\*)([^*]*?)$/,Mc=/(\*)([^*]*?)$/,Nc=/(_)([^_]*?)$/,Pc=/(`)([^`]*?)$/,Fc=/(~~)([^~]*?)$/,Ic=/^[\s_~*`]*$/,Lc=/^[\s]*[-*+][\s]+$/,Rc=/[\p{L}\p{N}_]/u,zc=/^```[^`\n]*```?$/,Bc=/^\*{4,}$/,Vc=/(__)([^_]+)_$/,Hc=/(~~)([^~]+)~$/,Uc=/~~/g,Wc=e=>{if(!e)return!1;let t=e.charCodeAt(0);return t>=48&&t<=57||t>=65&&t<=90||t>=97&&t<=122||t===95?!0:Rc.test(e)},Gc=(e,t)=>{let n=1;for(let r=t-1;r>=0;--r)if(e[r]===`]`)n+=1;else if(e[r]===`[`&&(--n,n===0))return r;return-1},Kc=(e,t)=>{let n=1;for(let r=t+1;r<e.length;r+=1)if(e[r]===`[`)n+=1;else if(e[r]===`]`&&(--n,n===0))return r;return-1},qc=(e,t)=>{let n=!1,r=!1;for(let i=0;i<e.length&&i<t;i+=1){if(e[i]===`\\`&&e[i+1]===`$`){i+=1;continue}e[i]===`$`&&(e[i+1]===`$`?(r=!r,i+=1,n=!1):r||(n=!n))}return n||r},Jc=(e,t)=>{for(let n=t;n<e.length;n+=1){if(e[n]===`)`)return!0;if(e[n]===`
55
- `)return!1}return!1},Yc=(e,t)=>{for(let n=t-1;n>=0;--n){if(e[n]===`)`)return!1;if(e[n]===`(`)return n>0&&e[n-1]===`]`?Jc(e,t):!1;if(e[n]===`
56
- `)return!1}return!1},Xc=(e,t)=>{for(let n=t-1;n>=0;--n){if(e[n]===`>`)return!1;if(e[n]===`<`){let t=n+1<e.length?e[n+1]:``;return t>=`a`&&t<=`z`||t>=`A`&&t<=`Z`||t===`/`}if(e[n]===`
57
- `)return!1}return!1},Zc=(e,t,n)=>{let r=0;for(let n=t-1;n>=0;--n)if(e[n]===`
61
+ ${t}`}let o;if(t===`user`){let n=[];for(let t of e.attachments??[]){let r=await yc(t);r?n.push(r):(t.type===`video`||t.type===`audio`)&&i(t,e)}o=n.length>0?{role:t,content:[{type:`text`,text:a},...n]}:{role:t,content:a}}else o={role:t,content:a};return r?{result:await r(o,e),source:e}:{result:o,source:e}}))).filter(e=>e.result!=null).map(e=>e.result)}var xc=Object.defineProperty,Sc=Object.defineProperties,Cc=Object.getOwnPropertyDescriptors,wc=Object.getOwnPropertySymbols,Tc=Object.prototype.hasOwnProperty,Ec=Object.prototype.propertyIsEnumerable,Dc=(e,t,n)=>t in e?xc(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Oc=(e,t)=>{for(var n in t||={})Tc.call(t,n)&&Dc(e,n,t[n]);if(wc)for(var n of wc(t))Ec.call(t,n)&&Dc(e,n,t[n]);return e},kc=(e,t)=>Sc(e,Cc(t)),Y=(e,t)=>{let n=!1,r=!1;for(let i=0;i<t;i+=1){if(e[i]===`\\`&&i+1<e.length&&e[i+1]==="`"){i+=1;continue}if(e.substring(i,i+3)==="```"){r=!r,i+=2;continue}!r&&e[i]==="`"&&(n=!n)}return n||r},Ac=(e,t)=>{let n=e.substring(t,t+3)==="```",r=t>0&&e.substring(t-1,t+2)==="```",i=t>1&&e.substring(t-2,t+1)==="```";return n||r||i},jc=e=>{let t=0;for(let n=0;n<e.length;n+=1){if(e[n]===`\\`&&n+1<e.length&&e[n+1]==="`"){n+=1;continue}e[n]==="`"&&!Ac(e,n)&&(t+=1)}return t},X=(e,t)=>{let n=!1,r=!1,i=-1;for(let a=0;a<e.length;a+=1){if(e[a]===`\\`&&a+1<e.length&&e[a+1]==="`"){a+=1;continue}if(e.substring(a,a+3)==="```"){r=!r,a+=2;continue}if(!r&&e[a]==="`")if(n){if(i<t&&t<a)return!0;n=!1,i=-1}else n=!0,i=a}return!1},Mc=/^(\s*(?:[-*+]|\d+[.)]) +)>(=?\s*[$]?\d)/gm,Nc=e=>!e||typeof e!=`string`||!e.includes(`>`)?e:e.replace(Mc,(t,n,r,i)=>Y(e,i)?t:`${n}\\>${r}`),Pc=/(\*\*)([^*]*\*?)$/,Fc=/(__)([^_]*?)$/,Ic=/(\*\*\*)([^*]*?)$/,Lc=/(\*)([^*]*?)$/,Rc=/(_)([^_]*?)$/,zc=/(`)([^`]*?)$/,Bc=/(~~)([^~]*?)$/,Vc=/^[\s_~*`]*$/,Hc=/^[\s]*[-*+][\s]+$/,Uc=/[\p{L}\p{N}_]/u,Wc=/^```[^`\n]*```?$/,Gc=/^\*{4,}$/,Kc=/(__)([^_]+)_$/,qc=/(~~)([^~]+)~$/,Jc=/~~/g,Yc=e=>{if(!e)return!1;let t=e.charCodeAt(0);return t>=48&&t<=57||t>=65&&t<=90||t>=97&&t<=122||t===95?!0:Uc.test(e)},Xc=(e,t)=>{let n=1;for(let r=t-1;r>=0;--r)if(e[r]===`]`)n+=1;else if(e[r]===`[`&&(--n,n===0))return r;return-1},Zc=(e,t)=>{let n=1;for(let r=t+1;r<e.length;r+=1)if(e[r]===`[`)n+=1;else if(e[r]===`]`&&(--n,n===0))return r;return-1},Qc=(e,t)=>{let n=!1,r=!1;for(let i=0;i<e.length&&i<t;i+=1){if(e[i]===`\\`&&e[i+1]===`$`){i+=1;continue}e[i]===`$`&&(e[i+1]===`$`?(r=!r,i+=1,n=!1):r||(n=!n))}return n||r},$c=(e,t)=>{for(let n=t;n<e.length;n+=1){if(e[n]===`)`)return!0;if(e[n]===`
62
+ `)return!1}return!1},el=(e,t)=>{for(let n=t-1;n>=0;--n){if(e[n]===`)`)return!1;if(e[n]===`(`)return n>0&&e[n-1]===`]`?$c(e,t):!1;if(e[n]===`
63
+ `)return!1}return!1},tl=(e,t)=>{for(let n=t-1;n>=0;--n){if(e[n]===`>`)return!1;if(e[n]===`<`){let t=n+1<e.length?e[n+1]:``;return t>=`a`&&t<=`z`||t>=`A`&&t<=`Z`||t===`/`}if(e[n]===`
64
+ `)return!1}return!1},nl=(e,t,n)=>{let r=0;for(let n=t-1;n>=0;--n)if(e[n]===`
58
65
  `){r=n+1;break}let i=e.length;for(let n=t;n<e.length;n+=1)if(e[n]===`
59
- `){i=n;break}let a=e.substring(r,i),o=0,s=!1;for(let e of a)if(e===n)o+=1;else if(e!==` `&&e!==` `){s=!0;break}return o>=3&&!s},Qc=(e,t,n,r)=>n===`\\`||e.includes(`$`)&&qc(e,t)?!0:n!==`*`&&r===`*`?(t<e.length-2?e[t+2]:``)!==`*`:!!(n===`*`||n&&r&&Wc(n)&&Wc(r)||(!n||n===` `||n===` `||n===`
66
+ `){i=n;break}let a=e.substring(r,i),o=0,s=!1;for(let e of a)if(e===n)o+=1;else if(e!==` `&&e!==` `){s=!0;break}return o>=3&&!s},rl=(e,t,n,r)=>n===`\\`||e.includes(`$`)&&Qc(e,t)?!0:n!==`*`&&r===`*`?(t<e.length-2?e[t+2]:``)!==`*`:!!(n===`*`||n&&r&&Yc(n)&&Yc(r)||(!n||n===` `||n===` `||n===`
60
67
  `)&&(!r||r===` `||r===` `||r===`
61
- `)),$c=e=>{let t=0,n=!1,r=e.length;for(let i=0;i<r;i+=1){if(e[i]==="`"&&i+2<r&&e[i+1]==="`"&&e[i+2]==="`"){n=!n,i+=2;continue}if(n||e[i]!==`*`)continue;let a=i>0?e[i-1]:``,o=i<r-1?e[i+1]:``;Qc(e,i,a,o)||(t+=1)}return t},el=(e,t,n,r)=>!!(n===`\\`||e.includes(`$`)&&qc(e,t)||Yc(e,t)||Xc(e,t)||n===`_`||r===`_`||n&&r&&Wc(n)&&Wc(r)),tl=e=>{let t=0,n=!1,r=e.length;for(let i=0;i<r;i+=1){if(e[i]==="`"&&i+2<r&&e[i+1]==="`"&&e[i+2]==="`"){n=!n,i+=2;continue}if(n||e[i]!==`_`)continue;let a=i>0?e[i-1]:``,o=i<r-1?e[i+1]:``;el(e,i,a,o)||(t+=1)}return t},nl=e=>{let t=0,n=0,r=!1;for(let i=0;i<e.length;i+=1){if(e[i]==="`"&&i+2<e.length&&e[i+1]==="`"&&e[i+2]==="`"){n>=3&&(t+=Math.floor(n/3)),n=0,r=!r,i+=2;continue}r||(e[i]===`*`?n+=1:(n>=3&&(t+=Math.floor(n/3)),n=0))}return n>=3&&(t+=Math.floor(n/3)),t},rl=e=>{let t=0,n=!1;for(let r=0;r<e.length;r+=1){if(e[r]==="`"&&r+2<e.length&&e[r+1]==="`"&&e[r+2]==="`"){n=!n,r+=2;continue}n||e[r]===`*`&&r+1<e.length&&e[r+1]===`*`&&(t+=1,r+=1)}return t},il=e=>{let t=0,n=!1;for(let r=0;r<e.length;r+=1){if(e[r]==="`"&&r+2<e.length&&e[r+1]==="`"&&e[r+2]==="`"){n=!n,r+=2;continue}n||e[r]===`_`&&r+1<e.length&&e[r+1]===`_`&&(t+=1,r+=1)}return t},al=(e,t,n)=>{if(!t||Ic.test(t))return!0;let r=e.substring(0,n).lastIndexOf(`
62
- `),i=r===-1?0:r+1,a=e.substring(i,n);return Lc.test(a)&&t.includes(`
63
- `)?!0:Zc(e,n,`*`)},ol=e=>{let t=e.match(kc);if(!t)return e;let n=t[2],r=e.lastIndexOf(t[1]);return X(e,r)||Ec(e,r)||al(e,n,r)?e:rl(e)%2==1?n.endsWith(`*`)?`${e}*`:`${e}**`:e},sl=(e,t,n)=>{if(!t||Ic.test(t))return!0;let r=e.substring(0,n).lastIndexOf(`
64
- `),i=r===-1?0:r+1,a=e.substring(i,n);return Lc.test(a)&&t.includes(`
65
- `)?!0:Zc(e,n,`_`)},cl=e=>{let t=e.match(Ac);if(!t){let t=e.match(Vc);if(t){let n=e.lastIndexOf(t[1]);if(!(X(e,n)||Ec(e,n))&&il(e)%2==1)return`${e}_`}return e}let n=t[2],r=e.lastIndexOf(t[1]);return X(e,r)||Ec(e,r)||sl(e,n,r)?e:il(e)%2==1?`${e}__`:e},ll=e=>{let t=!1;for(let n=0;n<e.length;n+=1){if(e[n]==="`"&&n+2<e.length&&e[n+1]==="`"&&e[n+2]==="`"){t=!t,n+=2;continue}if(!t&&e[n]===`*`&&e[n-1]!==`*`&&e[n+1]!==`*`&&e[n-1]!==`\\`&&!qc(e,n)){let t=n>0?e[n-1]:``,r=n<e.length-1?e[n+1]:``;if((!t||t===` `||t===` `||t===`
68
+ `)),il=e=>{let t=0,n=!1,r=e.length;for(let i=0;i<r;i+=1){if(e[i]==="`"&&i+2<r&&e[i+1]==="`"&&e[i+2]==="`"){n=!n,i+=2;continue}if(n||e[i]!==`*`)continue;let a=i>0?e[i-1]:``,o=i<r-1?e[i+1]:``;rl(e,i,a,o)||(t+=1)}return t},al=(e,t,n,r)=>!!(n===`\\`||e.includes(`$`)&&Qc(e,t)||el(e,t)||tl(e,t)||n===`_`||r===`_`||n&&r&&Yc(n)&&Yc(r)),ol=e=>{let t=0,n=!1,r=e.length;for(let i=0;i<r;i+=1){if(e[i]==="`"&&i+2<r&&e[i+1]==="`"&&e[i+2]==="`"){n=!n,i+=2;continue}if(n||e[i]!==`_`)continue;let a=i>0?e[i-1]:``,o=i<r-1?e[i+1]:``;al(e,i,a,o)||(t+=1)}return t},sl=e=>{let t=0,n=0,r=!1;for(let i=0;i<e.length;i+=1){if(e[i]==="`"&&i+2<e.length&&e[i+1]==="`"&&e[i+2]==="`"){n>=3&&(t+=Math.floor(n/3)),n=0,r=!r,i+=2;continue}r||(e[i]===`*`?n+=1:(n>=3&&(t+=Math.floor(n/3)),n=0))}return n>=3&&(t+=Math.floor(n/3)),t},cl=e=>{let t=0,n=!1;for(let r=0;r<e.length;r+=1){if(e[r]==="`"&&r+2<e.length&&e[r+1]==="`"&&e[r+2]==="`"){n=!n,r+=2;continue}n||e[r]===`*`&&r+1<e.length&&e[r+1]===`*`&&(t+=1,r+=1)}return t},ll=e=>{let t=0,n=!1;for(let r=0;r<e.length;r+=1){if(e[r]==="`"&&r+2<e.length&&e[r+1]==="`"&&e[r+2]==="`"){n=!n,r+=2;continue}n||e[r]===`_`&&r+1<e.length&&e[r+1]===`_`&&(t+=1,r+=1)}return t},ul=(e,t,n)=>{if(!t||Vc.test(t))return!0;let r=e.substring(0,n).lastIndexOf(`
69
+ `),i=r===-1?0:r+1,a=e.substring(i,n);return Hc.test(a)&&t.includes(`
70
+ `)?!0:nl(e,n,`*`)},dl=e=>{let t=e.match(Pc);if(!t)return e;let n=t[2],r=e.lastIndexOf(t[1]);return Y(e,r)||X(e,r)||ul(e,n,r)?e:cl(e)%2==1?n.endsWith(`*`)?`${e}*`:`${e}**`:e},fl=(e,t,n)=>{if(!t||Vc.test(t))return!0;let r=e.substring(0,n).lastIndexOf(`
71
+ `),i=r===-1?0:r+1,a=e.substring(i,n);return Hc.test(a)&&t.includes(`
72
+ `)?!0:nl(e,n,`_`)},pl=e=>{let t=e.match(Fc);if(!t){let t=e.match(Kc);if(t){let n=e.lastIndexOf(t[1]);if(!(Y(e,n)||X(e,n))&&ll(e)%2==1)return`${e}_`}return e}let n=t[2],r=e.lastIndexOf(t[1]);return Y(e,r)||X(e,r)||fl(e,n,r)?e:ll(e)%2==1?`${e}__`:e},ml=e=>{let t=!1;for(let n=0;n<e.length;n+=1){if(e[n]==="`"&&n+2<e.length&&e[n+1]==="`"&&e[n+2]==="`"){t=!t,n+=2;continue}if(!t&&e[n]===`*`&&e[n-1]!==`*`&&e[n+1]!==`*`&&e[n-1]!==`\\`&&!Qc(e,n)){let t=n>0?e[n-1]:``,r=n<e.length-1?e[n+1]:``;if((!t||t===` `||t===` `||t===`
66
73
  `)&&(!r||r===` `||r===` `||r===`
67
- `)||t&&r&&Wc(t)&&Wc(r))continue;return n}}return-1},ul=e=>{if(!e.match(Mc))return e;let t=ll(e);if(t===-1||X(e,t)||Ec(e,t))return e;let n=e.substring(t+1);return!n||Ic.test(n)?e:$c(e)%2==1?`${e}*`:e},dl=e=>{let t=!1;for(let n=0;n<e.length;n+=1){if(e[n]==="`"&&n+2<e.length&&e[n+1]==="`"&&e[n+2]==="`"){t=!t,n+=2;continue}if(!t&&e[n]===`_`&&e[n-1]!==`_`&&e[n+1]!==`_`&&e[n-1]!==`\\`&&!qc(e,n)&&!Yc(e,n)){let t=n>0?e[n-1]:``,r=n<e.length-1?e[n+1]:``;if(t&&r&&Wc(t)&&Wc(r))continue;return n}}return-1},fl=e=>{let t=e.length;for(;t>0&&e[t-1]===`
68
- `;)--t;return t<e.length?`${e.slice(0,t)}_${e.slice(t)}`:`${e}_`},pl=e=>{if(!e.endsWith(`**`))return null;let t=e.slice(0,-2);if(rl(t)%2!=1)return null;let n=t.indexOf(`**`),r=dl(t);return n!==-1&&r!==-1&&n<r?`${t}_**`:null},ml=e=>{if(!e.match(Nc))return e;let t=dl(e);if(t===-1)return e;let n=e.substring(t+1);if(!n||Ic.test(n)||X(e,t)||Ec(e,t))return e;if(tl(e)%2==1){let t=pl(e);return t===null?fl(e):t}return e},hl=e=>{let t=rl(e),n=$c(e);return t%2==0&&n%2==0},gl=(e,t,n)=>!t||Ic.test(t)||X(e,n)||Ec(e,n)?!0:Zc(e,n,`*`),_l=e=>{if(Bc.test(e))return e;let t=e.match(jc);if(!t)return e;let n=t[2];return gl(e,n,e.lastIndexOf(t[1]))?e:nl(e)%2==1?hl(e)?e:`${e}***`:e},vl=/<[a-zA-Z/][^>]*$/,yl=e=>{let t=e.match(vl);return!t||t.index===void 0||X(e,t.index)?e:e.substring(0,t.index).trimEnd()},bl=e=>!e.match(zc)||e.includes(`
69
- `)?null:e.endsWith("``")&&!e.endsWith("```")?`${e}\``:e,xl=e=>(e.match(/```/g)||[]).length%2==1,Sl=e=>{let t=bl(e);if(t!==null)return t;let n=e.match(Pc);if(n&&!xl(e)){let t=n[2];if(!t||Ic.test(t))return e;if(Tc(e)%2==1)return`${e}\``}return e},Cl=(e,t)=>t>=2&&e.substring(t-2,t+1)==="```"||t>=1&&e.substring(t-1,t+2)==="```"||t<=e.length-3&&e.substring(t,t+3)==="```",wl=e=>{let t=0,n=!1;for(let r=0;r<e.length-1;r+=1)e[r]==="`"&&!Cl(e,r)&&(n=!n),!n&&e[r]===`$`&&e[r+1]===`$`&&(t+=1,r+=1);return t},Tl=e=>{let t=0,n=!1;for(let r=0;r<e.length;r+=1){if(e[r]===`\\`){r+=1;continue}if(e[r]==="`"&&!Cl(e,r)){n=!n;continue}!n&&e[r]===`$`&&(r+1<e.length&&e[r+1]===`$`?r+=1:t+=1)}return t},El=e=>{if(e.endsWith(`$`)&&!e.endsWith(`$$`))return`${e}$`;let t=e.indexOf(`$$`);return t!==-1&&e.indexOf(`
74
+ `)||t&&r&&Yc(t)&&Yc(r))continue;return n}}return-1},hl=e=>{if(!e.match(Lc))return e;let t=ml(e);if(t===-1||Y(e,t)||X(e,t))return e;let n=e.substring(t+1);return!n||Vc.test(n)?e:il(e)%2==1?`${e}*`:e},gl=e=>{let t=!1;for(let n=0;n<e.length;n+=1){if(e[n]==="`"&&n+2<e.length&&e[n+1]==="`"&&e[n+2]==="`"){t=!t,n+=2;continue}if(!t&&e[n]===`_`&&e[n-1]!==`_`&&e[n+1]!==`_`&&e[n-1]!==`\\`&&!Qc(e,n)&&!el(e,n)){let t=n>0?e[n-1]:``,r=n<e.length-1?e[n+1]:``;if(t&&r&&Yc(t)&&Yc(r))continue;return n}}return-1},_l=e=>{let t=e.length;for(;t>0&&e[t-1]===`
75
+ `;)--t;return t<e.length?`${e.slice(0,t)}_${e.slice(t)}`:`${e}_`},vl=e=>{if(!e.endsWith(`**`))return null;let t=e.slice(0,-2);if(cl(t)%2!=1)return null;let n=t.indexOf(`**`),r=gl(t);return n!==-1&&r!==-1&&n<r?`${t}_**`:null},yl=e=>{if(!e.match(Rc))return e;let t=gl(e);if(t===-1)return e;let n=e.substring(t+1);if(!n||Vc.test(n)||Y(e,t)||X(e,t))return e;if(ol(e)%2==1){let t=vl(e);return t===null?_l(e):t}return e},bl=e=>{let t=cl(e),n=il(e);return t%2==0&&n%2==0},xl=(e,t,n)=>!t||Vc.test(t)||Y(e,n)||X(e,n)?!0:nl(e,n,`*`),Sl=e=>{if(Gc.test(e))return e;let t=e.match(Ic);if(!t)return e;let n=t[2];return xl(e,n,e.lastIndexOf(t[1]))?e:sl(e)%2==1?bl(e)?e:`${e}***`:e},Cl=/<[a-zA-Z/][^>]*$/,wl=e=>{let t=e.match(Cl);return!t||t.index===void 0||Y(e,t.index)?e:e.substring(0,t.index).trimEnd()},Tl=e=>!e.match(Wc)||e.includes(`
76
+ `)?null:e.endsWith("``")&&!e.endsWith("```")?`${e}\``:e,El=e=>(e.match(/```/g)||[]).length%2==1,Dl=e=>{let t=Tl(e);if(t!==null)return t;let n=e.match(zc);if(n&&!El(e)){let t=n[2];if(!t||Vc.test(t))return e;if(jc(e)%2==1)return`${e}\``}return e},Ol=(e,t)=>t>=2&&e.substring(t-2,t+1)==="```"||t>=1&&e.substring(t-1,t+2)==="```"||t<=e.length-3&&e.substring(t,t+3)==="```",kl=e=>{let t=0,n=!1;for(let r=0;r<e.length-1;r+=1)e[r]==="`"&&!Ol(e,r)&&(n=!n),!n&&e[r]===`$`&&e[r+1]===`$`&&(t+=1,r+=1);return t},Al=e=>{let t=0,n=!1;for(let r=0;r<e.length;r+=1){if(e[r]===`\\`){r+=1;continue}if(e[r]==="`"&&!Ol(e,r)){n=!n;continue}!n&&e[r]===`$`&&(r+1<e.length&&e[r+1]===`$`?r+=1:t+=1)}return t},jl=e=>{if(e.endsWith(`$`)&&!e.endsWith(`$$`))return`${e}$`;let t=e.indexOf(`$$`);return t!==-1&&e.indexOf(`
70
77
  `,t)!==-1&&!e.endsWith(`
71
78
  `)?`${e}
72
- $$`:`${e}$$`},Dl=e=>wl(e)%2==0?e:El(e),Ol=e=>Tl(e)%2==1?`${e}$`:e,kl=(e,t,n)=>{if(e.substring(t+2).includes(`)`))return null;let r=Gc(e,t);if(r===-1||X(e,r))return null;let i=r>0&&e[r-1]===`!`,a=i?r-1:r,o=e.substring(0,a);if(i)return o;let s=e.substring(r+1,t);return n===`text-only`?`${o}${s}`:`${o}[${s}](streamdown:incomplete-link)`},Al=(e,t)=>{for(let n=0;n<t;n++)if(e[n]===`[`&&!X(e,n)){if(n>0&&e[n-1]===`!`)continue;let t=Kc(e,n);if(t===-1)return n;if(t+1<e.length&&e[t+1]===`(`){let r=e.indexOf(`)`,t+2);r!==-1&&(n=r)}}return t},jl=(e,t,n)=>{let r=t>0&&e[t-1]===`!`,i=r?t-1:t;if(!e.substring(t+1).includes(`]`)){let a=e.substring(0,i);if(r)return a;if(n===`text-only`){let n=Al(e,t);return e.substring(0,n)+e.substring(n+1)}return`${e}](streamdown:incomplete-link)`}if(Kc(e,t)===-1){let a=e.substring(0,i);if(r)return a;if(n===`text-only`){let n=Al(e,t);return e.substring(0,n)+e.substring(n+1)}return`${e}](streamdown:incomplete-link)`}return null},Ml=(e,t=`protocol`)=>{let n=e.lastIndexOf(`](`);if(n!==-1&&!X(e,n)){let r=kl(e,n,t);if(r!==null)return r}for(let n=e.length-1;n>=0;--n)if(e[n]===`[`&&!X(e,n)){let r=jl(e,n,t);if(r!==null)return r}return e},Nl=/^-{1,2}$/,Pl=/^[\s]*-{1,2}[\s]+$/,Fl=/^={1,2}$/,Il=/^[\s]*={1,2}[\s]+$/,Ll=e=>{if(!e||typeof e!=`string`)return e;let t=e.lastIndexOf(`
73
- `);if(t===-1)return e;let n=e.substring(t+1),r=e.substring(0,t),i=n.trim();if(Nl.test(i)&&!n.match(Pl)){let t=r.split(`
74
- `).at(-1);if(t&&t.trim().length>0)return`${e}\u200B`}if(Fl.test(i)&&!n.match(Il)){let t=r.split(`
75
- `).at(-1);if(t&&t.trim().length>0)return`${e}\u200B`}return e},Rl=RegExp(`(?<=[\\p{L}\\p{N}_])~(?!~)(?=[\\p{L}\\p{N}_])`,`gu`),zl=e=>!e||typeof e!=`string`||!e.includes(`~`)?e:e.replace(Rl,(t,n)=>X(e,n)?t:`\\~`),Bl=e=>{let t=e.match(Fc);if(t){let n=t[2];if(!n||Ic.test(n))return e;let r=e.lastIndexOf(t[1]);if(X(e,r)||Ec(e,r))return e;if(e.match(Uc)?.length%2==1)return`${e}~~`}else{let t=e.match(Hc);if(t){let n=e.lastIndexOf(t[0].slice(0,2));if(X(e,n)||Ec(e,n))return e;if(e.match(Uc)?.length%2==1)return`${e}~`}}return e},Vl=e=>e!==!1,Hl=e=>e===!0,Z={SINGLE_TILDE:0,COMPARISON_OPERATORS:5,HTML_TAGS:10,SETEXT_HEADINGS:15,LINKS:20,BOLD_ITALIC:30,BOLD:35,ITALIC_DOUBLE_UNDERSCORE:40,ITALIC_SINGLE_ASTERISK:41,ITALIC_SINGLE_UNDERSCORE:42,INLINE_CODE:50,STRIKETHROUGH:60,KATEX:70,INLINE_KATEX:75,DEFAULT:100},Ul=[{handler:{name:`singleTilde`,handle:zl,priority:Z.SINGLE_TILDE},optionKey:`singleTilde`},{handler:{name:`comparisonOperators`,handle:Oc,priority:Z.COMPARISON_OPERATORS},optionKey:`comparisonOperators`},{handler:{name:`htmlTags`,handle:yl,priority:Z.HTML_TAGS},optionKey:`htmlTags`},{handler:{name:`setextHeadings`,handle:Ll,priority:Z.SETEXT_HEADINGS},optionKey:`setextHeadings`},{handler:{name:`links`,handle:Ml,priority:Z.LINKS},optionKey:`links`,earlyReturn:e=>e.endsWith(`](streamdown:incomplete-link)`)},{handler:{name:`boldItalic`,handle:_l,priority:Z.BOLD_ITALIC},optionKey:`boldItalic`},{handler:{name:`bold`,handle:ol,priority:Z.BOLD},optionKey:`bold`},{handler:{name:`italicDoubleUnderscore`,handle:cl,priority:Z.ITALIC_DOUBLE_UNDERSCORE},optionKey:`italic`},{handler:{name:`italicSingleAsterisk`,handle:ul,priority:Z.ITALIC_SINGLE_ASTERISK},optionKey:`italic`},{handler:{name:`italicSingleUnderscore`,handle:ml,priority:Z.ITALIC_SINGLE_UNDERSCORE},optionKey:`italic`},{handler:{name:`inlineCode`,handle:Sl,priority:Z.INLINE_CODE},optionKey:`inlineCode`},{handler:{name:`strikethrough`,handle:Bl,priority:Z.STRIKETHROUGH},optionKey:`strikethrough`},{handler:{name:`katex`,handle:Dl,priority:Z.KATEX},optionKey:`katex`},{handler:{name:`inlineKatex`,handle:Ol,priority:Z.INLINE_KATEX},optionKey:`inlineKatex`}],Wl=e=>{let t=e?.linkMode??`protocol`;return Ul.filter(({handler:t,optionKey:n})=>t.name===`links`?Vl(e?.links)||Vl(e?.images):t.name===`inlineKatex`?Hl(e?.inlineKatex):Vl(e?.[n])).map(({handler:e,earlyReturn:n})=>e.name===`links`?{handler:Cc(Sc({},e),{handle:e=>Ml(e,t)}),earlyReturn:t===`protocol`?n:void 0}:{handler:e,earlyReturn:n})},Gl=(e,t)=>{if(!e||typeof e!=`string`)return e;let n=e.endsWith(` `)&&!e.endsWith(` `)?e.slice(0,-1):e,r=Wl(t),i=(t?.handlers??[]).map(e=>({handler:Cc(Sc({},e),{priority:e.priority??Z.DEFAULT}),earlyReturn:void 0})),a=[...r,...i].sort((e,t)=>(e.handler.priority??0)-(t.handler.priority??0));for(let{handler:e,earlyReturn:t}of a)if(n=e.handle(n),t!=null&&t(n))return n;return n},Kl=`__cb:`,ql=`chat:callback:`,Jl=720*60*60*1e3;function Yl(e){return`${Kl}${e}`}function Xl(e){return e?.startsWith(Kl)?{callbackToken:e.slice(Kl.length)}:{callbackToken:void 0}}function Zl(){return crypto.randomUUID().replace(/-/g,``).slice(0,16)}async function Ql(e,t){return{type:`actions`,children:await Promise.all(e.children.map(async e=>{if(e.type!==`button`||!e.callbackUrl)return e;let n=Zl(),r={url:e.callbackUrl,originalValue:e.value};return await t.set(`${ql}${n}`,r,Jl),{type:`button`,id:e.id,label:e.label,style:e.style,disabled:e.disabled,value:Yl(n),actionType:e.actionType}}))}}function $l(e){for(let t of e){if(t.type===`actions`){for(let e of t.children)if(e.type===`button`&&e.callbackUrl)return!0}if(t.type===`section`&&`children`in t&&$l(t.children))return!0}return!1}async function eu(e,t){let n=[];for(let r of e)r.type===`actions`?n.push(await Ql(r,t)):r.type===`section`&&`children`in r?n.push({...r,children:await eu(r.children,t)}):n.push(r);return n}async function tu(e,t){return $l(e.children)?{...e,children:await eu(e.children,t)}:e}async function nu(e,t){let n=await t.get(`${ql}${e}`);return n?typeof n==`string`?{url:n}:n:null}async function ru(e,t){try{let n=await fetch(e,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});return n.ok?{status:n.status}:{error:Error(`Callback URL returned ${n.status}: ${await n.text().catch(()=>``)}`),status:n.status}}catch(e){return{error:e}}}var iu=null;function au(e){iu=e}function ou(){if(!iu)throw Error(`No Chat singleton registered. Call chat.registerSingleton() first.`);return iu}function su(){return iu!==null}var cu=new Set([`markdown_text`,`task_update`,`plan_update`]);async function*lu(e){let t=!1,n=!1;for await(let r of e){if(typeof r==`string`){yield r;continue}if(typeof r!=`object`||!r||!(`type`in r))continue;let e=r;if(cu.has(e.type)){yield r;continue}let i=e.text??e.delta??e.textDelta;e.type===`text-delta`&&typeof i==`string`?(t&&n&&(yield`
79
+ $$`:`${e}$$`},Ml=e=>kl(e)%2==0?e:jl(e),Nl=e=>Al(e)%2==1?`${e}$`:e,Pl=(e,t,n)=>{if(e.substring(t+2).includes(`)`))return null;let r=Xc(e,t);if(r===-1||Y(e,r))return null;let i=r>0&&e[r-1]===`!`,a=i?r-1:r,o=e.substring(0,a);if(i)return o;let s=e.substring(r+1,t);return n===`text-only`?`${o}${s}`:`${o}[${s}](streamdown:incomplete-link)`},Fl=(e,t)=>{for(let n=0;n<t;n++)if(e[n]===`[`&&!Y(e,n)){if(n>0&&e[n-1]===`!`)continue;let t=Zc(e,n);if(t===-1)return n;if(t+1<e.length&&e[t+1]===`(`){let r=e.indexOf(`)`,t+2);r!==-1&&(n=r)}}return t},Il=(e,t,n)=>{let r=t>0&&e[t-1]===`!`,i=r?t-1:t;if(!e.substring(t+1).includes(`]`)){let a=e.substring(0,i);if(r)return a;if(n===`text-only`){let n=Fl(e,t);return e.substring(0,n)+e.substring(n+1)}return`${e}](streamdown:incomplete-link)`}if(Zc(e,t)===-1){let a=e.substring(0,i);if(r)return a;if(n===`text-only`){let n=Fl(e,t);return e.substring(0,n)+e.substring(n+1)}return`${e}](streamdown:incomplete-link)`}return null},Ll=(e,t=`protocol`)=>{let n=e.lastIndexOf(`](`);if(n!==-1&&!Y(e,n)){let r=Pl(e,n,t);if(r!==null)return r}for(let n=e.length-1;n>=0;--n)if(e[n]===`[`&&!Y(e,n)){let r=Il(e,n,t);if(r!==null)return r}return e},Rl=/^-{1,2}$/,zl=/^[\s]*-{1,2}[\s]+$/,Bl=/^={1,2}$/,Vl=/^[\s]*={1,2}[\s]+$/,Hl=e=>{if(!e||typeof e!=`string`)return e;let t=e.lastIndexOf(`
80
+ `);if(t===-1)return e;let n=e.substring(t+1),r=e.substring(0,t),i=n.trim();if(Rl.test(i)&&!n.match(zl)){let t=r.split(`
81
+ `).at(-1);if(t&&t.trim().length>0)return`${e}\u200B`}if(Bl.test(i)&&!n.match(Vl)){let t=r.split(`
82
+ `).at(-1);if(t&&t.trim().length>0)return`${e}\u200B`}return e},Ul=RegExp(`(?<=[\\p{L}\\p{N}_])~(?!~)(?=[\\p{L}\\p{N}_])`,`gu`),Wl=e=>!e||typeof e!=`string`||!e.includes(`~`)?e:e.replace(Ul,(t,n)=>Y(e,n)?t:`\\~`),Gl=e=>{let t=e.match(Bc);if(t){let n=t[2];if(!n||Vc.test(n))return e;let r=e.lastIndexOf(t[1]);if(Y(e,r)||X(e,r))return e;if(e.match(Jc)?.length%2==1)return`${e}~~`}else{let t=e.match(qc);if(t){let n=e.lastIndexOf(t[0].slice(0,2));if(Y(e,n)||X(e,n))return e;if(e.match(Jc)?.length%2==1)return`${e}~`}}return e},Kl=e=>e!==!1,ql=e=>e===!0,Z={SINGLE_TILDE:0,COMPARISON_OPERATORS:5,HTML_TAGS:10,SETEXT_HEADINGS:15,LINKS:20,BOLD_ITALIC:30,BOLD:35,ITALIC_DOUBLE_UNDERSCORE:40,ITALIC_SINGLE_ASTERISK:41,ITALIC_SINGLE_UNDERSCORE:42,INLINE_CODE:50,STRIKETHROUGH:60,KATEX:70,INLINE_KATEX:75,DEFAULT:100},Jl=[{handler:{name:`singleTilde`,handle:Wl,priority:Z.SINGLE_TILDE},optionKey:`singleTilde`},{handler:{name:`comparisonOperators`,handle:Nc,priority:Z.COMPARISON_OPERATORS},optionKey:`comparisonOperators`},{handler:{name:`htmlTags`,handle:wl,priority:Z.HTML_TAGS},optionKey:`htmlTags`},{handler:{name:`setextHeadings`,handle:Hl,priority:Z.SETEXT_HEADINGS},optionKey:`setextHeadings`},{handler:{name:`links`,handle:Ll,priority:Z.LINKS},optionKey:`links`,earlyReturn:e=>e.endsWith(`](streamdown:incomplete-link)`)},{handler:{name:`boldItalic`,handle:Sl,priority:Z.BOLD_ITALIC},optionKey:`boldItalic`},{handler:{name:`bold`,handle:dl,priority:Z.BOLD},optionKey:`bold`},{handler:{name:`italicDoubleUnderscore`,handle:pl,priority:Z.ITALIC_DOUBLE_UNDERSCORE},optionKey:`italic`},{handler:{name:`italicSingleAsterisk`,handle:hl,priority:Z.ITALIC_SINGLE_ASTERISK},optionKey:`italic`},{handler:{name:`italicSingleUnderscore`,handle:yl,priority:Z.ITALIC_SINGLE_UNDERSCORE},optionKey:`italic`},{handler:{name:`inlineCode`,handle:Dl,priority:Z.INLINE_CODE},optionKey:`inlineCode`},{handler:{name:`strikethrough`,handle:Gl,priority:Z.STRIKETHROUGH},optionKey:`strikethrough`},{handler:{name:`katex`,handle:Ml,priority:Z.KATEX},optionKey:`katex`},{handler:{name:`inlineKatex`,handle:Nl,priority:Z.INLINE_KATEX},optionKey:`inlineKatex`}],Yl=e=>{let t=e?.linkMode??`protocol`;return Jl.filter(({handler:t,optionKey:n})=>t.name===`links`?Kl(e?.links)||Kl(e?.images):t.name===`inlineKatex`?ql(e?.inlineKatex):Kl(e?.[n])).map(({handler:e,earlyReturn:n})=>e.name===`links`?{handler:kc(Oc({},e),{handle:e=>Ll(e,t)}),earlyReturn:t===`protocol`?n:void 0}:{handler:e,earlyReturn:n})},Xl=(e,t)=>{if(!e||typeof e!=`string`)return e;let n=e.endsWith(` `)&&!e.endsWith(` `)?e.slice(0,-1):e,r=Yl(t),i=(t?.handlers??[]).map(e=>({handler:kc(Oc({},e),{priority:e.priority??Z.DEFAULT}),earlyReturn:void 0})),a=[...r,...i].sort((e,t)=>(e.handler.priority??0)-(t.handler.priority??0));for(let{handler:e,earlyReturn:t}of a)if(n=e.handle(n),t!=null&&t(n))return n;return n},Zl=`__cb:`,Ql=`chat:callback:`,$l=720*60*60*1e3;function eu(e){return`${Zl}${e}`}function tu(e){return e?.startsWith(Zl)?{callbackToken:e.slice(Zl.length)}:{callbackToken:void 0}}function nu(){return crypto.randomUUID().replace(/-/g,``).slice(0,16)}async function ru(e,t){return{type:`actions`,children:await Promise.all(e.children.map(async e=>{if(e.type!==`button`||!e.callbackUrl)return e;let n=nu(),r={url:e.callbackUrl,originalValue:e.value};return await t.set(`${Ql}${n}`,r,$l),{type:`button`,id:e.id,label:e.label,style:e.style,disabled:e.disabled,value:eu(n),actionType:e.actionType}}))}}function iu(e){for(let t of e){if(t.type===`actions`){for(let e of t.children)if(e.type===`button`&&e.callbackUrl)return!0}if(t.type===`section`&&`children`in t&&iu(t.children))return!0}return!1}async function au(e,t){let n=[];for(let r of e)r.type===`actions`?n.push(await ru(r,t)):r.type===`section`&&`children`in r?n.push({...r,children:await au(r.children,t)}):n.push(r);return n}async function ou(e,t){return iu(e.children)?{...e,children:await au(e.children,t)}:e}async function su(e,t){let n=await t.get(`${Ql}${e}`);return n?typeof n==`string`?{url:n}:n:null}async function cu(e,t){try{let n=await fetch(e,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});return n.ok?{status:n.status}:{error:Error(`Callback URL returned ${n.status}: ${await n.text().catch(()=>``)}`),status:n.status}}catch(e){return{error:e}}}var lu=null;function uu(e){lu=e}function du(){if(!lu)throw Error(`No Chat singleton registered. Call chat.registerSingleton() first.`);return lu}function fu(){return lu!==null}var pu=new Set([`markdown_text`,`task_update`,`plan_update`]);async function*mu(e){let t=!1,n=!1;for await(let r of e){if(typeof r==`string`){yield r;continue}if(typeof r!=`object`||!r||!(`type`in r))continue;let e=r;if(pu.has(e.type)){yield r;continue}let i=e.text??e.delta??e.textDelta;e.type===`text-delta`&&typeof i==`string`?(t&&n&&(yield`
76
83
 
77
- `),t=!1,n=!0,yield i):e.type===`finish-step`&&(t=!0)}}var uu=new WeakMap;function du(e,t){uu.set(e,t)}var Q=class e{id;threadId;text;formatted;raw;author;metadata;attachments;isMention;userKey;links;_subjectPromise;get subject(){if(this._subjectPromise)return this._subjectPromise;let e=uu.get(this);return e?.fetchSubject?(this._subjectPromise=e.fetchSubject(this.raw).catch(()=>null),this._subjectPromise):(this._subjectPromise=Promise.resolve(null),this._subjectPromise)}constructor(e){this.id=e.id,this.threadId=e.threadId,this.text=e.text,this.formatted=e.formatted,this.raw=e.raw,this.author=e.author,this.metadata=e.metadata,this.attachments=e.attachments,this.isMention=e.isMention,this.links=e.links??[]}toJSON(){return{_type:`chat:Message`,id:this.id,threadId:this.threadId,text:this.text,formatted:this.formatted,raw:this.raw,author:{userId:this.author.userId,userName:this.author.userName,fullName:this.author.fullName,isBot:this.author.isBot,isMe:this.author.isMe},metadata:{dateSent:this.metadata.dateSent.toISOString(),edited:this.metadata.edited,editedAt:this.metadata.editedAt?.toISOString()},attachments:this.attachments.map(e=>({type:e.type,url:e.url,name:e.name,mimeType:e.mimeType,size:e.size,width:e.width,height:e.height,fetchMetadata:e.fetchMetadata})),isMention:this.isMention,links:this.links.length>0?this.links.map(e=>({url:e.url,title:e.title,description:e.description,imageUrl:e.imageUrl,siteName:e.siteName})):void 0}}static fromJSON(t){return new e({id:t.id,threadId:t.threadId,text:t.text,formatted:t.formatted,raw:t.raw,author:t.author,metadata:{dateSent:new Date(t.metadata.dateSent),edited:t.metadata.edited,editedAt:t.metadata.editedAt?new Date(t.metadata.editedAt):void 0},attachments:t.attachments,isMention:t.isMention,links:t.links})}static[r](e){return e.toJSON()}static[i](t){return e.fromJSON(t)}},fu=Symbol.for(`chat.postable`);function pu(e){return typeof e==`object`&&!!e&&e.$$typeof===fu}async function mu(e,t,n,r,i){let a=e=>({adapter:t,logger:i,messageId:e.id,threadId:e.threadId??n});if(e.isSupported(t)&&t.postObject){let r=await t.postObject(n,e.kind,e.getPostData());e.onPosted(a(r))}else{let t=await r(n,e.getFallbackText());e.onPosted(a(t))}}var $=class extends Error{code;cause;constructor(e,t,n){super(e),this.name=`ChatError`,this.code=t,this.cause=n}},hu=class extends ${retryAfterMs;constructor(e,t,n){super(e,`RATE_LIMITED`,n),this.name=`RateLimitError`,this.retryAfterMs=t}},gu=class extends ${constructor(e,t){super(e,`LOCK_FAILED`,t),this.name=`LockError`}},_u=class extends ${feature;constructor(e,t,n){super(e,`NOT_IMPLEMENTED`,n),this.name=`NotImplementedError`,this.feature=t}},vu=class e{prefix;level;constructor(e=`info`,t=`chat-sdk`){this.level=e,this.prefix=t}shouldLog(e){let t=[`debug`,`info`,`warn`,`error`,`silent`];return t.indexOf(e)>=t.indexOf(this.level)}child(t){return new e(this.level,`${this.prefix}:${t}`)}debug(e,...t){this.shouldLog(`debug`)&&console.debug(`[${this.prefix}] ${e}`,...t)}info(e,...t){this.shouldLog(`info`)&&console.info(`[${this.prefix}] ${e}`,...t)}warn(e,...t){this.shouldLog(`warn`)&&console.warn(`[${this.prefix}] ${e}`,...t)}error(e,...t){this.shouldLog(`error`)&&console.error(`[${this.prefix}] ${e}`,...t)}},yu=720*60*60*1e3,bu=`channel-state:`;function xu(e){return`adapterName`in e&&!(`adapter`in e)}function Su(e){return typeof e==`object`&&!!e&&Symbol.asyncIterator in e}var Cu=class e{id;isDM;channelVisibility;_adapter;_adapterName;_stateAdapterInstance;_name=null;_threadHistory;constructor(e){this.id=e.id,this.isDM=e.isDM??!1,this.channelVisibility=e.channelVisibility??`unknown`,xu(e)?this._adapterName=e.adapterName:(this._adapter=e.adapter,this._stateAdapterInstance=e.stateAdapter,this._threadHistory=e.threadHistory)}get adapter(){if(this._adapter)return this._adapter;if(!this._adapterName)throw Error(`Channel 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 name(){return this._name}get state(){return this._stateAdapter.get(`${bu}${this.id}`)}async setState(e,t){let n=`${bu}${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 messages(){let e=this.adapter,t=this.id,n=this._threadHistory;return{async*[Symbol.asyncIterator](){let r,i=!1;for(;;){let n={cursor:r,direction:`backward`},a=e.fetchChannelMessages?await e.fetchChannelMessages(t,n):await e.fetchMessages(t,n),o=[...a.messages].reverse();for(let e of o)i=!0,yield e;if(!a.nextCursor||a.messages.length===0)break;r=a.nextCursor}if(!i&&n){let e=await n.getMessages(t);for(let t=e.length-1;t>=0;t--)yield e[t]}}}}threads(){let e=this.adapter,t=this.id;return{async*[Symbol.asyncIterator](){if(!e.listThreads)return;let n;for(;;){let r=await e.listThreads(t,{cursor:n});for(let e of r.threads)yield e;if(!r.nextCursor||r.threads.length===0)break;n=r.nextCursor}}}}async fetchMetadata(){if(this.adapter.fetchChannelInfo){let e=await this.adapter.fetchChannelInfo(this.id);return this._name=e.name??null,e}return{id:this.id,isDM:this.isDM,metadata:{}}}async post(e){if(pu(e))return await this.handlePostableObject(e),e;if(Su(e)){let t=``;for await(let n of lu(e))typeof n==`string`?t+=n:n.type===`markdown_text`&&(t+=n.text);return this.postSingleMessage({markdown:t})}let t=e;if(Y(e)){let n=J(e);if(!n)throw Error(`Invalid JSX element: must be a Card element`);t=n}return t=await this.processCallbackUrls(t),this.postSingleMessage(t)}async handlePostableObject(e){await mu(e,this.adapter,this.id,(e,t)=>this.adapter.postChannelMessage?this.adapter.postChannelMessage(e,t):this.adapter.postMessage(e,t))}async postSingleMessage(e){let t=this.adapter.postChannelMessage?await this.adapter.postChannelMessage(this.id,e):await this.adapter.postMessage(this.id,e),n=this.createSentMessage(t.id,e,t.threadId);return this._threadHistory&&await this._threadHistory.append(this.id,new Q(n)),n}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 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 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 startTyping(e){await this.adapter.startTyping(this.id,e)}mentionUser(e){return`<@${e}>`}toJSON(){return{_type:`chat:Channel`,id:this.id,adapterName:this._adapterName??this.adapter.name,channelVisibility:this.channelVisibility,isDM:this.isDM}}static fromJSON(t,n){let r=new e({id:t.id,adapterName:t.adapterName,channelVisibility:t.channelVisibility,isDM:t.isDM});return n&&(r._adapter=n),r}static[r](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}=Tu(t);return{id:e,threadId:i,text:o,formatted:s,raw:null,author:{userId:`self`,userName:r.userName,fullName:r.userName,isBot:!0,isMe:!0},metadata:{dateSent:new Date,edited:!1},attachments:c,links:[],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)}}}};function wu(e,t){return e.channelIdFromThreadId(t)}function Tu(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`)}var Eu=class{accumulated=``;dirty=!0;cachedRender=``;finished=!1;fenceToggles=0;incompleteLine=``;options;constructor(e={}){this.options={wrapTablesForAppend:e.wrapTablesForAppend??!0}}push(e){this.accumulated+=e,this.dirty=!0,this.incompleteLine+=e;let t=this.incompleteLine.split(`
78
- `);this.incompleteLine=t.pop()??``;for(let e of t){let t=e.trimStart();(t.startsWith("```")||t.startsWith(`~~~`))&&this.fenceToggles++}}isAccumulatedInsideFence(){let e=this.fenceToggles%2==1,t=this.incompleteLine.trimStart();return(t.startsWith("```")||t.startsWith(`~~~`))&&(e=!e),e}render(){if(!this.dirty)return this.cachedRender;if(this.dirty=!1,this.finished||this.isAccumulatedInsideFence())return this.cachedRender=Gl(this.accumulated),this.cachedRender;let e=Nu(this.accumulated);return this.cachedRender=Gl(e),this.cachedRender}getCommittableText(){if(this.finished)return this.formatAppendOnlyText(this.accumulated,!0);let e=this.accumulated;if(e.length>0&&!e.endsWith(`
84
+ `),t=!1,n=!0,yield i):e.type===`finish-step`&&(t=!0)}}var hu=new WeakMap;function gu(e,t){hu.set(e,t)}var Q=class e{id;threadId;text;formatted;raw;author;metadata;attachments;isMention;userKey;links;_subjectPromise;get subject(){if(this._subjectPromise)return this._subjectPromise;let e=hu.get(this);return e?.fetchSubject?(this._subjectPromise=e.fetchSubject(this.raw).catch(()=>null),this._subjectPromise):(this._subjectPromise=Promise.resolve(null),this._subjectPromise)}constructor(e){this.id=e.id,this.threadId=e.threadId,this.text=e.text,this.formatted=e.formatted,this.raw=e.raw,this.author=e.author,this.metadata=e.metadata,this.attachments=e.attachments,this.isMention=e.isMention,this.links=e.links??[]}toJSON(){return{_type:`chat:Message`,id:this.id,threadId:this.threadId,text:this.text,formatted:this.formatted,raw:this.raw,author:{userId:this.author.userId,userName:this.author.userName,fullName:this.author.fullName,isBot:this.author.isBot,isMe:this.author.isMe},metadata:{dateSent:this.metadata.dateSent.toISOString(),edited:this.metadata.edited,editedAt:this.metadata.editedAt?.toISOString()},attachments:this.attachments.map(e=>({type:e.type,url:e.url,name:e.name,mimeType:e.mimeType,size:e.size,width:e.width,height:e.height,fetchMetadata:e.fetchMetadata})),isMention:this.isMention,links:this.links.length>0?this.links.map(e=>({url:e.url,title:e.title,description:e.description,imageUrl:e.imageUrl,siteName:e.siteName})):void 0}}static fromJSON(t){return new e({id:t.id,threadId:t.threadId,text:t.text,formatted:t.formatted,raw:t.raw,author:t.author,metadata:{dateSent:new Date(t.metadata.dateSent),edited:t.metadata.edited,editedAt:t.metadata.editedAt?new Date(t.metadata.editedAt):void 0},attachments:t.attachments,isMention:t.isMention,links:t.links})}static[r](e){return e.toJSON()}static[i](t){return e.fromJSON(t)}},_u=Symbol.for(`chat.postable`);function vu(e){return typeof e==`object`&&!!e&&e.$$typeof===_u}async function yu(e,t,n,r,i){let a=e=>({adapter:t,logger:i,messageId:e.id,threadId:e.threadId??n});if(e.isSupported(t)&&t.postObject){let r=await t.postObject(n,e.kind,e.getPostData());e.onPosted(a(r))}else{let t=await r(n,e.getFallbackText());e.onPosted(a(t))}}var $=class extends Error{code;cause;constructor(e,t,n){super(e),this.name=`ChatError`,this.code=t,this.cause=n}},bu=class extends ${retryAfterMs;constructor(e,t,n){super(e,`RATE_LIMITED`,n),this.name=`RateLimitError`,this.retryAfterMs=t}},xu=class extends ${constructor(e,t){super(e,`LOCK_FAILED`,t),this.name=`LockError`}},Su=class extends ${feature;constructor(e,t,n){super(e,`NOT_IMPLEMENTED`,n),this.name=`NotImplementedError`,this.feature=t}},Cu=class e{prefix;level;constructor(e=`info`,t=`chat-sdk`){this.level=e,this.prefix=t}shouldLog(e){let t=[`debug`,`info`,`warn`,`error`,`silent`];return t.indexOf(e)>=t.indexOf(this.level)}child(t){return new e(this.level,`${this.prefix}:${t}`)}debug(e,...t){this.shouldLog(`debug`)&&console.debug(`[${this.prefix}] ${e}`,...t)}info(e,...t){this.shouldLog(`info`)&&console.info(`[${this.prefix}] ${e}`,...t)}warn(e,...t){this.shouldLog(`warn`)&&console.warn(`[${this.prefix}] ${e}`,...t)}error(e,...t){this.shouldLog(`error`)&&console.error(`[${this.prefix}] ${e}`,...t)}},wu=720*60*60*1e3,Tu=`channel-state:`;function Eu(e){return`adapterName`in e&&!(`adapter`in e)}function Du(e){return typeof e==`object`&&!!e&&Symbol.asyncIterator in e}var Ou=class e{id;isDM;channelVisibility;_adapter;_adapterName;_stateAdapterInstance;_name=null;_threadHistory;constructor(e){this.id=e.id,this.isDM=e.isDM??!1,this.channelVisibility=e.channelVisibility??`unknown`,Eu(e)?this._adapterName=e.adapterName:(this._adapter=e.adapter,this._stateAdapterInstance=e.stateAdapter,this._threadHistory=e.threadHistory)}get adapter(){if(this._adapter)return this._adapter;if(!this._adapterName)throw Error(`Channel has no adapter configured`);let e=du().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=du();return this._stateAdapterInstance=e.getState(),this._stateAdapterInstance}get name(){return this._name}get state(){return this._stateAdapter.get(`${Tu}${this.id}`)}async setState(e,t){let n=`${Tu}${this.id}`;if(t?.replace)await this._stateAdapter.set(n,e,wu);else{let t={...await this._stateAdapter.get(n),...e};await this._stateAdapter.set(n,t,wu)}}get messages(){let e=this.adapter,t=this.id,n=this._threadHistory;return{async*[Symbol.asyncIterator](){let r,i=!1;for(;;){let n={cursor:r,direction:`backward`},a=e.fetchChannelMessages?await e.fetchChannelMessages(t,n):await e.fetchMessages(t,n),o=[...a.messages].reverse();for(let e of o)i=!0,yield e;if(!a.nextCursor||a.messages.length===0)break;r=a.nextCursor}if(!i&&n){let e=await n.getMessages(t);for(let t=e.length-1;t>=0;t--)yield e[t]}}}}threads(){let e=this.adapter,t=this.id;return{async*[Symbol.asyncIterator](){if(!e.listThreads)return;let n;for(;;){let r=await e.listThreads(t,{cursor:n});for(let e of r.threads)yield e;if(!r.nextCursor||r.threads.length===0)break;n=r.nextCursor}}}}async fetchMetadata(){if(this.adapter.fetchChannelInfo){let e=await this.adapter.fetchChannelInfo(this.id);return this._name=e.name??null,e}return{id:this.id,isDM:this.isDM,metadata:{}}}async post(e){if(vu(e))return await this.handlePostableObject(e),e;if(Du(e)){let t=``;for await(let n of mu(e))typeof n==`string`?t+=n:n.type===`markdown_text`&&(t+=n.text);return this.postSingleMessage({markdown:t})}let t=e;if(J(e)){let n=q(e);if(!n)throw Error(`Invalid JSX element: must be a Card element`);t=n}return t=await this.processCallbackUrls(t),this.postSingleMessage(t)}async handlePostableObject(e){await yu(e,this.adapter,this.id,(e,t)=>this.adapter.postChannelMessage?this.adapter.postChannelMessage(e,t):this.adapter.postMessage(e,t))}async postSingleMessage(e){let t=this.adapter.postChannelMessage?await this.adapter.postChannelMessage(this.id,e):await this.adapter.postMessage(this.id,e),n=this.createSentMessage(t.id,e,t.threadId);return this._threadHistory&&await this._threadHistory.append(this.id,new Q(n)),n}async postEphemeral(e,t,n){let{fallbackToDM:r}=n,i=typeof e==`string`?e:e.userId,a;if(J(t)){let e=q(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 schedule(e,t){let n;if(J(e)){let t=q(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 Su(`Scheduled messages are not supported by this adapter`,`scheduling`);return this.adapter.scheduleMessage(this.id,n,t)}async processCallbackUrls(e){if(typeof e==`string`)return e;if(`type`in e&&e.type===`card`)return ou(e,this._stateAdapter);if(`card`in e&&e.card?.type===`card`){let t=await ou(e.card,this._stateAdapter);if(t!==e.card)return{...e,card:t}}return e}async startTyping(e){await this.adapter.startTyping(this.id,e)}mentionUser(e){return`<@${e}>`}toJSON(){return{_type:`chat:Channel`,id:this.id,adapterName:this._adapterName??this.adapter.name,channelVisibility:this.channelVisibility,isDM:this.isDM}}static fromJSON(t,n){let r=new e({id:t.id,adapterName:t.adapterName,channelVisibility:t.channelVisibility,isDM:t.isDM});return n&&(r._adapter=n),r}static[r](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}=Au(t);return{id:e,threadId:i,text:o,formatted:s,raw:null,author:{userId:`self`,userName:r.userName,fullName:r.userName,isBot:!0,isMe:!0},metadata:{dateSent:new Date,edited:!1},attachments:c,links:[],toJSON(){return new Q(this).toJSON()},async edit(t){let n=t;if(J(t)){let e=q(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)}}}};function ku(e,t){return e.channelIdFromThreadId(t)}function Au(e){if(typeof e==`string`)return{plainText:e,formatted:K([G([W(e)])]),attachments:[]};if(`raw`in e)return{plainText:e.raw,formatted:K([G([W(e.raw)])]),attachments:e.attachments||[]};if(`markdown`in e){let t=is(e.markdown);return{plainText:U(t),formatted:t,attachments:e.attachments||[]}}if(`ast`in e)return{plainText:U(e.ast),formatted:e.ast,attachments:e.attachments||[]};if(`card`in e){let t=e.fallbackText||zs(e.card);return{plainText:t,formatted:K([G([W(t)])]),attachments:[]}}if(`type`in e&&e.type===`card`){let t=zs(e);return{plainText:t,formatted:K([G([W(t)])]),attachments:[]}}throw Error(`Invalid PostableMessage format`)}var ju=class{accumulated=``;dirty=!0;cachedRender=``;finished=!1;fenceToggles=0;incompleteLine=``;options;constructor(e={}){this.options={wrapTablesForAppend:e.wrapTablesForAppend??!0}}push(e){this.accumulated+=e,this.dirty=!0,this.incompleteLine+=e;let t=this.incompleteLine.split(`
85
+ `);this.incompleteLine=t.pop()??``;for(let e of t){let t=e.trimStart();(t.startsWith("```")||t.startsWith(`~~~`))&&this.fenceToggles++}}isAccumulatedInsideFence(){let e=this.fenceToggles%2==1,t=this.incompleteLine.trimStart();return(t.startsWith("```")||t.startsWith(`~~~`))&&(e=!e),e}render(){if(!this.dirty)return this.cachedRender;if(this.dirty=!1,this.finished||this.isAccumulatedInsideFence())return this.cachedRender=Xl(this.accumulated),this.cachedRender;let e=Ru(this.accumulated);return this.cachedRender=Xl(e),this.cachedRender}getCommittableText(){if(this.finished)return this.formatAppendOnlyText(this.accumulated,!0);let e=this.accumulated;if(e.length>0&&!e.endsWith(`
79
86
  `)){let t=e.lastIndexOf(`
80
- `),n=t>=0?e.slice(0,t+1):``;if(Mu(n))return this.formatAppendOnlyText(e);e=n}if(Mu(e))return this.formatAppendOnlyText(e);let t=Nu(e),n=this.formatAppendOnlyText(t);return Mu(n)?n:ku(n)}getText(){return this.accumulated}finish(){return this.finished=!0,this.dirty=!0,this.render()}formatAppendOnlyText(e,t=!1){return this.options.wrapTablesForAppend?Pu(e,t):e}},Du=new Set([`*`,`~`,"`",`[`]);function Ou(e){return Gl(e).length<=e.length}function ku(e){if(e.length===0||Ou(e))return e;for(let t=e.length-1;t>=0;t--)if(Du.has(e[t])){for(;t>0&&e[t-1]===e[t];)t--;let n=e.slice(0,t);if(Ou(n))return n}return``}var Au=/^\|.*\|$/,ju=/^\|[\s:]*-{1,}[\s:]*(\|[\s:]*-{1,}[\s:]*)*\|$/;function Mu(e){let t=!1;for(let n of e.split(`
81
- `)){let e=n.trimStart();(e.startsWith("```")||e.startsWith(`~~~`))&&(t=!t)}return t}function Nu(e){let t=e.endsWith(`
87
+ `),n=t>=0?e.slice(0,t+1):``;if(Lu(n))return this.formatAppendOnlyText(e);e=n}if(Lu(e))return this.formatAppendOnlyText(e);let t=Ru(e),n=this.formatAppendOnlyText(t);return Lu(n)?n:Pu(n)}getText(){return this.accumulated}finish(){return this.finished=!0,this.dirty=!0,this.render()}formatAppendOnlyText(e,t=!1){return this.options.wrapTablesForAppend?zu(e,t):e}},Mu=new Set([`*`,`~`,"`",`[`]);function Nu(e){return Xl(e).length<=e.length}function Pu(e){if(e.length===0||Nu(e))return e;for(let t=e.length-1;t>=0;t--)if(Mu.has(e[t])){for(;t>0&&e[t-1]===e[t];)t--;let n=e.slice(0,t);if(Nu(n))return n}return``}var Fu=/^\|.*\|$/,Iu=/^\|[\s:]*-{1,}[\s:]*(\|[\s:]*-{1,}[\s:]*)*\|$/;function Lu(e){let t=!1;for(let n of e.split(`
88
+ `)){let e=n.trimStart();(e.startsWith("```")||e.startsWith(`~~~`))&&(t=!t)}return t}function Ru(e){let t=e.endsWith(`
82
89
  `),n=e.split(`
83
- `);!t&&n.length>0&&n.pop(),t&&n.length>0&&n.at(-1)===``&&n.pop();let r=0,i=!1;for(let e=n.length-1;e>=0;e--){let t=n[e].trim();if(t===``)break;if(ju.test(t)){i=!0;break}if(Au.test(t))r++;else break}if(i||r===0)return e;let a=n.length-r,o=n.slice(0,a),s=o.join(`
90
+ `);!t&&n.length>0&&n.pop(),t&&n.length>0&&n.at(-1)===``&&n.pop();let r=0,i=!1;for(let e=n.length-1;e>=0;e--){let t=n[e].trim();if(t===``)break;if(Iu.test(t)){i=!0;break}if(Fu.test(t))r++;else break}if(i||r===0)return e;let a=n.length-r,o=n.slice(0,a),s=o.join(`
84
91
  `);return o.length>0&&(s+=`
85
- `),s}function Pu(e,t=!1){let n=e.endsWith(`
92
+ `),s}function zu(e,t=!1){let n=e.endsWith(`
86
93
  `),r=e.split(`
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(`
94
+ `);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!==``&&(Fu.test(t)||Iu.test(t));if(n&&!a){let t=!1;for(let n=e;n<r.length;n++){let e=r[n].trim();if(Iu.test(e)){t=!0;break}if(e===``||!Fu.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
95
  `);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={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[r](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
- `)}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};
96
+ `),s}function Bu(e){return`adapterName`in e&&!(`adapter`in e)}var Vu=`thread-state:`;function Hu(e){return typeof e==`object`&&!!e&&Symbol.asyncIterator in e}var Uu=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,Bu(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=du().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=du();return this._stateAdapterInstance=e.getState(),this._stateAdapterInstance}get recentMessages(){return this._recentMessages}set recentMessages(e){this._recentMessages=e}get state(){return this._stateAdapter.get(`${Vu}${this.id}`)}async setState(e,t){let n=`${Vu}${this.id}`;if(t?.replace)await this._stateAdapter.set(n,e,wu);else{let t={...await this._stateAdapter.get(n),...e};await this._stateAdapter.set(n,t,wu)}}get channel(){if(!this._channel){let e=ku(this.adapter,this.id);this._channel=new Ou({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(vu(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(Hu(e))return this.handleStream(e);let t=e;if(J(e)){let n=q(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 yu(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(J(t)){let e=q(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 ou(e,this._stateAdapter);if(`card`in e&&e.card?.type===`card`){let t=await ou(e.card,this._stateAdapter);if(t!==e.card)return{...e,card:t}}return e}async schedule(e,t){let n;if(J(e)){let t=q(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 Su(`Scheduled messages are not supported by this adapter`,`scheduling`);return this.adapter.scheduleMessage(this.id,n,t)}async handleStream(e,t){let n=mu(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 ju,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[r](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}=Wu(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(J(t)){let e=q(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(J(e)){let t=q(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 Wu(e){if(typeof e==`string`)return{plainText:e,formatted:K([G([W(e)])]),attachments:[]};if(`raw`in e)return{plainText:e.raw,formatted:K([G([W(e.raw)])]),attachments:e.attachments||[]};if(`markdown`in e){let t=is(e.markdown);return{plainText:U(t),formatted:t,attachments:e.attachments||[]}}if(`ast`in e)return{plainText:U(e.ast),formatted:e.ast,attachments:e.attachments||[]};if(`card`in e){let t=e.fallbackText||zs(e.card);return{plainText:t,formatted:K([G([W(t)])]),attachments:[]}}if(`type`in e&&e.type===`card`){let t=zs(e);return{plainText:t,formatted:K([G([W(t)])]),attachments:[]}}throw Error(`Invalid PostableMessage format`)}function Gu(e,t){if(t&&typeof t==`object`&&`_type`in t){let e=t;if(e._type===`chat:Thread`)return Uu.fromJSON(t);if(e._type===`chat:Channel`)return Ou.fromJSON(t);if(e._type===`chat:Message`)return Q.fromJSON(t)}return t}var Ku=100,qu=10080*60*1e3,Ju=`msg-history:`,Yu=class{state;maxMessages;ttlMs;constructor(e,t){this.state=e,this.maxMessages=t?.maxMessages??Ku,this.ttlMs=t?.ttlMs??qu}async append(e,t){let n=`${Ju}${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=`${Ju}${e}`,r=await this.state.getList(n);return(t&&r.length>t?r.slice(r.length-t):r).map(e=>Q.fromJSON(e))}},Xu=`transcripts:user:`,Zu=200,Qu=50,$u=/^(\d+)([smhd])$/,ed=`__chatSdkTombstone`;function td(e){return typeof e==`object`&&!!e&&e[ed]===!0}var nd={s:1e3,m:6e4,h:36e5,d:864e5},rd=class{state;maxPerUser;retentionMs;storeFormatted;constructor(e,t){this.state=e,this.maxPerUser=t.maxPerUser??Zu,this.retentionMs=ad(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(id(i),s,{maxLength:this.maxPerUser,ttlMs:this.retentionMs}),s}async list(e){let t=(await this.state.getList(id(e.userKey))).filter(e=>!td(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(id(e.userKey))).filter(e=>!td(e)).length}async delete(e){let t=id(e.userKey),n=(await this.state.getList(t)).filter(e=>!td(e)).length,r={[ed]:!0};return await this.state.appendToList(t,r,{maxLength:1,ttlMs:this.retentionMs}),{deleted:n}}};function id(e){return`${Xu}${e}`}function ad(e){if(e===void 0)return;if(typeof e==`number`)return e;let t=$u.exec(e);if(!t)throw Error(`Invalid duration: ${e} (expected number of ms, or "<n>[smhd]")`);return Number.parseInt(t[1],10)*nd[t[2]]}var od=3e4;function sd(e){return new Promise(t=>setTimeout(t,e))}var cd=/^[UW][A-Z0-9]+$/,ld=/^\d{17,19}$/,ud=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,dd=/^\d+$/,fd=600*1e3,pd=1440*60*1e3,md=class{registerSingleton(){return uu(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 du()}static hasSingleton(){return fu()}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=[];appContextChangedHandlers=[];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??fd,this._onLockConflict=e.onLockConflict,this._lockScope=e.lockScope,typeof e.logger==`string`?this.logger=new Cu(e.logger):this.logger=e.logger||new Cu(`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 Yu(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 rd(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`)}onAppContextChanged(e){this.appContextChangedHandlers.push(e),this.logger.debug(`Registered app context changed 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(),Gu}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=cu(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)}processAppContextChanged(e,t){let n=(async()=>{for(let t of this.appContextChangedHandlers)await t(e)})().catch(t=>{this.logger.error(`App context changed 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 Ou({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(J(r)){let e=gc(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,pd)}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=Uu.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=Ou.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}=tu(e.value),r=null;n&&(r=await su(n,this._stateAdapter));let i=r?{...e,value:r.originalValue}:e,a;if(r){let t=r.url;a=(async()=>{let{error:n}=await cu(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:[]}):void 0,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(J(n)){let e=gc(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,void 0,!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 Ou({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,void 0,!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(ud.test(e)){let e=this.adapters.get(`linear`);if(e)return e}if(cd.test(e)){let e=this.adapters.get(`slack`);if(e)return e}if(dd.test(e)){let t=[];if(ld.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(gu(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,od);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,od)),!i))throw this.logger.warn(`Could not acquire lock on thread`,{threadId:t,lockKey:n}),new xu(`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,od);if(!l){let e=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},a),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 sd(c),await this._stateAdapter.extendLock(l,od),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,a=[];for(;;){await sd(i),await this._stateAdapter.extendLock(e,od);let o=[];for(;;){let e=await this._stateAdapter.dequeue(r);if(!e)break;let i=this.rehydrateMessage(e.message,t);Date.now()<=e.expiresAt?o.push({message:i,expiresAt:e.expiresAt}):this.logger.info(`message-expired`,{threadId:n,lockKey:r,messageId:i.id})}if(o.length===0)break;let s=o.at(-1);if(!s)break;if(a.push(...o.slice(0,-1).map(e=>e.message)),await this._stateAdapter.queueDepth(r)>0){a.push(s.message),this.logger.info(`message-superseded`,{threadId:n,lockKey:r,droppedId:s.message.id});continue}this.logger.info(`message-dequeued`,{threadId:n,lockKey:r,messageId:s.message.id}),await this.dispatchToHandlers(t,n,s.message,{skipped:a,totalSinceLastHandler:a.length+1});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,od);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){let i=this.setMentionFlags(e,n,r),a=await this._stateAdapter.isSubscribed(t);this.logger.debug(`Subscription check`,{threadId:t,isSubscribed:a,subscribedHandlerCount:this.subscribedMessageHandlers.length});let o=await this.createThread(e,t,n,a);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 s=e.isDM?.(t)??!1;if(s&&this.directMessageHandlers.length>0){this.logger.debug(`Direct message received - calling handlers`,{threadId:t,handlerCount:this.directMessageHandlers.length});let e=o.channel;for(let t of this.directMessageHandlers)await t(o,n,e,r);return}if(s&&(n.isMention=!0),a){this.logger.debug(`Message in subscribed thread - calling handlers`,{threadId:t,handlerCount:this.subscribedMessageHandlers.length}),await this.runHandlers(this.subscribedMessageHandlers,o,n,r);return}if(n.isMention||i&&this.mentionHandlers.length>0){this.logger.debug(`Bot mentioned`,{threadId:t,text:n.text.slice(0,100)}),await this.runHandlers(this.mentionHandlers,o,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 c=!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()}),c=!0,await t(o,n,r))}c||this.logger.debug(`No handlers matched message`,{threadId:t,text:n.text.slice(0,100)})}setMentionFlags(e,t,n){t.isMention=t.isMention||this.detectMention(e,t);let r=t.isMention===!0;for(let t of n?.skipped??[])t.isMention=t.isMention||this.detectMention(e,t),r||=t.isMention===!0;return r}createThread(e,t,n,r=!1){let i=e.channelIdFromThreadId(t),a=e.isDM?.(t)??!1,o=e.getChannelVisibility?.(t)??`unknown`;return new Uu({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)}(?![\\w-])`,`i`).test(t.text)||r&&(RegExp(`@${this.escapeRegex(r)}(?![\\w-])`,`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&&gu(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&&gu(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)}},hd=Yu;function gd(e){return e?Array.isArray(e)?e.join(` `).trim():typeof e==`string`?e:`markdown`in e?U(is(e.markdown)):`ast`in e?U(e.ast):``:``}var _d=class{$$typeof=_u;kind=`plan`;_model;_bound=null;constructor(e){let t=gd(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(`
97
+ `)}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=gd(e.title)||`Task`;if(e.autoCompletePrevious??!0)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=gd(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=gd(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}},vd=class{$$typeof=_u;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){}},yd=new Map;function bd(e){let t=yd.get(e);return t||(t=Object.freeze({name:e,toString:()=>`{{emoji:${e}}}`,toJSON:()=>`{{emoji:${e}}}`}),yd.set(e,t)),t}var xd={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:`🌈`}},Sd=class{emojiMap;slackToNormalized;gchatToNormalized;constructor(e){this.emojiMap={...xd,...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 bd(this.slackToNormalized.get(t)??e)}fromGChat(e){return bd(this.gchatToNormalized.get(e)??e)}fromTeams(e){return bd({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()}},Cd=new Sd,wd=/\{\{emoji:([a-z0-9_]+)\}\}/gi;function Td(e,t,n=Cd){return e.replace(wd,(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);case`x`:return n.toGChat(r);default:return n.toGChat(r)}})}function Ed(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=>bd(e)};for(let e of t)n[e]=bd(e);if(e){for(let t of Object.keys(e))n[t]=bd(t);Cd.extend(e)}return n}var Dd=Ed(),Od=Es,kd=Ds,Ad=bs,jd=Bs,Md=Ns,Nd=Ss,Pd=Ms,Fd=ws,Id=ks,Ld=As,Rd=Is,zd=Cs,Bd=ys,Vd=J,Hd=Os,Ud=Ts,Wd=js,Gd=q,Kd=gc,qd=Qs,Jd=Hs,Yd=qs,Xd=Ws,Zd=Ys,Qd=Ks,$d=Js,ef=Gs;export{Kd as $,ju as A,ds as At,Cd as B,Su as C,gs as Ct,Ud as D,K as Dt,bu as E,is as Et,Yu as F,us as Ft,qd as G,Dd as H,Uu as I,Vd as J,bd as K,jd as L,wu as M,$o as Mt,Wd as N,W as Nt,Qd as O,ps as Ot,ef as P,U as Pt,Gd as Q,Td as R,Xd as S,zo as St,Zd as T,G as Tt,mu as U,ku as V,Rd as W,vu as X,Jd as Y,Gu as Z,zd as _,Bo as _t,Nd as a,fs as at,Q as b,Xo as bt,md as c,ms as ct,xd as d,Uo as dt,bc as et,Fd as f,Ho as ft,Ld as g,Jo as gt,Id as h,Yo as ht,Md as i,hs as it,vd as j,es as jt,$d as k,as as kt,$ as l,qo as lt,Yd as m,Ko as mt,kd as n,_s as nt,Ou as o,ns as ot,Sd as p,Wo as pt,Bd as q,Ad as r,ts as rt,Pd as s,rs as st,Od as t,vs as tt,Cu as u,Go as ut,Hd as v,Vo as vt,_d as w,ls as wt,hd as x,Zo as xt,xu as y,Qo as yt,Ed as z};