@runtypelabs/persona 4.28.2 → 4.29.1

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 (145) hide show
  1. package/dist/animations/glyph-cycle.d.cts +1 -1
  2. package/dist/animations/glyph-cycle.d.ts +1 -1
  3. package/dist/animations/wipe.d.cts +1 -1
  4. package/dist/animations/wipe.d.ts +1 -1
  5. package/dist/approval-ui.cjs +3 -3
  6. package/dist/approval-ui.d.cts +1 -1
  7. package/dist/approval-ui.d.ts +1 -1
  8. package/dist/approval-ui.js +3 -3
  9. package/dist/artifacts-ui.d.cts +2 -2
  10. package/dist/artifacts-ui.d.ts +2 -2
  11. package/dist/chunk-B1-_pp-Y.js +4 -0
  12. package/dist/{chunk-DrYAfpvk.js → chunk-BcLIgi1h.js} +1 -1
  13. package/dist/chunk-BkW8s3fj.js +2 -0
  14. package/dist/chunk-Bm2-bemv.js +1 -0
  15. package/dist/chunk-BvhTpG6k.js +1 -0
  16. package/dist/chunk-Csks3Qw1.js +1 -0
  17. package/dist/chunk-D5B629Mj.js +1 -0
  18. package/dist/chunk-DGlFKA0r.js +9 -0
  19. package/dist/chunk-DO9_WSpy.js +1 -0
  20. package/dist/chunk-DTDHeUsG.js +1 -0
  21. package/dist/chunk-DjFpGFGA.js +1 -0
  22. package/dist/{chunk-dRBlrLd7.js → chunk-DtmtfIkd.js} +1 -1
  23. package/dist/chunk-lA5CJCgK.js +1 -0
  24. package/dist/client-history.js +1 -1
  25. package/dist/client-stream.js +1 -1
  26. package/dist/codegen.cjs +1 -1
  27. package/dist/codegen.js +1 -1
  28. package/dist/{composer-input-C39npJaz.d.cts → composer-input-B0P4OtNi.d.cts} +1 -1
  29. package/dist/{composer-input-C39npJaz.d.ts → composer-input-B0P4OtNi.d.ts} +1 -1
  30. package/dist/{context-mention-manager-DLCB1l9E.d.cts → context-mention-manager-DmLI_RM6.d.cts} +1 -1
  31. package/dist/{context-mention-manager-DLCB1l9E.d.ts → context-mention-manager-DmLI_RM6.d.ts} +1 -1
  32. package/dist/context-mentions-inline.d.cts +2 -2
  33. package/dist/context-mentions-inline.d.ts +2 -2
  34. package/dist/context-mentions.d.cts +3 -3
  35. package/dist/context-mentions.d.ts +3 -3
  36. package/dist/{defaults-DiAgWHXy.d.cts → defaults-DVo1wbZs.d.cts} +1 -1
  37. package/dist/{defaults-DiAgWHXy.d.ts → defaults-DVo1wbZs.d.ts} +1 -1
  38. package/dist/event-stream-view.d.cts +1 -1
  39. package/dist/event-stream-view.d.ts +1 -1
  40. package/dist/{fallback-speech-engine-C5_PUZjH.d.cts → fallback-speech-engine-BMnlmKnY.d.cts} +1 -1
  41. package/dist/{fallback-speech-engine-C5_PUZjH.d.ts → fallback-speech-engine-BMnlmKnY.d.ts} +1 -1
  42. package/dist/forms-ui.d.cts +2 -2
  43. package/dist/forms-ui.d.ts +2 -2
  44. package/dist/history-view.d.cts +1 -1
  45. package/dist/history-view.d.ts +1 -1
  46. package/dist/index.cjs +50 -49
  47. package/dist/index.cjs.map +1 -1
  48. package/dist/index.d.cts +7 -7
  49. package/dist/index.d.ts +7 -7
  50. package/dist/index.global.js +2 -3
  51. package/dist/index.global.js.map +1 -1
  52. package/dist/index.js +38 -37
  53. package/dist/index.js.map +1 -1
  54. package/dist/{markdown-parsers-loader-BBdyIEU7.d.cts → markdown-parsers-loader-CeovcyYf.d.cts} +1 -1
  55. package/dist/{markdown-parsers-loader-BBdyIEU7.d.ts → markdown-parsers-loader-CeovcyYf.d.ts} +1 -1
  56. package/dist/{preview-Chjb0bmI.d.cts → preview-Bkb4UrQC.d.cts} +2 -2
  57. package/dist/{preview-Chjb0bmI.d.ts → preview-Bkb4UrQC.d.ts} +2 -2
  58. package/dist/session-actions.js +1 -1
  59. package/dist/{session-a_qIp4xp.d.ts → session-iLyKipoM.d.cts} +28 -10
  60. package/dist/{session-a_qIp4xp.d.cts → session-iLyKipoM.d.ts} +28 -10
  61. package/dist/session-reconnect.cjs +1 -1
  62. package/dist/session-reconnect.d.cts +8 -2
  63. package/dist/session-reconnect.d.ts +8 -2
  64. package/dist/session-reconnect.js +1 -1
  65. package/dist/smart-dom-reader.d.cts +1 -1
  66. package/dist/smart-dom-reader.d.ts +1 -1
  67. package/dist/theme-editor-preview.cjs +61 -60
  68. package/dist/theme-editor-preview.d.cts +1 -1
  69. package/dist/theme-editor-preview.d.ts +1 -1
  70. package/dist/theme-editor-preview.js +40 -40
  71. package/dist/theme-editor.d.cts +2 -2
  72. package/dist/theme-editor.d.ts +2 -2
  73. package/dist/theme-reference.d.cts +2 -2
  74. package/dist/theme-reference.d.ts +2 -2
  75. package/dist/{types-BdO1jNRm.d.cts → types-BuDirJkQ.d.cts} +200 -23
  76. package/dist/{types-BdO1jNRm.d.ts → types-BuDirJkQ.d.ts} +200 -23
  77. package/dist/voice-client-tools.cjs +1 -0
  78. package/dist/voice-client-tools.d.cts +13 -0
  79. package/dist/voice-client-tools.d.ts +13 -0
  80. package/dist/voice-client-tools.js +1 -0
  81. package/dist/voice-runtime.cjs +3 -3
  82. package/dist/voice-runtime.d.cts +15 -5
  83. package/dist/voice-runtime.d.ts +15 -5
  84. package/dist/voice-runtime.js +5 -5
  85. package/dist/voice-worklet-player.d.cts +2 -2
  86. package/dist/voice-worklet-player.d.ts +2 -2
  87. package/dist/{webmcp-runtime-entry-B6bpVWSa.d.ts → webmcp-runtime-entry-CXLjRt1k.d.cts} +26 -5
  88. package/dist/{webmcp-runtime-entry-B6bpVWSa.d.cts → webmcp-runtime-entry-CXLjRt1k.d.ts} +26 -5
  89. package/dist/webmcp-runtime.cjs +2 -1
  90. package/dist/webmcp-runtime.d.cts +1 -1
  91. package/dist/webmcp-runtime.d.ts +1 -1
  92. package/dist/webmcp-runtime.js +2 -1
  93. package/dist/widget.css +1 -1
  94. package/package.json +6 -1
  95. package/src/client-approve.test.ts +17 -1
  96. package/src/client-resume.ts +15 -3
  97. package/src/client.interrupt.test.ts +21 -0
  98. package/src/client.ts +61 -4
  99. package/src/client.voice-tools.test.ts +65 -0
  100. package/src/components/activity-row.ts +3 -2
  101. package/src/components/approval-actions.test.ts +8 -0
  102. package/src/components/approval-actions.ts +6 -2
  103. package/src/components/approval-bubble.test.ts +14 -0
  104. package/src/components/approval-bubble.ts +8 -1
  105. package/src/components/tool-bubble.ts +8 -5
  106. package/src/generated/runtype-openapi-contract.ts +39 -1
  107. package/src/index-core.ts +11 -0
  108. package/src/index-global.ts +6 -0
  109. package/src/resume-dedupe-local-only.test.ts +273 -0
  110. package/src/runtime/persist-state.test.ts +86 -0
  111. package/src/session-actions.ts +20 -6
  112. package/src/session-reconnect.ts +18 -1
  113. package/src/session.restored-browser-tools.test.ts +272 -0
  114. package/src/session.test.ts +26 -0
  115. package/src/session.ts +185 -31
  116. package/src/session.voice.test.ts +212 -0
  117. package/src/styles/widget.css +4 -2
  118. package/src/types.ts +178 -22
  119. package/src/ui.restored-browser-tools.test.ts +128 -0
  120. package/src/ui.ts +32 -18
  121. package/src/utils/formatting.test.ts +9 -1
  122. package/src/utils/formatting.ts +4 -0
  123. package/src/utils/local-only-message.ts +15 -0
  124. package/src/utils/restored-browser-state.ts +50 -0
  125. package/src/utils/storage.ts +12 -1
  126. package/src/utils/voice-prior-tool-results.ts +37 -0
  127. package/src/voice/runtype-voice-provider.ts +94 -7
  128. package/src/voice/session-voice-wiring.ts +27 -3
  129. package/src/voice/voice-client-tools-session.ts +116 -0
  130. package/src/voice/voice-delegation.ts +19 -3
  131. package/src/voice/voice.test.ts +396 -0
  132. package/src/voice-client-tools-bundle.test.ts +37 -0
  133. package/src/voice-client-tools-loader.ts +24 -0
  134. package/src/voice-client-tools.ts +9 -0
  135. package/src/webmcp-bridge.test.ts +152 -1
  136. package/src/webmcp-bridge.ts +5 -6
  137. package/src/webmcp-polyfill.integration.test.ts +5 -1
  138. package/src/webmcp-runtime-entry.ts +151 -26
  139. package/dist/chunk-B6zZsT6F.js +0 -1
  140. package/dist/chunk-CztSjKHK.js +0 -9
  141. package/dist/chunk-DbhxjyOB.js +0 -4
  142. package/dist/chunk-DsdqLStH.js +0 -1
  143. package/dist/chunk-GIqbL2Eg.js +0 -1
  144. package/dist/chunk-HUOUif-P.js +0 -1
  145. package/dist/chunk-UlcxdHef.js +0 -1
@@ -0,0 +1 @@
1
+ import{t as e}from"./chunk-DTDHeUsG.js";const t=[1e3,2e3,4e3,8e3,8e3];function n(n){let r=0,i=null,a=null,o=!1,s=()=>{if(a&&=(clearTimeout(a),null),i){let e=i;i=null,e()}},c=()=>{let e=n.getStatus();(e===`resuming`||e===`paused`)&&s()},l=()=>{(typeof document>`u`||document.visibilityState!==`hidden`)&&c()},u=()=>{c()},d=()=>{o||=(typeof document<`u`&&document.addEventListener(`visibilitychange`,l),typeof window<`u`&&window.addEventListener(`online`,u),!0)},f=()=>{o&&=(typeof document<`u`&&document.removeEventListener(`visibilitychange`,l),typeof window<`u`&&window.removeEventListener(`online`,u),!1)},p=e=>new Promise(t=>{i=t,a=setTimeout(()=>{a=null,i=null,t()},e)}),m=()=>{let t=n.getResumable();n.clearResumable(),n.setReconnecting(!1),r=0,f(),n.setAbortController(null);let i=!1;for(let e of n.getMessages())e.streaming&&(e.streaming=!1,i=!0);let a=n.buildErrorContent(`Connection lost and the response could not be resumed.`);a?n.appendMessage({id:`${e}${t?.executionId??n.nextSequence()}`,role:`assistant`,content:a,localOnly:!0,createdAt:(/* @__PURE__ */ new Date()).toISOString(),streaming:!1,sequence:n.nextSequence()}):i&&n.notifyMessagesChanged(),n.setStreaming(!1),n.setStatus(`idle`),n.onError(/* @__PURE__ */ Error(`Durable session reconnect failed.`))},h=async()=>{let e=n.config.reconnect?.backoffMs??t,i=n.config.reconnect?.maxAttempts??e.length,a=n.config.reconnectStream;if(!a)n.setReconnecting(!1);else{for(;n.getResumable()&&r<i;){r+=1,n.setStatus(`resuming`);let t=n.getResumable(),o=t.lastEventId,s=new AbortController;n.setAbortController(s),n.emitReconnect({phase:`resuming`,handle:t,attempt:r});let c=null;try{let e=await a({executionId:t.executionId,after:t.lastEventId,signal:s.signal});e&&e.ok&&e.body&&(c=e.body)}catch{c=null}if(s.signal.aborted)return;if(c){let e=n.getMessages().find(e=>e.id===t.assistantMessageId)?.content,i=typeof e==`string`?e:``;try{await n.resumeConnect(c,t.assistantMessageId,i)}catch{}if(s.signal.aborted)return;if(!n.getResumable()){n.setReconnecting(!1),r=0,f(),n.emitReconnect({phase:`resumed`,handle:t});return}n.getResumable().lastEventId!==o&&(r=0)}if(c&&n.getResumable()&&n.settleParked(t.executionId)){r=0,f();return}if(n.getResumable()&&r<i&&(n.setStatus(`paused`),await p(e[Math.min(r-1,e.length-1)]??1e3),s.signal.aborted))return}n.getResumable()&&m()}};return{begin(){r=0,d(),h()},teardown(){a&&=(clearTimeout(a),null),i=null,r=0,f()},wake:s}}export{n as createReconnectController};
@@ -0,0 +1 @@
1
+ const e=`reconnect-failed-`,t=e=>e.localOnly===!0||e.role===`assistant`&&typeof e.id==`string`&&e.id.startsWith(`reconnect-failed-`);export{t as n,e as t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./chunk-BvhTpG6k.js";import{o as t}from"./chunk-CfNME4R9.js";const n=e=>({isError:!0,content:[{type:`text`,text:e}]}),r=(e,t=`WebMCP tool execution failed.`)=>e instanceof Error&&e.message?e.message:typeof e==`string`&&e?e:t;async function i(t,n,r,i){let a=`approval-${n.id}`,o=`approval-error-${n.id}`,s=e(),c={};t.s.approvalTokens.set(a,c);let l={...n,status:r,resolvedAt:Date.now()},u=t.s.messages.find(e=>e.id===a),d={id:a,role:`assistant`,content:``,createdAt:u?.createdAt??(/* @__PURE__ */ new Date()).toISOString(),...u?.sequence===void 0?{}:{sequence:u.sequence},streaming:!1,variant:`approval`,approval:l};t.s.upsertMessage(d),t.s.abortController?.abort(),t.s.abortController=new AbortController,t.setStreaming(!0);let f=t.s.config.approval,p=f&&typeof f==`object`?f.onDecision:void 0;try{let e;if(e=p?await p({approvalId:n.id,executionId:n.executionId,agentId:n.agentId,toolName:n.toolName},r,i):await t.s.client.resolveApproval({agentId:n.agentId,executionId:n.executionId,approvalId:n.id},r,{assistantMessageId:s}),e){let i=null;if(e instanceof Response){if(!e.ok){let r=await e.json().catch(()=>null),i=r?.message??r?.error??`Approval request failed: ${e.status}`,s=r?.code===`APPROVAL_ALREADY_RESOLVED`||e.status===404&&/no paused execution/i.test(String(r?.error)),u=t.s.messages.find(e=>e.id===a);throw t.s.approvalTokens.get(a)===c&&u?.approval?.resolvedAt===l.resolvedAt&&(t.s.upsertMessage({...d,approval:s?{...l,status:`timeout`}:n}),s&&t.settleApprovalPausedToolCall(a),t.s.upsertMessage({id:o,role:`assistant`,content:i,localOnly:!0,createdAt:(/* @__PURE__ */ new Date()).toISOString(),streaming:!1,sequence:t.nextSequence()})),Error(i)}i=e.body}else e instanceof ReadableStream&&(i=e);t.s.approvalTokens.get(a)===c&&t.s.messages.some(e=>e.id===o)&&(t.s.messages=t.s.messages.filter(e=>e.id!==o),t.s.callbacks.onMessagesChanged([...t.s.messages])),i?await t.s.connectStream(i,{allowReentry:!0,assistantMessageId:s}):(r===`denied`&&(t.settleApprovalPausedToolCall(a),t.appendMessage({id:`denial-${n.id}`,role:`assistant`,content:`Tool execution was denied by user.`,createdAt:(/* @__PURE__ */ new Date()).toISOString(),streaming:!1,sequence:t.nextSequence()})),t.setStreaming(!1),t.s.abortController=null)}else t.setStreaming(!1),t.s.abortController=null}catch(e){let n=e instanceof Error&&(e.name===`AbortError`||e.message.includes(`aborted`)||e.message.includes(`abort`));t.setStreaming(!1),t.s.abortController=null,n||t.s.callbacks.onError?.(e instanceof Error?e:Error(String(e)))}finally{t.s.approvalTokens.get(a)===c&&t.s.approvalTokens.delete(a)}}async function a(t,n,r){if(t.s.messages.find(e=>e.id===n.id)?.agentMetadata?.askUserQuestionAnswered===!0)return;let i=n.agentMetadata?.executionId,a=n.toolCall?.name;if(!i||!a){t.s.callbacks.onError?.(/* @__PURE__ */ Error(`resolveAskUserQuestion: message is missing executionId or toolCall.name`));return}let o=typeof r==`string`?void 0:r;if(o===void 0&&typeof r==`string`){let e=n.toolCall?.args,t=Array.isArray(e?.questions)?e.questions:[];if(t.length===1){let e=typeof t[0]?.question==`string`?t[0].question:``;e&&(o={[e]:r})}}t.s.markAskUserQuestionResolved(n,o),t.s.abortController?.abort(),t.s.abortController=new AbortController,t.setStreaming(!0);let s=n.toolCall.id,c=n.toolCall?.args,l=Array.isArray(c?.questions)?c.questions:[];if(l.length===0){let e=typeof r==`string`?r:Object.entries(r).map(([e,t])=>`${e}: ${Array.isArray(t)?t.join(`, `):t}`).join(` | `);t.appendMessage({id:`ask-user-answer-${s}`,role:`user`,content:e,createdAt:(/* @__PURE__ */ new Date()).toISOString(),streaming:!1,sequence:t.nextSequence()})}else{let e=o??{};l.forEach((n,r)=>{let i=typeof n?.question==`string`?n.question:``;if(!i)return;let a=e[i],o=Array.isArray(a)?a.join(`, `):typeof a==`string`?a:``;t.appendMessage({id:`ask-user-q-${s}-${r}`,role:`assistant`,content:i,createdAt:(/* @__PURE__ */ new Date()).toISOString(),streaming:!1,sequence:t.nextSequence()}),t.appendMessage({id:`ask-user-a-${s}-${r}`,role:`user`,content:o||`*Skipped*`,createdAt:(/* @__PURE__ */ new Date()).toISOString(),streaming:!1,sequence:t.nextSequence()})})}try{let n=e(),o=await t.s.client.resumeFlow(i,{[a]:r},{after:t.resumeAfter(i),assistantMessageId:n});if(!o.ok){let e=await o.json().catch(()=>null);throw Error(e?.error??`Resume failed: ${o.status}`)}o.body?await t.s.connectStream(o.body,{allowReentry:!0,assistantMessageId:n}):(t.setStreaming(!1),t.s.abortController=null)}catch(e){let n=e instanceof Error&&(e.name===`AbortError`||e.message.includes(`aborted`)||e.message.includes(`abort`));t.setStreaming(!1),t.s.abortController=null,n||t.s.callbacks.onError?.(e instanceof Error?e:Error(String(e)))}}function o(e,t){let n=[e.s.messages.find(e=>e.id===t.id)?.toolCall?.startedAt,t.toolCall?.startedAt];for(let e of n)if(typeof e==`number`&&Number.isFinite(e))return e;return Date.now()}function s(e,t){return t.toolCall?.name===`suggest_replies`&&(e.s.messages.find(e=>e.id===t.id)??t).agentMetadata?.suggestRepliesResolved===!0}function c(e,t){let n=o(e,t);return e.s.upsertMessage({...t,streaming:!0,agentMetadata:{...t.agentMetadata,awaitingLocalTool:!1},toolCall:t.toolCall?{...t.toolCall,status:`running`,startedAt:n,completedAt:void 0,duration:void 0,durationMs:void 0}:t.toolCall}),n}function l(e,t,n,r,i=Date.now(),a){e.s.messages.some(e=>e.id===t.id)&&e.s.upsertMessage({...t,streaming:!1,agentMetadata:{...t.agentMetadata,awaitingLocalTool:!1,...a},toolCall:t.toolCall?{...t.toolCall,status:`complete`,result:n,startedAt:r,completedAt:i,duration:void 0,durationMs:Math.max(0,i-r)}:t.toolCall})}async function u(i,a,o){let u=[],d=new AbortController;i.s.webMcpResolveControllers.add(d),i.setStreaming(!0);let f=async e=>{let o=e.toolCall?.name,f=e.toolCall?.id;if(!o||!f)return null;let p=`${a}:${f}`;if(i.s.webMcpInflightKeys.has(p)||i.s.webMcpResolvedKeys.has(p)||s(i,e))return null;i.s.webMcpInflightKeys.add(p),u.push(p);let m=c(i,e),h=e.agentMetadata?.webMcpToolCallId??o;if(o===`suggest_replies`)return{dedupeKey:p,resumeKey:h,output:t(),toolMessage:e,startedAt:m,completedAt:Date.now()};let g=i.s.client.executeWebMcpToolCall(o,e.toolCall?.args,d.signal),_;if(!g)_={isError:!0,content:[{type:`text`,text:`WebMCP not enabled on this widget.`}]};else try{_=await g}catch(t){let a=t instanceof Error&&(t.name===`AbortError`||t.message.includes(`aborted`)||t.message.includes(`abort`));return a||i.s.callbacks.onError?.(t instanceof Error?t:Error(String(t))),l(i,e,n(a?`Aborted by cancel()`:r(t)),m),i.s.webMcpInflightKeys.delete(p),null}return d.signal.aborted?(l(i,e,n(`Aborted by cancel()`),m),i.s.webMcpInflightKeys.delete(p),null):{dedupeKey:p,resumeKey:h,output:_,toolMessage:e,startedAt:m,completedAt:Date.now()}},p;if(i.s.config.webmcp?.execution===`sequential`){p=[];for(let e of o)p.push(await f(e))}else p=await Promise.all(o.map(f));let m=[];try{if(m=p.filter(e=>e!==null),m.length===0)return;let t={};for(let e of m)t[e.resumeKey]=e.output;let n=e(),r=await i.s.client.resumeFlow(a,t,{signal:d.signal,after:i.resumeAfter(a),assistantMessageId:n});if(!r.ok){let e=await r.json().catch(()=>null);throw Error(e?.error??`Resume failed: ${r.status}`)}let o=m[0].dedupeKey;for(let e of m){i.s.webMcpResolvedKeys.add(e.dedupeKey);let t=e.toolMessage.toolCall?.name,n=e.toolMessage.agentMetadata?.webMcpToolCallId;l(i,e.toolMessage,e.output,e.startedAt,e.completedAt,{...t===`suggest_replies`?{suggestRepliesResolved:!0}:{},...t&&n?{clientToolAnswer:{toolCallId:n,toolName:t,args:e.toolMessage.toolCall?.args,result:e.output,batch:o}}:{}})}r.body&&await i.s.connectStream(r.body,{allowReentry:!0,assistantMessageId:n})}catch(e){if(!(e instanceof Error&&(e.name===`AbortError`||e.message.includes(`aborted`)||e.message.includes(`abort`))))i.s.callbacks.onError?.(e instanceof Error?e:Error(String(e)));else for(let e of m)l(i,e.toolMessage,n(`Aborted by cancel()`),e.startedAt)}finally{for(let e of u)i.s.webMcpInflightKeys.delete(e);i.s.webMcpResolveControllers.delete(d),i.s.webMcpResolveControllers.size===0&&!i.s.abortController&&i.setStreaming(!1)}}async function d(e,t){let n=t.agentMetadata?.executionId,r=t.toolCall?.name,i=t.toolCall?.id;if(!n){e.s.callbacks.onError?.(/* @__PURE__ */ Error(`WebMCP await missing executionId: dispatch left paused.`));return}if(!r)return;if(!i){let t=`${n}:__no_tool_id__:${r}`;if(e.s.webMcpInflightKeys.has(t)||e.s.webMcpResolvedKeys.has(t))return;e.s.webMcpInflightKeys.add(t);try{await f(e,n,r,{isError:!0,content:[{type:`text`,text:`WebMCP await missing toolCall.id: cannot execute the page tool.`}]}),e.s.webMcpResolvedKeys.add(t)}catch(t){e.s.callbacks.onError?.(t instanceof Error?t:Error(String(t)))}finally{e.s.webMcpInflightKeys.delete(t)}return}let a=`${n}:${i}`;if(!(e.s.webMcpInflightKeys.has(a)||e.s.webMcpResolvedKeys.has(a)||s(e,t)))return u(e,n,[t])}async function f(t,n,r,i,a){let o=e(),s=await t.s.client.resumeFlow(n,{[r]:i},{signal:a?.signal,after:t.resumeAfter(n),assistantMessageId:o});if(!s.ok){let e=await s.json().catch(()=>null);throw Error(e?.error??`Resume failed: ${s.status}`)}a?.onHttpOk?.(),s.body?await t.s.connectStream(s.body,{allowReentry:!0,assistantMessageId:o}):t.s.webMcpResolveControllers.size===0&&(t.setStreaming(!1),t.s.abortController=null)}export{i as resolveApproval,a as resolveAskUserQuestion,d as resolveWebMcpToolCall,u as resolveWebMcpToolCallBatch};
@@ -1,4 +1,4 @@
1
1
  import{OBJ as e,STR as t,parse as n}from"partial-json";const r=`webmcp:`,i=/* @__PURE__ */ new Map,a=e=>{i.clear();for(let t of e){let e=t.title?.trim();e&&i.set(t.name,e)}},o=e=>i.get(u(e));function s(e){if(e.length===0)return`0:empty`;let t=e.map(e=>[e.name,e.description??``,e.parametersSchema?JSON.stringify(e.parametersSchema):``,e.origin??``,e.annotations?JSON.stringify(e.annotations):``].join(``)).sort();return`${e.length}:${l(t.join(``))}`}function c(e,t){let n=3735928559^t,r=1103547991^t;for(let t=0;t<e.length;t++){let i=e.charCodeAt(t);n=Math.imul(n^i,2654435761),r=Math.imul(r^i,1597334677)}return n=Math.imul(n^n>>>16,2246822507),n^=Math.imul(r^r>>>13,3266489909),r=Math.imul(r^r>>>16,2246822507),r^=Math.imul(n^n>>>13,3266489909),4294967296*(2097151&r)+(n>>>0)}function l(e){return`${c(e,0).toString(36)}.${c(e,2654435761).toString(36)}`}const u=e=>e.startsWith(`webmcp:`)?e.slice(7):e,d=e=>e.startsWith(r),f=()=>import(`@mcp-b/webmcp-polyfill`),p=e=>e.replace(/\\n/g,`
2
- `).replace(/\\r/g,`\r`).replace(/\\t/g,` `).replace(/\\"/g,`"`).replace(/\\\\/g,`\\`),m=e=>{if(e===null)return`null`;if(e===void 0)return``;if(typeof e==`string`)return e;if(typeof e==`number`||typeof e==`boolean`)return String(e);try{return JSON.stringify(e,null,2)}catch{return String(e)}},h=e=>{let t=e.completedAt??Date.now(),n=e.startedAt??t,r=(e.durationMs===void 0?Math.max(0,t-n):e.durationMs)/1e3;return r<.1?`Thought for <0.1 seconds`:`Thought for ${r>=10?Math.round(r).toString():r.toFixed(1).replace(/\.0$/,``)} seconds`},g=e=>e.status===`complete`?h(e):e.status===`pending`?`Waiting`:``,_=(e,t)=>{let n=t?.durationMs??15e3,r=t?.chars??1200;return typeof e.durationMs==`number`?e.durationMs<n:(e.chunks??[]).join(``).length<r},v=e=>{let t=(typeof e.duration==`number`?e.duration:typeof e.durationMs==`number`?e.durationMs:Math.max(0,(e.completedAt??Date.now())-(e.startedAt??e.completedAt??Date.now())))/1e3;return t<.1?`Used tool for <0.1 seconds`:`Used tool for ${t>=10?Math.round(t).toString():t.toFixed(1).replace(/\.0$/,``)} seconds`},y=e=>e.status===`complete`?v(e):`Using tool...`,b=e=>{let t=e/1e3;return t<.1?`<0.1s`:t>=10?`${Math.round(t)}s`:`${t.toFixed(1).replace(/\.0$/,``)}s`},x=e=>{let t=typeof e.duration==`number`?e.duration:typeof e.durationMs==`number`?e.durationMs:Math.max(0,(e.completedAt??Date.now())-(e.startedAt??e.completedAt??Date.now()));return b(t)},S=e=>{let t=e.durationMs===void 0?Math.max(0,(e.completedAt??Date.now())-(e.startedAt??e.completedAt??Date.now())):e.durationMs;return b(t)},C=(e,t,n)=>{if(!t)return n;let r=e.name?.trim()||`tool`,i=x(e);return t.replace(/\{toolName\}/g,r).replace(/\{duration\}/g,i)},w=(e,t)=>{let n=e.replace(/\{toolName\}/g,t),r=[],i=/\*\*(.+?)\*\*|\*(.+?)\*|~(.+?)~/g,a=0,o;for(;(o=i.exec(n))!==null;)o.index>a&&T(r,n.slice(a,o.index),[]),o[1]===void 0?o[2]===void 0?o[3]!==void 0&&T(r,o[3],[`dim`]):T(r,o[2],[`italic`]):T(r,o[1],[`bold`]),a=o.index+o[0].length;return a<n.length&&T(r,n.slice(a),[]),r},T=(e,t,n)=>{let r=t.split(`{duration}`);for(let t=0;t<r.length;t++)r[t]&&e.push({text:r[t],styles:n}),t<r.length-1&&e.push({text:`{duration}`,styles:n,isDuration:!0})},E=()=>{let e=null,t=0,n=e=>{let t=e.match(/"text"\s*:\s*"((?:[^"\\]|\\.|")*?)"/);if(t&&t[1])try{return t[1].replace(/\\n/g,`
2
+ `).replace(/\\r/g,`\r`).replace(/\\t/g,` `).replace(/\\"/g,`"`).replace(/\\\\/g,`\\`),m=e=>{if(e===null)return`null`;if(e===void 0)return``;if(typeof e==`string`)return e;if(typeof e==`number`||typeof e==`boolean`)return String(e);try{return JSON.stringify(e,null,2)}catch{return String(e)}},h=e=>{let t=e.completedAt??Date.now(),n=e.startedAt??t,r=(e.durationMs===void 0?Math.max(0,t-n):e.durationMs)/1e3;return r<.1?`Thought for <0.1 seconds`:`Thought for ${r>=10?Math.round(r).toString():r.toFixed(1).replace(/\.0$/,``)} seconds`},g=e=>e.status===`complete`?h(e):e.status===`pending`?`Waiting`:``,_=(e,t)=>{let n=t?.durationMs??15e3,r=t?.chars??1200;return typeof e.durationMs==`number`?e.durationMs<n:(e.chunks??[]).join(``).length<r},v=e=>{let t=(typeof e.duration==`number`?e.duration:typeof e.durationMs==`number`?e.durationMs:Math.max(0,(e.completedAt??Date.now())-(e.startedAt??e.completedAt??Date.now())))/1e3;return t<.1?`Used tool for <0.1 seconds`:`Used tool for ${t>=10?Math.round(t).toString():t.toFixed(1).replace(/\.0$/,``)} seconds`},y=e=>e.status===`complete`?v(e):`Using tool...`,b=e=>{let t=e/1e3;return t<.1?`<0.1s`:t>=10?`${Math.round(t)}s`:`${t.toFixed(1).replace(/\.0$/,``)}s`},x=e=>{if(e.interrupted&&e.duration===void 0&&e.durationMs===void 0&&(e.startedAt===void 0||e.completedAt===void 0))return``;let t=typeof e.duration==`number`?e.duration:typeof e.durationMs==`number`?e.durationMs:Math.max(0,(e.completedAt??Date.now())-(e.startedAt??e.completedAt??Date.now()));return b(t)},S=e=>{let t=e.durationMs===void 0?Math.max(0,(e.completedAt??Date.now())-(e.startedAt??e.completedAt??Date.now())):e.durationMs;return b(t)},C=(e,t,n)=>{if(!t)return n;let r=e.name?.trim()||`tool`,i=x(e);return t.replace(/\{toolName\}/g,r).replace(/\{duration\}/g,i)},w=(e,t)=>{let n=e.replace(/\{toolName\}/g,t),r=[],i=/\*\*(.+?)\*\*|\*(.+?)\*|~(.+?)~/g,a=0,o;for(;(o=i.exec(n))!==null;)o.index>a&&T(r,n.slice(a,o.index),[]),o[1]===void 0?o[2]===void 0?o[3]!==void 0&&T(r,o[3],[`dim`]):T(r,o[2],[`italic`]):T(r,o[1],[`bold`]),a=o.index+o[0].length;return a<n.length&&T(r,n.slice(a),[]),r},T=(e,t,n)=>{let r=t.split(`{duration}`);for(let t=0;t<r.length;t++)r[t]&&e.push({text:r[t],styles:n}),t<r.length-1&&e.push({text:`{duration}`,styles:n,isDuration:!0})},E=()=>{let e=null,t=0,n=e=>{let t=e.match(/"text"\s*:\s*"((?:[^"\\]|\\.|")*?)"/);if(t&&t[1])try{return t[1].replace(/\\n/g,`
3
3
  `).replace(/\\r/g,`\r`).replace(/\\t/g,` `).replace(/\\"/g,`"`).replace(/\\\\/g,`\\`)}catch{return t[1]}let n=e.match(/"text"\s*:\s*"((?:[^"\\]|\\.)*)/);if(n&&n[1])try{return n[1].replace(/\\n/g,`
4
4
  `).replace(/\\r/g,`\r`).replace(/\\t/g,` `).replace(/\\"/g,`"`).replace(/\\\\/g,`\\`)}catch{return n[1]}return null};return{getExtractedText:()=>e,processChunk:async r=>{if(r.length<=t)return e===null?null:{text:e,raw:r};let i=r.trim();if(!i.startsWith(`{`)&&!i.startsWith(`[`))return null;let a=n(r);return a!==null&&(e=a),t=r.length,e===null?null:{text:e,raw:r}},close:async()=>{}}},D=e=>{try{let t=JSON.parse(e);if(t&&typeof t==`object`&&typeof t.text==`string`)return t.text}catch{return null}return null},O=()=>{let e={processChunk:e=>null,getExtractedText:()=>null};return e.__isPlainTextParser=!0,e},k=()=>{let e=E();return{processChunk:async t=>{let n=t.trim();return!n.startsWith(`{`)&&!n.startsWith(`[`)?null:e.processChunk(t)},getExtractedText:e.getExtractedText.bind(e),close:e.close?.bind(e)}},A=()=>{let r=null,i=0;return{getExtractedText:()=>r,processChunk:a=>{let o=a.trim();if(!o.startsWith(`{`)&&!o.startsWith(`[`))return null;if(a.length<=i)return r!==null||r===``?{text:r||``,raw:a}:null;try{let i=n(a,t|e);i&&typeof i==`object`&&(i.component&&typeof i.component==`string`?r=typeof i.text==`string`?p(i.text):``:i.type===`init`&&i.form?r=``:typeof i.text==`string`&&(r=p(i.text)))}catch{}return i=a.length,r===null?null:{text:r,raw:a}},close:()=>{}}},j=()=>{let e=null;return{processChunk:t=>{if(!t.trim().startsWith(`<`))return null;let n=t.match(/<text[^>]*>([\s\S]*?)<\/text>/);return n&&n[1]?(e=n[1],{text:e,raw:t}):null},getExtractedText:()=>e}};export{o as _,k as a,a as b,y as c,m as d,_ as f,s as g,r as h,O as i,D as l,C as m,x as n,j as o,w as p,A as r,g as s,S as t,b as u,d as v,f as y};
@@ -0,0 +1 @@
1
+ const e=`webmcp:`;function t(t){return t.origin===`webmcp`&&!t.name.startsWith(e)?e+t.name:t.name}function n(n,r){let i=!1,a=Promise.resolve(),o=null,s=/* @__PURE__ */ new Map,c=/* @__PURE__ */ new Map,l=()=>{a=a.then(async()=>{let e=i?null:await n.snapshot().catch(()=>null);if(!e||i||e.fingerprint===o)return;let a=e.tools.map(e=>({...e,name:t(e)})),c={type:`client_tools`,fingerprint:e.fingerprint,tools:a};r.send(c)&&(o=e.fingerprint,s=new Map(a.map(e=>[e.name,e])))})},u=e=>{for(let[t,n]of c)(e===void 0||n.delegationId===e)&&(c.delete(t),n.abort.abort())},d=n.onChange(l);return l(),{abort:u,close(){i=!0,d(),u()},call(t){let{delegationId:a,toolCallId:l}=t;if(i||typeof a!=`string`||!a||typeof l!=`string`||!l)return;let u=new AbortController;c.get(l)?.abort.abort(),c.set(l,{delegationId:a,abort:u});let d=({status:e,result:t,error:n})=>{c.get(l)?.abort===u&&(c.delete(l),!(i||r.cancelled(a))&&r.send({type:`client_tool_result`,delegationId:a,toolCallId:l,status:e,...t!==void 0&&{result:t},...n&&{error:{message:n.message}}}))},f=typeof t.name==`string`?t.name:``,p=s.get(f)??s.get(e+f);if(!p||t.fingerprint!==o)return d({status:`stale`,error:{message:p?`The page's tools changed.`:`Unknown tool: ${f}`}});let m=t.arguments&&typeof t.arguments==`object`&&!Array.isArray(t.arguments)?t.arguments:{},h=typeof t.timeoutMs==`number`&&t.timeoutMs>0?t.timeoutMs:0,g,_=n.execute(p.name,m,{signal:u.signal,autoConfirmReadOnly:!0}).catch(e=>({status:`failed`,error:{message:e instanceof Error?e.message:String(e)}})),v=new Promise(e=>{h&&(g=setTimeout(()=>{u.abort(),e({status:`timeout`,error:{message:`Page tool exceeded ${h}ms.`}})},h))});Promise.race([_,v]).then(e=>{clearTimeout(g),d(e)})}}}export{n as createVoiceClientToolsSession,t as voiceClientToolName};
@@ -1 +1 @@
1
- var e=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(e){throw n=[e],e}},t=`4.28.2`,n,r=e((()=>{n=t}));function i(e,t,n){let r=new URLSearchParams;for(let[e,t]of Object.entries(n))t!==void 0&&t!==``&&r.set(e,String(t));let i=r.toString();return`${e.clientApiBase()}/v1/client/${t}${i?`?${i}`:``}`}function a(e,t){return t||e.config.features?.history?.scope||(e.config.getIdentityProof?`verified-user`:`browser`)}async function o(e,t,n){let r=e.config.getIdentityProof;if(!r)return n&&e.setHistoryIdentityStatus(e.browserOnlyStatus()),null;n&&e.setHistoryIdentityStatus({state:`verifying`});let i;try{i=await r()??null}catch{throw n&&e.setHistoryIdentityStatus({state:`identity_provider_failed`}),new e.HistoryClientError(`identity_provider_failed`,`The identity proof provider failed`)}if(i)return i;if(t.visitor?.endUserId!=null)throw n&&e.setHistoryIdentityStatus({state:`authentication_required`,reason:`proof_unavailable_after_binding`}),new e.HistoryClientError(`authentication_required`,`This browser is bound to a signed-in user and needs a fresh identity proof`);return n&&e.setHistoryIdentityStatus({state:`browser_only`,reason:`proof_unavailable_before_binding`}),null}async function s(e,t,n,r){if(t.visitor?.endUserId!=null)return t;let i=await e.reinitWithProof(n);if(i.visitor?.identityStatus!==`admitted`||i.visitor?.endUserId==null)throw r&&e.setHistoryIdentityStatus({state:`configuration_error`,reason:`proof_not_admitted`}),new e.HistoryClientError(`proof_not_admitted`,C);return i}async function c(e,t){let n=await t.json().catch(()=>({}));return typeof n.error==`string`?n.error:typeof n.message==`string`?n.message:``}async function l(e,t,n,r){let i=t.toLowerCase();if(i.includes(`invalid_identity_proof`))throw r&&e.setHistoryIdentityStatus({state:`authentication_required`,reason:`invalid_identity_proof`}),new e.HistoryClientError(`invalid_identity_proof`,w);if(i.includes(`visitor token required`))throw new e.HistoryClientError(`visitor_token_missing`,T);if(i.includes(`visitor_identity_mismatch`)){if(!n)throw r&&e.setHistoryIdentityStatus({state:`authentication_required`,reason:`proof_unavailable_after_binding`}),new e.HistoryClientError(`visitor_identity_mismatch`,E);return e.reinitWithProof(n)}if(i.includes(`expired`)||i.includes(`not found`))return e.clearClientSession(),e.initSession();throw new e.HistoryClientError(`unauthorized`,t||`History request was not authorized`)}async function u(e,t,n){let r=await c(e,t);if(t.status===404)return new e.HistoryClientError(`not_found`,`Conversation not found`);if(t.status===429){let n=Number.parseInt(t.headers.get(`Retry-After`)??``,10);return new e.HistoryClientError(`rate_limited`,`Too many history requests`,{...Number.isFinite(n)?{retryAfterSeconds:n}:{}})}if(t.status===503&&r.includes(`identity_proof_not_admitted`))return n&&e.setHistoryIdentityStatus({state:`configuration_error`,reason:`proof_not_admitted`}),new e.HistoryClientError(`proof_not_admitted`,C);if(t.status===401){let t=r.toLowerCase();return t.includes(`invalid_identity_proof`)?(n&&e.setHistoryIdentityStatus({state:`authentication_required`,reason:`invalid_identity_proof`}),new e.HistoryClientError(`invalid_identity_proof`,w)):t.includes(`visitor token required`)?new e.HistoryClientError(`visitor_token_missing`,T):t.includes(`visitor_identity_mismatch`)?new e.HistoryClientError(`visitor_identity_mismatch`,E):new e.HistoryClientError(`unauthorized`,r||`History request was not authorized`)}return new e.HistoryClientError(`request_failed`,r||`History request failed (${t.status})`)}function d(e,t,n,r){let i=t?.toLowerCase()??null;if(n){if(i===`admitted`){r&&e.setHistoryIdentityStatus({state:`verified`});return}throw r&&e.setHistoryIdentityStatus({state:`configuration_error`,reason:`proof_not_admitted`}),i===`ignored`?new e.HistoryClientError(`identity_contract_violation`,`Server reported an ignored identity proof on a success response`):new e.HistoryClientError(`proof_not_admitted`,`The response did not acknowledge the identity proof this request sent`)}if(i===`admitted`)throw new e.HistoryClientError(`identity_contract_violation`,`Server admitted an identity proof that was never sent`);r&&e.setHistoryIdentityStatus(e.browserOnlyStatus())}async function f(e,t,r){p(e);let f=r.trackIdentity!==!1,m=await e.initSession(),h=null;a(e,r.scope)===`verified-user`&&(h=await o(e,m,f),h&&(m=await s(e,m,h,f)));let g=e.historyInternals.visitorStore,_=!1;for(;;){let a=g?.revision()??0,o=await e.readVisitorToken();if(!o&&!r.visitorTokenOptional)throw new e.HistoryClientError(`visitor_token_missing`,`No visitor credential is stored for this browser`);let s=await fetch(i(e,t,{...r.query,sessionId:m.sessionId}),{method:r.method,headers:{"X-Persona-Version":n,...o?{"X-Visitor-Token":o}:{},...h?{"X-Identity-Proof":h}:{},...r.body===void 0?{}:{"Content-Type":`application/json`}},...r.body===void 0?{}:{body:JSON.stringify(r.body)},...r.keepalive?{keepalive:!0}:{}});if(s.status===401&&!_){_=!0,m=await l(e,await c(e,s),h,f);continue}if(!s.ok)throw await u(e,s,f);let p=s.headers.get(`X-History-Identity-Status`),v=await s.json().catch(()=>void 0);if(g&&g.revision()!==a)throw new e.HistoryClientError(`credential_changed`,`The visitor credential changed while the request was in flight`);return d(e,p,h!==null,f),v}}function p(e){if(!e.isClientTokenMode())throw Error(`Conversation history is only available in client token mode`);if(!e.isHistoryCapable())throw new e.HistoryClientError(`history_disabled`,`Visitor history is disabled for this surface`)}async function m(e,t){let n=await f(e,`conversations`,{method:`GET`,query:{...t?.cursor?{cursor:t.cursor}:{},...t?.limit===void 0?{}:{limit:t.limit},...t?.targetId?{targetId:t.targetId}:{}},...t?.scope?{scope:t.scope}:{}});return{data:(Array.isArray(n?.data)?n.data:[]).map(S),nextCursor:typeof n?.nextCursor==`string`?n.nextCursor:null}}async function h(e,t,n){let r=await f(e,`conversations/${encodeURIComponent(t)}`,{method:`GET`,query:{...n?.messageCursor?{messageCursor:n.messageCursor}:{}},...n?.scope?{scope:n.scope}:{}});return{summary:S(r),messages:Array.isArray(r?.messages)?r.messages:[],nextMessageCursor:typeof r?.nextMessageCursor==`string`?r.nextMessageCursor:null,conversationRevision:typeof r?.conversationRevision==`string`?r.conversationRevision:null}}async function g(e,t,n){p(e);let r=0;for(let t of n){let n=t.displayContent.length;if(n>b)throw new e.HistoryClientError(`payload_too_large`,`displayContent exceeds the ${b} character limit`);r+=n}if(r>x)throw new e.HistoryClientError(`payload_too_large`,`Display projection batch exceeds the ${x} character limit`);await e.initSession();let i=e.historyInternals.visitorStore,a=i?.revision()??0,o=await f(e,`conversations/${encodeURIComponent(t)}/display-projections`,{method:`PATCH`,body:{messages:n},scope:`browser`,keepalive:r<=x,trackIdentity:!1}),s=typeof o?.conversationRevision==`string`?o.conversationRevision:null;return s&&e.clientSession?.conversationId===t&&(i?.revision()??0)===a&&e.historyInternals.setStoredConversationRevision?.(s),{conversationRevision:s}}async function _(e,t,n){let r=await f(e,`conversations/${encodeURIComponent(t)}`,{method:`DELETE`,...n?.scope?{scope:n.scope}:{}});return{deleted:typeof r?.deleted==`number`?r.deleted:0}}async function v(e,t){let n=await f(e,`conversations`,{method:`DELETE`,query:{...t?.targetId===void 0?{}:{targetId:t.targetId}},...t?.scope?{scope:t.scope}:{}});return{deleted:typeof n?.deleted==`number`?n.deleted:0}}async function y(e){p(e),e.setHistoryIdentityStatus({state:`resetting`});try{await f(e,`visitor/reset`,{method:`POST`,scope:`browser`,visitorTokenOptional:!0})}finally{await e.historyInternals.visitorStore?.clear(),e.setHistoryIdentityStatus(e.derivedBrowserOnly())}return{reset:!0}}var b,x,S,C,w,T,E;e((()=>{r(),b=32768,x=49152,S=e=>{let t=e??{},n=typeof t.targetId==`string`?t.targetId:null;return{id:typeof t.id==`string`?t.id:``,title:typeof t.title==`string`?t.title:``,targetId:n,preview:typeof t.preview==`string`?t.preview:null,messageCount:typeof t.messageCount==`number`?t.messageCount:0,createdAt:typeof t.createdAt==`string`?t.createdAt:``,updatedAt:typeof t.updatedAt==`string`?t.updatedAt:``}},C=`The identity proof was not admitted; account history is unavailable`,w=`The identity proof was rejected`,T=`The request carried no visitor credential`,E=`The stored visitor belongs to a different signed-in user`}))();export{v as deleteAllConversations,_ as deleteConversation,g as finalizeDisplayProjections,h as getConversation,u as historyErrorFor,m as listConversations,c as readErrorCode,l as recoverFromUnauthorized,y as resetVisitor};
1
+ var e=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(e){throw n=[e],e}},t=`4.29.1`,n,r=e((()=>{n=t}));function i(e,t,n){let r=new URLSearchParams;for(let[e,t]of Object.entries(n))t!==void 0&&t!==``&&r.set(e,String(t));let i=r.toString();return`${e.clientApiBase()}/v1/client/${t}${i?`?${i}`:``}`}function a(e,t){return t||e.config.features?.history?.scope||(e.config.getIdentityProof?`verified-user`:`browser`)}async function o(e,t,n){let r=e.config.getIdentityProof;if(!r)return n&&e.setHistoryIdentityStatus(e.browserOnlyStatus()),null;n&&e.setHistoryIdentityStatus({state:`verifying`});let i;try{i=await r()??null}catch{throw n&&e.setHistoryIdentityStatus({state:`identity_provider_failed`}),new e.HistoryClientError(`identity_provider_failed`,`The identity proof provider failed`)}if(i)return i;if(t.visitor?.endUserId!=null)throw n&&e.setHistoryIdentityStatus({state:`authentication_required`,reason:`proof_unavailable_after_binding`}),new e.HistoryClientError(`authentication_required`,`This browser is bound to a signed-in user and needs a fresh identity proof`);return n&&e.setHistoryIdentityStatus({state:`browser_only`,reason:`proof_unavailable_before_binding`}),null}async function s(e,t,n,r){if(t.visitor?.endUserId!=null)return t;let i=await e.reinitWithProof(n);if(i.visitor?.identityStatus!==`admitted`||i.visitor?.endUserId==null)throw r&&e.setHistoryIdentityStatus({state:`configuration_error`,reason:`proof_not_admitted`}),new e.HistoryClientError(`proof_not_admitted`,C);return i}async function c(e,t){let n=await t.json().catch(()=>({}));return typeof n.error==`string`?n.error:typeof n.message==`string`?n.message:``}async function l(e,t,n,r){let i=t.toLowerCase();if(i.includes(`invalid_identity_proof`))throw r&&e.setHistoryIdentityStatus({state:`authentication_required`,reason:`invalid_identity_proof`}),new e.HistoryClientError(`invalid_identity_proof`,w);if(i.includes(`visitor token required`))throw new e.HistoryClientError(`visitor_token_missing`,T);if(i.includes(`visitor_identity_mismatch`)){if(!n)throw r&&e.setHistoryIdentityStatus({state:`authentication_required`,reason:`proof_unavailable_after_binding`}),new e.HistoryClientError(`visitor_identity_mismatch`,E);return e.reinitWithProof(n)}if(i.includes(`expired`)||i.includes(`not found`))return e.clearClientSession(),e.initSession();throw new e.HistoryClientError(`unauthorized`,t||`History request was not authorized`)}async function u(e,t,n){let r=await c(e,t);if(t.status===404)return new e.HistoryClientError(`not_found`,`Conversation not found`);if(t.status===429){let n=Number.parseInt(t.headers.get(`Retry-After`)??``,10);return new e.HistoryClientError(`rate_limited`,`Too many history requests`,{...Number.isFinite(n)?{retryAfterSeconds:n}:{}})}if(t.status===503&&r.includes(`identity_proof_not_admitted`))return n&&e.setHistoryIdentityStatus({state:`configuration_error`,reason:`proof_not_admitted`}),new e.HistoryClientError(`proof_not_admitted`,C);if(t.status===401){let t=r.toLowerCase();return t.includes(`invalid_identity_proof`)?(n&&e.setHistoryIdentityStatus({state:`authentication_required`,reason:`invalid_identity_proof`}),new e.HistoryClientError(`invalid_identity_proof`,w)):t.includes(`visitor token required`)?new e.HistoryClientError(`visitor_token_missing`,T):t.includes(`visitor_identity_mismatch`)?new e.HistoryClientError(`visitor_identity_mismatch`,E):new e.HistoryClientError(`unauthorized`,r||`History request was not authorized`)}return new e.HistoryClientError(`request_failed`,r||`History request failed (${t.status})`)}function d(e,t,n,r){let i=t?.toLowerCase()??null;if(n){if(i===`admitted`){r&&e.setHistoryIdentityStatus({state:`verified`});return}throw r&&e.setHistoryIdentityStatus({state:`configuration_error`,reason:`proof_not_admitted`}),i===`ignored`?new e.HistoryClientError(`identity_contract_violation`,`Server reported an ignored identity proof on a success response`):new e.HistoryClientError(`proof_not_admitted`,`The response did not acknowledge the identity proof this request sent`)}if(i===`admitted`)throw new e.HistoryClientError(`identity_contract_violation`,`Server admitted an identity proof that was never sent`);r&&e.setHistoryIdentityStatus(e.browserOnlyStatus())}async function f(e,t,r){p(e);let f=r.trackIdentity!==!1,m=await e.initSession(),h=null;a(e,r.scope)===`verified-user`&&(h=await o(e,m,f),h&&(m=await s(e,m,h,f)));let g=e.historyInternals.visitorStore,_=!1;for(;;){let a=g?.revision()??0,o=await e.readVisitorToken();if(!o&&!r.visitorTokenOptional)throw new e.HistoryClientError(`visitor_token_missing`,`No visitor credential is stored for this browser`);let s=await fetch(i(e,t,{...r.query,sessionId:m.sessionId}),{method:r.method,headers:{"X-Persona-Version":n,...o?{"X-Visitor-Token":o}:{},...h?{"X-Identity-Proof":h}:{},...r.body===void 0?{}:{"Content-Type":`application/json`}},...r.body===void 0?{}:{body:JSON.stringify(r.body)},...r.keepalive?{keepalive:!0}:{}});if(s.status===401&&!_){_=!0,m=await l(e,await c(e,s),h,f);continue}if(!s.ok)throw await u(e,s,f);let p=s.headers.get(`X-History-Identity-Status`),v=await s.json().catch(()=>void 0);if(g&&g.revision()!==a)throw new e.HistoryClientError(`credential_changed`,`The visitor credential changed while the request was in flight`);return d(e,p,h!==null,f),v}}function p(e){if(!e.isClientTokenMode())throw Error(`Conversation history is only available in client token mode`);if(!e.isHistoryCapable())throw new e.HistoryClientError(`history_disabled`,`Visitor history is disabled for this surface`)}async function m(e,t){let n=await f(e,`conversations`,{method:`GET`,query:{...t?.cursor?{cursor:t.cursor}:{},...t?.limit===void 0?{}:{limit:t.limit},...t?.targetId?{targetId:t.targetId}:{}},...t?.scope?{scope:t.scope}:{}});return{data:(Array.isArray(n?.data)?n.data:[]).map(S),nextCursor:typeof n?.nextCursor==`string`?n.nextCursor:null}}async function h(e,t,n){let r=await f(e,`conversations/${encodeURIComponent(t)}`,{method:`GET`,query:{...n?.messageCursor?{messageCursor:n.messageCursor}:{}},...n?.scope?{scope:n.scope}:{}});return{summary:S(r),messages:Array.isArray(r?.messages)?r.messages:[],nextMessageCursor:typeof r?.nextMessageCursor==`string`?r.nextMessageCursor:null,conversationRevision:typeof r?.conversationRevision==`string`?r.conversationRevision:null}}async function g(e,t,n){p(e);let r=0;for(let t of n){let n=t.displayContent.length;if(n>b)throw new e.HistoryClientError(`payload_too_large`,`displayContent exceeds the ${b} character limit`);r+=n}if(r>x)throw new e.HistoryClientError(`payload_too_large`,`Display projection batch exceeds the ${x} character limit`);await e.initSession();let i=e.historyInternals.visitorStore,a=i?.revision()??0,o=await f(e,`conversations/${encodeURIComponent(t)}/display-projections`,{method:`PATCH`,body:{messages:n},scope:`browser`,keepalive:r<=x,trackIdentity:!1}),s=typeof o?.conversationRevision==`string`?o.conversationRevision:null;return s&&e.clientSession?.conversationId===t&&(i?.revision()??0)===a&&e.historyInternals.setStoredConversationRevision?.(s),{conversationRevision:s}}async function _(e,t,n){let r=await f(e,`conversations/${encodeURIComponent(t)}`,{method:`DELETE`,...n?.scope?{scope:n.scope}:{}});return{deleted:typeof r?.deleted==`number`?r.deleted:0}}async function v(e,t){let n=await f(e,`conversations`,{method:`DELETE`,query:{...t?.targetId===void 0?{}:{targetId:t.targetId}},...t?.scope?{scope:t.scope}:{}});return{deleted:typeof n?.deleted==`number`?n.deleted:0}}async function y(e){p(e),e.setHistoryIdentityStatus({state:`resetting`});try{await f(e,`visitor/reset`,{method:`POST`,scope:`browser`,visitorTokenOptional:!0})}finally{await e.historyInternals.visitorStore?.clear(),e.setHistoryIdentityStatus(e.derivedBrowserOnly())}return{reset:!0}}var b,x,S,C,w,T,E;e((()=>{r(),b=32768,x=49152,S=e=>{let t=e??{},n=typeof t.targetId==`string`?t.targetId:null;return{id:typeof t.id==`string`?t.id:``,title:typeof t.title==`string`?t.title:``,targetId:n,preview:typeof t.preview==`string`?t.preview:null,messageCount:typeof t.messageCount==`number`?t.messageCount:0,createdAt:typeof t.createdAt==`string`?t.createdAt:``,updatedAt:typeof t.updatedAt==`string`?t.updatedAt:``}},C=`The identity proof was not admitted; account history is unavailable`,w=`The identity proof was rejected`,T=`The request carried no visitor credential`,E=`The stored visitor belongs to a different signed-in user`}))();export{v as deleteAllConversations,_ as deleteConversation,g as finalizeDisplayProjections,h as getConversation,u as historyErrorFor,m as listConversations,c as readErrorCode,l as recoverFromUnauthorized,y as resetVisitor};
@@ -1,5 +1,5 @@
1
1
  var e=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(e){throw n=[e],e}},t=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),n,r,i=e((()=>{n=`webmcp:`,r=e=>e.startsWith(n)}));function a(e){return e===`card`?`collapsed`:e}function o(e){return e.split(`;`,1)[0].trim().toLowerCase()}function s(e,t){if(!e)return;let n=Object.entries(e);for(let[e,r]of n)if(o(e)===t)return{mode:a(r),selector:o(e)};let r=`${t.split(`/`,1)[0]}/*`;for(let[e,t]of n)if(o(e)===r)return{mode:a(t),selector:r}}function c(e,t){let n=e?.display,r=typeof n==`string`?{default:n}:n??{};if(t.file&&r.files){if(typeof r.files==`string`)return{mode:a(r.files),matchedBy:{type:`files`}};let e=t.file.mimeType?o(t.file.mimeType):void 0,n=e?s(r.files.byMediaType,e):void 0;if(e&&n)return{mode:n.mode,matchedBy:{type:`mediaType`,mediaType:e,selector:n.selector}};if(r.files.default)return{mode:a(r.files.default),matchedBy:{type:`files`}}}let i=r.byKind?.[t.artifactType];if(i)return{mode:a(i),matchedBy:{type:`kind`,kind:t.artifactType,configuredBy:`byKind`}};let c=r.byType?.[t.artifactType];if(c)return{mode:a(c),matchedBy:{type:`kind`,kind:t.artifactType,configuredBy:`byType`}};let l=t.presentation?.preferredMode;return l?{mode:a(l),matchedBy:{type:`preferredMode`}}:r.default?{mode:a(r.default),matchedBy:{type:`default`}}:{mode:`panel`,matchedBy:{type:`personaDefault`}}}function l(e,t){return c(e,t).mode}function u(e,t){return JSON.stringify({component:e===`inline`?`PersonaArtifactInline`:`PersonaArtifactCard`,props:{artifactId:t.artifactId,title:t.title,artifactType:t.artifactType,status:t.status,...t.file?{file:t.file}:{},...t.presentation?{presentation:t.presentation}:{},...e===`inline`&&t.component?{component:t.component}:{},...e===`inline`&&t.componentProps?{componentProps:t.componentProps}:{},...t.markdown===void 0?{}:{markdown:t.markdown}}})}var d=e((()=>{})),f=/* @__PURE__ */ t((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.Allow=e.ALL=e.COLLECTION=e.ATOM=e.SPECIAL=e.INF=e._INFINITY=e.INFINITY=e.NAN=e.BOOL=e.NULL=e.OBJ=e.ARR=e.NUM=e.STR=void 0,e.STR=1,e.NUM=2,e.ARR=4,e.OBJ=8,e.NULL=16,e.BOOL=32,e.NAN=64,e.INFINITY=128,e._INFINITY=256,e.INF=e.INFINITY|e._INFINITY,e.SPECIAL=e.NULL|e.BOOL|e.INF|e.NAN,e.ATOM=e.STR|e.NUM|e.SPECIAL,e.COLLECTION=e.ARR|e.OBJ,e.ALL=e.ATOM|e.COLLECTION,e.Allow={STR:e.STR,NUM:e.NUM,ARR:e.ARR,OBJ:e.OBJ,NULL:e.NULL,BOOL:e.BOOL,NAN:e.NAN,INFINITY:e.INFINITY,_INFINITY:e._INFINITY,INF:e.INF,SPECIAL:e.SPECIAL,ATOM:e.ATOM,COLLECTION:e.COLLECTION,ALL:e.ALL},e.default=e.Allow})),p=/* @__PURE__ */ t((e=>{var t=e&&e.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),n=e&&e.__exportStar||function(e,n){for(var r in e)r!=="default"&&!Object.prototype.hasOwnProperty.call(n,r)&&t(n,e,r)};Object.defineProperty(e,"__esModule",{value:!0}),e.Allow=e.MalformedJSON=e.PartialJSON=e.parseJSON=e.parse=void 0;let r=f();Object.defineProperty(e,"Allow",{enumerable:!0,get:function(){return r.Allow}}),n(f(),e);var i=class extends Error{};e.PartialJSON=i;var a=class extends Error{};e.MalformedJSON=a;function o(e,t=r.Allow.ALL){if(typeof e!=`string`)throw TypeError(`expecting str, got ${typeof e}`);if(!e.trim())throw Error(`${e} is empty`);return s(e.trim(),t)}e.parseJSON=o;let s=(e,t)=>{let n=e.length,o=0,s=e=>{throw new i(`${e} at position ${o}`)},c=e=>{throw new a(`${e} at position ${o}`)},l=()=>(m(),o>=n&&s(`Unexpected end of input`),e[o]===`"`?u():e[o]===`{`?d():e[o]===`[`?f():e.substring(o,o+4)===`null`||r.Allow.NULL&t&&n-o<4&&`null`.startsWith(e.substring(o))?(o+=4,null):e.substring(o,o+4)===`true`||r.Allow.BOOL&t&&n-o<4&&`true`.startsWith(e.substring(o))?(o+=4,!0):e.substring(o,o+5)===`false`||r.Allow.BOOL&t&&n-o<5&&`false`.startsWith(e.substring(o))?(o+=5,!1):e.substring(o,o+8)===`Infinity`||r.Allow.INFINITY&t&&n-o<8&&`Infinity`.startsWith(e.substring(o))?(o+=8,1/0):e.substring(o,o+9)===`-Infinity`||r.Allow._INFINITY&t&&1<n-o&&n-o<9&&`-Infinity`.startsWith(e.substring(o))?(o+=9,-1/0):e.substring(o,o+3)===`NaN`||r.Allow.NAN&t&&n-o<3&&`NaN`.startsWith(e.substring(o))?(o+=3,NaN):p()),u=()=>{let i=o,a=!1;for(o++;o<n&&(e[o]!==`"`||a&&e[o-1]===`\\`);)a=e[o]===`\\`&&!a,o++;if(e.charAt(o)==`"`)try{return JSON.parse(e.substring(i,++o-Number(a)))}catch(e){c(String(e))}else if(r.Allow.STR&t)try{return JSON.parse(e.substring(i,o-Number(a))+`"`)}catch{return JSON.parse(e.substring(i,e.lastIndexOf(`\\`))+`"`)}s(`Unterminated string literal`)},d=()=>{o++,m();let i={};try{for(;e[o]!==`}`;){if(m(),o>=n&&r.Allow.OBJ&t)return i;let a=u();m(),o++;try{i[a]=l()}catch(e){if(r.Allow.OBJ&t)return i;throw e}m(),e[o]===`,`&&o++}}catch{if(r.Allow.OBJ&t)return i;s(`Expected '}' at end of object`)}return o++,i},f=()=>{o++;let n=[];try{for(;e[o]!==`]`;)n.push(l()),m(),e[o]===`,`&&o++}catch{if(r.Allow.ARR&t)return n;s(`Expected ']' at end of array`)}return o++,n},p=()=>{if(o===0){e===`-`&&c(`Not sure what '-' is`);try{return JSON.parse(e)}catch(n){if(r.Allow.NUM&t)try{return JSON.parse(e.substring(0,e.lastIndexOf(`e`)))}catch{}c(String(n))}}let i=o;for(e[o]===`-`&&o++;e[o]&&`,]}`.indexOf(e[o])===-1;)o++;o==n&&!(r.Allow.NUM&t)&&s(`Unterminated number literal`);try{return JSON.parse(e.substring(i,o))}catch{e.substring(i,o)===`-`&&s(`Not sure what '-' is`);try{return JSON.parse(e.substring(i,e.lastIndexOf(`e`)))}catch(e){c(String(e))}}},m=()=>{for(;o<n&&`
2
- \r `.includes(e[o]);)o++};return l()};e.parse=o})),m,h=e((()=>{p(),m=e=>{try{let t=JSON.parse(e);if(t&&typeof t==`object`&&typeof t.text==`string`)return t.text}catch{return null}return null}})),g,_=e((()=>{p(),g=`ask_user_question`})),v,y,b,x,S,C,w=e((()=>{v=`suggest_replies`,y={type:`object`,properties:{suggestions:{type:`array`,minItems:1,maxItems:4,description:`1-4 short, distinct follow-up replies, phrased in the user's voice.`,items:{type:`object`,properties:{label:{type:`string`,minLength:1,maxLength:80},prompt:{type:`string`,minLength:1,maxLength:500},description:{type:`string`,minLength:1,maxLength:160}},required:[`label`],additionalProperties:!1}}},required:[`suggestions`],additionalProperties:!1},b={name:v,description:"Offer the user tappable quick-reply suggestions for their next message. Call at most once per turn, as the last action after your reply text is complete. Give each suggestion a `label` with the short visible text, an optional `prompt` with the fuller text placed as the user's message (defaults to the label), and an optional `description` with one line of supporting copy. Suggestions are sent as the user's next message, so phrase prompts in the user's voice (e.g. \"Tell me more about pricing\"). Keep them short and distinct. The result only confirms the suggestions were shown: do not add further commentary after calling this tool; end your turn.",parametersSchema:y,origin:`sdk`,annotations:{readOnlyHint:!0}},x=/* @__PURE__ */ new Set,S=(e,t,n)=>{let r=`${e}:${t}:${n}`;x.has(r)||(x.add(r),console.warn(`[persona] suggestions.followUps.${e} and features.suggestReplies.${e} disagree; suggestions.followUps.${e} wins.`))},C=e=>{let t=e?.suggestions?.followUps,n=e?.features?.suggestReplies,r=e=>{let r=t?.[e],i=n?.[e];r!==void 0&&i!==void 0&&r!==i&&S(e,i,r)};e&&(r(`enabled`),r(`expose`));let i=t?.enabled??n?.enabled??!0;return{enabled:i,expose:i?t?.expose??n?.expose??!1:!1}}})),T,E,D,O=e((()=>{_(),w(),T={type:`object`,properties:{questions:{type:`array`,minItems:1,maxItems:8,description:`Questions to ask the user. Prefer a single question.`,items:{type:`object`,properties:{question:{type:`string`,description:`The complete question, ending with a question mark.`},header:{type:`string`,maxLength:12,description:`Short topic label, e.g. "Auth method".`},options:{type:`array`,minItems:2,maxItems:4,description:`2-4 distinct choices. Do NOT add an "Other" option: free text is automatic.`,items:{type:`object`,properties:{label:{type:`string`,description:`Concise choice text (1-5 words).`},description:{type:`string`,description:`What the option means or implies.`}},required:[`label`],additionalProperties:!1}},multiSelect:{type:`boolean`,description:`Allow selecting multiple options. Default false.`},allowFreeText:{type:`boolean`,description:`Show a free-text input. Default true.`}},required:[`question`,`options`],additionalProperties:!1}}},required:[`questions`],additionalProperties:!1},E={name:g,description:`Ask the user multiple-choice questions and wait for their answers. Use only when blocked on a decision that is the user's to make: a preference, a choice between valid approaches, or information you cannot infer. Each question offers 2-4 options plus an automatic free-text input. The result maps each question to its answer (an array when multiSelect); a question absent from the result was skipped.`,parametersSchema:T,origin:`sdk`,annotations:{readOnlyHint:!0}},D=e=>{let t=[],n=e?.features?.askUserQuestion;return n?.expose===!0&&n.enabled!==!1&&t.push(E),C(e).expose&&t.push(b),t}})),k=e((()=>{}));async function A(e,t,n){let r={"Content-Type":`application/json`,...e.headers};e.getHeaders&&Object.assign(r,await e.getHeaders());let i={executionId:t.executionId,approvalId:t.approvalId,decision:n,streamResponse:!0},a=(t,n)=>fetch(`${e.clientApiBase()}${t}`,{method:`POST`,headers:r,body:JSON.stringify({...n,...i})}),o=`/v1/agents/${t.agentId}/approve`;if(!e.isClientTokenMode())return a(o);let{sessionId:s}=await e.initSession(),c=await a(`/v1/client/approve`,{sessionId:s});if(c.status===404){let e=await c.clone().json().catch(()=>null);if(!e||e.error===`Not Found`)return a(o)}return c}async function j(e,t,n,r){let i=e.isClientTokenMode(),a=i?e.getClientApiUrl(`resume`):`${e.config.apiUrl?.replace(/\/+$/,``)||`https://api.runtype.com`}/resume`,o,s=null;if(i){let t=await e.initSession();o=t.sessionId,t.durableRecovery?.enabled===!0&&(s=await e.readVisitorToken())}let c={"Content-Type":`application/json`,...s?{"X-Visitor-Token":s}:{},...e.headers};e.getHeaders&&Object.assign(c,await e.getHeaders());let l={executionId:t,toolOutputs:n,streamResponse:r?.streamResponse??!0,...r?.after?{after:r.after}:{}};if(o&&(l.sessionId=o),i&&o){let t=[...D(e.config),...await(await e.getWebMcpBridge())?.snapshotForDispatch()??[]],{response:n,commit:i}=await e.sendWithClientToolsDiff(o,t,t=>{let n={...l,...t};return e.debug&&console.debug(`[AgentWidgetClient] client token resume`,n),fetch(a,{method:`POST`,headers:c,body:JSON.stringify(n),signal:r?.signal})},{emptyMeansReplace:!0});return n.ok&&i(),n}return fetch(a,{method:`POST`,headers:c,body:JSON.stringify(l),signal:r?.signal})}var M=e((()=>{O(),k()}));function ee(e){let t=e.toLowerCase(),n={"application/pdf":`pdf`,"application/json":`json`,"application/zip":`zip`,"text/plain":`txt`,"text/csv":`csv`,"text/markdown":`md`}[t];if(n)return`attachment.${n}`;let r=t.indexOf(`/`);if(r>0){let e=t.slice(r+1).split(`;`)[0]?.trim()??``;if(e&&e!==`octet-stream`&&/^[a-z0-9.+-]+$/i.test(e))return`attachment.${e}`}return`attachment`}function N(e,t){if(!e)return t;let n=e.trim(),r=t.trim();if(n.length===0)return t;if(r.length===0)return e;let i=F(n);if(!F(r))return e;if(!i||r===n||r.startsWith(n))return t;let a=m(e);return m(t)!==null&&a===null?t:e}async function te(e,t,n,r,i,a,o){if(!e.parseSSEEvent)return!1;try{let s=await e.parseSSEEvent(t);if(s===null)return!1;let c=e=>{let t={id:`assistant-${Date.now()}-${Math.random().toString(16).slice(2)}`,role:`assistant`,content:``,createdAt:(/* @__PURE__ */ new Date()).toISOString(),streaming:!0,variant:`assistant`,sequence:a(),...e!==void 0&&{partId:e}};return r.current=t,i(t),t},l=e=>r.current?r.current:c(e);if(s.text!==void 0){s.partId!==void 0&&o.current!==null&&s.partId!==o.current&&(r.current&&(r.current.streaming=!1,i(r.current)),c(s.partId)),s.partId!==void 0&&(o.current=s.partId);let e=l(s.partId);s.partId!==void 0&&!e.partId&&(e.partId=s.partId),e.content+=s.text,i(e)}return s.done&&(r.current&&(r.current.streaming=!1,i(r.current)),o.current=null,n({type:`status`,status:`idle`})),s.error&&(o.current=null,n({type:`error`,error:Error(s.error)})),!0}catch(e){return typeof console<`u`&&console.error(`[AgentWidget] parseSSEEvent error:`,e),!1}}async function P(e,t,n,i,a){let o=t.getReader(),s=new TextDecoder,c=``,d=Date.now(),f=0,p=()=>d+f++,h=e=>{let t=e.reasoning?{...e.reasoning,chunks:[...e.reasoning.chunks]}:void 0,n=e.toolCall?{...e.toolCall,chunks:e.toolCall.chunks?[...e.toolCall.chunks]:void 0}:void 0,r=e.tools?e.tools.map(e=>({...e,chunks:e.chunks?[...e.chunks]:void 0})):void 0;return{...e,reasoning:t,toolCall:n,tools:r}},g=e=>{if(e.role!==`assistant`||e.variant)return!0;let t=Array.isArray(e.contentParts)&&e.contentParts.length>0,n=typeof e.rawContent==`string`&&e.rawContent.trim()!==``;return typeof e.content==`string`&&e.content.trim()!==``||t||n||!!e.stopReason},_=e=>{g(e)&&n({type:`message`,message:h(e)})},v=null,y=null,b={current:null},x={current:null},S=null,C=``,w=/* @__PURE__ */ new Map,T=/* @__PURE__ */ new Map,E=/* @__PURE__ */ new Map,D=/* @__PURE__ */ new Map,O=/* @__PURE__ */ new Map,k=i,A=!1,j=()=>{if(v)return v;let e,t=``,n=S;return!A&&k?(e=k,A=!0,t=a??``):e=k&&n?`${k}_${n}`:`assistant-${Date.now()}-${Math.random().toString(16).slice(2)}`,v={id:e,role:`assistant`,content:t,createdAt:(/* @__PURE__ */ new Date()).toISOString(),streaming:!0,sequence:p()},_(v),v},M=e=>{let t=D.get(e);if(t)return t;let n={id:`reason-${e}`,role:`assistant`,content:``,createdAt:(/* @__PURE__ */ new Date()).toISOString(),streaming:!0,variant:`reasoning`,sequence:p(),reasoning:{id:e,status:`streaming`,chunks:[]}};return D.set(e,n),_(n),n},P=/* @__PURE__ */ new Set,F=/* @__PURE__ */ new Map,I=/* @__PURE__ */ new Set,L=/* @__PURE__ */ new Map,ne=e=>{if(!e)return!1;let t=e.replace(/_+/g,`_`).replace(/^_|_$/g,``);return t===`emit_artifact_markdown`||t===`emit_artifact_component`},R=e=>{let t=O.get(e);if(t)return t;let n={id:`tool-${e}`,role:`assistant`,content:``,createdAt:(/* @__PURE__ */ new Date()).toISOString(),streaming:!0,variant:`tool`,sequence:p(),toolCall:{id:e,status:`pending`}};return O.set(e,n),_(n),n},z=e=>{if(typeof e==`number`&&Number.isFinite(e))return e;if(typeof e==`string`){let t=Number(e);if(!Number.isNaN(t)&&Number.isFinite(t))return t;let n=Date.parse(e);if(!Number.isNaN(n))return n}return Date.now()},B=e=>{if(typeof e==`string`)return e;if(e==null)return``;try{return JSON.stringify(e)}catch{return String(e)}},V=/* @__PURE__ */ new Map,H=/* @__PURE__ */ new Map,re=(e,t)=>{let n=B(t),r=N(H.get(e.id),n);e.rawContent=r;let i=V.get(e.id),a=t=>{let n=e.content??``;t.trim()!==``&&(n.trim().length===0||t.startsWith(n)||t.trimStart().startsWith(n.trim()))&&(e.content=t)},o=()=>{if(i){let e=i.close?.();e instanceof Promise&&e.catch(()=>{})}V.delete(e.id),H.delete(e.id),e.streaming=!1,_(e)};if(!i){a(n),o();return}let s=m(r);if(s!==null&&s.trim()!==``){a(s),o();return}let c=e=>{let t=typeof e==`string`?e:e?.text??null;if(t!==null&&t.trim()!==``)return t;let r=i.getExtractedText();return r!==null&&r.trim()!==``?r:n},l;try{l=i.processChunk(r)}catch{a(n),o();return}l instanceof Promise?l.then(e=>{a(c(e)),o()}).catch(()=>{a(n),o()}):(a(c(l)),o())},U=null,W=(t,n,r,i)=>{t.rawContent=n,V.has(t.id)||V.set(t.id,e.createStreamParser());let a=V.get(t.id),o=n.trim().startsWith(`{`)||n.trim().startsWith(`[`);if(o&&H.set(t.id,n),a.__isPlainTextParser===!0){t.content=i===void 0?t.content+r:n,H.delete(t.id),V.delete(t.id),t.rawContent=void 0,_(t);return}let s=a.processChunk(n);if(s instanceof Promise)s.then(e=>{let a=typeof e==`string`?e:e?.text??null;a!==null&&a.trim()!==``?(t.content=a,_(t)):!o&&!n.trim().startsWith(`<`)&&(t.content=i===void 0?t.content+r:n,H.delete(t.id),V.delete(t.id),t.rawContent=void 0,_(t))}).catch(()=>{t.content=i===void 0?t.content+r:n,H.delete(t.id),V.delete(t.id),t.rawContent=void 0,_(t)});else{let e=typeof s==`string`?s:s?.text??null;e!==null&&e.trim()!==``?(t.content=e,_(t)):!o&&!n.trim().startsWith(`<`)&&(t.content=i===void 0?t.content+r:n,H.delete(t.id),V.delete(t.id),t.rawContent=void 0,_(t))}},G=(e,t)=>{let n=t??e.content;if(n==null||n===``){e.streaming=!1,_(e);return}let r=H.get(e.id)??B(n);e.rawContent=r;let i=V.get(e.id),a=null,o=!1;if(i&&(a=i.getExtractedText(),a===null&&(a=m(r)),a===null)){let t=i.processChunk(r);t instanceof Promise?(o=!0,t.then(t=>{let n=typeof t==`string`?t:t?.text??null;n!==null&&(e.content=n,e.streaming=!1,V.delete(e.id),H.delete(e.id),_(e))}).catch(()=>{})):a=typeof t==`string`?t:t?.text??null}if(!o){a!==null&&a.trim()!==``?e.content=a:H.has(e.id)||(e.content=B(n));let t=V.get(e.id);if(t){let n=t.close?.();n instanceof Promise&&n.catch(()=>{}),V.delete(e.id)}H.delete(e.id),e.streaming=!1,_(e)}},K=(e,t,n)=>{let r=T.get(e);if(r)return r;let i={id:`nested-${t}-${e}`,role:`assistant`,content:``,createdAt:(/* @__PURE__ */ new Date()).toISOString(),streaming:!0,sequence:p(),...n?{variant:n}:{},...n===`reasoning`?{reasoning:{id:e,status:`streaming`,chunks:[]}}:{},agentMetadata:{parentToolId:t}};return T.set(e,i),_(i),i},q=[],J,Y=/* @__PURE__ */ new Map,X=0,Z=`agent`,ie=!1,Q=null,$=null,ae=e.config().iterationDisplay??`separate`;for(J=()=>{for(let t=0;t<q.length;t++){let i=q[t];if(!ie&&Z!==`flow`&&typeof i.stepType==`string`&&(Z=`flow`),i.type===`reasoning_start`){let e=typeof i.id==`string`?i.id:null,t=typeof i.parentToolCallId==`string`&&i.parentToolCallId?i.parentToolCallId:null;if(e&&t){w.set(e,t),K(e,t,`reasoning`);continue}let n=i.id,r=M(n);r.reasoning=r.reasoning??{id:n,status:`streaming`,chunks:[]},r.reasoning.startedAt=r.reasoning.startedAt??Date.now(),r.reasoning.completedAt=void 0,r.reasoning.durationMs=void 0,(i.scope===`loop`||i.scope===`turn`)&&(r.reasoning.scope=i.scope),r.streaming=!0,r.reasoning.status=`streaming`,_(r)}else if(i.type===`reasoning_delta`){let e=typeof i.id==`string`?i.id:null;if(e&&w.has(e)&&T.has(e)){let t=T.get(e),n=i.delta;n&&t.reasoning&&(t.reasoning.chunks.push(String(n)),_(t));continue}let t=i.id,n=M(t);n.reasoning=n.reasoning??{id:t,status:`streaming`,chunks:[]},n.reasoning.startedAt=n.reasoning.startedAt??Date.now(),i.delta&&n.reasoning.chunks.push(i.delta),n.reasoning.status=`streaming`,n.streaming=!0,_(n)}else if(i.type===`reasoning_complete`){let e=typeof i.id==`string`?i.id:null;if(e&&w.has(e)&&T.has(e)){let t=T.get(e);if(t.reasoning){let e=typeof i.text==`string`?i.text:``;e&&t.reasoning.chunks.length===0&&t.reasoning.chunks.push(e),t.reasoning.status=`complete`,t.streaming=!1,_(t)}w.delete(e),T.delete(e);continue}let t=i.id,n=typeof i.text==`string`?i.text:``;!D.get(t)&&(n||i.scope===`loop`)&&M(t);let r=D.get(t);if(r?.reasoning){(i.scope===`loop`||i.scope===`turn`)&&(r.reasoning.scope=i.scope),n&&r.reasoning.chunks.length===0&&r.reasoning.chunks.push(n),r.reasoning.status=`complete`,r.reasoning.completedAt=Date.now();let e=r.reasoning.startedAt??Date.now();r.reasoning.durationMs=Math.max(0,(r.reasoning.completedAt??Date.now())-e),r.streaming=!1,_(r)}}else if(i.type===`tool_start`){v&&=(v.streaming=!1,_(v),null),typeof i.iteration==`number`&&(X=i.iteration);let e=i.toolCallId,t=i.toolName;if(ne(t)){P.add(e);continue}let n=R(e),r=n.toolCall??{id:e,status:`pending`};r.name=t??r.name,r.status=`running`,r.success=void 0,r.error=void 0,r.duration=void 0,i.parameters!==void 0&&(r.args=i.parameters),r.startedAt=r.startedAt??z(i.startedAt),r.completedAt=void 0,r.durationMs=void 0,n.toolCall=r,n.streaming=!0,i.executionId&&(n.agentMetadata={executionId:i.executionId,iteration:i.iteration}),_(n)}else if(i.type===`tool_output_delta`){let e=i.toolCallId;if(P.has(e))continue;let t=R(e),n=t.toolCall??{id:e,status:`running`};n.startedAt=n.startedAt??Date.now();let r=i.delta;r&&(n.chunks=n.chunks??[],n.chunks.push(String(r))),n.status=`running`,t.toolCall=n,t.streaming=!0,i.executionId&&(t.agentMetadata=t.agentMetadata??{executionId:i.executionId,iteration:X}),_(t)}else if(i.type===`tool_complete`){let e=i.toolCallId;if(P.has(e)){P.delete(e);continue}let t=R(e),n=t.toolCall??{id:e,status:`running`};n.status=`complete`,i.result!==void 0&&(n.result=i.result),n.name=i.toolName??n.name,n.success=i.success,n.error=i.error,n.completedAt=Date.now();let r=i.executionTime;if(typeof r==`number`)n.durationMs=r,n.duration=r;else{let e=n.startedAt??Date.now();n.durationMs=Math.max(0,(n.completedAt??Date.now())-e)}t.toolCall=n,t.streaming=!1,i.executionId&&(t.agentMetadata=t.agentMetadata??{executionId:i.executionId,iteration:i.iteration??X}),_(t)}else if(i.type===`await`&&i.toolName){let e=typeof i.toolCallId==`string`&&i.toolCallId.length>0?i.toolCallId:void 0,t=e??i.toolId??`local-${p()}`,n=R(t),a=i.toolName,o=i.origin===`webmcp`&&!r(a)?`webmcp:${a}`:a,s=r(o),c=n.toolCall??{id:t,status:`pending`};c.name=o,c.args=i.parameters,c.status=s?`running`:`complete`,c.chunks=c.chunks??[],c.startedAt=c.startedAt??z(i.awaitedAt),s?(c.completedAt=void 0,c.duration=void 0,c.durationMs=void 0):c.completedAt=c.completedAt??c.startedAt,n.toolCall=c,n.streaming=!1,n.agentMetadata={...n.agentMetadata,executionId:i.executionId??n.agentMetadata?.executionId,awaitingLocalTool:!0,...e?{webMcpToolCallId:e}:{}},_(n)}else if(i.type===`text_start`){let e=typeof i.id==`string`?i.id:null,t=typeof i.parentToolCallId==`string`&&i.parentToolCallId?i.parentToolCallId:null;if(e&&t){w.set(e,t);continue}let n=v;n&&(Z===`flow`?(G(n),U=n):(n.streaming=!1,_(n)),v=null),S=typeof i.id==`string`?i.id:S,C=``}else if(i.type===`text_delta`){let e=typeof i.id==`string`?i.id:null,t=e?w.get(e):void 0;if(e&&t){let n=typeof i.delta==`string`?i.delta:``,r=(E.get(e)??``)+n;if(E.set(e,r),r.trim()===``)continue;let a=K(e,t);a.agentMetadata={...a.agentMetadata,executionId:i.executionId,parentToolId:t},W(a,r,n,void 0);continue}if(S=typeof i.id==`string`?i.id:S,Z===`flow`){let e=typeof i.delta==`string`?i.delta:``;if(C+=e,C.trim()===``)continue;let t=j();t.agentMetadata={executionId:i.executionId,iteration:X},W(t,C,e,void 0),y=t;continue}let n=typeof i.delta==`string`?i.delta:``;C+=n;let r=j();r.agentMetadata={executionId:i.executionId,iteration:X,turnId:Q??void 0,agentName:$?.agentName},W(r,C,n,void 0),y=r}else if(i.type===`text_complete`){let e=typeof i.id==`string`?i.id:null;if(e&&w.has(e)){let t=T.get(e);t&&G(t),w.delete(e),E.delete(e),T.delete(e);continue}let t=v;t&&(Z===`flow`?(G(t),U=t):((t.content??``)===``&&typeof i.text==`string`&&(t.content=i.text),t.streaming=!1,_(t)),v=null),S=null,C=``}else if(i.type===`step_complete`){if(i.stepType===`tool`)continue;if(i.success===!1){let e=i.error||`Step failed`;n({type:`error`,error:Error(e)});let t=v;t&&t.streaming&&(t.streaming=!1,_(t)),n({type:`status`,status:`idle`});continue}{let e=U;U=null;let t=i.stopReason,n=(i.result&&typeof i.result==`object`?i.result:null)?.response;if(e)t&&(e.stopReason=t),n==null?e.streaming!==!1&&(V.delete(e.id),H.delete(e.id),e.streaming=!1,_(e)):re(e,n);else{let e=n!=null&&n!==``;if(e||t&&t!==`end_turn`&&t!==`unknown`){let r=j();t&&(r.stopReason=t),e?G(r,n):(r.streaming=!1,_(r))}}continue}}else if(i.type===`execution_start`)Z=i.kind===`flow`?`flow`:`agent`,ie=!0,Z===`agent`&&($={executionId:i.executionId,agentId:i.agentId??`virtual`,agentName:i.agentName??``});else if(i.type===`turn_start`){let e=typeof i.iteration==`number`?i.iteration:X;if(e!==X){if(ae===`separate`&&e>1){let e=v;e&&(e.streaming=!1,_(e),v=null)}X=e}Q=typeof i.id==`string`?i.id:null,y=null}else if(i.type===`tool_input_delta`){let e=i.toolCallId;if(e){let t=O.get(e);t?.toolCall&&(t.toolCall.chunks=t.toolCall.chunks??[],t.toolCall.chunks.push(i.delta??``),_(t))}}else if(i.type===`tool_input_complete`){if(P.has(i.toolCallId))continue;let e=R(i.toolCallId),t=e.toolCall;t.args=i.parameters,t.name=i.toolName??t.name,_(e)}else if(i.type===`turn_complete`){let e=i.stopReason,t=v??y;if(e&&t!==null){let n=i.id;(!n||t.agentMetadata?.turnId===n)&&(t.stopReason=e,_(t))}Q===i.id&&(Q=null)}else if(i.type===`media_start`){let e=String(i.id);Y.set(e,{mediaType:typeof i.mediaType==`string`?i.mediaType:void 0,toolCallId:i.toolCallId,parts:[]})}else if(i.type===`media_delta`){let e=Y.get(String(i.id));e&&typeof i.delta==`string`&&e.parts.push(i.delta)}else if(i.type===`media_complete`){let e=String(i.id),t=Y.get(e);Y.delete(e);let n=(typeof i.mediaType==`string`?i.mediaType:void 0)??t?.mediaType??`application/octet-stream`,r=typeof i.data==`string`?i.data:void 0,a=typeof i.url==`string`?i.url:t&&t.parts.length>0?t.parts.join(``):void 0,o=null;if(r)o={type:`media`,data:r,mediaType:n};else if(a){let e=n.toLowerCase();o={type:e===`image`||e.startsWith(`image/`)?`image-url`:`file-url`,url:a,mediaType:n}}let s=i.toolCallId??t?.toolCallId,c=o?[o]:[],l=[];for(let e of c){if(!e||typeof e!=`object`)continue;let t=e,n=typeof t.type==`string`?t.type:void 0,r=typeof t.mediaType==`string`?t.mediaType.toLowerCase():``,i=null,a=``;if(n===`media`){let e=typeof t.data==`string`?t.data:void 0;if(!e)continue;a=r.length>0?r:`application/octet-stream`,i=`data:${a};base64,${e}`}else if(n===`image-url`){let e=typeof t.url==`string`?t.url:void 0;if(!e)continue;a=r,i=e}else if(n===`file-url`){let e=typeof t.url==`string`?t.url:void 0;if(!e)continue;a=r,i=e}else continue;if(i){if(n===`image-url`||a.startsWith(`image/`))l.push({type:`image`,image:i,...a.includes(`/`)?{mimeType:a}:{}});else if(a.startsWith(`audio/`))l.push({type:`audio`,audio:i,mimeType:a});else if(a.startsWith(`video/`))l.push({type:`video`,video:i,mimeType:a});else{let e=a||`application/octet-stream`;l.push({type:`file`,data:i,mimeType:e,filename:ee(e)})}}}if(l.length>0){let e=p(),t=s,n={id:`agent-media-${typeof t==`string`&&t.length>0?`${t}-${e}`:String(e)}`,role:`assistant`,content:``,contentParts:l,createdAt:(/* @__PURE__ */ new Date()).toISOString(),streaming:!1,sequence:e,agentMetadata:{executionId:i.executionId,iteration:X}};_(n);let r=v;r&&(r.streaming=!1,_(r)),v=null,b.current=null}}else if(i.type===`execution_complete`){let e=v;e&&(i.kind===`flow`&&e.streaming!==!1?G(e):(e.streaming=!1,_(e)),v=null),S=null,C=``,U=null,n({type:`status`,status:`idle`,terminal:!0})}else if(i.type===`execution_error`){let e=typeof i.error==`string`?i.error:i.error?.message??`Execution error`;n({type:`error`,error:Error(e)})}else if(i.type!==`ping`){if(i.type===`approval_start`){let e=i.approvalId??`approval-${p()}`,t={id:`approval-${e}`,role:`assistant`,content:``,createdAt:(/* @__PURE__ */ new Date()).toISOString(),streaming:!1,variant:`approval`,sequence:p(),approval:{id:e,status:`pending`,agentId:$?.agentId??`virtual`,executionId:i.executionId??$?.executionId??``,toolName:i.toolName??``,toolType:i.toolType,description:i.description??`Execute ${i.toolName??`tool`}`,...typeof i.reason==`string`&&i.reason?{reason:i.reason}:{},parameters:i.parameters,...typeof i.toolCallId==`string`&&i.toolCallId?{toolCallId:i.toolCallId}:{}}};_(t)}else if(i.type===`approval_complete`){let e=i.approvalId;if(e){let t={id:`approval-${e}`,role:`assistant`,content:``,createdAt:(/* @__PURE__ */ new Date()).toISOString(),streaming:!1,variant:`approval`,sequence:p(),approval:{id:e,status:i.decision??`approved`,agentId:$?.agentId??`virtual`,executionId:i.executionId??$?.executionId??``,toolName:``,description:``,resolvedAt:Date.now()}};_(t)}}else if(i.type===`artifact_start`||i.type===`artifact_delta`||i.type===`artifact_update`||i.type===`artifact_complete`){if(i.type===`artifact_start`){let t=i.artifactType,r=String(i.id),a=typeof i.title==`string`?i.title:void 0,o=i.file,s;if(o&&typeof o==`object`&&!Array.isArray(o)&&typeof o.path==`string`&&typeof o.mimeType==`string`&&(s={path:o.path,mimeType:o.mimeType,...typeof o.language==`string`?{language:o.language}:{}}),n({type:`artifact_start`,id:r,artifactType:t,title:a,component:typeof i.component==`string`?i.component:void 0,...s?{file:s}:{}}),L.set(r,{markdown:``,title:a,file:s}),!I.has(r)){I.add(r);let n=l(e.config().features?.artifacts,{artifactType:t,...s?{file:s}:{}}),o=typeof i.component==`string`?i.component:void 0,c={id:`artifact-ref-${r}`,role:`assistant`,content:``,createdAt:(/* @__PURE__ */ new Date()).toISOString(),streaming:!0,sequence:p(),rawContent:u(n,{artifactId:r,title:a,artifactType:t,status:`streaming`,...s?{file:s}:{},...o?{component:o}:{}})};F.set(r,c),_(c)}}else if(i.type===`artifact_delta`){let e=String(i.id),t=typeof i.delta==`string`?i.delta:String(i.delta??``);n({type:`artifact_delta`,id:e,artDelta:t});let r=L.get(e);r&&(r.markdown+=t)}else if(i.type===`artifact_update`){let e=i.props&&typeof i.props==`object`&&!Array.isArray(i.props)?i.props:{};n({type:`artifact_update`,id:String(i.id),props:e,component:typeof i.component==`string`?i.component:void 0});let t=L.get(String(i.id));t&&(t.props={...t.props??{},...e})}else if(i.type===`artifact_complete`){let e=String(i.id);n({type:`artifact_complete`,id:e});let t=F.get(e);if(t){t.streaming=!1;try{let n=JSON.parse(t.rawContent??`{}`);if(n.props){n.props.status=`complete`;let t=L.get(e);t?.markdown&&(n.props.markdown=t.markdown),t?.file&&(n.props.file=t.file),n.component===`PersonaArtifactInline`&&t?.props&&Object.keys(t.props).length>0&&(n.props.componentProps=t.props)}t.rawContent=JSON.stringify(n)}catch{}L.delete(e),_(t),F.delete(e)}}}else if(i.type===`error`&&i.recoverable===!1&&i.error!=null&&i.error!==``){let e=typeof i.error==`string`?i.error:i.error?.message==null?`Execution error`:String(i.error.message);n({type:`error`,error:Error(e)});let t=v;t&&t.streaming&&(t.streaming=!1,_(t)),n({type:`status`,status:`idle`})}}}q.length=0};;){let{done:t,value:r}=await o.read();if(t)break;c+=s.decode(r,{stream:!0});let i=c.split(`
2
+ \r `.includes(e[o]);)o++};return l()};e.parse=o})),m,h=e((()=>{p(),m=e=>{try{let t=JSON.parse(e);if(t&&typeof t==`object`&&typeof t.text==`string`)return t.text}catch{return null}return null}})),g,_=e((()=>{p(),g=`ask_user_question`})),v,y,b,x,S,C,w=e((()=>{v=`suggest_replies`,y={type:`object`,properties:{suggestions:{type:`array`,minItems:1,maxItems:4,description:`1-4 short, distinct follow-up replies, phrased in the user's voice.`,items:{type:`object`,properties:{label:{type:`string`,minLength:1,maxLength:80},prompt:{type:`string`,minLength:1,maxLength:500},description:{type:`string`,minLength:1,maxLength:160}},required:[`label`],additionalProperties:!1}}},required:[`suggestions`],additionalProperties:!1},b={name:v,description:"Offer the user tappable quick-reply suggestions for their next message. Call at most once per turn, as the last action after your reply text is complete. Give each suggestion a `label` with the short visible text, an optional `prompt` with the fuller text placed as the user's message (defaults to the label), and an optional `description` with one line of supporting copy. Suggestions are sent as the user's next message, so phrase prompts in the user's voice (e.g. \"Tell me more about pricing\"). Keep them short and distinct. The result only confirms the suggestions were shown: do not add further commentary after calling this tool; end your turn.",parametersSchema:y,origin:`sdk`,annotations:{readOnlyHint:!0}},x=/* @__PURE__ */ new Set,S=(e,t,n)=>{let r=`${e}:${t}:${n}`;x.has(r)||(x.add(r),console.warn(`[persona] suggestions.followUps.${e} and features.suggestReplies.${e} disagree; suggestions.followUps.${e} wins.`))},C=e=>{let t=e?.suggestions?.followUps,n=e?.features?.suggestReplies,r=e=>{let r=t?.[e],i=n?.[e];r!==void 0&&i!==void 0&&r!==i&&S(e,i,r)};e&&(r(`enabled`),r(`expose`));let i=t?.enabled??n?.enabled??!0;return{enabled:i,expose:i?t?.expose??n?.expose??!1:!1}}})),T,E,D,O=e((()=>{_(),w(),T={type:`object`,properties:{questions:{type:`array`,minItems:1,maxItems:8,description:`Questions to ask the user. Prefer a single question.`,items:{type:`object`,properties:{question:{type:`string`,description:`The complete question, ending with a question mark.`},header:{type:`string`,maxLength:12,description:`Short topic label, e.g. "Auth method".`},options:{type:`array`,minItems:2,maxItems:4,description:`2-4 distinct choices. Do NOT add an "Other" option: free text is automatic.`,items:{type:`object`,properties:{label:{type:`string`,description:`Concise choice text (1-5 words).`},description:{type:`string`,description:`What the option means or implies.`}},required:[`label`],additionalProperties:!1}},multiSelect:{type:`boolean`,description:`Allow selecting multiple options. Default false.`},allowFreeText:{type:`boolean`,description:`Show a free-text input. Default true.`}},required:[`question`,`options`],additionalProperties:!1}}},required:[`questions`],additionalProperties:!1},E={name:g,description:`Ask the user multiple-choice questions and wait for their answers. Use only when blocked on a decision that is the user's to make: a preference, a choice between valid approaches, or information you cannot infer. Each question offers 2-4 options plus an automatic free-text input. The result maps each question to its answer (an array when multiSelect); a question absent from the result was skipped.`,parametersSchema:T,origin:`sdk`,annotations:{readOnlyHint:!0}},D=e=>{let t=[],n=e?.features?.askUserQuestion;return n?.expose===!0&&n.enabled!==!1&&t.push(E),C(e).expose&&t.push(b),t}})),k=e((()=>{}));async function A(e,t,n,r){let i={"Content-Type":`application/json`,...e.headers};e.getHeaders&&Object.assign(i,await e.getHeaders());let a={executionId:t.executionId,approvalId:t.approvalId,decision:n,streamResponse:!0},o=(t,n)=>fetch(`${e.clientApiBase()}${t}`,{method:`POST`,headers:i,body:JSON.stringify({...n,...a})}),s=`/v1/agents/${t.agentId}/approve`;if(!e.isClientTokenMode())return o(s);let{sessionId:c}=await e.initSession(),l=await o(`/v1/client/approve`,{sessionId:c,...r?.assistantMessageId?{assistantMessageId:r.assistantMessageId}:{}});if(l.status===404){let e=await l.clone().json().catch(()=>null);if(!e||e.error===`Not Found`)return o(s)}return l}async function j(e,t,n,r){let i=e.isClientTokenMode(),a=i?e.getClientApiUrl(`resume`):`${e.config.apiUrl?.replace(/\/+$/,``)||`https://api.runtype.com`}/resume`,o,s=null;if(i){let t=await e.initSession();o=t.sessionId,t.durableRecovery?.enabled===!0&&(s=await e.readVisitorToken())}let c={"Content-Type":`application/json`,...s?{"X-Visitor-Token":s}:{},...e.headers};e.getHeaders&&Object.assign(c,await e.getHeaders());let l={executionId:t,toolOutputs:n,streamResponse:r?.streamResponse??!0,...r?.after?{after:r.after}:{}};if(o&&(l.sessionId=o,r?.assistantMessageId&&(l.assistantMessageId=r.assistantMessageId)),i&&o){let t=[...D(e.config),...await(await e.getWebMcpBridge())?.snapshotForDispatch()??[]],{response:n,commit:i}=await e.sendWithClientToolsDiff(o,t,t=>{let n={...l,...t};return e.debug&&console.debug(`[AgentWidgetClient] client token resume`,n),fetch(a,{method:`POST`,headers:c,body:JSON.stringify(n),signal:r?.signal})},{emptyMeansReplace:!0});return n.ok&&i(),n}return fetch(a,{method:`POST`,headers:c,body:JSON.stringify(l),signal:r?.signal})}var M=e((()=>{O(),k()}));function ee(e){let t=e.toLowerCase(),n={"application/pdf":`pdf`,"application/json":`json`,"application/zip":`zip`,"text/plain":`txt`,"text/csv":`csv`,"text/markdown":`md`}[t];if(n)return`attachment.${n}`;let r=t.indexOf(`/`);if(r>0){let e=t.slice(r+1).split(`;`)[0]?.trim()??``;if(e&&e!==`octet-stream`&&/^[a-z0-9.+-]+$/i.test(e))return`attachment.${e}`}return`attachment`}function N(e,t){if(!e)return t;let n=e.trim(),r=t.trim();if(n.length===0)return t;if(r.length===0)return e;let i=F(n);if(!F(r))return e;if(!i||r===n||r.startsWith(n))return t;let a=m(e);return m(t)!==null&&a===null?t:e}async function te(e,t,n,r,i,a,o){if(!e.parseSSEEvent)return!1;try{let s=await e.parseSSEEvent(t);if(s===null)return!1;let c=e=>{let t={id:`assistant-${Date.now()}-${Math.random().toString(16).slice(2)}`,role:`assistant`,content:``,createdAt:(/* @__PURE__ */ new Date()).toISOString(),streaming:!0,variant:`assistant`,sequence:a(),...e!==void 0&&{partId:e}};return r.current=t,i(t),t},l=e=>r.current?r.current:c(e);if(s.text!==void 0){s.partId!==void 0&&o.current!==null&&s.partId!==o.current&&(r.current&&(r.current.streaming=!1,i(r.current)),c(s.partId)),s.partId!==void 0&&(o.current=s.partId);let e=l(s.partId);s.partId!==void 0&&!e.partId&&(e.partId=s.partId),e.content+=s.text,i(e)}return s.done&&(r.current&&(r.current.streaming=!1,i(r.current)),o.current=null,n({type:`status`,status:`idle`})),s.error&&(o.current=null,n({type:`error`,error:Error(s.error)})),!0}catch(e){return typeof console<`u`&&console.error(`[AgentWidget] parseSSEEvent error:`,e),!1}}async function P(e,t,n,i,a){let o=t.getReader(),s=new TextDecoder,c=``,d=Date.now(),f=0,p=()=>d+f++,h=e=>{let t=e.reasoning?{...e.reasoning,chunks:[...e.reasoning.chunks]}:void 0,n=e.toolCall?{...e.toolCall,chunks:e.toolCall.chunks?[...e.toolCall.chunks]:void 0}:void 0,r=e.tools?e.tools.map(e=>({...e,chunks:e.chunks?[...e.chunks]:void 0})):void 0;return{...e,reasoning:t,toolCall:n,tools:r}},g=e=>{if(e.role!==`assistant`||e.variant)return!0;let t=Array.isArray(e.contentParts)&&e.contentParts.length>0,n=typeof e.rawContent==`string`&&e.rawContent.trim()!==``;return typeof e.content==`string`&&e.content.trim()!==``||t||n||!!e.stopReason},_=e=>{g(e)&&n({type:`message`,message:h(e)})},v=null,y=null,b={current:null},x={current:null},S=null,C=``,w=/* @__PURE__ */ new Map,T=/* @__PURE__ */ new Map,E=/* @__PURE__ */ new Map,D=/* @__PURE__ */ new Map,O=/* @__PURE__ */ new Map,k=i,A=!1,j=()=>{if(v)return v;let e,t=``,n=S;return!A&&k?(e=k,A=!0,t=a??``):e=k&&n?`${k}_${n}`:`assistant-${Date.now()}-${Math.random().toString(16).slice(2)}`,v={id:e,role:`assistant`,content:t,createdAt:(/* @__PURE__ */ new Date()).toISOString(),streaming:!0,sequence:p()},_(v),v},M=e=>{let t=D.get(e);if(t)return t;let n={id:`reason-${e}`,role:`assistant`,content:``,createdAt:(/* @__PURE__ */ new Date()).toISOString(),streaming:!0,variant:`reasoning`,sequence:p(),reasoning:{id:e,status:`streaming`,chunks:[]}};return D.set(e,n),_(n),n},P=/* @__PURE__ */ new Set,F=/* @__PURE__ */ new Map,I=/* @__PURE__ */ new Set,L=/* @__PURE__ */ new Map,ne=e=>{if(!e)return!1;let t=e.replace(/_+/g,`_`).replace(/^_|_$/g,``);return t===`emit_artifact_markdown`||t===`emit_artifact_component`},R=e=>{let t=O.get(e);if(t)return t;let n={id:`tool-${e}`,role:`assistant`,content:``,createdAt:(/* @__PURE__ */ new Date()).toISOString(),streaming:!0,variant:`tool`,sequence:p(),toolCall:{id:e,status:`pending`}};return O.set(e,n),_(n),n},z=e=>{if(typeof e==`number`&&Number.isFinite(e))return e;if(typeof e==`string`){let t=Number(e);if(!Number.isNaN(t)&&Number.isFinite(t))return t;let n=Date.parse(e);if(!Number.isNaN(n))return n}return Date.now()},B=e=>{if(typeof e==`string`)return e;if(e==null)return``;try{return JSON.stringify(e)}catch{return String(e)}},V=/* @__PURE__ */ new Map,H=/* @__PURE__ */ new Map,re=(e,t)=>{let n=B(t),r=N(H.get(e.id),n);e.rawContent=r;let i=V.get(e.id),a=t=>{let n=e.content??``;t.trim()!==``&&(n.trim().length===0||t.startsWith(n)||t.trimStart().startsWith(n.trim()))&&(e.content=t)},o=()=>{if(i){let e=i.close?.();e instanceof Promise&&e.catch(()=>{})}V.delete(e.id),H.delete(e.id),e.streaming=!1,_(e)};if(!i){a(n),o();return}let s=m(r);if(s!==null&&s.trim()!==``){a(s),o();return}let c=e=>{let t=typeof e==`string`?e:e?.text??null;if(t!==null&&t.trim()!==``)return t;let r=i.getExtractedText();return r!==null&&r.trim()!==``?r:n},l;try{l=i.processChunk(r)}catch{a(n),o();return}l instanceof Promise?l.then(e=>{a(c(e)),o()}).catch(()=>{a(n),o()}):(a(c(l)),o())},U=null,W=(t,n,r,i)=>{t.rawContent=n,V.has(t.id)||V.set(t.id,e.createStreamParser());let a=V.get(t.id),o=n.trim().startsWith(`{`)||n.trim().startsWith(`[`);if(o&&H.set(t.id,n),a.__isPlainTextParser===!0){t.content=i===void 0?t.content+r:n,H.delete(t.id),V.delete(t.id),t.rawContent=void 0,_(t);return}let s=a.processChunk(n);if(s instanceof Promise)s.then(e=>{let a=typeof e==`string`?e:e?.text??null;a!==null&&a.trim()!==``?(t.content=a,_(t)):!o&&!n.trim().startsWith(`<`)&&(t.content=i===void 0?t.content+r:n,H.delete(t.id),V.delete(t.id),t.rawContent=void 0,_(t))}).catch(()=>{t.content=i===void 0?t.content+r:n,H.delete(t.id),V.delete(t.id),t.rawContent=void 0,_(t)});else{let e=typeof s==`string`?s:s?.text??null;e!==null&&e.trim()!==``?(t.content=e,_(t)):!o&&!n.trim().startsWith(`<`)&&(t.content=i===void 0?t.content+r:n,H.delete(t.id),V.delete(t.id),t.rawContent=void 0,_(t))}},G=(e,t)=>{let n=t??e.content;if(n==null||n===``){e.streaming=!1,_(e);return}let r=H.get(e.id)??B(n);e.rawContent=r;let i=V.get(e.id),a=null,o=!1;if(i&&(a=i.getExtractedText(),a===null&&(a=m(r)),a===null)){let t=i.processChunk(r);t instanceof Promise?(o=!0,t.then(t=>{let n=typeof t==`string`?t:t?.text??null;n!==null&&(e.content=n,e.streaming=!1,V.delete(e.id),H.delete(e.id),_(e))}).catch(()=>{})):a=typeof t==`string`?t:t?.text??null}if(!o){a!==null&&a.trim()!==``?e.content=a:H.has(e.id)||(e.content=B(n));let t=V.get(e.id);if(t){let n=t.close?.();n instanceof Promise&&n.catch(()=>{}),V.delete(e.id)}H.delete(e.id),e.streaming=!1,_(e)}},K=(e,t,n)=>{let r=T.get(e);if(r)return r;let i={id:`nested-${t}-${e}`,role:`assistant`,content:``,createdAt:(/* @__PURE__ */ new Date()).toISOString(),streaming:!0,sequence:p(),...n?{variant:n}:{},...n===`reasoning`?{reasoning:{id:e,status:`streaming`,chunks:[]}}:{},agentMetadata:{parentToolId:t}};return T.set(e,i),_(i),i},q=[],J,Y=/* @__PURE__ */ new Map,X=0,Z=`agent`,ie=!1,Q=null,$=null,ae=e.config().iterationDisplay??`separate`;for(J=()=>{for(let t=0;t<q.length;t++){let i=q[t];if(!ie&&Z!==`flow`&&typeof i.stepType==`string`&&(Z=`flow`),i.type===`reasoning_start`){let e=typeof i.id==`string`?i.id:null,t=typeof i.parentToolCallId==`string`&&i.parentToolCallId?i.parentToolCallId:null;if(e&&t){w.set(e,t),K(e,t,`reasoning`);continue}let n=i.id,r=M(n);r.reasoning=r.reasoning??{id:n,status:`streaming`,chunks:[]},r.reasoning.startedAt=r.reasoning.startedAt??Date.now(),r.reasoning.completedAt=void 0,r.reasoning.durationMs=void 0,(i.scope===`loop`||i.scope===`turn`)&&(r.reasoning.scope=i.scope),r.streaming=!0,r.reasoning.status=`streaming`,_(r)}else if(i.type===`reasoning_delta`){let e=typeof i.id==`string`?i.id:null;if(e&&w.has(e)&&T.has(e)){let t=T.get(e),n=i.delta;n&&t.reasoning&&(t.reasoning.chunks.push(String(n)),_(t));continue}let t=i.id,n=M(t);n.reasoning=n.reasoning??{id:t,status:`streaming`,chunks:[]},n.reasoning.startedAt=n.reasoning.startedAt??Date.now(),i.delta&&n.reasoning.chunks.push(i.delta),n.reasoning.status=`streaming`,n.streaming=!0,_(n)}else if(i.type===`reasoning_complete`){let e=typeof i.id==`string`?i.id:null;if(e&&w.has(e)&&T.has(e)){let t=T.get(e);if(t.reasoning){let e=typeof i.text==`string`?i.text:``;e&&t.reasoning.chunks.length===0&&t.reasoning.chunks.push(e),t.reasoning.status=`complete`,t.streaming=!1,_(t)}w.delete(e),T.delete(e);continue}let t=i.id,n=typeof i.text==`string`?i.text:``;!D.get(t)&&(n||i.scope===`loop`)&&M(t);let r=D.get(t);if(r?.reasoning){(i.scope===`loop`||i.scope===`turn`)&&(r.reasoning.scope=i.scope),n&&r.reasoning.chunks.length===0&&r.reasoning.chunks.push(n),r.reasoning.status=`complete`,r.reasoning.completedAt=Date.now();let e=r.reasoning.startedAt??Date.now();r.reasoning.durationMs=Math.max(0,(r.reasoning.completedAt??Date.now())-e),r.streaming=!1,_(r)}}else if(i.type===`tool_start`){v&&=(v.streaming=!1,_(v),null),typeof i.iteration==`number`&&(X=i.iteration);let e=i.toolCallId,t=i.toolName;if(ne(t)){P.add(e);continue}let n=R(e),r=n.toolCall??{id:e,status:`pending`};r.name=t??r.name,r.status=`running`,r.success=void 0,r.error=void 0,r.duration=void 0,i.parameters!==void 0&&(r.args=i.parameters),r.startedAt=r.startedAt??z(i.startedAt),r.completedAt=void 0,r.durationMs=void 0,n.toolCall=r,n.streaming=!0,i.executionId&&(n.agentMetadata={executionId:i.executionId,iteration:i.iteration}),_(n)}else if(i.type===`tool_output_delta`){let e=i.toolCallId;if(P.has(e))continue;let t=R(e),n=t.toolCall??{id:e,status:`running`};n.startedAt=n.startedAt??Date.now();let r=i.delta;r&&(n.chunks=n.chunks??[],n.chunks.push(String(r))),n.status=`running`,t.toolCall=n,t.streaming=!0,i.executionId&&(t.agentMetadata=t.agentMetadata??{executionId:i.executionId,iteration:X}),_(t)}else if(i.type===`tool_complete`){let e=i.toolCallId;if(P.has(e)){P.delete(e);continue}let t=R(e),n=t.toolCall??{id:e,status:`running`};n.status=`complete`,i.result!==void 0&&(n.result=i.result),n.name=i.toolName??n.name,n.success=i.success,n.error=i.error,n.completedAt=Date.now();let r=i.executionTime;if(typeof r==`number`)n.durationMs=r,n.duration=r;else{let e=n.startedAt??Date.now();n.durationMs=Math.max(0,(n.completedAt??Date.now())-e)}t.toolCall=n,t.streaming=!1,i.executionId&&(t.agentMetadata=t.agentMetadata??{executionId:i.executionId,iteration:i.iteration??X}),_(t)}else if(i.type===`await`&&i.toolName){let e=typeof i.toolCallId==`string`&&i.toolCallId.length>0?i.toolCallId:void 0,t=e??i.toolId??`local-${p()}`,n=R(t),a=i.toolName,o=i.origin===`webmcp`&&!r(a)?`webmcp:${a}`:a,s=r(o),c=n.toolCall??{id:t,status:`pending`};c.name=o,c.args=i.parameters,c.status=s?`running`:`complete`,c.chunks=c.chunks??[],c.startedAt=c.startedAt??z(i.awaitedAt),s?(c.completedAt=void 0,c.duration=void 0,c.durationMs=void 0):c.completedAt=c.completedAt??c.startedAt,n.toolCall=c,n.streaming=!1,n.agentMetadata={...n.agentMetadata,executionId:i.executionId??n.agentMetadata?.executionId,awaitingLocalTool:!0,...e?{webMcpToolCallId:e}:{}},_(n)}else if(i.type===`text_start`){let e=typeof i.id==`string`?i.id:null,t=typeof i.parentToolCallId==`string`&&i.parentToolCallId?i.parentToolCallId:null;if(e&&t){w.set(e,t);continue}let n=v;n&&(Z===`flow`?(G(n),U=n):(n.streaming=!1,_(n)),v=null),S=typeof i.id==`string`?i.id:S,C=``}else if(i.type===`text_delta`){let e=typeof i.id==`string`?i.id:null,t=e?w.get(e):void 0;if(e&&t){let n=typeof i.delta==`string`?i.delta:``,r=(E.get(e)??``)+n;if(E.set(e,r),r.trim()===``)continue;let a=K(e,t);a.agentMetadata={...a.agentMetadata,executionId:i.executionId,parentToolId:t},W(a,r,n,void 0);continue}if(S=typeof i.id==`string`?i.id:S,Z===`flow`){let e=typeof i.delta==`string`?i.delta:``;if(C+=e,C.trim()===``)continue;let t=j();t.agentMetadata={executionId:i.executionId,iteration:X},W(t,C,e,void 0),y=t;continue}let n=typeof i.delta==`string`?i.delta:``;C+=n;let r=j();r.agentMetadata={executionId:i.executionId,iteration:X,turnId:Q??void 0,agentName:$?.agentName},W(r,C,n,void 0),y=r}else if(i.type===`text_complete`){let e=typeof i.id==`string`?i.id:null;if(e&&w.has(e)){let t=T.get(e);t&&G(t),w.delete(e),E.delete(e),T.delete(e);continue}let t=v;t&&(Z===`flow`?(G(t),U=t):((t.content??``)===``&&typeof i.text==`string`&&(t.content=i.text),t.streaming=!1,_(t)),v=null),S=null,C=``}else if(i.type===`step_complete`){if(i.stepType===`tool`)continue;if(i.success===!1){let e=i.error||`Step failed`;n({type:`error`,error:Error(e)});let t=v;t&&t.streaming&&(t.streaming=!1,_(t)),n({type:`status`,status:`idle`});continue}{let e=U;U=null;let t=i.stopReason,n=(i.result&&typeof i.result==`object`?i.result:null)?.response;if(e)t&&(e.stopReason=t),n==null?e.streaming!==!1&&(V.delete(e.id),H.delete(e.id),e.streaming=!1,_(e)):re(e,n);else{let e=n!=null&&n!==``;if(e||t&&t!==`end_turn`&&t!==`unknown`){let r=j();t&&(r.stopReason=t),e?G(r,n):(r.streaming=!1,_(r))}}continue}}else if(i.type===`execution_start`)Z=i.kind===`flow`?`flow`:`agent`,ie=!0,Z===`agent`&&($={executionId:i.executionId,agentId:i.agentId??`virtual`,agentName:i.agentName??``});else if(i.type===`turn_start`){let e=typeof i.iteration==`number`?i.iteration:X;if(e!==X){if(ae===`separate`&&e>1){let e=v;e&&(e.streaming=!1,_(e),v=null)}X=e}Q=typeof i.id==`string`?i.id:null,y=null}else if(i.type===`tool_input_delta`){let e=i.toolCallId;if(e){let t=O.get(e);t?.toolCall&&(t.toolCall.chunks=t.toolCall.chunks??[],t.toolCall.chunks.push(i.delta??``),_(t))}}else if(i.type===`tool_input_complete`){if(P.has(i.toolCallId))continue;let e=R(i.toolCallId),t=e.toolCall;t.args=i.parameters,t.name=i.toolName??t.name,_(e)}else if(i.type===`turn_complete`){let e=i.stopReason,t=v??y;if(e&&t!==null){let n=i.id;(!n||t.agentMetadata?.turnId===n)&&(t.stopReason=e,_(t))}Q===i.id&&(Q=null)}else if(i.type===`media_start`){let e=String(i.id);Y.set(e,{mediaType:typeof i.mediaType==`string`?i.mediaType:void 0,toolCallId:i.toolCallId,parts:[]})}else if(i.type===`media_delta`){let e=Y.get(String(i.id));e&&typeof i.delta==`string`&&e.parts.push(i.delta)}else if(i.type===`media_complete`){let e=String(i.id),t=Y.get(e);Y.delete(e);let n=(typeof i.mediaType==`string`?i.mediaType:void 0)??t?.mediaType??`application/octet-stream`,r=typeof i.data==`string`?i.data:void 0,a=typeof i.url==`string`?i.url:t&&t.parts.length>0?t.parts.join(``):void 0,o=null;if(r)o={type:`media`,data:r,mediaType:n};else if(a){let e=n.toLowerCase();o={type:e===`image`||e.startsWith(`image/`)?`image-url`:`file-url`,url:a,mediaType:n}}let s=i.toolCallId??t?.toolCallId,c=o?[o]:[],l=[];for(let e of c){if(!e||typeof e!=`object`)continue;let t=e,n=typeof t.type==`string`?t.type:void 0,r=typeof t.mediaType==`string`?t.mediaType.toLowerCase():``,i=null,a=``;if(n===`media`){let e=typeof t.data==`string`?t.data:void 0;if(!e)continue;a=r.length>0?r:`application/octet-stream`,i=`data:${a};base64,${e}`}else if(n===`image-url`){let e=typeof t.url==`string`?t.url:void 0;if(!e)continue;a=r,i=e}else if(n===`file-url`){let e=typeof t.url==`string`?t.url:void 0;if(!e)continue;a=r,i=e}else continue;if(i){if(n===`image-url`||a.startsWith(`image/`))l.push({type:`image`,image:i,...a.includes(`/`)?{mimeType:a}:{}});else if(a.startsWith(`audio/`))l.push({type:`audio`,audio:i,mimeType:a});else if(a.startsWith(`video/`))l.push({type:`video`,video:i,mimeType:a});else{let e=a||`application/octet-stream`;l.push({type:`file`,data:i,mimeType:e,filename:ee(e)})}}}if(l.length>0){let e=p(),t=s,n={id:`agent-media-${typeof t==`string`&&t.length>0?`${t}-${e}`:String(e)}`,role:`assistant`,content:``,contentParts:l,createdAt:(/* @__PURE__ */ new Date()).toISOString(),streaming:!1,sequence:e,agentMetadata:{executionId:i.executionId,iteration:X}};_(n);let r=v;r&&(r.streaming=!1,_(r)),v=null,b.current=null}}else if(i.type===`execution_complete`){let e=v;e&&(i.kind===`flow`&&e.streaming!==!1?G(e):(e.streaming=!1,_(e)),v=null),S=null,C=``,U=null,n({type:`status`,status:`idle`,terminal:!0})}else if(i.type===`execution_error`){let e=typeof i.error==`string`?i.error:i.error?.message??`Execution error`;n({type:`error`,error:Error(e)})}else if(i.type!==`ping`){if(i.type===`approval_start`){let e=i.approvalId??`approval-${p()}`,t={id:`approval-${e}`,role:`assistant`,content:``,createdAt:(/* @__PURE__ */ new Date()).toISOString(),streaming:!1,variant:`approval`,sequence:p(),approval:{id:e,status:`pending`,agentId:$?.agentId??`virtual`,executionId:i.executionId??$?.executionId??``,toolName:i.toolName??``,toolType:i.toolType,description:i.description??`Execute ${i.toolName??`tool`}`,...typeof i.reason==`string`&&i.reason?{reason:i.reason}:{},parameters:i.parameters,...typeof i.toolCallId==`string`&&i.toolCallId?{toolCallId:i.toolCallId}:{}}};_(t)}else if(i.type===`approval_complete`){let e=i.approvalId;if(e){let t={id:`approval-${e}`,role:`assistant`,content:``,createdAt:(/* @__PURE__ */ new Date()).toISOString(),streaming:!1,variant:`approval`,sequence:p(),approval:{id:e,status:i.decision??`approved`,agentId:$?.agentId??`virtual`,executionId:i.executionId??$?.executionId??``,toolName:``,description:``,resolvedAt:Date.now()}};_(t)}}else if(i.type===`artifact_start`||i.type===`artifact_delta`||i.type===`artifact_update`||i.type===`artifact_complete`){if(i.type===`artifact_start`){let t=i.artifactType,r=String(i.id),a=typeof i.title==`string`?i.title:void 0,o=i.file,s;if(o&&typeof o==`object`&&!Array.isArray(o)&&typeof o.path==`string`&&typeof o.mimeType==`string`&&(s={path:o.path,mimeType:o.mimeType,...typeof o.language==`string`?{language:o.language}:{}}),n({type:`artifact_start`,id:r,artifactType:t,title:a,component:typeof i.component==`string`?i.component:void 0,...s?{file:s}:{}}),L.set(r,{markdown:``,title:a,file:s}),!I.has(r)){I.add(r);let n=l(e.config().features?.artifacts,{artifactType:t,...s?{file:s}:{}}),o=typeof i.component==`string`?i.component:void 0,c={id:`artifact-ref-${r}`,role:`assistant`,content:``,createdAt:(/* @__PURE__ */ new Date()).toISOString(),streaming:!0,sequence:p(),rawContent:u(n,{artifactId:r,title:a,artifactType:t,status:`streaming`,...s?{file:s}:{},...o?{component:o}:{}})};F.set(r,c),_(c)}}else if(i.type===`artifact_delta`){let e=String(i.id),t=typeof i.delta==`string`?i.delta:String(i.delta??``);n({type:`artifact_delta`,id:e,artDelta:t});let r=L.get(e);r&&(r.markdown+=t)}else if(i.type===`artifact_update`){let e=i.props&&typeof i.props==`object`&&!Array.isArray(i.props)?i.props:{};n({type:`artifact_update`,id:String(i.id),props:e,component:typeof i.component==`string`?i.component:void 0});let t=L.get(String(i.id));t&&(t.props={...t.props??{},...e})}else if(i.type===`artifact_complete`){let e=String(i.id);n({type:`artifact_complete`,id:e});let t=F.get(e);if(t){t.streaming=!1;try{let n=JSON.parse(t.rawContent??`{}`);if(n.props){n.props.status=`complete`;let t=L.get(e);t?.markdown&&(n.props.markdown=t.markdown),t?.file&&(n.props.file=t.file),n.component===`PersonaArtifactInline`&&t?.props&&Object.keys(t.props).length>0&&(n.props.componentProps=t.props)}t.rawContent=JSON.stringify(n)}catch{}L.delete(e),_(t),F.delete(e)}}}else if(i.type===`error`&&i.recoverable===!1&&i.error!=null&&i.error!==``){let e=typeof i.error==`string`?i.error:i.error?.message==null?`Execution error`:String(i.error.message);n({type:`error`,error:Error(e)});let t=v;t&&t.streaming&&(t.streaming=!1,_(t)),n({type:`status`,status:`idle`})}}}q.length=0};;){let{done:t,value:r}=await o.read();if(t)break;c+=s.decode(r,{stream:!0});let i=c.split(`
3
3
 
4
4
  `);c=i.pop()??``;for(let t of i){let r=t.split(`
5
5
  `),i=`message`,a=``,o=null;for(let e of r)e.startsWith(`event:`)?i=e.replace(`event:`,``).trim():e.startsWith(`data:`)?a+=e.replace(`data:`,``).trim():e.startsWith(`id:`)&&(o=e.slice(3).trim());let s=()=>{o!==null&&o!==``&&n({type:`cursor`,id:o})};if(!a){s();continue}let c;try{c=JSON.parse(a)}catch(e){n({type:`error`,error:e instanceof Error?e:/* @__PURE__ */ Error(`Failed to parse chat stream payload`)});continue}let l=typeof c==`object`&&c&&!Array.isArray(c)?c:null,u=i===`message`?typeof l?.type==`string`?l.type:`message`:i;if(e.onSSEEvent?.(u,c),e.parseSSEEvent){b.current=v;let t=await te(e,c,n,b,_,p,x);if(b.current&&b.current!==v&&(v=b.current),t){s();continue}}l&&(q.push({...l,type:u}),J()),s()}}J()}var F;e((()=>{i(),d(),h(),M(),F=e=>e.startsWith(`{`)||e.startsWith(`[`)||e.startsWith(`<`)}))();export{N as preferFinalStructuredContent,A as resolveApproval,j as resumeFlow,P as streamResponse};
package/dist/codegen.cjs CHANGED
@@ -1,4 +1,4 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});function e(e){return e?.cdnBase?.trim().replace(/\/+$/,``).replace(/[\\'"<>`]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase().padStart(2,`0`)}`)||`https://cdn.jsdelivr.net/npm/@runtypelabs/persona@4.28.2/dist`}function t(e){if(e!==void 0)return typeof e==`string`?e:Array.isArray(e)?`[${e.map(e=>e.toString()).join(`, `)}]`:e.toString()}function n(e){if(e)return{getHeaders:t(e.getHeaders),onFeedback:t(e.onFeedback),onCopy:t(e.onCopy),requestMiddleware:t(e.requestMiddleware),actionHandlers:t(e.actionHandlers),actionParsers:t(e.actionParsers),postprocessMessage:t(e.postprocessMessage),contextProviders:t(e.contextProviders),streamParser:t(e.streamParser)}}const r=`({ text, message }: any) => {
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});function e(e){return e?.cdnBase?.trim().replace(/\/+$/,``).replace(/[\\'"<>`]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase().padStart(2,`0`)}`)||`https://cdn.jsdelivr.net/npm/@runtypelabs/persona@4.29.1/dist`}function t(e){if(e!==void 0)return typeof e==`string`?e:Array.isArray(e)?`[${e.map(e=>e.toString()).join(`, `)}]`:e.toString()}function n(e){if(e)return{getHeaders:t(e.getHeaders),onFeedback:t(e.onFeedback),onCopy:t(e.onCopy),requestMiddleware:t(e.requestMiddleware),actionHandlers:t(e.actionHandlers),actionParsers:t(e.actionParsers),postprocessMessage:t(e.postprocessMessage),contextProviders:t(e.contextProviders),streamParser:t(e.streamParser)}}const r=`({ text, message }: any) => {
2
2
  const jsonSource = (message as any).rawContent || text || message.content;
3
3
  if (!jsonSource || typeof jsonSource !== 'string') return null;
4
4
  let cleanJson = jsonSource
package/dist/codegen.js CHANGED
@@ -1,4 +1,4 @@
1
- function e(e){return e?.cdnBase?.trim().replace(/\/+$/,``).replace(/[\\'"<>`]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase().padStart(2,`0`)}`)||`https://cdn.jsdelivr.net/npm/@runtypelabs/persona@4.28.2/dist`}function t(e){if(e!==void 0)return typeof e==`string`?e:Array.isArray(e)?`[${e.map(e=>e.toString()).join(`, `)}]`:e.toString()}function n(e){if(e)return{getHeaders:t(e.getHeaders),onFeedback:t(e.onFeedback),onCopy:t(e.onCopy),requestMiddleware:t(e.requestMiddleware),actionHandlers:t(e.actionHandlers),actionParsers:t(e.actionParsers),postprocessMessage:t(e.postprocessMessage),contextProviders:t(e.contextProviders),streamParser:t(e.streamParser)}}const r=`({ text, message }: any) => {
1
+ function e(e){return e?.cdnBase?.trim().replace(/\/+$/,``).replace(/[\\'"<>`]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase().padStart(2,`0`)}`)||`https://cdn.jsdelivr.net/npm/@runtypelabs/persona@4.29.1/dist`}function t(e){if(e!==void 0)return typeof e==`string`?e:Array.isArray(e)?`[${e.map(e=>e.toString()).join(`, `)}]`:e.toString()}function n(e){if(e)return{getHeaders:t(e.getHeaders),onFeedback:t(e.onFeedback),onCopy:t(e.onCopy),requestMiddleware:t(e.requestMiddleware),actionHandlers:t(e.actionHandlers),actionParsers:t(e.actionParsers),postprocessMessage:t(e.postprocessMessage),contextProviders:t(e.contextProviders),streamParser:t(e.streamParser)}}const r=`({ text, message }: any) => {
2
2
  const jsonSource = (message as any).rawContent || text || message.content;
3
3
  if (!jsonSource || typeof jsonSource !== 'string') return null;
4
4
  let cleanJson = jsonSource
@@ -1,4 +1,4 @@
1
- import { A as AgentWidgetContextMentionComposerCapability, I as AgentWidgetContextMentionRef } from "./types-BdO1jNRm.cjs";
1
+ import { A as AgentWidgetContextMentionComposerCapability, I as AgentWidgetContextMentionRef } from "./types-BuDirJkQ.cjs";
2
2
  //#region src/utils/mention-trigger.d.ts
3
3
  /**
4
4
  * Pure `@`-trigger detection for the composer mention menu.
@@ -1,4 +1,4 @@
1
- import { A as AgentWidgetContextMentionComposerCapability, I as AgentWidgetContextMentionRef } from "./types-BdO1jNRm.js";
1
+ import { A as AgentWidgetContextMentionComposerCapability, I as AgentWidgetContextMentionRef } from "./types-BuDirJkQ.js";
2
2
  //#region src/utils/mention-trigger.d.ts
3
3
  /**
4
4
  * Pure `@`-trigger detection for the composer mention menu.
@@ -1,4 +1,4 @@
1
- import { ar as ContentPart } from "./types-BdO1jNRm.cjs";
1
+ import { cr as ContentPart } from "./types-BuDirJkQ.cjs";
2
2
  //#region src/utils/context-mention-manager.d.ts
3
3
  /** The resolved bundle gathered at submit, merged into the user message. */
4
4
  interface MentionSubmitBundle {
@@ -1,4 +1,4 @@
1
- import { ar as ContentPart } from "./types-BdO1jNRm.js";
1
+ import { cr as ContentPart } from "./types-BuDirJkQ.js";
2
2
  //#region src/utils/context-mention-manager.d.ts
3
3
  /** The resolved bundle gathered at submit, merged into the user message. */
4
4
  interface MentionSubmitBundle {
@@ -1,5 +1,5 @@
1
- import { I as AgentWidgetContextMentionRef } from "./types-BdO1jNRm.cjs";
2
- import { t as ComposerInputCapability } from "./composer-input-C39npJaz.cjs";
1
+ import { I as AgentWidgetContextMentionRef } from "./types-BuDirJkQ.cjs";
2
+ import { t as ComposerInputCapability } from "./composer-input-B0P4OtNi.cjs";
3
3
  //#region src/context-mentions-inline-entry.d.ts
4
4
  interface InlineComposerMountContext {
5
5
  /** The live composer textarea to migrate from (value + caret + look). */
@@ -1,5 +1,5 @@
1
- import { I as AgentWidgetContextMentionRef } from "./types-BdO1jNRm.js";
2
- import { t as ComposerInputCapability } from "./composer-input-C39npJaz.js";
1
+ import { I as AgentWidgetContextMentionRef } from "./types-BuDirJkQ.js";
2
+ import { t as ComposerInputCapability } from "./composer-input-B0P4OtNi.js";
3
3
  //#region src/context-mentions-inline-entry.d.ts
4
4
  interface InlineComposerMountContext {
5
5
  /** The live composer textarea to migrate from (value + caret + look). */
@@ -1,6 +1,6 @@
1
- import { I as AgentWidgetContextMentionRef, T as AgentWidgetConfig, j as AgentWidgetContextMentionConfig, mt as AgentWidgetMessage } from "./types-BdO1jNRm.cjs";
2
- import { t as ComposerInputCapability } from "./composer-input-C39npJaz.cjs";
3
- import { t as MentionSubmitBundle } from "./context-mention-manager-DLCB1l9E.cjs";
1
+ import { I as AgentWidgetContextMentionRef, T as AgentWidgetConfig, j as AgentWidgetContextMentionConfig, mt as AgentWidgetMessage } from "./types-BuDirJkQ.cjs";
2
+ import { t as ComposerInputCapability } from "./composer-input-B0P4OtNi.cjs";
3
+ import { t as MentionSubmitBundle } from "./context-mention-manager-DmLI_RM6.cjs";
4
4
  //#region src/utils/context-mention-controller.d.ts
5
5
  /**
6
6
  * Outcome of dispatching an inline slash command at submit (Slack-style). The UI
@@ -1,6 +1,6 @@
1
- import { I as AgentWidgetContextMentionRef, T as AgentWidgetConfig, j as AgentWidgetContextMentionConfig, mt as AgentWidgetMessage } from "./types-BdO1jNRm.js";
2
- import { t as ComposerInputCapability } from "./composer-input-C39npJaz.js";
3
- import { t as MentionSubmitBundle } from "./context-mention-manager-DLCB1l9E.js";
1
+ import { I as AgentWidgetContextMentionRef, T as AgentWidgetConfig, j as AgentWidgetContextMentionConfig, mt as AgentWidgetMessage } from "./types-BuDirJkQ.js";
2
+ import { t as ComposerInputCapability } from "./composer-input-B0P4OtNi.js";
3
+ import { t as MentionSubmitBundle } from "./context-mention-manager-DmLI_RM6.js";
4
4
  //#region src/utils/context-mention-controller.d.ts
5
5
  /**
6
6
  * Outcome of dispatching an inline slash command at submit (Slack-style). The UI
@@ -1,4 +1,4 @@
1
- import { T as AgentWidgetConfig, Ta as ThemeValidationResult, ca as ComponentTokens, ga as ResolvedToken, la as CreateThemeOptions, pa as PersonaTheme, ua as DeepPartial, ya as SemanticTokens } from "./types-BdO1jNRm.cjs";
1
+ import { La as ThemeValidationResult, Oa as ResolvedToken, Sa as DeepPartial, T as AgentWidgetConfig, Ta as PersonaTheme, ba as ComponentTokens, ja as SemanticTokens, xa as CreateThemeOptions } from "./types-BuDirJkQ.cjs";
2
2
  //#region src/utils/tokens.d.ts
3
3
  declare const DEFAULT_PALETTE: {
4
4
  spacing: Record<0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16 | 20 | 24 | 32 | 40 | 48 | 56 | 64, string>;
@@ -1,4 +1,4 @@
1
- import { T as AgentWidgetConfig, Ta as ThemeValidationResult, ca as ComponentTokens, ga as ResolvedToken, la as CreateThemeOptions, pa as PersonaTheme, ua as DeepPartial, ya as SemanticTokens } from "./types-BdO1jNRm.js";
1
+ import { La as ThemeValidationResult, Oa as ResolvedToken, Sa as DeepPartial, T as AgentWidgetConfig, Ta as PersonaTheme, ba as ComponentTokens, ja as SemanticTokens, xa as CreateThemeOptions } from "./types-BuDirJkQ.js";
2
2
  //#region src/utils/tokens.d.ts
3
3
  declare const DEFAULT_PALETTE: {
4
4
  spacing: Record<0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16 | 20 | 24 | 32 | 40 | 48 | 56 | 64, string>;
@@ -1,4 +1,4 @@
1
- import { T as AgentWidgetConfig, Zr as SSEEventRecord, ka as AgentWidgetPlugin } from "./types-BdO1jNRm.cjs";
1
+ import { T as AgentWidgetConfig, Va as AgentWidgetPlugin, ei as SSEEventRecord } from "./types-BuDirJkQ.cjs";
2
2
  //#region src/utils/event-stream-store.d.ts
3
3
  export declare class EventStreamStore {
4
4
  #private;
@@ -1,4 +1,4 @@
1
- import { T as AgentWidgetConfig, Zr as SSEEventRecord, ka as AgentWidgetPlugin } from "./types-BdO1jNRm.js";
1
+ import { T as AgentWidgetConfig, Va as AgentWidgetPlugin, ei as SSEEventRecord } from "./types-BuDirJkQ.js";
2
2
  //#region src/utils/event-stream-store.d.ts
3
3
  export declare class EventStreamStore {
4
4
  #private;
@@ -1,4 +1,4 @@
1
- import { ei as SpeechCallbacks, ni as SpeechRequest, ti as SpeechEngine } from "./types-BdO1jNRm.cjs";
1
+ import { ai as SpeechRequest, ii as SpeechEngine, ri as SpeechCallbacks } from "./types-BuDirJkQ.cjs";
2
2
  //#region src/voice/fallback-speech-engine.d.ts
3
3
  interface FallbackSpeechEngineOptions {
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { ei as SpeechCallbacks, ni as SpeechRequest, ti as SpeechEngine } from "./types-BdO1jNRm.js";
1
+ import { ai as SpeechRequest, ii as SpeechEngine, ri as SpeechCallbacks } from "./types-BuDirJkQ.js";
2
2
  //#region src/voice/fallback-speech-engine.d.ts
3
3
  interface FallbackSpeechEngineOptions {
4
4
  /**
@@ -1,5 +1,5 @@
1
- import { T as AgentWidgetConfig, mt as AgentWidgetMessage } from "./types-BdO1jNRm.cjs";
2
- import { t as AgentWidgetSession } from "./session-a_qIp4xp.cjs";
1
+ import { T as AgentWidgetConfig, mt as AgentWidgetMessage } from "./types-BuDirJkQ.cjs";
2
+ import { t as AgentWidgetSession } from "./session-iLyKipoM.cjs";
3
3
  //#region src/components/forms.d.ts
4
4
  export declare const formDefinitions: Record<string, {
5
5
  title: string;
@@ -1,5 +1,5 @@
1
- import { T as AgentWidgetConfig, mt as AgentWidgetMessage } from "./types-BdO1jNRm.js";
2
- import { t as AgentWidgetSession } from "./session-a_qIp4xp.js";
1
+ import { T as AgentWidgetConfig, mt as AgentWidgetMessage } from "./types-BuDirJkQ.js";
2
+ import { t as AgentWidgetSession } from "./session-iLyKipoM.js";
3
3
  //#region src/components/forms.d.ts
4
4
  export declare const formDefinitions: Record<string, {
5
5
  title: string;
@@ -1,4 +1,4 @@
1
- import { $ as AgentWidgetHistoryCopy, Fi as HistoryProvider, Mi as HistoryOperationContext, gr as HistoryConversationSummary, nt as AgentWidgetHistoryRenderActions, tt as AgentWidgetHistoryListAction, vr as HistoryIdentityStatus } from "./types-BdO1jNRm.cjs";
1
+ import { $ as AgentWidgetHistoryCopy, Wi as HistoryOperationContext, nt as AgentWidgetHistoryRenderActions, qi as HistoryProvider, tt as AgentWidgetHistoryListAction, xr as HistoryIdentityStatus, yr as HistoryConversationSummary } from "./types-BuDirJkQ.cjs";
2
2
  //#region src/utils/tooltip.d.ts
3
3
  interface TooltipOptions {
4
4
  /** The control the tooltip describes and positions against. */
@@ -1,4 +1,4 @@
1
- import { $ as AgentWidgetHistoryCopy, Fi as HistoryProvider, Mi as HistoryOperationContext, gr as HistoryConversationSummary, nt as AgentWidgetHistoryRenderActions, tt as AgentWidgetHistoryListAction, vr as HistoryIdentityStatus } from "./types-BdO1jNRm.js";
1
+ import { $ as AgentWidgetHistoryCopy, Wi as HistoryOperationContext, nt as AgentWidgetHistoryRenderActions, qi as HistoryProvider, tt as AgentWidgetHistoryListAction, xr as HistoryIdentityStatus, yr as HistoryConversationSummary } from "./types-BuDirJkQ.js";
2
2
  //#region src/utils/tooltip.d.ts
3
3
  interface TooltipOptions {
4
4
  /** The control the tooltip describes and positions against. */