sliccy 4.0.0 → 4.0.2

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 (98) hide show
  1. package/dist/ui/assets/{adobe-Cemo5C0u.js → adobe-B4ZijlN3.js} +1 -1
  2. package/dist/ui/assets/{adobe-BbrAWL2k.js → adobe-CXtz_LR-.js} +2 -2
  3. package/dist/ui/assets/{agent-message-to-chat-CcbdvCBX.js → agent-message-to-chat-2oatz-4r.js} +1 -1
  4. package/dist/ui/assets/{anthropic-F94JdHkD.js → anthropic-DdhoKMtR.js} +1 -1
  5. package/dist/ui/assets/{apps-DW9Ugrtq.js → apps-BkzP1PLW.js} +1 -1
  6. package/dist/ui/assets/{azure-openai-DeK0lFgF.js → azure-openai-C-3E46Ld.js} +1 -1
  7. package/dist/ui/assets/{azure-openai-BIN3lyjx.js → azure-openai-DTW6COMC.js} +1 -1
  8. package/dist/ui/assets/{azure-openai-responses-9zsK4075.js → azure-openai-responses-CdvI3ZMk.js} +1 -1
  9. package/dist/ui/assets/{bsh-watchdog-CFGe8ITX.js → bsh-watchdog-BFmmHSkm.js} +1 -1
  10. package/dist/ui/assets/{cdp-n4Jl6aC4.js → cdp-Bx-nkPzL.js} +3 -3
  11. package/dist/ui/assets/{connect-surface-C8QsyQkF.js → connect-surface-Dwz7gSuy.js} +1 -1
  12. package/dist/ui/assets/dip-_QvZN8wj.js +1 -0
  13. package/dist/ui/assets/{dist-tjBW4Ynj.js → dist-DBjE4kB5.js} +1 -1
  14. package/dist/ui/assets/{dist-Dgyr_bjn.js → dist-DU9Hdb6p.js} +1 -1
  15. package/dist/ui/assets/{es-CIP8vLYQ.js → es-CxV76drH.js} +1 -1
  16. package/dist/ui/assets/esp8266-91jA_HHD.js +1 -0
  17. package/dist/ui/assets/{esptool-operations-3OtqiSvP.js → esptool-operations-CXqSawtf.js} +2 -2
  18. package/dist/ui/assets/{fs-sLaOZiPe.js → fs-C3bDUkXJ.js} +2 -2
  19. package/dist/ui/assets/{fs-D9uHDiI8.js → fs-Dg90t6PY.js} +1 -1
  20. package/dist/ui/assets/{github-um5_lXvs.js → github-CPCc-EUr.js} +1 -1
  21. package/dist/ui/assets/{github-iKf-uv0l.js → github-DxSzH6PI.js} +2 -2
  22. package/dist/ui/assets/{github-copilot-Bn6df3EN.js → github-copilot-BSdH-X0I.js} +1 -1
  23. package/dist/ui/assets/{github-copilot-BWwpRuxR.js → github-copilot-C0PA1-T1.js} +2 -2
  24. package/dist/ui/assets/{google-BFjmrVhw.js → google-Cp_gRCg5.js} +1 -1
  25. package/dist/ui/assets/{google-shared-DA7BsMNj.js → google-shared-BoLRjUxb.js} +1 -1
  26. package/dist/ui/assets/{google-vertex-fXPbdwC1.js → google-vertex-IdSaJxmx.js} +1 -1
  27. package/dist/ui/assets/{hosted-config-apply-CTLeJas_.js → hosted-config-apply-CizDb9Vw.js} +1 -1
  28. package/dist/ui/assets/{kernel-worker-OJsR9uqi.js → kernel-worker-DpRMAeb1.js} +673 -673
  29. package/dist/ui/assets/{legacy-styles-CJFCJMPl.js → legacy-styles-Bt2Mk3g2.js} +1 -1
  30. package/dist/ui/assets/{lick-ws-bridge-BvcLlt-k.js → lick-ws-bridge-CIdCZl2q.js} +1 -1
  31. package/dist/ui/assets/{local-llm-4QlmT-tX.js → local-llm-DgWHei2e.js} +1 -1
  32. package/dist/ui/assets/{magick-wasm-CzacIjJk.js → magick-wasm-BCSDiya9.js} +1 -1
  33. package/dist/ui/assets/{main-CAjMV3Ro.js → main-D7K1MTaQ.js} +4 -4
  34. package/dist/ui/assets/{main-cherry-Cs47oYGZ.js → main-cherry-CXrrVAC-.js} +1 -1
  35. package/dist/ui/assets/{mistral-2x1R-8qy.js → mistral-C8Uiexjg.js} +1 -1
  36. package/dist/ui/assets/mount-BYWcec4u.js +2 -0
  37. package/dist/ui/assets/mount-CYuBE82h.js +1 -0
  38. package/dist/ui/assets/{mount-id-BuG8r64x.js → mount-id-Cy4nG68v.js} +1 -1
  39. package/dist/ui/assets/{mount-picker-popup-DuIeknAs.js → mount-picker-popup-B4U0fkZK.js} +1 -1
  40. package/dist/ui/assets/{new-session-FKHfcyjF.js → new-session-C8X_CG95.js} +1 -1
  41. package/dist/ui/assets/{oauth-bootstrap-GcJnv7ZS.js → oauth-bootstrap-DIqfOl-7.js} +2 -2
  42. package/dist/ui/assets/{oauth-service-C4iJUflq.js → oauth-service-CmHwn7zK.js} +1 -1
  43. package/dist/ui/assets/{onboarding-orchestrator-CMwxiNyG.js → onboarding-orchestrator-DSR8Msku.js} +1 -1
  44. package/dist/ui/assets/{openai-codex-Cd_FQwBX.js → openai-codex-Bnd4L2L7.js} +1 -1
  45. package/dist/ui/assets/{openai-codex-stad_9EL.js → openai-codex-DkqkFtKq.js} +1 -1
  46. package/dist/ui/assets/{openai-codex-responses-D6G4oCNQ.js → openai-codex-responses-iASEGX_4.js} +1 -1
  47. package/dist/ui/assets/{openai-completions-B-04OvVB.js → openai-completions-CnLJNyQk.js} +1 -1
  48. package/dist/ui/assets/{openai-responses-7lIT3cT2.js → openai-responses-TN943MT8.js} +1 -1
  49. package/dist/ui/assets/{openai-responses-shared-CWQY06he.js → openai-responses-shared-B1lth5mr.js} +1 -1
  50. package/dist/ui/assets/{panel-rpc-handlers-Cv_5zztD.js → panel-rpc-handlers-BgzkmaOE.js} +2 -2
  51. package/dist/ui/assets/{picker-approval-DeEn9TVD.js → picker-approval-EweLNWgE.js} +1 -1
  52. package/dist/ui/assets/{provider-98CPXvln.js → provider-DQ7BvBZw.js} +2 -2
  53. package/dist/ui/assets/{provider-settings-BHTU6Oq1.js → provider-settings-VV6aNiP5.js} +2 -2
  54. package/dist/ui/assets/provider-store-access-BGKXkdbd.js +1 -0
  55. package/dist/ui/assets/provider-store-access-Vtg1yxDc.js +1 -0
  56. package/dist/ui/assets/{provider-uxfYSUeg.js → provider-tWBv0sFX.js} +1 -1
  57. package/dist/ui/assets/{providers-ClvthlnA.js → providers-BmSZZhhm.js} +1 -1
  58. package/dist/ui/assets/{quick-llm-Dt3qzpkf.js → quick-llm-DdZDN1QH.js} +1 -1
  59. package/dist/ui/assets/{remote-cdp-transport-DGfqLmXT.js → remote-cdp-transport-B3-CFmk-.js} +1 -1
  60. package/dist/ui/assets/{remote-terminal-view-D1kkPl1J.js → remote-terminal-view-Hlq3HwiU.js} +1 -1
  61. package/dist/ui/assets/{secret-env-CmNKUmzu.js → secret-env-CkbRu-AG.js} +1 -1
  62. package/dist/ui/assets/session-freezer-JMR8P1Lt.js +1 -0
  63. package/dist/ui/assets/{setup-sprinkle-exec-CKhXbNXd.js → setup-sprinkle-exec-ByJwHfyz.js} +1 -1
  64. package/dist/ui/assets/setup-sudo-DPXnK0Zw.js +1 -0
  65. package/dist/ui/assets/{slicc-editor-BmqZL3Y5.js → slicc-editor-BxRqmU98.js} +1 -1
  66. package/dist/ui/assets/{sprinkle-manager-d2jZNgyG.js → sprinkle-manager-CqLTFoc9.js} +1 -1
  67. package/dist/ui/assets/{sprinkle-renderer-CYvBEU3p.js → sprinkle-renderer-5HX0pMZZ.js} +3 -3
  68. package/dist/ui/assets/{store-BzwlOEnO.js → store-CQo5JYZe.js} +1 -1
  69. package/dist/ui/assets/{sudo-bOqvYoca.js → sudo-fe6QprlZ.js} +1 -1
  70. package/dist/ui/assets/{sync-dialog-DcLi4B3X.js → sync-dialog-C1-e9vyv.js} +1 -1
  71. package/dist/ui/assets/{tray-leave-runtime-CNDoDnAL.js → tray-leave-runtime--Ue08Cke.js} +1 -1
  72. package/dist/ui/assets/{upgrade-detection-C6lp-50u.js → upgrade-detection-CHRBJqBB.js} +1 -1
  73. package/dist/ui/assets/{wc-attach-BGY9fjZ2.js → wc-attach-xs9Fh-R8.js} +3 -3
  74. package/dist/ui/assets/{wc-detached-BRgr8s0-.js → wc-detached-ux_E6SNJ.js} +1 -1
  75. package/dist/ui/assets/{wc-extension-aIAysc0n.js → wc-extension-BLxY1h5k.js} +2 -2
  76. package/dist/ui/assets/{wc-live-C6fyMRSK.js → wc-live-DHS3FYU1.js} +6 -6
  77. package/dist/ui/assets/{wc-nav-BXic2-dY.js → wc-nav-BZZe3rw8.js} +2 -2
  78. package/dist/ui/assets/{wc-onboarding-3iBOy9Nz.js → wc-onboarding-Cz9h4OE8.js} +2 -2
  79. package/dist/ui/assets/{wc-placeholder-B8YCKa-r.js → wc-placeholder-CO111fjo.js} +3 -3
  80. package/dist/ui/assets/{wc-settings-NLWwHmCR.js → wc-settings-DiYFz75I.js} +3 -3
  81. package/dist/ui/assets/{wc-shell-BlYl5z4M.js → wc-shell-9F74yNEh.js} +3 -3
  82. package/dist/ui/assets/{wc-sprinkles-B9Uz_XZG.js → wc-sprinkles-CUllz5Rn.js} +2 -2
  83. package/dist/ui/assets/{wc-tray-ChJE1e4m.js → wc-tray-DnIxlO0o.js} +3 -3
  84. package/dist/ui/assets/{wc-voice-BBKCesX0.js → wc-voice-DyAmRENA.js} +1 -1
  85. package/dist/ui/assets/{welcome-detection-CMcvBaT6.js → welcome-detection-D-eB9s6-.js} +1 -1
  86. package/dist/ui/assets/{xai-grok-BJlD5UbE.js → xai-grok-BNfjuAeJ.js} +1 -1
  87. package/dist/ui/assets/{xai-grok-CflYL-Ds.js → xai-grok-D8Dda6Qy.js} +1 -1
  88. package/dist/ui/index.html +1 -1
  89. package/dist/ui/packages/webapp/index.html +1 -1
  90. package/package.json +1 -1
  91. package/dist/ui/assets/dip-BjtVzOV1.js +0 -1
  92. package/dist/ui/assets/esp8266-k79PMUzO.js +0 -1
  93. package/dist/ui/assets/mount-CCWGGelc.js +0 -2
  94. package/dist/ui/assets/mount-ihMevaxm.js +0 -1
  95. package/dist/ui/assets/provider-store-access-DQA9SE91.js +0 -1
  96. package/dist/ui/assets/provider-store-access-DRY_bX7j.js +0 -1
  97. package/dist/ui/assets/session-freezer-tB8QnZcp.js +0 -1
  98. package/dist/ui/assets/setup-sudo-Bbfk21e1.js +0 -1
@@ -1,4 +1,4 @@
1
- import{Ct as e,F as t,L as n,St as r,bt as i,ot as a}from"./main-CAjMV3Ro.js";import{t as o}from"./headers-DO1UzNKu.js";import{t as s}from"./sanitize-unicode-DmIE6hZJ.js";import{i as c,n as l,r as u,t as d}from"./github-copilot-headers-DZtWWv8W.js";import{n as f}from"./openai-Cn5LRPCm.js";import{t as p}from"./openai-prompt-cache-DXo9f3w5.js";function m(e){for(let t of e)if(t.role===`toolResult`||t.role===`assistant`&&t.content.some(e=>e.type===`toolCall`))return!0;return!1}function h(e){return e.type===`text`}function g(e){return e.type===`thinking`}function _(e){return e.type===`toolCall`}function v(e){return e.type===`image`}function y(e){return e||(typeof process<`u`&&{}.PI_CACHE_RETENTION===`long`?`long`:`short`)}var b=(e,t,n)=>{let r=new i;return(async()=>{let i={role:`assistant`,content:[],api:e.api,provider:e.provider,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`stop`,timestamp:Date.now()};try{let s=n?.apiKey;if(!s)throw Error(`No API key for provider: ${e.provider}`);let c=L(e),l=y(n?.cacheRetention),u=l===`none`?void 0:n?.sessionId,d=S(e,t,s,n?.headers,u,c),f=C(e,t,n,c,l),p=await n?.onPayload?.(f,e);p!==void 0&&(f=p);let m={...n?.signal?{signal:n.signal}:{},...n?.timeoutMs===void 0?{}:{timeout:n.timeoutMs},maxRetries:n?.maxRetries??0},{data:h,response:g}=await d.chat.completions.create(f,m).withResponse();await n?.onResponse?.({status:g.status,headers:o(g.headers)},e),r.push({type:`start`,partial:i});let _=null,v=null,b=!1,x=new Map,w=new Map,T=i.content,E=e=>T.indexOf(e),D=e=>{let t=E(e);t!==-1&&(e.type===`text`?r.push({type:`text_end`,contentIndex:t,content:e.text,partial:i}):e.type===`thinking`?r.push({type:`thinking_end`,contentIndex:t,content:e.thinking,partial:i}):e.type===`toolCall`&&(e.arguments=a(e.partialArgs),delete e.partialArgs,delete e.streamIndex,r.push({type:`toolcall_end`,contentIndex:t,toolCall:e,partial:i})))},O=()=>(_||(_={type:`text`,text:``},T.push(_),r.push({type:`text_start`,contentIndex:E(_),partial:i})),_),k=e=>(v||(v={type:`thinking`,thinking:``,thinkingSignature:e},T.push(v),r.push({type:`thinking_start`,contentIndex:E(v),partial:i})),v),A=e=>{let t=typeof e.index==`number`?e.index:void 0,n=t===void 0?void 0:x.get(t);return!n&&e.id&&(n=w.get(e.id)),n||(n={type:`toolCall`,id:e.id||``,name:e.function?.name||``,arguments:{},partialArgs:``,streamIndex:t},t!==void 0&&x.set(t,n),e.id&&w.set(e.id,n),T.push(n),r.push({type:`toolcall_start`,contentIndex:E(n),partial:i})),t!==void 0&&n.streamIndex===void 0&&(n.streamIndex=t,x.set(t,n)),e.id&&w.set(e.id,n),n};for await(let t of h){if(!t||typeof t!=`object`)continue;i.responseId||=t.id,typeof t.model==`string`&&t.model.length>0&&t.model!==e.id&&(i.responseModel||=t.model),t.usage&&(i.usage=P(t.usage,e));let n=Array.isArray(t.choices)?t.choices[0]:void 0;if(n){if(!t.usage&&n.usage&&(i.usage=P(n.usage,e)),n.finish_reason){let e=F(n.finish_reason);i.stopReason=e.stopReason,e.errorMessage&&(i.errorMessage=e.errorMessage),b=!0}if(n.delta){if(n.delta.content!==null&&n.delta.content!==void 0&&n.delta.content.length>0){let e=O();e.text+=n.delta.content,r.push({type:`text_delta`,contentIndex:E(e),delta:n.delta.content,partial:i})}let t=[`reasoning_content`,`reasoning`,`reasoning_text`],o=n.delta,s=null;for(let e of t){let t=o[e];if(typeof t==`string`&&t.length>0){s=e;break}}if(s){let t=o[s];if(typeof t==`string`&&t.length>0){let n=k(e.provider===`opencode-go`&&s===`reasoning`?`reasoning_content`:s);n.thinking+=t,r.push({type:`thinking_delta`,contentIndex:E(n),delta:t,partial:i})}}if(n?.delta?.tool_calls)for(let e of n.delta.tool_calls){let t=A(e);!t.id&&e.id&&(t.id=e.id,w.set(e.id,t)),!t.name&&e.function?.name&&(t.name=e.function.name);let n=``;e.function?.arguments&&(n=e.function.arguments,t.partialArgs=(t.partialArgs??``)+e.function.arguments,t.arguments=a(t.partialArgs)),r.push({type:`toolcall_delta`,contentIndex:E(t),delta:n,partial:i})}let c=n.delta.reasoning_details;if(c&&Array.isArray(c)){for(let e of c)if(e.type===`reasoning.encrypted`&&e.id&&e.data){let t=i.content.find(t=>t.type===`toolCall`&&t.id===e.id);t&&(t.thoughtSignature=JSON.stringify(e))}}}}}for(let e of T)D(e);if(n?.signal?.aborted||i.stopReason===`aborted`)throw Error(`Request was aborted`);if(i.stopReason===`error`)throw Error(i.errorMessage||`Provider returned an error stop reason`);if(!b)throw Error(`Stream ended without finish_reason`);r.push({type:`done`,reason:i.stopReason,message:i}),r.end()}catch(e){for(let e of i.content)delete e.index,delete e.partialArgs,delete e.streamIndex;i.stopReason=n?.signal?.aborted?`aborted`:`error`,i.errorMessage=e instanceof Error?e.message:JSON.stringify(e);let t=e?.error?.metadata?.raw;t&&(i.errorMessage+=`\n${t}`),r.push({type:`error`,reason:i.stopReason,error:i}),r.end()}})(),r},x=(t,r,i)=>{let a=i?.apiKey;if(!a)throw Error(`No API key for provider: ${t.provider}`);let o=n(t,i,a),s=i?.reasoning?e(t,i.reasoning):void 0,c=s===`off`?void 0:s,l=i?.toolChoice;return b(t,r,{...o,reasoningEffort:c,toolChoice:l})};function S(e,t,n,r,i,a=L(e)){let o={...e.headers};if(e.provider===`github-copilot`){let e=l(t.messages),n=d({messages:t.messages,hasImages:e});Object.assign(o,n)}i&&a.sendSessionAffinityHeaders&&(o.session_id=i,o[`x-client-request-id`]=i,o[`x-session-affinity`]=i),r&&Object.assign(o,r);let s=e.provider===`cloudflare-ai-gateway`?{...o,Authorization:o.Authorization??null,"cf-aig-authorization":`Bearer ${n}`}:o;return new f({apiKey:n,baseURL:u(e.provider)?c(e):e.baseUrl,dangerouslyAllowBrowser:!0,defaultHeaders:s})}function C(e,t,n,r=L(e),i=y(n?.cacheRetention)){let a=M(e,t,r),o=w(r,i),s={model:e.id,messages:a,stream:!0,prompt_cache_key:e.baseUrl.includes(`api.openai.com`)&&i!==`none`||i===`long`&&r.supportsLongCacheRetention?p(n?.sessionId):void 0,prompt_cache_retention:i===`long`&&r.supportsLongCacheRetention?`24h`:void 0};if(r.supportsUsageInStreaming!==!1&&(s.stream_options={include_usage:!0}),r.supportsStore&&(s.store=!1),n?.maxTokens&&(r.maxTokensField===`max_tokens`?s.max_tokens=n.maxTokens:s.max_completion_tokens=n.maxTokens),n?.temperature!==void 0&&(s.temperature=n.temperature),t.tools&&t.tools.length>0?(s.tools=N(t.tools,r),r.zaiToolStream&&(s.tool_stream=!0)):m(t.messages)&&(s.tools=[]),o&&T(a,s.tools,o),n?.toolChoice&&(s.tool_choice=n.toolChoice),r.thinkingFormat===`zai`&&e.reasoning)s.enable_thinking=!!n?.reasoningEffort;else if(r.thinkingFormat===`qwen`&&e.reasoning)s.enable_thinking=!!n?.reasoningEffort;else if(r.thinkingFormat===`qwen-chat-template`&&e.reasoning)s.chat_template_kwargs={enable_thinking:!!n?.reasoningEffort,preserve_thinking:!0};else if(r.thinkingFormat===`deepseek`&&e.reasoning)s.thinking={type:n?.reasoningEffort?`enabled`:`disabled`},n?.reasoningEffort&&r.supportsReasoningEffort&&(s.reasoning_effort=e.thinkingLevelMap?.[n.reasoningEffort]??n.reasoningEffort);else if(r.thinkingFormat===`openrouter`&&e.reasoning){let t=s;n?.reasoningEffort?t.reasoning={effort:e.thinkingLevelMap?.[n.reasoningEffort]??n.reasoningEffort}:e.thinkingLevelMap?.off!==null&&(t.reasoning={effort:e.thinkingLevelMap?.off??`none`})}else if(r.thinkingFormat===`together`&&e.reasoning){let t=s;t.reasoning={enabled:!!n?.reasoningEffort},n?.reasoningEffort&&r.supportsReasoningEffort&&(t.reasoning_effort=e.thinkingLevelMap?.[n.reasoningEffort]??n.reasoningEffort)}else if(r.thinkingFormat===`string-thinking`&&e.reasoning){let t=s;n?.reasoningEffort?t.thinking=e.thinkingLevelMap?.[n.reasoningEffort]??n.reasoningEffort:e.thinkingLevelMap?.off!==null&&(t.thinking=e.thinkingLevelMap?.off??`none`)}else if(n?.reasoningEffort&&e.reasoning&&r.supportsReasoningEffort)s.reasoning_effort=e.thinkingLevelMap?.[n.reasoningEffort]??n.reasoningEffort;else if(!n?.reasoningEffort&&e.reasoning&&r.supportsReasoningEffort){let t=e.thinkingLevelMap?.off;typeof t==`string`&&(s.reasoning_effort=t)}if(e.baseUrl.includes(`openrouter.ai`)&&e.compat?.openRouterRouting&&(s.provider=e.compat.openRouterRouting),e.baseUrl.includes(`ai-gateway.vercel.sh`)&&e.compat?.vercelGatewayRouting){let t=e.compat.vercelGatewayRouting;if(t.only||t.order){let e={};t.only&&(e.only=t.only),t.order&&(e.order=t.order),s.providerOptions={gateway:e}}}return s}function w(e,t){if(e.cacheControlFormat!==`anthropic`||t===`none`)return;let n=t===`long`&&e.supportsLongCacheRetention?`1h`:void 0;return{type:`ephemeral`,...n?{ttl:n}:{}}}function T(e,t,n){E(e,n),O(t,n),D(e,n)}function E(e,t){for(let n of e)if(n.role===`system`||n.role===`developer`){k(n,t);return}}function D(e,t){for(let n=e.length-1;n>=0;n--){let r=e[n];if((r.role===`user`||r.role===`assistant`)&&A(r,t))return}}function O(e,t){if(!e||e.length===0)return;let n=e[e.length-1];n.cache_control=t}function k(e,t){return j(e,t)}function A(e,t){return e.role===`user`||e.role===`assistant`?j(e,t):!1}function j(e,t){let n=e.content;if(typeof n==`string`)return n.length===0?!1:(e.content=[{type:`text`,text:n,cache_control:t}],!0);if(!Array.isArray(n))return!1;for(let e=n.length-1;e>=0;e--){let r=n[e];if(r?.type===`text`){let e=r;return e.cache_control=t,!0}}return!1}function M(e,n,r){let i=[],a=t=>{if(t.includes(`|`)){let[e]=t.split(`|`);return e.replace(/[^a-zA-Z0-9_-]/g,`_`).slice(0,40)}return e.provider===`openai`&&t.length>40?t.slice(0,40):t},o=t(n.messages,e,e=>a(e));if(n.systemPrompt){let t=e.reasoning&&r.supportsDeveloperRole?`developer`:`system`;i.push({role:t,content:s(n.systemPrompt)})}let c=null;for(let t=0;t<o.length;t++){let n=o[t];if(r.requiresAssistantAfterToolResult&&c===`toolResult`&&n.role===`user`&&i.push({role:`assistant`,content:`I have processed the tool results.`}),n.role===`user`)if(typeof n.content==`string`)i.push({role:`user`,content:s(n.content)});else{let e=n.content.map(e=>e.type===`text`?{type:`text`,text:s(e.text)}:{type:`image_url`,image_url:{url:`data:${e.mimeType};base64,${e.data}`}});if(e.length===0)continue;i.push({role:`user`,content:e})}else if(n.role===`assistant`){let t={role:`assistant`,content:r.requiresAssistantAfterToolResult?``:null},a=n.content.filter(h).filter(e=>e.text.trim().length>0).map(e=>({type:`text`,text:s(e.text)})),o=a.map(e=>e.text).join(``),c=n.content.filter(g).filter(e=>e.thinking.trim().length>0);if(c.length>0)if(r.requiresThinkingAsText)t.content=[{type:`text`,text:c.map(e=>s(e.thinking)).join(`
1
+ import{Ct as e,F as t,L as n,St as r,bt as i,ot as a}from"./main-D7K1MTaQ.js";import{t as o}from"./headers-DO1UzNKu.js";import{t as s}from"./sanitize-unicode-DmIE6hZJ.js";import{i as c,n as l,r as u,t as d}from"./github-copilot-headers-DZtWWv8W.js";import{n as f}from"./openai-Cn5LRPCm.js";import{t as p}from"./openai-prompt-cache-DXo9f3w5.js";function m(e){for(let t of e)if(t.role===`toolResult`||t.role===`assistant`&&t.content.some(e=>e.type===`toolCall`))return!0;return!1}function h(e){return e.type===`text`}function g(e){return e.type===`thinking`}function _(e){return e.type===`toolCall`}function v(e){return e.type===`image`}function y(e){return e||(typeof process<`u`&&{}.PI_CACHE_RETENTION===`long`?`long`:`short`)}var b=(e,t,n)=>{let r=new i;return(async()=>{let i={role:`assistant`,content:[],api:e.api,provider:e.provider,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`stop`,timestamp:Date.now()};try{let s=n?.apiKey;if(!s)throw Error(`No API key for provider: ${e.provider}`);let c=L(e),l=y(n?.cacheRetention),u=l===`none`?void 0:n?.sessionId,d=S(e,t,s,n?.headers,u,c),f=C(e,t,n,c,l),p=await n?.onPayload?.(f,e);p!==void 0&&(f=p);let m={...n?.signal?{signal:n.signal}:{},...n?.timeoutMs===void 0?{}:{timeout:n.timeoutMs},maxRetries:n?.maxRetries??0},{data:h,response:g}=await d.chat.completions.create(f,m).withResponse();await n?.onResponse?.({status:g.status,headers:o(g.headers)},e),r.push({type:`start`,partial:i});let _=null,v=null,b=!1,x=new Map,w=new Map,T=i.content,E=e=>T.indexOf(e),D=e=>{let t=E(e);t!==-1&&(e.type===`text`?r.push({type:`text_end`,contentIndex:t,content:e.text,partial:i}):e.type===`thinking`?r.push({type:`thinking_end`,contentIndex:t,content:e.thinking,partial:i}):e.type===`toolCall`&&(e.arguments=a(e.partialArgs),delete e.partialArgs,delete e.streamIndex,r.push({type:`toolcall_end`,contentIndex:t,toolCall:e,partial:i})))},O=()=>(_||(_={type:`text`,text:``},T.push(_),r.push({type:`text_start`,contentIndex:E(_),partial:i})),_),k=e=>(v||(v={type:`thinking`,thinking:``,thinkingSignature:e},T.push(v),r.push({type:`thinking_start`,contentIndex:E(v),partial:i})),v),A=e=>{let t=typeof e.index==`number`?e.index:void 0,n=t===void 0?void 0:x.get(t);return!n&&e.id&&(n=w.get(e.id)),n||(n={type:`toolCall`,id:e.id||``,name:e.function?.name||``,arguments:{},partialArgs:``,streamIndex:t},t!==void 0&&x.set(t,n),e.id&&w.set(e.id,n),T.push(n),r.push({type:`toolcall_start`,contentIndex:E(n),partial:i})),t!==void 0&&n.streamIndex===void 0&&(n.streamIndex=t,x.set(t,n)),e.id&&w.set(e.id,n),n};for await(let t of h){if(!t||typeof t!=`object`)continue;i.responseId||=t.id,typeof t.model==`string`&&t.model.length>0&&t.model!==e.id&&(i.responseModel||=t.model),t.usage&&(i.usage=P(t.usage,e));let n=Array.isArray(t.choices)?t.choices[0]:void 0;if(n){if(!t.usage&&n.usage&&(i.usage=P(n.usage,e)),n.finish_reason){let e=F(n.finish_reason);i.stopReason=e.stopReason,e.errorMessage&&(i.errorMessage=e.errorMessage),b=!0}if(n.delta){if(n.delta.content!==null&&n.delta.content!==void 0&&n.delta.content.length>0){let e=O();e.text+=n.delta.content,r.push({type:`text_delta`,contentIndex:E(e),delta:n.delta.content,partial:i})}let t=[`reasoning_content`,`reasoning`,`reasoning_text`],o=n.delta,s=null;for(let e of t){let t=o[e];if(typeof t==`string`&&t.length>0){s=e;break}}if(s){let t=o[s];if(typeof t==`string`&&t.length>0){let n=k(e.provider===`opencode-go`&&s===`reasoning`?`reasoning_content`:s);n.thinking+=t,r.push({type:`thinking_delta`,contentIndex:E(n),delta:t,partial:i})}}if(n?.delta?.tool_calls)for(let e of n.delta.tool_calls){let t=A(e);!t.id&&e.id&&(t.id=e.id,w.set(e.id,t)),!t.name&&e.function?.name&&(t.name=e.function.name);let n=``;e.function?.arguments&&(n=e.function.arguments,t.partialArgs=(t.partialArgs??``)+e.function.arguments,t.arguments=a(t.partialArgs)),r.push({type:`toolcall_delta`,contentIndex:E(t),delta:n,partial:i})}let c=n.delta.reasoning_details;if(c&&Array.isArray(c)){for(let e of c)if(e.type===`reasoning.encrypted`&&e.id&&e.data){let t=i.content.find(t=>t.type===`toolCall`&&t.id===e.id);t&&(t.thoughtSignature=JSON.stringify(e))}}}}}for(let e of T)D(e);if(n?.signal?.aborted||i.stopReason===`aborted`)throw Error(`Request was aborted`);if(i.stopReason===`error`)throw Error(i.errorMessage||`Provider returned an error stop reason`);if(!b)throw Error(`Stream ended without finish_reason`);r.push({type:`done`,reason:i.stopReason,message:i}),r.end()}catch(e){for(let e of i.content)delete e.index,delete e.partialArgs,delete e.streamIndex;i.stopReason=n?.signal?.aborted?`aborted`:`error`,i.errorMessage=e instanceof Error?e.message:JSON.stringify(e);let t=e?.error?.metadata?.raw;t&&(i.errorMessage+=`\n${t}`),r.push({type:`error`,reason:i.stopReason,error:i}),r.end()}})(),r},x=(t,r,i)=>{let a=i?.apiKey;if(!a)throw Error(`No API key for provider: ${t.provider}`);let o=n(t,i,a),s=i?.reasoning?e(t,i.reasoning):void 0,c=s===`off`?void 0:s,l=i?.toolChoice;return b(t,r,{...o,reasoningEffort:c,toolChoice:l})};function S(e,t,n,r,i,a=L(e)){let o={...e.headers};if(e.provider===`github-copilot`){let e=l(t.messages),n=d({messages:t.messages,hasImages:e});Object.assign(o,n)}i&&a.sendSessionAffinityHeaders&&(o.session_id=i,o[`x-client-request-id`]=i,o[`x-session-affinity`]=i),r&&Object.assign(o,r);let s=e.provider===`cloudflare-ai-gateway`?{...o,Authorization:o.Authorization??null,"cf-aig-authorization":`Bearer ${n}`}:o;return new f({apiKey:n,baseURL:u(e.provider)?c(e):e.baseUrl,dangerouslyAllowBrowser:!0,defaultHeaders:s})}function C(e,t,n,r=L(e),i=y(n?.cacheRetention)){let a=M(e,t,r),o=w(r,i),s={model:e.id,messages:a,stream:!0,prompt_cache_key:e.baseUrl.includes(`api.openai.com`)&&i!==`none`||i===`long`&&r.supportsLongCacheRetention?p(n?.sessionId):void 0,prompt_cache_retention:i===`long`&&r.supportsLongCacheRetention?`24h`:void 0};if(r.supportsUsageInStreaming!==!1&&(s.stream_options={include_usage:!0}),r.supportsStore&&(s.store=!1),n?.maxTokens&&(r.maxTokensField===`max_tokens`?s.max_tokens=n.maxTokens:s.max_completion_tokens=n.maxTokens),n?.temperature!==void 0&&(s.temperature=n.temperature),t.tools&&t.tools.length>0?(s.tools=N(t.tools,r),r.zaiToolStream&&(s.tool_stream=!0)):m(t.messages)&&(s.tools=[]),o&&T(a,s.tools,o),n?.toolChoice&&(s.tool_choice=n.toolChoice),r.thinkingFormat===`zai`&&e.reasoning)s.enable_thinking=!!n?.reasoningEffort;else if(r.thinkingFormat===`qwen`&&e.reasoning)s.enable_thinking=!!n?.reasoningEffort;else if(r.thinkingFormat===`qwen-chat-template`&&e.reasoning)s.chat_template_kwargs={enable_thinking:!!n?.reasoningEffort,preserve_thinking:!0};else if(r.thinkingFormat===`deepseek`&&e.reasoning)s.thinking={type:n?.reasoningEffort?`enabled`:`disabled`},n?.reasoningEffort&&r.supportsReasoningEffort&&(s.reasoning_effort=e.thinkingLevelMap?.[n.reasoningEffort]??n.reasoningEffort);else if(r.thinkingFormat===`openrouter`&&e.reasoning){let t=s;n?.reasoningEffort?t.reasoning={effort:e.thinkingLevelMap?.[n.reasoningEffort]??n.reasoningEffort}:e.thinkingLevelMap?.off!==null&&(t.reasoning={effort:e.thinkingLevelMap?.off??`none`})}else if(r.thinkingFormat===`together`&&e.reasoning){let t=s;t.reasoning={enabled:!!n?.reasoningEffort},n?.reasoningEffort&&r.supportsReasoningEffort&&(t.reasoning_effort=e.thinkingLevelMap?.[n.reasoningEffort]??n.reasoningEffort)}else if(r.thinkingFormat===`string-thinking`&&e.reasoning){let t=s;n?.reasoningEffort?t.thinking=e.thinkingLevelMap?.[n.reasoningEffort]??n.reasoningEffort:e.thinkingLevelMap?.off!==null&&(t.thinking=e.thinkingLevelMap?.off??`none`)}else if(n?.reasoningEffort&&e.reasoning&&r.supportsReasoningEffort)s.reasoning_effort=e.thinkingLevelMap?.[n.reasoningEffort]??n.reasoningEffort;else if(!n?.reasoningEffort&&e.reasoning&&r.supportsReasoningEffort){let t=e.thinkingLevelMap?.off;typeof t==`string`&&(s.reasoning_effort=t)}if(e.baseUrl.includes(`openrouter.ai`)&&e.compat?.openRouterRouting&&(s.provider=e.compat.openRouterRouting),e.baseUrl.includes(`ai-gateway.vercel.sh`)&&e.compat?.vercelGatewayRouting){let t=e.compat.vercelGatewayRouting;if(t.only||t.order){let e={};t.only&&(e.only=t.only),t.order&&(e.order=t.order),s.providerOptions={gateway:e}}}return s}function w(e,t){if(e.cacheControlFormat!==`anthropic`||t===`none`)return;let n=t===`long`&&e.supportsLongCacheRetention?`1h`:void 0;return{type:`ephemeral`,...n?{ttl:n}:{}}}function T(e,t,n){E(e,n),O(t,n),D(e,n)}function E(e,t){for(let n of e)if(n.role===`system`||n.role===`developer`){k(n,t);return}}function D(e,t){for(let n=e.length-1;n>=0;n--){let r=e[n];if((r.role===`user`||r.role===`assistant`)&&A(r,t))return}}function O(e,t){if(!e||e.length===0)return;let n=e[e.length-1];n.cache_control=t}function k(e,t){return j(e,t)}function A(e,t){return e.role===`user`||e.role===`assistant`?j(e,t):!1}function j(e,t){let n=e.content;if(typeof n==`string`)return n.length===0?!1:(e.content=[{type:`text`,text:n,cache_control:t}],!0);if(!Array.isArray(n))return!1;for(let e=n.length-1;e>=0;e--){let r=n[e];if(r?.type===`text`){let e=r;return e.cache_control=t,!0}}return!1}function M(e,n,r){let i=[],a=t=>{if(t.includes(`|`)){let[e]=t.split(`|`);return e.replace(/[^a-zA-Z0-9_-]/g,`_`).slice(0,40)}return e.provider===`openai`&&t.length>40?t.slice(0,40):t},o=t(n.messages,e,e=>a(e));if(n.systemPrompt){let t=e.reasoning&&r.supportsDeveloperRole?`developer`:`system`;i.push({role:t,content:s(n.systemPrompt)})}let c=null;for(let t=0;t<o.length;t++){let n=o[t];if(r.requiresAssistantAfterToolResult&&c===`toolResult`&&n.role===`user`&&i.push({role:`assistant`,content:`I have processed the tool results.`}),n.role===`user`)if(typeof n.content==`string`)i.push({role:`user`,content:s(n.content)});else{let e=n.content.map(e=>e.type===`text`?{type:`text`,text:s(e.text)}:{type:`image_url`,image_url:{url:`data:${e.mimeType};base64,${e.data}`}});if(e.length===0)continue;i.push({role:`user`,content:e})}else if(n.role===`assistant`){let t={role:`assistant`,content:r.requiresAssistantAfterToolResult?``:null},a=n.content.filter(h).filter(e=>e.text.trim().length>0).map(e=>({type:`text`,text:s(e.text)})),o=a.map(e=>e.text).join(``),c=n.content.filter(g).filter(e=>e.thinking.trim().length>0);if(c.length>0)if(r.requiresThinkingAsText)t.content=[{type:`text`,text:c.map(e=>s(e.thinking)).join(`
2
2
 
3
3
  `)},...a];else{o.length>0&&(t.content=o);let n=c[0].thinkingSignature;e.provider===`opencode-go`&&n===`reasoning`&&(n=`reasoning_content`),n&&n.length>0&&(t[n]=c.map(e=>e.thinking).join(`
4
4
  `))}else o.length>0&&(t.content=o);let l=n.content.filter(_);if(l.length>0){t.tool_calls=l.map(e=>({id:e.id,type:`function`,function:{name:e.name,arguments:JSON.stringify(e.arguments)}}));let e=l.filter(e=>e.thoughtSignature).map(e=>{try{return JSON.parse(e.thoughtSignature)}catch{return null}}).filter(Boolean);e.length>0&&(t.reasoning_details=e)}r.requiresReasoningContentOnAssistantMessages&&e.reasoning&&t.reasoning_content===void 0&&(t.reasoning_content=``);let u=t.content;if(!(u!=null&&u.length>0)&&!t.tool_calls)continue;i.push(t)}else if(n.role===`toolResult`){let n=[],a=t;for(;a<o.length&&o[a].role===`toolResult`;a++){let t=o[a],c=t.content.filter(h).map(e=>e.text).join(`
@@ -1 +1 @@
1
- import{Ct as e,L as t,bt as n}from"./main-CAjMV3Ro.js";import{t as r}from"./headers-DO1UzNKu.js";import{i,n as a,r as o,t as s}from"./github-copilot-headers-DZtWWv8W.js";import{n as c}from"./openai-Cn5LRPCm.js";import{t as l}from"./openai-prompt-cache-DXo9f3w5.js";import{n as u,r as d,t as f}from"./openai-responses-shared-CWQY06he.js";var p=new Set([`openai`,`openai-codex`,`opencode`]);function m(e){return e||(typeof process<`u`&&{}.PI_CACHE_RETENTION===`long`?`long`:`short`)}function h(e){return{sendSessionIdHeader:e.compat?.sendSessionIdHeader??!0,supportsLongCacheRetention:e.compat?.supportsLongCacheRetention??!0}}function g(e,t){return t===`long`&&e.supportsLongCacheRetention?`24h`:void 0}function _(e){if(e instanceof Error){let t=e.status,n=typeof t==`number`?t:void 0;return n===void 0?e.message:`OpenAI API error (${n}): ${e.message}`}try{return JSON.stringify(e)}catch{return String(e)}}var v=(e,t,i)=>{let a=new n;return(async()=>{let n={role:`assistant`,content:[],api:e.api,provider:e.provider,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`stop`,timestamp:Date.now()};try{let o=i?.apiKey;if(!o)throw Error(`No API key for provider: ${e.provider}`);let s=m(i?.cacheRetention)===`none`?void 0:i?.sessionId,c=b(e,t,o,i?.headers,s),l=x(e,t,i),u=await i?.onPayload?.(l,e);u!==void 0&&(l=u);let f={...i?.signal?{signal:i.signal}:{},...i?.timeoutMs===void 0?{}:{timeout:i.timeoutMs},maxRetries:i?.maxRetries??0},{data:p,response:h}=await c.responses.create(l,f).withResponse();if(await i?.onResponse?.({status:h.status,headers:r(h.headers)},e),a.push({type:`start`,partial:n}),await d(p,n,a,e,{serviceTier:i?.serviceTier,applyServiceTierPricing:(t,n)=>C(t,n,e)}),i?.signal?.aborted)throw Error(`Request was aborted`);if(n.stopReason===`aborted`||n.stopReason===`error`)throw Error(`An unknown error occurred`);a.push({type:`done`,reason:n.stopReason,message:n}),a.end()}catch(e){for(let e of n.content)delete e.index,delete e.partialJson;n.stopReason=i?.signal?.aborted?`aborted`:`error`,n.errorMessage=_(e),a.push({type:`error`,reason:n.stopReason,error:n}),a.end()}})(),a},y=(n,r,i)=>{let a=i?.apiKey;if(!a)throw Error(`No API key for provider: ${n.provider}`);let o=t(n,i,a),s=i?.reasoning?e(n,i.reasoning):void 0,c=s===`off`?void 0:s;return v(n,r,{...o,reasoningEffort:c})};function b(e,t,n,r,l){let u=h(e),d={...e.headers};if(e.provider===`github-copilot`){let e=a(t.messages),n=s({messages:t.messages,hasImages:e});Object.assign(d,n)}l&&(u.sendSessionIdHeader&&(d.session_id=l),d[`x-client-request-id`]=l),r&&Object.assign(d,r);let f=e.provider===`cloudflare-ai-gateway`?{...d,Authorization:d.Authorization??null,"cf-aig-authorization":`Bearer ${n}`}:d;return new c({apiKey:n,baseURL:o(e.provider)?i(e):e.baseUrl,dangerouslyAllowBrowser:!0,defaultHeaders:f})}function x(e,t,n){let r=f(e,t,p),i=m(n?.cacheRetention),a=h(e),o={model:e.id,input:r,stream:!0,prompt_cache_key:i===`none`?void 0:l(n?.sessionId),prompt_cache_retention:g(a,i),store:!1};return n?.maxTokens&&(o.max_output_tokens=n?.maxTokens),n?.temperature!==void 0&&(o.temperature=n?.temperature),n?.serviceTier!==void 0&&(o.service_tier=n.serviceTier),t.tools&&t.tools.length>0&&(o.tools=u(t.tools)),e.reasoning&&(n?.reasoningEffort||n?.reasoningSummary?(o.reasoning={effort:n?.reasoningEffort?e.thinkingLevelMap?.[n.reasoningEffort]??n.reasoningEffort:`medium`,summary:n?.reasoningSummary||`auto`},o.include=[`reasoning.encrypted_content`]):e.provider!==`github-copilot`&&e.thinkingLevelMap?.off!==null&&(o.reasoning={effort:e.thinkingLevelMap?.off??`none`})),o}function S(e,t){switch(t){case`flex`:return .5;case`priority`:return e.id===`gpt-5.5`?2.5:2;default:return 1}}function C(e,t,n){let r=S(n,t);r!==1&&(e.cost.input*=r,e.cost.output*=r,e.cost.cacheRead*=r,e.cost.cacheWrite*=r,e.cost.total=e.cost.input+e.cost.output+e.cost.cacheRead+e.cost.cacheWrite)}export{v as streamOpenAIResponses,y as streamSimpleOpenAIResponses};
1
+ import{Ct as e,L as t,bt as n}from"./main-D7K1MTaQ.js";import{t as r}from"./headers-DO1UzNKu.js";import{i,n as a,r as o,t as s}from"./github-copilot-headers-DZtWWv8W.js";import{n as c}from"./openai-Cn5LRPCm.js";import{t as l}from"./openai-prompt-cache-DXo9f3w5.js";import{n as u,r as d,t as f}from"./openai-responses-shared-B1lth5mr.js";var p=new Set([`openai`,`openai-codex`,`opencode`]);function m(e){return e||(typeof process<`u`&&{}.PI_CACHE_RETENTION===`long`?`long`:`short`)}function h(e){return{sendSessionIdHeader:e.compat?.sendSessionIdHeader??!0,supportsLongCacheRetention:e.compat?.supportsLongCacheRetention??!0}}function g(e,t){return t===`long`&&e.supportsLongCacheRetention?`24h`:void 0}function _(e){if(e instanceof Error){let t=e.status,n=typeof t==`number`?t:void 0;return n===void 0?e.message:`OpenAI API error (${n}): ${e.message}`}try{return JSON.stringify(e)}catch{return String(e)}}var v=(e,t,i)=>{let a=new n;return(async()=>{let n={role:`assistant`,content:[],api:e.api,provider:e.provider,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`stop`,timestamp:Date.now()};try{let o=i?.apiKey;if(!o)throw Error(`No API key for provider: ${e.provider}`);let s=m(i?.cacheRetention)===`none`?void 0:i?.sessionId,c=b(e,t,o,i?.headers,s),l=x(e,t,i),u=await i?.onPayload?.(l,e);u!==void 0&&(l=u);let f={...i?.signal?{signal:i.signal}:{},...i?.timeoutMs===void 0?{}:{timeout:i.timeoutMs},maxRetries:i?.maxRetries??0},{data:p,response:h}=await c.responses.create(l,f).withResponse();if(await i?.onResponse?.({status:h.status,headers:r(h.headers)},e),a.push({type:`start`,partial:n}),await d(p,n,a,e,{serviceTier:i?.serviceTier,applyServiceTierPricing:(t,n)=>C(t,n,e)}),i?.signal?.aborted)throw Error(`Request was aborted`);if(n.stopReason===`aborted`||n.stopReason===`error`)throw Error(`An unknown error occurred`);a.push({type:`done`,reason:n.stopReason,message:n}),a.end()}catch(e){for(let e of n.content)delete e.index,delete e.partialJson;n.stopReason=i?.signal?.aborted?`aborted`:`error`,n.errorMessage=_(e),a.push({type:`error`,reason:n.stopReason,error:n}),a.end()}})(),a},y=(n,r,i)=>{let a=i?.apiKey;if(!a)throw Error(`No API key for provider: ${n.provider}`);let o=t(n,i,a),s=i?.reasoning?e(n,i.reasoning):void 0,c=s===`off`?void 0:s;return v(n,r,{...o,reasoningEffort:c})};function b(e,t,n,r,l){let u=h(e),d={...e.headers};if(e.provider===`github-copilot`){let e=a(t.messages),n=s({messages:t.messages,hasImages:e});Object.assign(d,n)}l&&(u.sendSessionIdHeader&&(d.session_id=l),d[`x-client-request-id`]=l),r&&Object.assign(d,r);let f=e.provider===`cloudflare-ai-gateway`?{...d,Authorization:d.Authorization??null,"cf-aig-authorization":`Bearer ${n}`}:d;return new c({apiKey:n,baseURL:o(e.provider)?i(e):e.baseUrl,dangerouslyAllowBrowser:!0,defaultHeaders:f})}function x(e,t,n){let r=f(e,t,p),i=m(n?.cacheRetention),a=h(e),o={model:e.id,input:r,stream:!0,prompt_cache_key:i===`none`?void 0:l(n?.sessionId),prompt_cache_retention:g(a,i),store:!1};return n?.maxTokens&&(o.max_output_tokens=n?.maxTokens),n?.temperature!==void 0&&(o.temperature=n?.temperature),n?.serviceTier!==void 0&&(o.service_tier=n.serviceTier),t.tools&&t.tools.length>0&&(o.tools=u(t.tools)),e.reasoning&&(n?.reasoningEffort||n?.reasoningSummary?(o.reasoning={effort:n?.reasoningEffort?e.thinkingLevelMap?.[n.reasoningEffort]??n.reasoningEffort:`medium`,summary:n?.reasoningSummary||`auto`},o.include=[`reasoning.encrypted_content`]):e.provider!==`github-copilot`&&e.thinkingLevelMap?.off!==null&&(o.reasoning={effort:e.thinkingLevelMap?.off??`none`})),o}function S(e,t){switch(t){case`flex`:return .5;case`priority`:return e.id===`gpt-5.5`?2.5:2;default:return 1}}function C(e,t,n){let r=S(n,t);r!==1&&(e.cost.input*=r,e.cost.output*=r,e.cost.cacheRead*=r,e.cost.cacheWrite*=r,e.cost.total=e.cost.input+e.cost.output+e.cost.cacheRead+e.cost.cacheWrite)}export{v as streamOpenAIResponses,y as streamSimpleOpenAIResponses};
@@ -1,4 +1,4 @@
1
- import{F as e,St as t,ot as n}from"./main-CAjMV3Ro.js";import{t as r}from"./sanitize-unicode-DmIE6hZJ.js";import{t as i}from"./hash-yQufAZII.js";function a(e,t){let n={v:1,id:e};return t&&(n.phase=t),JSON.stringify(n)}function o(e){if(e){if(e.startsWith(`{`))try{let t=JSON.parse(e);if(t.v===1&&typeof t.id==`string`)return t.phase===`commentary`||t.phase===`final_answer`?{id:t.id,phase:t.phase}:{id:t.id}}catch{}return{id:e}}}function s(t,n,a,s){let c=[],l=e=>{let t=e.replace(/[^a-zA-Z0-9_-]/g,`_`);return(t.length>64?t.slice(0,64):t).replace(/_+$/,``)},u=e=>{let t=`fc_${i(e)}`;return t.length>64?t.slice(0,64):t},d=e(n.messages,t,(e,n,r)=>{if(!a.has(t.provider)||!e.includes(`|`))return l(e);let[i,o]=e.split(`|`),s=l(i),c=r.provider!==t.provider||r.api!==t.api?u(o):l(o);return c.startsWith(`fc_`)||(c=l(`fc_${c}`)),`${s}|${c}`});if((s?.includeSystemPrompt??!0)&&n.systemPrompt){let e=t.reasoning?`developer`:`system`;c.push({role:e,content:r(n.systemPrompt)})}let f=0;for(let e of d){if(e.role===`user`)if(typeof e.content==`string`)c.push({role:`user`,content:[{type:`input_text`,text:r(e.content)}]});else{let t=e.content.map(e=>e.type===`text`?{type:`input_text`,text:r(e.text)}:{type:`input_image`,detail:`auto`,image_url:`data:${e.mimeType};base64,${e.data}`});if(t.length===0)continue;c.push({role:`user`,content:t})}else if(e.role===`assistant`){let n=[],a=e,s=a.model!==t.id&&a.provider===t.provider&&a.api===t.api,l=0;for(let t of e.content)if(t.type===`thinking`){if(t.thinkingSignature){let e=JSON.parse(t.thinkingSignature);n.push(e)}}else if(t.type===`text`){let e=t,a=o(e.textSignature),s=l===0?`msg_pi_${f}`:`msg_pi_${f}_${l}`;l++;let c=a?.id;c?c.length>64&&(c=`msg_${i(c)}`):c=s,n.push({type:`message`,role:`assistant`,content:[{type:`output_text`,text:r(e.text),annotations:[]}],status:`completed`,id:c,phase:a?.phase})}else if(t.type===`toolCall`){let e=t,[r,i]=e.id.split(`|`),a=i;s&&a?.startsWith(`fc_`)&&(a=void 0),n.push({type:`function_call`,id:a,call_id:r,name:e.name,arguments:JSON.stringify(e.arguments)})}if(n.length===0)continue;c.push(...n)}else if(e.role===`toolResult`){let n=e.content.filter(e=>e.type===`text`).map(e=>e.text).join(`
1
+ import{F as e,St as t,ot as n}from"./main-D7K1MTaQ.js";import{t as r}from"./sanitize-unicode-DmIE6hZJ.js";import{t as i}from"./hash-yQufAZII.js";function a(e,t){let n={v:1,id:e};return t&&(n.phase=t),JSON.stringify(n)}function o(e){if(e){if(e.startsWith(`{`))try{let t=JSON.parse(e);if(t.v===1&&typeof t.id==`string`)return t.phase===`commentary`||t.phase===`final_answer`?{id:t.id,phase:t.phase}:{id:t.id}}catch{}return{id:e}}}function s(t,n,a,s){let c=[],l=e=>{let t=e.replace(/[^a-zA-Z0-9_-]/g,`_`);return(t.length>64?t.slice(0,64):t).replace(/_+$/,``)},u=e=>{let t=`fc_${i(e)}`;return t.length>64?t.slice(0,64):t},d=e(n.messages,t,(e,n,r)=>{if(!a.has(t.provider)||!e.includes(`|`))return l(e);let[i,o]=e.split(`|`),s=l(i),c=r.provider!==t.provider||r.api!==t.api?u(o):l(o);return c.startsWith(`fc_`)||(c=l(`fc_${c}`)),`${s}|${c}`});if((s?.includeSystemPrompt??!0)&&n.systemPrompt){let e=t.reasoning?`developer`:`system`;c.push({role:e,content:r(n.systemPrompt)})}let f=0;for(let e of d){if(e.role===`user`)if(typeof e.content==`string`)c.push({role:`user`,content:[{type:`input_text`,text:r(e.content)}]});else{let t=e.content.map(e=>e.type===`text`?{type:`input_text`,text:r(e.text)}:{type:`input_image`,detail:`auto`,image_url:`data:${e.mimeType};base64,${e.data}`});if(t.length===0)continue;c.push({role:`user`,content:t})}else if(e.role===`assistant`){let n=[],a=e,s=a.model!==t.id&&a.provider===t.provider&&a.api===t.api,l=0;for(let t of e.content)if(t.type===`thinking`){if(t.thinkingSignature){let e=JSON.parse(t.thinkingSignature);n.push(e)}}else if(t.type===`text`){let e=t,a=o(e.textSignature),s=l===0?`msg_pi_${f}`:`msg_pi_${f}_${l}`;l++;let c=a?.id;c?c.length>64&&(c=`msg_${i(c)}`):c=s,n.push({type:`message`,role:`assistant`,content:[{type:`output_text`,text:r(e.text),annotations:[]}],status:`completed`,id:c,phase:a?.phase})}else if(t.type===`toolCall`){let e=t,[r,i]=e.id.split(`|`),a=i;s&&a?.startsWith(`fc_`)&&(a=void 0),n.push({type:`function_call`,id:a,call_id:r,name:e.name,arguments:JSON.stringify(e.arguments)})}if(n.length===0)continue;c.push(...n)}else if(e.role===`toolResult`){let n=e.content.filter(e=>e.type===`text`).map(e=>e.text).join(`
2
2
  `),i=e.content.some(e=>e.type===`image`),a=n.length>0,[o]=e.toolCallId.split(`|`),s;if(i&&t.input.includes(`image`)){let t=[];a&&t.push({type:`input_text`,text:r(n)});for(let n of e.content)n.type===`image`&&t.push({type:`input_image`,detail:`auto`,image_url:`data:${n.mimeType};base64,${n.data}`});s=t}else s=r(a?n:`(see attached image)`);c.push({type:`function_call_output`,call_id:o,output:s})}f++}return c}function c(e,t){let n=t?.strict===void 0?!1:t.strict;return e.map(e=>({type:`function`,name:e.name,description:e.description,parameters:e.parameters,strict:n}))}async function l(e,r,i,o,s){let c=null,l=null,d=r.content,f=()=>d.length-1;for await(let d of e)if(d.type===`response.created`)r.responseId=d.response.id;else if(d.type===`response.output_item.added`){let e=d.item;e.type===`reasoning`?(c=e,l={type:`thinking`,thinking:``},r.content.push(l),i.push({type:`thinking_start`,contentIndex:f(),partial:r})):e.type===`message`?(c=e,l={type:`text`,text:``},r.content.push(l),i.push({type:`text_start`,contentIndex:f(),partial:r})):e.type===`function_call`&&(c=e,l={type:`toolCall`,id:`${e.call_id}|${e.id}`,name:e.name,arguments:{},partialJson:e.arguments||``},r.content.push(l),i.push({type:`toolcall_start`,contentIndex:f(),partial:r}))}else if(d.type===`response.reasoning_summary_part.added`)c&&c.type===`reasoning`&&(c.summary=c.summary||[],c.summary.push(d.part));else if(d.type===`response.reasoning_summary_text.delta`){if(c?.type===`reasoning`&&l?.type===`thinking`){c.summary=c.summary||[];let e=c.summary[c.summary.length-1];e&&(l.thinking+=d.delta,e.text+=d.delta,i.push({type:`thinking_delta`,contentIndex:f(),delta:d.delta,partial:r}))}}else if(d.type===`response.reasoning_summary_part.done`){if(c?.type===`reasoning`&&l?.type===`thinking`){c.summary=c.summary||[];let e=c.summary[c.summary.length-1];e&&(l.thinking+=`
3
3
 
4
4
  `,e.text+=`
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/esptool-operations-3OtqiSvP.js","assets/chunk-aKtaBQYM.js","assets/main-CAjMV3Ro.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/rom-eeWiO07Z.js"])))=>i.map(i=>d[i]);
2
- import{Dt as e,a as t,y as n}from"./main-CAjMV3Ro.js";import{n as r,r as i}from"./hid-device-registry-D2LsJCRr.js";import{a,i as o}from"./serial-port-registry-Bc4wlwED.js";import{A as s,C as c,D as l,E as u,O as d,S as f,T as p,_ as m,a as h,b as g,c as _,d as v,f as y,g as b,h as x,i as ee,j as S,k as C,l as w,m as T,n as E,o as D,p as O,r as k,s as A,t as j,u as M,v as N,w as P,x as F,y as I}from"./usb-operations-CkcrNzZw.js";import{i as te,r as L}from"./usb-device-registry-BP58Vi0S.js";function R(r={}){let i=new Map;return{"page-info":()=>({origin:window.location.origin,href:window.location.href,title:document.title||``}),screencapture:async({mimeType:e,quality:t})=>{let n=await Z(e,t),r=await n.arrayBuffer(),i=await Q(n);return{bytes:r,width:i.width,height:i.height,mimeType:e}},"speak-text":async({text:e,lang:t,voice:n,rate:r,pitch:i,volume:a})=>{if(typeof speechSynthesis>`u`)throw Error(`speechSynthesis is unavailable in this page`);return await new Promise((o,s)=>{let c=new SpeechSynthesisUtterance(e);if(t!==void 0&&(c.lang=t),r!==void 0&&(c.rate=r),i!==void 0&&(c.pitch=i),a!==void 0&&(c.volume=a),n){let e=speechSynthesis.getVoices().find(e=>e.name===n);e&&(c.voice=e)}c.onend=()=>o(),c.onerror=e=>s(Error(`speak: ${e.error||`utterance failed`}`)),speechSynthesis.speak(c)}),{done:!0}},"list-voices":async()=>{if(typeof speechSynthesis>`u`)throw Error(`speechSynthesis is unavailable in this page`);let e=speechSynthesis.getVoices();return e.length>0?{voices:e.map(X)}:{voices:(await new Promise(e=>{let t=()=>{speechSynthesis.removeEventListener(`voiceschanged`,t),e(speechSynthesis.getVoices())};speechSynthesis.addEventListener(`voiceschanged`,t),setTimeout(()=>{speechSynthesis.removeEventListener(`voiceschanged`,t),e(speechSynthesis.getVoices())},1e3)})).map(X)}},"play-audio":async({bytes:e,volume:t})=>{if(typeof AudioContext>`u`)throw Error(`Web Audio API is unavailable in this page`);let n=new AudioContext;try{let r=await n.decodeAudioData(e.slice(0)),i=n.createBufferSource();if(i.buffer=r,t!==void 0){let e=n.createGain();e.gain.value=Math.max(0,Math.min(1,t)),i.connect(e),e.connect(n.destination)}else i.connect(n.destination);await new Promise(e=>{i.onended=()=>e(),i.start()})}finally{try{await n.close()}catch{}}return{done:!0}},"play-chime":async({tone:e})=>{let t={success:[880,1320],error:[440,220],notify:[660,660]},[n,r]=t[e??`notify`]??t.notify;if(typeof AudioContext>`u`)throw Error(`Web Audio API is unavailable in this page`);let i=new AudioContext;try{let e=i.currentTime;for(let[t,a]of[n,r].entries()){let n=i.createOscillator();n.type=`sine`,n.frequency.value=a;let r=i.createGain();r.gain.setValueAtTime(1e-4,e+t*.18),r.gain.exponentialRampToValueAtTime(.2,e+t*.18+.02),r.gain.exponentialRampToValueAtTime(1e-4,e+t*.18+.18),n.connect(r),r.connect(i.destination),n.start(e+t*.18),n.stop(e+t*.18+.2)}await new Promise(e=>setTimeout(e,450))}finally{try{await i.close()}catch{}}return{done:!0}},"clipboard-read-text":async()=>{if(!navigator.clipboard?.readText)throw Error(`clipboard API unavailable`);return{text:await navigator.clipboard.readText()}},"clipboard-write-text":async({text:e})=>{if(!navigator.clipboard?.writeText)throw Error(`clipboard API unavailable`);return await $(),await navigator.clipboard.writeText(e),{done:!0}},"clipboard-write-image":async({bytes:e,mimeType:t})=>{if(!navigator.clipboard?.write||typeof ClipboardItem>`u`)throw Error(`clipboard image API unavailable`);let n,r=new Blob([e],{type:t});return n=t===`image/png`?r:await ne(r),await $(),await navigator.clipboard.write([new ClipboardItem({"image/png":n})]),{done:!0}},"window-open":async({url:e,target:t,features:n})=>({opened:window.open(e,t??`_blank`,n??`noopener,noreferrer`)!==null}),"oauth-popup":async({url:e})=>({redirectUrl:await Y(e)}),"capture-camera":async e=>await K(e),"enumerate-media-devices":async()=>{if(!navigator.mediaDevices?.enumerateDevices)throw Error(`enumerateDevices is not supported in this browser`);let e=await navigator.mediaDevices.enumerateDevices(),t=e=>({deviceId:e.deviceId,label:e.label||``,...e.groupId?{groupId:e.groupId}:{}});return{videoinputs:e.filter(e=>e.kind===`videoinput`).map(t),audioinputs:e.filter(e=>e.kind===`audioinput`).map(t)}},"tray-reset":async()=>{if(!r.resetTray)throw Error(`host reset: no active tray session to reset`);return await r.resetTray()},"tray-leave":async({workerBaseUrl:e,requestId:t})=>{if(!r.leaveTray)throw Error(`host leave: tray leave is not available in this environment`);return await r.leaveTray({workerBaseUrl:e,requestId:t})},"cherry-emit":async({runtimeId:e,name:t,detail:n})=>{if(!r.emitCherrySliccEvent)throw Error(`cherry-emit: not available in this environment`);return{delivered:r.emitCherrySliccEvent(e,t,n)}},"oauth-extras-set":({providerId:e,domains:r})=>(n(e,r),{storeAfter:t()}),"save-oauth-accounts":({accountsJson:e})=>(localStorage.setItem(`slicc_accounts`,e),{storedJson:localStorage.getItem(`slicc_accounts`)??e}),"usb-list":async()=>({devices:await D(z(),B())}),"usb-request":async({filters:e})=>({device:await w(z(),B(),e)}),"usb-device-info":({handle:e})=>({device:h(z(),e)}),"usb-open":async({handle:e})=>(await A(z(),e),{done:!0}),"usb-close":async({handle:e})=>(await E(z(),e),{done:!0}),"usb-select-configuration":async({handle:e,configurationValue:t})=>(await v(z(),e,t),{done:!0}),"usb-claim-interface":async({handle:e,interfaceNumber:t})=>(await j(z(),e,t),{done:!0}),"usb-release-interface":async({handle:e,interfaceNumber:t})=>(await _(z(),e,t),{done:!0}),"usb-control-transfer-in":async({handle:e,setup:t,length:n})=>k(z(),e,t,n),"usb-control-transfer-out":async({handle:e,setup:t,bytes:n})=>ee(z(),e,t,n),"usb-transfer-in":async({handle:e,endpointNumber:t,length:n})=>y(z(),e,t,n),"usb-transfer-out":async({handle:e,endpointNumber:t,bytes:n})=>O(z(),e,t,n),"usb-reset":async({handle:e})=>(await M(z(),e),{done:!0}),"hid-list":async()=>({devices:await b(V(),H())}),"hid-request":async({filters:e})=>({devices:await I(V(),H(),e)}),"hid-device-info":({handle:e})=>({device:x(V(),e)}),"hid-open":async({handle:e})=>(await m(V(),e),{done:!0}),"hid-close":async({handle:e})=>(await T(V(),e),{done:!0}),"hid-send-report":async({handle:e,reportId:t,bytes:n})=>(await F(V(),e,t,n),{done:!0}),"hid-send-feature-report":async({handle:e,reportId:t,bytes:n})=>(await g(V(),e,t,n),{done:!0}),"hid-receive-feature-report":async({handle:e,reportId:t})=>N(V(),e,t),"hid-subscribe-input-reports":async({handle:e})=>{i.get(e)?.();let t=await f(V(),e,t=>{r.emitEvent?.(`hid-input-report`,{handle:e,reportId:t.reportId,bytes:t.bytes})});return i.set(e,t),{done:!0}},"hid-unsubscribe-input-reports":({handle:e})=>(i.get(e)?.(),i.delete(e),{done:!0}),"serial-list":async()=>({devices:await u(U(),W())}),"serial-request":async({filters:e})=>({device:await C(U(),W(),e)}),"serial-device-info":({handle:e})=>({device:P(U(),e)}),"serial-open":async({handle:e,options:t})=>(await l(U(),e,t),{done:!0}),"serial-close":async({handle:e})=>(await c(U(),e),{done:!0}),"serial-read":async({handle:e,maxBytes:t,until:n,timeoutMs:r})=>{let i=await d(U(),e,{maxBytes:t,until:n?new Uint8Array(n):void 0,timeoutMs:r});return{bytes:i.buffer.slice(i.byteOffset,i.byteOffset+i.byteLength)}},"serial-write":async({handle:e,bytes:t})=>({bytesWritten:await S(U(),e,new Uint8Array(t))}),"serial-get-signals":async({handle:e})=>({signals:await p(U(),e)}),"serial-set-signals":async({handle:e,signals:t})=>(await s(U(),e,t),{done:!0}),"esptool-chip-info":async({handle:t,baudRate:n})=>(await e(()=>import(`./esptool-operations-3OtqiSvP.js`),__vite__mapDeps([0,1,2,3,4]))).esptoolChipInfo(U(),t,n,e=>r.emitEvent?.(`esptool-progress`,{handle:t,line:e})),"esptool-read-mac":async({handle:t,baudRate:n})=>(await e(()=>import(`./esptool-operations-3OtqiSvP.js`),__vite__mapDeps([0,1,2,3,4]))).esptoolReadMac(U(),t,n,e=>r.emitEvent?.(`esptool-progress`,{handle:t,line:e})),"esptool-erase-flash":async({handle:t,baudRate:n})=>(await(await e(()=>import(`./esptool-operations-3OtqiSvP.js`),__vite__mapDeps([0,1,2,3,4]))).esptoolEraseFlash(U(),t,n,e=>r.emitEvent?.(`esptool-progress`,{handle:t,line:e})),{done:!0}),"esptool-flash":async({handle:t,baudRate:n,eraseAll:i,segments:a})=>(await(await e(()=>import(`./esptool-operations-3OtqiSvP.js`),__vite__mapDeps([0,1,2,3,4]))).esptoolFlash(U(),t,n,i,a.map(e=>({address:e.address,data:new Uint8Array(e.bytes)})),e=>r.emitEvent?.(`esptool-progress`,{handle:t,line:e})),{done:!0}),"esptool-read-flash":async({handle:t,baudRate:n,address:i,size:a})=>{let o=await(await e(()=>import(`./esptool-operations-3OtqiSvP.js`),__vite__mapDeps([0,1,2,3,4]))).esptoolReadFlash(U(),t,n,i,a,e=>r.emitEvent?.(`esptool-progress`,{handle:t,line:e}));return{bytes:o.buffer.slice(o.byteOffset,o.byteOffset+o.byteLength)}},"esptool-read-reg":async({handle:t,baudRate:n,address:i})=>(await e(()=>import(`./esptool-operations-3OtqiSvP.js`),__vite__mapDeps([0,1,2,3,4]))).esptoolReadReg(U(),t,n,i,e=>r.emitEvent?.(`esptool-progress`,{handle:t,line:e})),"esptool-flash-id":async({handle:t,baudRate:n})=>(await e(()=>import(`./esptool-operations-3OtqiSvP.js`),__vite__mapDeps([0,1,2,3,4]))).esptoolFlashId(U(),t,n,e=>r.emitEvent?.(`esptool-progress`,{handle:t,line:e})),"esptool-erase-region":async({handle:t,baudRate:n,address:i,size:a})=>(await(await e(()=>import(`./esptool-operations-3OtqiSvP.js`),__vite__mapDeps([0,1,2,3,4]))).esptoolEraseRegion(U(),t,n,i,a,e=>r.emitEvent?.(`esptool-progress`,{handle:t,line:e})),{done:!0}),"esptool-run":async({handle:t,baudRate:n})=>(await(await e(()=>import(`./esptool-operations-3OtqiSvP.js`),__vite__mapDeps([0,1,2,3,4]))).esptoolRun(U(),t,n,e=>r.emitEvent?.(`esptool-progress`,{handle:t,line:e})),{done:!0}),"list-remote-targets":async()=>r.listRemoteTargets?{targets:(await r.listRemoteTargets()).filter(e=>e.targetId.includes(`:`)).map(e=>({targetId:e.targetId,title:e.title,url:e.url}))}:{targets:[]},"remote-cdp-send":async({runtimeId:e,localTargetId:t,method:n,params:i,sessionId:a,timeout:o})=>{if(!r.remoteCdp)throw Error(`remote-cdp bridge not available`);return r.remoteCdp.send({runtimeId:e,localTargetId:t,method:n,params:i,sessionId:a,timeout:o})},"remote-cdp-subscribe":async({runtimeId:e,localTargetId:t,event:n})=>{if(!r.remoteCdp)throw Error(`remote-cdp bridge not available`);return r.remoteCdp.subscribe({runtimeId:e,localTargetId:t,event:n})},"remote-cdp-unsubscribe":async({runtimeId:e,localTargetId:t,event:n})=>{if(!r.remoteCdp)throw Error(`remote-cdp bridge not available`);return r.remoteCdp.unsubscribe({runtimeId:e,localTargetId:t,event:n})},"remote-cdp-detach":async({runtimeId:e,localTargetId:t})=>{if(!r.remoteCdp)throw Error(`remote-cdp bridge not available`);return r.remoteCdp.detach({runtimeId:e,localTargetId:t})},"remote-open-tab":async({runtimeId:e,url:t})=>{if(!r.remoteCdp)throw Error(`remote-cdp bridge not available`);return r.remoteCdp.openTab({runtimeId:e,url:t})}}}function z(){return te()}function B(){let e=L();if(!e)throw Error(`WebUSB is unavailable in this browser`);return e}function V(){return i()}function H(){let e=r();if(!e)throw Error(`WebHID is unavailable in this browser`);return e}function U(){return a()}function W(){let e=o();if(!e)throw Error(`Web Serial is unavailable in this browser`);return e}var G=1500;async function K(e){if(!navigator.mediaDevices?.getUserMedia)throw Error(`getUserMedia is not supported in this browser`);let t=e.mode===`photo`||e.captureVideo!==!1,n=!!e.captureAudio&&e.mode===`video`;if(!t&&!n)throw Error(`camera capture: at least one of video or audio must be requested`);let r=await J({wantVideo:t,videoDeviceId:t?await q(e.deviceId,`videoinput`):void 0,audioDeviceId:n?await q(e.audioDeviceId,`audioinput`):void 0,wantAudio:n,width:e.width,height:e.height,frameRate:e.frameRate,exact:!!e.exactSize});try{let n=null,i=0,a=0;if(t){n=document.createElement(`video`),n.srcObject=r,n.muted=!0,n.playsInline=!0;let e=n;await new Promise((t,n)=>{e.onloadedmetadata=()=>e.play().then(()=>t()).catch(n),e.onerror=()=>n(Error(`Failed to load camera stream`))}),await new Promise(e=>requestAnimationFrame(()=>e())),await new Promise(e=>requestAnimationFrame(()=>e())),i=e.videoWidth,a=e.videoHeight}if(e.mode===`photo`){if(!n)throw Error(`photo capture requires a video track`);let t=e.warmupMs??G;t>0&&await new Promise(e=>setTimeout(e,t));let r=document.createElement(`canvas`);r.width=i,r.height=a;let o=r.getContext(`2d`);if(!o)throw Error(`Failed to get canvas context`);o.drawImage(n,0,0,i,a);let s=await new Promise((t,n)=>{r.toBlob(e=>e?t(e):n(Error(`Failed to encode photo`)),e.mimeType,e.quality)});return{bytes:await s.arrayBuffer(),mimeType:s.type||e.mimeType,width:i,height:a}}let o=Math.max(100,Math.min(e.durationMs??5e3,6e4)),s=typeof MediaRecorder<`u`&&MediaRecorder.isTypeSupported(e.mimeType)?e.mimeType:`video/webm`,c=new MediaRecorder(r,{mimeType:s}),l=[];c.ondataavailable=e=>{e.data&&e.data.size>0&&l.push(e.data)};let u=new Promise(e=>{c.onstop=()=>e()});c.start(),await new Promise(e=>setTimeout(e,o)),c.stop(),await u;let d=new Blob(l,{type:s});return{bytes:await d.arrayBuffer(),mimeType:d.type||s,width:i,height:a,durationMs:o}}finally{r.getTracks().forEach(e=>{e.stop()})}}async function q(e,t){if(e===void 0||e===``)return;if(!/^\d+$/.test(e))return e;if(!navigator.mediaDevices?.enumerateDevices)return;let n=parseInt(e,10);return(await navigator.mediaDevices.enumerateDevices()).filter(e=>e.kind===t)[n]?.deviceId}async function J(e){let t=t=>{if(!e.wantVideo)return!1;let n={};return e.videoDeviceId&&(n.deviceId={exact:e.videoDeviceId}),e.width&&(n.width=t===`exact`?{exact:e.width}:{ideal:e.width}),e.height&&(n.height=t===`exact`?{exact:e.height}:{ideal:e.height}),e.frameRate&&(n.frameRate=t===`exact`?{exact:e.frameRate}:{ideal:e.frameRate}),Object.keys(n).length>0?n:!0},n=()=>e.wantAudio?e.audioDeviceId?{deviceId:{exact:e.audioDeviceId}}:!0:!1;try{return await navigator.mediaDevices.getUserMedia({video:t(e.exact?`exact`:`ideal`),audio:n()})}catch(r){let i=r?.name;if(!e.exact||i!==`OverconstrainedError`&&i!==`NotReadableError`)throw r;return console.warn(`panel-rpc:capture-camera: exact ${e.width??`?`}x${e.height??`?`}@${e.frameRate??`?`} unmet, falling back to ideal`),await navigator.mediaDevices.getUserMedia({video:t(`ideal`),audio:n()})}}function Y(e){return new Promise(t=>{let n=window.open(e,`_blank`,`width=500,height=700,popup=yes`),r=!1,i=null,a=()=>{r||(r=!0,window.removeEventListener(`message`,o),clearTimeout(s),i&&clearInterval(i))},o=e=>{if(e.data?.type!==`oauth-callback`||e.origin!==window.location.origin||n&&e.source!==n)return;if(a(),e.data.error){console.error(`[panel-rpc:oauth-popup] OAuth error:`,e.data.error),t(null);return}let r=e.data.redirectUrl;typeof r!=`string`&&r!=null||t(r??null)};window.addEventListener(`message`,o),i=setInterval(async()=>{if(!r)try{let e=await fetch(`/api/oauth-result`);if(e.status===204||!e.ok)return;let n=await e.json();if(r)return;if(a(),n.error){console.error(`[panel-rpc:oauth-popup] Server relay OAuth error:`,n.error),t(null);return}t(n.redirectUrl??null)}catch(e){console.warn(`[panel-rpc:oauth-popup] Poll failed:`,e instanceof Error?e.message:String(e))}},1e3);let s=setTimeout(()=>{a();try{n?.close()}catch{}t(null)},12e4)})}function X(e){return{name:e.name,lang:e.lang,default:e.default}}async function Z(e,t){if(!navigator.mediaDevices?.getDisplayMedia)throw Error(`screen capture is not supported in this browser`);let n=await navigator.mediaDevices.getDisplayMedia({video:!0,audio:!1});try{let r=document.createElement(`video`);r.srcObject=n,r.muted=!0,r.playsInline=!0,await new Promise((e,t)=>{r.onloadedmetadata=()=>r.play().then(()=>e()).catch(t),r.onerror=()=>t(Error(`Failed to load video stream`))}),await new Promise(e=>setTimeout(e,100));let i=r.videoWidth,a=r.videoHeight,o=document.createElement(`canvas`);o.width=i,o.height=a;let s=o.getContext(`2d`);if(!s)throw Error(`Failed to get canvas context`);return s.drawImage(r,0,0,i,a),await new Promise((n,r)=>{o.toBlob(e=>e?n(e):r(Error(`Failed to create image blob`)),e,t)})}finally{n.getTracks().forEach(e=>{e.stop()})}}async function Q(e){let t=URL.createObjectURL(e);try{let e=new Image;return await new Promise((n,r)=>{e.onload=()=>n(),e.onerror=()=>r(Error(`Failed to decode capture`)),e.src=t}),{width:e.naturalWidth,height:e.naturalHeight}}finally{URL.revokeObjectURL(t)}}async function ne(e){let t=URL.createObjectURL(e);try{let e=new Image;await new Promise((n,r)=>{e.onload=()=>n(),e.onerror=()=>r(Error(`Failed to load image for clipboard conversion`)),e.src=t});let n=document.createElement(`canvas`);n.width=e.naturalWidth,n.height=e.naturalHeight;let r=n.getContext(`2d`);if(!r)throw Error(`Failed to get canvas context`);return r.drawImage(e,0,0),await new Promise((e,t)=>{n.toBlob(n=>n?e(n):t(Error(`PNG re-encode failed`)),`image/png`)})}finally{URL.revokeObjectURL(t)}}async function $(e=5*6e4){typeof document>`u`||typeof document.hasFocus==`function`&&(document.hasFocus()||await new Promise((t,n)=>{let r=()=>{window.removeEventListener(`focus`,i),document.removeEventListener(`visibilitychange`,a),clearTimeout(o)},i=()=>{document.hasFocus()&&(r(),t())},a=()=>{document.visibilityState===`visible`&&document.hasFocus()&&(r(),t())},o=setTimeout(()=>{r(),n(Error(`timed out waiting for window focus`))},e);window.addEventListener(`focus`,i),document.addEventListener(`visibilitychange`,a)}))}export{R as createStandalonePanelRpcHandlers};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/esptool-operations-CXqSawtf.js","assets/chunk-aKtaBQYM.js","assets/main-D7K1MTaQ.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/rom-eeWiO07Z.js"])))=>i.map(i=>d[i]);
2
+ import{Dt as e,a as t,y as n}from"./main-D7K1MTaQ.js";import{n as r,r as i}from"./hid-device-registry-D2LsJCRr.js";import{a,i as o}from"./serial-port-registry-Bc4wlwED.js";import{A as s,C as c,D as l,E as u,O as d,S as f,T as p,_ as m,a as h,b as g,c as _,d as v,f as y,g as b,h as x,i as ee,j as S,k as C,l as w,m as T,n as E,o as D,p as O,r as k,s as A,t as j,u as M,v as N,w as P,x as F,y as I}from"./usb-operations-CkcrNzZw.js";import{i as te,r as L}from"./usb-device-registry-BP58Vi0S.js";function R(r={}){let i=new Map;return{"page-info":()=>({origin:window.location.origin,href:window.location.href,title:document.title||``}),screencapture:async({mimeType:e,quality:t})=>{let n=await Z(e,t),r=await n.arrayBuffer(),i=await Q(n);return{bytes:r,width:i.width,height:i.height,mimeType:e}},"speak-text":async({text:e,lang:t,voice:n,rate:r,pitch:i,volume:a})=>{if(typeof speechSynthesis>`u`)throw Error(`speechSynthesis is unavailable in this page`);return await new Promise((o,s)=>{let c=new SpeechSynthesisUtterance(e);if(t!==void 0&&(c.lang=t),r!==void 0&&(c.rate=r),i!==void 0&&(c.pitch=i),a!==void 0&&(c.volume=a),n){let e=speechSynthesis.getVoices().find(e=>e.name===n);e&&(c.voice=e)}c.onend=()=>o(),c.onerror=e=>s(Error(`speak: ${e.error||`utterance failed`}`)),speechSynthesis.speak(c)}),{done:!0}},"list-voices":async()=>{if(typeof speechSynthesis>`u`)throw Error(`speechSynthesis is unavailable in this page`);let e=speechSynthesis.getVoices();return e.length>0?{voices:e.map(X)}:{voices:(await new Promise(e=>{let t=()=>{speechSynthesis.removeEventListener(`voiceschanged`,t),e(speechSynthesis.getVoices())};speechSynthesis.addEventListener(`voiceschanged`,t),setTimeout(()=>{speechSynthesis.removeEventListener(`voiceschanged`,t),e(speechSynthesis.getVoices())},1e3)})).map(X)}},"play-audio":async({bytes:e,volume:t})=>{if(typeof AudioContext>`u`)throw Error(`Web Audio API is unavailable in this page`);let n=new AudioContext;try{let r=await n.decodeAudioData(e.slice(0)),i=n.createBufferSource();if(i.buffer=r,t!==void 0){let e=n.createGain();e.gain.value=Math.max(0,Math.min(1,t)),i.connect(e),e.connect(n.destination)}else i.connect(n.destination);await new Promise(e=>{i.onended=()=>e(),i.start()})}finally{try{await n.close()}catch{}}return{done:!0}},"play-chime":async({tone:e})=>{let t={success:[880,1320],error:[440,220],notify:[660,660]},[n,r]=t[e??`notify`]??t.notify;if(typeof AudioContext>`u`)throw Error(`Web Audio API is unavailable in this page`);let i=new AudioContext;try{let e=i.currentTime;for(let[t,a]of[n,r].entries()){let n=i.createOscillator();n.type=`sine`,n.frequency.value=a;let r=i.createGain();r.gain.setValueAtTime(1e-4,e+t*.18),r.gain.exponentialRampToValueAtTime(.2,e+t*.18+.02),r.gain.exponentialRampToValueAtTime(1e-4,e+t*.18+.18),n.connect(r),r.connect(i.destination),n.start(e+t*.18),n.stop(e+t*.18+.2)}await new Promise(e=>setTimeout(e,450))}finally{try{await i.close()}catch{}}return{done:!0}},"clipboard-read-text":async()=>{if(!navigator.clipboard?.readText)throw Error(`clipboard API unavailable`);return{text:await navigator.clipboard.readText()}},"clipboard-write-text":async({text:e})=>{if(!navigator.clipboard?.writeText)throw Error(`clipboard API unavailable`);return await $(),await navigator.clipboard.writeText(e),{done:!0}},"clipboard-write-image":async({bytes:e,mimeType:t})=>{if(!navigator.clipboard?.write||typeof ClipboardItem>`u`)throw Error(`clipboard image API unavailable`);let n,r=new Blob([e],{type:t});return n=t===`image/png`?r:await ne(r),await $(),await navigator.clipboard.write([new ClipboardItem({"image/png":n})]),{done:!0}},"window-open":async({url:e,target:t,features:n})=>({opened:window.open(e,t??`_blank`,n??`noopener,noreferrer`)!==null}),"oauth-popup":async({url:e})=>({redirectUrl:await Y(e)}),"capture-camera":async e=>await K(e),"enumerate-media-devices":async()=>{if(!navigator.mediaDevices?.enumerateDevices)throw Error(`enumerateDevices is not supported in this browser`);let e=await navigator.mediaDevices.enumerateDevices(),t=e=>({deviceId:e.deviceId,label:e.label||``,...e.groupId?{groupId:e.groupId}:{}});return{videoinputs:e.filter(e=>e.kind===`videoinput`).map(t),audioinputs:e.filter(e=>e.kind===`audioinput`).map(t)}},"tray-reset":async()=>{if(!r.resetTray)throw Error(`host reset: no active tray session to reset`);return await r.resetTray()},"tray-leave":async({workerBaseUrl:e,requestId:t})=>{if(!r.leaveTray)throw Error(`host leave: tray leave is not available in this environment`);return await r.leaveTray({workerBaseUrl:e,requestId:t})},"cherry-emit":async({runtimeId:e,name:t,detail:n})=>{if(!r.emitCherrySliccEvent)throw Error(`cherry-emit: not available in this environment`);return{delivered:r.emitCherrySliccEvent(e,t,n)}},"oauth-extras-set":({providerId:e,domains:r})=>(n(e,r),{storeAfter:t()}),"save-oauth-accounts":({accountsJson:e})=>(localStorage.setItem(`slicc_accounts`,e),{storedJson:localStorage.getItem(`slicc_accounts`)??e}),"usb-list":async()=>({devices:await D(z(),B())}),"usb-request":async({filters:e})=>({device:await w(z(),B(),e)}),"usb-device-info":({handle:e})=>({device:h(z(),e)}),"usb-open":async({handle:e})=>(await A(z(),e),{done:!0}),"usb-close":async({handle:e})=>(await E(z(),e),{done:!0}),"usb-select-configuration":async({handle:e,configurationValue:t})=>(await v(z(),e,t),{done:!0}),"usb-claim-interface":async({handle:e,interfaceNumber:t})=>(await j(z(),e,t),{done:!0}),"usb-release-interface":async({handle:e,interfaceNumber:t})=>(await _(z(),e,t),{done:!0}),"usb-control-transfer-in":async({handle:e,setup:t,length:n})=>k(z(),e,t,n),"usb-control-transfer-out":async({handle:e,setup:t,bytes:n})=>ee(z(),e,t,n),"usb-transfer-in":async({handle:e,endpointNumber:t,length:n})=>y(z(),e,t,n),"usb-transfer-out":async({handle:e,endpointNumber:t,bytes:n})=>O(z(),e,t,n),"usb-reset":async({handle:e})=>(await M(z(),e),{done:!0}),"hid-list":async()=>({devices:await b(V(),H())}),"hid-request":async({filters:e})=>({devices:await I(V(),H(),e)}),"hid-device-info":({handle:e})=>({device:x(V(),e)}),"hid-open":async({handle:e})=>(await m(V(),e),{done:!0}),"hid-close":async({handle:e})=>(await T(V(),e),{done:!0}),"hid-send-report":async({handle:e,reportId:t,bytes:n})=>(await F(V(),e,t,n),{done:!0}),"hid-send-feature-report":async({handle:e,reportId:t,bytes:n})=>(await g(V(),e,t,n),{done:!0}),"hid-receive-feature-report":async({handle:e,reportId:t})=>N(V(),e,t),"hid-subscribe-input-reports":async({handle:e})=>{i.get(e)?.();let t=await f(V(),e,t=>{r.emitEvent?.(`hid-input-report`,{handle:e,reportId:t.reportId,bytes:t.bytes})});return i.set(e,t),{done:!0}},"hid-unsubscribe-input-reports":({handle:e})=>(i.get(e)?.(),i.delete(e),{done:!0}),"serial-list":async()=>({devices:await u(U(),W())}),"serial-request":async({filters:e})=>({device:await C(U(),W(),e)}),"serial-device-info":({handle:e})=>({device:P(U(),e)}),"serial-open":async({handle:e,options:t})=>(await l(U(),e,t),{done:!0}),"serial-close":async({handle:e})=>(await c(U(),e),{done:!0}),"serial-read":async({handle:e,maxBytes:t,until:n,timeoutMs:r})=>{let i=await d(U(),e,{maxBytes:t,until:n?new Uint8Array(n):void 0,timeoutMs:r});return{bytes:i.buffer.slice(i.byteOffset,i.byteOffset+i.byteLength)}},"serial-write":async({handle:e,bytes:t})=>({bytesWritten:await S(U(),e,new Uint8Array(t))}),"serial-get-signals":async({handle:e})=>({signals:await p(U(),e)}),"serial-set-signals":async({handle:e,signals:t})=>(await s(U(),e,t),{done:!0}),"esptool-chip-info":async({handle:t,baudRate:n})=>(await e(()=>import(`./esptool-operations-CXqSawtf.js`),__vite__mapDeps([0,1,2,3,4]))).esptoolChipInfo(U(),t,n,e=>r.emitEvent?.(`esptool-progress`,{handle:t,line:e})),"esptool-read-mac":async({handle:t,baudRate:n})=>(await e(()=>import(`./esptool-operations-CXqSawtf.js`),__vite__mapDeps([0,1,2,3,4]))).esptoolReadMac(U(),t,n,e=>r.emitEvent?.(`esptool-progress`,{handle:t,line:e})),"esptool-erase-flash":async({handle:t,baudRate:n})=>(await(await e(()=>import(`./esptool-operations-CXqSawtf.js`),__vite__mapDeps([0,1,2,3,4]))).esptoolEraseFlash(U(),t,n,e=>r.emitEvent?.(`esptool-progress`,{handle:t,line:e})),{done:!0}),"esptool-flash":async({handle:t,baudRate:n,eraseAll:i,segments:a})=>(await(await e(()=>import(`./esptool-operations-CXqSawtf.js`),__vite__mapDeps([0,1,2,3,4]))).esptoolFlash(U(),t,n,i,a.map(e=>({address:e.address,data:new Uint8Array(e.bytes)})),e=>r.emitEvent?.(`esptool-progress`,{handle:t,line:e})),{done:!0}),"esptool-read-flash":async({handle:t,baudRate:n,address:i,size:a})=>{let o=await(await e(()=>import(`./esptool-operations-CXqSawtf.js`),__vite__mapDeps([0,1,2,3,4]))).esptoolReadFlash(U(),t,n,i,a,e=>r.emitEvent?.(`esptool-progress`,{handle:t,line:e}));return{bytes:o.buffer.slice(o.byteOffset,o.byteOffset+o.byteLength)}},"esptool-read-reg":async({handle:t,baudRate:n,address:i})=>(await e(()=>import(`./esptool-operations-CXqSawtf.js`),__vite__mapDeps([0,1,2,3,4]))).esptoolReadReg(U(),t,n,i,e=>r.emitEvent?.(`esptool-progress`,{handle:t,line:e})),"esptool-flash-id":async({handle:t,baudRate:n})=>(await e(()=>import(`./esptool-operations-CXqSawtf.js`),__vite__mapDeps([0,1,2,3,4]))).esptoolFlashId(U(),t,n,e=>r.emitEvent?.(`esptool-progress`,{handle:t,line:e})),"esptool-erase-region":async({handle:t,baudRate:n,address:i,size:a})=>(await(await e(()=>import(`./esptool-operations-CXqSawtf.js`),__vite__mapDeps([0,1,2,3,4]))).esptoolEraseRegion(U(),t,n,i,a,e=>r.emitEvent?.(`esptool-progress`,{handle:t,line:e})),{done:!0}),"esptool-run":async({handle:t,baudRate:n})=>(await(await e(()=>import(`./esptool-operations-CXqSawtf.js`),__vite__mapDeps([0,1,2,3,4]))).esptoolRun(U(),t,n,e=>r.emitEvent?.(`esptool-progress`,{handle:t,line:e})),{done:!0}),"list-remote-targets":async()=>r.listRemoteTargets?{targets:(await r.listRemoteTargets()).filter(e=>e.targetId.includes(`:`)).map(e=>({targetId:e.targetId,title:e.title,url:e.url}))}:{targets:[]},"remote-cdp-send":async({runtimeId:e,localTargetId:t,method:n,params:i,sessionId:a,timeout:o})=>{if(!r.remoteCdp)throw Error(`remote-cdp bridge not available`);return r.remoteCdp.send({runtimeId:e,localTargetId:t,method:n,params:i,sessionId:a,timeout:o})},"remote-cdp-subscribe":async({runtimeId:e,localTargetId:t,event:n})=>{if(!r.remoteCdp)throw Error(`remote-cdp bridge not available`);return r.remoteCdp.subscribe({runtimeId:e,localTargetId:t,event:n})},"remote-cdp-unsubscribe":async({runtimeId:e,localTargetId:t,event:n})=>{if(!r.remoteCdp)throw Error(`remote-cdp bridge not available`);return r.remoteCdp.unsubscribe({runtimeId:e,localTargetId:t,event:n})},"remote-cdp-detach":async({runtimeId:e,localTargetId:t})=>{if(!r.remoteCdp)throw Error(`remote-cdp bridge not available`);return r.remoteCdp.detach({runtimeId:e,localTargetId:t})},"remote-open-tab":async({runtimeId:e,url:t})=>{if(!r.remoteCdp)throw Error(`remote-cdp bridge not available`);return r.remoteCdp.openTab({runtimeId:e,url:t})}}}function z(){return te()}function B(){let e=L();if(!e)throw Error(`WebUSB is unavailable in this browser`);return e}function V(){return i()}function H(){let e=r();if(!e)throw Error(`WebHID is unavailable in this browser`);return e}function U(){return a()}function W(){let e=o();if(!e)throw Error(`Web Serial is unavailable in this browser`);return e}var G=1500;async function K(e){if(!navigator.mediaDevices?.getUserMedia)throw Error(`getUserMedia is not supported in this browser`);let t=e.mode===`photo`||e.captureVideo!==!1,n=!!e.captureAudio&&e.mode===`video`;if(!t&&!n)throw Error(`camera capture: at least one of video or audio must be requested`);let r=await J({wantVideo:t,videoDeviceId:t?await q(e.deviceId,`videoinput`):void 0,audioDeviceId:n?await q(e.audioDeviceId,`audioinput`):void 0,wantAudio:n,width:e.width,height:e.height,frameRate:e.frameRate,exact:!!e.exactSize});try{let n=null,i=0,a=0;if(t){n=document.createElement(`video`),n.srcObject=r,n.muted=!0,n.playsInline=!0;let e=n;await new Promise((t,n)=>{e.onloadedmetadata=()=>e.play().then(()=>t()).catch(n),e.onerror=()=>n(Error(`Failed to load camera stream`))}),await new Promise(e=>requestAnimationFrame(()=>e())),await new Promise(e=>requestAnimationFrame(()=>e())),i=e.videoWidth,a=e.videoHeight}if(e.mode===`photo`){if(!n)throw Error(`photo capture requires a video track`);let t=e.warmupMs??G;t>0&&await new Promise(e=>setTimeout(e,t));let r=document.createElement(`canvas`);r.width=i,r.height=a;let o=r.getContext(`2d`);if(!o)throw Error(`Failed to get canvas context`);o.drawImage(n,0,0,i,a);let s=await new Promise((t,n)=>{r.toBlob(e=>e?t(e):n(Error(`Failed to encode photo`)),e.mimeType,e.quality)});return{bytes:await s.arrayBuffer(),mimeType:s.type||e.mimeType,width:i,height:a}}let o=Math.max(100,Math.min(e.durationMs??5e3,6e4)),s=typeof MediaRecorder<`u`&&MediaRecorder.isTypeSupported(e.mimeType)?e.mimeType:`video/webm`,c=new MediaRecorder(r,{mimeType:s}),l=[];c.ondataavailable=e=>{e.data&&e.data.size>0&&l.push(e.data)};let u=new Promise(e=>{c.onstop=()=>e()});c.start(),await new Promise(e=>setTimeout(e,o)),c.stop(),await u;let d=new Blob(l,{type:s});return{bytes:await d.arrayBuffer(),mimeType:d.type||s,width:i,height:a,durationMs:o}}finally{r.getTracks().forEach(e=>{e.stop()})}}async function q(e,t){if(e===void 0||e===``)return;if(!/^\d+$/.test(e))return e;if(!navigator.mediaDevices?.enumerateDevices)return;let n=parseInt(e,10);return(await navigator.mediaDevices.enumerateDevices()).filter(e=>e.kind===t)[n]?.deviceId}async function J(e){let t=t=>{if(!e.wantVideo)return!1;let n={};return e.videoDeviceId&&(n.deviceId={exact:e.videoDeviceId}),e.width&&(n.width=t===`exact`?{exact:e.width}:{ideal:e.width}),e.height&&(n.height=t===`exact`?{exact:e.height}:{ideal:e.height}),e.frameRate&&(n.frameRate=t===`exact`?{exact:e.frameRate}:{ideal:e.frameRate}),Object.keys(n).length>0?n:!0},n=()=>e.wantAudio?e.audioDeviceId?{deviceId:{exact:e.audioDeviceId}}:!0:!1;try{return await navigator.mediaDevices.getUserMedia({video:t(e.exact?`exact`:`ideal`),audio:n()})}catch(r){let i=r?.name;if(!e.exact||i!==`OverconstrainedError`&&i!==`NotReadableError`)throw r;return console.warn(`panel-rpc:capture-camera: exact ${e.width??`?`}x${e.height??`?`}@${e.frameRate??`?`} unmet, falling back to ideal`),await navigator.mediaDevices.getUserMedia({video:t(`ideal`),audio:n()})}}function Y(e){return new Promise(t=>{let n=window.open(e,`_blank`,`width=500,height=700,popup=yes`),r=!1,i=null,a=()=>{r||(r=!0,window.removeEventListener(`message`,o),clearTimeout(s),i&&clearInterval(i))},o=e=>{if(e.data?.type!==`oauth-callback`||e.origin!==window.location.origin||n&&e.source!==n)return;if(a(),e.data.error){console.error(`[panel-rpc:oauth-popup] OAuth error:`,e.data.error),t(null);return}let r=e.data.redirectUrl;typeof r!=`string`&&r!=null||t(r??null)};window.addEventListener(`message`,o),i=setInterval(async()=>{if(!r)try{let e=await fetch(`/api/oauth-result`);if(e.status===204||!e.ok)return;let n=await e.json();if(r)return;if(a(),n.error){console.error(`[panel-rpc:oauth-popup] Server relay OAuth error:`,n.error),t(null);return}t(n.redirectUrl??null)}catch(e){console.warn(`[panel-rpc:oauth-popup] Poll failed:`,e instanceof Error?e.message:String(e))}},1e3);let s=setTimeout(()=>{a();try{n?.close()}catch{}t(null)},12e4)})}function X(e){return{name:e.name,lang:e.lang,default:e.default}}async function Z(e,t){if(!navigator.mediaDevices?.getDisplayMedia)throw Error(`screen capture is not supported in this browser`);let n=await navigator.mediaDevices.getDisplayMedia({video:!0,audio:!1});try{let r=document.createElement(`video`);r.srcObject=n,r.muted=!0,r.playsInline=!0,await new Promise((e,t)=>{r.onloadedmetadata=()=>r.play().then(()=>e()).catch(t),r.onerror=()=>t(Error(`Failed to load video stream`))}),await new Promise(e=>setTimeout(e,100));let i=r.videoWidth,a=r.videoHeight,o=document.createElement(`canvas`);o.width=i,o.height=a;let s=o.getContext(`2d`);if(!s)throw Error(`Failed to get canvas context`);return s.drawImage(r,0,0,i,a),await new Promise((n,r)=>{o.toBlob(e=>e?n(e):r(Error(`Failed to create image blob`)),e,t)})}finally{n.getTracks().forEach(e=>{e.stop()})}}async function Q(e){let t=URL.createObjectURL(e);try{let e=new Image;return await new Promise((n,r)=>{e.onload=()=>n(),e.onerror=()=>r(Error(`Failed to decode capture`)),e.src=t}),{width:e.naturalWidth,height:e.naturalHeight}}finally{URL.revokeObjectURL(t)}}async function ne(e){let t=URL.createObjectURL(e);try{let e=new Image;await new Promise((n,r)=>{e.onload=()=>n(),e.onerror=()=>r(Error(`Failed to load image for clipboard conversion`)),e.src=t});let n=document.createElement(`canvas`);n.width=e.naturalWidth,n.height=e.naturalHeight;let r=n.getContext(`2d`);if(!r)throw Error(`Failed to get canvas context`);return r.drawImage(e,0,0),await new Promise((e,t)=>{n.toBlob(n=>n?e(n):t(Error(`PNG re-encode failed`)),`image/png`)})}finally{URL.revokeObjectURL(t)}}async function $(e=5*6e4){typeof document>`u`||typeof document.hasFocus==`function`&&(document.hasFocus()||await new Promise((t,n)=>{let r=()=>{window.removeEventListener(`focus`,i),document.removeEventListener(`visibilitychange`,a),clearTimeout(o)},i=()=>{document.hasFocus()&&(r(),t())},a=()=>{document.visibilityState===`visible`&&document.hasFocus()&&(r(),t())},o=setTimeout(()=>{r(),n(Error(`timed out waiting for window focus`))},e);window.addEventListener(`focus`,i),document.addEventListener(`visibilitychange`,a)}))}export{R as createStandalonePanelRpcHandlers};
@@ -1,4 +1,4 @@
1
- import"./main-CAjMV3Ro.js";var e={directory:{title:`Mount local directory`,approve:`Select directory`},"usb-device":{title:`Connect USB device`,approve:`Select USB device`},"serial-port":{title:`Connect serial port`,approve:`Select serial port`},"hid-device":{title:`Connect HID device`,approve:`Select HID device`}};function t(t,n=[]){let r=e[t],i=n.length?` data-action-data='${JSON.stringify({filters:n}).replace(/'/g,`&apos;`)}'`:``;return`
1
+ import"./main-D7K1MTaQ.js";var e={directory:{title:`Mount local directory`,approve:`Select directory`},"usb-device":{title:`Connect USB device`,approve:`Select USB device`},"serial-port":{title:`Connect serial port`,approve:`Select serial port`},"hid-device":{title:`Connect HID device`,approve:`Select HID device`}};function t(t,n=[]){let r=e[t],i=n.length?` data-action-data='${JSON.stringify({filters:n}).replace(/'/g,`&apos;`)}'`:``;return`
2
2
  <div class="sprinkle-action-card">
3
3
  <div class="sprinkle-action-card__header">${r.title} <span class="sprinkle-badge sprinkle-badge--notice">approval</span></div>
4
4
  <div class="sprinkle-action-card__actions">
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/fs-sLaOZiPe.js","assets/main-CAjMV3Ro.js","assets/chunk-aKtaBQYM.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/mount-id-BuG8r64x.js","assets/mount-picker-popup-DuIeknAs.js","assets/types-idfTVsM8.js","assets/picker-approval-DeEn9TVD.js","assets/path-utils-DU6QhF_k.js","assets/oauth-service-C4iJUflq.js","assets/proxied-fetch-DK_0fIag.js","assets/proxy-error-9UvXMpzG.js"])))=>i.map(i=>d[i]);
2
- import{Dt as e,Y as t,nt as n,r,u as i,v as a}from"./main-CAjMV3Ro.js";import{t as o}from"./global-db-CbuLl-zx.js";import{t as s}from"./types-idfTVsM8.js";var c=n(`mcp-store`),l=`/workspace/.mcp/servers.json`,u=1,d=null,f=null;async function p(){return d||=await e(()=>import(`./fs-sLaOZiPe.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8])),d}async function m(e){if(e)return e;if(f&&f.dbName===`slicc-fs-global`)return f.instance;let{VirtualFS:t}=await p(),n=await t.create({dbName:o});return f={instance:n,dbName:o},n}function h(){return{version:u,servers:{}}}function g(e){if(!e||typeof e!=`object`)return h();let t=e,n=typeof t.version==`number`?t.version:u,r={};if(t.servers&&typeof t.servers==`object`)for(let[e,n]of Object.entries(t.servers)){if(!n||typeof n!=`object`)continue;let t=n;typeof t.url==`string`&&(r[e]=t)}return{version:n,servers:r}}async function _(e){try{let t=await(await m(e)).readFile(l,{encoding:`utf-8`});try{return g(JSON.parse(t))}catch(e){return c.warn(`servers.json is not valid JSON; treating as empty`,{error:e instanceof Error?e.message:String(e)}),h()}}catch(e){return e instanceof s&&e.code===`ENOENT`||c.warn(`Failed to read servers.json`,{error:e instanceof Error?e.message:String(e)}),h()}}async function v(e){return(await _(e)).servers}async function y(){let e=await v(),t=[];for(let[n,r]of Object.entries(e))!r?.url||!r.auth?.clientId||t.push({name:n,serverUrl:r.url,auth:r.auth});return t}var b=n(`mcp-oauth`);async function x(e,t,n){let r=new URL(e).origin,i=t??`${r}/.well-known/oauth-protected-resource`,a=null,o=null;b.debug(`Fetching PRM`,{prmUrl:i});try{let e=await n(i,{headers:{Accept:`application/json`}});if(!e.ok)o=`${e.status} ${e.statusText}`;else{let t=await e.json();!t.authorization_servers||t.authorization_servers.length===0?o=`lists no authorization_servers`:a=t}}catch(e){o=e instanceof Error?e.message:String(e)}let s,c,l;a?.authorization_servers&&a.authorization_servers.length>0?(s=a.authorization_servers[0].replace(/\/+$/,``),c=`${s}/.well-known/oauth-authorization-server`,l=`prm`,b.debug(`Discovery via PRM`,{prmUrl:i,asmUrl:c})):(s=r,c=`${r}/.well-known/oauth-authorization-server`,l=`asm-origin-fallback`,b.debug(`PRM unavailable; falling back to ASM at server origin`,{prmUrl:i,prmReason:o,asmUrl:c}));let u=null,d=null;b.debug(`Fetching ASM`,{asmUrl:c});try{let e=await n(c,{headers:{Accept:`application/json`}});e.ok?u=await e.json():d=`${e.status} ${e.statusText}`}catch(e){d=e instanceof Error?e.message:String(e)}if(!u)throw Error(l===`asm-origin-fallback`?`MCP OAuth discovery failed. PRM (${i}): ${o}. ASM fallback (${c}): ${d}.`:`ASM fetch failed: ${d} (${c})`);if(!u.authorization_endpoint||!u.token_endpoint)throw Error(l===`asm-origin-fallback`?`MCP OAuth discovery failed. PRM (${i}): ${o}. ASM fallback (${c}) is missing required endpoints (authorization_endpoint, token_endpoint).`:`ASM at ${c} is missing required endpoints`);return{issuer:u.issuer||s,authorizationEndpoint:u.authorization_endpoint,tokenEndpoint:u.token_endpoint,registrationEndpoint:u.registration_endpoint,supportedScopes:u.scopes_supported??a?.scopes_supported,codeChallengeMethods:u.code_challenge_methods_supported,grantTypes:u.grant_types_supported,discoveryPath:l}}function S(e){return!e||e.length===0||e.includes(`S256`)?`S256`:e.includes(`plain`)?`plain`:`S256`}function C(e){let t=``;for(let n of e)t+=String.fromCharCode(n);return btoa(t).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}async function w(e){let t=new Uint8Array(32);crypto.getRandomValues(t);let n=C(t);if(e===`plain`)return{codeVerifier:n,codeChallenge:n,method:e};let r=await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(n));return{codeVerifier:n,codeChallenge:C(new Uint8Array(r)),method:e}}function T(e){try{let t=new URL(e);return{code:t.searchParams.get(`code`),state:t.searchParams.get(`state`)}}catch{return{code:null,state:null}}}async function E(e){let t=await w(S(e.asMetadata.codeChallengeMethods)),n=C(crypto.getRandomValues(new Uint8Array(16))),r=new URLSearchParams({response_type:`code`,client_id:e.clientId,redirect_uri:e.redirectUri,code_challenge:t.codeChallenge,code_challenge_method:t.method,state:n});e.scope&&r.set(`scope`,e.scope);let i=`${e.asMetadata.authorizationEndpoint}?${r.toString()}`,a=await e.launcher(i);if(!a)throw Error(`MCP OAuth flow cancelled or timed out`);let{code:o,state:s}=T(a);if(!o)throw Error("MCP OAuth redirect missing `code` parameter");if(s!==n)throw Error(`MCP OAuth state mismatch — possible CSRF`);return O({tokenEndpoint:e.asMetadata.tokenEndpoint,clientId:e.clientId,code:o,codeVerifier:t.codeVerifier,redirectUri:e.redirectUri,fetchImpl:e.fetchImpl})}function D(e){if(e.error||!e.access_token)throw Error(`Token endpoint error: ${e.error??`no_access_token`}${e.error_description?` — ${e.error_description}`:``}`);return{accessToken:e.access_token,refreshToken:e.refresh_token,expiresAt:e.expires_in?Date.now()+e.expires_in*1e3:void 0,scope:e.scope,tokenType:e.token_type}}async function O(e){let t=new URLSearchParams({grant_type:`authorization_code`,code:e.code,redirect_uri:e.redirectUri,client_id:e.clientId,code_verifier:e.codeVerifier}).toString(),n=await e.fetchImpl(e.tokenEndpoint,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`,Accept:`application/json`},body:t}),r=await n.json();if(!n.ok&&!r.access_token)throw Error(`Token exchange failed: ${n.status} ${n.statusText}${r.error?` (${r.error})`:``}`);return D(r)}async function k(e){let t=new URLSearchParams({grant_type:`refresh_token`,refresh_token:e.refreshToken,client_id:e.clientId});e.scope&&t.set(`scope`,e.scope);let n=await e.fetchImpl(e.tokenEndpoint,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`,Accept:`application/json`},body:t.toString()}),r=await n.json();if(!n.ok&&!r.access_token)throw Error(`Token refresh failed: ${n.status} ${n.statusText}${r.error?` (${r.error})`:``}`);return D(r)}var A=n(`mcp-provider`),j=`mcp:`;function M(){return typeof globalThis<`u`&&globalThis.indexedDB!==void 0}function N(e){return`${j}${e}`}var P=new Map,F=new Set;async function I(){let t=typeof chrome<`u`?chrome:void 0;if(t?.runtime?.id)return t.identity?.getRedirectURL?.(`mcp-callback`)??`https://${t.runtime.id}.chromiumapp.org/mcp-callback`;let{getOAuthPageOrigin:n}=await e(async()=>{let{getOAuthPageOrigin:e}=await import(`./oauth-service-C4iJUflq.js`);return{getOAuthPageOrigin:e}},__vite__mapDeps([9,1,2,3])),{origin:r}=await n();return`${r}/auth/callback`}async function L(t){if(t)return t;let{createProxiedFetch:n}=await e(async()=>{let{createProxiedFetch:e}=await import(`./proxied-fetch-DK_0fIag.js`);return{createProxiedFetch:e}},__vite__mapDeps([10,11])),r=n();return async(e,t)=>{let n=await r(e,{method:t?.method,headers:t?.headers,body:t?.body}),i=new TextDecoder().decode(n.body);return{ok:n.status>=200&&n.status<300,status:n.status,statusText:n.statusText,text:async()=>i,json:async()=>JSON.parse(i),headers:{get:e=>n.headers[e.toLowerCase()]??null}}}}async function R(e){let t=P.get(N(e.name));if(t)return t;let n=await L(e.fetchImpl),r=await x(e.serverUrl,void 0,n);return P.set(N(e.name),r),r}function z(e){let t=N(e.name),n=(()=>{try{return new URL(e.serverUrl).host}catch{return``}})();return{id:t,name:`MCP: ${e.name}`,description:`MCP server at ${e.serverUrl}`,requiresApiKey:!1,requiresBaseUrl:!1,isOAuth:!0,oauthTokenDomains:n?[n]:[],getModelIds:()=>[],onOAuthLogin:async(n,r)=>{let i=e.launcher??n,o=await L(e.fetchImpl),s=await E({asMetadata:await R(e),clientId:e.auth.clientId,scope:e.auth.scope,redirectUri:await I(),launcher:i,fetchImpl:o});await a({providerId:t,accessToken:s.accessToken,refreshToken:s.refreshToken,tokenExpiresAt:s.expiresAt}),r()},onSilentRenew:async()=>{if(!i(t))return null;let n=r().find(e=>e.providerId===t)?.refreshToken;if(!n)return A.info(`No refresh token for MCP provider, skipping silent renewal`,{id:t}),null;try{let r=await R(e),i=r.grantTypes??[];if(i.length>0&&!i.includes(`refresh_token`))return A.info(`AS does not advertise refresh_token grant; skipping silent renewal`,{id:t}),null;let o=await L(e.fetchImpl),s=await k({tokenEndpoint:r.tokenEndpoint,clientId:e.auth.clientId,refreshToken:n,scope:e.auth.scope,fetchImpl:o});return await a({providerId:t,accessToken:s.accessToken,refreshToken:s.refreshToken??n,tokenExpiresAt:s.expiresAt}),s.accessToken}catch(e){return A.warn(`MCP silent renewal failed`,{id:t,error:e instanceof Error?e.message:String(e)}),null}}}}function B(e){let n=N(e.name);F.has(n)||(t(z(e)),F.add(n),A.debug(`Registered MCP provider`,{id:n}))}async function V(){if(!M())return[];let{readMcpAuthEntries:t}=await e(async()=>{let{readMcpAuthEntries:e}=await import(`./provider-store-access-DQA9SE91.js`);return{readMcpAuthEntries:e}},[]),n=await t(),r=[];for(let e of n)B({name:e.name,serverUrl:e.serverUrl,auth:e.auth}),r.push(N(e.name));return r}export{V as ensureAllMcpProvidersRegistered,y as t};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/fs-C3bDUkXJ.js","assets/main-D7K1MTaQ.js","assets/chunk-aKtaBQYM.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/mount-id-Cy4nG68v.js","assets/mount-picker-popup-B4U0fkZK.js","assets/types-idfTVsM8.js","assets/picker-approval-EweLNWgE.js","assets/path-utils-DU6QhF_k.js","assets/oauth-service-CmHwn7zK.js","assets/proxied-fetch-DK_0fIag.js","assets/proxy-error-9UvXMpzG.js"])))=>i.map(i=>d[i]);
2
+ import{Dt as e,Y as t,nt as n,r,u as i,v as a}from"./main-D7K1MTaQ.js";import{t as o}from"./global-db-CbuLl-zx.js";import{t as s}from"./types-idfTVsM8.js";var c=n(`mcp-store`),l=`/workspace/.mcp/servers.json`,u=1,d=null,f=null;async function p(){return d||=await e(()=>import(`./fs-C3bDUkXJ.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8])),d}async function m(e){if(e)return e;if(f&&f.dbName===`slicc-fs-global`)return f.instance;let{VirtualFS:t}=await p(),n=await t.create({dbName:o});return f={instance:n,dbName:o},n}function h(){return{version:u,servers:{}}}function g(e){if(!e||typeof e!=`object`)return h();let t=e,n=typeof t.version==`number`?t.version:u,r={};if(t.servers&&typeof t.servers==`object`)for(let[e,n]of Object.entries(t.servers)){if(!n||typeof n!=`object`)continue;let t=n;typeof t.url==`string`&&(r[e]=t)}return{version:n,servers:r}}async function _(e){try{let t=await(await m(e)).readFile(l,{encoding:`utf-8`});try{return g(JSON.parse(t))}catch(e){return c.warn(`servers.json is not valid JSON; treating as empty`,{error:e instanceof Error?e.message:String(e)}),h()}}catch(e){return e instanceof s&&e.code===`ENOENT`||c.warn(`Failed to read servers.json`,{error:e instanceof Error?e.message:String(e)}),h()}}async function v(e){return(await _(e)).servers}async function y(){let e=await v(),t=[];for(let[n,r]of Object.entries(e))!r?.url||!r.auth?.clientId||t.push({name:n,serverUrl:r.url,auth:r.auth});return t}var b=n(`mcp-oauth`);async function x(e,t,n){let r=new URL(e).origin,i=t??`${r}/.well-known/oauth-protected-resource`,a=null,o=null;b.debug(`Fetching PRM`,{prmUrl:i});try{let e=await n(i,{headers:{Accept:`application/json`}});if(!e.ok)o=`${e.status} ${e.statusText}`;else{let t=await e.json();!t.authorization_servers||t.authorization_servers.length===0?o=`lists no authorization_servers`:a=t}}catch(e){o=e instanceof Error?e.message:String(e)}let s,c,l;a?.authorization_servers&&a.authorization_servers.length>0?(s=a.authorization_servers[0].replace(/\/+$/,``),c=`${s}/.well-known/oauth-authorization-server`,l=`prm`,b.debug(`Discovery via PRM`,{prmUrl:i,asmUrl:c})):(s=r,c=`${r}/.well-known/oauth-authorization-server`,l=`asm-origin-fallback`,b.debug(`PRM unavailable; falling back to ASM at server origin`,{prmUrl:i,prmReason:o,asmUrl:c}));let u=null,d=null;b.debug(`Fetching ASM`,{asmUrl:c});try{let e=await n(c,{headers:{Accept:`application/json`}});e.ok?u=await e.json():d=`${e.status} ${e.statusText}`}catch(e){d=e instanceof Error?e.message:String(e)}if(!u)throw Error(l===`asm-origin-fallback`?`MCP OAuth discovery failed. PRM (${i}): ${o}. ASM fallback (${c}): ${d}.`:`ASM fetch failed: ${d} (${c})`);if(!u.authorization_endpoint||!u.token_endpoint)throw Error(l===`asm-origin-fallback`?`MCP OAuth discovery failed. PRM (${i}): ${o}. ASM fallback (${c}) is missing required endpoints (authorization_endpoint, token_endpoint).`:`ASM at ${c} is missing required endpoints`);return{issuer:u.issuer||s,authorizationEndpoint:u.authorization_endpoint,tokenEndpoint:u.token_endpoint,registrationEndpoint:u.registration_endpoint,supportedScopes:u.scopes_supported??a?.scopes_supported,codeChallengeMethods:u.code_challenge_methods_supported,grantTypes:u.grant_types_supported,discoveryPath:l}}function S(e){return!e||e.length===0||e.includes(`S256`)?`S256`:e.includes(`plain`)?`plain`:`S256`}function C(e){let t=``;for(let n of e)t+=String.fromCharCode(n);return btoa(t).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}async function w(e){let t=new Uint8Array(32);crypto.getRandomValues(t);let n=C(t);if(e===`plain`)return{codeVerifier:n,codeChallenge:n,method:e};let r=await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(n));return{codeVerifier:n,codeChallenge:C(new Uint8Array(r)),method:e}}function T(e){try{let t=new URL(e);return{code:t.searchParams.get(`code`),state:t.searchParams.get(`state`)}}catch{return{code:null,state:null}}}async function E(e){let t=await w(S(e.asMetadata.codeChallengeMethods)),n=C(crypto.getRandomValues(new Uint8Array(16))),r=new URLSearchParams({response_type:`code`,client_id:e.clientId,redirect_uri:e.redirectUri,code_challenge:t.codeChallenge,code_challenge_method:t.method,state:n});e.scope&&r.set(`scope`,e.scope);let i=`${e.asMetadata.authorizationEndpoint}?${r.toString()}`,a=await e.launcher(i);if(!a)throw Error(`MCP OAuth flow cancelled or timed out`);let{code:o,state:s}=T(a);if(!o)throw Error("MCP OAuth redirect missing `code` parameter");if(s!==n)throw Error(`MCP OAuth state mismatch — possible CSRF`);return O({tokenEndpoint:e.asMetadata.tokenEndpoint,clientId:e.clientId,code:o,codeVerifier:t.codeVerifier,redirectUri:e.redirectUri,fetchImpl:e.fetchImpl})}function D(e){if(e.error||!e.access_token)throw Error(`Token endpoint error: ${e.error??`no_access_token`}${e.error_description?` — ${e.error_description}`:``}`);return{accessToken:e.access_token,refreshToken:e.refresh_token,expiresAt:e.expires_in?Date.now()+e.expires_in*1e3:void 0,scope:e.scope,tokenType:e.token_type}}async function O(e){let t=new URLSearchParams({grant_type:`authorization_code`,code:e.code,redirect_uri:e.redirectUri,client_id:e.clientId,code_verifier:e.codeVerifier}).toString(),n=await e.fetchImpl(e.tokenEndpoint,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`,Accept:`application/json`},body:t}),r=await n.json();if(!n.ok&&!r.access_token)throw Error(`Token exchange failed: ${n.status} ${n.statusText}${r.error?` (${r.error})`:``}`);return D(r)}async function k(e){let t=new URLSearchParams({grant_type:`refresh_token`,refresh_token:e.refreshToken,client_id:e.clientId});e.scope&&t.set(`scope`,e.scope);let n=await e.fetchImpl(e.tokenEndpoint,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`,Accept:`application/json`},body:t.toString()}),r=await n.json();if(!n.ok&&!r.access_token)throw Error(`Token refresh failed: ${n.status} ${n.statusText}${r.error?` (${r.error})`:``}`);return D(r)}var A=n(`mcp-provider`),j=`mcp:`;function M(){return typeof globalThis<`u`&&globalThis.indexedDB!==void 0}function N(e){return`${j}${e}`}var P=new Map,F=new Set;async function I(){let t=typeof chrome<`u`?chrome:void 0;if(t?.runtime?.id)return t.identity?.getRedirectURL?.(`mcp-callback`)??`https://${t.runtime.id}.chromiumapp.org/mcp-callback`;let{getOAuthPageOrigin:n}=await e(async()=>{let{getOAuthPageOrigin:e}=await import(`./oauth-service-CmHwn7zK.js`);return{getOAuthPageOrigin:e}},__vite__mapDeps([9,1,2,3])),{origin:r}=await n();return`${r}/auth/callback`}async function L(t){if(t)return t;let{createProxiedFetch:n}=await e(async()=>{let{createProxiedFetch:e}=await import(`./proxied-fetch-DK_0fIag.js`);return{createProxiedFetch:e}},__vite__mapDeps([10,11])),r=n();return async(e,t)=>{let n=await r(e,{method:t?.method,headers:t?.headers,body:t?.body}),i=new TextDecoder().decode(n.body);return{ok:n.status>=200&&n.status<300,status:n.status,statusText:n.statusText,text:async()=>i,json:async()=>JSON.parse(i),headers:{get:e=>n.headers[e.toLowerCase()]??null}}}}async function R(e){let t=P.get(N(e.name));if(t)return t;let n=await L(e.fetchImpl),r=await x(e.serverUrl,void 0,n);return P.set(N(e.name),r),r}function z(e){let t=N(e.name),n=(()=>{try{return new URL(e.serverUrl).host}catch{return``}})();return{id:t,name:`MCP: ${e.name}`,description:`MCP server at ${e.serverUrl}`,requiresApiKey:!1,requiresBaseUrl:!1,isOAuth:!0,oauthTokenDomains:n?[n]:[],getModelIds:()=>[],onOAuthLogin:async(n,r)=>{let i=e.launcher??n,o=await L(e.fetchImpl),s=await E({asMetadata:await R(e),clientId:e.auth.clientId,scope:e.auth.scope,redirectUri:await I(),launcher:i,fetchImpl:o});await a({providerId:t,accessToken:s.accessToken,refreshToken:s.refreshToken,tokenExpiresAt:s.expiresAt}),r()},onSilentRenew:async()=>{if(!i(t))return null;let n=r().find(e=>e.providerId===t)?.refreshToken;if(!n)return A.info(`No refresh token for MCP provider, skipping silent renewal`,{id:t}),null;try{let r=await R(e),i=r.grantTypes??[];if(i.length>0&&!i.includes(`refresh_token`))return A.info(`AS does not advertise refresh_token grant; skipping silent renewal`,{id:t}),null;let o=await L(e.fetchImpl),s=await k({tokenEndpoint:r.tokenEndpoint,clientId:e.auth.clientId,refreshToken:n,scope:e.auth.scope,fetchImpl:o});return await a({providerId:t,accessToken:s.accessToken,refreshToken:s.refreshToken??n,tokenExpiresAt:s.expiresAt}),s.accessToken}catch(e){return A.warn(`MCP silent renewal failed`,{id:t,error:e instanceof Error?e.message:String(e)}),null}}}}function B(e){let n=N(e.name);F.has(n)||(t(z(e)),F.add(n),A.debug(`Registered MCP provider`,{id:n}))}async function V(){if(!M())return[];let{readMcpAuthEntries:t}=await e(async()=>{let{readMcpAuthEntries:e}=await import(`./provider-store-access-Vtg1yxDc.js`);return{readMcpAuthEntries:e}},[]),n=await t(),r=[];for(let e of n)B({name:e.name,serverUrl:e.serverUrl,auth:e.auth}),r.push(N(e.name));return r}export{V as ensureAllMcpProvidersRegistered,y as t};
@@ -1,4 +1,4 @@
1
- import{r as e,t}from"./chunk-CMxvf4Kt.js";import{t as n}from"./logger-LESFN7Hj.js";import{n as r,r as i}from"./tool-ui-N76-EdVc.js";import{n as a,r as o}from"./src-CpdsjHiA.js";import{n as s,r as c}from"./panel-rpc-Bcvr75SR.js";import{n as l,o as u,t as d}from"./providers-ClvthlnA.js";import{c as f,d as p,r as m,t as h,u as g}from"./bedrock-camp-wxdDcDkR.js";import{d as _,l as v,u as y}from"./transform-messages-C1X1O3BY.js";let b={state:`inactive`,joinUrl:null,trayId:null,error:null,lastPingTime:null,reconnectAttempts:0,attachAttempts:0,lastAttachCode:null,connectingSince:null,lastError:null};function x(){return{...b}}const S=new Set;function ee(e){return S.add(e),()=>{S.delete(e)}}async function te(e,t,n,r,i,a){let o=[...e],s={...t,messages:[...t.messages,...e]};await r({type:`agent_start`}),await r({type:`turn_start`});for(let t of e)await r({type:`message_start`,message:t}),await r({type:`message_end`,message:t});return await re(s,o,n,i,r,a),o}async function ne(e,t,n,r,i){if(e.messages.length===0)throw Error(`Cannot continue: no messages in context`);if(e.messages[e.messages.length-1].role===`assistant`)throw Error(`Cannot continue from message role: assistant`);let a=[],o={...e};return await n({type:`agent_start`}),await n({type:`turn_start`}),await re(o,a,t,r,n,i),a}async function re(e,t,n,r,i,a){let o=e,s=n,c=!0,l=await s.getSteeringMessages?.()||[];for(;;){let e=!0;for(;e||l.length>0;){if(c?c=!1:await i({type:`turn_start`}),l.length>0){for(let e of l)await i({type:`message_start`,message:e}),await i({type:`message_end`,message:e}),o.messages.push(e),t.push(e);l=[]}let n=await ie(o,s,r,i,a);if(t.push(n),n.stopReason===`error`||n.stopReason===`aborted`){await i({type:`turn_end`,message:n,toolResults:[]}),await i({type:`agent_end`,messages:t});return}let u=n.content.filter(e=>e.type===`toolCall`),d=[];if(e=!1,u.length>0){let a=await ae(o,n,s,r,i);d.push(...a.messages),e=!a.terminate;for(let e of d)o.messages.push(e),t.push(e)}await i({type:`turn_end`,message:n,toolResults:d});let f={message:n,toolResults:d,context:o,newMessages:t},p=await s.prepareNextTurn?.(f);if(p&&(o=p.context??o,s={...s,model:p.model??s.model,reasoning:p.thinkingLevel===void 0?s.reasoning:p.thinkingLevel===`off`?void 0:p.thinkingLevel}),await s.shouldStopAfterTurn?.({message:n,toolResults:d,context:o,newMessages:t})){await i({type:`agent_end`,messages:t});return}l=await s.getSteeringMessages?.()||[]}let n=await s.getFollowUpMessages?.()||[];if(n.length>0){l=n;continue}break}await i({type:`agent_end`,messages:t})}async function ie(e,t,n,r,i){let a=e.messages;t.transformContext&&(a=await t.transformContext(a,n));let o=await t.convertToLlm(a),s={systemPrompt:e.systemPrompt,messages:o,tools:e.tools},c=i||p,l=(t.getApiKey?await t.getApiKey(t.model.provider):void 0)||t.apiKey,u=await c(t.model,s,{...t,apiKey:l,signal:n}),d=null,f=!1;for await(let t of u)switch(t.type){case`start`:d=t.partial,e.messages.push(d),f=!0,await r({type:`message_start`,message:{...d}});break;case`text_start`:case`text_delta`:case`text_end`:case`thinking_start`:case`thinking_delta`:case`thinking_end`:case`toolcall_start`:case`toolcall_delta`:case`toolcall_end`:d&&(d=t.partial,e.messages[e.messages.length-1]=d,await r({type:`message_update`,assistantMessageEvent:t,message:{...d}}));break;case`done`:case`error`:{let t=await u.result();return f?e.messages[e.messages.length-1]=t:e.messages.push(t),f||await r({type:`message_start`,message:{...t}}),await r({type:`message_end`,message:t}),t}}let m=await u.result();return f?e.messages[e.messages.length-1]=m:(e.messages.push(m),await r({type:`message_start`,message:{...m}})),await r({type:`message_end`,message:m}),m}async function ae(e,t,n,r,i){let a=t.content.filter(e=>e.type===`toolCall`),o=a.some(t=>e.tools?.find(e=>e.name===t.name)?.executionMode===`sequential`);return n.toolExecution===`sequential`||o?oe(e,t,a,n,r,i):C(e,t,a,n,r,i)}async function oe(e,t,n,r,i,a){let o=[],s=[];for(let c of n){await a({type:`tool_execution_start`,toolCallId:c.id,toolName:c.name,args:c.arguments});let n=await w(e,t,c,r,i),l;l=n.kind===`immediate`?{toolCall:c,result:n.result,isError:n.isError}:await ue(e,t,n,await le(n,i,a),r,i),await de(l,a);let u=fe(l);if(await pe(u,a),o.push(l),s.push(u),i?.aborted)break}return{messages:s,terminate:se(o)}}async function C(e,t,n,r,i,a){let o=[];for(let s of n){await a({type:`tool_execution_start`,toolCallId:s.id,toolName:s.name,args:s.arguments});let n=await w(e,t,s,r,i);if(n.kind===`immediate`){let e={toolCall:s,result:n.result,isError:n.isError};if(await de(e,a),o.push(e),i?.aborted)break;continue}if(o.push(async()=>{let o=await ue(e,t,n,await le(n,i,a),r,i);return await de(o,a),o}),i?.aborted)break}let s=await Promise.all(o.map(e=>typeof e==`function`?e():Promise.resolve(e))),c=[];for(let e of s){let t=fe(e);await pe(t,a),c.push(t)}return{messages:c,terminate:se(s)}}function se(e){return e.length>0&&e.every(e=>e.result.terminate===!0)}function ce(e,t){if(!e.prepareArguments)return t;let n=e.prepareArguments(t.arguments);return n===t.arguments?t:{...t,arguments:n}}async function w(e,t,n,r,i){let a=e.tools?.find(e=>e.name===n.name);if(!a)return{kind:`immediate`,result:T(`Tool ${n.name} not found`),isError:!0};try{let o=f(a,ce(a,n));if(r.beforeToolCall){let a=await r.beforeToolCall({assistantMessage:t,toolCall:n,args:o,context:e},i);if(i?.aborted)return{kind:`immediate`,result:T(`Operation aborted`),isError:!0};if(a?.block)return{kind:`immediate`,result:T(a.reason||`Tool execution was blocked`),isError:!0}}return i?.aborted?{kind:`immediate`,result:T(`Operation aborted`),isError:!0}:{kind:`prepared`,toolCall:n,tool:a,args:o}}catch(e){return{kind:`immediate`,result:T(e instanceof Error?e.message:String(e)),isError:!0}}}async function le(e,t,n){let r=[];try{let i=await e.tool.execute(e.toolCall.id,e.args,t,t=>{r.push(Promise.resolve(n({type:`tool_execution_update`,toolCallId:e.toolCall.id,toolName:e.toolCall.name,args:e.toolCall.arguments,partialResult:t})))});return await Promise.all(r),{result:i,isError:!1}}catch(e){return await Promise.all(r),{result:T(e instanceof Error?e.message:String(e)),isError:!0}}}async function ue(e,t,n,r,i,a){let o=r.result,s=r.isError;if(i.afterToolCall)try{let r=await i.afterToolCall({assistantMessage:t,toolCall:n.toolCall,args:n.args,result:o,isError:s,context:e},a);r&&(o={content:r.content??o.content,details:r.details??o.details,terminate:r.terminate??o.terminate},s=r.isError??s)}catch(e){o=T(e instanceof Error?e.message:String(e)),s=!0}return{toolCall:n.toolCall,result:o,isError:s}}function T(e){return{content:[{type:`text`,text:e}],details:{}}}async function de(e,t){await t({type:`tool_execution_end`,toolCallId:e.toolCall.id,toolName:e.toolCall.name,result:e.result,isError:e.isError})}function fe(e){return{role:`toolResult`,toolCallId:e.toolCall.id,toolName:e.toolCall.name,content:e.result.content,details:e.result.details,isError:e.isError,timestamp:Date.now()}}async function pe(e,t){await t({type:`message_start`,message:e}),await t({type:`message_end`,message:e})}function me(e){return e.filter(e=>e.role===`user`||e.role===`assistant`||e.role===`toolResult`)}const he={input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},ge={id:`unknown`,name:`unknown`,api:`unknown`,provider:`unknown`,baseUrl:``,reasoning:!1,input:[],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:0,maxTokens:0};function _e(e){let t=e?.tools?.slice()??[],n=e?.messages?.slice()??[];return{systemPrompt:e?.systemPrompt??``,model:e?.model??ge,thinkingLevel:e?.thinkingLevel??`off`,get tools(){return t},set tools(e){t=e.slice()},get messages(){return n},set messages(e){n=e.slice()},isStreaming:!1,streamingMessage:void 0,pendingToolCalls:new Set,errorMessage:void 0}}var ve=class{messages=[];mode;constructor(e){this.mode=e}enqueue(e){this.messages.push(e)}hasItems(){return this.messages.length>0}drain(){if(this.mode===`all`){let e=this.messages.slice();return this.messages=[],e}let e=this.messages[0];return e?(this.messages=this.messages.slice(1),[e]):[]}clear(){this.messages=[]}},ye=class{_state;listeners=new Set;steeringQueue;followUpQueue;convertToLlm;transformContext;streamFn;getApiKey;onPayload;onResponse;beforeToolCall;afterToolCall;prepareNextTurn;activeRun;sessionId;thinkingBudgets;transport;maxRetryDelayMs;toolExecution;constructor(e={}){this._state=_e(e.initialState),this.convertToLlm=e.convertToLlm??me,this.transformContext=e.transformContext,this.streamFn=e.streamFn??p,this.getApiKey=e.getApiKey,this.onPayload=e.onPayload,this.onResponse=e.onResponse,this.beforeToolCall=e.beforeToolCall,this.afterToolCall=e.afterToolCall,this.prepareNextTurn=e.prepareNextTurn,this.steeringQueue=new ve(e.steeringMode??`one-at-a-time`),this.followUpQueue=new ve(e.followUpMode??`one-at-a-time`),this.sessionId=e.sessionId,this.thinkingBudgets=e.thinkingBudgets,this.transport=e.transport??`auto`,this.maxRetryDelayMs=e.maxRetryDelayMs,this.toolExecution=e.toolExecution??`parallel`}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}get state(){return this._state}set steeringMode(e){this.steeringQueue.mode=e}get steeringMode(){return this.steeringQueue.mode}set followUpMode(e){this.followUpQueue.mode=e}get followUpMode(){return this.followUpQueue.mode}steer(e){this.steeringQueue.enqueue(e)}followUp(e){this.followUpQueue.enqueue(e)}clearSteeringQueue(){this.steeringQueue.clear()}clearFollowUpQueue(){this.followUpQueue.clear()}clearAllQueues(){this.clearSteeringQueue(),this.clearFollowUpQueue()}hasQueuedMessages(){return this.steeringQueue.hasItems()||this.followUpQueue.hasItems()}get signal(){return this.activeRun?.abortController.signal}abort(){this.activeRun?.abortController.abort()}waitForIdle(){return this.activeRun?.promise??Promise.resolve()}reset(){this._state.messages=[],this._state.isStreaming=!1,this._state.streamingMessage=void 0,this._state.pendingToolCalls=new Set,this._state.errorMessage=void 0,this.clearFollowUpQueue(),this.clearSteeringQueue()}async prompt(e,t){if(this.activeRun)throw Error(`Agent is already processing a prompt. Use steer() or followUp() to queue messages, or wait for completion.`);let n=this.normalizePromptInput(e,t);await this.runPromptMessages(n)}async continue(){if(this.activeRun)throw Error(`Agent is already processing. Wait for completion before continuing.`);let e=this._state.messages[this._state.messages.length-1];if(!e)throw Error(`No messages to continue from`);if(e.role===`assistant`){let e=this.steeringQueue.drain();if(e.length>0){await this.runPromptMessages(e,{skipInitialSteeringPoll:!0});return}let t=this.followUpQueue.drain();if(t.length>0){await this.runPromptMessages(t);return}throw Error(`Cannot continue from message role: assistant`)}await this.runContinuation()}normalizePromptInput(e,t){if(Array.isArray(e))return e;if(typeof e!=`string`)return[e];let n=[{type:`text`,text:e}];return t&&t.length>0&&n.push(...t),[{role:`user`,content:n,timestamp:Date.now()}]}async runPromptMessages(e,t={}){await this.runWithLifecycle(async n=>{await te(e,this.createContextSnapshot(),this.createLoopConfig(t),e=>this.processEvents(e),n,this.streamFn)})}async runContinuation(){await this.runWithLifecycle(async e=>{await ne(this.createContextSnapshot(),this.createLoopConfig(),e=>this.processEvents(e),e,this.streamFn)})}createContextSnapshot(){return{systemPrompt:this._state.systemPrompt,messages:this._state.messages.slice(),tools:this._state.tools.slice()}}createLoopConfig(e={}){let t=e.skipInitialSteeringPoll===!0;return{model:this._state.model,reasoning:this._state.thinkingLevel===`off`?void 0:this._state.thinkingLevel,sessionId:this.sessionId,onPayload:this.onPayload,onResponse:this.onResponse,transport:this.transport,thinkingBudgets:this.thinkingBudgets,maxRetryDelayMs:this.maxRetryDelayMs,toolExecution:this.toolExecution,beforeToolCall:this.beforeToolCall,afterToolCall:this.afterToolCall,prepareNextTurn:this.prepareNextTurn?async()=>await this.prepareNextTurn?.(this.signal):void 0,convertToLlm:this.convertToLlm,transformContext:this.transformContext,getApiKey:this.getApiKey,getSteeringMessages:async()=>t?(t=!1,[]):this.steeringQueue.drain(),getFollowUpMessages:async()=>this.followUpQueue.drain()}}async runWithLifecycle(e){if(this.activeRun)throw Error(`Agent is already processing.`);let t=new AbortController,n=()=>{},r=new Promise(e=>{n=e});this.activeRun={promise:r,resolve:n,abortController:t},this._state.isStreaming=!0,this._state.streamingMessage=void 0,this._state.errorMessage=void 0;try{await e(t.signal)}catch(e){await this.handleRunFailure(e,t.signal.aborted)}finally{this.finishRun()}}async handleRunFailure(e,t){let n={role:`assistant`,content:[{type:`text`,text:``}],api:this._state.model.api,provider:this._state.model.provider,model:this._state.model.id,usage:he,stopReason:t?`aborted`:`error`,errorMessage:e instanceof Error?e.message:String(e),timestamp:Date.now()};await this.processEvents({type:`message_start`,message:n}),await this.processEvents({type:`message_end`,message:n}),await this.processEvents({type:`turn_end`,message:n,toolResults:[]}),await this.processEvents({type:`agent_end`,messages:[n]})}finishRun(){this._state.isStreaming=!1,this._state.streamingMessage=void 0,this._state.pendingToolCalls=new Set,this.activeRun?.resolve(),this.activeRun=void 0}async processEvents(e){switch(e.type){case`message_start`:this._state.streamingMessage=e.message;break;case`message_update`:this._state.streamingMessage=e.message;break;case`message_end`:this._state.streamingMessage=void 0,this._state.messages.push(e.message);break;case`tool_execution_start`:{let t=new Set(this._state.pendingToolCalls);t.add(e.toolCallId),this._state.pendingToolCalls=t;break}case`tool_execution_end`:{let t=new Set(this._state.pendingToolCalls);t.delete(e.toolCallId),this._state.pendingToolCalls=t;break}case`turn_end`:e.message.role===`assistant`&&e.message.errorMessage&&(this._state.errorMessage=e.message.errorMessage);break;case`agent_end`:this._state.streamingMessage=void 0;break}let t=this.activeRun?.abortController.signal;if(!t)throw Error(`Agent listener invoked outside active run`);for(let n of this.listeners)await n(e,t)}};const be=Symbol.for(`yaml.alias`),xe=Symbol.for(`yaml.document`),E=Symbol.for(`yaml.map`),Se=Symbol.for(`yaml.pair`),Ce=Symbol.for(`yaml.scalar`),we=Symbol.for(`yaml.seq`),D=Symbol.for(`yaml.node.type`),O=e=>!!e&&typeof e==`object`&&e[D]===be,Te=e=>!!e&&typeof e==`object`&&e[D]===xe,Ee=e=>!!e&&typeof e==`object`&&e[D]===E,k=e=>!!e&&typeof e==`object`&&e[D]===Se,A=e=>!!e&&typeof e==`object`&&e[D]===Ce,De=e=>!!e&&typeof e==`object`&&e[D]===we;function j(e){if(e&&typeof e==`object`)switch(e[D]){case E:case we:return!0}return!1}function M(e){if(e&&typeof e==`object`)switch(e[D]){case be:case E:case Ce:case we:return!0}return!1}const Oe=e=>(A(e)||j(e))&&!!e.anchor,N=Symbol(`break visit`),ke=Symbol(`skip children`),P=Symbol(`remove node`);function Ae(e,t){let n=Me(t);Te(e)?F(null,e.contents,n,Object.freeze([e]))===P&&(e.contents=null):F(null,e,n,Object.freeze([]))}Ae.BREAK=N,Ae.SKIP=ke,Ae.REMOVE=P;function F(e,t,n,r){let i=Ne(e,t,n,r);if(M(i)||k(i))return Pe(e,r,i),F(e,i,n,r);if(typeof i!=`symbol`){if(j(t)){r=Object.freeze(r.concat(t));for(let e=0;e<t.items.length;++e){let i=F(e,t.items[e],n,r);if(typeof i==`number`)e=i-1;else if(i===N)return N;else i===P&&(t.items.splice(e,1),--e)}}else if(k(t)){r=Object.freeze(r.concat(t));let e=F(`key`,t.key,n,r);if(e===N)return N;e===P&&(t.key=null);let i=F(`value`,t.value,n,r);if(i===N)return N;i===P&&(t.value=null)}}return i}async function je(e,t){let n=Me(t);Te(e)?await I(null,e.contents,n,Object.freeze([e]))===P&&(e.contents=null):await I(null,e,n,Object.freeze([]))}je.BREAK=N,je.SKIP=ke,je.REMOVE=P;async function I(e,t,n,r){let i=await Ne(e,t,n,r);if(M(i)||k(i))return Pe(e,r,i),I(e,i,n,r);if(typeof i!=`symbol`){if(j(t)){r=Object.freeze(r.concat(t));for(let e=0;e<t.items.length;++e){let i=await I(e,t.items[e],n,r);if(typeof i==`number`)e=i-1;else if(i===N)return N;else i===P&&(t.items.splice(e,1),--e)}}else if(k(t)){r=Object.freeze(r.concat(t));let e=await I(`key`,t.key,n,r);if(e===N)return N;e===P&&(t.key=null);let i=await I(`value`,t.value,n,r);if(i===N)return N;i===P&&(t.value=null)}}return i}function Me(e){return typeof e==`object`&&(e.Collection||e.Node||e.Value)?Object.assign({Alias:e.Node,Map:e.Node,Scalar:e.Node,Seq:e.Node},e.Value&&{Map:e.Value,Scalar:e.Value,Seq:e.Value},e.Collection&&{Map:e.Collection,Seq:e.Collection},e):e}function Ne(e,t,n,r){if(typeof n==`function`)return n(e,t,r);if(Ee(t))return n.Map?.(e,t,r);if(De(t))return n.Seq?.(e,t,r);if(k(t))return n.Pair?.(e,t,r);if(A(t))return n.Scalar?.(e,t,r);if(O(t))return n.Alias?.(e,t,r)}function Pe(e,t,n){let r=t[t.length-1];if(j(r))r.items[e]=n;else if(k(r))e===`key`?r.key=n:r.value=n;else if(Te(r))r.contents=n;else{let e=O(r)?`alias`:`scalar`;throw Error(`Cannot replace node with ${e} parent`)}}const Fe={"!":`%21`,",":`%2C`,"[":`%5B`,"]":`%5D`,"{":`%7B`,"}":`%7D`},Ie=e=>e.replace(/[!,[\]{}]/g,e=>Fe[e]);var Le=class e{constructor(t,n){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},e.defaultYaml,t),this.tags=Object.assign({},e.defaultTags,n)}clone(){let t=new e(this.yaml,this.tags);return t.docStart=this.docStart,t}atDocument(){let t=new e(this.yaml,this.tags);switch(this.yaml.version){case`1.1`:this.atNextDocument=!0;break;case`1.2`:this.atNextDocument=!1,this.yaml={explicit:e.defaultYaml.explicit,version:`1.2`},this.tags=Object.assign({},e.defaultTags);break}return t}add(t,n){this.atNextDocument&&=(this.yaml={explicit:e.defaultYaml.explicit,version:`1.1`},this.tags=Object.assign({},e.defaultTags),!1);let r=t.trim().split(/[ \t]+/),i=r.shift();switch(i){case`%TAG`:{if(r.length!==2&&(n(0,`%TAG directive should contain exactly two parts`),r.length<2))return!1;let[e,t]=r;return this.tags[e]=t,!0}case`%YAML`:{if(this.yaml.explicit=!0,r.length!==1)return n(0,`%YAML directive should contain exactly one part`),!1;let[e]=r;if(e===`1.1`||e===`1.2`)return this.yaml.version=e,!0;{let t=/^\d+\.\d+$/.test(e);return n(6,`Unsupported YAML version ${e}`,t),!1}}default:return n(0,`Unknown directive ${i}`,!0),!1}}tagName(e,t){if(e===`!`)return`!`;if(e[0]!==`!`)return t(`Not a valid tag: ${e}`),null;if(e[1]===`<`){let n=e.slice(2,-1);return n===`!`||n===`!!`?(t(`Verbatim tags aren't resolved, so ${e} is invalid.`),null):(e[e.length-1]!==`>`&&t(`Verbatim tags must end with a >`),n)}let[,n,r]=e.match(/^(.*!)([^!]*)$/s);r||t(`The ${e} tag has no suffix`);let i=this.tags[n];if(i)try{return i+decodeURIComponent(r)}catch(e){return t(String(e)),null}return n===`!`?e:(t(`Could not resolve tag: ${e}`),null)}tagString(e){for(let[t,n]of Object.entries(this.tags))if(e.startsWith(n))return t+Ie(e.substring(n.length));return e[0]===`!`?e:`!<${e}>`}toString(e){let t=this.yaml.explicit?[`%YAML ${this.yaml.version||`1.2`}`]:[],n=Object.entries(this.tags),r;if(e&&n.length>0&&M(e.contents)){let t={};Ae(e.contents,(e,n)=>{M(n)&&n.tag&&(t[n.tag]=!0)}),r=Object.keys(t)}else r=[];for(let[i,a]of n)i===`!!`&&a===`tag:yaml.org,2002:`||(!e||r.some(e=>e.startsWith(a)))&&t.push(`%TAG ${i} ${a}`);return t.join(`
1
+ import{r as e,t}from"./chunk-CMxvf4Kt.js";import{t as n}from"./logger-LESFN7Hj.js";import{n as r,r as i}from"./tool-ui-N76-EdVc.js";import{n as a,r as o}from"./src-CpdsjHiA.js";import{n as s,r as c}from"./panel-rpc-Bcvr75SR.js";import{n as l,o as u,t as d}from"./providers-BmSZZhhm.js";import{c as f,d as p,r as m,t as h,u as g}from"./bedrock-camp-wxdDcDkR.js";import{d as _,l as v,u as y}from"./transform-messages-C1X1O3BY.js";let b={state:`inactive`,joinUrl:null,trayId:null,error:null,lastPingTime:null,reconnectAttempts:0,attachAttempts:0,lastAttachCode:null,connectingSince:null,lastError:null};function x(){return{...b}}const S=new Set;function ee(e){return S.add(e),()=>{S.delete(e)}}async function te(e,t,n,r,i,a){let o=[...e],s={...t,messages:[...t.messages,...e]};await r({type:`agent_start`}),await r({type:`turn_start`});for(let t of e)await r({type:`message_start`,message:t}),await r({type:`message_end`,message:t});return await re(s,o,n,i,r,a),o}async function ne(e,t,n,r,i){if(e.messages.length===0)throw Error(`Cannot continue: no messages in context`);if(e.messages[e.messages.length-1].role===`assistant`)throw Error(`Cannot continue from message role: assistant`);let a=[],o={...e};return await n({type:`agent_start`}),await n({type:`turn_start`}),await re(o,a,t,r,n,i),a}async function re(e,t,n,r,i,a){let o=e,s=n,c=!0,l=await s.getSteeringMessages?.()||[];for(;;){let e=!0;for(;e||l.length>0;){if(c?c=!1:await i({type:`turn_start`}),l.length>0){for(let e of l)await i({type:`message_start`,message:e}),await i({type:`message_end`,message:e}),o.messages.push(e),t.push(e);l=[]}let n=await ie(o,s,r,i,a);if(t.push(n),n.stopReason===`error`||n.stopReason===`aborted`){await i({type:`turn_end`,message:n,toolResults:[]}),await i({type:`agent_end`,messages:t});return}let u=n.content.filter(e=>e.type===`toolCall`),d=[];if(e=!1,u.length>0){let a=await ae(o,n,s,r,i);d.push(...a.messages),e=!a.terminate;for(let e of d)o.messages.push(e),t.push(e)}await i({type:`turn_end`,message:n,toolResults:d});let f={message:n,toolResults:d,context:o,newMessages:t},p=await s.prepareNextTurn?.(f);if(p&&(o=p.context??o,s={...s,model:p.model??s.model,reasoning:p.thinkingLevel===void 0?s.reasoning:p.thinkingLevel===`off`?void 0:p.thinkingLevel}),await s.shouldStopAfterTurn?.({message:n,toolResults:d,context:o,newMessages:t})){await i({type:`agent_end`,messages:t});return}l=await s.getSteeringMessages?.()||[]}let n=await s.getFollowUpMessages?.()||[];if(n.length>0){l=n;continue}break}await i({type:`agent_end`,messages:t})}async function ie(e,t,n,r,i){let a=e.messages;t.transformContext&&(a=await t.transformContext(a,n));let o=await t.convertToLlm(a),s={systemPrompt:e.systemPrompt,messages:o,tools:e.tools},c=i||p,l=(t.getApiKey?await t.getApiKey(t.model.provider):void 0)||t.apiKey,u=await c(t.model,s,{...t,apiKey:l,signal:n}),d=null,f=!1;for await(let t of u)switch(t.type){case`start`:d=t.partial,e.messages.push(d),f=!0,await r({type:`message_start`,message:{...d}});break;case`text_start`:case`text_delta`:case`text_end`:case`thinking_start`:case`thinking_delta`:case`thinking_end`:case`toolcall_start`:case`toolcall_delta`:case`toolcall_end`:d&&(d=t.partial,e.messages[e.messages.length-1]=d,await r({type:`message_update`,assistantMessageEvent:t,message:{...d}}));break;case`done`:case`error`:{let t=await u.result();return f?e.messages[e.messages.length-1]=t:e.messages.push(t),f||await r({type:`message_start`,message:{...t}}),await r({type:`message_end`,message:t}),t}}let m=await u.result();return f?e.messages[e.messages.length-1]=m:(e.messages.push(m),await r({type:`message_start`,message:{...m}})),await r({type:`message_end`,message:m}),m}async function ae(e,t,n,r,i){let a=t.content.filter(e=>e.type===`toolCall`),o=a.some(t=>e.tools?.find(e=>e.name===t.name)?.executionMode===`sequential`);return n.toolExecution===`sequential`||o?oe(e,t,a,n,r,i):C(e,t,a,n,r,i)}async function oe(e,t,n,r,i,a){let o=[],s=[];for(let c of n){await a({type:`tool_execution_start`,toolCallId:c.id,toolName:c.name,args:c.arguments});let n=await w(e,t,c,r,i),l;l=n.kind===`immediate`?{toolCall:c,result:n.result,isError:n.isError}:await ue(e,t,n,await le(n,i,a),r,i),await de(l,a);let u=fe(l);if(await pe(u,a),o.push(l),s.push(u),i?.aborted)break}return{messages:s,terminate:se(o)}}async function C(e,t,n,r,i,a){let o=[];for(let s of n){await a({type:`tool_execution_start`,toolCallId:s.id,toolName:s.name,args:s.arguments});let n=await w(e,t,s,r,i);if(n.kind===`immediate`){let e={toolCall:s,result:n.result,isError:n.isError};if(await de(e,a),o.push(e),i?.aborted)break;continue}if(o.push(async()=>{let o=await ue(e,t,n,await le(n,i,a),r,i);return await de(o,a),o}),i?.aborted)break}let s=await Promise.all(o.map(e=>typeof e==`function`?e():Promise.resolve(e))),c=[];for(let e of s){let t=fe(e);await pe(t,a),c.push(t)}return{messages:c,terminate:se(s)}}function se(e){return e.length>0&&e.every(e=>e.result.terminate===!0)}function ce(e,t){if(!e.prepareArguments)return t;let n=e.prepareArguments(t.arguments);return n===t.arguments?t:{...t,arguments:n}}async function w(e,t,n,r,i){let a=e.tools?.find(e=>e.name===n.name);if(!a)return{kind:`immediate`,result:T(`Tool ${n.name} not found`),isError:!0};try{let o=f(a,ce(a,n));if(r.beforeToolCall){let a=await r.beforeToolCall({assistantMessage:t,toolCall:n,args:o,context:e},i);if(i?.aborted)return{kind:`immediate`,result:T(`Operation aborted`),isError:!0};if(a?.block)return{kind:`immediate`,result:T(a.reason||`Tool execution was blocked`),isError:!0}}return i?.aborted?{kind:`immediate`,result:T(`Operation aborted`),isError:!0}:{kind:`prepared`,toolCall:n,tool:a,args:o}}catch(e){return{kind:`immediate`,result:T(e instanceof Error?e.message:String(e)),isError:!0}}}async function le(e,t,n){let r=[];try{let i=await e.tool.execute(e.toolCall.id,e.args,t,t=>{r.push(Promise.resolve(n({type:`tool_execution_update`,toolCallId:e.toolCall.id,toolName:e.toolCall.name,args:e.toolCall.arguments,partialResult:t})))});return await Promise.all(r),{result:i,isError:!1}}catch(e){return await Promise.all(r),{result:T(e instanceof Error?e.message:String(e)),isError:!0}}}async function ue(e,t,n,r,i,a){let o=r.result,s=r.isError;if(i.afterToolCall)try{let r=await i.afterToolCall({assistantMessage:t,toolCall:n.toolCall,args:n.args,result:o,isError:s,context:e},a);r&&(o={content:r.content??o.content,details:r.details??o.details,terminate:r.terminate??o.terminate},s=r.isError??s)}catch(e){o=T(e instanceof Error?e.message:String(e)),s=!0}return{toolCall:n.toolCall,result:o,isError:s}}function T(e){return{content:[{type:`text`,text:e}],details:{}}}async function de(e,t){await t({type:`tool_execution_end`,toolCallId:e.toolCall.id,toolName:e.toolCall.name,result:e.result,isError:e.isError})}function fe(e){return{role:`toolResult`,toolCallId:e.toolCall.id,toolName:e.toolCall.name,content:e.result.content,details:e.result.details,isError:e.isError,timestamp:Date.now()}}async function pe(e,t){await t({type:`message_start`,message:e}),await t({type:`message_end`,message:e})}function me(e){return e.filter(e=>e.role===`user`||e.role===`assistant`||e.role===`toolResult`)}const he={input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},ge={id:`unknown`,name:`unknown`,api:`unknown`,provider:`unknown`,baseUrl:``,reasoning:!1,input:[],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:0,maxTokens:0};function _e(e){let t=e?.tools?.slice()??[],n=e?.messages?.slice()??[];return{systemPrompt:e?.systemPrompt??``,model:e?.model??ge,thinkingLevel:e?.thinkingLevel??`off`,get tools(){return t},set tools(e){t=e.slice()},get messages(){return n},set messages(e){n=e.slice()},isStreaming:!1,streamingMessage:void 0,pendingToolCalls:new Set,errorMessage:void 0}}var ve=class{messages=[];mode;constructor(e){this.mode=e}enqueue(e){this.messages.push(e)}hasItems(){return this.messages.length>0}drain(){if(this.mode===`all`){let e=this.messages.slice();return this.messages=[],e}let e=this.messages[0];return e?(this.messages=this.messages.slice(1),[e]):[]}clear(){this.messages=[]}},ye=class{_state;listeners=new Set;steeringQueue;followUpQueue;convertToLlm;transformContext;streamFn;getApiKey;onPayload;onResponse;beforeToolCall;afterToolCall;prepareNextTurn;activeRun;sessionId;thinkingBudgets;transport;maxRetryDelayMs;toolExecution;constructor(e={}){this._state=_e(e.initialState),this.convertToLlm=e.convertToLlm??me,this.transformContext=e.transformContext,this.streamFn=e.streamFn??p,this.getApiKey=e.getApiKey,this.onPayload=e.onPayload,this.onResponse=e.onResponse,this.beforeToolCall=e.beforeToolCall,this.afterToolCall=e.afterToolCall,this.prepareNextTurn=e.prepareNextTurn,this.steeringQueue=new ve(e.steeringMode??`one-at-a-time`),this.followUpQueue=new ve(e.followUpMode??`one-at-a-time`),this.sessionId=e.sessionId,this.thinkingBudgets=e.thinkingBudgets,this.transport=e.transport??`auto`,this.maxRetryDelayMs=e.maxRetryDelayMs,this.toolExecution=e.toolExecution??`parallel`}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}get state(){return this._state}set steeringMode(e){this.steeringQueue.mode=e}get steeringMode(){return this.steeringQueue.mode}set followUpMode(e){this.followUpQueue.mode=e}get followUpMode(){return this.followUpQueue.mode}steer(e){this.steeringQueue.enqueue(e)}followUp(e){this.followUpQueue.enqueue(e)}clearSteeringQueue(){this.steeringQueue.clear()}clearFollowUpQueue(){this.followUpQueue.clear()}clearAllQueues(){this.clearSteeringQueue(),this.clearFollowUpQueue()}hasQueuedMessages(){return this.steeringQueue.hasItems()||this.followUpQueue.hasItems()}get signal(){return this.activeRun?.abortController.signal}abort(){this.activeRun?.abortController.abort()}waitForIdle(){return this.activeRun?.promise??Promise.resolve()}reset(){this._state.messages=[],this._state.isStreaming=!1,this._state.streamingMessage=void 0,this._state.pendingToolCalls=new Set,this._state.errorMessage=void 0,this.clearFollowUpQueue(),this.clearSteeringQueue()}async prompt(e,t){if(this.activeRun)throw Error(`Agent is already processing a prompt. Use steer() or followUp() to queue messages, or wait for completion.`);let n=this.normalizePromptInput(e,t);await this.runPromptMessages(n)}async continue(){if(this.activeRun)throw Error(`Agent is already processing. Wait for completion before continuing.`);let e=this._state.messages[this._state.messages.length-1];if(!e)throw Error(`No messages to continue from`);if(e.role===`assistant`){let e=this.steeringQueue.drain();if(e.length>0){await this.runPromptMessages(e,{skipInitialSteeringPoll:!0});return}let t=this.followUpQueue.drain();if(t.length>0){await this.runPromptMessages(t);return}throw Error(`Cannot continue from message role: assistant`)}await this.runContinuation()}normalizePromptInput(e,t){if(Array.isArray(e))return e;if(typeof e!=`string`)return[e];let n=[{type:`text`,text:e}];return t&&t.length>0&&n.push(...t),[{role:`user`,content:n,timestamp:Date.now()}]}async runPromptMessages(e,t={}){await this.runWithLifecycle(async n=>{await te(e,this.createContextSnapshot(),this.createLoopConfig(t),e=>this.processEvents(e),n,this.streamFn)})}async runContinuation(){await this.runWithLifecycle(async e=>{await ne(this.createContextSnapshot(),this.createLoopConfig(),e=>this.processEvents(e),e,this.streamFn)})}createContextSnapshot(){return{systemPrompt:this._state.systemPrompt,messages:this._state.messages.slice(),tools:this._state.tools.slice()}}createLoopConfig(e={}){let t=e.skipInitialSteeringPoll===!0;return{model:this._state.model,reasoning:this._state.thinkingLevel===`off`?void 0:this._state.thinkingLevel,sessionId:this.sessionId,onPayload:this.onPayload,onResponse:this.onResponse,transport:this.transport,thinkingBudgets:this.thinkingBudgets,maxRetryDelayMs:this.maxRetryDelayMs,toolExecution:this.toolExecution,beforeToolCall:this.beforeToolCall,afterToolCall:this.afterToolCall,prepareNextTurn:this.prepareNextTurn?async()=>await this.prepareNextTurn?.(this.signal):void 0,convertToLlm:this.convertToLlm,transformContext:this.transformContext,getApiKey:this.getApiKey,getSteeringMessages:async()=>t?(t=!1,[]):this.steeringQueue.drain(),getFollowUpMessages:async()=>this.followUpQueue.drain()}}async runWithLifecycle(e){if(this.activeRun)throw Error(`Agent is already processing.`);let t=new AbortController,n=()=>{},r=new Promise(e=>{n=e});this.activeRun={promise:r,resolve:n,abortController:t},this._state.isStreaming=!0,this._state.streamingMessage=void 0,this._state.errorMessage=void 0;try{await e(t.signal)}catch(e){await this.handleRunFailure(e,t.signal.aborted)}finally{this.finishRun()}}async handleRunFailure(e,t){let n={role:`assistant`,content:[{type:`text`,text:``}],api:this._state.model.api,provider:this._state.model.provider,model:this._state.model.id,usage:he,stopReason:t?`aborted`:`error`,errorMessage:e instanceof Error?e.message:String(e),timestamp:Date.now()};await this.processEvents({type:`message_start`,message:n}),await this.processEvents({type:`message_end`,message:n}),await this.processEvents({type:`turn_end`,message:n,toolResults:[]}),await this.processEvents({type:`agent_end`,messages:[n]})}finishRun(){this._state.isStreaming=!1,this._state.streamingMessage=void 0,this._state.pendingToolCalls=new Set,this.activeRun?.resolve(),this.activeRun=void 0}async processEvents(e){switch(e.type){case`message_start`:this._state.streamingMessage=e.message;break;case`message_update`:this._state.streamingMessage=e.message;break;case`message_end`:this._state.streamingMessage=void 0,this._state.messages.push(e.message);break;case`tool_execution_start`:{let t=new Set(this._state.pendingToolCalls);t.add(e.toolCallId),this._state.pendingToolCalls=t;break}case`tool_execution_end`:{let t=new Set(this._state.pendingToolCalls);t.delete(e.toolCallId),this._state.pendingToolCalls=t;break}case`turn_end`:e.message.role===`assistant`&&e.message.errorMessage&&(this._state.errorMessage=e.message.errorMessage);break;case`agent_end`:this._state.streamingMessage=void 0;break}let t=this.activeRun?.abortController.signal;if(!t)throw Error(`Agent listener invoked outside active run`);for(let n of this.listeners)await n(e,t)}};const be=Symbol.for(`yaml.alias`),xe=Symbol.for(`yaml.document`),E=Symbol.for(`yaml.map`),Se=Symbol.for(`yaml.pair`),Ce=Symbol.for(`yaml.scalar`),we=Symbol.for(`yaml.seq`),D=Symbol.for(`yaml.node.type`),O=e=>!!e&&typeof e==`object`&&e[D]===be,Te=e=>!!e&&typeof e==`object`&&e[D]===xe,Ee=e=>!!e&&typeof e==`object`&&e[D]===E,k=e=>!!e&&typeof e==`object`&&e[D]===Se,A=e=>!!e&&typeof e==`object`&&e[D]===Ce,De=e=>!!e&&typeof e==`object`&&e[D]===we;function j(e){if(e&&typeof e==`object`)switch(e[D]){case E:case we:return!0}return!1}function M(e){if(e&&typeof e==`object`)switch(e[D]){case be:case E:case Ce:case we:return!0}return!1}const Oe=e=>(A(e)||j(e))&&!!e.anchor,N=Symbol(`break visit`),ke=Symbol(`skip children`),P=Symbol(`remove node`);function Ae(e,t){let n=Me(t);Te(e)?F(null,e.contents,n,Object.freeze([e]))===P&&(e.contents=null):F(null,e,n,Object.freeze([]))}Ae.BREAK=N,Ae.SKIP=ke,Ae.REMOVE=P;function F(e,t,n,r){let i=Ne(e,t,n,r);if(M(i)||k(i))return Pe(e,r,i),F(e,i,n,r);if(typeof i!=`symbol`){if(j(t)){r=Object.freeze(r.concat(t));for(let e=0;e<t.items.length;++e){let i=F(e,t.items[e],n,r);if(typeof i==`number`)e=i-1;else if(i===N)return N;else i===P&&(t.items.splice(e,1),--e)}}else if(k(t)){r=Object.freeze(r.concat(t));let e=F(`key`,t.key,n,r);if(e===N)return N;e===P&&(t.key=null);let i=F(`value`,t.value,n,r);if(i===N)return N;i===P&&(t.value=null)}}return i}async function je(e,t){let n=Me(t);Te(e)?await I(null,e.contents,n,Object.freeze([e]))===P&&(e.contents=null):await I(null,e,n,Object.freeze([]))}je.BREAK=N,je.SKIP=ke,je.REMOVE=P;async function I(e,t,n,r){let i=await Ne(e,t,n,r);if(M(i)||k(i))return Pe(e,r,i),I(e,i,n,r);if(typeof i!=`symbol`){if(j(t)){r=Object.freeze(r.concat(t));for(let e=0;e<t.items.length;++e){let i=await I(e,t.items[e],n,r);if(typeof i==`number`)e=i-1;else if(i===N)return N;else i===P&&(t.items.splice(e,1),--e)}}else if(k(t)){r=Object.freeze(r.concat(t));let e=await I(`key`,t.key,n,r);if(e===N)return N;e===P&&(t.key=null);let i=await I(`value`,t.value,n,r);if(i===N)return N;i===P&&(t.value=null)}}return i}function Me(e){return typeof e==`object`&&(e.Collection||e.Node||e.Value)?Object.assign({Alias:e.Node,Map:e.Node,Scalar:e.Node,Seq:e.Node},e.Value&&{Map:e.Value,Scalar:e.Value,Seq:e.Value},e.Collection&&{Map:e.Collection,Seq:e.Collection},e):e}function Ne(e,t,n,r){if(typeof n==`function`)return n(e,t,r);if(Ee(t))return n.Map?.(e,t,r);if(De(t))return n.Seq?.(e,t,r);if(k(t))return n.Pair?.(e,t,r);if(A(t))return n.Scalar?.(e,t,r);if(O(t))return n.Alias?.(e,t,r)}function Pe(e,t,n){let r=t[t.length-1];if(j(r))r.items[e]=n;else if(k(r))e===`key`?r.key=n:r.value=n;else if(Te(r))r.contents=n;else{let e=O(r)?`alias`:`scalar`;throw Error(`Cannot replace node with ${e} parent`)}}const Fe={"!":`%21`,",":`%2C`,"[":`%5B`,"]":`%5D`,"{":`%7B`,"}":`%7D`},Ie=e=>e.replace(/[!,[\]{}]/g,e=>Fe[e]);var Le=class e{constructor(t,n){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},e.defaultYaml,t),this.tags=Object.assign({},e.defaultTags,n)}clone(){let t=new e(this.yaml,this.tags);return t.docStart=this.docStart,t}atDocument(){let t=new e(this.yaml,this.tags);switch(this.yaml.version){case`1.1`:this.atNextDocument=!0;break;case`1.2`:this.atNextDocument=!1,this.yaml={explicit:e.defaultYaml.explicit,version:`1.2`},this.tags=Object.assign({},e.defaultTags);break}return t}add(t,n){this.atNextDocument&&=(this.yaml={explicit:e.defaultYaml.explicit,version:`1.1`},this.tags=Object.assign({},e.defaultTags),!1);let r=t.trim().split(/[ \t]+/),i=r.shift();switch(i){case`%TAG`:{if(r.length!==2&&(n(0,`%TAG directive should contain exactly two parts`),r.length<2))return!1;let[e,t]=r;return this.tags[e]=t,!0}case`%YAML`:{if(this.yaml.explicit=!0,r.length!==1)return n(0,`%YAML directive should contain exactly one part`),!1;let[e]=r;if(e===`1.1`||e===`1.2`)return this.yaml.version=e,!0;{let t=/^\d+\.\d+$/.test(e);return n(6,`Unsupported YAML version ${e}`,t),!1}}default:return n(0,`Unknown directive ${i}`,!0),!1}}tagName(e,t){if(e===`!`)return`!`;if(e[0]!==`!`)return t(`Not a valid tag: ${e}`),null;if(e[1]===`<`){let n=e.slice(2,-1);return n===`!`||n===`!!`?(t(`Verbatim tags aren't resolved, so ${e} is invalid.`),null):(e[e.length-1]!==`>`&&t(`Verbatim tags must end with a >`),n)}let[,n,r]=e.match(/^(.*!)([^!]*)$/s);r||t(`The ${e} tag has no suffix`);let i=this.tags[n];if(i)try{return i+decodeURIComponent(r)}catch(e){return t(String(e)),null}return n===`!`?e:(t(`Could not resolve tag: ${e}`),null)}tagString(e){for(let[t,n]of Object.entries(this.tags))if(e.startsWith(n))return t+Ie(e.substring(n.length));return e[0]===`!`?e:`!<${e}>`}toString(e){let t=this.yaml.explicit?[`%YAML ${this.yaml.version||`1.2`}`]:[],n=Object.entries(this.tags),r;if(e&&n.length>0&&M(e.contents)){let t={};Ae(e.contents,(e,n)=>{M(n)&&n.tag&&(t[n.tag]=!0)}),r=Object.keys(t)}else r=[];for(let[i,a]of n)i===`!!`&&a===`tag:yaml.org,2002:`||(!e||r.some(e=>e.startsWith(a)))&&t.push(`%TAG ${i} ${a}`);return t.join(`
2
2
  `)}};Le.defaultYaml={explicit:!1,version:`1.2`},Le.defaultTags={"!!":`tag:yaml.org,2002:`};function Re(e){if(/[\x00-\x19\s,[\]{}]/.test(e)){let t=`Anchor must not contain whitespace or control characters: ${JSON.stringify(e)}`;throw Error(t)}return!0}function ze(e,t,n,r){if(r&&typeof r==`object`)if(Array.isArray(r))for(let t=0,n=r.length;t<n;++t){let n=r[t],i=ze(e,r,String(t),n);i===void 0?delete r[t]:i!==n&&(r[t]=i)}else if(r instanceof Map)for(let t of Array.from(r.keys())){let n=r.get(t),i=ze(e,r,t,n);i===void 0?r.delete(t):i!==n&&r.set(t,i)}else if(r instanceof Set)for(let t of Array.from(r)){let n=ze(e,r,t,t);n===void 0?r.delete(t):n!==t&&(r.delete(t),r.add(n))}else for(let[t,n]of Object.entries(r)){let i=ze(e,r,t,n);i===void 0?delete r[t]:i!==n&&(r[t]=i)}return e.call(t,n,r)}function L(e,t,n){if(Array.isArray(e))return e.map((e,t)=>L(e,String(t),n));if(e&&typeof e.toJSON==`function`){if(!n||!Oe(e))return e.toJSON(t,n);let r={aliasCount:0,count:1,res:void 0};n.anchors.set(e,r),n.onCreate=e=>{r.res=e,delete n.onCreate};let i=e.toJSON(t,n);return n.onCreate&&n.onCreate(i),i}return typeof e==`bigint`&&!n?.keep?Number(e):e}var Be=class{constructor(e){Object.defineProperty(this,D,{value:e})}clone(){let e=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return this.range&&(e.range=this.range.slice()),e}toJS(e,{mapAsMap:t,maxAliasCount:n,onAnchor:r,reviver:i}={}){if(!Te(e))throw TypeError(`A document argument is required`);let a={anchors:new Map,doc:e,keep:!0,mapAsMap:t===!0,mapKeyWarned:!1,maxAliasCount:typeof n==`number`?n:100},o=L(this,``,a);if(typeof r==`function`)for(let{count:e,res:t}of a.anchors.values())r(t,e);return typeof i==`function`?ze(i,{"":o},``,o):o}},Ve=class extends Be{constructor(e){super(be),this.source=e,Object.defineProperty(this,"tag",{set(){throw Error(`Alias nodes cannot have tags`)}})}resolve(e,t){if(t?.maxAliasCount===0)throw ReferenceError(`Alias resolution is disabled`);let n;t?.aliasResolveCache?n=t.aliasResolveCache:(n=[],Ae(e,{Node:(e,t)=>{(O(t)||Oe(t))&&n.push(t)}}),t&&(t.aliasResolveCache=n));let r;for(let e of n){if(e===this)break;e.anchor===this.source&&(r=e)}return r}toJSON(e,t){if(!t)return{source:this.source};let{anchors:n,doc:r,maxAliasCount:i}=t,a=this.resolve(r,t);if(!a){let e=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw ReferenceError(e)}let o=n.get(a);if(o||=(L(a,null,t),n.get(a)),o?.res===void 0)throw ReferenceError(`This should not happen: Alias anchor was not resolved?`);if(i>=0&&(o.count+=1,o.aliasCount===0&&(o.aliasCount=He(r,a,n)),o.count*o.aliasCount>i))throw ReferenceError(`Excessive alias count indicates a resource exhaustion attack`);return o.res}toString(e,t,n){let r=`*${this.source}`;if(e){if(Re(this.source),e.options.verifyAliasOrder&&!e.anchors.has(this.source)){let e=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw Error(e)}if(e.implicitKey)return`${r} `}return r}};function He(e,t,n){if(O(t)){let r=t.resolve(e),i=n&&r&&n.get(r);return i?i.count*i.aliasCount:0}else if(j(t)){let r=0;for(let i of t.items){let t=He(e,i,n);t>r&&(r=t)}return r}else if(k(t)){let r=He(e,t.key,n),i=He(e,t.value,n);return Math.max(r,i)}return 1}const Ue=e=>!e||typeof e!=`function`&&typeof e!=`object`;var R=class extends Be{constructor(e){super(Ce),this.value=e}toJSON(e,t){return t?.keep?this.value:L(this.value,e,t)}toString(){return String(this.value)}};R.BLOCK_FOLDED=`BLOCK_FOLDED`,R.BLOCK_LITERAL=`BLOCK_LITERAL`,R.PLAIN=`PLAIN`,R.QUOTE_DOUBLE=`QUOTE_DOUBLE`,R.QUOTE_SINGLE=`QUOTE_SINGLE`;function We(e,t,n){if(t){let e=n.filter(e=>e.tag===t),r=e.find(e=>!e.format)??e[0];if(!r)throw Error(`Tag ${t} not found`);return r}return n.find(t=>t.identify?.(e)&&!t.format)}function Ge(e,t,n){if(Te(e)&&(e=e.contents),M(e))return e;if(k(e)){let t=n.schema[E].createNode?.(n.schema,null,n);return t.items.push(e),t}(e instanceof String||e instanceof Number||e instanceof Boolean||typeof BigInt<`u`&&e instanceof BigInt)&&(e=e.valueOf());let{aliasDuplicateObjects:r,onAnchor:i,onTagObj:a,schema:o,sourceObjects:s}=n,c;if(r&&e&&typeof e==`object`){if(c=s.get(e),c)return c.anchor??=i(e),new Ve(c.anchor);c={anchor:null,node:null},s.set(e,c)}t?.startsWith(`!!`)&&(t=`tag:yaml.org,2002:`+t.slice(2));let l=We(e,t,o.tags);if(!l){if(e&&typeof e.toJSON==`function`&&(e=e.toJSON()),!e||typeof e!=`object`){let t=new R(e);return c&&(c.node=t),t}l=e instanceof Map?o[E]:Symbol.iterator in Object(e)?o[we]:o[E]}a&&(a(l),delete n.onTagObj);let u=l?.createNode?l.createNode(n.schema,e,n):typeof l?.nodeClass?.from==`function`?l.nodeClass.from(n.schema,e,n):new R(e);return t?u.tag=t:l.default||(u.tag=l.tag),c&&(c.node=u),u}function Ke(e,t,n){let r=n;for(let e=t.length-1;e>=0;--e){let n=t[e];if(typeof n==`number`&&Number.isInteger(n)&&n>=0){let e=[];e[n]=r,r=e}else r=new Map([[n,r]])}return Ge(r,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw Error(`This should not happen, please report a bug.`)},schema:e,sourceObjects:new Map})}const qe=e=>e==null||typeof e==`object`&&!!e[Symbol.iterator]().next().done;var Je=class extends Be{constructor(e,t){super(e),Object.defineProperty(this,"schema",{value:t,configurable:!0,enumerable:!1,writable:!0})}clone(e){let t=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return e&&(t.schema=e),t.items=t.items.map(t=>M(t)||k(t)?t.clone(e):t),this.range&&(t.range=this.range.slice()),t}addIn(e,t){if(qe(e))this.add(t);else{let[n,...r]=e,i=this.get(n,!0);if(j(i))i.addIn(r,t);else if(i===void 0&&this.schema)this.set(n,Ke(this.schema,r,t));else throw Error(`Expected YAML collection at ${n}. Remaining path: ${r}`)}}deleteIn(e){let[t,...n]=e;if(n.length===0)return this.delete(t);let r=this.get(t,!0);if(j(r))return r.deleteIn(n);throw Error(`Expected YAML collection at ${t}. Remaining path: ${n}`)}getIn(e,t){let[n,...r]=e,i=this.get(n,!0);return r.length===0?!t&&A(i)?i.value:i:j(i)?i.getIn(r,t):void 0}hasAllNullValues(e){return this.items.every(t=>{if(!k(t))return!1;let n=t.value;return n==null||e&&A(n)&&n.value==null&&!n.commentBefore&&!n.comment&&!n.tag})}hasIn(e){let[t,...n]=e;if(n.length===0)return this.has(t);let r=this.get(t,!0);return j(r)?r.hasIn(n):!1}setIn(e,t){let[n,...r]=e;if(r.length===0)this.set(n,t);else{let e=this.get(n,!0);if(j(e))e.setIn(r,t);else if(e===void 0&&this.schema)this.set(n,Ke(this.schema,r,t));else throw Error(`Expected YAML collection at ${n}. Remaining path: ${r}`)}}};const Ye=e=>e.replace(/^(?!$)(?: $)?/gm,`#`);function Xe(e,t){return/^\n+$/.test(e)?e.substring(1):t?e.replace(/^(?! *$)/gm,t):e}const z=(e,t,n)=>e.endsWith(`
3
3
  `)?Xe(n,t):n.includes(`
4
4
  `)?`
@@ -96,4 +96,4 @@ DO NOT include:
96
96
  If nothing in the conversation is worth persisting, return exactly the single line:
97
97
  NONE
98
98
 
99
- Otherwise, output ONLY a markdown bullet list (one bullet per memory), no headers, no preamble, no follow-up. Each bullet is one line. Be specific. Prefer one fact per bullet over multi-clause sentences.`,2048,e.headers,s);if(n?.trim()&&n.trim()!==`NONE`)try{await e.onMemoryUpdates(n.trim()),G.info(`Memory extraction applied`,{bulletsLength:n.length})}catch(e){G.warn(`onMemoryUpdates callback threw`,{error:e instanceof Error?e.message:String(e)})}else G.info(`Memory extraction returned no durable memories`)}catch(e){G.warn(`Memory extraction call failed (compaction still applied)`,{error:e instanceof Error?e.message:String(e)})}return h(`idle`),[a,...m]}catch(e){G.warn(`LLM summarization failed, falling back to naive drop`,{error:e instanceof Error?e.message:String(e)})}else u||G.warn(`No API key available for LLM summarization, falling back to naive drop`);h(`idle`);let _={role:`user`,content:[{type:`text`,text:`[Earlier conversation messages were compacted to save context space]`}],timestamp:Date.now()};return G.info(`Naive compaction applied`,{originalMessages:o.length,compactedMessages:1+m.length}),[_,...m]}}const sn=n(`secret-scrub`);function cn(){return typeof chrome<`u`&&chrome?.runtime?.id?async e=>{if(!e)return e;try{let t=await new Promise(t=>{chrome.runtime.sendMessage({type:`secrets.scrub-tool-result`,text:e},e=>t(e??{}))});return t.error?(sn.debug(`SW scrub-tool-result returned error`,{error:t.error}),e):typeof t.text==`string`?t.text:e}catch(t){return sn.debug(`SW scrub-tool-result failed`,{error:t instanceof Error?t.message:String(t)}),e}}:async e=>{if(!e)return e;try{let t=await fetch(`/api/secrets/scrub`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({text:e})});if(!t.ok)return sn.debug(`Server scrub-tool-result returned non-ok`,{status:t.status}),e;let n=await t.json();return typeof n.text==`string`?n.text:e}catch(t){return sn.debug(`Server scrub-tool-result failed`,{error:t instanceof Error?t.message:String(t)}),e}}}const K=`sessions`;function ln(){return new Promise((e,t)=>{let n=indexedDB.open(`agent-sessions`,1);n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(K)||e.createObjectStore(K,{keyPath:`id`})},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)})}var un=class{dbPromise=null;getDB(){return this.dbPromise||=ln(),this.dbPromise}async save(e){let t=await this.getDB();return new Promise((n,r)=>{let i=t.transaction(K,`readwrite`).objectStore(K).put(e);i.onsuccess=()=>n(),i.onerror=()=>r(i.error)})}async load(e){let t=await this.getDB();return new Promise((n,r)=>{let i=t.transaction(K,`readonly`).objectStore(K).get(e);i.onsuccess=()=>n(i.result??null),i.onerror=()=>r(i.error)})}async delete(e){let t=await this.getDB();return new Promise((n,r)=>{let i=t.transaction(K,`readwrite`).objectStore(K).delete(e);i.onsuccess=()=>n(),i.onerror=()=>r(i.error)})}async list(){let e=await this.getDB();return new Promise((t,n)=>{let r=e.transaction(K,`readonly`).objectStore(K).getAll();r.onsuccess=()=>{t((r.result??[]).map(e=>({id:e.id,updatedAt:e.updatedAt})))},r.onerror=()=>n(r.error)})}async clearAll(){let e=await this.getDB();return new Promise((t,n)=>{let r=e.transaction(K,`readwrite`).objectStore(K).clear();r.onsuccess=()=>t(),r.onerror=()=>n(r.error)})}static newId(){return`session-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}static createSession(e,t){let n=Date.now();return{id:e,messages:[],config:t,createdAt:n,updatedAt:n}}static updateMessages(e,t){return{...e,messages:t,updatedAt:Date.now()}}};const q=n(`image-processor`),dn=3932160,fn=new Set([`image/jpeg`,`image/png`,`image/gif`,`image/webp`]);function pn(e){return fn.has(e)}function mn(e,t){try{if(t===`image/png`){if(e.length<32)return null;let t=atob(e.slice(0,32)),n=t.charCodeAt(16)<<24|t.charCodeAt(17)<<16|t.charCodeAt(18)<<8|t.charCodeAt(19),r=t.charCodeAt(20)<<24|t.charCodeAt(21)<<16|t.charCodeAt(22)<<8|t.charCodeAt(23);return n>0&&r>0?{width:n,height:r}:null}if(t===`image/gif`){if(e.length<16)return null;let t=atob(e.slice(0,16)),n=t.charCodeAt(6)|t.charCodeAt(7)<<8,r=t.charCodeAt(8)|t.charCodeAt(9)<<8;return n>0&&r>0?{width:n,height:r}:null}if(t===`image/jpeg`){let t=Math.min(21846*4,e.length),n=atob(e.slice(0,t));for(let e=0;e<n.length-8;e++)if(n.charCodeAt(e)===255){let t=n.charCodeAt(e+1);if(t===192||t===194){let t=n.charCodeAt(e+5)<<8|n.charCodeAt(e+6),r=n.charCodeAt(e+7)<<8|n.charCodeAt(e+8);return r>0&&t>0?{width:r,height:t}:null}}}}catch{}return null}async function hn(e){if(!pn(e.mimeType))return q.warn(`Unsupported image format`,{mimeType:e.mimeType}),{type:`text`,text:`[Image removed: unsupported format "${e.mimeType}". Supported: JPEG, PNG, GIF, WebP]`};let t=e.data.length,n=mn(e.data,e.mimeType);if(!(t>5242880||n!==null&&(n.width>8e3||n.height>8e3)||n!==null&&Math.max(n.width,n.height)>1568))return e;q.info(`Image needs processing`,{base64Size:t,dimensions:n?`${n.width}x${n.height}`:`unknown`,reason:t>5242880?`size`:`dimensions`});let r,i;try{let e=await import(`./kernel-worker-OJsR9uqi.js`).then(e=>e.a);r=e.getMagick,i=e.MIME_TO_MAGICK_FORMAT}catch(e){return q.error(`ImageMagick WASM module unavailable`,{error:e instanceof Error?e.message:String(e)}),{type:`text`,text:`[Image removed: resize service unavailable (ImageMagick WASM could not be loaded)]`}}let a;try{a=await r()}catch(e){return q.error(`ImageMagick WASM initialization failed`,{error:e instanceof Error?e.message:String(e)}),{type:`text`,text:`[Image removed: resize service unavailable (WASM init failed)]`}}try{let n=atob(e.data),r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e);let o={data:null,mime:e.mimeType};if(await a.ImageMagick.read(r,async t=>{let n=t.width,r=t.height,a=Math.max(n,r);if(a>1568){let e=1568/a,i=Math.round(n*e),o=Math.round(r*e);t.resize(i,o),q.info(`Resized image`,{from:`${n}x${r}`,to:`${i}x${o}`})}let s=i[e.mimeType]||`JPEG`;t.write(s,e=>{o.data=new Uint8Array(e)}),o.data&&o.data.length>dn&&s!==`JPEG`?(q.info(`Still over 5MB, compressing to JPEG q80`),t.quality=80,t.write(`JPEG`,e=>{o.data=new Uint8Array(e)}),o.mime=`image/jpeg`):o.data&&o.data.length>dn&&(q.info(`Still over 5MB as JPEG, reducing quality to 60`),t.quality=60,t.write(`JPEG`,e=>{o.data=new Uint8Array(e)}))}),!o.data)return q.warn(`ImageMagick produced no output`),{type:`text`,text:`[Image removed: could not be processed (empty output from resize)]`};if(o.data.length>dn)return q.warn(`Image still over 5MB after resize+compress`,{size:o.data.length}),{type:`text`,text:`[Image removed: still ${Math.round(o.data.length/1024/1024*10)/10}MB after resize and compression, exceeds 5MB API limit]`};let s=``;for(let e=0;e<o.data.length;e++)s+=String.fromCharCode(o.data[e]);let c=btoa(s);return q.info(`Image processed successfully`,{originalBase64:t,newBase64:c.length,mimeType:o.mime}),{type:`image`,data:c,mimeType:o.mime}}catch(n){return q.error(`Image data processing failed (corrupt or unreadable)`,{mimeType:e.mimeType,estimatedBytes:t,error:n instanceof Error?n.message:String(n)}),{type:`text`,text:`[Image removed: image data could not be processed (${n instanceof Error?n.message:`corrupt or unreadable`})]`}}}const gn=n(`tool-adapter`),_n=/<img:(data:(image\/[^;]+);base64,([^>]+))>/g;function vn(e){let t=[],n=0;for(let r of e.matchAll(_n)){let i=e.slice(n,r.index);i.trim()&&t.push({type:`text`,text:i.trimEnd()}),t.push({type:`image`,mimeType:r[2],data:r[3]}),n=r.index+r[0].length}let r=e.slice(n);return(r.trim()||t.length===0)&&t.push({type:`text`,text:r||e}),t}async function yn(e){let t=vn(e),n=[];for(let e of t)e.type===`image`?n.push(await hn(e)):n.push(e);return n}function bn(e,t,n){return{name:e.name,label:e.name,description:e.description,parameters:e.inputSchema,async execute(a,o,s,c){let l;c&&(l=i({onUpdate:c,toolName:e.name,toolCallId:a}));let u=t?t.processManager.spawn({kind:`tool`,argv:[e.name,...Sn(o)],owner:t.owner,ppid:t.getParentPid?.()}):null,d=null;u&&t&&s&&(s.aborted?t.processManager.signal(u.pid,`SIGINT`):s.addEventListener(`abort`,()=>t.processManager.signal(u.pid,`SIGINT`),{once:!0})),u&&t&&(d=t.processManager.onSignal((e,n)=>{e.pid!==u.pid||n!==`SIGKILL`||t.processManager.exit(u.pid,null)}));let f=u?u.abort.signal:s;try{let r=await e.execute(o??{},f),i=r.content;if(n&&typeof i==`string`&&i.length>0)try{i=await n.scrubToolResult(i)}catch(t){gn.warn(`Tool-result scrub failed, falling back to unscrubbed content`,{tool:e.name,error:t instanceof Error?t.message:String(t)}),i=r.content}let a;try{a=await yn(i)}catch(t){gn.warn(`Image processing failed, falling back to raw content`,{tool:e.name,error:t instanceof Error?t.message:String(t)}),a=vn(i)}return u&&t&&t.processManager.exit(u.pid,+!!r.isError),{content:a,details:{isError:r.isError}}}catch(e){throw u&&t&&t.processManager.exit(u.pid,u.abort.signal.aborted?null:1),e}finally{l&&r(l),d?.()}}}}function xn(e,t,n){return e.map(e=>bn(e,t,n))}function Sn(e){if(typeof e!=`object`||!e)return[];let t=e;for(let e of[`command`,`file_path`,`path`,`pattern`,`url`,`key`,`name`,`query`,`message`]){let n=t[e];if(typeof n==`string`&&n.length>0)return[n]}for(let e of Object.values(t))if(typeof e==`string`&&e.length>0)return[e];return[]}var Cn=e({addAccount:()=>Hn,getAccounts:()=>Q,getAllExtraOAuthDomains:()=>zn,getApiKey:()=>nr,getApiKeyForProvider:()=>Xn,getApiVersionForProvider:()=>$n,getAvailableProviders:()=>Mn,getBaseUrlForProvider:()=>Zn,getDeploymentForProvider:()=>Qn,getExtraOAuthDomains:()=>In,getOAuthAccountInfo:()=>Fn,getProviderConfig:()=>X,getProviderModels:()=>Pn,getRawApiKeyForProvider:()=>Yn,getSelectedModelId:()=>er,getSelectedProvider:()=>$,logoutOAuthAccount:()=>Gn,maskOAuthTokenWithRetry:()=>Kn,migrateLegacyAuthOnlySelection:()=>jn,persistOAuthMaskViaServiceWorker:()=>qn,removeAccount:()=>Wn,resolveCurrentModel:()=>or,resolveModelById:()=>ar,saveOAuthAccount:()=>Jn,setExtraOAuthDomains:()=>Ln,setExtraOAuthDomainsAsync:()=>Rn});const wn=v,Tn=y,J=`slicc_accounts`,Y=`selected-model`,En=[`slicc_provider`,`slicc_api_key`,`slicc_base_url`,`anthropic_api_key`,`api_provider`,`azure_resource`,`bedrock_region`],Dn=new Set([`github`]);function On(e){let t;try{t=_()}catch{return!1}return t.includes(e)&&!u(e)}let kn=!1;function An(){if(!kn){kn=!0;for(let e of En)try{localStorage.removeItem(e)}catch{}jn()}}function jn(){try{let e=localStorage.getItem(Y);if(e){let t=e.indexOf(`:`);if(t>0){let n=e.slice(0,t);(Dn.has(n)||On(n))&&localStorage.removeItem(Y)}}}catch{}try{let e=localStorage.getItem(J);if(!e)return;let t=JSON.parse(e);if(!Array.isArray(t))return;let n=t.filter(e=>!(typeof e==`object`&&e&&typeof e.providerId==`string`&&On(e.providerId)));n.length!==t.length&&localStorage.setItem(J,JSON.stringify(n))}catch{}}function Mn(){let e=_().filter(u),t=l();return[...new Set([...e,...t])].filter(e=>!d(e)?.hidden)}function X(e){return d(e)||{id:e,name:e.split(`-`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `),description:`${e} provider`,requiresApiKey:!0,requiresBaseUrl:!1}}function Nn(e,t){t.context_window!==void 0&&(e.contextWindow=t.context_window),t.max_tokens!==void 0&&(e.maxTokens=t.max_tokens),t.reasoning!==void 0&&(e.reasoning=t.reasoning),t.input!==void 0&&(e.input=t.input),t.compat!==void 0&&(e.compat={...e.compat??{},...t.compat}),t.thinkingLevelMap!==void 0&&(e.thinkingLevelMap={...e.thinkingLevelMap??{},...t.thinkingLevelMap})}function Pn(e){try{if(e===`bedrock-camp`){let e=h(Zn(`bedrock-camp`));return Tn(`amazon-bedrock`).filter(t=>m(t,e)).map(e=>({...e,api:`bedrock-camp-converse`,provider:`bedrock-camp`}))}let t=X(e);if(t.getModelIds){let n;try{n=t.getModelIds()}catch(t){return Z.error(`Provider getModelIds callback failed`,{providerId:e,error:t instanceof Error?t.message:String(t)}),[]}let r=new Map;for(let e of _())try{for(let t of Tn(e))r.set(t.id,t)}catch{}return n.map(n=>{let i=`${e}-${n.api===`openai`?`openai`:`anthropic`}`,a=r.get(n.id),o;a?o={...a,api:i,provider:e}:(o=ir(e,n.id,``,i),n.name&&(o.name=n.name));let s=t.modelOverrides?.[n.id];return s&&Nn(o,s),Nn(o,n),o})}if(t.isOAuth){let n=Tn(`anthropic`),r=`${e}-anthropic`;return n.map(n=>{let i={...n,api:r,provider:e},a=t.modelOverrides?.[n.id];return a&&Nn(i,a),i})}return Tn(e===`azure-ai-foundry`?`anthropic`:e)}catch(t){return Z.error(`Failed to load models`,{providerId:e,error:t instanceof Error?t.message:String(t)}),[]}}function Fn(e){let t=Q().find(t=>t.providerId===e);if(!t?.accessToken)return null;let n=!!t.tokenExpiresAt&&Date.now()>t.tokenExpiresAt-6e4;return{token:t.accessToken,maskedValue:t.maskedValue,expiresAt:t.tokenExpiresAt,userName:t.userName,userAvatar:t.userAvatar,expired:n}}Object.assign({})[`/packages/webapp/providers.json`];const Z=n(`provider-settings`);function Q(){An();let e=localStorage.getItem(J);if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`object`&&!!e&&typeof e.providerId==`string`&&typeof e.apiKey==`string`):[]}catch{return[]}}function In(e){return a(localStorage)[e]??[]}function Ln(e,t){let n=a(localStorage),r=t.map(e=>e.trim()).filter(e=>e.length>0);r.length===0?delete n[e]:n[e]=r,o(localStorage,n)}async function Rn(e,t){if(c()){Ln(e,t);return}let n=s();if(!n)throw Error(`setExtraOAuthDomainsAsync: no DOM and no panel-rpc client — cannot persist to page localStorage`);let{storeAfter:r}=await n.call(`oauth-extras-set`,{providerId:e,domains:t});try{o(localStorage,r)}catch(t){Z.warn(`worker-shim mirror failed after successful page write — reload to refresh`,{providerId:e,error:t instanceof Error?t.message:String(t)})}}function zn(){return a(localStorage)}function Bn(e){localStorage.setItem(J,JSON.stringify(e))}async function Vn(e){if(c()){Bn(e);return}let t=s();if(!t)throw Error(`saveAccountsAsync: no DOM and no panel-rpc client — cannot persist to page localStorage`);let n=JSON.stringify(e),{storedJson:r}=await t.call(`save-oauth-accounts`,{accountsJson:n});try{localStorage.setItem(J,r)}catch(e){Z.warn(`worker-shim mirror failed after successful page write — reload to refresh`,{error:e instanceof Error?e.message:String(e)})}}function Hn(e,t,n,r,i){let a=Q().filter(t=>t.providerId!==e),o={providerId:e,apiKey:t};n&&(o.baseUrl=n),r&&(o.deployment=r),i&&(o.apiVersion=i),a.push(o),Bn(a)}async function Un(e){let t=typeof chrome<`u`&&!!chrome?.runtime?.id;try{if(t){let t=await new Promise(t=>{chrome.runtime.sendMessage({type:`secrets.delete`,name:`oauth.${e}.token`},n=>{chrome.runtime.lastError&&Z.error(`SW secrets.delete transport failed`,{providerId:e,error:chrome.runtime.lastError.message}),t(n??{})})});t.error&&Z.error(`SW secrets.delete returned error`,{providerId:e,error:t.error})}else{let t=await fetch(`/api/secrets/oauth/${e}`,{method:`DELETE`});!t.ok&&t.status!==404&&Z.warn(`OAuth replica DELETE non-ok`,{providerId:e,status:t.status})}}catch(n){Z.error(`OAuth replica removal failed`,{providerId:e,isExtension:t,error:n instanceof Error?n.message:String(n)})}}async function Wn(e){let t=Q().find(t=>t.providerId===e),n=X(e);t&&n?.isOAuth&&await Gn(e),await Un(e),await Vn(Q().filter(t=>t.providerId!==e));let r=localStorage.getItem(Y)??``,i=r.indexOf(`:`);i>0&&r.slice(0,i)===e&&localStorage.removeItem(Y)}async function Gn(e){let t=Q().find(t=>t.providerId===e);if(!t)return;let n=X(e);if(n?.isOAuth){if(n.onOAuthLogout)try{await n.onOAuthLogout()}catch(t){Z.warn(`onOAuthLogout failed`,{providerId:e,error:t instanceof Error?t.message:String(t)})}if(n.getOAuthLogoutUrl){let r=n.getOAuthLogoutUrl(t);if(r){let{openIdpLogoutUrl:t}=await import(`./oauth-service-CSJo71ct.js`);await t(r).catch(t=>{Z.warn(`IdP logout popup failed`,{providerId:e,error:t instanceof Error?t.message:String(t)})})}}await Vn(Q().map(t=>t.providerId===e?{providerId:t.providerId,apiKey:``,baseUrl:t.baseUrl,userName:t.userName,userAvatar:t.userAvatar,loggedOut:!0}:t)),await Un(e)}}async function Kn(e,t={}){let n=Math.max(1,t.attempts??3),r=t.delayMs??150,i=t.sleep??(e=>new Promise(t=>setTimeout(t,e))),a;for(let t=0;t<n;t++){let o=await e();if(o.maskedValue)return{maskedValue:o.maskedValue};o.error&&(a=o.error),t<n-1&&await i(r)}return{lastError:a}}async function qn(e,t,n){let r={providerId:e.providerId,accessToken:e.accessToken,domains:e.domains.join(`,`)},{maskedValue:i,lastError:a}=await Kn(()=>t.sendMaskRequest(r),n);if(!i){Z.error(`OAuth mask give-up: no masked value after retries`,{providerId:e.providerId,reason:a??`no error reported (cold SW or empty reply)`});return}let o=t.getAccounts(),s=o.find(t=>t.providerId===e.providerId);s&&(s.maskedValue=i,await t.saveAccounts(o))}async function Jn(e){let t=Q().find(t=>t.providerId===e.providerId),n=Q().filter(t=>t.providerId!==e.providerId);n.push({providerId:e.providerId,apiKey:``,accessToken:e.accessToken,refreshToken:e.refreshToken,tokenExpiresAt:e.tokenExpiresAt,userName:e.userName,userAvatar:e.userAvatar,baseUrl:e.baseUrl??t?.baseUrl}),await Vn(n);let r=X(e.providerId)?.oauthTokenDomains??[],i=In(e.providerId),a=new Set,o=[];for(let e of[...r,...i]){let t=e.toLowerCase();a.has(t)||(a.add(t),o.push(e))}if(o.length===0)return;let s=typeof chrome<`u`&&!!chrome?.runtime?.id;try{if(s)await qn({providerId:e.providerId,accessToken:e.accessToken,domains:o},{sendMaskRequest:t=>new Promise(n=>{chrome.runtime.sendMessage({type:`secrets.mask-oauth-token`,...t},t=>{chrome.runtime.lastError&&Z.error(`SW mask-oauth-token transport failed`,{providerId:e.providerId,error:chrome.runtime.lastError.message}),t?.error&&Z.warn(`SW mask-oauth-token returned error`,{providerId:e.providerId,error:t.error}),n(t??{})})}),getAccounts:Q,saveAccounts:Vn});else if(!globalThis.__slicc_connect_mode){let t=await fetch(`/api/secrets/oauth-update`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({providerId:e.providerId,accessToken:e.accessToken,domains:o})});if(t.ok){let n=await t.json(),r=Q(),i=r.find(t=>t.providerId===e.providerId);i&&typeof n.maskedValue==`string`&&(i.maskedValue=n.maskedValue,await Vn(r))}else Z.warn(`OAuth replica POST non-ok`,{providerId:e.providerId,status:t.status})}}catch(t){Z.error(`OAuth replica sync failed`,{providerId:e.providerId,isExtension:s,error:t instanceof Error?t.message:String(t)})}}function Yn(e){let t=Q().find(t=>t.providerId===e);return t&&(t.accessToken||t.apiKey)||null}function Xn(e){let t=Q().find(t=>t.providerId===e);return t?t.accessToken||t.apiKey||(X(e).optionalApiKey?`local`:null):null}function Zn(e){return Q().find(t=>t.providerId===e)?.baseUrl??null}function Qn(e){return Q().find(t=>t.providerId===e)?.deployment??null}function $n(e){return Q().find(t=>t.providerId===e)?.apiVersion??null}function er(){let e=localStorage.getItem(Y)||``,t=e.indexOf(`:`);return t>=0?e.slice(t+1):e}function tr(){return localStorage.getItem(Y)||``}function $(){let e=tr(),t=e.indexOf(`:`);if(t>0)return e.slice(0,t);let n=Q();return n.length>0?n[0].providerId:`anthropic`}function nr(){return Xn($())}function rr(e){return/^(?:gpt[-.]?|o[0-9]|chatgpt)/i.test(e)?`openai`:`anthropic`}function ir(e,t,n,r){return{id:t,name:t,provider:e,api:r??`${e}-${rr(t)}`,baseUrl:n??``,contextWindow:2e5,maxTokens:16384,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},reasoning:!0}}function ar(e){if(!e)return or();let t=$(),n=Zn(t),r=X(t);try{let i=wn(r.isOAuth||t===`azure-ai-foundry`?`anthropic`:t===`bedrock-camp`?`amazon-bedrock`:t,e);if(!i?.id)throw Error(`Model ${e} not found`);let a=i;return r.isOAuth?a=Pn(t).find(t=>t.id===e)||{...a,api:`${t}-anthropic`,provider:t}:t===`bedrock-camp`&&(a={...a,api:`bedrock-camp-converse`,provider:`bedrock-camp`}),n&&(a={...a,baseUrl:n}),a}catch(i){if(Z.debug(`resolveModelById: pi-ai lookup miss, using provider fallback`,{providerId:t,modelId:e,error:i instanceof Error?i.message:String(i)}),r.isOAuth){let r=Pn(t).find(t=>t.id===e);return r?n?{...r,baseUrl:n}:r:ir(t,e,n)}return or()}}function or(){let e=$(),t=er(),n=Zn(e),r=Pn(e),i=X(e),a=i.defaultModelId?r.find(e=>e.id.toLowerCase().includes(i.defaultModelId.toLowerCase()))?.id:void 0,o=t||a||r[0]?.id||`claude-sonnet-4-6`;try{let t=X(e),i=t.isOAuth||e===`azure-ai-foundry`?`anthropic`:e===`bedrock-camp`?`amazon-bedrock`:e,a=wn(i,o);if(!a?.id)throw Error(`Model ${o} not found in ${i} registry`);let s=a;return t.isOAuth?s=r.find(e=>e.id===o)||{...s,api:`${e}-anthropic`,provider:e}:e===`bedrock-camp`&&(s={...s,api:`bedrock-camp-converse`,provider:`bedrock-camp`}),n&&(s={...s,baseUrl:n}),s}catch(t){Z.debug(`resolveCurrentModel: pi-ai lookup miss, using provider fallback`,{providerId:e,effectiveModelId:o,error:t instanceof Error?t.message:String(t)});let a=r.find(e=>e.id===o);return a?n?{...a,baseUrl:n}:a:i.isOAuth?ir(e,o,n):wn(`anthropic`,`claude-sonnet-4-0`)}}export{ee as C,x as S,on as _,Qn as a,Gt as b,er as c,or as d,ar as f,cn as g,un as h,Zn as i,$ as l,xn as m,nr as n,Fn as o,Jn as p,$n as r,Pn as s,Q as t,Cn as u,Zt as v,ye as x,Wt as y};
99
+ Otherwise, output ONLY a markdown bullet list (one bullet per memory), no headers, no preamble, no follow-up. Each bullet is one line. Be specific. Prefer one fact per bullet over multi-clause sentences.`,2048,e.headers,s);if(n?.trim()&&n.trim()!==`NONE`)try{await e.onMemoryUpdates(n.trim()),G.info(`Memory extraction applied`,{bulletsLength:n.length})}catch(e){G.warn(`onMemoryUpdates callback threw`,{error:e instanceof Error?e.message:String(e)})}else G.info(`Memory extraction returned no durable memories`)}catch(e){G.warn(`Memory extraction call failed (compaction still applied)`,{error:e instanceof Error?e.message:String(e)})}return h(`idle`),[a,...m]}catch(e){G.warn(`LLM summarization failed, falling back to naive drop`,{error:e instanceof Error?e.message:String(e)})}else u||G.warn(`No API key available for LLM summarization, falling back to naive drop`);h(`idle`);let _={role:`user`,content:[{type:`text`,text:`[Earlier conversation messages were compacted to save context space]`}],timestamp:Date.now()};return G.info(`Naive compaction applied`,{originalMessages:o.length,compactedMessages:1+m.length}),[_,...m]}}const sn=n(`secret-scrub`);function cn(){return typeof chrome<`u`&&chrome?.runtime?.id?async e=>{if(!e)return e;try{let t=await new Promise(t=>{chrome.runtime.sendMessage({type:`secrets.scrub-tool-result`,text:e},e=>t(e??{}))});return t.error?(sn.debug(`SW scrub-tool-result returned error`,{error:t.error}),e):typeof t.text==`string`?t.text:e}catch(t){return sn.debug(`SW scrub-tool-result failed`,{error:t instanceof Error?t.message:String(t)}),e}}:async e=>{if(!e)return e;try{let t=await fetch(`/api/secrets/scrub`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({text:e})});if(!t.ok)return sn.debug(`Server scrub-tool-result returned non-ok`,{status:t.status}),e;let n=await t.json();return typeof n.text==`string`?n.text:e}catch(t){return sn.debug(`Server scrub-tool-result failed`,{error:t instanceof Error?t.message:String(t)}),e}}}const K=`sessions`;function ln(){return new Promise((e,t)=>{let n=indexedDB.open(`agent-sessions`,1);n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(K)||e.createObjectStore(K,{keyPath:`id`})},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)})}var un=class{dbPromise=null;getDB(){return this.dbPromise||=ln(),this.dbPromise}async save(e){let t=await this.getDB();return new Promise((n,r)=>{let i=t.transaction(K,`readwrite`).objectStore(K).put(e);i.onsuccess=()=>n(),i.onerror=()=>r(i.error)})}async load(e){let t=await this.getDB();return new Promise((n,r)=>{let i=t.transaction(K,`readonly`).objectStore(K).get(e);i.onsuccess=()=>n(i.result??null),i.onerror=()=>r(i.error)})}async delete(e){let t=await this.getDB();return new Promise((n,r)=>{let i=t.transaction(K,`readwrite`).objectStore(K).delete(e);i.onsuccess=()=>n(),i.onerror=()=>r(i.error)})}async list(){let e=await this.getDB();return new Promise((t,n)=>{let r=e.transaction(K,`readonly`).objectStore(K).getAll();r.onsuccess=()=>{t((r.result??[]).map(e=>({id:e.id,updatedAt:e.updatedAt})))},r.onerror=()=>n(r.error)})}async clearAll(){let e=await this.getDB();return new Promise((t,n)=>{let r=e.transaction(K,`readwrite`).objectStore(K).clear();r.onsuccess=()=>t(),r.onerror=()=>n(r.error)})}static newId(){return`session-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}static createSession(e,t){let n=Date.now();return{id:e,messages:[],config:t,createdAt:n,updatedAt:n}}static updateMessages(e,t){return{...e,messages:t,updatedAt:Date.now()}}};const q=n(`image-processor`),dn=3932160,fn=new Set([`image/jpeg`,`image/png`,`image/gif`,`image/webp`]);function pn(e){return fn.has(e)}function mn(e,t){try{if(t===`image/png`){if(e.length<32)return null;let t=atob(e.slice(0,32)),n=t.charCodeAt(16)<<24|t.charCodeAt(17)<<16|t.charCodeAt(18)<<8|t.charCodeAt(19),r=t.charCodeAt(20)<<24|t.charCodeAt(21)<<16|t.charCodeAt(22)<<8|t.charCodeAt(23);return n>0&&r>0?{width:n,height:r}:null}if(t===`image/gif`){if(e.length<16)return null;let t=atob(e.slice(0,16)),n=t.charCodeAt(6)|t.charCodeAt(7)<<8,r=t.charCodeAt(8)|t.charCodeAt(9)<<8;return n>0&&r>0?{width:n,height:r}:null}if(t===`image/jpeg`){let t=Math.min(21846*4,e.length),n=atob(e.slice(0,t));for(let e=0;e<n.length-8;e++)if(n.charCodeAt(e)===255){let t=n.charCodeAt(e+1);if(t===192||t===194){let t=n.charCodeAt(e+5)<<8|n.charCodeAt(e+6),r=n.charCodeAt(e+7)<<8|n.charCodeAt(e+8);return r>0&&t>0?{width:r,height:t}:null}}}}catch{}return null}async function hn(e){if(!pn(e.mimeType))return q.warn(`Unsupported image format`,{mimeType:e.mimeType}),{type:`text`,text:`[Image removed: unsupported format "${e.mimeType}". Supported: JPEG, PNG, GIF, WebP]`};let t=e.data.length,n=mn(e.data,e.mimeType);if(!(t>5242880||n!==null&&(n.width>8e3||n.height>8e3)||n!==null&&Math.max(n.width,n.height)>1568))return e;q.info(`Image needs processing`,{base64Size:t,dimensions:n?`${n.width}x${n.height}`:`unknown`,reason:t>5242880?`size`:`dimensions`});let r,i;try{let e=await import(`./kernel-worker-DpRMAeb1.js`).then(e=>e.a);r=e.getMagick,i=e.MIME_TO_MAGICK_FORMAT}catch(e){return q.error(`ImageMagick WASM module unavailable`,{error:e instanceof Error?e.message:String(e)}),{type:`text`,text:`[Image removed: resize service unavailable (ImageMagick WASM could not be loaded)]`}}let a;try{a=await r()}catch(e){return q.error(`ImageMagick WASM initialization failed`,{error:e instanceof Error?e.message:String(e)}),{type:`text`,text:`[Image removed: resize service unavailable (WASM init failed)]`}}try{let n=atob(e.data),r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e);let o={data:null,mime:e.mimeType};if(await a.ImageMagick.read(r,async t=>{let n=t.width,r=t.height,a=Math.max(n,r);if(a>1568){let e=1568/a,i=Math.round(n*e),o=Math.round(r*e);t.resize(i,o),q.info(`Resized image`,{from:`${n}x${r}`,to:`${i}x${o}`})}let s=i[e.mimeType]||`JPEG`;t.write(s,e=>{o.data=new Uint8Array(e)}),o.data&&o.data.length>dn&&s!==`JPEG`?(q.info(`Still over 5MB, compressing to JPEG q80`),t.quality=80,t.write(`JPEG`,e=>{o.data=new Uint8Array(e)}),o.mime=`image/jpeg`):o.data&&o.data.length>dn&&(q.info(`Still over 5MB as JPEG, reducing quality to 60`),t.quality=60,t.write(`JPEG`,e=>{o.data=new Uint8Array(e)}))}),!o.data)return q.warn(`ImageMagick produced no output`),{type:`text`,text:`[Image removed: could not be processed (empty output from resize)]`};if(o.data.length>dn)return q.warn(`Image still over 5MB after resize+compress`,{size:o.data.length}),{type:`text`,text:`[Image removed: still ${Math.round(o.data.length/1024/1024*10)/10}MB after resize and compression, exceeds 5MB API limit]`};let s=``;for(let e=0;e<o.data.length;e++)s+=String.fromCharCode(o.data[e]);let c=btoa(s);return q.info(`Image processed successfully`,{originalBase64:t,newBase64:c.length,mimeType:o.mime}),{type:`image`,data:c,mimeType:o.mime}}catch(n){return q.error(`Image data processing failed (corrupt or unreadable)`,{mimeType:e.mimeType,estimatedBytes:t,error:n instanceof Error?n.message:String(n)}),{type:`text`,text:`[Image removed: image data could not be processed (${n instanceof Error?n.message:`corrupt or unreadable`})]`}}}const gn=n(`tool-adapter`),_n=/<img:(data:(image\/[^;]+);base64,([^>]+))>/g;function vn(e){let t=[],n=0;for(let r of e.matchAll(_n)){let i=e.slice(n,r.index);i.trim()&&t.push({type:`text`,text:i.trimEnd()}),t.push({type:`image`,mimeType:r[2],data:r[3]}),n=r.index+r[0].length}let r=e.slice(n);return(r.trim()||t.length===0)&&t.push({type:`text`,text:r||e}),t}async function yn(e){let t=vn(e),n=[];for(let e of t)e.type===`image`?n.push(await hn(e)):n.push(e);return n}function bn(e,t,n){return{name:e.name,label:e.name,description:e.description,parameters:e.inputSchema,async execute(a,o,s,c){let l;c&&(l=i({onUpdate:c,toolName:e.name,toolCallId:a}));let u=t?t.processManager.spawn({kind:`tool`,argv:[e.name,...Sn(o)],owner:t.owner,ppid:t.getParentPid?.()}):null,d=null;u&&t&&s&&(s.aborted?t.processManager.signal(u.pid,`SIGINT`):s.addEventListener(`abort`,()=>t.processManager.signal(u.pid,`SIGINT`),{once:!0})),u&&t&&(d=t.processManager.onSignal((e,n)=>{e.pid!==u.pid||n!==`SIGKILL`||t.processManager.exit(u.pid,null)}));let f=u?u.abort.signal:s;try{let r=await e.execute(o??{},f),i=r.content;if(n&&typeof i==`string`&&i.length>0)try{i=await n.scrubToolResult(i)}catch(t){gn.warn(`Tool-result scrub failed, falling back to unscrubbed content`,{tool:e.name,error:t instanceof Error?t.message:String(t)}),i=r.content}let a;try{a=await yn(i)}catch(t){gn.warn(`Image processing failed, falling back to raw content`,{tool:e.name,error:t instanceof Error?t.message:String(t)}),a=vn(i)}return u&&t&&t.processManager.exit(u.pid,+!!r.isError),{content:a,details:{isError:r.isError}}}catch(e){throw u&&t&&t.processManager.exit(u.pid,u.abort.signal.aborted?null:1),e}finally{l&&r(l),d?.()}}}}function xn(e,t,n){return e.map(e=>bn(e,t,n))}function Sn(e){if(typeof e!=`object`||!e)return[];let t=e;for(let e of[`command`,`file_path`,`path`,`pattern`,`url`,`key`,`name`,`query`,`message`]){let n=t[e];if(typeof n==`string`&&n.length>0)return[n]}for(let e of Object.values(t))if(typeof e==`string`&&e.length>0)return[e];return[]}var Cn=e({addAccount:()=>Hn,getAccounts:()=>Q,getAllExtraOAuthDomains:()=>zn,getApiKey:()=>nr,getApiKeyForProvider:()=>Xn,getApiVersionForProvider:()=>$n,getAvailableProviders:()=>Mn,getBaseUrlForProvider:()=>Zn,getDeploymentForProvider:()=>Qn,getExtraOAuthDomains:()=>In,getOAuthAccountInfo:()=>Fn,getProviderConfig:()=>X,getProviderModels:()=>Pn,getRawApiKeyForProvider:()=>Yn,getSelectedModelId:()=>er,getSelectedProvider:()=>$,logoutOAuthAccount:()=>Gn,maskOAuthTokenWithRetry:()=>Kn,migrateLegacyAuthOnlySelection:()=>jn,persistOAuthMaskViaServiceWorker:()=>qn,removeAccount:()=>Wn,resolveCurrentModel:()=>or,resolveModelById:()=>ar,saveOAuthAccount:()=>Jn,setExtraOAuthDomains:()=>Ln,setExtraOAuthDomainsAsync:()=>Rn});const wn=v,Tn=y,J=`slicc_accounts`,Y=`selected-model`,En=[`slicc_provider`,`slicc_api_key`,`slicc_base_url`,`anthropic_api_key`,`api_provider`,`azure_resource`,`bedrock_region`],Dn=new Set([`github`]);function On(e){let t;try{t=_()}catch{return!1}return t.includes(e)&&!u(e)}let kn=!1;function An(){if(!kn){kn=!0;for(let e of En)try{localStorage.removeItem(e)}catch{}jn()}}function jn(){try{let e=localStorage.getItem(Y);if(e){let t=e.indexOf(`:`);if(t>0){let n=e.slice(0,t);(Dn.has(n)||On(n))&&localStorage.removeItem(Y)}}}catch{}try{let e=localStorage.getItem(J);if(!e)return;let t=JSON.parse(e);if(!Array.isArray(t))return;let n=t.filter(e=>!(typeof e==`object`&&e&&typeof e.providerId==`string`&&On(e.providerId)));n.length!==t.length&&localStorage.setItem(J,JSON.stringify(n))}catch{}}function Mn(){let e=_().filter(u),t=l();return[...new Set([...e,...t])].filter(e=>!d(e)?.hidden)}function X(e){return d(e)||{id:e,name:e.split(`-`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `),description:`${e} provider`,requiresApiKey:!0,requiresBaseUrl:!1}}function Nn(e,t){t.context_window!==void 0&&(e.contextWindow=t.context_window),t.max_tokens!==void 0&&(e.maxTokens=t.max_tokens),t.reasoning!==void 0&&(e.reasoning=t.reasoning),t.input!==void 0&&(e.input=t.input),t.compat!==void 0&&(e.compat={...e.compat??{},...t.compat}),t.thinkingLevelMap!==void 0&&(e.thinkingLevelMap={...e.thinkingLevelMap??{},...t.thinkingLevelMap})}function Pn(e){try{if(e===`bedrock-camp`){let e=h(Zn(`bedrock-camp`));return Tn(`amazon-bedrock`).filter(t=>m(t,e)).map(e=>({...e,api:`bedrock-camp-converse`,provider:`bedrock-camp`}))}let t=X(e);if(t.getModelIds){let n;try{n=t.getModelIds()}catch(t){return Z.error(`Provider getModelIds callback failed`,{providerId:e,error:t instanceof Error?t.message:String(t)}),[]}let r=new Map;for(let e of _())try{for(let t of Tn(e))r.set(t.id,t)}catch{}return n.map(n=>{let i=`${e}-${n.api===`openai`?`openai`:`anthropic`}`,a=r.get(n.id),o;a?o={...a,api:i,provider:e}:(o=ir(e,n.id,``,i),n.name&&(o.name=n.name));let s=t.modelOverrides?.[n.id];return s&&Nn(o,s),Nn(o,n),o})}if(t.isOAuth){let n=Tn(`anthropic`),r=`${e}-anthropic`;return n.map(n=>{let i={...n,api:r,provider:e},a=t.modelOverrides?.[n.id];return a&&Nn(i,a),i})}return Tn(e===`azure-ai-foundry`?`anthropic`:e)}catch(t){return Z.error(`Failed to load models`,{providerId:e,error:t instanceof Error?t.message:String(t)}),[]}}function Fn(e){let t=Q().find(t=>t.providerId===e);if(!t?.accessToken)return null;let n=!!t.tokenExpiresAt&&Date.now()>t.tokenExpiresAt-6e4;return{token:t.accessToken,maskedValue:t.maskedValue,expiresAt:t.tokenExpiresAt,userName:t.userName,userAvatar:t.userAvatar,expired:n}}Object.assign({})[`/packages/webapp/providers.json`];const Z=n(`provider-settings`);function Q(){An();let e=localStorage.getItem(J);if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`object`&&!!e&&typeof e.providerId==`string`&&typeof e.apiKey==`string`):[]}catch{return[]}}function In(e){return a(localStorage)[e]??[]}function Ln(e,t){let n=a(localStorage),r=t.map(e=>e.trim()).filter(e=>e.length>0);r.length===0?delete n[e]:n[e]=r,o(localStorage,n)}async function Rn(e,t){if(c()){Ln(e,t);return}let n=s();if(!n)throw Error(`setExtraOAuthDomainsAsync: no DOM and no panel-rpc client — cannot persist to page localStorage`);let{storeAfter:r}=await n.call(`oauth-extras-set`,{providerId:e,domains:t});try{o(localStorage,r)}catch(t){Z.warn(`worker-shim mirror failed after successful page write — reload to refresh`,{providerId:e,error:t instanceof Error?t.message:String(t)})}}function zn(){return a(localStorage)}function Bn(e){localStorage.setItem(J,JSON.stringify(e))}async function Vn(e){if(c()){Bn(e);return}let t=s();if(!t)throw Error(`saveAccountsAsync: no DOM and no panel-rpc client — cannot persist to page localStorage`);let n=JSON.stringify(e),{storedJson:r}=await t.call(`save-oauth-accounts`,{accountsJson:n});try{localStorage.setItem(J,r)}catch(e){Z.warn(`worker-shim mirror failed after successful page write — reload to refresh`,{error:e instanceof Error?e.message:String(e)})}}function Hn(e,t,n,r,i){let a=Q().filter(t=>t.providerId!==e),o={providerId:e,apiKey:t};n&&(o.baseUrl=n),r&&(o.deployment=r),i&&(o.apiVersion=i),a.push(o),Bn(a)}async function Un(e){let t=typeof chrome<`u`&&!!chrome?.runtime?.id;try{if(t){let t=await new Promise(t=>{chrome.runtime.sendMessage({type:`secrets.delete`,name:`oauth.${e}.token`},n=>{chrome.runtime.lastError&&Z.error(`SW secrets.delete transport failed`,{providerId:e,error:chrome.runtime.lastError.message}),t(n??{})})});t.error&&Z.error(`SW secrets.delete returned error`,{providerId:e,error:t.error})}else{let t=await fetch(`/api/secrets/oauth/${e}`,{method:`DELETE`});!t.ok&&t.status!==404&&Z.warn(`OAuth replica DELETE non-ok`,{providerId:e,status:t.status})}}catch(n){Z.error(`OAuth replica removal failed`,{providerId:e,isExtension:t,error:n instanceof Error?n.message:String(n)})}}async function Wn(e){let t=Q().find(t=>t.providerId===e),n=X(e);t&&n?.isOAuth&&await Gn(e),await Un(e),await Vn(Q().filter(t=>t.providerId!==e));let r=localStorage.getItem(Y)??``,i=r.indexOf(`:`);i>0&&r.slice(0,i)===e&&localStorage.removeItem(Y)}async function Gn(e){let t=Q().find(t=>t.providerId===e);if(!t)return;let n=X(e);if(n?.isOAuth){if(n.onOAuthLogout)try{await n.onOAuthLogout()}catch(t){Z.warn(`onOAuthLogout failed`,{providerId:e,error:t instanceof Error?t.message:String(t)})}if(n.getOAuthLogoutUrl){let r=n.getOAuthLogoutUrl(t);if(r){let{openIdpLogoutUrl:t}=await import(`./oauth-service-CSJo71ct.js`);await t(r).catch(t=>{Z.warn(`IdP logout popup failed`,{providerId:e,error:t instanceof Error?t.message:String(t)})})}}await Vn(Q().map(t=>t.providerId===e?{providerId:t.providerId,apiKey:``,baseUrl:t.baseUrl,userName:t.userName,userAvatar:t.userAvatar,loggedOut:!0}:t)),await Un(e)}}async function Kn(e,t={}){let n=Math.max(1,t.attempts??3),r=t.delayMs??150,i=t.sleep??(e=>new Promise(t=>setTimeout(t,e))),a;for(let t=0;t<n;t++){let o=await e();if(o.maskedValue)return{maskedValue:o.maskedValue};o.error&&(a=o.error),t<n-1&&await i(r)}return{lastError:a}}async function qn(e,t,n){let r={providerId:e.providerId,accessToken:e.accessToken,domains:e.domains.join(`,`)},{maskedValue:i,lastError:a}=await Kn(()=>t.sendMaskRequest(r),n);if(!i){Z.error(`OAuth mask give-up: no masked value after retries`,{providerId:e.providerId,reason:a??`no error reported (cold SW or empty reply)`});return}let o=t.getAccounts(),s=o.find(t=>t.providerId===e.providerId);s&&(s.maskedValue=i,await t.saveAccounts(o))}async function Jn(e){let t=Q().find(t=>t.providerId===e.providerId),n=Q().filter(t=>t.providerId!==e.providerId);n.push({providerId:e.providerId,apiKey:``,accessToken:e.accessToken,refreshToken:e.refreshToken,tokenExpiresAt:e.tokenExpiresAt,userName:e.userName,userAvatar:e.userAvatar,baseUrl:e.baseUrl??t?.baseUrl}),await Vn(n);let r=X(e.providerId)?.oauthTokenDomains??[],i=In(e.providerId),a=new Set,o=[];for(let e of[...r,...i]){let t=e.toLowerCase();a.has(t)||(a.add(t),o.push(e))}if(o.length===0)return;let s=typeof chrome<`u`&&!!chrome?.runtime?.id;try{if(s)await qn({providerId:e.providerId,accessToken:e.accessToken,domains:o},{sendMaskRequest:t=>new Promise(n=>{chrome.runtime.sendMessage({type:`secrets.mask-oauth-token`,...t},t=>{chrome.runtime.lastError&&Z.error(`SW mask-oauth-token transport failed`,{providerId:e.providerId,error:chrome.runtime.lastError.message}),t?.error&&Z.warn(`SW mask-oauth-token returned error`,{providerId:e.providerId,error:t.error}),n(t??{})})}),getAccounts:Q,saveAccounts:Vn});else if(!globalThis.__slicc_connect_mode){let t=await fetch(`/api/secrets/oauth-update`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({providerId:e.providerId,accessToken:e.accessToken,domains:o})});if(t.ok){let n=await t.json(),r=Q(),i=r.find(t=>t.providerId===e.providerId);i&&typeof n.maskedValue==`string`&&(i.maskedValue=n.maskedValue,await Vn(r))}else Z.warn(`OAuth replica POST non-ok`,{providerId:e.providerId,status:t.status})}}catch(t){Z.error(`OAuth replica sync failed`,{providerId:e.providerId,isExtension:s,error:t instanceof Error?t.message:String(t)})}}function Yn(e){let t=Q().find(t=>t.providerId===e);return t&&(t.accessToken||t.apiKey)||null}function Xn(e){let t=Q().find(t=>t.providerId===e);return t?t.accessToken||t.apiKey||(X(e).optionalApiKey?`local`:null):null}function Zn(e){return Q().find(t=>t.providerId===e)?.baseUrl??null}function Qn(e){return Q().find(t=>t.providerId===e)?.deployment??null}function $n(e){return Q().find(t=>t.providerId===e)?.apiVersion??null}function er(){let e=localStorage.getItem(Y)||``,t=e.indexOf(`:`);return t>=0?e.slice(t+1):e}function tr(){return localStorage.getItem(Y)||``}function $(){let e=tr(),t=e.indexOf(`:`);if(t>0)return e.slice(0,t);let n=Q();return n.length>0?n[0].providerId:`anthropic`}function nr(){return Xn($())}function rr(e){return/^(?:gpt[-.]?|o[0-9]|chatgpt)/i.test(e)?`openai`:`anthropic`}function ir(e,t,n,r){return{id:t,name:t,provider:e,api:r??`${e}-${rr(t)}`,baseUrl:n??``,contextWindow:2e5,maxTokens:16384,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},reasoning:!0}}function ar(e){if(!e)return or();let t=$(),n=Zn(t),r=X(t);try{let i=wn(r.isOAuth||t===`azure-ai-foundry`?`anthropic`:t===`bedrock-camp`?`amazon-bedrock`:t,e);if(!i?.id)throw Error(`Model ${e} not found`);let a=i;return r.isOAuth?a=Pn(t).find(t=>t.id===e)||{...a,api:`${t}-anthropic`,provider:t}:t===`bedrock-camp`&&(a={...a,api:`bedrock-camp-converse`,provider:`bedrock-camp`}),n&&(a={...a,baseUrl:n}),a}catch(i){if(Z.debug(`resolveModelById: pi-ai lookup miss, using provider fallback`,{providerId:t,modelId:e,error:i instanceof Error?i.message:String(i)}),r.isOAuth){let r=Pn(t).find(t=>t.id===e);return r?n?{...r,baseUrl:n}:r:ir(t,e,n)}return or()}}function or(){let e=$(),t=er(),n=Zn(e),r=Pn(e),i=X(e),a=i.defaultModelId?r.find(e=>e.id.toLowerCase().includes(i.defaultModelId.toLowerCase()))?.id:void 0,o=t||a||r[0]?.id||`claude-sonnet-4-6`;try{let t=X(e),i=t.isOAuth||e===`azure-ai-foundry`?`anthropic`:e===`bedrock-camp`?`amazon-bedrock`:e,a=wn(i,o);if(!a?.id)throw Error(`Model ${o} not found in ${i} registry`);let s=a;return t.isOAuth?s=r.find(e=>e.id===o)||{...s,api:`${e}-anthropic`,provider:e}:e===`bedrock-camp`&&(s={...s,api:`bedrock-camp-converse`,provider:`bedrock-camp`}),n&&(s={...s,baseUrl:n}),s}catch(t){Z.debug(`resolveCurrentModel: pi-ai lookup miss, using provider fallback`,{providerId:e,effectiveModelId:o,error:t instanceof Error?t.message:String(t)});let a=r.find(e=>e.id===o);return a?n?{...a,baseUrl:n}:a:i.isOAuth?ir(e,o,n):wn(`anthropic`,`claude-sonnet-4-0`)}}export{ee as C,x as S,on as _,Qn as a,Gt as b,er as c,or as d,ar as f,cn as g,un as h,Zn as i,$ as l,xn as m,nr as n,Fn as o,Jn as p,$n as r,Pn as s,Q as t,Cn as u,Zt as v,ye as x,Wt as y};
@@ -0,0 +1 @@
1
+ import{t as e}from"./store-CQo5JYZe.js";import"./provider-tWBv0sFX.js";export{e as readMcpAuthEntries};
@@ -0,0 +1 @@
1
+ import{t as e}from"./provider-DQ7BvBZw.js";export{e as readMcpAuthEntries};
@@ -1 +1 @@
1
- import{t as e}from"./logger-LESFN7Hj.js";import{o as t,p as n,t as r}from"./provider-settings-BHTU6Oq1.js";import{i,s as a,t as o}from"./providers-ClvthlnA.js";import{discoverAuth as s,refreshAccessToken as c,runAuthFlow as l}from"./oauth-Czw-MuuR.js";import{n as u}from"./store-BzwlOEnO.js";const d=e(`mcp-provider`);function f(){return typeof globalThis<`u`&&globalThis.indexedDB!==void 0}function p(e){return`mcp:${e}`}const m=new Map,h=new Set;async function g(){let e=typeof chrome<`u`?chrome:void 0;if(e?.runtime?.id)return e.identity?.getRedirectURL?.(`mcp-callback`)??`https://${e.runtime.id}.chromiumapp.org/mcp-callback`;let{getOAuthPageOrigin:t}=await import(`./oauth-service-CSJo71ct.js`),{origin:n}=await t();return`${n}/auth/callback`}async function _(e){if(e)return e;let{createProxiedFetch:t}=await import(`./kernel-worker-OJsR9uqi.js`).then(e=>e.f),n=t();return async(e,t)=>{let r=await n(e,{method:t?.method,headers:t?.headers,body:t?.body}),i=new TextDecoder().decode(r.body);return{ok:r.status>=200&&r.status<300,status:r.status,statusText:r.statusText,text:async()=>i,json:async()=>JSON.parse(i),headers:{get:e=>r.headers[e.toLowerCase()]??null}}}}async function v(e){let t=m.get(p(e.name));if(t)return t;let n=await _(e.fetchImpl),r=await s(e.serverUrl,void 0,n);return m.set(p(e.name),r),r}function y(e){let i=p(e.name),a=(()=>{try{return new URL(e.serverUrl).host}catch{return``}})();return{id:i,name:`MCP: ${e.name}`,description:`MCP server at ${e.serverUrl}`,requiresApiKey:!1,requiresBaseUrl:!1,isOAuth:!0,oauthTokenDomains:a?[a]:[],getModelIds:()=>[],onOAuthLogin:async(t,r)=>{let a=e.launcher??t,o=await _(e.fetchImpl),s=await l({asMetadata:await v(e),clientId:e.auth.clientId,scope:e.auth.scope,redirectUri:await g(),launcher:a,fetchImpl:o});await n({providerId:i,accessToken:s.accessToken,refreshToken:s.refreshToken,tokenExpiresAt:s.expiresAt}),r()},onSilentRenew:async()=>{if(!t(i))return null;let a=r().find(e=>e.providerId===i)?.refreshToken;if(!a)return d.info(`No refresh token for MCP provider, skipping silent renewal`,{id:i}),null;try{let t=await v(e),r=t.grantTypes??[];if(r.length>0&&!r.includes(`refresh_token`))return d.info(`AS does not advertise refresh_token grant; skipping silent renewal`,{id:i}),null;let o=await _(e.fetchImpl),s=await c({tokenEndpoint:t.tokenEndpoint,clientId:e.auth.clientId,refreshToken:a,scope:e.auth.scope,fetchImpl:o});return await n({providerId:i,accessToken:s.accessToken,refreshToken:s.refreshToken??a,tokenExpiresAt:s.expiresAt}),s.accessToken}catch(e){return d.warn(`MCP silent renewal failed`,{id:i,error:e instanceof Error?e.message:String(e)}),null}}}}function b(e){let t=p(e.name);h.has(t)||(i(y(e)),h.add(t),d.debug(`Registered MCP provider`,{id:t}))}async function x(e){let t=p(e);if(h.has(t)&&o(t))return!0;if(!f())return!1;let n=await u(e);return n?(b({name:e,serverUrl:n.serverUrl,auth:n.auth}),!0):!1}async function S(){if(!f())return[];let{readMcpAuthEntries:e}=await import(`./provider-store-access-DRY_bX7j.js`),t=await e(),n=[];for(let e of t)b({name:e.name,serverUrl:e.serverUrl,auth:e.auth}),n.push(p(e.name));return n}function C(e){let t=p(e);return h.delete(t),m.delete(t),a(t)}export{S as ensureAllMcpProvidersRegistered,x as ensureMcpProviderRegistered,b as registerMcpProvider,C as removeMcpProvider};
1
+ import{t as e}from"./logger-LESFN7Hj.js";import{o as t,p as n,t as r}from"./provider-settings-VV6aNiP5.js";import{i,s as a,t as o}from"./providers-BmSZZhhm.js";import{discoverAuth as s,refreshAccessToken as c,runAuthFlow as l}from"./oauth-Czw-MuuR.js";import{n as u}from"./store-CQo5JYZe.js";const d=e(`mcp-provider`);function f(){return typeof globalThis<`u`&&globalThis.indexedDB!==void 0}function p(e){return`mcp:${e}`}const m=new Map,h=new Set;async function g(){let e=typeof chrome<`u`?chrome:void 0;if(e?.runtime?.id)return e.identity?.getRedirectURL?.(`mcp-callback`)??`https://${e.runtime.id}.chromiumapp.org/mcp-callback`;let{getOAuthPageOrigin:t}=await import(`./oauth-service-CSJo71ct.js`),{origin:n}=await t();return`${n}/auth/callback`}async function _(e){if(e)return e;let{createProxiedFetch:t}=await import(`./kernel-worker-DpRMAeb1.js`).then(e=>e.f),n=t();return async(e,t)=>{let r=await n(e,{method:t?.method,headers:t?.headers,body:t?.body}),i=new TextDecoder().decode(r.body);return{ok:r.status>=200&&r.status<300,status:r.status,statusText:r.statusText,text:async()=>i,json:async()=>JSON.parse(i),headers:{get:e=>r.headers[e.toLowerCase()]??null}}}}async function v(e){let t=m.get(p(e.name));if(t)return t;let n=await _(e.fetchImpl),r=await s(e.serverUrl,void 0,n);return m.set(p(e.name),r),r}function y(e){let i=p(e.name),a=(()=>{try{return new URL(e.serverUrl).host}catch{return``}})();return{id:i,name:`MCP: ${e.name}`,description:`MCP server at ${e.serverUrl}`,requiresApiKey:!1,requiresBaseUrl:!1,isOAuth:!0,oauthTokenDomains:a?[a]:[],getModelIds:()=>[],onOAuthLogin:async(t,r)=>{let a=e.launcher??t,o=await _(e.fetchImpl),s=await l({asMetadata:await v(e),clientId:e.auth.clientId,scope:e.auth.scope,redirectUri:await g(),launcher:a,fetchImpl:o});await n({providerId:i,accessToken:s.accessToken,refreshToken:s.refreshToken,tokenExpiresAt:s.expiresAt}),r()},onSilentRenew:async()=>{if(!t(i))return null;let a=r().find(e=>e.providerId===i)?.refreshToken;if(!a)return d.info(`No refresh token for MCP provider, skipping silent renewal`,{id:i}),null;try{let t=await v(e),r=t.grantTypes??[];if(r.length>0&&!r.includes(`refresh_token`))return d.info(`AS does not advertise refresh_token grant; skipping silent renewal`,{id:i}),null;let o=await _(e.fetchImpl),s=await c({tokenEndpoint:t.tokenEndpoint,clientId:e.auth.clientId,refreshToken:a,scope:e.auth.scope,fetchImpl:o});return await n({providerId:i,accessToken:s.accessToken,refreshToken:s.refreshToken??a,tokenExpiresAt:s.expiresAt}),s.accessToken}catch(e){return d.warn(`MCP silent renewal failed`,{id:i,error:e instanceof Error?e.message:String(e)}),null}}}}function b(e){let t=p(e.name);h.has(t)||(i(y(e)),h.add(t),d.debug(`Registered MCP provider`,{id:t}))}async function x(e){let t=p(e);if(h.has(t)&&o(t))return!0;if(!f())return!1;let n=await u(e);return n?(b({name:e,serverUrl:n.serverUrl,auth:n.auth}),!0):!1}async function S(){if(!f())return[];let{readMcpAuthEntries:e}=await import(`./provider-store-access-BGKXkdbd.js`),t=await e(),n=[];for(let e of t)b({name:e.name,serverUrl:e.serverUrl,auth:e.auth}),n.push(p(e.name));return n}function C(e){let t=p(e);return h.delete(t),m.delete(t),a(t)}export{S as ensureAllMcpProvidersRegistered,x as ensureMcpProviderRegistered,b as registerMcpProvider,C as removeMcpProvider};
@@ -1 +1 @@
1
- import{r as e}from"./chunk-CMxvf4Kt.js";var t={include:[`*`],exclude:[`amazon-bedrock`]},n=e({getRegisteredProviderConfig:()=>u,getRegisteredProviderIds:()=>d,registerProviderConfig:()=>f,registerProviders:()=>l,shouldIncludeProvider:()=>i,unregisterProviderConfig:()=>p});const r=Object.assign({"/packages/dev-tools/providers.build.json":t})[`/packages/dev-tools/providers.build.json`]??{include:[`*`],exclude:[]};function i(e){let{include:t,exclude:n}=r;return n.includes(`*`)||n.includes(e)?!1:!!(t.includes(`*`)||t.includes(e))}const a=Object.assign({"./built-in/azure-ai-foundry.ts":()=>import(`./azure-ai-foundry-CzkPLAhp.js`),"./built-in/azure-openai.ts":()=>import(`./azure-openai-DeK0lFgF.js`),"./built-in/bedrock-camp.ts":()=>import(`./bedrock-camp-wxdDcDkR.js`).then(e=>e.n),"./built-in/local-llm.ts":()=>import(`./kernel-worker-OJsR9uqi.js`).then(e=>e.i)}),o=Object.assign({"/packages/webapp/providers/adobe.ts":()=>import(`./adobe-Cemo5C0u.js`),"/packages/webapp/providers/github-copilot.ts":()=>import(`./github-copilot-Bn6df3EN.js`),"/packages/webapp/providers/github.ts":()=>import(`./github-um5_lXvs.js`),"/packages/webapp/providers/openai-codex.ts":()=>import(`./openai-codex-stad_9EL.js`),"/packages/webapp/providers/xai-grok-errors.ts":()=>import(`./xai-grok-errors-ByEMMSoz.js`),"/packages/webapp/providers/xai-grok-models.ts":()=>import(`./xai-grok-models-B0Tf--xf.js`),"/packages/webapp/providers/xai-grok-sanitize.ts":()=>import(`./xai-grok-sanitize-CV6qvaEF.js`),"/packages/webapp/providers/xai-grok.ts":()=>import(`./xai-grok-BJlD5UbE.js`)}),s=new Map;let c=null;function l(){return c||(c=(async()=>{for(let[e,t]of Object.entries(a)){let e=await t();e.config&&i(e.config.id)&&(s.set(e.config.id,e.config),e.register?.())}for(let[e,t]of Object.entries(o)){let e=await t();e.config&&(s.set(e.config.id,e.config),e.register?.())}})(),c)}function u(e){return s.get(e)}function d(){return[...s.keys()]}function f(e){s.set(e.id,e)}function p(e){return s.delete(e)}export{l as a,f as i,d as n,i as o,n as r,p as s,u as t};
1
+ import{r as e}from"./chunk-CMxvf4Kt.js";var t={include:[`*`],exclude:[`amazon-bedrock`]},n=e({getRegisteredProviderConfig:()=>u,getRegisteredProviderIds:()=>d,registerProviderConfig:()=>f,registerProviders:()=>l,shouldIncludeProvider:()=>i,unregisterProviderConfig:()=>p});const r=Object.assign({"/packages/dev-tools/providers.build.json":t})[`/packages/dev-tools/providers.build.json`]??{include:[`*`],exclude:[]};function i(e){let{include:t,exclude:n}=r;return n.includes(`*`)||n.includes(e)?!1:!!(t.includes(`*`)||t.includes(e))}const a=Object.assign({"./built-in/azure-ai-foundry.ts":()=>import(`./azure-ai-foundry-CzkPLAhp.js`),"./built-in/azure-openai.ts":()=>import(`./azure-openai-C-3E46Ld.js`),"./built-in/bedrock-camp.ts":()=>import(`./bedrock-camp-wxdDcDkR.js`).then(e=>e.n),"./built-in/local-llm.ts":()=>import(`./kernel-worker-DpRMAeb1.js`).then(e=>e.i)}),o=Object.assign({"/packages/webapp/providers/adobe.ts":()=>import(`./adobe-B4ZijlN3.js`),"/packages/webapp/providers/github-copilot.ts":()=>import(`./github-copilot-BSdH-X0I.js`),"/packages/webapp/providers/github.ts":()=>import(`./github-CPCc-EUr.js`),"/packages/webapp/providers/openai-codex.ts":()=>import(`./openai-codex-DkqkFtKq.js`),"/packages/webapp/providers/xai-grok-errors.ts":()=>import(`./xai-grok-errors-ByEMMSoz.js`),"/packages/webapp/providers/xai-grok-models.ts":()=>import(`./xai-grok-models-B0Tf--xf.js`),"/packages/webapp/providers/xai-grok-sanitize.ts":()=>import(`./xai-grok-sanitize-CV6qvaEF.js`),"/packages/webapp/providers/xai-grok.ts":()=>import(`./xai-grok-BNfjuAeJ.js`)}),s=new Map;let c=null;function l(){return c||(c=(async()=>{for(let[e,t]of Object.entries(a)){let e=await t();e.config&&i(e.config.id)&&(s.set(e.config.id,e.config),e.register?.())}for(let[e,t]of Object.entries(o)){let e=await t();e.config&&(s.set(e.config.id,e.config),e.register?.())}})(),c)}function u(e){return s.get(e)}function d(){return[...s.keys()]}function f(e){s.set(e.id,e)}function p(e){return s.delete(e)}export{l as a,f as i,d as n,i as o,n as r,p as s,u as t};
@@ -1 +1 @@
1
- import{n as e}from"./chunk-aKtaBQYM.js";import{f as t,m as n,nt as r,o as i,p as a,ut as o}from"./main-CAjMV3Ro.js";import{t as s}from"./llm-session-id-DVmZ9C2t.js";import{t as c}from"./iconsAndAliases-Bzj1tGpU.js";var l=e({lucideIconNames:()=>m,pickLucideIcon:()=>h,quickLabel:()=>d}),u=r(`quick-llm`);async function d(e){let t=i();if(!t)return u.debug(`No API key for active provider — skipping`),null;let r=n(),s=a(),c;if(c=e.modelId?y(r,e.modelId)??y(r,s):g(r,s),!c)return u.debug(`No model available for provider`,{providerId:r}),null;let l={role:`user`,content:e.prompt,timestamp:Date.now()},d={};c.provider===`adobe`&&(d[`X-Session-Id`]=x());try{let n=(await o(c,{systemPrompt:e.system,messages:[l]},{apiKey:t,maxTokens:e.maxTokens??60,temperature:e.temperature??.3,signal:e.signal,headers:Object.keys(d).length>0?d:void 0})).content.filter(e=>e.type===`text`).map(e=>e.text).join(``).trim();return n.length>0?n:null}catch(e){return u.debug(`Quick label call failed`,{error:e instanceof Error?e.message:String(e)}),null}}var f=null;function p(e){return e.replace(/([A-Z]+)([A-Z][a-z])/g,`$1-$2`).replace(/([a-z0-9])([A-Z])/g,`$1-$2`).replace(/([A-Za-z])(\d)/g,`$1-$2`).toLowerCase()}function m(){return f||=Object.keys(c).map(p).sort(),f}async function h(e){let t=m(),n=await(e.labelFn??d)({system:`You pick ONE icon for a UI element. Respond with exactly one icon name from the provided list — lowercase, no quotes, no punctuation, nothing else.`,prompt:`Pick the single most fitting icon for: ${e.subject}\n\nValid icon names:\n${t.join(` `)}`,maxTokens:16,temperature:.2,signal:e.signal});if(!n)return null;let r=n.trim().toLowerCase().replace(/[^a-z0-9-]/g,``);return t.includes(r)?r:null}function g(e,n){let r=t(e);if(r.length===0)return;let i=r.find(e=>e.id===n)??r[0],a=v(i.id),o=r.filter(e=>_(e,i,a));return o.length===0?i:(o.sort((e,t)=>(e.cost?.input??0)-(t.cost?.input??0)),o[0])}function _(e,t,n){if(e.id===t.id)return!1;let r=t.cost?.input??1/0;if((e.cost?.input??1/0)>=r)return!1;let i=e.id.toLowerCase();switch(n){case`claude`:return i.includes(`haiku`);case`gpt`:return/(^|-)mini(-|$)|(^|-)nano(-|$)/.test(i);case`gemini`:return i.includes(`flash`);case`grok`:return/(^|-)mini(-|$)|(^|-)fast(-|$)/.test(i);case`unknown`:return!0}}function v(e){let t=e.toLowerCase();return t.includes(`claude`)?`claude`:t.includes(`gemini`)?`gemini`:t.includes(`grok`)?`grok`:/^(gpt|o\d)/.test(t)?`gpt`:`unknown`}function y(e,n){return t(e).find(e=>e.id===n)}var b=`ui-quick-llm`;function x(){return s(b)}export{l as n,d as t};
1
+ import{n as e}from"./chunk-aKtaBQYM.js";import{f as t,m as n,nt as r,o as i,p as a,ut as o}from"./main-D7K1MTaQ.js";import{t as s}from"./llm-session-id-DVmZ9C2t.js";import{t as c}from"./iconsAndAliases-Bzj1tGpU.js";var l=e({lucideIconNames:()=>m,pickLucideIcon:()=>h,quickLabel:()=>d}),u=r(`quick-llm`);async function d(e){let t=i();if(!t)return u.debug(`No API key for active provider — skipping`),null;let r=n(),s=a(),c;if(c=e.modelId?y(r,e.modelId)??y(r,s):g(r,s),!c)return u.debug(`No model available for provider`,{providerId:r}),null;let l={role:`user`,content:e.prompt,timestamp:Date.now()},d={};c.provider===`adobe`&&(d[`X-Session-Id`]=x());try{let n=(await o(c,{systemPrompt:e.system,messages:[l]},{apiKey:t,maxTokens:e.maxTokens??60,temperature:e.temperature??.3,signal:e.signal,headers:Object.keys(d).length>0?d:void 0})).content.filter(e=>e.type===`text`).map(e=>e.text).join(``).trim();return n.length>0?n:null}catch(e){return u.debug(`Quick label call failed`,{error:e instanceof Error?e.message:String(e)}),null}}var f=null;function p(e){return e.replace(/([A-Z]+)([A-Z][a-z])/g,`$1-$2`).replace(/([a-z0-9])([A-Z])/g,`$1-$2`).replace(/([A-Za-z])(\d)/g,`$1-$2`).toLowerCase()}function m(){return f||=Object.keys(c).map(p).sort(),f}async function h(e){let t=m(),n=await(e.labelFn??d)({system:`You pick ONE icon for a UI element. Respond with exactly one icon name from the provided list — lowercase, no quotes, no punctuation, nothing else.`,prompt:`Pick the single most fitting icon for: ${e.subject}\n\nValid icon names:\n${t.join(` `)}`,maxTokens:16,temperature:.2,signal:e.signal});if(!n)return null;let r=n.trim().toLowerCase().replace(/[^a-z0-9-]/g,``);return t.includes(r)?r:null}function g(e,n){let r=t(e);if(r.length===0)return;let i=r.find(e=>e.id===n)??r[0],a=v(i.id),o=r.filter(e=>_(e,i,a));return o.length===0?i:(o.sort((e,t)=>(e.cost?.input??0)-(t.cost?.input??0)),o[0])}function _(e,t,n){if(e.id===t.id)return!1;let r=t.cost?.input??1/0;if((e.cost?.input??1/0)>=r)return!1;let i=e.id.toLowerCase();switch(n){case`claude`:return i.includes(`haiku`);case`gpt`:return/(^|-)mini(-|$)|(^|-)nano(-|$)/.test(i);case`gemini`:return i.includes(`flash`);case`grok`:return/(^|-)mini(-|$)|(^|-)fast(-|$)/.test(i);case`unknown`:return!0}}function v(e){let t=e.toLowerCase();return t.includes(`claude`)?`claude`:t.includes(`gemini`)?`gemini`:t.includes(`grok`)?`grok`:/^(gpt|o\d)/.test(t)?`gpt`:`unknown`}function y(e,n){return t(e).find(e=>e.id===n)}var b=`ui-quick-llm`;function x(){return s(b)}export{l as n,d as t};
@@ -1 +1 @@
1
- import{nt as e}from"./main-CAjMV3Ro.js";var t=e(`tray-sync`),n=`slicc-cherry`;function r(e){return typeof e==`object`&&!!e&&e.type===`cherry.host_event`}var i=32*1024;function a(e,t,n,r){if(r||!n)return e.send({type:`cdp.response`,requestId:t,result:n,error:r});let a=JSON.stringify(n);if(a.length<=65536)return e.send({type:`cdp.response`,requestId:t,result:n});let o=Math.ceil(a.length/i),s=!0;for(let n=0;n<o;n++){let r=a.slice(n*i,(n+1)*i);if(!e.send({type:`cdp.response`,requestId:t,chunkData:r,chunkIndex:n,totalChunks:o})){s=!1,e.send({type:`cdp.response`,requestId:t,error:`Failed to send CDP response chunk ${n}/${o} (response was ${a.length} bytes)`});break}}return s}function o(e,t){if(t.chunkIndex===void 0||t.totalChunks===void 0)return{result:t.result,error:t.error};if(t.error)return e.delete(t.requestId),{error:t.error};let n=t.requestId,r=e.get(n);if(r||(r={chunks:Array(t.totalChunks),received:0,totalChunks:t.totalChunks},e.set(n,r)),r.chunks[t.chunkIndex]||(r.chunks[t.chunkIndex]=t.chunkData,r.received++),r.received>=r.totalChunks){e.delete(n);try{return{result:JSON.parse(r.chunks.join(``))}}catch(e){return{error:`Failed to reassemble CDP response: ${e instanceof Error?e.message:String(e)}`}}}return null}var s=32*1024;function c(e,n,r){let i=JSON.stringify({messages:n,scoopJid:r});if(i.length<=65536)return e.send({type:`snapshot`,messages:n,scoopJid:r});let a=Math.ceil(i.length/s),o=!0;for(let n=0;n<a;n++){let c=i.slice(n*s,(n+1)*s);if(!e.send({type:`snapshot_chunk`,chunkData:c,chunkIndex:n,totalChunks:a,scoopJid:r})){o=!1,t.error(`Failed to send snapshot chunk`,{chunkIndex:n,totalChunks:a,totalSize:i.length});break}}return t.debug(`Snapshot sent in chunks`,{totalChunks:a,totalSize:i.length}),o}function l(e,n){if(e||={chunks:Array(n.totalChunks),received:0,totalChunks:n.totalChunks},e.chunks[n.chunkIndex]||(e.chunks[n.chunkIndex]=n.chunkData,e.received++),e.received>=e.totalChunks)try{return{result:JSON.parse(e.chunks.join(``)),buffer:null}}catch(e){return t.error(`Failed to reassemble snapshot`,{error:e instanceof Error?e.message:String(e)}),{result:{messages:[],scoopJid:n.scoopJid},buffer:null}}return{result:null,buffer:e}}var u=class{channel;listeners=[];closed=!1;constructor(e){this.channel=e,this.channel.addEventListener(`message`,e=>{if(!this.closed)try{let t=JSON.parse(e.data);for(let e of this.listeners)e(t)}catch(e){t.warn(`Failed to parse tray sync message`,{error:e instanceof Error?e.message:String(e)})}})}send(e){if(this.closed)return!1;try{return this.channel.send(JSON.stringify(e)),!0}catch(n){return t.error(`Failed to send tray sync message`,{type:e.type,error:n instanceof Error?n.message:String(n)}),!1}}onMessage(e){return this.listeners.push(e),()=>{let t=this.listeners.indexOf(e);t>=0&&this.listeners.splice(t,1)}}close(){this.closed=!0,this.listeners.length=0,this.channel.close()}get isOpen(){return!this.closed&&this.channel.readyState===`open`}};function d(e){return new u(e)}function f(e){return new u(e)}var p=class{sender;timeoutMs;pending=new Map;eventListeners=new Map;chunkBuffers=new Map;_state=`connected`;requestCounter=0;constructor(e,t=3e4){this.sender=e,this.timeoutMs=t}get state(){return this._state}async connect(){}disconnect(){this._state=`disconnected`;for(let[,{reject:e,timer:t}]of this.pending)clearTimeout(t),e(Error(`Transport disconnected`));this.pending.clear()}async send(e,t,n,r){if(this._state===`disconnected`)throw Error(`Transport disconnected`);let i=`remote-${++this.requestCounter}-${Date.now()}`,a=r??this.timeoutMs;return new Promise((r,o)=>{let s=setTimeout(()=>{this.pending.delete(i),o(Error(`Remote CDP request timed out after ${a}ms: ${e}`))},a);this.pending.set(i,{resolve:r,reject:o,timer:s}),this.sender.sendCDPRequest(i,e,t,n)})}on(e,t){let n=this.eventListeners.get(e);n||(n=new Set,this.eventListeners.set(e,n)),n.add(t)}off(e,t){this.eventListeners.get(e)?.delete(t)}once(e,t){return new Promise((n,r)=>{let i=t??this.timeoutMs,a=setTimeout(()=>{this.off(e,o),r(Error(`Remote CDP event timed out: ${e}`))},i),o=t=>{clearTimeout(a),this.off(e,o),n(t)};this.on(e,o)})}handleResponse(e,t,n,r,i,a){let s=this.pending.get(e);if(!s)return;let c=o(this.chunkBuffers,{type:`cdp.response`,requestId:e,result:t,error:n,chunkData:r,chunkIndex:i,totalChunks:a});c&&(this.pending.delete(e),clearTimeout(s.timer),c.error?s.reject(Error(c.error)):s.resolve(c.result??{}))}handleEvent(e,t){let n=this.eventListeners.get(e);if(n)for(let e of n)e(t)}};export{r as a,a as c,d as i,c as l,n,o,f as r,l as s,p as t};
1
+ import{nt as e}from"./main-D7K1MTaQ.js";var t=e(`tray-sync`),n=`slicc-cherry`;function r(e){return typeof e==`object`&&!!e&&e.type===`cherry.host_event`}var i=32*1024;function a(e,t,n,r){if(r||!n)return e.send({type:`cdp.response`,requestId:t,result:n,error:r});let a=JSON.stringify(n);if(a.length<=65536)return e.send({type:`cdp.response`,requestId:t,result:n});let o=Math.ceil(a.length/i),s=!0;for(let n=0;n<o;n++){let r=a.slice(n*i,(n+1)*i);if(!e.send({type:`cdp.response`,requestId:t,chunkData:r,chunkIndex:n,totalChunks:o})){s=!1,e.send({type:`cdp.response`,requestId:t,error:`Failed to send CDP response chunk ${n}/${o} (response was ${a.length} bytes)`});break}}return s}function o(e,t){if(t.chunkIndex===void 0||t.totalChunks===void 0)return{result:t.result,error:t.error};if(t.error)return e.delete(t.requestId),{error:t.error};let n=t.requestId,r=e.get(n);if(r||(r={chunks:Array(t.totalChunks),received:0,totalChunks:t.totalChunks},e.set(n,r)),r.chunks[t.chunkIndex]||(r.chunks[t.chunkIndex]=t.chunkData,r.received++),r.received>=r.totalChunks){e.delete(n);try{return{result:JSON.parse(r.chunks.join(``))}}catch(e){return{error:`Failed to reassemble CDP response: ${e instanceof Error?e.message:String(e)}`}}}return null}var s=32*1024;function c(e,n,r){let i=JSON.stringify({messages:n,scoopJid:r});if(i.length<=65536)return e.send({type:`snapshot`,messages:n,scoopJid:r});let a=Math.ceil(i.length/s),o=!0;for(let n=0;n<a;n++){let c=i.slice(n*s,(n+1)*s);if(!e.send({type:`snapshot_chunk`,chunkData:c,chunkIndex:n,totalChunks:a,scoopJid:r})){o=!1,t.error(`Failed to send snapshot chunk`,{chunkIndex:n,totalChunks:a,totalSize:i.length});break}}return t.debug(`Snapshot sent in chunks`,{totalChunks:a,totalSize:i.length}),o}function l(e,n){if(e||={chunks:Array(n.totalChunks),received:0,totalChunks:n.totalChunks},e.chunks[n.chunkIndex]||(e.chunks[n.chunkIndex]=n.chunkData,e.received++),e.received>=e.totalChunks)try{return{result:JSON.parse(e.chunks.join(``)),buffer:null}}catch(e){return t.error(`Failed to reassemble snapshot`,{error:e instanceof Error?e.message:String(e)}),{result:{messages:[],scoopJid:n.scoopJid},buffer:null}}return{result:null,buffer:e}}var u=class{channel;listeners=[];closed=!1;constructor(e){this.channel=e,this.channel.addEventListener(`message`,e=>{if(!this.closed)try{let t=JSON.parse(e.data);for(let e of this.listeners)e(t)}catch(e){t.warn(`Failed to parse tray sync message`,{error:e instanceof Error?e.message:String(e)})}})}send(e){if(this.closed)return!1;try{return this.channel.send(JSON.stringify(e)),!0}catch(n){return t.error(`Failed to send tray sync message`,{type:e.type,error:n instanceof Error?n.message:String(n)}),!1}}onMessage(e){return this.listeners.push(e),()=>{let t=this.listeners.indexOf(e);t>=0&&this.listeners.splice(t,1)}}close(){this.closed=!0,this.listeners.length=0,this.channel.close()}get isOpen(){return!this.closed&&this.channel.readyState===`open`}};function d(e){return new u(e)}function f(e){return new u(e)}var p=class{sender;timeoutMs;pending=new Map;eventListeners=new Map;chunkBuffers=new Map;_state=`connected`;requestCounter=0;constructor(e,t=3e4){this.sender=e,this.timeoutMs=t}get state(){return this._state}async connect(){}disconnect(){this._state=`disconnected`;for(let[,{reject:e,timer:t}]of this.pending)clearTimeout(t),e(Error(`Transport disconnected`));this.pending.clear()}async send(e,t,n,r){if(this._state===`disconnected`)throw Error(`Transport disconnected`);let i=`remote-${++this.requestCounter}-${Date.now()}`,a=r??this.timeoutMs;return new Promise((r,o)=>{let s=setTimeout(()=>{this.pending.delete(i),o(Error(`Remote CDP request timed out after ${a}ms: ${e}`))},a);this.pending.set(i,{resolve:r,reject:o,timer:s}),this.sender.sendCDPRequest(i,e,t,n)})}on(e,t){let n=this.eventListeners.get(e);n||(n=new Set,this.eventListeners.set(e,n)),n.add(t)}off(e,t){this.eventListeners.get(e)?.delete(t)}once(e,t){return new Promise((n,r)=>{let i=t??this.timeoutMs,a=setTimeout(()=>{this.off(e,o),r(Error(`Remote CDP event timed out: ${e}`))},i),o=t=>{clearTimeout(a),this.off(e,o),n(t)};this.on(e,o)})}handleResponse(e,t,n,r,i,a){let s=this.pending.get(e);if(!s)return;let c=o(this.chunkBuffers,{type:`cdp.response`,requestId:e,result:t,error:n,chunkData:r,chunkIndex:i,totalChunks:a});c&&(this.pending.delete(e),clearTimeout(s.timer),c.error?s.reject(Error(c.error)):s.resolve(c.result??{}))}handleEvent(e,t){let n=this.eventListeners.get(e);if(n)for(let e of n)e(t)}};export{r as a,a as c,d as i,c as l,n,o,f as r,l as s,p as t};