@smart-cloud/ai-kit-core 1.1.2 → 1.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,7 +1,7 @@
1
- "use strict";var _=Object.defineProperty;var Re=Object.getOwnPropertyDescriptor;var Te=Object.getOwnPropertyNames;var Oe=Object.prototype.hasOwnProperty;var P=(e,t)=>()=>(e&&(t=e(e=0)),t);var D=(e,t)=>{for(var r in t)_(e,r,{get:t[r],enumerable:!0})},Be=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of Te(t))!Oe.call(e,a)&&a!==r&&_(e,a,{get:()=>t[a],enumerable:!(n=Re(t,a))||n.enumerable});return e};var Ke=e=>Be(_({},"__esModule",{value:!0}),e);function L(){return globalThis.WpSuite?.plugins?.aiKit}async function q(e=8e3){let t=L();if(t?.status!=="available"){if(t?.status==="error")throw new Error("AiKit failed");await new Promise((r,n)=>{let a=()=>i(r),o=()=>i(()=>n(new Error("AiKit failed"))),i=c=>{window.removeEventListener("wpsuite:ai-kit:ready",a),window.removeEventListener("wpsuite:ai-kit:error",o),u&&clearTimeout(u),c()};window.addEventListener("wpsuite:ai-kit:ready",a,{once:!0}),window.addEventListener("wpsuite:ai-kit:error",o,{once:!0});let u=e?window.setTimeout(()=>i(()=>n(new Error("AiKit timeout"))),e):0})}}async function te(e=1e4){await q(e);let r=L()?.features?.store;if(!r)throw new Error("AiKit store is not available");return r}var H=P(()=>{"use strict"});var re,h,j,G,$,Fe,Ee,Ie,Me,Ue,ae,B,ne,oe,z=P(()=>{"use strict";re=require("@smart-cloud/wpsuite-core"),h=require("@wordpress/data"),j=require("aws-amplify/utils");H();typeof WpSuite<"u"?G=WpSuite.siteSettings:G={};$=e=>{let t=e&&typeof e=="object"?e:{},r={};return typeof t.mode=="string"&&(r.mode=t.mode),typeof t.backendTransport=="string"&&(r.backendTransport=t.backendTransport),typeof t.backendApiName=="string"&&(r.backendApiName=t.backendApiName),typeof t.backendBaseUrl=="string"&&(r.backendBaseUrl=t.backendBaseUrl),typeof t.subscriptionType=="string"&&(r.subscriptionType=t.subscriptionType),r},Fe=async()=>{let e=L();if(!e)throw new Error("AI-Kit plugin is not available");let t=null;return e.settings.customTranslationsUrl&&(t=await fetch(e.settings.customTranslationsUrl+(e.settings.customTranslationsUrl.includes("?")?"&":"?")+"t="+G.lastUpdate).then(r=>r.ok?r.text():null).then(r=>r?JSON.parse(r):null).catch(()=>null)),t??null},Ee=async()=>{let e=$(await(0,re.getConfig)("aiKit")),t=await Fe();return{config:e,showChatbotPreview:!1,language:void 0,direction:void 0,customTranslations:t}},Ie={setShowChatbotPreview(e){return{type:"SET_SHOW_CHATBOT_PREVIEW",showChatbotPreview:e}},setLanguage(e){return!e||e==="system"?j.I18n.setLanguage(""):j.I18n.setLanguage(e),{type:"SET_LANGUAGE",language:e}},setDirection(e){return{type:"SET_DIRECTION",direction:e}}},Me={getConfig(e){return e.config},isShowChatbotPreview(e){return e.showChatbotPreview},getCustomTranslations(e){return e.customTranslations},getLanguage(e){return e.language},getDirection(e){return e.direction},getState(e){return e}},Ue={},ae=e=>(0,h.dispatch)(e),B=e=>(0,h.select)(e),ne=async()=>{let e=await Ee(),t=(0,h.createReduxStore)("wpsuite/ai-kit",{reducer(r=e,n){switch(n.type){case"SET_LANGUAGE":return{...r,language:n.language};case"SET_DIRECTION":return{...r,direction:n.direction};case"SET_SHOW_CHATBOT_PREVIEW":return{...r,showChatbotPreview:n.showChatbotPreview}}return r},actions:Ie,selectors:Me,resolvers:Ue});return(0,h.register)(t),t},oe=(e,t,r)=>{let n;function a(){let i=B(e).getState(),u=t(i);if(u!==n){let c=n;n=u,r(n,c)}}let o=(0,h.subscribe)(a,e);return a(),o}});var v,De,ze,ie=P(()=>{"use strict";v=require("react/jsx-runtime"),De=e=>(0,v.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 48 48",width:"48",height:"48",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",...e,children:[(0,v.jsx)("path",{d:"M19 27H33"}),(0,v.jsx)("path",{d:"M19 33H33"}),(0,v.jsx)("path",{d:"M8 21L9.5 24L12.5 25.5L9.5 27L8 30L6.5 27L3.5 25.5L6.5 24Z"}),(0,v.jsx)("path",{d:"M36 4L38 8L42 10L38 12L36 16L34 12L30 10L34 8Z"}),(0,v.jsx)("path",{d:"M16 10V40H36V22"}),(0,v.jsx)("path",{d:"M16 10H22"}),(0,v.jsx)("path",{d:"M22 10V23H36"}),(0,v.jsx)("path",{d:"M22 10L36 22"})]}),ze=e=>(0,v.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 48 48",width:"48",height:"48",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",...e,children:[(0,v.jsx)("path",{d:"M42 38L34 30H10C7.79086 30 6 28.2091 6 26V8C6 5.79086 7.79086 4 10 4H38C40.2091 4 42 5.79086 42 8V38Z"}),(0,v.jsx)("rect",{x:"14",y:"13",width:"6",height:"6",rx:"1"}),(0,v.jsx)("rect",{x:"28",y:"13",width:"6",height:"6",rx:"1"}),(0,v.jsx)("path",{d:"M16 24H32"})]})});var C,V=P(()=>{"use strict";C=class extends Error{constructor(r,n,a){super(r);this.decision=n;this.status=a;this.name="AiBackendError"}}});var pe={};D(pe,{MIN_CHROME_VERSION:()=>ce,checkOnDeviceAvailability:()=>ge,decideCapability:()=>N,resolveBackend:()=>K});async function ue(){let t=await We?.plugins?.aiKit?.features.store;return B(t).getConfig()??{}}function le(e){let t=e.backendApiName?.trim()||void 0,r=e.backendBaseUrl?.trim()||void 0;return{transport:e.backendTransport??(r?"fetch":t?"gatey":void 0),backendApiName:t,backendBaseUrl:r}}function Ne(e){if(e.mode)return e.mode;let{transport:t}=le(e);return t?"backend-fallback":"local-only"}async function K(){let e=await ue(),{transport:t,backendApiName:r,backendBaseUrl:n}=le(e);if(!t)return{available:!1,reason:"No backend configured"};if(t==="fetch")return n?{available:!0,transport:t,baseUrl:n,reason:"Custom fetch backend"}:{available:!1,reason:"backendBaseUrl is missing"};if(!r)return{available:!1,reason:"backendApiName is missing"};let a=globalThis.WpSuite?.plugins?.gatey;return!a?.availability||await a.availability()!=="available"?{available:!1,reason:"Gatey is not available"}:{available:!0,transport:t,apiName:r,reason:"Gatey backend"}}function S(e){return typeof globalThis[e]<"u"}function de(e){if(!e)return;let t=Number.parseInt(String(e).split(".")[0]??"",10);return Number.isFinite(t)?t:void 0}function W(e,t){return e?.find(r=>r.brand===t)?.version}async function _e(){let e=navigator?.userAgentData;if(e){try{let r=(await e.getHighEntropyValues?.(["fullVersionList"]))?.fullVersionList;if(Array.isArray(r)&&r.length>0)return r}catch{}if(Array.isArray(e.brands)&&e.brands.length>0)return e.brands}}function qe(e){let t=e.match(/\b(?:Chrome|Chromium)\/(\d{2,3})\b/i);return t?.[1]?de(t[1]):void 0}function He(){return!!navigator?.brave}async function je(e){if(typeof navigator>"u")return{allowed:!1,reason:"no-navigator"};if(typeof globalThis.isSecureContext=="boolean"&&!globalThis.isSecureContext)return{allowed:!1,reason:"not-secure-context"};let t=navigator.userAgent??"",r=await _e(),n=W(r,"Microsoft Edge")??W(r,"Microsoft Edge WebView2"),a=W(r,"Google Chrome")??W(r,"Chromium"),o=!!n||/\bEdg\//i.test(t)||/\bEdgiOS\//i.test(t),i=/\bOPR\//i.test(t),u=/\bVivaldi\//i.test(t),c=/\bSamsungBrowser\//i.test(t),s=/\bFirefox\//i.test(t),d=!/\bChrome\//i.test(t)&&/\bSafari\//i.test(t)&&!/\bChromium\//i.test(t),g=He()||/\bBrave\//i.test(t);if(o||i||u||c||s||d||g)return{allowed:!1,reason:o?"edge":g?"brave":s?"firefox":d?"safari":i?"opera":u?"vivaldi":c?"samsung":"unsupported-browser"};let y=de(a)??qe(t),p=ce[e];return p?y?y<p?{allowed:!1,reason:`chrome-too-old-${y}-lt-${p}`,chromeMajor:y}:{allowed:!0,reason:"ok",chromeMajor:y}:{allowed:!1,reason:"unknown-chrome-version"}:{allowed:!1,reason:"no-min-version",chromeMajor:y}}async function ge(e,t){try{let r=await je(e),n=`browser-gate:${r.reason}${r.chromeMajor?` (chrome ${r.chromeMajor})`:""}`;if(!r.allowed)return{available:!1,status:"unavailable",reason:n};switch(e){case"writer":{if(!S("Writer")||!Writer?.availability)return{available:!1,status:"api-not-present",reason:n};let a=await Writer.availability(t);return{available:a!=="unavailable",status:a,reason:n}}case"rewriter":{if(!S("Rewriter")||!Rewriter?.availability)return{available:!1,status:"api-not-present",reason:n};let a=await Rewriter.availability(t);return{available:a!=="unavailable",status:a,reason:n}}case"summarizer":{if(!S("Summarizer")||!Summarizer?.availability)return{available:!1,status:"api-not-present",reason:n};let a=await Summarizer.availability(t);return{available:a!=="unavailable",status:a,reason:n}}case"proofreader":{if(!S("Proofreader")||!Proofreader?.availability)return{available:!1,status:"api-not-present",reason:n};let a=await Proofreader.availability(t);return{available:a!=="unavailable",status:a,reason:n}}case"language-detector":{if(!S("LanguageDetector")||!LanguageDetector?.availability)return{available:!1,status:"api-not-present",reason:n};let a=await LanguageDetector.availability(t);return{available:a!=="unavailable",status:a,reason:n}}case"translator":{if(!S("Translator")||!Translator?.availability)return{available:!1,status:"api-not-present",reason:n};let a=t;if(!a?.sourceLanguage||!a?.targetLanguage)return{available:!1,status:"error",reason:n,error:new Error("Translator.availability requires sourceLanguage/targetLanguage")};let o=await Translator.availability({...a,sourceLanguage:a.sourceLanguage==="auto"?"en":a.sourceLanguage,targetLanguage:a.sourceLanguage==="auto"||a.sourceLanguage===a.targetLanguage?"hu":a.targetLanguage});return{available:o!=="unavailable",status:o,reason:n}}case"prompt":{if(!S("LanguageModel")||!LanguageModel?.availability)return{available:!1,status:"api-not-present",reason:n};let a=await LanguageModel.availability(t);return{available:a!=="unavailable",status:a,reason:n}}default:return{available:!1,status:"unknown-feature",reason:n}}}catch(r){return{available:!1,status:"error",reason:"exception in availability()",error:r}}}async function N(e,t,r){let n=await ue(),a=r||Ne(n),o=await K(),i=await ge(e,t),u=i.available,c=o.available,s={feature:e,mode:a,onDeviceAvailable:u,onDeviceStatus:i.status,onDeviceReason:i.reason,backendAvailable:c,backendTransport:o.transport,backendApiName:o.apiName,backendBaseUrl:o.baseUrl,backendReason:o.reason};return a==="local-only"?u?{...s,source:"on-device",reason:`local-only: on-device available (${i.reason??i.status})`}:{...s,source:"none",reason:`local-only: on-device unavailable (${i.reason??i.status})`}:a==="backend-only"?c?{...s,source:"backend",reason:`backend-only: backend available (${o.reason??"n/a"})`}:{...s,source:"none",reason:`backend-only: backend unavailable (${o.reason??"n/a"})`}:u?{...s,source:"on-device",reason:`backend-fallback: using on-device (${i.reason??i.status})`}:c?{...s,source:"backend",reason:`backend-fallback: using backend (${o.reason??"n/a"}; on-device: ${i.reason??i.status})`}:{...s,source:"none",reason:`No on-device AI or backend available (on-device: ${i.reason??i.status}; backend: ${o.reason??"n/a"})`}}var se,We,ce,X=P(()=>{"use strict";se=require("@smart-cloud/wpsuite-core");z();We=(0,se.getWpSuite)();ce={summarizer:138,translator:138,"language-detector":138,writer:137,rewriter:137,proofreader:141,prompt:138}});var fe={};D(fe,{dispatchBackend:()=>E,withRecaptchaHeaders:()=>F});function Ge(){return globalThis.WpSuite?.plugins?.aiKit?.settings??{}}async function $e(e){if(e!=="frontend")return;let t=Ge();if(!t?.reCaptchaSiteKey)return;let{execute:r}=await(0,me.getRecaptcha)(t?.useRecaptchaEnterprise||!1);if(typeof r=="function")try{let a=await r(t.reCaptchaSiteKey,{action:"generate"});return typeof a=="string"&&a?a:void 0}catch{return}}async function F(e,t){if(e!=="frontend"||t["X-Recaptcha-Token"]||t["x-recaptcha-token"])return t;let r=await $e(e);return r?{...t,"X-Recaptcha-Token":r}:t}function O(e,t){try{e?.onStatus?.(t)}catch{}}function Ve(e){return typeof e=="object"&&e!==null&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null)}function Je(e,t){if(!Ve(t))return t;let r=Xe[e];if(!r)return t;let n={};for(let a of r)a in t&&(n[a]=t[a]);return n}function Ye(e,t){return(e==="admin"?Ze:Qe)[t]}async function E(e,t,r,n,a={}){let o=Ye(t,r),i=Je(r,n);if(!o)throw new C(`No backend path configured for "${r}" (${t}).`,e);if(e.backendTransport==="fetch"){if(!e.backendBaseUrl)throw new C("backendTransport=fetch but backendBaseUrl is missing.",e);return et(e.backendBaseUrl,o,i,a,e,r,t)}if(!e.backendApiName)throw new C("backendTransport=gatey but backendApiName is missing.",e);return tt(e.backendApiName,o,i,a,e,r,t)}async function et(e,t,r,n,a,o,i){let u=`${e.replace(/\/+$/,"")}${t}`,c={"content-type":"application/json",...n.headers??{}},s=await F(i,c),d=n.query&&Object.keys(n.query).length>0?"?"+new URLSearchParams(Object.entries(n.query).map(([p,w])=>[p,String(w)])).toString():"";O(n,{feature:o,context:i,step:"backend:request",source:"backend"}),O(n,{feature:o,context:i,step:"backend:waiting",source:"backend"});let g=await fetch(u+d,{method:"POST",headers:s,body:JSON.stringify(r??{}),signal:n.signal,credentials:"omit"});if(O(n,{feature:o,context:i,step:"backend:response",source:"backend"}),!g.ok){let p=`HTTP ${g.status}`;try{let w=await g.text();w&&(p=`${p}: ${w.substring(0,400)}`)}catch{}throw new C(`Fetch backend call failed: ${p}`,a,g.status)}return(g.headers.get("content-type")||"").includes("application/json")?await g.json():await g.text()}async function tt(e,t,r,n,a,o,i){let c=globalThis.WpSuite?.plugins?.gatey;if(!c?.cognito?.post)throw new C("Gatey backend selected, but Gatey.cognito.post is not available.",a);let s=await F(i,{...n.headers??{}});O(n,{feature:o,context:i,step:"backend:request",source:"backend"}),O(n,{feature:o,context:i,step:"backend:waiting",source:"backend"});let d=c.cognito.post({apiName:e,path:t,options:{body:r,headers:s}});n?.signal?.addEventListener?.("abort",()=>{d.cancel()});let g=await d.response.then(y=>y.body.json());return O(n,{feature:o,context:i,step:"backend:response",source:"backend"}),g}var me,Xe,Ze,Qe,J=P(()=>{"use strict";me=require("@smart-cloud/wpsuite-core");V();Xe={prompt:["text","systemPrompt","context","responseConstraint","sessionId","images","imageUrls","feedbackMessageId","feedbackType","knowledgeBaseId","disableKB","enableRerank","kb_filters"],writer:["text","outputLanguage","instruction","context","tone","format","length","knowledgeBaseId","disableKB"],rewriter:["text","outputLanguage","instruction","context","tone","format","length"],summarizer:["text","outputLanguage","instruction","context","type","format","length"],translator:["text","sourceLanguage","targetLanguage"],"language-detector":["text","maxCandidates"],proofreader:["text","expectedInputLanguages"]};Ze={prompt:"/admin/prompt",writer:"/admin/write",rewriter:"/admin/rewrite",summarizer:"/admin/summarize",translator:"/admin/translate","language-detector":"/admin/detect-language",proofreader:"/admin/proofread"},Qe={prompt:"/frontend/prompt",writer:"/frontend/write",rewriter:"/frontend/rewrite",summarizer:"/frontend/summarize",translator:"/frontend/translate","language-detector":"/frontend/detect-language",proofreader:"/frontend/proofread"}});var xe={};D(xe,{detectLanguage:()=>ft,getPromptOptions:()=>Pe,getProofreadOptions:()=>ke,getRewriteOptions:()=>ve,getSummarizeOptions:()=>he,getTranslateOptions:()=>Ce,getWriteOptions:()=>we,prompt:()=>xt,proofread:()=>pt,rewrite:()=>gt,sendChatMessage:()=>Lt,sendFeedbackMessage:()=>St,summarize:()=>mt,translate:()=>U,write:()=>dt});function A(){return(ye?.plugins?.aiKit?.settings??{}).defaultOutputLanguage??"en"}function I(e){let t=["en","ja","es"],r=e.toLowerCase();return t.some(n=>r===n.toLowerCase())}function l(e,t,r,n){try{r?.onStatus?.({feature:e,context:t,...n})}catch{}}function M(){return ye?.plugins?.aiKit?.settings?.sharedContext??void 0}function R(e){return e?.context??"admin"}function Z(e){let t=e;return{knowledgeBaseId:typeof t.knowledgeBaseId=="string"?t.knowledgeBaseId:void 0,disableKB:typeof t.disableKB=="boolean"?t.disableKB:void 0}}async function rt(e,t,r,n){let a=Z(e),o=await Ae(e.images,r,t,n);return{text:e.messages.filter(i=>i.role==="user").map(i=>i.content).join(`
1
+ "use strict";var _=Object.defineProperty;var Re=Object.getOwnPropertyDescriptor;var Te=Object.getOwnPropertyNames;var Oe=Object.prototype.hasOwnProperty;var P=(e,t)=>()=>(e&&(t=e(e=0)),t);var D=(e,t)=>{for(var r in t)_(e,r,{get:t[r],enumerable:!0})},Be=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of Te(t))!Oe.call(e,a)&&a!==r&&_(e,a,{get:()=>t[a],enumerable:!(n=Re(t,a))||n.enumerable});return e};var Ke=e=>Be(_({},"__esModule",{value:!0}),e);function L(){return globalThis.WpSuite?.plugins?.aiKit}async function q(e=8e3){let t=L();if(t?.status!=="available"){if(t?.status==="error")throw new Error("AiKit failed");await new Promise((r,n)=>{let a=()=>i(r),o=()=>i(()=>n(new Error("AiKit failed"))),i=c=>{window.removeEventListener("wpsuite:ai-kit:ready",a),window.removeEventListener("wpsuite:ai-kit:error",o),u&&clearTimeout(u),c()};window.addEventListener("wpsuite:ai-kit:ready",a,{once:!0}),window.addEventListener("wpsuite:ai-kit:error",o,{once:!0});let u=e?window.setTimeout(()=>i(()=>n(new Error("AiKit timeout"))),e):0})}}async function te(e=1e4){await q(e);let r=L()?.features?.store;if(!r)throw new Error("AiKit store is not available");return r}var H=P(()=>{"use strict"});var re,k,j,G,$,Fe,Ee,Ie,Me,Ue,ae,B,ne,oe,z=P(()=>{"use strict";re=require("@smart-cloud/wpsuite-core"),k=require("@wordpress/data"),j=require("aws-amplify/utils");H();typeof WpSuite<"u"?G=WpSuite.siteSettings:G={};$=e=>{let t=e&&typeof e=="object"?e:{},r={};return typeof t.mode=="string"&&(r.mode=t.mode),typeof t.backendTransport=="string"&&(r.backendTransport=t.backendTransport),typeof t.backendApiName=="string"&&(r.backendApiName=t.backendApiName),typeof t.backendBaseUrl=="string"&&(r.backendBaseUrl=t.backendBaseUrl),typeof t.subscriptionType=="string"&&(r.subscriptionType=t.subscriptionType),typeof t.enableChatbot=="boolean"&&(r.enableChatbot=t.enableChatbot),typeof t.chatbot=="object"&&t.chatbot!==null&&(r.chatbot=t.chatbot),r},Fe=async()=>{let e=L();if(!e)throw new Error("AI-Kit plugin is not available");let t=null;return e.settings.customTranslationsUrl&&(t=await fetch(e.settings.customTranslationsUrl+(e.settings.customTranslationsUrl.includes("?")?"&":"?")+"t="+G.lastUpdate).then(r=>r.ok?r.text():null).then(r=>r?JSON.parse(r):null).catch(()=>null)),t??null},Ee=async()=>{let e=$(await(0,re.getConfig)("aiKit")),t=await Fe();return{config:e,showChatbotPreview:!1,language:void 0,direction:void 0,customTranslations:t}},Ie={setShowChatbotPreview(e){return{type:"SET_SHOW_CHATBOT_PREVIEW",showChatbotPreview:e}},setLanguage(e){return!e||e==="system"?j.I18n.setLanguage(""):j.I18n.setLanguage(e),{type:"SET_LANGUAGE",language:e}},setDirection(e){return{type:"SET_DIRECTION",direction:e}}},Me={getConfig(e){return e.config},isShowChatbotPreview(e){return e.showChatbotPreview},getCustomTranslations(e){return e.customTranslations},getLanguage(e){return e.language},getDirection(e){return e.direction},getState(e){return e}},Ue={},ae=e=>(0,k.dispatch)(e),B=e=>(0,k.select)(e),ne=async()=>{let e=await Ee(),t=(0,k.createReduxStore)("wpsuite/ai-kit",{reducer(r=e,n){switch(n.type){case"SET_LANGUAGE":return{...r,language:n.language};case"SET_DIRECTION":return{...r,direction:n.direction};case"SET_SHOW_CHATBOT_PREVIEW":return{...r,showChatbotPreview:n.showChatbotPreview}}return r},actions:Ie,selectors:Me,resolvers:Ue});return(0,k.register)(t),t},oe=(e,t,r)=>{let n;function a(){let i=B(e).getState(),u=t(i);if(u!==n){let c=n;n=u,r(n,c)}}let o=(0,k.subscribe)(a,e);return a(),o}});var v,De,ze,ie=P(()=>{"use strict";v=require("react/jsx-runtime"),De=e=>(0,v.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 48 48",width:"48",height:"48",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",...e,children:[(0,v.jsx)("path",{d:"M19 27H33"}),(0,v.jsx)("path",{d:"M19 33H33"}),(0,v.jsx)("path",{d:"M8 21L9.5 24L12.5 25.5L9.5 27L8 30L6.5 27L3.5 25.5L6.5 24Z"}),(0,v.jsx)("path",{d:"M36 4L38 8L42 10L38 12L36 16L34 12L30 10L34 8Z"}),(0,v.jsx)("path",{d:"M16 10V40H36V22"}),(0,v.jsx)("path",{d:"M16 10H22"}),(0,v.jsx)("path",{d:"M22 10V23H36"}),(0,v.jsx)("path",{d:"M22 10L36 22"})]}),ze=e=>(0,v.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 48 48",width:"48",height:"48",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",...e,children:[(0,v.jsx)("path",{d:"M42 38L34 30H10C7.79086 30 6 28.2091 6 26V8C6 5.79086 7.79086 4 10 4H38C40.2091 4 42 5.79086 42 8V38Z"}),(0,v.jsx)("rect",{x:"14",y:"13",width:"6",height:"6",rx:"1"}),(0,v.jsx)("rect",{x:"28",y:"13",width:"6",height:"6",rx:"1"}),(0,v.jsx)("path",{d:"M16 24H32"})]})});var C,V=P(()=>{"use strict";C=class extends Error{constructor(r,n,a){super(r);this.decision=n;this.status=a;this.name="AiBackendError"}}});var pe={};D(pe,{MIN_CHROME_VERSION:()=>ce,checkOnDeviceAvailability:()=>ge,decideCapability:()=>N,resolveBackend:()=>K});async function ue(){let t=await We?.plugins?.aiKit?.features.store;return B(t).getConfig()??{}}function le(e){let t=e.backendApiName?.trim()||void 0,r=e.backendBaseUrl?.trim()||void 0;return{transport:e.backendTransport??(r?"fetch":t?"gatey":void 0),backendApiName:t,backendBaseUrl:r}}function Ne(e){if(e.mode)return e.mode;let{transport:t}=le(e);return t?"backend-fallback":"local-only"}async function K(){let e=await ue(),{transport:t,backendApiName:r,backendBaseUrl:n}=le(e);if(!t)return{available:!1,reason:"No backend configured"};if(t==="fetch")return n?{available:!0,transport:t,baseUrl:n,reason:"Custom fetch backend"}:{available:!1,reason:"backendBaseUrl is missing"};if(!r)return{available:!1,reason:"backendApiName is missing"};let a=globalThis.WpSuite?.plugins?.gatey;return!a?.availability||await a.availability()!=="available"?{available:!1,reason:"Gatey is not available"}:{available:!0,transport:t,apiName:r,reason:"Gatey backend"}}function S(e){return typeof globalThis[e]<"u"}function de(e){if(!e)return;let t=Number.parseInt(String(e).split(".")[0]??"",10);return Number.isFinite(t)?t:void 0}function W(e,t){return e?.find(r=>r.brand===t)?.version}async function _e(){let e=navigator?.userAgentData;if(e){try{let r=(await e.getHighEntropyValues?.(["fullVersionList"]))?.fullVersionList;if(Array.isArray(r)&&r.length>0)return r}catch{}if(Array.isArray(e.brands)&&e.brands.length>0)return e.brands}}function qe(e){let t=e.match(/\b(?:Chrome|Chromium)\/(\d{2,3})\b/i);return t?.[1]?de(t[1]):void 0}function He(){return!!navigator?.brave}async function je(e){if(typeof navigator>"u")return{allowed:!1,reason:"no-navigator"};if(typeof globalThis.isSecureContext=="boolean"&&!globalThis.isSecureContext)return{allowed:!1,reason:"not-secure-context"};let t=navigator.userAgent??"",r=await _e(),n=W(r,"Microsoft Edge")??W(r,"Microsoft Edge WebView2"),a=W(r,"Google Chrome")??W(r,"Chromium"),o=!!n||/\bEdg\//i.test(t)||/\bEdgiOS\//i.test(t),i=/\bOPR\//i.test(t),u=/\bVivaldi\//i.test(t),c=/\bSamsungBrowser\//i.test(t),s=/\bFirefox\//i.test(t),d=!/\bChrome\//i.test(t)&&/\bSafari\//i.test(t)&&!/\bChromium\//i.test(t),g=He()||/\bBrave\//i.test(t);if(o||i||u||c||s||d||g)return{allowed:!1,reason:o?"edge":g?"brave":s?"firefox":d?"safari":i?"opera":u?"vivaldi":c?"samsung":"unsupported-browser"};let y=de(a)??qe(t),p=ce[e];return p?y?y<p?{allowed:!1,reason:`chrome-too-old-${y}-lt-${p}`,chromeMajor:y}:{allowed:!0,reason:"ok",chromeMajor:y}:{allowed:!1,reason:"unknown-chrome-version"}:{allowed:!1,reason:"no-min-version",chromeMajor:y}}async function ge(e,t){try{let r=await je(e),n=`browser-gate:${r.reason}${r.chromeMajor?` (chrome ${r.chromeMajor})`:""}`;if(!r.allowed)return{available:!1,status:"unavailable",reason:n};switch(e){case"writer":{if(!S("Writer")||!Writer?.availability)return{available:!1,status:"api-not-present",reason:n};let a=await Writer.availability(t);return{available:a!=="unavailable",status:a,reason:n}}case"rewriter":{if(!S("Rewriter")||!Rewriter?.availability)return{available:!1,status:"api-not-present",reason:n};let a=await Rewriter.availability(t);return{available:a!=="unavailable",status:a,reason:n}}case"summarizer":{if(!S("Summarizer")||!Summarizer?.availability)return{available:!1,status:"api-not-present",reason:n};let a=await Summarizer.availability(t);return{available:a!=="unavailable",status:a,reason:n}}case"proofreader":{if(!S("Proofreader")||!Proofreader?.availability)return{available:!1,status:"api-not-present",reason:n};let a=await Proofreader.availability(t);return{available:a!=="unavailable",status:a,reason:n}}case"language-detector":{if(!S("LanguageDetector")||!LanguageDetector?.availability)return{available:!1,status:"api-not-present",reason:n};let a=await LanguageDetector.availability(t);return{available:a!=="unavailable",status:a,reason:n}}case"translator":{if(!S("Translator")||!Translator?.availability)return{available:!1,status:"api-not-present",reason:n};let a=t;if(!a?.sourceLanguage||!a?.targetLanguage)return{available:!1,status:"error",reason:n,error:new Error("Translator.availability requires sourceLanguage/targetLanguage")};let o=await Translator.availability({...a,sourceLanguage:a.sourceLanguage==="auto"?"en":a.sourceLanguage,targetLanguage:a.sourceLanguage==="auto"||a.sourceLanguage===a.targetLanguage?"hu":a.targetLanguage});return{available:o!=="unavailable",status:o,reason:n}}case"prompt":{if(!S("LanguageModel")||!LanguageModel?.availability)return{available:!1,status:"api-not-present",reason:n};let a=await LanguageModel.availability(t);return{available:a!=="unavailable",status:a,reason:n}}default:return{available:!1,status:"unknown-feature",reason:n}}}catch(r){return{available:!1,status:"error",reason:"exception in availability()",error:r}}}async function N(e,t,r){let n=await ue(),a=r||Ne(n),o=await K(),i=await ge(e,t),u=i.available,c=o.available,s={feature:e,mode:a,onDeviceAvailable:u,onDeviceStatus:i.status,onDeviceReason:i.reason,backendAvailable:c,backendTransport:o.transport,backendApiName:o.apiName,backendBaseUrl:o.baseUrl,backendReason:o.reason};return a==="local-only"?u?{...s,source:"on-device",reason:`local-only: on-device available (${i.reason??i.status})`}:{...s,source:"none",reason:`local-only: on-device unavailable (${i.reason??i.status})`}:a==="backend-only"?c?{...s,source:"backend",reason:`backend-only: backend available (${o.reason??"n/a"})`}:{...s,source:"none",reason:`backend-only: backend unavailable (${o.reason??"n/a"})`}:u?{...s,source:"on-device",reason:`backend-fallback: using on-device (${i.reason??i.status})`}:c?{...s,source:"backend",reason:`backend-fallback: using backend (${o.reason??"n/a"}; on-device: ${i.reason??i.status})`}:{...s,source:"none",reason:`No on-device AI or backend available (on-device: ${i.reason??i.status}; backend: ${o.reason??"n/a"})`}}var se,We,ce,X=P(()=>{"use strict";se=require("@smart-cloud/wpsuite-core");z();We=(0,se.getWpSuite)();ce={summarizer:138,translator:138,"language-detector":138,writer:137,rewriter:137,proofreader:141,prompt:138}});var fe={};D(fe,{dispatchBackend:()=>E,withRecaptchaHeaders:()=>F});function Ge(){return globalThis.WpSuite?.plugins?.aiKit?.settings??{}}async function $e(e){if(e!=="frontend")return;let t=Ge();if(!t?.reCaptchaSiteKey)return;let{execute:r}=await(0,me.getRecaptcha)(t?.useRecaptchaEnterprise||!1);if(typeof r=="function")try{let a=await r(t.reCaptchaSiteKey,{action:"generate"});return typeof a=="string"&&a?a:void 0}catch{return}}async function F(e,t){if(e!=="frontend"||t["X-Recaptcha-Token"]||t["x-recaptcha-token"])return t;let r=await $e(e);return r?{...t,"X-Recaptcha-Token":r}:t}function O(e,t){try{e?.onStatus?.(t)}catch{}}function Ve(e){return typeof e=="object"&&e!==null&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null)}function Je(e,t){if(!Ve(t))return t;let r=Xe[e];if(!r)return t;let n={};for(let a of r)a in t&&(n[a]=t[a]);return n}function Ye(e,t){return(e==="admin"?Ze:Qe)[t]}async function E(e,t,r,n,a={}){let o=Ye(t,r),i=Je(r,n);if(!o)throw new C(`No backend path configured for "${r}" (${t}).`,e);if(e.backendTransport==="fetch"){if(!e.backendBaseUrl)throw new C("backendTransport=fetch but backendBaseUrl is missing.",e);return et(e.backendBaseUrl,o,i,a,e,r,t)}if(!e.backendApiName)throw new C("backendTransport=gatey but backendApiName is missing.",e);return tt(e.backendApiName,o,i,a,e,r,t)}async function et(e,t,r,n,a,o,i){let u=`${e.replace(/\/+$/,"")}${t}`,c={"content-type":"application/json",...n.headers??{}},s=await F(i,c),d=n.query&&Object.keys(n.query).length>0?"?"+new URLSearchParams(Object.entries(n.query).map(([p,w])=>[p,String(w)])).toString():"";O(n,{feature:o,context:i,step:"backend:request",source:"backend"}),O(n,{feature:o,context:i,step:"backend:waiting",source:"backend"});let g=await fetch(u+d,{method:"POST",headers:s,body:JSON.stringify(r??{}),signal:n.signal,credentials:"omit"});if(O(n,{feature:o,context:i,step:"backend:response",source:"backend"}),!g.ok){let p=`HTTP ${g.status}`;try{let w=await g.text();w&&(p=`${p}: ${w.substring(0,400)}`)}catch{}throw new C(`Fetch backend call failed: ${p}`,a,g.status)}return(g.headers.get("content-type")||"").includes("application/json")?await g.json():await g.text()}async function tt(e,t,r,n,a,o,i){let c=globalThis.WpSuite?.plugins?.gatey;if(!c?.cognito?.post)throw new C("Gatey backend selected, but Gatey.cognito.post is not available.",a);let s=await F(i,{...n.headers??{}});O(n,{feature:o,context:i,step:"backend:request",source:"backend"}),O(n,{feature:o,context:i,step:"backend:waiting",source:"backend"});let d=c.cognito.post({apiName:e,path:t,options:{body:r,headers:s}});n?.signal?.addEventListener?.("abort",()=>{d.cancel()});let g=await d.response.then(y=>y.body.json());return O(n,{feature:o,context:i,step:"backend:response",source:"backend"}),g}var me,Xe,Ze,Qe,J=P(()=>{"use strict";me=require("@smart-cloud/wpsuite-core");V();Xe={prompt:["text","systemPrompt","context","responseConstraint","sessionId","images","imageUrls","feedbackMessageId","feedbackType","knowledgeBaseId","disableKB","enableRerank","kb_filters"],writer:["text","outputLanguage","instruction","context","tone","format","length","knowledgeBaseId","disableKB"],rewriter:["text","outputLanguage","instruction","context","tone","format","length"],summarizer:["text","outputLanguage","instruction","context","type","format","length"],translator:["text","sourceLanguage","targetLanguage"],"language-detector":["text","maxCandidates"],proofreader:["text","expectedInputLanguages"]};Ze={prompt:"/admin/prompt",writer:"/admin/write",rewriter:"/admin/rewrite",summarizer:"/admin/summarize",translator:"/admin/translate","language-detector":"/admin/detect-language",proofreader:"/admin/proofread"},Qe={prompt:"/frontend/prompt",writer:"/frontend/write",rewriter:"/frontend/rewrite",summarizer:"/frontend/summarize",translator:"/frontend/translate","language-detector":"/frontend/detect-language",proofreader:"/frontend/proofread"}});var xe={};D(xe,{detectLanguage:()=>ft,getPromptOptions:()=>Pe,getProofreadOptions:()=>he,getRewriteOptions:()=>ve,getSummarizeOptions:()=>ke,getTranslateOptions:()=>Ce,getWriteOptions:()=>we,prompt:()=>xt,proofread:()=>pt,rewrite:()=>gt,sendChatMessage:()=>Lt,sendFeedbackMessage:()=>St,summarize:()=>mt,translate:()=>U,write:()=>dt});function A(){return(ye?.plugins?.aiKit?.settings??{}).defaultOutputLanguage??"en"}function I(e){let t=["en","ja","es"],r=e.toLowerCase();return t.some(n=>r===n.toLowerCase())}function l(e,t,r,n){try{r?.onStatus?.({feature:e,context:t,...n})}catch{}}function M(){return ye?.plugins?.aiKit?.settings?.sharedContext??void 0}function R(e){return e?.context??"admin"}function Z(e){let t=e;return{knowledgeBaseId:typeof t.knowledgeBaseId=="string"?t.knowledgeBaseId:void 0,disableKB:typeof t.disableKB=="boolean"?t.disableKB:void 0}}async function rt(e,t,r,n){let a=Z(e),o=await Ae(e.images,r,t,n);return{text:e.messages.filter(i=>i.role==="user").map(i=>i.content).join(`
2
2
  `),systemPrompt:e.messages.filter(i=>i.role==="system").map(i=>i.content).join(`
3
- `),images:o?.images,imageUrls:o?.imageUrls,context:e.sharedContext,saveChatSession:!1,responseConstraint:e.responseConstraint,...a}}async function at(e,t,r){let n=Z(e),a=await Ae(e.images,t,"frontend",r);return{sessionId:e.sessionId,text:e.message,images:a?.images,imageUrls:a?.imageUrls,context:e.sharedContext,saveChatSession:!0,...n}}async function nt(e){return{sessionId:e.sessionId,feedbackMessageId:e.feedbackMessageId,feedbackType:e.feedbackType,saveChatSession:!0}}function ot(e){let t=Z(e);return{text:e.prompt,outputLanguage:e.outputLanguage,instruction:e.context?.trim()?e.context.trim():void 0,context:e.sharedContext,tone:e.tone,format:e.format,length:e.length,...t}}function it(e){return{text:e.text,outputLanguage:e.outputLanguage,instruction:e.context?.trim()?e.context.trim():void 0,context:e.sharedContext,tone:e.tone,format:e.format,length:e.length}}function st(e){return{text:e.text,outputLanguage:e.outputLanguage,instruction:e.context?.trim()?e.context.trim():void 0,context:e.sharedContext,type:e.type,format:e.format,length:e.length}}function ut(e,t,r){return{text:e,sourceLanguage:t,targetLanguage:r}}function lt(e,t){let r=t;return{text:e,maxCandidates:typeof r?.maxCandidates=="number"?r.maxCandidates:void 0}}function ct(e){return{text:e.text,expectedInputLanguages:e.expectedInputLanguages}}async function T(e,t,r,n,a,o,i){l(r,e,i,{step:"decide",message:"Deciding capability"});let u=await N(r,n,t);if(l(r,e,i,{step:"decide",source:u.source,message:`Using ${u.source}`}),u.source==="on-device")try{l(r,e,i,{step:"on-device:init",source:"on-device"});let c=await a();return l(r,e,i,{step:"done",source:"on-device"}),c}catch(c){console.error(`Error in on-device ${r}:`,c),l(r,e,i,{step:"error",source:"on-device",message:c.message}),i?.signal?.throwIfAborted()}if(u.mode!=="local-only"&&u.backendAvailable){l(r,e,i,{step:"backend:request",source:"backend"});let c=typeof o=="function"?await o(u):o,s=await E(u,e,r,c,i);return l(r,e,i,{step:"done",source:"backend"}),s}throw new Error(`No capability for "${r}" (${e}). Reason: ${u.reason}`)}function bt(e){let t=Array.isArray(e.images)&&e.images.length>0,r=e.images??[],n=t?r.map(o=>({type:"image",value:o})):[],a;if(typeof e.messages=="string")a=t?[{role:"user",content:[{type:"text",value:e.messages},...n]}]:e.messages;else{let o=e.messages.filter(i=>i.role!=="system").map(i=>({role:i.role==="assistant"?"assistant":"user",content:i.content}));if(t){let i=-1;for(let u=o.length-1;u>=0;u--)if(o[u].role==="user"){i=u;break}if(i===-1)o.push({role:"user",content:[{type:"text",value:""},...n]});else{let u=String(o[i].content??"");o[i]={...o[i],content:[{type:"text",value:u},...n]}}}a=o}return a}function wt(e){return typeof Blob<"u"&&e instanceof Blob}function vt(e){let t=(e??"").toLowerCase();return t.includes("png")?"png":t.includes("webp")?"webp":t.includes("gif")?"gif":t.includes("bmp")?"bmp":"jpg"}function kt(e){let t=(e??"").toLowerCase();return t.includes("png")?"png":t.includes("webp")?"webp":t.includes("gif")?"gif":"jpeg"}async function ht(e){return new Promise((t,r)=>{let n=new FileReader;n.onerror=()=>r(n.error??new Error("FileReader error")),n.onload=()=>t(String(n.result??"")),n.readAsDataURL(e)})}async function Ct(e){let t=await ht(e),r=t.indexOf(",");return r>=0?t.substring(r+1):t}async function At(e,t,r,n,a,o){let i=t==="admin"?"/admin/generate-upload-url":"/frontend/generate-upload-url",u={...o?.headers??{}},c=await F(t,u);if(e.backendTransport==="fetch"){if(!e.backendBaseUrl)throw new Error("backendBaseUrl missing for fetch transport");let p=new URLSearchParams({fileName:r,contentType:n,contentLength:String(a)}).toString(),w=`${e.backendBaseUrl.replace(/\/+$/,"")}${i}?${p}`,k=await fetch(w,{method:"GET",headers:c,signal:o?.signal,credentials:"omit"});if(!k.ok){let ee=await k.text().catch(()=>"");throw new Error(`generate-upload-url failed (fetch): HTTP ${k.status}${ee?": "+ee.substring(0,200):""}`)}let x=await k.json();if(!x?.uploadUrl||!x?.imageKey)throw new Error("generate-upload-url response missing uploadUrl/imageKey");return{uploadUrl:x.uploadUrl,imageKey:x.imageKey}}if(!e.backendApiName)throw new Error("backendApiName missing for gatey transport");let s=globalThis.WpSuite?.plugins?.gatey,d={fileName:r,contentType:n,contentLength:a};if(s?.cognito?.get){let p=await s.cognito.get({apiName:e.backendApiName,path:i,options:{queryParams:Object.keys(d).reduce((k,x)=>(k[x]=String(d[x]),k),{}),headers:c}});o?.signal?.addEventListener?.("abort",()=>{p.cancel()});let w=await p.response.then(k=>k.body.json());if(!w?.uploadUrl||!w?.imageKey)throw new Error("generate-upload-url (gatey get) response missing uploadUrl/imageKey");return{uploadUrl:w.uploadUrl,imageKey:w.imageKey}}if(!s?.cognito?.post)throw new Error("Gatey.cognito.post is not available");let g=s.cognito.post({apiName:e.backendApiName,path:i,options:{body:d,headers:c}});o?.signal?.addEventListener?.("abort",()=>{g.cancel()});let y=await g.response.then(p=>p.body.json());if(!y?.uploadUrl||!y?.imageKey)throw new Error("generate-upload-url (gatey post) response missing uploadUrl/imageKey");return{uploadUrl:y.uploadUrl,imageKey:y.imageKey}}async function Pt(e,t,r,n){let a=await fetch(e,{method:"PUT",headers:{"Content-Type":r||"application/octet-stream"},body:t,signal:n?.signal});if(!a.ok){let o=await a.text().catch(()=>"");throw new Error(`S3 upload failed: HTTP ${a.status}${o?": "+o.substring(0,200):""}`)}}async function Ae(e,t,r,n){if(!e||e.length===0)return;let a=[];for(let s of e){if(!wt(s))throw new Error("Backend multimodal prompting currently supports only Blob/File inputs for images.");a.push(s)}let o=a.reduce((s,d)=>s+(d.size||0),0);if(Math.ceil(o*1.37+2048*a.length)<=yt){l("prompt",r,n,{step:"backend:request",source:"backend",message:"Inlining images as base64"});let s=[];for(let d of a)s.push({format:kt(d.type),data:await Ct(d)});return{images:s}}l("prompt",r,n,{step:"backend:request",source:"backend",message:"Uploading images via signed URL"});let c=[];for(let s=0;s<a.length;s++){let d=a[s],g=d.type||"application/octet-stream",y=d.name||`image_${s}.${vt(g)}`;l("prompt",r,n,{step:"backend:request",source:"backend",message:"Requesting signed URL"});let{uploadUrl:p,imageKey:w}=await At(t,r,y,g,d.size||0,n);l("prompt",r,n,{step:"backend:waiting",source:"backend",message:"Uploading"}),await Pt(p,d,g,n),c.push(w)}return{imageUrls:c}}var be,ye,we,dt,ve,gt,ke,pt,he,mt,ft,Ce,U,yt,Pe,xt,Lt,St,Le=P(()=>{"use strict";be=require("@smart-cloud/wpsuite-core");J();X();Se();ye=(0,be.getWpSuite)();we=e=>{let t=e.outputLanguage?e.outputLanguage:A(),r={tone:e.tone,format:e.format,length:e.length,outputLanguage:t};return Promise.resolve(r)},dt=async(e,t)=>{let r=R(t),n=e.sharedContext??M(),a=e.outputLanguage?e.outputLanguage:A(),o=a,i=!1;I(a)||(i=!0,a="en");let u=we({...e,outputLanguage:a});return T(r,t?.modeOverride,"writer",u,async()=>{if(typeof Writer>"u")throw new Error("Writer API not available in this browser.");l("writer",r,t,{step:"on-device:init",source:"on-device",message:"Creating Writer session"});let c=await Writer.create({...u,sharedContext:n,monitor(s){s.addEventListener("downloadprogress",d=>{let g=d.loaded;l("writer",r,t,{step:"on-device:download",source:"on-device",progress:g,loaded:g})})}});l("writer",r,t,{step:"on-device:ready",source:"on-device"});try{l("writer",r,t,{step:"on-device:run",source:"on-device",message:"Generating text"});let s=await c.write(e.prompt,{context:e.context,signal:t?.signal});return i?{result:(await U({text:s,sourceLanguage:a,targetLanguage:o})).result}:{result:s}}finally{try{c.destroy()}catch(s){console.error("Error destroying writer:",s)}}},ot({...e,sharedContext:n,outputLanguage:o}),t)},ve=e=>{let t=e.outputLanguage?e.outputLanguage:A(),r={tone:e.tone,format:e.format,length:e.length,outputLanguage:t};return Promise.resolve(r)},gt=async(e,t)=>{let r=R(t),n=e.sharedContext??M(),a=e.outputLanguage?e.outputLanguage:A(),o=a,i=!1;I(a)||(i=!0,a="en");let u=ve({...e,outputLanguage:a});return T(r,t?.modeOverride,"rewriter",u,async()=>{if(typeof Rewriter>"u")throw new Error("Rewriter API not available in this browser.");l("rewriter",r,t,{step:"on-device:init",source:"on-device",message:"Creating Rewriter session"});let c=await Rewriter.create({...u,sharedContext:n,monitor(s){s.addEventListener("downloadprogress",d=>{let g=d.loaded;l("rewriter",r,t,{step:"on-device:download",source:"on-device",progress:g,loaded:g})})}});l("rewriter",r,t,{step:"on-device:ready",source:"on-device"});try{l("rewriter",r,t,{step:"on-device:run",source:"on-device",message:"Rewriting text"});let s=await c.rewrite(e.text,{context:e.context,signal:t?.signal});return i?{result:(await U({text:s,sourceLanguage:a,targetLanguage:o})).result}:{result:s}}finally{try{c.destroy()}catch(s){console.error("Error destroying rewriter:",s)}}},it({...e,sharedContext:n,outputLanguage:o}),t)},ke=()=>Promise.resolve({includeCorrectionTypes:!0,includeCorrectionExplanations:!0}),pt=async(e,t)=>{let r=R(t),n=await ke();return T(r,t?.modeOverride,"proofreader",n,async()=>{if(typeof Proofreader>"u")throw new Error("Proofreader API not available in this browser.");l("proofreader",r,t,{step:"on-device:init",source:"on-device",message:"Creating Proofreader session"});let a=await Proofreader.create({...n,monitor(o){o.addEventListener("downloadprogress",i=>{let u=i.loaded;l("proofreader",r,t,{step:"on-device:download",source:"on-device",progress:u,loaded:u})})}});l("proofreader",r,t,{step:"on-device:ready",source:"on-device"});try{return l("proofreader",r,t,{step:"on-device:run",source:"on-device",message:"Proofreading"}),{result:await a.proofread(e.text,{signal:t?.signal})}}finally{try{a.destroy()}catch(o){console.error("Error destroying proofreader:",o)}}},ct(e),t)},he=e=>{let t=e.outputLanguage?e.outputLanguage:A(),r={type:e.type,format:e.format,length:e.length,outputLanguage:t};return Promise.resolve(r)},mt=async(e,t)=>{let r=R(t),n=e.sharedContext??M(),a=e.outputLanguage?e.outputLanguage:A(),o=a,i=!1;I(a)||(i=!0,a="en");let u=await he({...e,outputLanguage:a});return T(r,t?.modeOverride,"summarizer",u,async()=>{if(typeof Summarizer>"u")throw new Error("Summarizer API not available in this browser.");l("summarizer",r,t,{step:"on-device:init",source:"on-device",message:"Creating Summarizer session"});let c=await Summarizer.create({...u,sharedContext:n,monitor(s){s.addEventListener("downloadprogress",d=>{let g=d.loaded;l("summarizer",r,t,{step:"on-device:download",source:"on-device",progress:g,loaded:g})})}});l("summarizer",r,t,{step:"on-device:ready",source:"on-device"});try{l("summarizer",r,t,{step:"on-device:run",source:"on-device",message:"Summarizing"});let s=await c.summarize(e.text,{context:e.context,signal:t?.signal});return i?{result:(await U({text:s,sourceLanguage:a,targetLanguage:o})).result}:{result:s}}finally{try{c.destroy()}catch(s){console.error("Error destroying summarizer:",s)}}},st({...e,sharedContext:n,outputLanguage:o}),t)},ft=async(e,t)=>{let r=R(t);return T(r,t?.modeOverride,"language-detector",void 0,async()=>{if(typeof LanguageDetector>"u")throw new Error("LanguageDetector API not available in this browser.");l("language-detector",r,t,{step:"on-device:init",source:"on-device",message:"Creating LanguageDetector session"});let n=await LanguageDetector.create({monitor(a){a.addEventListener("downloadprogress",o=>{let i=o.loaded;l("language-detector",r,t,{step:"on-device:download",source:"on-device",progress:i,loaded:i})})}});l("language-detector",r,t,{step:"on-device:ready",source:"on-device"});try{return l("language-detector",r,t,{step:"on-device:run",source:"on-device",message:"Detecting language"}),{result:{candidates:(await n.detect(e.text,{signal:t?.signal})).filter(o=>Q.find(i=>i.value===o.detectedLanguage))}}}finally{try{n.destroy()}catch(a){console.error("Error destroying language detector:",a)}}},lt(e.text,t),t)},Ce=e=>{let t={sourceLanguage:e.sourceLanguage??"auto",targetLanguage:e.targetLanguage??A()??"en"};return Promise.resolve(t)},U=async(e,t)=>{let r=R(t),n=await Ce({...e});return T(r,t?.modeOverride,"translator",n,async()=>{if(typeof Translator>"u")throw new Error("Translator API not available in this browser.");l("translator",r,t,{step:"on-device:init",source:"on-device",message:"Creating Translator session"});let a=await Translator.create({...n,monitor(o){o.addEventListener("downloadprogress",i=>{let u=i.loaded;l("translator",r,t,{step:"on-device:download",source:"on-device",progress:u,loaded:u})})}});l("translator",r,t,{step:"on-device:ready",source:"on-device"});try{l("translator",r,t,{step:"on-device:run",source:"on-device",message:"Translating"});let o=[];return e.text.split(`
3
+ `),images:o?.images,imageUrls:o?.imageUrls,context:e.sharedContext,saveChatSession:!1,responseConstraint:e.responseConstraint,...a}}async function at(e,t,r){let n=Z(e),a=await Ae(e.images,t,"frontend",r);return{sessionId:e.sessionId,text:e.message,images:a?.images,imageUrls:a?.imageUrls,context:e.sharedContext,saveChatSession:!0,...n}}async function nt(e){return{sessionId:e.sessionId,feedbackMessageId:e.feedbackMessageId,feedbackType:e.feedbackType,saveChatSession:!0}}function ot(e){let t=Z(e);return{text:e.prompt,outputLanguage:e.outputLanguage,instruction:e.context?.trim()?e.context.trim():void 0,context:e.sharedContext,tone:e.tone,format:e.format,length:e.length,...t}}function it(e){return{text:e.text,outputLanguage:e.outputLanguage,instruction:e.context?.trim()?e.context.trim():void 0,context:e.sharedContext,tone:e.tone,format:e.format,length:e.length}}function st(e){return{text:e.text,outputLanguage:e.outputLanguage,instruction:e.context?.trim()?e.context.trim():void 0,context:e.sharedContext,type:e.type,format:e.format,length:e.length}}function ut(e,t,r){return{text:e,sourceLanguage:t,targetLanguage:r}}function lt(e,t){let r=t;return{text:e,maxCandidates:typeof r?.maxCandidates=="number"?r.maxCandidates:void 0}}function ct(e){return{text:e.text,expectedInputLanguages:e.expectedInputLanguages}}async function T(e,t,r,n,a,o,i){l(r,e,i,{step:"decide",message:"Deciding capability"});let u=await N(r,n,t);if(l(r,e,i,{step:"decide",source:u.source,message:`Using ${u.source}`}),u.source==="on-device")try{l(r,e,i,{step:"on-device:init",source:"on-device"});let c=await a();return l(r,e,i,{step:"done",source:"on-device"}),c}catch(c){console.error(`Error in on-device ${r}:`,c),l(r,e,i,{step:"error",source:"on-device",message:c.message}),i?.signal?.throwIfAborted()}if(u.mode!=="local-only"&&u.backendAvailable){l(r,e,i,{step:"backend:request",source:"backend"});let c=typeof o=="function"?await o(u):o,s=await E(u,e,r,c,i);return l(r,e,i,{step:"done",source:"backend"}),s}throw new Error(`No capability for "${r}" (${e}). Reason: ${u.reason}`)}function bt(e){let t=Array.isArray(e.images)&&e.images.length>0,r=e.images??[],n=t?r.map(o=>({type:"image",value:o})):[],a;if(typeof e.messages=="string")a=t?[{role:"user",content:[{type:"text",value:e.messages},...n]}]:e.messages;else{let o=e.messages.filter(i=>i.role!=="system").map(i=>({role:i.role==="assistant"?"assistant":"user",content:i.content}));if(t){let i=-1;for(let u=o.length-1;u>=0;u--)if(o[u].role==="user"){i=u;break}if(i===-1)o.push({role:"user",content:[{type:"text",value:""},...n]});else{let u=String(o[i].content??"");o[i]={...o[i],content:[{type:"text",value:u},...n]}}}a=o}return a}function wt(e){return typeof Blob<"u"&&e instanceof Blob}function vt(e){let t=(e??"").toLowerCase();return t.includes("png")?"png":t.includes("webp")?"webp":t.includes("gif")?"gif":t.includes("bmp")?"bmp":"jpg"}function ht(e){let t=(e??"").toLowerCase();return t.includes("png")?"png":t.includes("webp")?"webp":t.includes("gif")?"gif":"jpeg"}async function kt(e){return new Promise((t,r)=>{let n=new FileReader;n.onerror=()=>r(n.error??new Error("FileReader error")),n.onload=()=>t(String(n.result??"")),n.readAsDataURL(e)})}async function Ct(e){let t=await kt(e),r=t.indexOf(",");return r>=0?t.substring(r+1):t}async function At(e,t,r,n,a,o){let i=t==="admin"?"/admin/generate-upload-url":"/frontend/generate-upload-url",u={...o?.headers??{}},c=await F(t,u);if(e.backendTransport==="fetch"){if(!e.backendBaseUrl)throw new Error("backendBaseUrl missing for fetch transport");let p=new URLSearchParams({fileName:r,contentType:n,contentLength:String(a)}).toString(),w=`${e.backendBaseUrl.replace(/\/+$/,"")}${i}?${p}`,h=await fetch(w,{method:"GET",headers:c,signal:o?.signal,credentials:"omit"});if(!h.ok){let ee=await h.text().catch(()=>"");throw new Error(`generate-upload-url failed (fetch): HTTP ${h.status}${ee?": "+ee.substring(0,200):""}`)}let x=await h.json();if(!x?.uploadUrl||!x?.imageKey)throw new Error("generate-upload-url response missing uploadUrl/imageKey");return{uploadUrl:x.uploadUrl,imageKey:x.imageKey}}if(!e.backendApiName)throw new Error("backendApiName missing for gatey transport");let s=globalThis.WpSuite?.plugins?.gatey,d={fileName:r,contentType:n,contentLength:a};if(s?.cognito?.get){let p=await s.cognito.get({apiName:e.backendApiName,path:i,options:{queryParams:Object.keys(d).reduce((h,x)=>(h[x]=String(d[x]),h),{}),headers:c}});o?.signal?.addEventListener?.("abort",()=>{p.cancel()});let w=await p.response.then(h=>h.body.json());if(!w?.uploadUrl||!w?.imageKey)throw new Error("generate-upload-url (gatey get) response missing uploadUrl/imageKey");return{uploadUrl:w.uploadUrl,imageKey:w.imageKey}}if(!s?.cognito?.post)throw new Error("Gatey.cognito.post is not available");let g=s.cognito.post({apiName:e.backendApiName,path:i,options:{body:d,headers:c}});o?.signal?.addEventListener?.("abort",()=>{g.cancel()});let y=await g.response.then(p=>p.body.json());if(!y?.uploadUrl||!y?.imageKey)throw new Error("generate-upload-url (gatey post) response missing uploadUrl/imageKey");return{uploadUrl:y.uploadUrl,imageKey:y.imageKey}}async function Pt(e,t,r,n){let a=await fetch(e,{method:"PUT",headers:{"Content-Type":r||"application/octet-stream"},body:t,signal:n?.signal});if(!a.ok){let o=await a.text().catch(()=>"");throw new Error(`S3 upload failed: HTTP ${a.status}${o?": "+o.substring(0,200):""}`)}}async function Ae(e,t,r,n){if(!e||e.length===0)return;let a=[];for(let s of e){if(!wt(s))throw new Error("Backend multimodal prompting currently supports only Blob/File inputs for images.");a.push(s)}let o=a.reduce((s,d)=>s+(d.size||0),0);if(Math.ceil(o*1.37+2048*a.length)<=yt){l("prompt",r,n,{step:"backend:request",source:"backend",message:"Inlining images as base64"});let s=[];for(let d of a)s.push({format:ht(d.type),data:await Ct(d)});return{images:s}}l("prompt",r,n,{step:"backend:request",source:"backend",message:"Uploading images via signed URL"});let c=[];for(let s=0;s<a.length;s++){let d=a[s],g=d.type||"application/octet-stream",y=d.name||`image_${s}.${vt(g)}`;l("prompt",r,n,{step:"backend:request",source:"backend",message:"Requesting signed URL"});let{uploadUrl:p,imageKey:w}=await At(t,r,y,g,d.size||0,n);l("prompt",r,n,{step:"backend:waiting",source:"backend",message:"Uploading"}),await Pt(p,d,g,n),c.push(w)}return{imageUrls:c}}var be,ye,we,dt,ve,gt,he,pt,ke,mt,ft,Ce,U,yt,Pe,xt,Lt,St,Le=P(()=>{"use strict";be=require("@smart-cloud/wpsuite-core");J();X();Se();ye=(0,be.getWpSuite)();we=e=>{let t=e.outputLanguage?e.outputLanguage:A(),r={tone:e.tone,format:e.format,length:e.length,outputLanguage:t};return Promise.resolve(r)},dt=async(e,t)=>{let r=R(t),n=e.sharedContext??M(),a=e.outputLanguage?e.outputLanguage:A(),o=a,i=!1;I(a)||(i=!0,a="en");let u=we({...e,outputLanguage:a});return T(r,t?.modeOverride,"writer",u,async()=>{if(typeof Writer>"u")throw new Error("Writer API not available in this browser.");l("writer",r,t,{step:"on-device:init",source:"on-device",message:"Creating Writer session"});let c=await Writer.create({...u,sharedContext:n,monitor(s){s.addEventListener("downloadprogress",d=>{let g=d.loaded;l("writer",r,t,{step:"on-device:download",source:"on-device",progress:g,loaded:g})})}});l("writer",r,t,{step:"on-device:ready",source:"on-device"});try{l("writer",r,t,{step:"on-device:run",source:"on-device",message:"Generating text"});let s=await c.write(e.prompt,{context:e.context,signal:t?.signal});return i?{result:(await U({text:s,sourceLanguage:a,targetLanguage:o})).result}:{result:s}}finally{try{c.destroy()}catch(s){console.error("Error destroying writer:",s)}}},ot({...e,sharedContext:n,outputLanguage:o}),t)},ve=e=>{let t=e.outputLanguage?e.outputLanguage:A(),r={tone:e.tone,format:e.format,length:e.length,outputLanguage:t};return Promise.resolve(r)},gt=async(e,t)=>{let r=R(t),n=e.sharedContext??M(),a=e.outputLanguage?e.outputLanguage:A(),o=a,i=!1;I(a)||(i=!0,a="en");let u=ve({...e,outputLanguage:a});return T(r,t?.modeOverride,"rewriter",u,async()=>{if(typeof Rewriter>"u")throw new Error("Rewriter API not available in this browser.");l("rewriter",r,t,{step:"on-device:init",source:"on-device",message:"Creating Rewriter session"});let c=await Rewriter.create({...u,sharedContext:n,monitor(s){s.addEventListener("downloadprogress",d=>{let g=d.loaded;l("rewriter",r,t,{step:"on-device:download",source:"on-device",progress:g,loaded:g})})}});l("rewriter",r,t,{step:"on-device:ready",source:"on-device"});try{l("rewriter",r,t,{step:"on-device:run",source:"on-device",message:"Rewriting text"});let s=await c.rewrite(e.text,{context:e.context,signal:t?.signal});return i?{result:(await U({text:s,sourceLanguage:a,targetLanguage:o})).result}:{result:s}}finally{try{c.destroy()}catch(s){console.error("Error destroying rewriter:",s)}}},it({...e,sharedContext:n,outputLanguage:o}),t)},he=()=>Promise.resolve({includeCorrectionTypes:!0,includeCorrectionExplanations:!0}),pt=async(e,t)=>{let r=R(t),n=await he();return T(r,t?.modeOverride,"proofreader",n,async()=>{if(typeof Proofreader>"u")throw new Error("Proofreader API not available in this browser.");l("proofreader",r,t,{step:"on-device:init",source:"on-device",message:"Creating Proofreader session"});let a=await Proofreader.create({...n,monitor(o){o.addEventListener("downloadprogress",i=>{let u=i.loaded;l("proofreader",r,t,{step:"on-device:download",source:"on-device",progress:u,loaded:u})})}});l("proofreader",r,t,{step:"on-device:ready",source:"on-device"});try{return l("proofreader",r,t,{step:"on-device:run",source:"on-device",message:"Proofreading"}),{result:await a.proofread(e.text,{signal:t?.signal})}}finally{try{a.destroy()}catch(o){console.error("Error destroying proofreader:",o)}}},ct(e),t)},ke=e=>{let t=e.outputLanguage?e.outputLanguage:A(),r={type:e.type,format:e.format,length:e.length,outputLanguage:t};return Promise.resolve(r)},mt=async(e,t)=>{let r=R(t),n=e.sharedContext??M(),a=e.outputLanguage?e.outputLanguage:A(),o=a,i=!1;I(a)||(i=!0,a="en");let u=await ke({...e,outputLanguage:a});return T(r,t?.modeOverride,"summarizer",u,async()=>{if(typeof Summarizer>"u")throw new Error("Summarizer API not available in this browser.");l("summarizer",r,t,{step:"on-device:init",source:"on-device",message:"Creating Summarizer session"});let c=await Summarizer.create({...u,sharedContext:n,monitor(s){s.addEventListener("downloadprogress",d=>{let g=d.loaded;l("summarizer",r,t,{step:"on-device:download",source:"on-device",progress:g,loaded:g})})}});l("summarizer",r,t,{step:"on-device:ready",source:"on-device"});try{l("summarizer",r,t,{step:"on-device:run",source:"on-device",message:"Summarizing"});let s=await c.summarize(e.text,{context:e.context,signal:t?.signal});return i?{result:(await U({text:s,sourceLanguage:a,targetLanguage:o})).result}:{result:s}}finally{try{c.destroy()}catch(s){console.error("Error destroying summarizer:",s)}}},st({...e,sharedContext:n,outputLanguage:o}),t)},ft=async(e,t)=>{let r=R(t);return T(r,t?.modeOverride,"language-detector",void 0,async()=>{if(typeof LanguageDetector>"u")throw new Error("LanguageDetector API not available in this browser.");l("language-detector",r,t,{step:"on-device:init",source:"on-device",message:"Creating LanguageDetector session"});let n=await LanguageDetector.create({monitor(a){a.addEventListener("downloadprogress",o=>{let i=o.loaded;l("language-detector",r,t,{step:"on-device:download",source:"on-device",progress:i,loaded:i})})}});l("language-detector",r,t,{step:"on-device:ready",source:"on-device"});try{return l("language-detector",r,t,{step:"on-device:run",source:"on-device",message:"Detecting language"}),{result:{candidates:(await n.detect(e.text,{signal:t?.signal})).filter(o=>Q.find(i=>i.value===o.detectedLanguage))}}}finally{try{n.destroy()}catch(a){console.error("Error destroying language detector:",a)}}},lt(e.text,t),t)},Ce=e=>{let t={sourceLanguage:e.sourceLanguage??"auto",targetLanguage:e.targetLanguage??A()??"en"};return Promise.resolve(t)},U=async(e,t)=>{let r=R(t),n=await Ce({...e});return T(r,t?.modeOverride,"translator",n,async()=>{if(typeof Translator>"u")throw new Error("Translator API not available in this browser.");l("translator",r,t,{step:"on-device:init",source:"on-device",message:"Creating Translator session"});let a=await Translator.create({...n,monitor(o){o.addEventListener("downloadprogress",i=>{let u=i.loaded;l("translator",r,t,{step:"on-device:download",source:"on-device",progress:u,loaded:u})})}});l("translator",r,t,{step:"on-device:ready",source:"on-device"});try{l("translator",r,t,{step:"on-device:run",source:"on-device",message:"Translating"});let o=[];return e.text.split(`
4
4
  `).forEach(u=>o.push(a.translate(u.trim()))),{result:(await Promise.all(o)).join(`
5
5
  `)}}finally{try{a.destroy()}catch(o){console.error("Error destroying translator:",o)}}},ut(e.text,e.sourceLanguage,e.targetLanguage),t)};yt=4*1024*1024;Pe=async e=>{let t=e.outputLanguage?e.outputLanguage:A();return I(t)||(t="en"),{topK:e.topK,temperature:e.temperature,expectedInputs:[{type:"text"},{type:"image"}],expectedOutputs:[{type:"text",languages:[t]}]}},xt=async(e,t)=>{let r=R(t),n=e.sharedContext??M(),a=e.outputLanguage?e.outputLanguage:A(),o=a,i=!1;I(a)||(i=!0,a="en");let u=await Pe({...e,outputLanguage:a}),c=await N("prompt",u,t?.modeOverride);return T(r,t?.modeOverride,"prompt",u,async()=>{if(typeof LanguageModel>"u")throw new Error("LanguageModel API not available in this browser.");l("prompt",r,t,{step:"on-device:init",source:"on-device",message:"Creating LanguageModel session"});let s=[];if(typeof e.messages!="string"){for(let p of e.messages)p.role==="system"&&p.content.trim()&&s.push(p.content.trim());n&&n.trim()&&s.push("SHARED CONTEXT: "+n.trim())}let d=s.length>0?s.join(`
6
6
 
7
- `):void 0,g=d?[{role:"system",content:d}]:void 0,y=await LanguageModel.create({...u,initialPrompts:g,monitor(p){p.addEventListener("downloadprogress",w=>{let k=w.loaded;l("prompt",r,t,{step:"on-device:download",source:"on-device",progress:k,loaded:k})})}});l("prompt",r,t,{step:"on-device:ready",source:"on-device"});try{l("prompt",r,t,{step:"on-device:run",source:"on-device",message:"Generating text"});let p=await y.prompt(bt(e),{signal:t?.signal,responseConstraint:e.responseConstraint});return i?{result:(await U({text:p,sourceLanguage:a,targetLanguage:o})).result}:{result:p}}finally{try{y.destroy()}catch(p){console.error("Error destroying LanguageModel:",p)}}},await rt({...e,sharedContext:n},r,c,t),t)},Lt=async(e,t)=>{let r="frontend",n=e.sharedContext??M(),a="prompt",o=await K(),i={feature:a,mode:"backend-only",onDeviceAvailable:!1,backendAvailable:o.available,backendTransport:o.transport,backendApiName:o.apiName,backendBaseUrl:o.baseUrl,backendReason:o.reason},u=await at({sessionId:e.sessionId,message:e.message,images:e.images,sharedContext:n},i,t);l(a,r,t,{step:"backend:request",source:"backend"});let c=await E(i,r,a,u,t);return l(a,r,t,{step:"done",source:"backend"}),c},St=async(e,t)=>{let r="frontend",n="prompt",a=await K(),o={feature:n,mode:"backend-only",onDeviceAvailable:!1,backendAvailable:a.available,backendTransport:a.transport,backendApiName:a.apiName,backendBaseUrl:a.baseUrl,backendReason:a.reason},i=await nt({sessionId:e.sessionId,feedbackMessageId:e.feedbackMessageId,feedbackType:e.feedbackType});l(n,r,t,{step:"backend:request",source:"backend"});let u=await E(o,r,n,i,t);return l(n,r,t,{step:"done",source:"backend"}),u}});var Xt={};D(Xt,{AiKitChatbotIcon:()=>ze,AiKitFeatureIcon:()=>De,BackendError:()=>C,LANGUAGE_OPTIONS:()=>Q,TEXT_DOMAIN:()=>m.TEXT_DOMAIN,checkOnDeviceAvailability:()=>Ot,decideCapability:()=>Tt,detectLanguage:()=>qt,dispatchBackend:()=>Kt,getAiKitPlugin:()=>L,getMinChromeVersions:()=>Rt,getPromptOptions:()=>Ht,getProofreadOptions:()=>Ut,getRewriteOptions:()=>It,getStore:()=>te,getStoreDispatch:()=>ae,getStoreSelect:()=>B,getSummarizeOptions:()=>zt,getTranslateOptions:()=>Nt,getWriteOptions:()=>Ft,initializeAiKit:()=>Vt,observeStore:()=>oe,prompt:()=>jt,proofread:()=>Dt,rewrite:()=>Mt,sanitizeAiKitConfig:()=>$,sendChatMessage:()=>Gt,sendFeedbackMessage:()=>$t,summarize:()=>Wt,translate:()=>_t,waitForAiKitReady:()=>q,write:()=>Et});module.exports=Ke(Xt);var m,b,Q,Y,Rt,Tt,Ot,Bt,Kt,f,Ft,Et,It,Mt,Ut,Dt,zt,Wt,Nt,_t,qt,Ht,jt,Gt,$t,Vt,Se=P(()=>{m=require("@smart-cloud/wpsuite-core"),b=require("@wordpress/i18n");H();z();z();ie();V();Q=[{label:(0,b.__)("Arabic",m.TEXT_DOMAIN),value:"ar"},{label:(0,b.__)("Chinese",m.TEXT_DOMAIN),value:"zh"},{label:(0,b.__)("Dutch",m.TEXT_DOMAIN),value:"nl"},{label:(0,b.__)("English",m.TEXT_DOMAIN),value:"en"},{label:(0,b.__)("French",m.TEXT_DOMAIN),value:"fr"},{label:(0,b.__)("German",m.TEXT_DOMAIN),value:"de"},{label:(0,b.__)("Hebrew",m.TEXT_DOMAIN),value:"he"},{label:(0,b.__)("Hindi",m.TEXT_DOMAIN),value:"hi"},{label:(0,b.__)("Hungarian",m.TEXT_DOMAIN),value:"hu"},{label:(0,b.__)("Indonesian",m.TEXT_DOMAIN),value:"id"},{label:(0,b.__)("Italian",m.TEXT_DOMAIN),value:"it"},{label:(0,b.__)("Japanese",m.TEXT_DOMAIN),value:"ja"},{label:(0,b.__)("Korean",m.TEXT_DOMAIN),value:"ko"},{label:(0,b.__)("Norwegian",m.TEXT_DOMAIN),value:"no"},{label:(0,b.__)("Polish",m.TEXT_DOMAIN),value:"pl"},{label:(0,b.__)("Portuguese",m.TEXT_DOMAIN),value:"pt"},{label:(0,b.__)("Russian",m.TEXT_DOMAIN),value:"ru"},{label:(0,b.__)("Spanish",m.TEXT_DOMAIN),value:"es"},{label:(0,b.__)("Swedish",m.TEXT_DOMAIN),value:"sv"},{label:(0,b.__)("Thai",m.TEXT_DOMAIN),value:"th"},{label:(0,b.__)("Turkish",m.TEXT_DOMAIN),value:"tr"},{label:(0,b.__)("Ukrainian",m.TEXT_DOMAIN),value:"uk"}],Y=Promise.resolve().then(()=>(X(),pe)),Rt=async()=>(await Y).MIN_CHROME_VERSION,Tt=async(...e)=>(await Y).decideCapability(...e),Ot=async(...e)=>(await Y).checkOnDeviceAvailability(...e),Bt=Promise.resolve().then(()=>(J(),fe)),Kt=async(...e)=>(await Bt).dispatchBackend(...e),f=Promise.resolve().then(()=>(Le(),xe)),Ft=async(...e)=>(await f).getWriteOptions(...e),Et=async(...e)=>(await f).write(...e),It=async(...e)=>(await f).getRewriteOptions(...e),Mt=async(...e)=>(await f).rewrite(...e),Ut=async(...e)=>(await f).getProofreadOptions(...e),Dt=async(...e)=>(await f).proofread(...e),zt=async(...e)=>(await f).getSummarizeOptions(...e),Wt=async(...e)=>(await f).summarize(...e),Nt=async(...e)=>(await f).getTranslateOptions(...e),_t=async(...e)=>(await f).translate(...e),qt=async(...e)=>(await f).detectLanguage(...e),Ht=async(...e)=>(await f).getPromptOptions(...e),jt=async(...e)=>(await f).prompt(...e),Gt=async(...e)=>(await f).sendChatMessage(...e),$t=async(...e)=>(await f).sendFeedbackMessage(...e),Vt=e=>{let t=globalThis.WpSuite,r=L();if(!r)throw console.error("AiKit plugin is not available"),new Error("AiKit plugin is not available");(0,m.attachDefaultPluginRuntime)(r),r.status=r.status??"initializing";let n=ne();return r.features={store:n,renderFeature:async a=>await e({...a,store:await n}),write:async(...a)=>{let o=await f,i=a[1]||{};return a[1]={context:"frontend",...i},o.write(...a)},rewrite:async(...a)=>{let o=await f,i=a[1]||{};return a[1]={context:"frontend",...i},o.rewrite(...a)},proofread:async(...a)=>{let o=await f,i=a[1]||{};return a[1]={context:"frontend",...i},o.proofread(...a)},summarize:async(...a)=>{let o=await f,i=a[1]||{};return a[1]={context:"frontend",...i},o.summarize(...a)},translate:async(...a)=>{let o=await f,i=a[1]||{};return a[1]={context:"frontend",...i},o.translate(...a)},detectLanguage:async(...a)=>{let o=await f,i=a[1]||{};return a[1]={context:"frontend",...i},o.detectLanguage(...a)},prompt:async(...a)=>{let o=await f,i=a[1]||{};return a[1]={context:"frontend",...i},o.prompt(...a)},sendChatMessage:async(...a)=>(await f).sendChatMessage(...a),sendFeedbackMessage:async(...a)=>(await f).sendFeedbackMessage(...a)},n.then(()=>{r.status="available",t?.events?.emit("wpsuite:ai-kit:ready",{key:r.key,version:r.version})}).catch(a=>{r.status="error",console.error("AiKit plugin failed to initialize:",a),t?.events?.emit("wpsuite:ai-kit:error",{key:r.key,error:String(a)})}),r}});Se();0&&(module.exports={AiKitChatbotIcon,AiKitFeatureIcon,BackendError,LANGUAGE_OPTIONS,TEXT_DOMAIN,checkOnDeviceAvailability,decideCapability,detectLanguage,dispatchBackend,getAiKitPlugin,getMinChromeVersions,getPromptOptions,getProofreadOptions,getRewriteOptions,getStore,getStoreDispatch,getStoreSelect,getSummarizeOptions,getTranslateOptions,getWriteOptions,initializeAiKit,observeStore,prompt,proofread,rewrite,sanitizeAiKitConfig,sendChatMessage,sendFeedbackMessage,summarize,translate,waitForAiKitReady,write});
7
+ `):void 0,g=d?[{role:"system",content:d}]:void 0,y=await LanguageModel.create({...u,initialPrompts:g,monitor(p){p.addEventListener("downloadprogress",w=>{let h=w.loaded;l("prompt",r,t,{step:"on-device:download",source:"on-device",progress:h,loaded:h})})}});l("prompt",r,t,{step:"on-device:ready",source:"on-device"});try{l("prompt",r,t,{step:"on-device:run",source:"on-device",message:"Generating text"});let p=await y.prompt(bt(e),{signal:t?.signal,responseConstraint:e.responseConstraint});return i?{result:(await U({text:p,sourceLanguage:a,targetLanguage:o})).result}:{result:p}}finally{try{y.destroy()}catch(p){console.error("Error destroying LanguageModel:",p)}}},await rt({...e,sharedContext:n},r,c,t),t)},Lt=async(e,t)=>{let r="frontend",n=e.sharedContext??M(),a="prompt",o=await K(),i={feature:a,mode:"backend-only",onDeviceAvailable:!1,backendAvailable:o.available,backendTransport:o.transport,backendApiName:o.apiName,backendBaseUrl:o.baseUrl,backendReason:o.reason},u=await at({sessionId:e.sessionId,message:e.message,images:e.images,sharedContext:n},i,t);l(a,r,t,{step:"backend:request",source:"backend"});let c=await E(i,r,a,u,t);return l(a,r,t,{step:"done",source:"backend"}),c},St=async(e,t)=>{let r="frontend",n="prompt",a=await K(),o={feature:n,mode:"backend-only",onDeviceAvailable:!1,backendAvailable:a.available,backendTransport:a.transport,backendApiName:a.apiName,backendBaseUrl:a.baseUrl,backendReason:a.reason},i=await nt({sessionId:e.sessionId,feedbackMessageId:e.feedbackMessageId,feedbackType:e.feedbackType});l(n,r,t,{step:"backend:request",source:"backend"});let u=await E(o,r,n,i,t);return l(n,r,t,{step:"done",source:"backend"}),u}});var Xt={};D(Xt,{AiKitChatbotIcon:()=>ze,AiKitFeatureIcon:()=>De,BackendError:()=>C,LANGUAGE_OPTIONS:()=>Q,TEXT_DOMAIN:()=>m.TEXT_DOMAIN,checkOnDeviceAvailability:()=>Ot,decideCapability:()=>Tt,detectLanguage:()=>qt,dispatchBackend:()=>Kt,getAiKitPlugin:()=>L,getMinChromeVersions:()=>Rt,getPromptOptions:()=>Ht,getProofreadOptions:()=>Ut,getRewriteOptions:()=>It,getStore:()=>te,getStoreDispatch:()=>ae,getStoreSelect:()=>B,getSummarizeOptions:()=>zt,getTranslateOptions:()=>Nt,getWriteOptions:()=>Ft,initializeAiKit:()=>Vt,observeStore:()=>oe,prompt:()=>jt,proofread:()=>Dt,rewrite:()=>Mt,sanitizeAiKitConfig:()=>$,sendChatMessage:()=>Gt,sendFeedbackMessage:()=>$t,summarize:()=>Wt,translate:()=>_t,waitForAiKitReady:()=>q,write:()=>Et});module.exports=Ke(Xt);var m,b,Q,Y,Rt,Tt,Ot,Bt,Kt,f,Ft,Et,It,Mt,Ut,Dt,zt,Wt,Nt,_t,qt,Ht,jt,Gt,$t,Vt,Se=P(()=>{m=require("@smart-cloud/wpsuite-core"),b=require("@wordpress/i18n");H();z();z();ie();V();Q=[{label:(0,b.__)("Arabic",m.TEXT_DOMAIN),value:"ar"},{label:(0,b.__)("Chinese",m.TEXT_DOMAIN),value:"zh"},{label:(0,b.__)("Dutch",m.TEXT_DOMAIN),value:"nl"},{label:(0,b.__)("English",m.TEXT_DOMAIN),value:"en"},{label:(0,b.__)("French",m.TEXT_DOMAIN),value:"fr"},{label:(0,b.__)("German",m.TEXT_DOMAIN),value:"de"},{label:(0,b.__)("Hebrew",m.TEXT_DOMAIN),value:"he"},{label:(0,b.__)("Hindi",m.TEXT_DOMAIN),value:"hi"},{label:(0,b.__)("Hungarian",m.TEXT_DOMAIN),value:"hu"},{label:(0,b.__)("Indonesian",m.TEXT_DOMAIN),value:"id"},{label:(0,b.__)("Italian",m.TEXT_DOMAIN),value:"it"},{label:(0,b.__)("Japanese",m.TEXT_DOMAIN),value:"ja"},{label:(0,b.__)("Korean",m.TEXT_DOMAIN),value:"ko"},{label:(0,b.__)("Norwegian",m.TEXT_DOMAIN),value:"no"},{label:(0,b.__)("Polish",m.TEXT_DOMAIN),value:"pl"},{label:(0,b.__)("Portuguese",m.TEXT_DOMAIN),value:"pt"},{label:(0,b.__)("Russian",m.TEXT_DOMAIN),value:"ru"},{label:(0,b.__)("Spanish",m.TEXT_DOMAIN),value:"es"},{label:(0,b.__)("Swedish",m.TEXT_DOMAIN),value:"sv"},{label:(0,b.__)("Thai",m.TEXT_DOMAIN),value:"th"},{label:(0,b.__)("Turkish",m.TEXT_DOMAIN),value:"tr"},{label:(0,b.__)("Ukrainian",m.TEXT_DOMAIN),value:"uk"}],Y=Promise.resolve().then(()=>(X(),pe)),Rt=async()=>(await Y).MIN_CHROME_VERSION,Tt=async(...e)=>(await Y).decideCapability(...e),Ot=async(...e)=>(await Y).checkOnDeviceAvailability(...e),Bt=Promise.resolve().then(()=>(J(),fe)),Kt=async(...e)=>(await Bt).dispatchBackend(...e),f=Promise.resolve().then(()=>(Le(),xe)),Ft=async(...e)=>(await f).getWriteOptions(...e),Et=async(...e)=>(await f).write(...e),It=async(...e)=>(await f).getRewriteOptions(...e),Mt=async(...e)=>(await f).rewrite(...e),Ut=async(...e)=>(await f).getProofreadOptions(...e),Dt=async(...e)=>(await f).proofread(...e),zt=async(...e)=>(await f).getSummarizeOptions(...e),Wt=async(...e)=>(await f).summarize(...e),Nt=async(...e)=>(await f).getTranslateOptions(...e),_t=async(...e)=>(await f).translate(...e),qt=async(...e)=>(await f).detectLanguage(...e),Ht=async(...e)=>(await f).getPromptOptions(...e),jt=async(...e)=>(await f).prompt(...e),Gt=async(...e)=>(await f).sendChatMessage(...e),$t=async(...e)=>(await f).sendFeedbackMessage(...e),Vt=e=>{let t=globalThis.WpSuite,r=L();if(!r)throw console.error("AiKit plugin is not available"),new Error("AiKit plugin is not available");(0,m.attachDefaultPluginRuntime)(r),r.status=r.status??"initializing";let n=ne();return r.features={store:n,renderFeature:async a=>await e({...a,store:await n}),write:async(...a)=>{let o=await f,i=a[1]||{};return a[1]={context:"frontend",...i},o.write(...a)},rewrite:async(...a)=>{let o=await f,i=a[1]||{};return a[1]={context:"frontend",...i},o.rewrite(...a)},proofread:async(...a)=>{let o=await f,i=a[1]||{};return a[1]={context:"frontend",...i},o.proofread(...a)},summarize:async(...a)=>{let o=await f,i=a[1]||{};return a[1]={context:"frontend",...i},o.summarize(...a)},translate:async(...a)=>{let o=await f,i=a[1]||{};return a[1]={context:"frontend",...i},o.translate(...a)},detectLanguage:async(...a)=>{let o=await f,i=a[1]||{};return a[1]={context:"frontend",...i},o.detectLanguage(...a)},prompt:async(...a)=>{let o=await f,i=a[1]||{};return a[1]={context:"frontend",...i},o.prompt(...a)},sendChatMessage:async(...a)=>(await f).sendChatMessage(...a),sendFeedbackMessage:async(...a)=>(await f).sendFeedbackMessage(...a)},n.then(()=>{r.status="available",t?.events?.emit("wpsuite:ai-kit:ready",{key:r.key,version:r.version})}).catch(a=>{r.status="error",console.error("AiKit plugin failed to initialize:",a),t?.events?.emit("wpsuite:ai-kit:error",{key:r.key,error:String(a)})}),r}});Se();0&&(module.exports={AiKitChatbotIcon,AiKitFeatureIcon,BackendError,LANGUAGE_OPTIONS,TEXT_DOMAIN,checkOnDeviceAvailability,decideCapability,detectLanguage,dispatchBackend,getAiKitPlugin,getMinChromeVersions,getPromptOptions,getProofreadOptions,getRewriteOptions,getStore,getStoreDispatch,getStoreSelect,getSummarizeOptions,getTranslateOptions,getWriteOptions,initializeAiKit,observeStore,prompt,proofread,rewrite,sanitizeAiKitConfig,sendChatMessage,sendFeedbackMessage,summarize,translate,waitForAiKitReady,write});
package/dist/index.d.cts CHANGED
@@ -8,6 +8,8 @@ interface AiKitConfig {
8
8
  backendApiName?: string;
9
9
  backendBaseUrl?: string;
10
10
  subscriptionType?: SubscriptionType;
11
+ enableChatbot?: boolean;
12
+ chatbot?: AiChatbotProps;
11
13
  }
12
14
  /**
13
15
  * Ensures we only keep runtime keys that are part of AiKitConfig.
package/dist/index.d.ts CHANGED
@@ -8,6 +8,8 @@ interface AiKitConfig {
8
8
  backendApiName?: string;
9
9
  backendBaseUrl?: string;
10
10
  subscriptionType?: SubscriptionType;
11
+ enableChatbot?: boolean;
12
+ chatbot?: AiChatbotProps;
11
13
  }
12
14
  /**
13
15
  * Ensures we only keep runtime keys that are part of AiKitConfig.
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
- var ke=Object.defineProperty;var C=(e,t)=>()=>(e&&(t=e(e=0)),t);var W=(e,t)=>{for(var r in t)ke(e,r,{get:t[r],enumerable:!0})};function R(){return globalThis.WpSuite?.plugins?.aiKit}async function X(e=8e3){let t=R();if(t?.status!=="available"){if(t?.status==="error")throw new Error("AiKit failed");await new Promise((r,n)=>{let a=()=>i(r),o=()=>i(()=>n(new Error("AiKit failed"))),i=c=>{window.removeEventListener("wpsuite:ai-kit:ready",a),window.removeEventListener("wpsuite:ai-kit:error",o),u&&clearTimeout(u),c()};window.addEventListener("wpsuite:ai-kit:ready",a,{once:!0}),window.addEventListener("wpsuite:ai-kit:error",o,{once:!0});let u=e?window.setTimeout(()=>i(()=>n(new Error("AiKit timeout"))),e):0})}}async function he(e=1e4){await X(e);let r=R()?.features?.store;if(!r)throw new Error("AiKit store is not available");return r}var N=C(()=>{"use strict"});import{getConfig as Ce}from"@smart-cloud/wpsuite-core";import{createReduxStore as Ae,dispatch as Pe,register as xe,select as Le,subscribe as Se}from"@wordpress/data";import{I18n as J}from"aws-amplify/utils";var _,Z,Re,Te,Oe,Be,Ke,Fe,M,Q,Ee,U=C(()=>{"use strict";N();typeof WpSuite<"u"?_=WpSuite.siteSettings:_={};Z=e=>{let t=e&&typeof e=="object"?e:{},r={};return typeof t.mode=="string"&&(r.mode=t.mode),typeof t.backendTransport=="string"&&(r.backendTransport=t.backendTransport),typeof t.backendApiName=="string"&&(r.backendApiName=t.backendApiName),typeof t.backendBaseUrl=="string"&&(r.backendBaseUrl=t.backendBaseUrl),typeof t.subscriptionType=="string"&&(r.subscriptionType=t.subscriptionType),r},Re=async()=>{let e=R();if(!e)throw new Error("AI-Kit plugin is not available");let t=null;return e.settings.customTranslationsUrl&&(t=await fetch(e.settings.customTranslationsUrl+(e.settings.customTranslationsUrl.includes("?")?"&":"?")+"t="+_.lastUpdate).then(r=>r.ok?r.text():null).then(r=>r?JSON.parse(r):null).catch(()=>null)),t??null},Te=async()=>{let e=Z(await Ce("aiKit")),t=await Re();return{config:e,showChatbotPreview:!1,language:void 0,direction:void 0,customTranslations:t}},Oe={setShowChatbotPreview(e){return{type:"SET_SHOW_CHATBOT_PREVIEW",showChatbotPreview:e}},setLanguage(e){return!e||e==="system"?J.setLanguage(""):J.setLanguage(e),{type:"SET_LANGUAGE",language:e}},setDirection(e){return{type:"SET_DIRECTION",direction:e}}},Be={getConfig(e){return e.config},isShowChatbotPreview(e){return e.showChatbotPreview},getCustomTranslations(e){return e.customTranslations},getLanguage(e){return e.language},getDirection(e){return e.direction},getState(e){return e}},Ke={},Fe=e=>Pe(e),M=e=>Le(e),Q=async()=>{let e=await Te(),t=Ae("wpsuite/ai-kit",{reducer(r=e,n){switch(n.type){case"SET_LANGUAGE":return{...r,language:n.language};case"SET_DIRECTION":return{...r,direction:n.direction};case"SET_SHOW_CHATBOT_PREVIEW":return{...r,showChatbotPreview:n.showChatbotPreview}}return r},actions:Oe,selectors:Be,resolvers:Ke});return xe(t),t},Ee=(e,t,r)=>{let n;function a(){let i=M(e).getState(),u=t(i);if(u!==n){let c=n;n=u,r(n,c)}}let o=Se(a,e);return a(),o}});import{jsx as k,jsxs as Y}from"react/jsx-runtime";var Mt,Ut,ee=C(()=>{"use strict";Mt=e=>Y("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 48 48",width:"48",height:"48",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",...e,children:[k("path",{d:"M19 27H33"}),k("path",{d:"M19 33H33"}),k("path",{d:"M8 21L9.5 24L12.5 25.5L9.5 27L8 30L6.5 27L3.5 25.5L6.5 24Z"}),k("path",{d:"M36 4L38 8L42 10L38 12L36 16L34 12L30 10L34 8Z"}),k("path",{d:"M16 10V40H36V22"}),k("path",{d:"M16 10H22"}),k("path",{d:"M22 10V23H36"}),k("path",{d:"M22 10L36 22"})]}),Ut=e=>Y("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 48 48",width:"48",height:"48",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",...e,children:[k("path",{d:"M42 38L34 30H10C7.79086 30 6 28.2091 6 26V8C6 5.79086 7.79086 4 10 4H38C40.2091 4 42 5.79086 42 8V38Z"}),k("rect",{x:"14",y:"13",width:"6",height:"6",rx:"1"}),k("rect",{x:"28",y:"13",width:"6",height:"6",rx:"1"}),k("path",{d:"M16 24H32"})]})});var A,q=C(()=>{"use strict";A=class extends Error{constructor(r,n,a){super(r);this.decision=n;this.status=a;this.name="AiBackendError"}}});var ie={};W(ie,{MIN_CHROME_VERSION:()=>ae,checkOnDeviceAvailability:()=>oe,decideCapability:()=>z,resolveBackend:()=>O});import{getWpSuite as Ie}from"@smart-cloud/wpsuite-core";async function te(){let t=await Me?.plugins?.aiKit?.features.store;return M(t).getConfig()??{}}function re(e){let t=e.backendApiName?.trim()||void 0,r=e.backendBaseUrl?.trim()||void 0;return{transport:e.backendTransport??(r?"fetch":t?"gatey":void 0),backendApiName:t,backendBaseUrl:r}}function Ue(e){if(e.mode)return e.mode;let{transport:t}=re(e);return t?"backend-fallback":"local-only"}async function O(){let e=await te(),{transport:t,backendApiName:r,backendBaseUrl:n}=re(e);if(!t)return{available:!1,reason:"No backend configured"};if(t==="fetch")return n?{available:!0,transport:t,baseUrl:n,reason:"Custom fetch backend"}:{available:!1,reason:"backendBaseUrl is missing"};if(!r)return{available:!1,reason:"backendApiName is missing"};let a=globalThis.WpSuite?.plugins?.gatey;return!a?.availability||await a.availability()!=="available"?{available:!1,reason:"Gatey is not available"}:{available:!0,transport:t,apiName:r,reason:"Gatey backend"}}function x(e){return typeof globalThis[e]<"u"}function ne(e){if(!e)return;let t=Number.parseInt(String(e).split(".")[0]??"",10);return Number.isFinite(t)?t:void 0}function D(e,t){return e?.find(r=>r.brand===t)?.version}async function De(){let e=navigator?.userAgentData;if(e){try{let r=(await e.getHighEntropyValues?.(["fullVersionList"]))?.fullVersionList;if(Array.isArray(r)&&r.length>0)return r}catch{}if(Array.isArray(e.brands)&&e.brands.length>0)return e.brands}}function ze(e){let t=e.match(/\b(?:Chrome|Chromium)\/(\d{2,3})\b/i);return t?.[1]?ne(t[1]):void 0}function We(){return!!navigator?.brave}async function Ne(e){if(typeof navigator>"u")return{allowed:!1,reason:"no-navigator"};if(typeof globalThis.isSecureContext=="boolean"&&!globalThis.isSecureContext)return{allowed:!1,reason:"not-secure-context"};let t=navigator.userAgent??"",r=await De(),n=D(r,"Microsoft Edge")??D(r,"Microsoft Edge WebView2"),a=D(r,"Google Chrome")??D(r,"Chromium"),o=!!n||/\bEdg\//i.test(t)||/\bEdgiOS\//i.test(t),i=/\bOPR\//i.test(t),u=/\bVivaldi\//i.test(t),c=/\bSamsungBrowser\//i.test(t),s=/\bFirefox\//i.test(t),d=!/\bChrome\//i.test(t)&&/\bSafari\//i.test(t)&&!/\bChromium\//i.test(t),g=We()||/\bBrave\//i.test(t);if(o||i||u||c||s||d||g)return{allowed:!1,reason:o?"edge":g?"brave":s?"firefox":d?"safari":i?"opera":u?"vivaldi":c?"samsung":"unsupported-browser"};let y=ne(a)??ze(t),p=ae[e];return p?y?y<p?{allowed:!1,reason:`chrome-too-old-${y}-lt-${p}`,chromeMajor:y}:{allowed:!0,reason:"ok",chromeMajor:y}:{allowed:!1,reason:"unknown-chrome-version"}:{allowed:!1,reason:"no-min-version",chromeMajor:y}}async function oe(e,t){try{let r=await Ne(e),n=`browser-gate:${r.reason}${r.chromeMajor?` (chrome ${r.chromeMajor})`:""}`;if(!r.allowed)return{available:!1,status:"unavailable",reason:n};switch(e){case"writer":{if(!x("Writer")||!Writer?.availability)return{available:!1,status:"api-not-present",reason:n};let a=await Writer.availability(t);return{available:a!=="unavailable",status:a,reason:n}}case"rewriter":{if(!x("Rewriter")||!Rewriter?.availability)return{available:!1,status:"api-not-present",reason:n};let a=await Rewriter.availability(t);return{available:a!=="unavailable",status:a,reason:n}}case"summarizer":{if(!x("Summarizer")||!Summarizer?.availability)return{available:!1,status:"api-not-present",reason:n};let a=await Summarizer.availability(t);return{available:a!=="unavailable",status:a,reason:n}}case"proofreader":{if(!x("Proofreader")||!Proofreader?.availability)return{available:!1,status:"api-not-present",reason:n};let a=await Proofreader.availability(t);return{available:a!=="unavailable",status:a,reason:n}}case"language-detector":{if(!x("LanguageDetector")||!LanguageDetector?.availability)return{available:!1,status:"api-not-present",reason:n};let a=await LanguageDetector.availability(t);return{available:a!=="unavailable",status:a,reason:n}}case"translator":{if(!x("Translator")||!Translator?.availability)return{available:!1,status:"api-not-present",reason:n};let a=t;if(!a?.sourceLanguage||!a?.targetLanguage)return{available:!1,status:"error",reason:n,error:new Error("Translator.availability requires sourceLanguage/targetLanguage")};let o=await Translator.availability({...a,sourceLanguage:a.sourceLanguage==="auto"?"en":a.sourceLanguage,targetLanguage:a.sourceLanguage==="auto"||a.sourceLanguage===a.targetLanguage?"hu":a.targetLanguage});return{available:o!=="unavailable",status:o,reason:n}}case"prompt":{if(!x("LanguageModel")||!LanguageModel?.availability)return{available:!1,status:"api-not-present",reason:n};let a=await LanguageModel.availability(t);return{available:a!=="unavailable",status:a,reason:n}}default:return{available:!1,status:"unknown-feature",reason:n}}}catch(r){return{available:!1,status:"error",reason:"exception in availability()",error:r}}}async function z(e,t,r){let n=await te(),a=r||Ue(n),o=await O(),i=await oe(e,t),u=i.available,c=o.available,s={feature:e,mode:a,onDeviceAvailable:u,onDeviceStatus:i.status,onDeviceReason:i.reason,backendAvailable:c,backendTransport:o.transport,backendApiName:o.apiName,backendBaseUrl:o.baseUrl,backendReason:o.reason};return a==="local-only"?u?{...s,source:"on-device",reason:`local-only: on-device available (${i.reason??i.status})`}:{...s,source:"none",reason:`local-only: on-device unavailable (${i.reason??i.status})`}:a==="backend-only"?c?{...s,source:"backend",reason:`backend-only: backend available (${o.reason??"n/a"})`}:{...s,source:"none",reason:`backend-only: backend unavailable (${o.reason??"n/a"})`}:u?{...s,source:"on-device",reason:`backend-fallback: using on-device (${i.reason??i.status})`}:c?{...s,source:"backend",reason:`backend-fallback: using backend (${o.reason??"n/a"}; on-device: ${i.reason??i.status})`}:{...s,source:"none",reason:`No on-device AI or backend available (on-device: ${i.reason??i.status}; backend: ${o.reason??"n/a"})`}}var Me,ae,H=C(()=>{"use strict";U();Me=Ie();ae={summarizer:138,translator:138,"language-detector":138,writer:137,rewriter:137,proofreader:141,prompt:138}});var se={};W(se,{dispatchBackend:()=>K,withRecaptchaHeaders:()=>B});import{getRecaptcha as _e}from"@smart-cloud/wpsuite-core";function qe(){return globalThis.WpSuite?.plugins?.aiKit?.settings??{}}async function He(e){if(e!=="frontend")return;let t=qe();if(!t?.reCaptchaSiteKey)return;let{execute:r}=await _e(t?.useRecaptchaEnterprise||!1);if(typeof r=="function")try{let a=await r(t.reCaptchaSiteKey,{action:"generate"});return typeof a=="string"&&a?a:void 0}catch{return}}async function B(e,t){if(e!=="frontend"||t["X-Recaptcha-Token"]||t["x-recaptcha-token"])return t;let r=await He(e);return r?{...t,"X-Recaptcha-Token":r}:t}function T(e,t){try{e?.onStatus?.(t)}catch{}}function je(e){return typeof e=="object"&&e!==null&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null)}function $e(e,t){if(!je(t))return t;let r=Ge[e];if(!r)return t;let n={};for(let a of r)a in t&&(n[a]=t[a]);return n}function Je(e,t){return(e==="admin"?Ve:Xe)[t]}async function K(e,t,r,n,a={}){let o=Je(t,r),i=$e(r,n);if(!o)throw new A(`No backend path configured for "${r}" (${t}).`,e);if(e.backendTransport==="fetch"){if(!e.backendBaseUrl)throw new A("backendTransport=fetch but backendBaseUrl is missing.",e);return Ze(e.backendBaseUrl,o,i,a,e,r,t)}if(!e.backendApiName)throw new A("backendTransport=gatey but backendApiName is missing.",e);return Qe(e.backendApiName,o,i,a,e,r,t)}async function Ze(e,t,r,n,a,o,i){let u=`${e.replace(/\/+$/,"")}${t}`,c={"content-type":"application/json",...n.headers??{}},s=await B(i,c),d=n.query&&Object.keys(n.query).length>0?"?"+new URLSearchParams(Object.entries(n.query).map(([p,w])=>[p,String(w)])).toString():"";T(n,{feature:o,context:i,step:"backend:request",source:"backend"}),T(n,{feature:o,context:i,step:"backend:waiting",source:"backend"});let g=await fetch(u+d,{method:"POST",headers:s,body:JSON.stringify(r??{}),signal:n.signal,credentials:"omit"});if(T(n,{feature:o,context:i,step:"backend:response",source:"backend"}),!g.ok){let p=`HTTP ${g.status}`;try{let w=await g.text();w&&(p=`${p}: ${w.substring(0,400)}`)}catch{}throw new A(`Fetch backend call failed: ${p}`,a,g.status)}return(g.headers.get("content-type")||"").includes("application/json")?await g.json():await g.text()}async function Qe(e,t,r,n,a,o,i){let c=globalThis.WpSuite?.plugins?.gatey;if(!c?.cognito?.post)throw new A("Gatey backend selected, but Gatey.cognito.post is not available.",a);let s=await B(i,{...n.headers??{}});T(n,{feature:o,context:i,step:"backend:request",source:"backend"}),T(n,{feature:o,context:i,step:"backend:waiting",source:"backend"});let d=c.cognito.post({apiName:e,path:t,options:{body:r,headers:s}});n?.signal?.addEventListener?.("abort",()=>{d.cancel()});let g=await d.response.then(y=>y.body.json());return T(n,{feature:o,context:i,step:"backend:response",source:"backend"}),g}var Ge,Ve,Xe,j=C(()=>{"use strict";q();Ge={prompt:["text","systemPrompt","context","responseConstraint","sessionId","images","imageUrls","feedbackMessageId","feedbackType","knowledgeBaseId","disableKB","enableRerank","kb_filters"],writer:["text","outputLanguage","instruction","context","tone","format","length","knowledgeBaseId","disableKB"],rewriter:["text","outputLanguage","instruction","context","tone","format","length"],summarizer:["text","outputLanguage","instruction","context","type","format","length"],translator:["text","sourceLanguage","targetLanguage"],"language-detector":["text","maxCandidates"],proofreader:["text","expectedInputLanguages"]};Ve={prompt:"/admin/prompt",writer:"/admin/write",rewriter:"/admin/rewrite",summarizer:"/admin/summarize",translator:"/admin/translate","language-detector":"/admin/detect-language",proofreader:"/admin/proofread"},Xe={prompt:"/frontend/prompt",writer:"/frontend/write",rewriter:"/frontend/rewrite",summarizer:"/frontend/summarize",translator:"/frontend/translate","language-detector":"/frontend/detect-language",proofreader:"/frontend/proofread"}});var be={};W(be,{detectLanguage:()=>pt,getPromptOptions:()=>fe,getProofreadOptions:()=>de,getRewriteOptions:()=>ce,getSummarizeOptions:()=>ge,getTranslateOptions:()=>pe,getWriteOptions:()=>le,prompt:()=>At,proofread:()=>dt,rewrite:()=>ct,sendChatMessage:()=>Pt,sendFeedbackMessage:()=>xt,summarize:()=>gt,translate:()=>I,write:()=>lt});import{getWpSuite as Ye}from"@smart-cloud/wpsuite-core";function h(){return(ue?.plugins?.aiKit?.settings??{}).defaultOutputLanguage??"en"}function F(e){let t=["en","ja","es"],r=e.toLowerCase();return t.some(n=>r===n.toLowerCase())}function l(e,t,r,n){try{r?.onStatus?.({feature:e,context:t,...n})}catch{}}function E(){return ue?.plugins?.aiKit?.settings?.sharedContext??void 0}function L(e){return e?.context??"admin"}function G(e){let t=e;return{knowledgeBaseId:typeof t.knowledgeBaseId=="string"?t.knowledgeBaseId:void 0,disableKB:typeof t.disableKB=="boolean"?t.disableKB:void 0}}async function et(e,t,r,n){let a=G(e),o=await me(e.images,r,t,n);return{text:e.messages.filter(i=>i.role==="user").map(i=>i.content).join(`
1
+ var he=Object.defineProperty;var C=(e,t)=>()=>(e&&(t=e(e=0)),t);var W=(e,t)=>{for(var r in t)he(e,r,{get:t[r],enumerable:!0})};function R(){return globalThis.WpSuite?.plugins?.aiKit}async function X(e=8e3){let t=R();if(t?.status!=="available"){if(t?.status==="error")throw new Error("AiKit failed");await new Promise((r,n)=>{let a=()=>i(r),o=()=>i(()=>n(new Error("AiKit failed"))),i=c=>{window.removeEventListener("wpsuite:ai-kit:ready",a),window.removeEventListener("wpsuite:ai-kit:error",o),u&&clearTimeout(u),c()};window.addEventListener("wpsuite:ai-kit:ready",a,{once:!0}),window.addEventListener("wpsuite:ai-kit:error",o,{once:!0});let u=e?window.setTimeout(()=>i(()=>n(new Error("AiKit timeout"))),e):0})}}async function ke(e=1e4){await X(e);let r=R()?.features?.store;if(!r)throw new Error("AiKit store is not available");return r}var N=C(()=>{"use strict"});import{getConfig as Ce}from"@smart-cloud/wpsuite-core";import{createReduxStore as Ae,dispatch as Pe,register as xe,select as Le,subscribe as Se}from"@wordpress/data";import{I18n as J}from"aws-amplify/utils";var _,Z,Re,Te,Oe,Be,Ke,Fe,M,Q,Ee,U=C(()=>{"use strict";N();typeof WpSuite<"u"?_=WpSuite.siteSettings:_={};Z=e=>{let t=e&&typeof e=="object"?e:{},r={};return typeof t.mode=="string"&&(r.mode=t.mode),typeof t.backendTransport=="string"&&(r.backendTransport=t.backendTransport),typeof t.backendApiName=="string"&&(r.backendApiName=t.backendApiName),typeof t.backendBaseUrl=="string"&&(r.backendBaseUrl=t.backendBaseUrl),typeof t.subscriptionType=="string"&&(r.subscriptionType=t.subscriptionType),typeof t.enableChatbot=="boolean"&&(r.enableChatbot=t.enableChatbot),typeof t.chatbot=="object"&&t.chatbot!==null&&(r.chatbot=t.chatbot),r},Re=async()=>{let e=R();if(!e)throw new Error("AI-Kit plugin is not available");let t=null;return e.settings.customTranslationsUrl&&(t=await fetch(e.settings.customTranslationsUrl+(e.settings.customTranslationsUrl.includes("?")?"&":"?")+"t="+_.lastUpdate).then(r=>r.ok?r.text():null).then(r=>r?JSON.parse(r):null).catch(()=>null)),t??null},Te=async()=>{let e=Z(await Ce("aiKit")),t=await Re();return{config:e,showChatbotPreview:!1,language:void 0,direction:void 0,customTranslations:t}},Oe={setShowChatbotPreview(e){return{type:"SET_SHOW_CHATBOT_PREVIEW",showChatbotPreview:e}},setLanguage(e){return!e||e==="system"?J.setLanguage(""):J.setLanguage(e),{type:"SET_LANGUAGE",language:e}},setDirection(e){return{type:"SET_DIRECTION",direction:e}}},Be={getConfig(e){return e.config},isShowChatbotPreview(e){return e.showChatbotPreview},getCustomTranslations(e){return e.customTranslations},getLanguage(e){return e.language},getDirection(e){return e.direction},getState(e){return e}},Ke={},Fe=e=>Pe(e),M=e=>Le(e),Q=async()=>{let e=await Te(),t=Ae("wpsuite/ai-kit",{reducer(r=e,n){switch(n.type){case"SET_LANGUAGE":return{...r,language:n.language};case"SET_DIRECTION":return{...r,direction:n.direction};case"SET_SHOW_CHATBOT_PREVIEW":return{...r,showChatbotPreview:n.showChatbotPreview}}return r},actions:Oe,selectors:Be,resolvers:Ke});return xe(t),t},Ee=(e,t,r)=>{let n;function a(){let i=M(e).getState(),u=t(i);if(u!==n){let c=n;n=u,r(n,c)}}let o=Se(a,e);return a(),o}});import{jsx as h,jsxs as Y}from"react/jsx-runtime";var Mt,Ut,ee=C(()=>{"use strict";Mt=e=>Y("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 48 48",width:"48",height:"48",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",...e,children:[h("path",{d:"M19 27H33"}),h("path",{d:"M19 33H33"}),h("path",{d:"M8 21L9.5 24L12.5 25.5L9.5 27L8 30L6.5 27L3.5 25.5L6.5 24Z"}),h("path",{d:"M36 4L38 8L42 10L38 12L36 16L34 12L30 10L34 8Z"}),h("path",{d:"M16 10V40H36V22"}),h("path",{d:"M16 10H22"}),h("path",{d:"M22 10V23H36"}),h("path",{d:"M22 10L36 22"})]}),Ut=e=>Y("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 48 48",width:"48",height:"48",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",...e,children:[h("path",{d:"M42 38L34 30H10C7.79086 30 6 28.2091 6 26V8C6 5.79086 7.79086 4 10 4H38C40.2091 4 42 5.79086 42 8V38Z"}),h("rect",{x:"14",y:"13",width:"6",height:"6",rx:"1"}),h("rect",{x:"28",y:"13",width:"6",height:"6",rx:"1"}),h("path",{d:"M16 24H32"})]})});var A,q=C(()=>{"use strict";A=class extends Error{constructor(r,n,a){super(r);this.decision=n;this.status=a;this.name="AiBackendError"}}});var ie={};W(ie,{MIN_CHROME_VERSION:()=>ae,checkOnDeviceAvailability:()=>oe,decideCapability:()=>z,resolveBackend:()=>O});import{getWpSuite as Ie}from"@smart-cloud/wpsuite-core";async function te(){let t=await Me?.plugins?.aiKit?.features.store;return M(t).getConfig()??{}}function re(e){let t=e.backendApiName?.trim()||void 0,r=e.backendBaseUrl?.trim()||void 0;return{transport:e.backendTransport??(r?"fetch":t?"gatey":void 0),backendApiName:t,backendBaseUrl:r}}function Ue(e){if(e.mode)return e.mode;let{transport:t}=re(e);return t?"backend-fallback":"local-only"}async function O(){let e=await te(),{transport:t,backendApiName:r,backendBaseUrl:n}=re(e);if(!t)return{available:!1,reason:"No backend configured"};if(t==="fetch")return n?{available:!0,transport:t,baseUrl:n,reason:"Custom fetch backend"}:{available:!1,reason:"backendBaseUrl is missing"};if(!r)return{available:!1,reason:"backendApiName is missing"};let a=globalThis.WpSuite?.plugins?.gatey;return!a?.availability||await a.availability()!=="available"?{available:!1,reason:"Gatey is not available"}:{available:!0,transport:t,apiName:r,reason:"Gatey backend"}}function x(e){return typeof globalThis[e]<"u"}function ne(e){if(!e)return;let t=Number.parseInt(String(e).split(".")[0]??"",10);return Number.isFinite(t)?t:void 0}function D(e,t){return e?.find(r=>r.brand===t)?.version}async function De(){let e=navigator?.userAgentData;if(e){try{let r=(await e.getHighEntropyValues?.(["fullVersionList"]))?.fullVersionList;if(Array.isArray(r)&&r.length>0)return r}catch{}if(Array.isArray(e.brands)&&e.brands.length>0)return e.brands}}function ze(e){let t=e.match(/\b(?:Chrome|Chromium)\/(\d{2,3})\b/i);return t?.[1]?ne(t[1]):void 0}function We(){return!!navigator?.brave}async function Ne(e){if(typeof navigator>"u")return{allowed:!1,reason:"no-navigator"};if(typeof globalThis.isSecureContext=="boolean"&&!globalThis.isSecureContext)return{allowed:!1,reason:"not-secure-context"};let t=navigator.userAgent??"",r=await De(),n=D(r,"Microsoft Edge")??D(r,"Microsoft Edge WebView2"),a=D(r,"Google Chrome")??D(r,"Chromium"),o=!!n||/\bEdg\//i.test(t)||/\bEdgiOS\//i.test(t),i=/\bOPR\//i.test(t),u=/\bVivaldi\//i.test(t),c=/\bSamsungBrowser\//i.test(t),s=/\bFirefox\//i.test(t),d=!/\bChrome\//i.test(t)&&/\bSafari\//i.test(t)&&!/\bChromium\//i.test(t),g=We()||/\bBrave\//i.test(t);if(o||i||u||c||s||d||g)return{allowed:!1,reason:o?"edge":g?"brave":s?"firefox":d?"safari":i?"opera":u?"vivaldi":c?"samsung":"unsupported-browser"};let y=ne(a)??ze(t),p=ae[e];return p?y?y<p?{allowed:!1,reason:`chrome-too-old-${y}-lt-${p}`,chromeMajor:y}:{allowed:!0,reason:"ok",chromeMajor:y}:{allowed:!1,reason:"unknown-chrome-version"}:{allowed:!1,reason:"no-min-version",chromeMajor:y}}async function oe(e,t){try{let r=await Ne(e),n=`browser-gate:${r.reason}${r.chromeMajor?` (chrome ${r.chromeMajor})`:""}`;if(!r.allowed)return{available:!1,status:"unavailable",reason:n};switch(e){case"writer":{if(!x("Writer")||!Writer?.availability)return{available:!1,status:"api-not-present",reason:n};let a=await Writer.availability(t);return{available:a!=="unavailable",status:a,reason:n}}case"rewriter":{if(!x("Rewriter")||!Rewriter?.availability)return{available:!1,status:"api-not-present",reason:n};let a=await Rewriter.availability(t);return{available:a!=="unavailable",status:a,reason:n}}case"summarizer":{if(!x("Summarizer")||!Summarizer?.availability)return{available:!1,status:"api-not-present",reason:n};let a=await Summarizer.availability(t);return{available:a!=="unavailable",status:a,reason:n}}case"proofreader":{if(!x("Proofreader")||!Proofreader?.availability)return{available:!1,status:"api-not-present",reason:n};let a=await Proofreader.availability(t);return{available:a!=="unavailable",status:a,reason:n}}case"language-detector":{if(!x("LanguageDetector")||!LanguageDetector?.availability)return{available:!1,status:"api-not-present",reason:n};let a=await LanguageDetector.availability(t);return{available:a!=="unavailable",status:a,reason:n}}case"translator":{if(!x("Translator")||!Translator?.availability)return{available:!1,status:"api-not-present",reason:n};let a=t;if(!a?.sourceLanguage||!a?.targetLanguage)return{available:!1,status:"error",reason:n,error:new Error("Translator.availability requires sourceLanguage/targetLanguage")};let o=await Translator.availability({...a,sourceLanguage:a.sourceLanguage==="auto"?"en":a.sourceLanguage,targetLanguage:a.sourceLanguage==="auto"||a.sourceLanguage===a.targetLanguage?"hu":a.targetLanguage});return{available:o!=="unavailable",status:o,reason:n}}case"prompt":{if(!x("LanguageModel")||!LanguageModel?.availability)return{available:!1,status:"api-not-present",reason:n};let a=await LanguageModel.availability(t);return{available:a!=="unavailable",status:a,reason:n}}default:return{available:!1,status:"unknown-feature",reason:n}}}catch(r){return{available:!1,status:"error",reason:"exception in availability()",error:r}}}async function z(e,t,r){let n=await te(),a=r||Ue(n),o=await O(),i=await oe(e,t),u=i.available,c=o.available,s={feature:e,mode:a,onDeviceAvailable:u,onDeviceStatus:i.status,onDeviceReason:i.reason,backendAvailable:c,backendTransport:o.transport,backendApiName:o.apiName,backendBaseUrl:o.baseUrl,backendReason:o.reason};return a==="local-only"?u?{...s,source:"on-device",reason:`local-only: on-device available (${i.reason??i.status})`}:{...s,source:"none",reason:`local-only: on-device unavailable (${i.reason??i.status})`}:a==="backend-only"?c?{...s,source:"backend",reason:`backend-only: backend available (${o.reason??"n/a"})`}:{...s,source:"none",reason:`backend-only: backend unavailable (${o.reason??"n/a"})`}:u?{...s,source:"on-device",reason:`backend-fallback: using on-device (${i.reason??i.status})`}:c?{...s,source:"backend",reason:`backend-fallback: using backend (${o.reason??"n/a"}; on-device: ${i.reason??i.status})`}:{...s,source:"none",reason:`No on-device AI or backend available (on-device: ${i.reason??i.status}; backend: ${o.reason??"n/a"})`}}var Me,ae,H=C(()=>{"use strict";U();Me=Ie();ae={summarizer:138,translator:138,"language-detector":138,writer:137,rewriter:137,proofreader:141,prompt:138}});var se={};W(se,{dispatchBackend:()=>K,withRecaptchaHeaders:()=>B});import{getRecaptcha as _e}from"@smart-cloud/wpsuite-core";function qe(){return globalThis.WpSuite?.plugins?.aiKit?.settings??{}}async function He(e){if(e!=="frontend")return;let t=qe();if(!t?.reCaptchaSiteKey)return;let{execute:r}=await _e(t?.useRecaptchaEnterprise||!1);if(typeof r=="function")try{let a=await r(t.reCaptchaSiteKey,{action:"generate"});return typeof a=="string"&&a?a:void 0}catch{return}}async function B(e,t){if(e!=="frontend"||t["X-Recaptcha-Token"]||t["x-recaptcha-token"])return t;let r=await He(e);return r?{...t,"X-Recaptcha-Token":r}:t}function T(e,t){try{e?.onStatus?.(t)}catch{}}function je(e){return typeof e=="object"&&e!==null&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null)}function $e(e,t){if(!je(t))return t;let r=Ge[e];if(!r)return t;let n={};for(let a of r)a in t&&(n[a]=t[a]);return n}function Je(e,t){return(e==="admin"?Ve:Xe)[t]}async function K(e,t,r,n,a={}){let o=Je(t,r),i=$e(r,n);if(!o)throw new A(`No backend path configured for "${r}" (${t}).`,e);if(e.backendTransport==="fetch"){if(!e.backendBaseUrl)throw new A("backendTransport=fetch but backendBaseUrl is missing.",e);return Ze(e.backendBaseUrl,o,i,a,e,r,t)}if(!e.backendApiName)throw new A("backendTransport=gatey but backendApiName is missing.",e);return Qe(e.backendApiName,o,i,a,e,r,t)}async function Ze(e,t,r,n,a,o,i){let u=`${e.replace(/\/+$/,"")}${t}`,c={"content-type":"application/json",...n.headers??{}},s=await B(i,c),d=n.query&&Object.keys(n.query).length>0?"?"+new URLSearchParams(Object.entries(n.query).map(([p,w])=>[p,String(w)])).toString():"";T(n,{feature:o,context:i,step:"backend:request",source:"backend"}),T(n,{feature:o,context:i,step:"backend:waiting",source:"backend"});let g=await fetch(u+d,{method:"POST",headers:s,body:JSON.stringify(r??{}),signal:n.signal,credentials:"omit"});if(T(n,{feature:o,context:i,step:"backend:response",source:"backend"}),!g.ok){let p=`HTTP ${g.status}`;try{let w=await g.text();w&&(p=`${p}: ${w.substring(0,400)}`)}catch{}throw new A(`Fetch backend call failed: ${p}`,a,g.status)}return(g.headers.get("content-type")||"").includes("application/json")?await g.json():await g.text()}async function Qe(e,t,r,n,a,o,i){let c=globalThis.WpSuite?.plugins?.gatey;if(!c?.cognito?.post)throw new A("Gatey backend selected, but Gatey.cognito.post is not available.",a);let s=await B(i,{...n.headers??{}});T(n,{feature:o,context:i,step:"backend:request",source:"backend"}),T(n,{feature:o,context:i,step:"backend:waiting",source:"backend"});let d=c.cognito.post({apiName:e,path:t,options:{body:r,headers:s}});n?.signal?.addEventListener?.("abort",()=>{d.cancel()});let g=await d.response.then(y=>y.body.json());return T(n,{feature:o,context:i,step:"backend:response",source:"backend"}),g}var Ge,Ve,Xe,j=C(()=>{"use strict";q();Ge={prompt:["text","systemPrompt","context","responseConstraint","sessionId","images","imageUrls","feedbackMessageId","feedbackType","knowledgeBaseId","disableKB","enableRerank","kb_filters"],writer:["text","outputLanguage","instruction","context","tone","format","length","knowledgeBaseId","disableKB"],rewriter:["text","outputLanguage","instruction","context","tone","format","length"],summarizer:["text","outputLanguage","instruction","context","type","format","length"],translator:["text","sourceLanguage","targetLanguage"],"language-detector":["text","maxCandidates"],proofreader:["text","expectedInputLanguages"]};Ve={prompt:"/admin/prompt",writer:"/admin/write",rewriter:"/admin/rewrite",summarizer:"/admin/summarize",translator:"/admin/translate","language-detector":"/admin/detect-language",proofreader:"/admin/proofread"},Xe={prompt:"/frontend/prompt",writer:"/frontend/write",rewriter:"/frontend/rewrite",summarizer:"/frontend/summarize",translator:"/frontend/translate","language-detector":"/frontend/detect-language",proofreader:"/frontend/proofread"}});var be={};W(be,{detectLanguage:()=>pt,getPromptOptions:()=>fe,getProofreadOptions:()=>de,getRewriteOptions:()=>ce,getSummarizeOptions:()=>ge,getTranslateOptions:()=>pe,getWriteOptions:()=>le,prompt:()=>At,proofread:()=>dt,rewrite:()=>ct,sendChatMessage:()=>Pt,sendFeedbackMessage:()=>xt,summarize:()=>gt,translate:()=>I,write:()=>lt});import{getWpSuite as Ye}from"@smart-cloud/wpsuite-core";function k(){return(ue?.plugins?.aiKit?.settings??{}).defaultOutputLanguage??"en"}function F(e){let t=["en","ja","es"],r=e.toLowerCase();return t.some(n=>r===n.toLowerCase())}function l(e,t,r,n){try{r?.onStatus?.({feature:e,context:t,...n})}catch{}}function E(){return ue?.plugins?.aiKit?.settings?.sharedContext??void 0}function L(e){return e?.context??"admin"}function G(e){let t=e;return{knowledgeBaseId:typeof t.knowledgeBaseId=="string"?t.knowledgeBaseId:void 0,disableKB:typeof t.disableKB=="boolean"?t.disableKB:void 0}}async function et(e,t,r,n){let a=G(e),o=await me(e.images,r,t,n);return{text:e.messages.filter(i=>i.role==="user").map(i=>i.content).join(`
2
2
  `),systemPrompt:e.messages.filter(i=>i.role==="system").map(i=>i.content).join(`
3
- `),images:o?.images,imageUrls:o?.imageUrls,context:e.sharedContext,saveChatSession:!1,responseConstraint:e.responseConstraint,...a}}async function tt(e,t,r){let n=G(e),a=await me(e.images,t,"frontend",r);return{sessionId:e.sessionId,text:e.message,images:a?.images,imageUrls:a?.imageUrls,context:e.sharedContext,saveChatSession:!0,...n}}async function rt(e){return{sessionId:e.sessionId,feedbackMessageId:e.feedbackMessageId,feedbackType:e.feedbackType,saveChatSession:!0}}function at(e){let t=G(e);return{text:e.prompt,outputLanguage:e.outputLanguage,instruction:e.context?.trim()?e.context.trim():void 0,context:e.sharedContext,tone:e.tone,format:e.format,length:e.length,...t}}function nt(e){return{text:e.text,outputLanguage:e.outputLanguage,instruction:e.context?.trim()?e.context.trim():void 0,context:e.sharedContext,tone:e.tone,format:e.format,length:e.length}}function ot(e){return{text:e.text,outputLanguage:e.outputLanguage,instruction:e.context?.trim()?e.context.trim():void 0,context:e.sharedContext,type:e.type,format:e.format,length:e.length}}function it(e,t,r){return{text:e,sourceLanguage:t,targetLanguage:r}}function st(e,t){let r=t;return{text:e,maxCandidates:typeof r?.maxCandidates=="number"?r.maxCandidates:void 0}}function ut(e){return{text:e.text,expectedInputLanguages:e.expectedInputLanguages}}async function S(e,t,r,n,a,o,i){l(r,e,i,{step:"decide",message:"Deciding capability"});let u=await z(r,n,t);if(l(r,e,i,{step:"decide",source:u.source,message:`Using ${u.source}`}),u.source==="on-device")try{l(r,e,i,{step:"on-device:init",source:"on-device"});let c=await a();return l(r,e,i,{step:"done",source:"on-device"}),c}catch(c){console.error(`Error in on-device ${r}:`,c),l(r,e,i,{step:"error",source:"on-device",message:c.message}),i?.signal?.throwIfAborted()}if(u.mode!=="local-only"&&u.backendAvailable){l(r,e,i,{step:"backend:request",source:"backend"});let c=typeof o=="function"?await o(u):o,s=await K(u,e,r,c,i);return l(r,e,i,{step:"done",source:"backend"}),s}throw new Error(`No capability for "${r}" (${e}). Reason: ${u.reason}`)}function mt(e){let t=Array.isArray(e.images)&&e.images.length>0,r=e.images??[],n=t?r.map(o=>({type:"image",value:o})):[],a;if(typeof e.messages=="string")a=t?[{role:"user",content:[{type:"text",value:e.messages},...n]}]:e.messages;else{let o=e.messages.filter(i=>i.role!=="system").map(i=>({role:i.role==="assistant"?"assistant":"user",content:i.content}));if(t){let i=-1;for(let u=o.length-1;u>=0;u--)if(o[u].role==="user"){i=u;break}if(i===-1)o.push({role:"user",content:[{type:"text",value:""},...n]});else{let u=String(o[i].content??"");o[i]={...o[i],content:[{type:"text",value:u},...n]}}}a=o}return a}function bt(e){return typeof Blob<"u"&&e instanceof Blob}function yt(e){let t=(e??"").toLowerCase();return t.includes("png")?"png":t.includes("webp")?"webp":t.includes("gif")?"gif":t.includes("bmp")?"bmp":"jpg"}function wt(e){let t=(e??"").toLowerCase();return t.includes("png")?"png":t.includes("webp")?"webp":t.includes("gif")?"gif":"jpeg"}async function vt(e){return new Promise((t,r)=>{let n=new FileReader;n.onerror=()=>r(n.error??new Error("FileReader error")),n.onload=()=>t(String(n.result??"")),n.readAsDataURL(e)})}async function kt(e){let t=await vt(e),r=t.indexOf(",");return r>=0?t.substring(r+1):t}async function ht(e,t,r,n,a,o){let i=t==="admin"?"/admin/generate-upload-url":"/frontend/generate-upload-url",u={...o?.headers??{}},c=await B(t,u);if(e.backendTransport==="fetch"){if(!e.backendBaseUrl)throw new Error("backendBaseUrl missing for fetch transport");let p=new URLSearchParams({fileName:r,contentType:n,contentLength:String(a)}).toString(),w=`${e.backendBaseUrl.replace(/\/+$/,"")}${i}?${p}`,v=await fetch(w,{method:"GET",headers:c,signal:o?.signal,credentials:"omit"});if(!v.ok){let V=await v.text().catch(()=>"");throw new Error(`generate-upload-url failed (fetch): HTTP ${v.status}${V?": "+V.substring(0,200):""}`)}let P=await v.json();if(!P?.uploadUrl||!P?.imageKey)throw new Error("generate-upload-url response missing uploadUrl/imageKey");return{uploadUrl:P.uploadUrl,imageKey:P.imageKey}}if(!e.backendApiName)throw new Error("backendApiName missing for gatey transport");let s=globalThis.WpSuite?.plugins?.gatey,d={fileName:r,contentType:n,contentLength:a};if(s?.cognito?.get){let p=await s.cognito.get({apiName:e.backendApiName,path:i,options:{queryParams:Object.keys(d).reduce((v,P)=>(v[P]=String(d[P]),v),{}),headers:c}});o?.signal?.addEventListener?.("abort",()=>{p.cancel()});let w=await p.response.then(v=>v.body.json());if(!w?.uploadUrl||!w?.imageKey)throw new Error("generate-upload-url (gatey get) response missing uploadUrl/imageKey");return{uploadUrl:w.uploadUrl,imageKey:w.imageKey}}if(!s?.cognito?.post)throw new Error("Gatey.cognito.post is not available");let g=s.cognito.post({apiName:e.backendApiName,path:i,options:{body:d,headers:c}});o?.signal?.addEventListener?.("abort",()=>{g.cancel()});let y=await g.response.then(p=>p.body.json());if(!y?.uploadUrl||!y?.imageKey)throw new Error("generate-upload-url (gatey post) response missing uploadUrl/imageKey");return{uploadUrl:y.uploadUrl,imageKey:y.imageKey}}async function Ct(e,t,r,n){let a=await fetch(e,{method:"PUT",headers:{"Content-Type":r||"application/octet-stream"},body:t,signal:n?.signal});if(!a.ok){let o=await a.text().catch(()=>"");throw new Error(`S3 upload failed: HTTP ${a.status}${o?": "+o.substring(0,200):""}`)}}async function me(e,t,r,n){if(!e||e.length===0)return;let a=[];for(let s of e){if(!bt(s))throw new Error("Backend multimodal prompting currently supports only Blob/File inputs for images.");a.push(s)}let o=a.reduce((s,d)=>s+(d.size||0),0);if(Math.ceil(o*1.37+2048*a.length)<=ft){l("prompt",r,n,{step:"backend:request",source:"backend",message:"Inlining images as base64"});let s=[];for(let d of a)s.push({format:wt(d.type),data:await kt(d)});return{images:s}}l("prompt",r,n,{step:"backend:request",source:"backend",message:"Uploading images via signed URL"});let c=[];for(let s=0;s<a.length;s++){let d=a[s],g=d.type||"application/octet-stream",y=d.name||`image_${s}.${yt(g)}`;l("prompt",r,n,{step:"backend:request",source:"backend",message:"Requesting signed URL"});let{uploadUrl:p,imageKey:w}=await ht(t,r,y,g,d.size||0,n);l("prompt",r,n,{step:"backend:waiting",source:"backend",message:"Uploading"}),await Ct(p,d,g,n),c.push(w)}return{imageUrls:c}}var ue,le,lt,ce,ct,de,dt,ge,gt,pt,pe,I,ft,fe,At,Pt,xt,ye=C(()=>{"use strict";j();H();ve();ue=Ye();le=e=>{let t=e.outputLanguage?e.outputLanguage:h(),r={tone:e.tone,format:e.format,length:e.length,outputLanguage:t};return Promise.resolve(r)},lt=async(e,t)=>{let r=L(t),n=e.sharedContext??E(),a=e.outputLanguage?e.outputLanguage:h(),o=a,i=!1;F(a)||(i=!0,a="en");let u=le({...e,outputLanguage:a});return S(r,t?.modeOverride,"writer",u,async()=>{if(typeof Writer>"u")throw new Error("Writer API not available in this browser.");l("writer",r,t,{step:"on-device:init",source:"on-device",message:"Creating Writer session"});let c=await Writer.create({...u,sharedContext:n,monitor(s){s.addEventListener("downloadprogress",d=>{let g=d.loaded;l("writer",r,t,{step:"on-device:download",source:"on-device",progress:g,loaded:g})})}});l("writer",r,t,{step:"on-device:ready",source:"on-device"});try{l("writer",r,t,{step:"on-device:run",source:"on-device",message:"Generating text"});let s=await c.write(e.prompt,{context:e.context,signal:t?.signal});return i?{result:(await I({text:s,sourceLanguage:a,targetLanguage:o})).result}:{result:s}}finally{try{c.destroy()}catch(s){console.error("Error destroying writer:",s)}}},at({...e,sharedContext:n,outputLanguage:o}),t)},ce=e=>{let t=e.outputLanguage?e.outputLanguage:h(),r={tone:e.tone,format:e.format,length:e.length,outputLanguage:t};return Promise.resolve(r)},ct=async(e,t)=>{let r=L(t),n=e.sharedContext??E(),a=e.outputLanguage?e.outputLanguage:h(),o=a,i=!1;F(a)||(i=!0,a="en");let u=ce({...e,outputLanguage:a});return S(r,t?.modeOverride,"rewriter",u,async()=>{if(typeof Rewriter>"u")throw new Error("Rewriter API not available in this browser.");l("rewriter",r,t,{step:"on-device:init",source:"on-device",message:"Creating Rewriter session"});let c=await Rewriter.create({...u,sharedContext:n,monitor(s){s.addEventListener("downloadprogress",d=>{let g=d.loaded;l("rewriter",r,t,{step:"on-device:download",source:"on-device",progress:g,loaded:g})})}});l("rewriter",r,t,{step:"on-device:ready",source:"on-device"});try{l("rewriter",r,t,{step:"on-device:run",source:"on-device",message:"Rewriting text"});let s=await c.rewrite(e.text,{context:e.context,signal:t?.signal});return i?{result:(await I({text:s,sourceLanguage:a,targetLanguage:o})).result}:{result:s}}finally{try{c.destroy()}catch(s){console.error("Error destroying rewriter:",s)}}},nt({...e,sharedContext:n,outputLanguage:o}),t)},de=()=>Promise.resolve({includeCorrectionTypes:!0,includeCorrectionExplanations:!0}),dt=async(e,t)=>{let r=L(t),n=await de();return S(r,t?.modeOverride,"proofreader",n,async()=>{if(typeof Proofreader>"u")throw new Error("Proofreader API not available in this browser.");l("proofreader",r,t,{step:"on-device:init",source:"on-device",message:"Creating Proofreader session"});let a=await Proofreader.create({...n,monitor(o){o.addEventListener("downloadprogress",i=>{let u=i.loaded;l("proofreader",r,t,{step:"on-device:download",source:"on-device",progress:u,loaded:u})})}});l("proofreader",r,t,{step:"on-device:ready",source:"on-device"});try{return l("proofreader",r,t,{step:"on-device:run",source:"on-device",message:"Proofreading"}),{result:await a.proofread(e.text,{signal:t?.signal})}}finally{try{a.destroy()}catch(o){console.error("Error destroying proofreader:",o)}}},ut(e),t)},ge=e=>{let t=e.outputLanguage?e.outputLanguage:h(),r={type:e.type,format:e.format,length:e.length,outputLanguage:t};return Promise.resolve(r)},gt=async(e,t)=>{let r=L(t),n=e.sharedContext??E(),a=e.outputLanguage?e.outputLanguage:h(),o=a,i=!1;F(a)||(i=!0,a="en");let u=await ge({...e,outputLanguage:a});return S(r,t?.modeOverride,"summarizer",u,async()=>{if(typeof Summarizer>"u")throw new Error("Summarizer API not available in this browser.");l("summarizer",r,t,{step:"on-device:init",source:"on-device",message:"Creating Summarizer session"});let c=await Summarizer.create({...u,sharedContext:n,monitor(s){s.addEventListener("downloadprogress",d=>{let g=d.loaded;l("summarizer",r,t,{step:"on-device:download",source:"on-device",progress:g,loaded:g})})}});l("summarizer",r,t,{step:"on-device:ready",source:"on-device"});try{l("summarizer",r,t,{step:"on-device:run",source:"on-device",message:"Summarizing"});let s=await c.summarize(e.text,{context:e.context,signal:t?.signal});return i?{result:(await I({text:s,sourceLanguage:a,targetLanguage:o})).result}:{result:s}}finally{try{c.destroy()}catch(s){console.error("Error destroying summarizer:",s)}}},ot({...e,sharedContext:n,outputLanguage:o}),t)},pt=async(e,t)=>{let r=L(t);return S(r,t?.modeOverride,"language-detector",void 0,async()=>{if(typeof LanguageDetector>"u")throw new Error("LanguageDetector API not available in this browser.");l("language-detector",r,t,{step:"on-device:init",source:"on-device",message:"Creating LanguageDetector session"});let n=await LanguageDetector.create({monitor(a){a.addEventListener("downloadprogress",o=>{let i=o.loaded;l("language-detector",r,t,{step:"on-device:download",source:"on-device",progress:i,loaded:i})})}});l("language-detector",r,t,{step:"on-device:ready",source:"on-device"});try{return l("language-detector",r,t,{step:"on-device:run",source:"on-device",message:"Detecting language"}),{result:{candidates:(await n.detect(e.text,{signal:t?.signal})).filter(o=>we.find(i=>i.value===o.detectedLanguage))}}}finally{try{n.destroy()}catch(a){console.error("Error destroying language detector:",a)}}},st(e.text,t),t)},pe=e=>{let t={sourceLanguage:e.sourceLanguage??"auto",targetLanguage:e.targetLanguage??h()??"en"};return Promise.resolve(t)},I=async(e,t)=>{let r=L(t),n=await pe({...e});return S(r,t?.modeOverride,"translator",n,async()=>{if(typeof Translator>"u")throw new Error("Translator API not available in this browser.");l("translator",r,t,{step:"on-device:init",source:"on-device",message:"Creating Translator session"});let a=await Translator.create({...n,monitor(o){o.addEventListener("downloadprogress",i=>{let u=i.loaded;l("translator",r,t,{step:"on-device:download",source:"on-device",progress:u,loaded:u})})}});l("translator",r,t,{step:"on-device:ready",source:"on-device"});try{l("translator",r,t,{step:"on-device:run",source:"on-device",message:"Translating"});let o=[];return e.text.split(`
3
+ `),images:o?.images,imageUrls:o?.imageUrls,context:e.sharedContext,saveChatSession:!1,responseConstraint:e.responseConstraint,...a}}async function tt(e,t,r){let n=G(e),a=await me(e.images,t,"frontend",r);return{sessionId:e.sessionId,text:e.message,images:a?.images,imageUrls:a?.imageUrls,context:e.sharedContext,saveChatSession:!0,...n}}async function rt(e){return{sessionId:e.sessionId,feedbackMessageId:e.feedbackMessageId,feedbackType:e.feedbackType,saveChatSession:!0}}function at(e){let t=G(e);return{text:e.prompt,outputLanguage:e.outputLanguage,instruction:e.context?.trim()?e.context.trim():void 0,context:e.sharedContext,tone:e.tone,format:e.format,length:e.length,...t}}function nt(e){return{text:e.text,outputLanguage:e.outputLanguage,instruction:e.context?.trim()?e.context.trim():void 0,context:e.sharedContext,tone:e.tone,format:e.format,length:e.length}}function ot(e){return{text:e.text,outputLanguage:e.outputLanguage,instruction:e.context?.trim()?e.context.trim():void 0,context:e.sharedContext,type:e.type,format:e.format,length:e.length}}function it(e,t,r){return{text:e,sourceLanguage:t,targetLanguage:r}}function st(e,t){let r=t;return{text:e,maxCandidates:typeof r?.maxCandidates=="number"?r.maxCandidates:void 0}}function ut(e){return{text:e.text,expectedInputLanguages:e.expectedInputLanguages}}async function S(e,t,r,n,a,o,i){l(r,e,i,{step:"decide",message:"Deciding capability"});let u=await z(r,n,t);if(l(r,e,i,{step:"decide",source:u.source,message:`Using ${u.source}`}),u.source==="on-device")try{l(r,e,i,{step:"on-device:init",source:"on-device"});let c=await a();return l(r,e,i,{step:"done",source:"on-device"}),c}catch(c){console.error(`Error in on-device ${r}:`,c),l(r,e,i,{step:"error",source:"on-device",message:c.message}),i?.signal?.throwIfAborted()}if(u.mode!=="local-only"&&u.backendAvailable){l(r,e,i,{step:"backend:request",source:"backend"});let c=typeof o=="function"?await o(u):o,s=await K(u,e,r,c,i);return l(r,e,i,{step:"done",source:"backend"}),s}throw new Error(`No capability for "${r}" (${e}). Reason: ${u.reason}`)}function mt(e){let t=Array.isArray(e.images)&&e.images.length>0,r=e.images??[],n=t?r.map(o=>({type:"image",value:o})):[],a;if(typeof e.messages=="string")a=t?[{role:"user",content:[{type:"text",value:e.messages},...n]}]:e.messages;else{let o=e.messages.filter(i=>i.role!=="system").map(i=>({role:i.role==="assistant"?"assistant":"user",content:i.content}));if(t){let i=-1;for(let u=o.length-1;u>=0;u--)if(o[u].role==="user"){i=u;break}if(i===-1)o.push({role:"user",content:[{type:"text",value:""},...n]});else{let u=String(o[i].content??"");o[i]={...o[i],content:[{type:"text",value:u},...n]}}}a=o}return a}function bt(e){return typeof Blob<"u"&&e instanceof Blob}function yt(e){let t=(e??"").toLowerCase();return t.includes("png")?"png":t.includes("webp")?"webp":t.includes("gif")?"gif":t.includes("bmp")?"bmp":"jpg"}function wt(e){let t=(e??"").toLowerCase();return t.includes("png")?"png":t.includes("webp")?"webp":t.includes("gif")?"gif":"jpeg"}async function vt(e){return new Promise((t,r)=>{let n=new FileReader;n.onerror=()=>r(n.error??new Error("FileReader error")),n.onload=()=>t(String(n.result??"")),n.readAsDataURL(e)})}async function ht(e){let t=await vt(e),r=t.indexOf(",");return r>=0?t.substring(r+1):t}async function kt(e,t,r,n,a,o){let i=t==="admin"?"/admin/generate-upload-url":"/frontend/generate-upload-url",u={...o?.headers??{}},c=await B(t,u);if(e.backendTransport==="fetch"){if(!e.backendBaseUrl)throw new Error("backendBaseUrl missing for fetch transport");let p=new URLSearchParams({fileName:r,contentType:n,contentLength:String(a)}).toString(),w=`${e.backendBaseUrl.replace(/\/+$/,"")}${i}?${p}`,v=await fetch(w,{method:"GET",headers:c,signal:o?.signal,credentials:"omit"});if(!v.ok){let V=await v.text().catch(()=>"");throw new Error(`generate-upload-url failed (fetch): HTTP ${v.status}${V?": "+V.substring(0,200):""}`)}let P=await v.json();if(!P?.uploadUrl||!P?.imageKey)throw new Error("generate-upload-url response missing uploadUrl/imageKey");return{uploadUrl:P.uploadUrl,imageKey:P.imageKey}}if(!e.backendApiName)throw new Error("backendApiName missing for gatey transport");let s=globalThis.WpSuite?.plugins?.gatey,d={fileName:r,contentType:n,contentLength:a};if(s?.cognito?.get){let p=await s.cognito.get({apiName:e.backendApiName,path:i,options:{queryParams:Object.keys(d).reduce((v,P)=>(v[P]=String(d[P]),v),{}),headers:c}});o?.signal?.addEventListener?.("abort",()=>{p.cancel()});let w=await p.response.then(v=>v.body.json());if(!w?.uploadUrl||!w?.imageKey)throw new Error("generate-upload-url (gatey get) response missing uploadUrl/imageKey");return{uploadUrl:w.uploadUrl,imageKey:w.imageKey}}if(!s?.cognito?.post)throw new Error("Gatey.cognito.post is not available");let g=s.cognito.post({apiName:e.backendApiName,path:i,options:{body:d,headers:c}});o?.signal?.addEventListener?.("abort",()=>{g.cancel()});let y=await g.response.then(p=>p.body.json());if(!y?.uploadUrl||!y?.imageKey)throw new Error("generate-upload-url (gatey post) response missing uploadUrl/imageKey");return{uploadUrl:y.uploadUrl,imageKey:y.imageKey}}async function Ct(e,t,r,n){let a=await fetch(e,{method:"PUT",headers:{"Content-Type":r||"application/octet-stream"},body:t,signal:n?.signal});if(!a.ok){let o=await a.text().catch(()=>"");throw new Error(`S3 upload failed: HTTP ${a.status}${o?": "+o.substring(0,200):""}`)}}async function me(e,t,r,n){if(!e||e.length===0)return;let a=[];for(let s of e){if(!bt(s))throw new Error("Backend multimodal prompting currently supports only Blob/File inputs for images.");a.push(s)}let o=a.reduce((s,d)=>s+(d.size||0),0);if(Math.ceil(o*1.37+2048*a.length)<=ft){l("prompt",r,n,{step:"backend:request",source:"backend",message:"Inlining images as base64"});let s=[];for(let d of a)s.push({format:wt(d.type),data:await ht(d)});return{images:s}}l("prompt",r,n,{step:"backend:request",source:"backend",message:"Uploading images via signed URL"});let c=[];for(let s=0;s<a.length;s++){let d=a[s],g=d.type||"application/octet-stream",y=d.name||`image_${s}.${yt(g)}`;l("prompt",r,n,{step:"backend:request",source:"backend",message:"Requesting signed URL"});let{uploadUrl:p,imageKey:w}=await kt(t,r,y,g,d.size||0,n);l("prompt",r,n,{step:"backend:waiting",source:"backend",message:"Uploading"}),await Ct(p,d,g,n),c.push(w)}return{imageUrls:c}}var ue,le,lt,ce,ct,de,dt,ge,gt,pt,pe,I,ft,fe,At,Pt,xt,ye=C(()=>{"use strict";j();H();ve();ue=Ye();le=e=>{let t=e.outputLanguage?e.outputLanguage:k(),r={tone:e.tone,format:e.format,length:e.length,outputLanguage:t};return Promise.resolve(r)},lt=async(e,t)=>{let r=L(t),n=e.sharedContext??E(),a=e.outputLanguage?e.outputLanguage:k(),o=a,i=!1;F(a)||(i=!0,a="en");let u=le({...e,outputLanguage:a});return S(r,t?.modeOverride,"writer",u,async()=>{if(typeof Writer>"u")throw new Error("Writer API not available in this browser.");l("writer",r,t,{step:"on-device:init",source:"on-device",message:"Creating Writer session"});let c=await Writer.create({...u,sharedContext:n,monitor(s){s.addEventListener("downloadprogress",d=>{let g=d.loaded;l("writer",r,t,{step:"on-device:download",source:"on-device",progress:g,loaded:g})})}});l("writer",r,t,{step:"on-device:ready",source:"on-device"});try{l("writer",r,t,{step:"on-device:run",source:"on-device",message:"Generating text"});let s=await c.write(e.prompt,{context:e.context,signal:t?.signal});return i?{result:(await I({text:s,sourceLanguage:a,targetLanguage:o})).result}:{result:s}}finally{try{c.destroy()}catch(s){console.error("Error destroying writer:",s)}}},at({...e,sharedContext:n,outputLanguage:o}),t)},ce=e=>{let t=e.outputLanguage?e.outputLanguage:k(),r={tone:e.tone,format:e.format,length:e.length,outputLanguage:t};return Promise.resolve(r)},ct=async(e,t)=>{let r=L(t),n=e.sharedContext??E(),a=e.outputLanguage?e.outputLanguage:k(),o=a,i=!1;F(a)||(i=!0,a="en");let u=ce({...e,outputLanguage:a});return S(r,t?.modeOverride,"rewriter",u,async()=>{if(typeof Rewriter>"u")throw new Error("Rewriter API not available in this browser.");l("rewriter",r,t,{step:"on-device:init",source:"on-device",message:"Creating Rewriter session"});let c=await Rewriter.create({...u,sharedContext:n,monitor(s){s.addEventListener("downloadprogress",d=>{let g=d.loaded;l("rewriter",r,t,{step:"on-device:download",source:"on-device",progress:g,loaded:g})})}});l("rewriter",r,t,{step:"on-device:ready",source:"on-device"});try{l("rewriter",r,t,{step:"on-device:run",source:"on-device",message:"Rewriting text"});let s=await c.rewrite(e.text,{context:e.context,signal:t?.signal});return i?{result:(await I({text:s,sourceLanguage:a,targetLanguage:o})).result}:{result:s}}finally{try{c.destroy()}catch(s){console.error("Error destroying rewriter:",s)}}},nt({...e,sharedContext:n,outputLanguage:o}),t)},de=()=>Promise.resolve({includeCorrectionTypes:!0,includeCorrectionExplanations:!0}),dt=async(e,t)=>{let r=L(t),n=await de();return S(r,t?.modeOverride,"proofreader",n,async()=>{if(typeof Proofreader>"u")throw new Error("Proofreader API not available in this browser.");l("proofreader",r,t,{step:"on-device:init",source:"on-device",message:"Creating Proofreader session"});let a=await Proofreader.create({...n,monitor(o){o.addEventListener("downloadprogress",i=>{let u=i.loaded;l("proofreader",r,t,{step:"on-device:download",source:"on-device",progress:u,loaded:u})})}});l("proofreader",r,t,{step:"on-device:ready",source:"on-device"});try{return l("proofreader",r,t,{step:"on-device:run",source:"on-device",message:"Proofreading"}),{result:await a.proofread(e.text,{signal:t?.signal})}}finally{try{a.destroy()}catch(o){console.error("Error destroying proofreader:",o)}}},ut(e),t)},ge=e=>{let t=e.outputLanguage?e.outputLanguage:k(),r={type:e.type,format:e.format,length:e.length,outputLanguage:t};return Promise.resolve(r)},gt=async(e,t)=>{let r=L(t),n=e.sharedContext??E(),a=e.outputLanguage?e.outputLanguage:k(),o=a,i=!1;F(a)||(i=!0,a="en");let u=await ge({...e,outputLanguage:a});return S(r,t?.modeOverride,"summarizer",u,async()=>{if(typeof Summarizer>"u")throw new Error("Summarizer API not available in this browser.");l("summarizer",r,t,{step:"on-device:init",source:"on-device",message:"Creating Summarizer session"});let c=await Summarizer.create({...u,sharedContext:n,monitor(s){s.addEventListener("downloadprogress",d=>{let g=d.loaded;l("summarizer",r,t,{step:"on-device:download",source:"on-device",progress:g,loaded:g})})}});l("summarizer",r,t,{step:"on-device:ready",source:"on-device"});try{l("summarizer",r,t,{step:"on-device:run",source:"on-device",message:"Summarizing"});let s=await c.summarize(e.text,{context:e.context,signal:t?.signal});return i?{result:(await I({text:s,sourceLanguage:a,targetLanguage:o})).result}:{result:s}}finally{try{c.destroy()}catch(s){console.error("Error destroying summarizer:",s)}}},ot({...e,sharedContext:n,outputLanguage:o}),t)},pt=async(e,t)=>{let r=L(t);return S(r,t?.modeOverride,"language-detector",void 0,async()=>{if(typeof LanguageDetector>"u")throw new Error("LanguageDetector API not available in this browser.");l("language-detector",r,t,{step:"on-device:init",source:"on-device",message:"Creating LanguageDetector session"});let n=await LanguageDetector.create({monitor(a){a.addEventListener("downloadprogress",o=>{let i=o.loaded;l("language-detector",r,t,{step:"on-device:download",source:"on-device",progress:i,loaded:i})})}});l("language-detector",r,t,{step:"on-device:ready",source:"on-device"});try{return l("language-detector",r,t,{step:"on-device:run",source:"on-device",message:"Detecting language"}),{result:{candidates:(await n.detect(e.text,{signal:t?.signal})).filter(o=>we.find(i=>i.value===o.detectedLanguage))}}}finally{try{n.destroy()}catch(a){console.error("Error destroying language detector:",a)}}},st(e.text,t),t)},pe=e=>{let t={sourceLanguage:e.sourceLanguage??"auto",targetLanguage:e.targetLanguage??k()??"en"};return Promise.resolve(t)},I=async(e,t)=>{let r=L(t),n=await pe({...e});return S(r,t?.modeOverride,"translator",n,async()=>{if(typeof Translator>"u")throw new Error("Translator API not available in this browser.");l("translator",r,t,{step:"on-device:init",source:"on-device",message:"Creating Translator session"});let a=await Translator.create({...n,monitor(o){o.addEventListener("downloadprogress",i=>{let u=i.loaded;l("translator",r,t,{step:"on-device:download",source:"on-device",progress:u,loaded:u})})}});l("translator",r,t,{step:"on-device:ready",source:"on-device"});try{l("translator",r,t,{step:"on-device:run",source:"on-device",message:"Translating"});let o=[];return e.text.split(`
4
4
  `).forEach(u=>o.push(a.translate(u.trim()))),{result:(await Promise.all(o)).join(`
5
- `)}}finally{try{a.destroy()}catch(o){console.error("Error destroying translator:",o)}}},it(e.text,e.sourceLanguage,e.targetLanguage),t)};ft=4*1024*1024;fe=async e=>{let t=e.outputLanguage?e.outputLanguage:h();return F(t)||(t="en"),{topK:e.topK,temperature:e.temperature,expectedInputs:[{type:"text"},{type:"image"}],expectedOutputs:[{type:"text",languages:[t]}]}},At=async(e,t)=>{let r=L(t),n=e.sharedContext??E(),a=e.outputLanguage?e.outputLanguage:h(),o=a,i=!1;F(a)||(i=!0,a="en");let u=await fe({...e,outputLanguage:a}),c=await z("prompt",u,t?.modeOverride);return S(r,t?.modeOverride,"prompt",u,async()=>{if(typeof LanguageModel>"u")throw new Error("LanguageModel API not available in this browser.");l("prompt",r,t,{step:"on-device:init",source:"on-device",message:"Creating LanguageModel session"});let s=[];if(typeof e.messages!="string"){for(let p of e.messages)p.role==="system"&&p.content.trim()&&s.push(p.content.trim());n&&n.trim()&&s.push("SHARED CONTEXT: "+n.trim())}let d=s.length>0?s.join(`
5
+ `)}}finally{try{a.destroy()}catch(o){console.error("Error destroying translator:",o)}}},it(e.text,e.sourceLanguage,e.targetLanguage),t)};ft=4*1024*1024;fe=async e=>{let t=e.outputLanguage?e.outputLanguage:k();return F(t)||(t="en"),{topK:e.topK,temperature:e.temperature,expectedInputs:[{type:"text"},{type:"image"}],expectedOutputs:[{type:"text",languages:[t]}]}},At=async(e,t)=>{let r=L(t),n=e.sharedContext??E(),a=e.outputLanguage?e.outputLanguage:k(),o=a,i=!1;F(a)||(i=!0,a="en");let u=await fe({...e,outputLanguage:a}),c=await z("prompt",u,t?.modeOverride);return S(r,t?.modeOverride,"prompt",u,async()=>{if(typeof LanguageModel>"u")throw new Error("LanguageModel API not available in this browser.");l("prompt",r,t,{step:"on-device:init",source:"on-device",message:"Creating LanguageModel session"});let s=[];if(typeof e.messages!="string"){for(let p of e.messages)p.role==="system"&&p.content.trim()&&s.push(p.content.trim());n&&n.trim()&&s.push("SHARED CONTEXT: "+n.trim())}let d=s.length>0?s.join(`
6
6
 
7
- `):void 0,g=d?[{role:"system",content:d}]:void 0,y=await LanguageModel.create({...u,initialPrompts:g,monitor(p){p.addEventListener("downloadprogress",w=>{let v=w.loaded;l("prompt",r,t,{step:"on-device:download",source:"on-device",progress:v,loaded:v})})}});l("prompt",r,t,{step:"on-device:ready",source:"on-device"});try{l("prompt",r,t,{step:"on-device:run",source:"on-device",message:"Generating text"});let p=await y.prompt(mt(e),{signal:t?.signal,responseConstraint:e.responseConstraint});return i?{result:(await I({text:p,sourceLanguage:a,targetLanguage:o})).result}:{result:p}}finally{try{y.destroy()}catch(p){console.error("Error destroying LanguageModel:",p)}}},await et({...e,sharedContext:n},r,c,t),t)},Pt=async(e,t)=>{let r="frontend",n=e.sharedContext??E(),a="prompt",o=await O(),i={feature:a,mode:"backend-only",onDeviceAvailable:!1,backendAvailable:o.available,backendTransport:o.transport,backendApiName:o.apiName,backendBaseUrl:o.baseUrl,backendReason:o.reason},u=await tt({sessionId:e.sessionId,message:e.message,images:e.images,sharedContext:n},i,t);l(a,r,t,{step:"backend:request",source:"backend"});let c=await K(i,r,a,u,t);return l(a,r,t,{step:"done",source:"backend"}),c},xt=async(e,t)=>{let r="frontend",n="prompt",a=await O(),o={feature:n,mode:"backend-only",onDeviceAvailable:!1,backendAvailable:a.available,backendTransport:a.transport,backendApiName:a.apiName,backendBaseUrl:a.baseUrl,backendReason:a.reason},i=await rt({sessionId:e.sessionId,feedbackMessageId:e.feedbackMessageId,feedbackType:e.feedbackType});l(n,r,t,{step:"backend:request",source:"backend"});let u=await K(o,r,n,i,t);return l(n,r,t,{step:"done",source:"backend"}),u}});import{attachDefaultPluginRuntime as Lt,TEXT_DOMAIN as f}from"@smart-cloud/wpsuite-core";import{__ as b}from"@wordpress/i18n";var we,$,Yt,er,tr,St,rr,m,ar,nr,or,ir,sr,ur,lr,cr,dr,gr,pr,mr,fr,br,yr,wr,ve=C(()=>{N();U();U();ee();q();we=[{label:b("Arabic",f),value:"ar"},{label:b("Chinese",f),value:"zh"},{label:b("Dutch",f),value:"nl"},{label:b("English",f),value:"en"},{label:b("French",f),value:"fr"},{label:b("German",f),value:"de"},{label:b("Hebrew",f),value:"he"},{label:b("Hindi",f),value:"hi"},{label:b("Hungarian",f),value:"hu"},{label:b("Indonesian",f),value:"id"},{label:b("Italian",f),value:"it"},{label:b("Japanese",f),value:"ja"},{label:b("Korean",f),value:"ko"},{label:b("Norwegian",f),value:"no"},{label:b("Polish",f),value:"pl"},{label:b("Portuguese",f),value:"pt"},{label:b("Russian",f),value:"ru"},{label:b("Spanish",f),value:"es"},{label:b("Swedish",f),value:"sv"},{label:b("Thai",f),value:"th"},{label:b("Turkish",f),value:"tr"},{label:b("Ukrainian",f),value:"uk"}],$=Promise.resolve().then(()=>(H(),ie)),Yt=async()=>(await $).MIN_CHROME_VERSION,er=async(...e)=>(await $).decideCapability(...e),tr=async(...e)=>(await $).checkOnDeviceAvailability(...e),St=Promise.resolve().then(()=>(j(),se)),rr=async(...e)=>(await St).dispatchBackend(...e),m=Promise.resolve().then(()=>(ye(),be)),ar=async(...e)=>(await m).getWriteOptions(...e),nr=async(...e)=>(await m).write(...e),or=async(...e)=>(await m).getRewriteOptions(...e),ir=async(...e)=>(await m).rewrite(...e),sr=async(...e)=>(await m).getProofreadOptions(...e),ur=async(...e)=>(await m).proofread(...e),lr=async(...e)=>(await m).getSummarizeOptions(...e),cr=async(...e)=>(await m).summarize(...e),dr=async(...e)=>(await m).getTranslateOptions(...e),gr=async(...e)=>(await m).translate(...e),pr=async(...e)=>(await m).detectLanguage(...e),mr=async(...e)=>(await m).getPromptOptions(...e),fr=async(...e)=>(await m).prompt(...e),br=async(...e)=>(await m).sendChatMessage(...e),yr=async(...e)=>(await m).sendFeedbackMessage(...e),wr=e=>{let t=globalThis.WpSuite,r=R();if(!r)throw console.error("AiKit plugin is not available"),new Error("AiKit plugin is not available");Lt(r),r.status=r.status??"initializing";let n=Q();return r.features={store:n,renderFeature:async a=>await e({...a,store:await n}),write:async(...a)=>{let o=await m,i=a[1]||{};return a[1]={context:"frontend",...i},o.write(...a)},rewrite:async(...a)=>{let o=await m,i=a[1]||{};return a[1]={context:"frontend",...i},o.rewrite(...a)},proofread:async(...a)=>{let o=await m,i=a[1]||{};return a[1]={context:"frontend",...i},o.proofread(...a)},summarize:async(...a)=>{let o=await m,i=a[1]||{};return a[1]={context:"frontend",...i},o.summarize(...a)},translate:async(...a)=>{let o=await m,i=a[1]||{};return a[1]={context:"frontend",...i},o.translate(...a)},detectLanguage:async(...a)=>{let o=await m,i=a[1]||{};return a[1]={context:"frontend",...i},o.detectLanguage(...a)},prompt:async(...a)=>{let o=await m,i=a[1]||{};return a[1]={context:"frontend",...i},o.prompt(...a)},sendChatMessage:async(...a)=>(await m).sendChatMessage(...a),sendFeedbackMessage:async(...a)=>(await m).sendFeedbackMessage(...a)},n.then(()=>{r.status="available",t?.events?.emit("wpsuite:ai-kit:ready",{key:r.key,version:r.version})}).catch(a=>{r.status="error",console.error("AiKit plugin failed to initialize:",a),t?.events?.emit("wpsuite:ai-kit:error",{key:r.key,error:String(a)})}),r}});ve();export{Ut as AiKitChatbotIcon,Mt as AiKitFeatureIcon,A as BackendError,we as LANGUAGE_OPTIONS,f as TEXT_DOMAIN,tr as checkOnDeviceAvailability,er as decideCapability,pr as detectLanguage,rr as dispatchBackend,R as getAiKitPlugin,Yt as getMinChromeVersions,mr as getPromptOptions,sr as getProofreadOptions,or as getRewriteOptions,he as getStore,Fe as getStoreDispatch,M as getStoreSelect,lr as getSummarizeOptions,dr as getTranslateOptions,ar as getWriteOptions,wr as initializeAiKit,Ee as observeStore,fr as prompt,ur as proofread,ir as rewrite,Z as sanitizeAiKitConfig,br as sendChatMessage,yr as sendFeedbackMessage,cr as summarize,gr as translate,X as waitForAiKitReady,nr as write};
7
+ `):void 0,g=d?[{role:"system",content:d}]:void 0,y=await LanguageModel.create({...u,initialPrompts:g,monitor(p){p.addEventListener("downloadprogress",w=>{let v=w.loaded;l("prompt",r,t,{step:"on-device:download",source:"on-device",progress:v,loaded:v})})}});l("prompt",r,t,{step:"on-device:ready",source:"on-device"});try{l("prompt",r,t,{step:"on-device:run",source:"on-device",message:"Generating text"});let p=await y.prompt(mt(e),{signal:t?.signal,responseConstraint:e.responseConstraint});return i?{result:(await I({text:p,sourceLanguage:a,targetLanguage:o})).result}:{result:p}}finally{try{y.destroy()}catch(p){console.error("Error destroying LanguageModel:",p)}}},await et({...e,sharedContext:n},r,c,t),t)},Pt=async(e,t)=>{let r="frontend",n=e.sharedContext??E(),a="prompt",o=await O(),i={feature:a,mode:"backend-only",onDeviceAvailable:!1,backendAvailable:o.available,backendTransport:o.transport,backendApiName:o.apiName,backendBaseUrl:o.baseUrl,backendReason:o.reason},u=await tt({sessionId:e.sessionId,message:e.message,images:e.images,sharedContext:n},i,t);l(a,r,t,{step:"backend:request",source:"backend"});let c=await K(i,r,a,u,t);return l(a,r,t,{step:"done",source:"backend"}),c},xt=async(e,t)=>{let r="frontend",n="prompt",a=await O(),o={feature:n,mode:"backend-only",onDeviceAvailable:!1,backendAvailable:a.available,backendTransport:a.transport,backendApiName:a.apiName,backendBaseUrl:a.baseUrl,backendReason:a.reason},i=await rt({sessionId:e.sessionId,feedbackMessageId:e.feedbackMessageId,feedbackType:e.feedbackType});l(n,r,t,{step:"backend:request",source:"backend"});let u=await K(o,r,n,i,t);return l(n,r,t,{step:"done",source:"backend"}),u}});import{attachDefaultPluginRuntime as Lt,TEXT_DOMAIN as f}from"@smart-cloud/wpsuite-core";import{__ as b}from"@wordpress/i18n";var we,$,Yt,er,tr,St,rr,m,ar,nr,or,ir,sr,ur,lr,cr,dr,gr,pr,mr,fr,br,yr,wr,ve=C(()=>{N();U();U();ee();q();we=[{label:b("Arabic",f),value:"ar"},{label:b("Chinese",f),value:"zh"},{label:b("Dutch",f),value:"nl"},{label:b("English",f),value:"en"},{label:b("French",f),value:"fr"},{label:b("German",f),value:"de"},{label:b("Hebrew",f),value:"he"},{label:b("Hindi",f),value:"hi"},{label:b("Hungarian",f),value:"hu"},{label:b("Indonesian",f),value:"id"},{label:b("Italian",f),value:"it"},{label:b("Japanese",f),value:"ja"},{label:b("Korean",f),value:"ko"},{label:b("Norwegian",f),value:"no"},{label:b("Polish",f),value:"pl"},{label:b("Portuguese",f),value:"pt"},{label:b("Russian",f),value:"ru"},{label:b("Spanish",f),value:"es"},{label:b("Swedish",f),value:"sv"},{label:b("Thai",f),value:"th"},{label:b("Turkish",f),value:"tr"},{label:b("Ukrainian",f),value:"uk"}],$=Promise.resolve().then(()=>(H(),ie)),Yt=async()=>(await $).MIN_CHROME_VERSION,er=async(...e)=>(await $).decideCapability(...e),tr=async(...e)=>(await $).checkOnDeviceAvailability(...e),St=Promise.resolve().then(()=>(j(),se)),rr=async(...e)=>(await St).dispatchBackend(...e),m=Promise.resolve().then(()=>(ye(),be)),ar=async(...e)=>(await m).getWriteOptions(...e),nr=async(...e)=>(await m).write(...e),or=async(...e)=>(await m).getRewriteOptions(...e),ir=async(...e)=>(await m).rewrite(...e),sr=async(...e)=>(await m).getProofreadOptions(...e),ur=async(...e)=>(await m).proofread(...e),lr=async(...e)=>(await m).getSummarizeOptions(...e),cr=async(...e)=>(await m).summarize(...e),dr=async(...e)=>(await m).getTranslateOptions(...e),gr=async(...e)=>(await m).translate(...e),pr=async(...e)=>(await m).detectLanguage(...e),mr=async(...e)=>(await m).getPromptOptions(...e),fr=async(...e)=>(await m).prompt(...e),br=async(...e)=>(await m).sendChatMessage(...e),yr=async(...e)=>(await m).sendFeedbackMessage(...e),wr=e=>{let t=globalThis.WpSuite,r=R();if(!r)throw console.error("AiKit plugin is not available"),new Error("AiKit plugin is not available");Lt(r),r.status=r.status??"initializing";let n=Q();return r.features={store:n,renderFeature:async a=>await e({...a,store:await n}),write:async(...a)=>{let o=await m,i=a[1]||{};return a[1]={context:"frontend",...i},o.write(...a)},rewrite:async(...a)=>{let o=await m,i=a[1]||{};return a[1]={context:"frontend",...i},o.rewrite(...a)},proofread:async(...a)=>{let o=await m,i=a[1]||{};return a[1]={context:"frontend",...i},o.proofread(...a)},summarize:async(...a)=>{let o=await m,i=a[1]||{};return a[1]={context:"frontend",...i},o.summarize(...a)},translate:async(...a)=>{let o=await m,i=a[1]||{};return a[1]={context:"frontend",...i},o.translate(...a)},detectLanguage:async(...a)=>{let o=await m,i=a[1]||{};return a[1]={context:"frontend",...i},o.detectLanguage(...a)},prompt:async(...a)=>{let o=await m,i=a[1]||{};return a[1]={context:"frontend",...i},o.prompt(...a)},sendChatMessage:async(...a)=>(await m).sendChatMessage(...a),sendFeedbackMessage:async(...a)=>(await m).sendFeedbackMessage(...a)},n.then(()=>{r.status="available",t?.events?.emit("wpsuite:ai-kit:ready",{key:r.key,version:r.version})}).catch(a=>{r.status="error",console.error("AiKit plugin failed to initialize:",a),t?.events?.emit("wpsuite:ai-kit:error",{key:r.key,error:String(a)})}),r}});ve();export{Ut as AiKitChatbotIcon,Mt as AiKitFeatureIcon,A as BackendError,we as LANGUAGE_OPTIONS,f as TEXT_DOMAIN,tr as checkOnDeviceAvailability,er as decideCapability,pr as detectLanguage,rr as dispatchBackend,R as getAiKitPlugin,Yt as getMinChromeVersions,mr as getPromptOptions,sr as getProofreadOptions,or as getRewriteOptions,ke as getStore,Fe as getStoreDispatch,M as getStoreSelect,lr as getSummarizeOptions,dr as getTranslateOptions,ar as getWriteOptions,wr as initializeAiKit,Ee as observeStore,fr as prompt,ur as proofread,ir as rewrite,Z as sanitizeAiKitConfig,br as sendChatMessage,yr as sendFeedbackMessage,cr as summarize,gr as translate,X as waitForAiKitReady,nr as write};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smart-cloud/ai-kit-core",
3
- "version": "1.1.2",
3
+ "version": "1.1.4",
4
4
  "description": "AI Kit Core Package",
5
5
  "author": "Smart Cloud Solutions Inc.",
6
6
  "license": "MIT",