@smart-cloud/ai-kit-core 1.1.4 → 1.1.5
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 +4 -4
- package/dist/index.d.cts +3 -2
- package/dist/index.d.ts +3 -2
- package/dist/index.js +4 -4
- package/package.json +1 -1
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,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(`
|
|
1
|
+
"use strict";var _=Object.defineProperty;var Oe=Object.getOwnPropertyDescriptor;var Be=Object.getOwnPropertyNames;var Ke=Object.prototype.hasOwnProperty;var C=(e,t)=>()=>(e&&(t=e(e=0)),t);var U=(e,t)=>{for(var r in t)_(e,r,{get:t[r],enumerable:!0})},Fe=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of Be(t))!Ke.call(e,a)&&a!==r&&_(e,a,{get:()=>t[a],enumerable:!(n=Oe(t,a))||n.enumerable});return e};var Ee=e=>Fe(_({},"__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=C(()=>{"use strict"});var re,k,j,G,$,Ie,Me,De,Ue,ze,ae,B,ne,oe,z=C(()=>{"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},Ie=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},Me=async()=>{let e=$(await(0,re.getConfig)("aiKit")),t=await Ie();return{config:e,showChatbotPreview:!1,language:void 0,direction:void 0,customTranslations:t}},De={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}}},Ue={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}},ze={},ae=e=>(0,k.dispatch)(e),B=e=>(0,k.select)(e),ne=async()=>{let e=await Me(),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:De,selectors:Ue,resolvers:ze});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 m,ie=C(()=>{"use strict";m="wpsuite-ai-kit"});var v,We,Ne,se=C(()=>{"use strict";v=require("react/jsx-runtime"),We=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"})]}),Ne=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 A,V=C(()=>{"use strict";A=class extends Error{constructor(r,n,a){super(r);this.decision=n;this.status=a;this.name="AiBackendError"}}});var me={};U(me,{MIN_CHROME_VERSION:()=>de,checkOnDeviceAvailability:()=>pe,decideCapability:()=>N,resolveBackend:()=>K});async function le(){let t=await _e?.plugins?.aiKit?.features.store;return B(t).getConfig()??{}}function ce(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 qe(e){if(e.mode)return e.mode;let{transport:t}=ce(e);return t?"backend-fallback":"local-only"}async function K(){let e=await le(),{transport:t,backendApiName:r,backendBaseUrl:n}=ce(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 ge(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 He(){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 je(e){let t=e.match(/\b(?:Chrome|Chromium)\/(\d{2,3})\b/i);return t?.[1]?ge(t[1]):void 0}function Ge(){return!!navigator?.brave}async function $e(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 He(),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=Ge()||/\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=ge(a)??je(t),p=de[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 pe(e,t){try{let r=await $e(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 le(),a=r||qe(n),o=await K(),i=await pe(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 ue,_e,de,X=C(()=>{"use strict";ue=require("@smart-cloud/wpsuite-core");z();_e=(0,ue.getWpSuite)();de={summarizer:138,translator:138,"language-detector":138,writer:137,rewriter:137,proofreader:141,prompt:138}});var be={};U(be,{dispatchBackend:()=>E,withRecaptchaHeaders:()=>F});function Ve(){return globalThis.WpSuite?.plugins?.aiKit?.settings??{}}async function Xe(e){if(e!=="frontend")return;let t=Ve();if(!t?.reCaptchaSiteKey)return;let{execute:r}=await(0,fe.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 Xe(e);return r?{...t,"X-Recaptcha-Token":r}:t}function O(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 Qe(e,t){if(!Je(t))return t;let r=Ze[e];if(!r)return t;let n={};for(let a of r)a in t&&(n[a]=t[a]);return n}function tt(e,t){return(e==="admin"?Ye:et)[t]}async function E(e,t,r,n,a={}){let o=tt(t,r),i=Qe(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 rt(e.backendBaseUrl,o,i,a,e,r,t)}if(!e.backendApiName)throw new A("backendTransport=gatey but backendApiName is missing.",e);return at(e.backendApiName,o,i,a,e,r,t)}async function rt(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 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 at(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 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 fe,Ze,Ye,et,J=C(()=>{"use strict";fe=require("@smart-cloud/wpsuite-core");V();Ze={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"]};Ye={prompt:"/admin/prompt",writer:"/admin/write",rewriter:"/admin/rewrite",summarizer:"/admin/summarize",translator:"/admin/translate","language-detector":"/admin/detect-language",proofreader:"/admin/proofread"},et={prompt:"/frontend/prompt",writer:"/frontend/write",rewriter:"/frontend/rewrite",summarizer:"/frontend/summarize",translator:"/frontend/translate","language-detector":"/frontend/detect-language",proofreader:"/frontend/proofread"}});var Le={};U(Le,{detectLanguage:()=>yt,getPromptOptions:()=>xe,getProofreadOptions:()=>ke,getRewriteOptions:()=>he,getSummarizeOptions:()=>Ce,getTranslateOptions:()=>Ae,getWriteOptions:()=>ve,prompt:()=>St,proofread:()=>ft,rewrite:()=>mt,sendChatMessage:()=>Rt,sendFeedbackMessage:()=>Tt,summarize:()=>bt,translate:()=>D,write:()=>pt});function P(){return(we?.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 we?.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 nt(e,t,r,n){let a=Z(e),o=await Pe(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 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(`
|
|
3
|
+
`),images:o?.images,imageUrls:o?.imageUrls,context:e.sharedContext,saveChatSession:!1,responseConstraint:e.responseConstraint,...a}}async function ot(e,t,r){let n=Z(e),a=await Pe(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 it(e){return{sessionId:e.sessionId,feedbackMessageId:e.feedbackMessageId,feedbackType:e.feedbackType,saveChatSession:!0}}function st(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 ut(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 lt(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 ct(e,t,r){return{text:e,sourceLanguage:t,targetLanguage:r}}function dt(e,t){let r=t;return{text:e,maxCandidates:typeof r?.maxCandidates=="number"?r.maxCandidates:void 0}}function gt(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 wt(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 ht(e){return typeof Blob<"u"&&e instanceof Blob}function kt(e){let t=(e??"").toLowerCase();return t.includes("png")?"png":t.includes("webp")?"webp":t.includes("gif")?"gif":t.includes("bmp")?"bmp":"jpg"}function Ct(e){let t=(e??"").toLowerCase();return t.includes("png")?"png":t.includes("webp")?"webp":t.includes("gif")?"gif":"jpeg"}async function At(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 Pt(e){let t=await At(e),r=t.indexOf(",");return r>=0?t.substring(r+1):t}async function xt(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 Lt(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 Pe(e,t,r,n){if(!e||e.length===0)return;let a=[];for(let s of e){if(!ht(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)<=vt){l("prompt",r,n,{step:"backend:request",source:"backend",message:"Inlining images as base64"});let s=[];for(let d of a)s.push({format:Ct(d.type),data:await Pt(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}.${kt(g)}`;l("prompt",r,n,{step:"backend:request",source:"backend",message:"Requesting signed URL"});let{uploadUrl:p,imageKey:w}=await xt(t,r,y,g,d.size||0,n);l("prompt",r,n,{step:"backend:waiting",source:"backend",message:"Uploading"}),await Lt(p,d,g,n),c.push(w)}return{imageUrls:c}}var ye,we,ve,pt,he,mt,ke,ft,Ce,bt,yt,Ae,D,vt,xe,St,Rt,Tt,Se=C(()=>{"use strict";ye=require("@smart-cloud/wpsuite-core");J();X();Re();we=(0,ye.getWpSuite)();ve=e=>{let t=e.outputLanguage?e.outputLanguage:P(),r={tone:e.tone,format:e.format,length:e.length,outputLanguage:t};return Promise.resolve(r)},pt=async(e,t)=>{let r=R(t),n=e.sharedContext??M(),a=e.outputLanguage?e.outputLanguage:P(),o=a,i=!1;I(a)||(i=!0,a="en");let u=ve({...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 D({text:s,sourceLanguage:a,targetLanguage:o})).result}:{result:s}}finally{try{c.destroy()}catch(s){console.error("Error destroying writer:",s)}}},st({...e,sharedContext:n,outputLanguage:o}),t)},he=e=>{let t=e.outputLanguage?e.outputLanguage:P(),r={tone:e.tone,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:P(),o=a,i=!1;I(a)||(i=!0,a="en");let u=he({...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 D({text:s,sourceLanguage:a,targetLanguage:o})).result}:{result:s}}finally{try{c.destroy()}catch(s){console.error("Error destroying rewriter:",s)}}},ut({...e,sharedContext:n,outputLanguage:o}),t)},ke=()=>Promise.resolve({includeCorrectionTypes:!0,includeCorrectionExplanations:!0}),ft=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)}}},gt(e),t)},Ce=e=>{let t=e.outputLanguage?e.outputLanguage:P(),r={type:e.type,format:e.format,length:e.length,outputLanguage:t};return Promise.resolve(r)},bt=async(e,t)=>{let r=R(t),n=e.sharedContext??M(),a=e.outputLanguage?e.outputLanguage:P(),o=a,i=!1;I(a)||(i=!0,a="en");let u=await Ce({...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 D({text:s,sourceLanguage:a,targetLanguage:o})).result}:{result:s}}finally{try{c.destroy()}catch(s){console.error("Error destroying summarizer:",s)}}},lt({...e,sharedContext:n,outputLanguage:o}),t)},yt=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)}}},dt(e.text,t),t)},Ae=e=>{let t={sourceLanguage:e.sourceLanguage??"auto",targetLanguage:e.targetLanguage??P()??"en"};return Promise.resolve(t)},D=async(e,t)=>{let r=R(t),n=await Ae({...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
|
-
`)}}finally{try{a.destroy()}catch(o){console.error("Error destroying translator:",o)}}},
|
|
5
|
+
`)}}finally{try{a.destroy()}catch(o){console.error("Error destroying translator:",o)}}},ct(e.text,e.sourceLanguage,e.targetLanguage),t)};vt=4*1024*1024;xe=async e=>{let t=e.outputLanguage?e.outputLanguage:P();return I(t)||(t="en"),{topK:e.topK,temperature:e.temperature,expectedInputs:[{type:"text"},{type:"image"}],expectedOutputs:[{type:"text",languages:[t]}]}},St=async(e,t)=>{let r=R(t),n=e.sharedContext??M(),a=e.outputLanguage?e.outputLanguage:P(),o=a,i=!1;I(a)||(i=!0,a="en");let u=await xe({...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 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(
|
|
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(wt(e),{signal:t?.signal,responseConstraint:e.responseConstraint});return i?{result:(await D({text:p,sourceLanguage:a,targetLanguage:o})).result}:{result:p}}finally{try{y.destroy()}catch(p){console.error("Error destroying LanguageModel:",p)}}},await nt({...e,sharedContext:n},r,c,t),t)},Rt=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 ot({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},Tt=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 it({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 Zt={};U(Zt,{AiKitChatbotIcon:()=>Ne,AiKitFeatureIcon:()=>We,BackendError:()=>A,LANGUAGE_OPTIONS:()=>Q,TEXT_DOMAIN:()=>m,checkOnDeviceAvailability:()=>Kt,decideCapability:()=>Bt,detectLanguage:()=>jt,dispatchBackend:()=>Et,getAiKitPlugin:()=>L,getMinChromeVersions:()=>Ot,getPromptOptions:()=>Gt,getProofreadOptions:()=>zt,getRewriteOptions:()=>Dt,getStore:()=>te,getStoreDispatch:()=>ae,getStoreSelect:()=>B,getSummarizeOptions:()=>Nt,getTranslateOptions:()=>qt,getWriteOptions:()=>It,initializeAiKit:()=>Jt,observeStore:()=>oe,prompt:()=>$t,proofread:()=>Wt,rewrite:()=>Ut,sanitizeAiKitConfig:()=>$,sendChatMessage:()=>Vt,sendFeedbackMessage:()=>Xt,summarize:()=>_t,translate:()=>Ht,waitForAiKitReady:()=>q,write:()=>Mt});module.exports=Ee(Zt);var Te,b,Q,Y,Ot,Bt,Kt,Ft,Et,f,It,Mt,Dt,Ut,zt,Wt,Nt,_t,qt,Ht,jt,Gt,$t,Vt,Xt,Jt,Re=C(()=>{Te=require("@smart-cloud/wpsuite-core"),b=require("@wordpress/i18n");H();z();ie();z();se();V();Q=[{label:(0,b.__)("Arabic",m),value:"ar"},{label:(0,b.__)("Chinese",m),value:"zh"},{label:(0,b.__)("Dutch",m),value:"nl"},{label:(0,b.__)("English",m),value:"en"},{label:(0,b.__)("French",m),value:"fr"},{label:(0,b.__)("German",m),value:"de"},{label:(0,b.__)("Hebrew",m),value:"he"},{label:(0,b.__)("Hindi",m),value:"hi"},{label:(0,b.__)("Hungarian",m),value:"hu"},{label:(0,b.__)("Indonesian",m),value:"id"},{label:(0,b.__)("Italian",m),value:"it"},{label:(0,b.__)("Japanese",m),value:"ja"},{label:(0,b.__)("Korean",m),value:"ko"},{label:(0,b.__)("Norwegian",m),value:"no"},{label:(0,b.__)("Polish",m),value:"pl"},{label:(0,b.__)("Portuguese",m),value:"pt"},{label:(0,b.__)("Russian",m),value:"ru"},{label:(0,b.__)("Spanish",m),value:"es"},{label:(0,b.__)("Swedish",m),value:"sv"},{label:(0,b.__)("Thai",m),value:"th"},{label:(0,b.__)("Turkish",m),value:"tr"},{label:(0,b.__)("Ukrainian",m),value:"uk"}],Y=Promise.resolve().then(()=>(X(),me)),Ot=async()=>(await Y).MIN_CHROME_VERSION,Bt=async(...e)=>(await Y).decideCapability(...e),Kt=async(...e)=>(await Y).checkOnDeviceAvailability(...e),Ft=Promise.resolve().then(()=>(J(),be)),Et=async(...e)=>(await Ft).dispatchBackend(...e),f=Promise.resolve().then(()=>(Se(),Le)),It=async(...e)=>(await f).getWriteOptions(...e),Mt=async(...e)=>(await f).write(...e),Dt=async(...e)=>(await f).getRewriteOptions(...e),Ut=async(...e)=>(await f).rewrite(...e),zt=async(...e)=>(await f).getProofreadOptions(...e),Wt=async(...e)=>(await f).proofread(...e),Nt=async(...e)=>(await f).getSummarizeOptions(...e),_t=async(...e)=>(await f).summarize(...e),qt=async(...e)=>(await f).getTranslateOptions(...e),Ht=async(...e)=>(await f).translate(...e),jt=async(...e)=>(await f).detectLanguage(...e),Gt=async(...e)=>(await f).getPromptOptions(...e),$t=async(...e)=>(await f).prompt(...e),Vt=async(...e)=>(await f).sendChatMessage(...e),Xt=async(...e)=>(await f).sendFeedbackMessage(...e),Jt=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,Te.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}});Re();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
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { SubscriptionType, WpSuitePluginBase } from '@smart-cloud/wpsuite-core';
|
|
2
|
-
export { TEXT_DOMAIN } from '@smart-cloud/wpsuite-core';
|
|
3
2
|
import { StoreDescriptor } from '@wordpress/data';
|
|
4
3
|
|
|
5
4
|
interface AiKitConfig {
|
|
@@ -446,6 +445,8 @@ declare function getAiKitPlugin(): AiKitPlugin;
|
|
|
446
445
|
declare function waitForAiKitReady(timeoutMs?: number): Promise<void>;
|
|
447
446
|
declare function getStore(timeoutMs?: number): Promise<Store>;
|
|
448
447
|
|
|
448
|
+
declare const TEXT_DOMAIN = "wpsuite-ai-kit";
|
|
449
|
+
|
|
449
450
|
declare const AiKitFeatureIcon: React.FC<React.SVGProps<SVGSVGElement>>;
|
|
450
451
|
declare const AiKitChatbotIcon: React.FC<React.SVGProps<SVGSVGElement>>;
|
|
451
452
|
|
|
@@ -474,4 +475,4 @@ declare const sendChatMessage: (...args: Parameters<Features["sendChatMessage"]>
|
|
|
474
475
|
declare const sendFeedbackMessage: (...args: Parameters<Features["sendFeedbackMessage"]>) => Promise<PromptResult>;
|
|
475
476
|
declare const initializeAiKit: (renderFeature: (args: AiFeatureArgs) => Promise<AiWorkerHandle>) => AiKitPlugin;
|
|
476
477
|
|
|
477
|
-
export { type AiChatbotLabels, type AiChatbotProps, type AiFeatureArgs, type AiFeatureMode, type AiFeatureProps, type AiKit, AiKitChatbotIcon, type AiKitConfig, type AiKitErrorEvent, AiKitFeatureIcon, type AiKitFeatures, type AiKitLanguageCode, type AiKitLanguageProfile, type AiKitLanguageRef, type AiKitPlugin, type AiKitReadyEvent, type AiKitSettings, type AiKitStatusEvent, type AiKitStatusStep, type AiModePreference, type AiWorkerHandle, type AiWorkerProps, type AnyCreateCoreOptions, type Backend, type BackendCallOptions, BackendError, type BackendTransport, type BuiltInAiFeature, type Capabilities, type CapabilityDecision, type CapabilitySource, type ChatMessageArgs, type ContextKind, type CustomTranslations, type DetectLanguageArgs, type DetectLanguageOutput, type DeviceAvailability, type FeatureOptions, type Features, type FeedbackMessageArgs, type HistoryStorageMode, LANGUAGE_OPTIONS, type OnDeviceUnsupportedLanguageStrategy, type OpenButtonIconLayout, type OpenButtonPosition, type PromptArgs, type PromptImageInput, type PromptMessages, type PromptResult, type ProofreadArgs, type ProofreadOutput, type RewriteArgs, type RewriteResult, type State, type Store, type SummarizeArgs, type SummarizeResult, type TranslateArgs, type TranslateResult, type WriteArgs, type WriteResult, 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 };
|
|
478
|
+
export { type AiChatbotLabels, type AiChatbotProps, type AiFeatureArgs, type AiFeatureMode, type AiFeatureProps, type AiKit, AiKitChatbotIcon, type AiKitConfig, type AiKitErrorEvent, AiKitFeatureIcon, type AiKitFeatures, type AiKitLanguageCode, type AiKitLanguageProfile, type AiKitLanguageRef, type AiKitPlugin, type AiKitReadyEvent, type AiKitSettings, type AiKitStatusEvent, type AiKitStatusStep, type AiModePreference, type AiWorkerHandle, type AiWorkerProps, type AnyCreateCoreOptions, type Backend, type BackendCallOptions, BackendError, type BackendTransport, type BuiltInAiFeature, type Capabilities, type CapabilityDecision, type CapabilitySource, type ChatMessageArgs, type ContextKind, type CustomTranslations, type DetectLanguageArgs, type DetectLanguageOutput, type DeviceAvailability, type FeatureOptions, type Features, type FeedbackMessageArgs, type HistoryStorageMode, LANGUAGE_OPTIONS, type OnDeviceUnsupportedLanguageStrategy, type OpenButtonIconLayout, type OpenButtonPosition, type PromptArgs, type PromptImageInput, type PromptMessages, type PromptResult, type ProofreadArgs, type ProofreadOutput, type RewriteArgs, type RewriteResult, type State, type Store, type SummarizeArgs, type SummarizeResult, TEXT_DOMAIN, type TranslateArgs, type TranslateResult, type WriteArgs, type WriteResult, 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.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { SubscriptionType, WpSuitePluginBase } from '@smart-cloud/wpsuite-core';
|
|
2
|
-
export { TEXT_DOMAIN } from '@smart-cloud/wpsuite-core';
|
|
3
2
|
import { StoreDescriptor } from '@wordpress/data';
|
|
4
3
|
|
|
5
4
|
interface AiKitConfig {
|
|
@@ -446,6 +445,8 @@ declare function getAiKitPlugin(): AiKitPlugin;
|
|
|
446
445
|
declare function waitForAiKitReady(timeoutMs?: number): Promise<void>;
|
|
447
446
|
declare function getStore(timeoutMs?: number): Promise<Store>;
|
|
448
447
|
|
|
448
|
+
declare const TEXT_DOMAIN = "wpsuite-ai-kit";
|
|
449
|
+
|
|
449
450
|
declare const AiKitFeatureIcon: React.FC<React.SVGProps<SVGSVGElement>>;
|
|
450
451
|
declare const AiKitChatbotIcon: React.FC<React.SVGProps<SVGSVGElement>>;
|
|
451
452
|
|
|
@@ -474,4 +475,4 @@ declare const sendChatMessage: (...args: Parameters<Features["sendChatMessage"]>
|
|
|
474
475
|
declare const sendFeedbackMessage: (...args: Parameters<Features["sendFeedbackMessage"]>) => Promise<PromptResult>;
|
|
475
476
|
declare const initializeAiKit: (renderFeature: (args: AiFeatureArgs) => Promise<AiWorkerHandle>) => AiKitPlugin;
|
|
476
477
|
|
|
477
|
-
export { type AiChatbotLabels, type AiChatbotProps, type AiFeatureArgs, type AiFeatureMode, type AiFeatureProps, type AiKit, AiKitChatbotIcon, type AiKitConfig, type AiKitErrorEvent, AiKitFeatureIcon, type AiKitFeatures, type AiKitLanguageCode, type AiKitLanguageProfile, type AiKitLanguageRef, type AiKitPlugin, type AiKitReadyEvent, type AiKitSettings, type AiKitStatusEvent, type AiKitStatusStep, type AiModePreference, type AiWorkerHandle, type AiWorkerProps, type AnyCreateCoreOptions, type Backend, type BackendCallOptions, BackendError, type BackendTransport, type BuiltInAiFeature, type Capabilities, type CapabilityDecision, type CapabilitySource, type ChatMessageArgs, type ContextKind, type CustomTranslations, type DetectLanguageArgs, type DetectLanguageOutput, type DeviceAvailability, type FeatureOptions, type Features, type FeedbackMessageArgs, type HistoryStorageMode, LANGUAGE_OPTIONS, type OnDeviceUnsupportedLanguageStrategy, type OpenButtonIconLayout, type OpenButtonPosition, type PromptArgs, type PromptImageInput, type PromptMessages, type PromptResult, type ProofreadArgs, type ProofreadOutput, type RewriteArgs, type RewriteResult, type State, type Store, type SummarizeArgs, type SummarizeResult, type TranslateArgs, type TranslateResult, type WriteArgs, type WriteResult, 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 };
|
|
478
|
+
export { type AiChatbotLabels, type AiChatbotProps, type AiFeatureArgs, type AiFeatureMode, type AiFeatureProps, type AiKit, AiKitChatbotIcon, type AiKitConfig, type AiKitErrorEvent, AiKitFeatureIcon, type AiKitFeatures, type AiKitLanguageCode, type AiKitLanguageProfile, type AiKitLanguageRef, type AiKitPlugin, type AiKitReadyEvent, type AiKitSettings, type AiKitStatusEvent, type AiKitStatusStep, type AiModePreference, type AiWorkerHandle, type AiWorkerProps, type AnyCreateCoreOptions, type Backend, type BackendCallOptions, BackendError, type BackendTransport, type BuiltInAiFeature, type Capabilities, type CapabilityDecision, type CapabilitySource, type ChatMessageArgs, type ContextKind, type CustomTranslations, type DetectLanguageArgs, type DetectLanguageOutput, type DeviceAvailability, type FeatureOptions, type Features, type FeedbackMessageArgs, type HistoryStorageMode, LANGUAGE_OPTIONS, type OnDeviceUnsupportedLanguageStrategy, type OpenButtonIconLayout, type OpenButtonPosition, type PromptArgs, type PromptImageInput, type PromptMessages, type PromptResult, type ProofreadArgs, type ProofreadOutput, type RewriteArgs, type RewriteResult, type State, type Store, type SummarizeArgs, type SummarizeResult, TEXT_DOMAIN, type TranslateArgs, type TranslateResult, type WriteArgs, type WriteResult, 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.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
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(`
|
|
1
|
+
var ke=Object.defineProperty;var k=(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 Ce(e=1e4){await X(e);let r=R()?.features?.store;if(!r)throw new Error("AiKit store is not available");return r}var N=k(()=>{"use strict"});import{getConfig as Ae}from"@smart-cloud/wpsuite-core";import{createReduxStore as Pe,dispatch as xe,register as Le,select as Se,subscribe as Re}from"@wordpress/data";import{I18n as J}from"aws-amplify/utils";var _,Z,Te,Oe,Be,Ke,Fe,Ee,M,Q,Ie,D=k(()=>{"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},Te=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},Oe=async()=>{let e=Z(await Ae("aiKit")),t=await Te();return{config:e,showChatbotPreview:!1,language:void 0,direction:void 0,customTranslations:t}},Be={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}}},Ke={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}},Fe={},Ee=e=>xe(e),M=e=>Se(e),Q=async()=>{let e=await Oe(),t=Pe("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:Be,selectors:Ke,resolvers:Fe});return Le(t),t},Ie=(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=Re(a,e);return a(),o}});var f,Y=k(()=>{"use strict";f="wpsuite-ai-kit"});import{jsx as h,jsxs as ee}from"react/jsx-runtime";var Ut,zt,te=k(()=>{"use strict";Ut=e=>ee("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"})]}),zt=e=>ee("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=k(()=>{"use strict";A=class extends Error{constructor(r,n,a){super(r);this.decision=n;this.status=a;this.name="AiBackendError"}}});var se={};W(se,{MIN_CHROME_VERSION:()=>ne,checkOnDeviceAvailability:()=>ie,decideCapability:()=>z,resolveBackend:()=>O});import{getWpSuite as Me}from"@smart-cloud/wpsuite-core";async function re(){let t=await De?.plugins?.aiKit?.features.store;return M(t).getConfig()??{}}function ae(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}=ae(e);return t?"backend-fallback":"local-only"}async function O(){let e=await re(),{transport:t,backendApiName:r,backendBaseUrl:n}=ae(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 oe(e){if(!e)return;let t=Number.parseInt(String(e).split(".")[0]??"",10);return Number.isFinite(t)?t:void 0}function U(e,t){return e?.find(r=>r.brand===t)?.version}async function ze(){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 We(e){let t=e.match(/\b(?:Chrome|Chromium)\/(\d{2,3})\b/i);return t?.[1]?oe(t[1]):void 0}function Ne(){return!!navigator?.brave}async function _e(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 ze(),n=U(r,"Microsoft Edge")??U(r,"Microsoft Edge WebView2"),a=U(r,"Google Chrome")??U(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=Ne()||/\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=oe(a)??We(t),p=ne[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 ie(e,t){try{let r=await _e(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 re(),a=r||Ue(n),o=await O(),i=await ie(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 De,ne,H=k(()=>{"use strict";D();De=Me();ne={summarizer:138,translator:138,"language-detector":138,writer:137,rewriter:137,proofreader:141,prompt:138}});var ue={};W(ue,{dispatchBackend:()=>K,withRecaptchaHeaders:()=>B});import{getRecaptcha as qe}from"@smart-cloud/wpsuite-core";function He(){return globalThis.WpSuite?.plugins?.aiKit?.settings??{}}async function je(e){if(e!=="frontend")return;let t=He();if(!t?.reCaptchaSiteKey)return;let{execute:r}=await qe(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 je(e);return r?{...t,"X-Recaptcha-Token":r}:t}function T(e,t){try{e?.onStatus?.(t)}catch{}}function Ge(e){return typeof e=="object"&&e!==null&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null)}function Ve(e,t){if(!Ge(t))return t;let r=$e[e];if(!r)return t;let n={};for(let a of r)a in t&&(n[a]=t[a]);return n}function Ze(e,t){return(e==="admin"?Xe:Je)[t]}async function K(e,t,r,n,a={}){let o=Ze(t,r),i=Ve(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 Qe(e.backendBaseUrl,o,i,a,e,r,t)}if(!e.backendApiName)throw new A("backendTransport=gatey but backendApiName is missing.",e);return Ye(e.backendApiName,o,i,a,e,r,t)}async function Qe(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 Ye(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 $e,Xe,Je,j=k(()=>{"use strict";q();$e={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"]};Xe={prompt:"/admin/prompt",writer:"/admin/write",rewriter:"/admin/rewrite",summarizer:"/admin/summarize",translator:"/admin/translate","language-detector":"/admin/detect-language",proofreader:"/admin/proofread"},Je={prompt:"/frontend/prompt",writer:"/frontend/write",rewriter:"/frontend/rewrite",summarizer:"/frontend/summarize",translator:"/frontend/translate","language-detector":"/frontend/detect-language",proofreader:"/frontend/proofread"}});var ye={};W(ye,{detectLanguage:()=>mt,getPromptOptions:()=>be,getProofreadOptions:()=>ge,getRewriteOptions:()=>de,getSummarizeOptions:()=>pe,getTranslateOptions:()=>me,getWriteOptions:()=>ce,prompt:()=>Pt,proofread:()=>gt,rewrite:()=>dt,sendChatMessage:()=>xt,sendFeedbackMessage:()=>Lt,summarize:()=>pt,translate:()=>I,write:()=>ct});import{getWpSuite as et}from"@smart-cloud/wpsuite-core";function C(){return(le?.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 le?.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 tt(e,t,r,n){let a=G(e),o=await fe(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 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(`
|
|
3
|
+
`),images:o?.images,imageUrls:o?.imageUrls,context:e.sharedContext,saveChatSession:!1,responseConstraint:e.responseConstraint,...a}}async function rt(e,t,r){let n=G(e),a=await fe(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 at(e){return{sessionId:e.sessionId,feedbackMessageId:e.feedbackMessageId,feedbackType:e.feedbackType,saveChatSession:!0}}function nt(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 ot(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 it(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 st(e,t,r){return{text:e,sourceLanguage:t,targetLanguage:r}}function ut(e,t){let r=t;return{text:e,maxCandidates:typeof r?.maxCandidates=="number"?r.maxCandidates:void 0}}function lt(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 ft(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 yt(e){return typeof Blob<"u"&&e instanceof Blob}function wt(e){let t=(e??"").toLowerCase();return t.includes("png")?"png":t.includes("webp")?"webp":t.includes("gif")?"gif":t.includes("bmp")?"bmp":"jpg"}function vt(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 kt(e){let t=await ht(e),r=t.indexOf(",");return r>=0?t.substring(r+1):t}async function Ct(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 At(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 fe(e,t,r,n){if(!e||e.length===0)return;let a=[];for(let s of e){if(!yt(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)<=bt){l("prompt",r,n,{step:"backend:request",source:"backend",message:"Inlining images as base64"});let s=[];for(let d of a)s.push({format:vt(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}.${wt(g)}`;l("prompt",r,n,{step:"backend:request",source:"backend",message:"Requesting signed URL"});let{uploadUrl:p,imageKey:w}=await Ct(t,r,y,g,d.size||0,n);l("prompt",r,n,{step:"backend:waiting",source:"backend",message:"Uploading"}),await At(p,d,g,n),c.push(w)}return{imageUrls:c}}var le,ce,ct,de,dt,ge,gt,pe,pt,mt,me,I,bt,be,Pt,xt,Lt,we=k(()=>{"use strict";j();H();he();le=et();ce=e=>{let t=e.outputLanguage?e.outputLanguage:C(),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:C(),o=a,i=!1;F(a)||(i=!0,a="en");let u=ce({...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)}}},nt({...e,sharedContext:n,outputLanguage:o}),t)},de=e=>{let t=e.outputLanguage?e.outputLanguage:C(),r={tone:e.tone,format:e.format,length:e.length,outputLanguage:t};return Promise.resolve(r)},dt=async(e,t)=>{let r=L(t),n=e.sharedContext??E(),a=e.outputLanguage?e.outputLanguage:C(),o=a,i=!1;F(a)||(i=!0,a="en");let u=de({...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)}}},ot({...e,sharedContext:n,outputLanguage:o}),t)},ge=()=>Promise.resolve({includeCorrectionTypes:!0,includeCorrectionExplanations:!0}),gt=async(e,t)=>{let r=L(t),n=await ge();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)}}},lt(e),t)},pe=e=>{let t=e.outputLanguage?e.outputLanguage:C(),r={type:e.type,format:e.format,length:e.length,outputLanguage:t};return Promise.resolve(r)},pt=async(e,t)=>{let r=L(t),n=e.sharedContext??E(),a=e.outputLanguage?e.outputLanguage:C(),o=a,i=!1;F(a)||(i=!0,a="en");let u=await pe({...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)}}},it({...e,sharedContext:n,outputLanguage:o}),t)},mt=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=>ve.find(i=>i.value===o.detectedLanguage))}}}finally{try{n.destroy()}catch(a){console.error("Error destroying language detector:",a)}}},ut(e.text,t),t)},me=e=>{let t={sourceLanguage:e.sourceLanguage??"auto",targetLanguage:e.targetLanguage??C()??"en"};return Promise.resolve(t)},I=async(e,t)=>{let r=L(t),n=await me({...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)}}},
|
|
5
|
+
`)}}finally{try{a.destroy()}catch(o){console.error("Error destroying translator:",o)}}},st(e.text,e.sourceLanguage,e.targetLanguage),t)};bt=4*1024*1024;be=async e=>{let t=e.outputLanguage?e.outputLanguage:C();return F(t)||(t="en"),{topK:e.topK,temperature:e.temperature,expectedInputs:[{type:"text"},{type:"image"}],expectedOutputs:[{type:"text",languages:[t]}]}},Pt=async(e,t)=>{let r=L(t),n=e.sharedContext??E(),a=e.outputLanguage?e.outputLanguage:C(),o=a,i=!1;F(a)||(i=!0,a="en");let u=await be({...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(
|
|
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(ft(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 tt({...e,sharedContext:n},r,c,t),t)},xt=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 rt({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},Lt=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 at({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 St}from"@smart-cloud/wpsuite-core";import{__ as b}from"@wordpress/i18n";var ve,$,rr,ar,nr,Rt,or,m,ir,sr,ur,lr,cr,dr,gr,pr,mr,fr,br,yr,wr,vr,hr,kr,he=k(()=>{N();D();Y();D();te();q();ve=[{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(),se)),rr=async()=>(await $).MIN_CHROME_VERSION,ar=async(...e)=>(await $).decideCapability(...e),nr=async(...e)=>(await $).checkOnDeviceAvailability(...e),Rt=Promise.resolve().then(()=>(j(),ue)),or=async(...e)=>(await Rt).dispatchBackend(...e),m=Promise.resolve().then(()=>(we(),ye)),ir=async(...e)=>(await m).getWriteOptions(...e),sr=async(...e)=>(await m).write(...e),ur=async(...e)=>(await m).getRewriteOptions(...e),lr=async(...e)=>(await m).rewrite(...e),cr=async(...e)=>(await m).getProofreadOptions(...e),dr=async(...e)=>(await m).proofread(...e),gr=async(...e)=>(await m).getSummarizeOptions(...e),pr=async(...e)=>(await m).summarize(...e),mr=async(...e)=>(await m).getTranslateOptions(...e),fr=async(...e)=>(await m).translate(...e),br=async(...e)=>(await m).detectLanguage(...e),yr=async(...e)=>(await m).getPromptOptions(...e),wr=async(...e)=>(await m).prompt(...e),vr=async(...e)=>(await m).sendChatMessage(...e),hr=async(...e)=>(await m).sendFeedbackMessage(...e),kr=e=>{let t=globalThis.WpSuite,r=R();if(!r)throw console.error("AiKit plugin is not available"),new Error("AiKit plugin is not available");St(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}});he();export{zt as AiKitChatbotIcon,Ut as AiKitFeatureIcon,A as BackendError,ve as LANGUAGE_OPTIONS,f as TEXT_DOMAIN,nr as checkOnDeviceAvailability,ar as decideCapability,br as detectLanguage,or as dispatchBackend,R as getAiKitPlugin,rr as getMinChromeVersions,yr as getPromptOptions,cr as getProofreadOptions,ur as getRewriteOptions,Ce as getStore,Ee as getStoreDispatch,M as getStoreSelect,gr as getSummarizeOptions,mr as getTranslateOptions,ir as getWriteOptions,kr as initializeAiKit,Ie as observeStore,wr as prompt,dr as proofread,lr as rewrite,Z as sanitizeAiKitConfig,vr as sendChatMessage,hr as sendFeedbackMessage,pr as summarize,fr as translate,X as waitForAiKitReady,sr as write};
|