@smart-cloud/ai-kit-core 1.5.1 → 1.5.3
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 +1 -1
- package/dist/index.js +1 -1
- package/dist/types.d.ts +0 -2
- package/package.json +32 -16
package/dist/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var ae=Object.defineProperty;var st=Object.getOwnPropertyDescriptor;var it=Object.getOwnPropertyNames;var ut=Object.prototype.hasOwnProperty;var P=(e,t)=>()=>(e&&(t=e(e=0)),t);var V=(e,t)=>{for(var n in t)ae(e,n,{get:t[n],enumerable:!0})},ct=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of it(t))!ut.call(e,o)&&o!==n&&ae(e,o,{get:()=>t[o],enumerable:!(r=st(t,o))||r.enumerable});return e};var lt=e=>ct(ae({},"__esModule",{value:!0}),e);function T(){return globalThis.WpSuite?.plugins?.aiKit}async function oe(e=8e3){let t=T();if(t?.status!=="available"){if(t?.status==="error")throw new Error("AiKit failed");await new Promise((n,r)=>{let o=()=>s(n),a=()=>s(()=>r(new Error("AiKit failed"))),s=u=>{window.removeEventListener("wpsuite:ai-kit:ready",o),window.removeEventListener("wpsuite:ai-kit:error",a),i&&clearTimeout(i),u()};window.addEventListener("wpsuite:ai-kit:ready",o,{once:!0}),window.addEventListener("wpsuite:ai-kit:error",a,{once:!0});let i=e?window.setTimeout(()=>s(()=>r(new Error("AiKit timeout"))),e):0})}}async function ye(e=1e4){await oe(e);let n=T()?.features?.store;if(!n)throw new Error("AiKit store is not available");return n}var $=P(()=>{"use strict"});var W,x,se,ie,G,dt,gt,pt,mt,ft,we,_,he,ke,Ce,Q=P(()=>{"use strict";W=require("@smart-cloud/wpsuite-core"),x=require("@wordpress/data"),se=require("aws-amplify/utils");$();typeof WpSuite<"u"?ie=WpSuite.siteSettings:ie={};G=e=>{let t=e&&typeof e=="object"?e:{},n={};return typeof t.mode=="string"&&(n.mode=t.mode),typeof t.backendTransport=="string"&&(n.backendTransport=t.backendTransport),typeof t.backendApiName=="string"&&(n.backendApiName=t.backendApiName),typeof t.backendBaseUrl=="string"&&(n.backendBaseUrl=t.backendBaseUrl),typeof t.subscriptionType=="string"&&(n.subscriptionType=t.subscriptionType),typeof t.enableChatbot=="boolean"&&(n.enableChatbot=t.enableChatbot),typeof t.chatbot=="object"&&t.chatbot!==null&&(n.chatbot=t.chatbot),n},dt=async()=>{let e=T();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="+ie.lastUpdate).then(n=>n.ok?n.text():null).then(n=>n?JSON.parse(n):null).catch(()=>null)),t??null},gt=async()=>{let e=G(await(0,W.getConfig)("aiKit")),t=await dt();return{config:e,showChatbotPreview:!1,language:void 0,direction:void 0,customTranslations:t}},pt={setShowChatbotPreview(e){return{type:"SET_SHOW_CHATBOT_PREVIEW",showChatbotPreview:e}},setLanguage(e){return!e||e==="system"?se.I18n.setLanguage(""):se.I18n.setLanguage(e),{type:"SET_LANGUAGE",language:e}},setDirection(e){return{type:"SET_DIRECTION",direction:e}},setConfig:e=>({type:"SET_CONFIG",config:e})},mt={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}},ft={},we=e=>{let t=(0,x.dispatch)(e);return delete t.setConfig,t},_=e=>(0,x.select)(e),he=async e=>{(0,W.getWpSuite)().siteSettings.lastUpdate=Date.now();let t=await(0,W.getConfig)("aiKit"),n=G(t);(0,x.dispatch)(e).setConfig(n)},ke=async()=>{let e=await gt(),t=(0,x.createReduxStore)("smartcloud/ai-kit",{reducer(n=e,r){switch(r.type){case"SET_LANGUAGE":return{...n,language:r.language};case"SET_DIRECTION":return{...n,direction:r.direction};case"SET_SHOW_CHATBOT_PREVIEW":return{...n,showChatbotPreview:r.showChatbotPreview};case"SET_CONFIG":return{...n,config:r.config}}return n},actions:pt,selectors:mt,resolvers:ft});return(0,x.register)(t),t},Ce=(e,t,n)=>{let r;function o(){let s=_(e).getState(),i=t(s);if(i!==r){let u=r;r=i,n(r,u)}}let a=(0,x.subscribe)(o,e);return o(),a}});var k,ve=P(()=>{"use strict";k="smartcloud-ai-kit"});var v,bt,yt,wt,Ae=P(()=>{"use strict";v=require("react/jsx-runtime"),bt=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"})]}),yt=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"})]}),wt=e=>(0,v.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"48",height:"48",viewBox:"0 0 48 48",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",...e,children:[(0,v.jsx)("path",{stroke:"none",d:"M0 0h48v48H0z",fill:"none"}),(0,v.jsx)("path",{d:"M6 20a14 14 0 1 0 28 0a14 14 0 1 0 -28 0"}),(0,v.jsx)("path",{d:"M42 42l-12 -12"}),(0,v.jsx)("path",{d:"M20 20a3 3 0 1 0 -2.28 -4.948"}),(0,v.jsx)("circle",{cx:"20",cy:"26",r:"0.9",fill:"currentColor",stroke:"none"})]})});var S,ue=P(()=>{"use strict";S=class extends Error{constructor(n,r,o){super(n);this.decision=r;this.status=o;this.name="AiBackendError"}}});var Be={};V(Be,{MIN_CHROME_VERSION:()=>Le,checkOnDeviceAvailability:()=>Re,decideCapability:()=>J,isOnDeviceLanguageSupported:()=>B,resolveBackend:()=>F});async function Se(){let t=await(0,xe.getWpSuite)()?.plugins?.aiKit?.features.store;return _(t).getConfig()??{}}function Te(e){let t=e.backendApiName?.trim()||void 0,n=e.backendBaseUrl?.trim()||void 0;return{transport:e.backendTransport??(n?"fetch":t?"gatey":void 0),backendApiName:t,backendBaseUrl:n}}function ht(e){if(e.mode)return e.mode;let{transport:t}=Te(e);return t?"backend-fallback":"local-only"}async function F(){let e=await Se(),{transport:t,backendApiName:n,backendBaseUrl:r}=Te(e);if(!t)return{available:!1,reason:"No backend configured"};if(t==="fetch")return r?{available:!0,transport:t,baseUrl:r,reason:"Custom fetch backend"}:{available:!1,reason:"backendBaseUrl is missing"};if(!n)return{available:!1,reason:"backendApiName is missing"};let o=(0,Pe.getGateyPlugin)();return!o?.availability||await o.availability()!=="available"?{available:!1,reason:"Gatey is not available"}:{available:!0,transport:t,apiName:n,reason:"Gatey backend"}}function R(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 X(e,t){return e?.find(n=>n.brand===t)?.version}async function Ct(){let e=navigator?.userAgentData;if(e){try{let n=(await e.getHighEntropyValues?.(["fullVersionList"]))?.fullVersionList;if(Array.isArray(n)&&n.length>0)return n}catch{}if(Array.isArray(e.brands)&&e.brands.length>0)return e.brands}}function vt(e){let t=e.match(/\b(?:Chrome|Chromium)\/(\d{2,3})\b/i);return t?.[1]?Oe(t[1]):void 0}function At(){return!!navigator?.brave}async function xt(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??"",n=await Ct(),r=X(n,"Microsoft Edge")??X(n,"Microsoft Edge WebView2"),o=X(n,"Google Chrome")??X(n,"Chromium"),a=!!r||/\bEdg\//i.test(t)||/\bEdgiOS\//i.test(t),s=/\bOPR\//i.test(t),i=/\bVivaldi\//i.test(t),u=/\bSamsungBrowser\//i.test(t),c=/\bFirefox\//i.test(t),p=!/\bChrome\//i.test(t)&&/\bSafari\//i.test(t)&&!/\bChromium\//i.test(t),l=At()||/\bBrave\//i.test(t);if(a||s||i||u||c||p||l)return{allowed:!1,reason:a?"edge":l?"brave":c?"firefox":p?"safari":s?"opera":i?"vivaldi":u?"samsung":"unsupported-browser"};let m=Oe(o)??vt(t),g=Le[e];return g?m?m<g?{allowed:!1,reason:`chrome-too-old-${m}-lt-${g}`,chromeMajor:m}:{allowed:!0,reason:"ok",chromeMajor:m}:{allowed:!1,reason:"unknown-chrome-version"}:{allowed:!1,reason:"no-min-version",chromeMajor:m}}async function Re(e,t){try{let n=await xt(e),r=`browser-gate:${n.reason}${n.chromeMajor?` (chrome ${n.chromeMajor})`:""}`;if(!n.allowed)return{available:!1,status:"unavailable",reason:r};let o=a=>a==="unavailable"?kt.has(e)?"requires Chrome flags or Origin Trial tokens \u2014 see AI-Kit Diagnostics":"check hardware requirements or see AI-Kit Diagnostics":r;switch(e){case"writer":{if(!R("Writer")||!Writer?.availability)return{available:!1,status:"api-not-present",reason:r};let a=await Writer.availability(t);return{available:a!=="unavailable",status:a,reason:o(a)}}case"rewriter":{if(!R("Rewriter")||!Rewriter?.availability)return{available:!1,status:"api-not-present",reason:r};let a=await Rewriter.availability(t);return{available:a!=="unavailable",status:a,reason:o(a)}}case"summarizer":{if(!R("Summarizer")||!Summarizer?.availability)return{available:!1,status:"api-not-present",reason:r};let a=await Summarizer.availability(t);return{available:a!=="unavailable",status:a,reason:o(a)}}case"proofreader":{if(!R("Proofreader")||!Proofreader?.availability)return{available:!1,status:"api-not-present",reason:r};let a=await Proofreader.availability(t);return{available:a!=="unavailable",status:a,reason:o(a)}}case"language-detector":{if(!R("LanguageDetector")||!LanguageDetector?.availability)return{available:!1,status:"api-not-present",reason:r};let a=await LanguageDetector.availability(t);return{available:a!=="unavailable",status:a,reason:o(a)}}case"translator":{if(!R("Translator")||!Translator?.availability)return{available:!1,status:"api-not-present",reason:r};let a=t;if(!a?.sourceLanguage||!a?.targetLanguage)return{available:!1,status:"error",reason:r,error:new Error("Translator.availability requires sourceLanguage/targetLanguage")};let s=await Translator.availability({...a,sourceLanguage:a.sourceLanguage==="auto"?"en":a.sourceLanguage,targetLanguage:a.sourceLanguage==="auto"||a.sourceLanguage===a.targetLanguage?"hu":a.targetLanguage});return{available:s!=="unavailable",status:s,reason:o(s)}}case"prompt":{if(!R("LanguageModel")||!LanguageModel?.availability)return{available:!1,status:"api-not-present",reason:r};let a=await LanguageModel.availability(t);return{available:a!=="unavailable",status:a,reason:o(a)}}default:return{available:!1,status:"unknown-feature",reason:r}}}catch(n){return{available:!1,status:"error",reason:"exception in availability()",error:n}}}function B(e){let t=["en","ja","es"],n=e.toLowerCase();return t.some(r=>n===r.toLowerCase())}async function J(e,t,n){let r=await Se(),o=n||ht(r),a=await F(),s=await Re(e,t),i=s.available,u=a.available,c={feature:e,mode:o,onDeviceAvailable:i,onDeviceStatus:s.status,onDeviceReason:s.reason,backendAvailable:u,backendTransport:a.transport,backendApiName:a.apiName,backendBaseUrl:a.baseUrl,backendReason:a.reason};return o==="local-only"?i?{...c,source:"on-device",reason:`local-only, on-device available (${s.reason??s.status})`}:{...c,source:"none",reason:`local-only, but on-device unavailable (${s.reason??s.status})`}:o==="backend-only"?u?{...c,source:"backend",reason:`backend-only, backend available (${a.reason??"n/a"})`}:{...c,source:"none",reason:`backend-only, but backend unavailable (${a.reason??"n/a"})`}:i?{...c,source:"on-device",reason:`backend-fallback, using on-device (${s.reason??s.status})`}:u?{...c,source:"backend",reason:`backend-fallback, using backend (${a.reason??"n/a"}; on-device: ${s.reason??s.status})`}:{...c,source:"none",reason:`No on-device AI or backend available (on-device: ${s.reason??s.status}; backend: ${a.reason??"n/a"})`}}var xe,Pe,Le,kt,ce=P(()=>{"use strict";xe=require("@smart-cloud/wpsuite-core"),Pe=require("@smart-cloud/gatey-core");Q();Le={summarizer:138,translator:138,"language-detector":138,writer:137,rewriter:137,proofreader:141,prompt:138},kt=new Set(["writer","rewriter","proofreader","prompt"])});var Ue={};V(Ue,{dispatchCustomBackend:()=>Ft,dispatchFeatureBackend:()=>D,withRecaptchaHeaders:()=>N});function Pt(e){if(!e)return;let t=Date.parse(e);return Number.isFinite(t)?t:void 0}function St(e){let t=e?.reCaptchaChatTtlSeconds,n=typeof t=="number"&&Number.isFinite(t)?Math.max(0,t):120;return Math.min(3600,n)*1e3}function Tt(e,t){let n=St(t);if(n<=0)return!1;let r=Ie.get(e);return r?Date.now()-r<n:!1}function le(e,t){let n=Pt(t);n&&Ie.set(e,n)}function Me(e,t){if(e!=="frontend"||!Ke(t)||t.saveChatSession!==!0)return;let n=t.sessionId;return typeof n=="string"&&n.trim()?n.trim():void 0}function Fe(e,t){if(!e)return;try{if(typeof e.get=="function")return e.get(t)??void 0}catch{}let n=Object.keys(e).find(o=>o.toLowerCase()===t.toLowerCase());if(!n)return;let r=e[n];return typeof r=="string"&&r?r:void 0}async function Lt(e,t){if(e!=="frontend")return;let n=(0,Z.getWpSuite)()?.siteSettings;if(!n?.reCaptchaPublicKey||t?.cacheKey&&Tt(t.cacheKey,T()?.settings||{}))return;let{execute:r}=await(0,Z.getRecaptcha)(n?.useRecaptchaEnterprise||!1);if(typeof r=="function")try{let a=await r(n.reCaptchaPublicKey,{action:"generate"});return typeof a=="string"&&a?a:void 0}catch{return}}async function N(e,t,n){if(e!=="frontend"||t["X-Recaptcha-Token"]||t["x-recaptcha-token"])return t;let r=await Lt(e,n);return r?{...t,"X-Recaptcha-Token":r}:t}function K(e,t){try{e?.onStatus?.(t)}catch{}}function Ke(e){return typeof e=="object"&&e!==null&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null)}function Rt(e,t){if(!Ke(t))return t;let n=Ot[e];if(!n)return t;let r={};for(let o of n)o in t&&(r[o]=t[o]);return r}function It(e,t){return(e==="admin"?Bt:Et)[t]}function Mt(e,t){return`${e==="admin"?"/admin":"/frontend"}${t}`}async function D(e,t,n,r,o={}){let a=It(t,n);if(!a)throw new S(`No backend path configured for "${n}" (${t}).`,e);let s=Rt(n,r);return De(e,t,n,a,"POST",s,o)}async function Ft(e,t,n,r,o,a={}){let s=Mt(t,n);return De(e,t,"prompt",s,r,o,a)}async function De(e,t,n,r,o,a,s={}){if(e.backendTransport==="fetch"){if(!e.backendBaseUrl)throw new S("backendTransport=fetch but backendBaseUrl is missing.",e);return Kt(e.backendBaseUrl,r,o,a,s,e,n,t)}if(!e.backendApiName)throw new S("backendTransport=gatey but backendApiName is missing.",e);return Dt(e.backendApiName,r,o,a,s,e,n,t)}async function Kt(e,t,n,r,o,a,s,i){let u=`${e.replace(/\/+$/,"")}${t}`,c={"content-type":"application/json",...o.headers??{}},p=s==="prompt"?Me(i,r):void 0,l=await N(i,c,{cacheKey:p}),m=o.query&&Object.keys(o.query).length>0?"?"+new URLSearchParams(Object.entries(o.query).map(([b,h])=>[b,String(h)])).toString():"";K(o,{feature:s,context:i,step:"backend:request",source:"backend"}),K(o,{feature:s,context:i,step:"backend:waiting",source:"backend"});let g=await fetch(u+m,{method:n,headers:l,body:JSON.stringify(r??{}),signal:o.signal,credentials:"omit"});if(K(o,{feature:s,context:i,step:"backend:response",source:"backend"}),!g.ok){let b=`HTTP ${g.status}`;try{let h=await g.text();h&&(b=`${b}: ${h.substring(0,400)}`)}catch{}throw new S(`Fetch backend call failed: ${b}`,a,g.status)}let y=g.headers.get("content-type")||"",f=Fe(g.headers,"x-recaptcha-verified-at");if(y.includes("application/json")){let b=await g.json(),h=(b&&typeof b.sessionId=="string"&&b.sessionId.trim()?b.sessionId.trim():void 0)??p;return f&&h&&le(h,f),b}return f&&p&&le(p,f),await g.text()}async function Dt(e,t,n,r,o,a,s,i){let u=(0,Ee.getGateyPlugin)(),c;switch(n.toUpperCase()){case"POST":c=u?.cognito?.post;break;case"GET":c=u?.cognito?.get;break;case"PUT":c=u?.cognito?.put;break;case"PATCH":c=u?.cognito?.patch;break;case"DELETE":c=u?.cognito?.del;break;default:throw new S(`Unsupported HTTP method "${n}" for Gatey backend.`,a)}if(!c)throw new S(`Gatey backend selected, but Gatey.cognito.${n.toLowerCase()} is not available.`,a);let p=s==="prompt"?Me(i,r):void 0,l=await N(i,{...o.headers??{}},{cacheKey:p});K(o,{feature:s,context:i,step:"backend:request",source:"backend"}),K(o,{feature:s,context:i,step:"backend:waiting",source:"backend"});let m=c({apiName:e,path:t,options:{body:r,headers:l,retryStrategy:{strategy:"no-retry"}}});o?.signal?.addEventListener?.("abort",()=>{m.cancel()});let g=await m.response,y=Fe(g.headers,"x-recaptcha-verified-at"),f=await g.body.json(),b=f?.sessionId??p;return y&&typeof b=="string"&&b.trim()&&le(b.trim(),y),K(o,{feature:s,context:i,step:"backend:response",source:"backend"}),f}var Ee,Z,Ie,Ot,Bt,Et,de=P(()=>{"use strict";Ee=require("@smart-cloud/gatey-core"),Z=require("@smart-cloud/wpsuite-core");$();ue();Ie=new Map;Ot={prompt:["text","audio","audioUrl","systemPrompt","context","maxTokens","responseConstraint","saveChatSession","engine","sessionId","images","imageUrls","feedbackMessageId","feedbackType","knowledgeBaseId","disableKB","enableRerank","topK","temperature","userSelectedCategories","userSelectedSubcategories","userSelectedTags"],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"]};Bt={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"}});function Ut(e,t,n){let r=-1;for(let o=n-1;o>=t;o--){let a=e[o],s=o+1<e.length?e[o+1]:"";if((a==="."||a==="!"||a==="?")&&(s===" "||s===`
|
|
1
|
+
"use strict";var ae=Object.defineProperty;var st=Object.getOwnPropertyDescriptor;var it=Object.getOwnPropertyNames;var ut=Object.prototype.hasOwnProperty;var P=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(r){throw n=[r],r}};var V=(e,t)=>{for(var n in t)ae(e,n,{get:t[n],enumerable:!0})},ct=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of it(t))!ut.call(e,o)&&o!==n&&ae(e,o,{get:()=>t[o],enumerable:!(r=st(t,o))||r.enumerable});return e};var lt=e=>ct(ae({},"__esModule",{value:!0}),e);function T(){return globalThis.WpSuite?.plugins?.aiKit}async function oe(e=8e3){let t=T();if(t?.status!=="available"){if(t?.status==="error")throw new Error("AiKit failed");await new Promise((n,r)=>{let o=()=>s(n),a=()=>s(()=>r(new Error("AiKit failed"))),s=u=>{window.removeEventListener("wpsuite:ai-kit:ready",o),window.removeEventListener("wpsuite:ai-kit:error",a),i&&clearTimeout(i),u()};window.addEventListener("wpsuite:ai-kit:ready",o,{once:!0}),window.addEventListener("wpsuite:ai-kit:error",a,{once:!0});let i=e?window.setTimeout(()=>s(()=>r(new Error("AiKit timeout"))),e):0})}}async function ye(e=1e4){await oe(e);let n=T()?.features?.store;if(!n)throw new Error("AiKit store is not available");return n}var $=P(()=>{"use strict"});var W,x,se,ie,G,dt,gt,pt,mt,ft,we,_,he,ke,Ce,Q=P(()=>{"use strict";W=require("@smart-cloud/wpsuite-core"),x=require("@wordpress/data"),se=require("aws-amplify/utils");$();typeof WpSuite<"u"?ie=WpSuite.siteSettings:ie={};G=e=>{let t=e&&typeof e=="object"?e:{},n={};return typeof t.mode=="string"&&(n.mode=t.mode),typeof t.backendTransport=="string"&&(n.backendTransport=t.backendTransport),typeof t.backendApiName=="string"&&(n.backendApiName=t.backendApiName),typeof t.backendBaseUrl=="string"&&(n.backendBaseUrl=t.backendBaseUrl),typeof t.subscriptionType=="string"&&(n.subscriptionType=t.subscriptionType),typeof t.enableChatbot=="boolean"&&(n.enableChatbot=t.enableChatbot),typeof t.chatbot=="object"&&t.chatbot!==null&&(n.chatbot=t.chatbot),n},dt=async()=>{let e=T();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="+ie.lastUpdate).then(n=>n.ok?n.text():null).then(n=>n?JSON.parse(n):null).catch(()=>null)),t??null},gt=async()=>{let e=G(await(0,W.getConfig)("aiKit")),t=await dt();return{config:e,showChatbotPreview:!1,language:void 0,direction:void 0,customTranslations:t}},pt={setShowChatbotPreview(e){return{type:"SET_SHOW_CHATBOT_PREVIEW",showChatbotPreview:e}},setLanguage(e){return!e||e==="system"?se.I18n.setLanguage(""):se.I18n.setLanguage(e),{type:"SET_LANGUAGE",language:e}},setDirection(e){return{type:"SET_DIRECTION",direction:e}},setConfig:e=>({type:"SET_CONFIG",config:e})},mt={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}},ft={},we=e=>{let t=(0,x.dispatch)(e);return delete t.setConfig,t},_=e=>(0,x.select)(e),he=async e=>{(0,W.getWpSuite)().siteSettings.lastUpdate=Date.now();let t=await(0,W.getConfig)("aiKit"),n=G(t);(0,x.dispatch)(e).setConfig(n)},ke=async()=>{let e=await gt(),t=(0,x.createReduxStore)("smartcloud/ai-kit",{reducer(n=e,r){switch(r.type){case"SET_LANGUAGE":return{...n,language:r.language};case"SET_DIRECTION":return{...n,direction:r.direction};case"SET_SHOW_CHATBOT_PREVIEW":return{...n,showChatbotPreview:r.showChatbotPreview};case"SET_CONFIG":return{...n,config:r.config}}return n},actions:pt,selectors:mt,resolvers:ft});return(0,x.register)(t),t},Ce=(e,t,n)=>{let r;function o(){let s=_(e).getState(),i=t(s);if(i!==r){let u=r;r=i,n(r,u)}}let a=(0,x.subscribe)(o,e);return o(),a}});var k,ve=P(()=>{"use strict";k="smartcloud-ai-kit"});var v,bt,yt,wt,Ae=P(()=>{"use strict";v=require("react/jsx-runtime"),bt=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"})]}),yt=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"})]}),wt=e=>(0,v.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"48",height:"48",viewBox:"0 0 48 48",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",...e,children:[(0,v.jsx)("path",{stroke:"none",d:"M0 0h48v48H0z",fill:"none"}),(0,v.jsx)("path",{d:"M6 20a14 14 0 1 0 28 0a14 14 0 1 0 -28 0"}),(0,v.jsx)("path",{d:"M42 42l-12 -12"}),(0,v.jsx)("path",{d:"M20 20a3 3 0 1 0 -2.28 -4.948"}),(0,v.jsx)("circle",{cx:"20",cy:"26",r:"0.9",fill:"currentColor",stroke:"none"})]})});var S,ue=P(()=>{"use strict";S=class extends Error{constructor(n,r,o){super(n);this.decision=r;this.status=o;this.name="AiBackendError"}decision;status}});var Be={};V(Be,{MIN_CHROME_VERSION:()=>Le,checkOnDeviceAvailability:()=>Re,decideCapability:()=>J,isOnDeviceLanguageSupported:()=>B,resolveBackend:()=>F});async function Se(){let t=await(0,xe.getWpSuite)()?.plugins?.aiKit?.features.store;return _(t).getConfig()??{}}function Te(e){let t=e.backendApiName?.trim()||void 0,n=e.backendBaseUrl?.trim()||void 0;return{transport:e.backendTransport??(n?"fetch":t?"gatey":void 0),backendApiName:t,backendBaseUrl:n}}function ht(e){if(e.mode)return e.mode;let{transport:t}=Te(e);return t?"backend-fallback":"local-only"}async function F(){let e=await Se(),{transport:t,backendApiName:n,backendBaseUrl:r}=Te(e);if(!t)return{available:!1,reason:"No backend configured"};if(t==="fetch")return r?{available:!0,transport:t,baseUrl:r,reason:"Custom fetch backend"}:{available:!1,reason:"backendBaseUrl is missing"};if(!n)return{available:!1,reason:"backendApiName is missing"};let o=(0,Pe.getGateyPlugin)();return!o?.availability||await o.availability()!=="available"?{available:!1,reason:"Gatey is not available"}:{available:!0,transport:t,apiName:n,reason:"Gatey backend"}}function R(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 X(e,t){return e?.find(n=>n.brand===t)?.version}async function Ct(){let e=navigator?.userAgentData;if(e){try{let n=(await e.getHighEntropyValues?.(["fullVersionList"]))?.fullVersionList;if(Array.isArray(n)&&n.length>0)return n}catch{}if(Array.isArray(e.brands)&&e.brands.length>0)return e.brands}}function vt(e){let t=e.match(/\b(?:Chrome|Chromium)\/(\d{2,3})\b/i);return t?.[1]?Oe(t[1]):void 0}function At(){return!!navigator?.brave}async function xt(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??"",n=await Ct(),r=X(n,"Microsoft Edge")??X(n,"Microsoft Edge WebView2"),o=X(n,"Google Chrome")??X(n,"Chromium"),a=!!r||/\bEdg\//i.test(t)||/\bEdgiOS\//i.test(t),s=/\bOPR\//i.test(t),i=/\bVivaldi\//i.test(t),u=/\bSamsungBrowser\//i.test(t),c=/\bFirefox\//i.test(t),p=!/\bChrome\//i.test(t)&&/\bSafari\//i.test(t)&&!/\bChromium\//i.test(t),l=At()||/\bBrave\//i.test(t);if(a||s||i||u||c||p||l)return{allowed:!1,reason:a?"edge":l?"brave":c?"firefox":p?"safari":s?"opera":i?"vivaldi":u?"samsung":"unsupported-browser"};let m=Oe(o)??vt(t),g=Le[e];return g?m?m<g?{allowed:!1,reason:`chrome-too-old-${m}-lt-${g}`,chromeMajor:m}:{allowed:!0,reason:"ok",chromeMajor:m}:{allowed:!1,reason:"unknown-chrome-version"}:{allowed:!1,reason:"no-min-version",chromeMajor:m}}async function Re(e,t){try{let n=await xt(e),r=`browser-gate:${n.reason}${n.chromeMajor?` (chrome ${n.chromeMajor})`:""}`;if(!n.allowed)return{available:!1,status:"unavailable",reason:r};let o=a=>a==="unavailable"?kt.has(e)?"requires Chrome flags or Origin Trial tokens \u2014 see AI-Kit Diagnostics":"check hardware requirements or see AI-Kit Diagnostics":r;switch(e){case"writer":{if(!R("Writer")||!Writer?.availability)return{available:!1,status:"api-not-present",reason:r};let a=await Writer.availability(t);return{available:a!=="unavailable",status:a,reason:o(a)}}case"rewriter":{if(!R("Rewriter")||!Rewriter?.availability)return{available:!1,status:"api-not-present",reason:r};let a=await Rewriter.availability(t);return{available:a!=="unavailable",status:a,reason:o(a)}}case"summarizer":{if(!R("Summarizer")||!Summarizer?.availability)return{available:!1,status:"api-not-present",reason:r};let a=await Summarizer.availability(t);return{available:a!=="unavailable",status:a,reason:o(a)}}case"proofreader":{if(!R("Proofreader")||!Proofreader?.availability)return{available:!1,status:"api-not-present",reason:r};let a=await Proofreader.availability(t);return{available:a!=="unavailable",status:a,reason:o(a)}}case"language-detector":{if(!R("LanguageDetector")||!LanguageDetector?.availability)return{available:!1,status:"api-not-present",reason:r};let a=await LanguageDetector.availability(t);return{available:a!=="unavailable",status:a,reason:o(a)}}case"translator":{if(!R("Translator")||!Translator?.availability)return{available:!1,status:"api-not-present",reason:r};let a=t;if(!a?.sourceLanguage||!a?.targetLanguage)return{available:!1,status:"error",reason:r,error:new Error("Translator.availability requires sourceLanguage/targetLanguage")};let s=await Translator.availability({...a,sourceLanguage:a.sourceLanguage==="auto"?"en":a.sourceLanguage,targetLanguage:a.sourceLanguage==="auto"||a.sourceLanguage===a.targetLanguage?"hu":a.targetLanguage});return{available:s!=="unavailable",status:s,reason:o(s)}}case"prompt":{if(!R("LanguageModel")||!LanguageModel?.availability)return{available:!1,status:"api-not-present",reason:r};let a=await LanguageModel.availability(t);return{available:a!=="unavailable",status:a,reason:o(a)}}default:return{available:!1,status:"unknown-feature",reason:r}}}catch(n){return{available:!1,status:"error",reason:"exception in availability()",error:n}}}function B(e){let t=["en","ja","es"],n=e.toLowerCase();return t.some(r=>n===r.toLowerCase())}async function J(e,t,n){let r=await Se(),o=n||ht(r),a=await F(),s=await Re(e,t),i=s.available,u=a.available,c={feature:e,mode:o,onDeviceAvailable:i,onDeviceStatus:s.status,onDeviceReason:s.reason,backendAvailable:u,backendTransport:a.transport,backendApiName:a.apiName,backendBaseUrl:a.baseUrl,backendReason:a.reason};return o==="local-only"?i?{...c,source:"on-device",reason:`local-only, on-device available (${s.reason??s.status})`}:{...c,source:"none",reason:`local-only, but on-device unavailable (${s.reason??s.status})`}:o==="backend-only"?u?{...c,source:"backend",reason:`backend-only, backend available (${a.reason??"n/a"})`}:{...c,source:"none",reason:`backend-only, but backend unavailable (${a.reason??"n/a"})`}:i?{...c,source:"on-device",reason:`backend-fallback, using on-device (${s.reason??s.status})`}:u?{...c,source:"backend",reason:`backend-fallback, using backend (${a.reason??"n/a"}; on-device: ${s.reason??s.status})`}:{...c,source:"none",reason:`No on-device AI or backend available (on-device: ${s.reason??s.status}; backend: ${a.reason??"n/a"})`}}var xe,Pe,Le,kt,ce=P(()=>{"use strict";xe=require("@smart-cloud/wpsuite-core"),Pe=require("@smart-cloud/gatey-core");Q();Le={summarizer:138,translator:138,"language-detector":138,writer:137,rewriter:137,proofreader:141,prompt:138},kt=new Set(["writer","rewriter","proofreader","prompt"])});var Ue={};V(Ue,{dispatchCustomBackend:()=>Ft,dispatchFeatureBackend:()=>D,withRecaptchaHeaders:()=>N});function Pt(e){if(!e)return;let t=Date.parse(e);return Number.isFinite(t)?t:void 0}function St(e){let t=e?.reCaptchaChatTtlSeconds,n=typeof t=="number"&&Number.isFinite(t)?Math.max(0,t):120;return Math.min(3600,n)*1e3}function Tt(e,t){let n=St(t);if(n<=0)return!1;let r=Ie.get(e);return r?Date.now()-r<n:!1}function le(e,t){let n=Pt(t);n&&Ie.set(e,n)}function Me(e,t){if(e!=="frontend"||!Ke(t)||t.saveChatSession!==!0)return;let n=t.sessionId;return typeof n=="string"&&n.trim()?n.trim():void 0}function Fe(e,t){if(!e)return;try{if(typeof e.get=="function")return e.get(t)??void 0}catch{}let n=Object.keys(e).find(o=>o.toLowerCase()===t.toLowerCase());if(!n)return;let r=e[n];return typeof r=="string"&&r?r:void 0}async function Lt(e,t){if(e!=="frontend")return;let n=(0,Z.getWpSuite)()?.siteSettings;if(!n?.reCaptchaPublicKey||t?.cacheKey&&Tt(t.cacheKey,T()?.settings||{}))return;let{execute:r}=await(0,Z.getRecaptcha)(n?.useRecaptchaEnterprise||!1);if(typeof r=="function")try{let a=await r(n.reCaptchaPublicKey,{action:"generate"});return typeof a=="string"&&a?a:void 0}catch{return}}async function N(e,t,n){if(e!=="frontend"||t["X-Recaptcha-Token"]||t["x-recaptcha-token"])return t;let r=await Lt(e,n);return r?{...t,"X-Recaptcha-Token":r}:t}function K(e,t){try{e?.onStatus?.(t)}catch{}}function Ke(e){return typeof e=="object"&&e!==null&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null)}function Rt(e,t){if(!Ke(t))return t;let n=Ot[e];if(!n)return t;let r={};for(let o of n)o in t&&(r[o]=t[o]);return r}function It(e,t){return(e==="admin"?Bt:Et)[t]}function Mt(e,t){return`${e==="admin"?"/admin":"/frontend"}${t}`}async function D(e,t,n,r,o={}){let a=It(t,n);if(!a)throw new S(`No backend path configured for "${n}" (${t}).`,e);let s=Rt(n,r);return De(e,t,n,a,"POST",s,o)}async function Ft(e,t,n,r,o,a={}){let s=Mt(t,n);return De(e,t,"prompt",s,r,o,a)}async function De(e,t,n,r,o,a,s={}){if(e.backendTransport==="fetch"){if(!e.backendBaseUrl)throw new S("backendTransport=fetch but backendBaseUrl is missing.",e);return Kt(e.backendBaseUrl,r,o,a,s,e,n,t)}if(!e.backendApiName)throw new S("backendTransport=gatey but backendApiName is missing.",e);return Dt(e.backendApiName,r,o,a,s,e,n,t)}async function Kt(e,t,n,r,o,a,s,i){let u=`${e.replace(/\/+$/,"")}${t}`,c={"content-type":"application/json",...o.headers??{}},p=s==="prompt"?Me(i,r):void 0,l=await N(i,c,{cacheKey:p}),m=o.query&&Object.keys(o.query).length>0?"?"+new URLSearchParams(Object.entries(o.query).map(([b,h])=>[b,String(h)])).toString():"";K(o,{feature:s,context:i,step:"backend:request",source:"backend"}),K(o,{feature:s,context:i,step:"backend:waiting",source:"backend"});let g=await fetch(u+m,{method:n,headers:l,body:JSON.stringify(r??{}),signal:o.signal,credentials:"omit"});if(K(o,{feature:s,context:i,step:"backend:response",source:"backend"}),!g.ok){let b=`HTTP ${g.status}`;try{let h=await g.text();h&&(b=`${b}: ${h.substring(0,400)}`)}catch{}throw new S(`Fetch backend call failed: ${b}`,a,g.status)}let y=g.headers.get("content-type")||"",f=Fe(g.headers,"x-recaptcha-verified-at");if(y.includes("application/json")){let b=await g.json(),h=(b&&typeof b.sessionId=="string"&&b.sessionId.trim()?b.sessionId.trim():void 0)??p;return f&&h&&le(h,f),b}return f&&p&&le(p,f),await g.text()}async function Dt(e,t,n,r,o,a,s,i){let u=(0,Ee.getGateyPlugin)(),c;switch(n.toUpperCase()){case"POST":c=u?.cognito?.post;break;case"GET":c=u?.cognito?.get;break;case"PUT":c=u?.cognito?.put;break;case"PATCH":c=u?.cognito?.patch;break;case"DELETE":c=u?.cognito?.del;break;default:throw new S(`Unsupported HTTP method "${n}" for Gatey backend.`,a)}if(!c)throw new S(`Gatey backend selected, but Gatey.cognito.${n.toLowerCase()} is not available.`,a);let p=s==="prompt"?Me(i,r):void 0,l=await N(i,{...o.headers??{}},{cacheKey:p});K(o,{feature:s,context:i,step:"backend:request",source:"backend"}),K(o,{feature:s,context:i,step:"backend:waiting",source:"backend"});let m=c({apiName:e,path:t,options:{body:r,headers:l,retryStrategy:{strategy:"no-retry"}}});o?.signal?.addEventListener?.("abort",()=>{m.cancel()});let g=await m.response,y=Fe(g.headers,"x-recaptcha-verified-at"),f=await g.body.json(),b=f?.sessionId??p;return y&&typeof b=="string"&&b.trim()&&le(b.trim(),y),K(o,{feature:s,context:i,step:"backend:response",source:"backend"}),f}var Ee,Z,Ie,Ot,Bt,Et,de=P(()=>{"use strict";Ee=require("@smart-cloud/gatey-core"),Z=require("@smart-cloud/wpsuite-core");$();ue();Ie=new Map;Ot={prompt:["text","audio","audioUrl","systemPrompt","context","maxTokens","responseConstraint","saveChatSession","engine","sessionId","images","imageUrls","feedbackMessageId","feedbackType","knowledgeBaseId","disableKB","topK","temperature","userSelectedCategories","userSelectedSubcategories","userSelectedTags"],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"]};Bt={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"}});function Ut(e,t,n){let r=-1;for(let o=n-1;o>=t;o--){let a=e[o],s=o+1<e.length?e[o+1]:"";if((a==="."||a==="!"||a==="?")&&(s===" "||s===`
|
|
2
2
|
`||s==="\r"||o===e.length-1)){r=o+1;break}}return r>t+(n-t)*.5?r:-1}function zt(e,t,n){let r=-1;for(let o=n-1;o>=t;o--){let a=e[o],s=o+1<e.length?e[o+1]:"";if((a===","||a===";"||a===":")&&(s===" "||s===`
|
|
3
3
|
`||s==="\r")){r=o+1;break}}return r>t+(n-t)*.5?r:-1}function Y(e,t){let n=[],r=0;for(;r<e.length;){let o=Math.min(r+t,e.length);if(o<e.length){let s=e.lastIndexOf(`
|
|
4
4
|
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var Xe=Object.defineProperty;var x=(e,t)=>()=>(e&&(t=e(e=0)),t);var Z=(e,t)=>{for(var n in t)Xe(e,n,{get:t[n],enumerable:!0})};function L(){return globalThis.WpSuite?.plugins?.aiKit}async function le(e=8e3){let t=L();if(t?.status!=="available"){if(t?.status==="error")throw new Error("AiKit failed");await new Promise((n,r)=>{let o=()=>s(n),a=()=>s(()=>r(new Error("AiKit failed"))),s=u=>{window.removeEventListener("wpsuite:ai-kit:ready",o),window.removeEventListener("wpsuite:ai-kit:error",a),i&&clearTimeout(i),u()};window.addEventListener("wpsuite:ai-kit:ready",o,{once:!0}),window.addEventListener("wpsuite:ai-kit:error",a,{once:!0});let i=e?window.setTimeout(()=>s(()=>r(new Error("AiKit timeout"))),e):0})}}async function Je(e=1e4){await le(e);let n=L()?.features?.store;if(!n)throw new Error("AiKit store is not available");return n}var q=x(()=>{"use strict"});import{getConfig as ge,getWpSuite as Ze}from"@smart-cloud/wpsuite-core";import{createReduxStore as Ye,dispatch as pe,register as et,select as tt,subscribe as nt}from"@wordpress/data";import{I18n as de}from"aws-amplify/utils";var Y,ee,rt,at,ot,st,it,ut,H,ct,me,lt,j=x(()=>{"use strict";q();typeof WpSuite<"u"?Y=WpSuite.siteSettings:Y={};ee=e=>{let t=e&&typeof e=="object"?e:{},n={};return typeof t.mode=="string"&&(n.mode=t.mode),typeof t.backendTransport=="string"&&(n.backendTransport=t.backendTransport),typeof t.backendApiName=="string"&&(n.backendApiName=t.backendApiName),typeof t.backendBaseUrl=="string"&&(n.backendBaseUrl=t.backendBaseUrl),typeof t.subscriptionType=="string"&&(n.subscriptionType=t.subscriptionType),typeof t.enableChatbot=="boolean"&&(n.enableChatbot=t.enableChatbot),typeof t.chatbot=="object"&&t.chatbot!==null&&(n.chatbot=t.chatbot),n},rt=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="+Y.lastUpdate).then(n=>n.ok?n.text():null).then(n=>n?JSON.parse(n):null).catch(()=>null)),t??null},at=async()=>{let e=ee(await ge("aiKit")),t=await rt();return{config:e,showChatbotPreview:!1,language:void 0,direction:void 0,customTranslations:t}},ot={setShowChatbotPreview(e){return{type:"SET_SHOW_CHATBOT_PREVIEW",showChatbotPreview:e}},setLanguage(e){return!e||e==="system"?de.setLanguage(""):de.setLanguage(e),{type:"SET_LANGUAGE",language:e}},setDirection(e){return{type:"SET_DIRECTION",direction:e}},setConfig:e=>({type:"SET_CONFIG",config:e})},st={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}},it={},ut=e=>{let t=pe(e);return delete t.setConfig,t},H=e=>tt(e),ct=async e=>{Ze().siteSettings.lastUpdate=Date.now();let t=await ge("aiKit"),n=ee(t);pe(e).setConfig(n)},me=async()=>{let e=await at(),t=Ye("smartcloud/ai-kit",{reducer(n=e,r){switch(r.type){case"SET_LANGUAGE":return{...n,language:r.language};case"SET_DIRECTION":return{...n,direction:r.direction};case"SET_SHOW_CHATBOT_PREVIEW":return{...n,showChatbotPreview:r.showChatbotPreview};case"SET_CONFIG":return{...n,config:r.config}}return n},actions:ot,selectors:st,resolvers:it});return et(t),t},lt=(e,t,n)=>{let r;function o(){let s=H(e).getState(),i=t(s);if(i!==r){let u=r;r=i,n(r,u)}}let a=nt(o,e);return o(),a}});var k,fe=x(()=>{"use strict";k="smartcloud-ai-kit"});import{jsx as v,jsxs as te}from"react/jsx-runtime";var Pn,Sn,Tn,be=x(()=>{"use strict";Pn=e=>te("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:[v("path",{d:"M19 27H33"}),v("path",{d:"M19 33H33"}),v("path",{d:"M8 21L9.5 24L12.5 25.5L9.5 27L8 30L6.5 27L3.5 25.5L6.5 24Z"}),v("path",{d:"M36 4L38 8L42 10L38 12L36 16L34 12L30 10L34 8Z"}),v("path",{d:"M16 10V40H36V22"}),v("path",{d:"M16 10H22"}),v("path",{d:"M22 10V23H36"}),v("path",{d:"M22 10L36 22"})]}),Sn=e=>te("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:[v("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"}),v("rect",{x:"14",y:"13",width:"6",height:"6",rx:"1"}),v("rect",{x:"28",y:"13",width:"6",height:"6",rx:"1"}),v("path",{d:"M16 24H32"})]}),Tn=e=>te("svg",{xmlns:"http://www.w3.org/2000/svg",width:"48",height:"48",viewBox:"0 0 48 48",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",...e,children:[v("path",{stroke:"none",d:"M0 0h48v48H0z",fill:"none"}),v("path",{d:"M6 20a14 14 0 1 0 28 0a14 14 0 1 0 -28 0"}),v("path",{d:"M42 42l-12 -12"}),v("path",{d:"M20 20a3 3 0 1 0 -2.28 -4.948"}),v("circle",{cx:"20",cy:"26",r:"0.9",fill:"currentColor",stroke:"none"})]})});var P,ne=x(()=>{"use strict";P=class extends Error{constructor(n,r,o){super(n);this.decision=r;this.status=o;this.name="AiBackendError"}}});var ve={};Z(ve,{MIN_CHROME_VERSION:()=>he,checkOnDeviceAvailability:()=>Ce,decideCapability:()=>$,isOnDeviceLanguageSupported:()=>R,resolveBackend:()=>M});import{getWpSuite as dt}from"@smart-cloud/wpsuite-core";import{getGateyPlugin as gt}from"@smart-cloud/gatey-core";async function ye(){let t=await dt()?.plugins?.aiKit?.features.store;return H(t).getConfig()??{}}function we(e){let t=e.backendApiName?.trim()||void 0,n=e.backendBaseUrl?.trim()||void 0;return{transport:e.backendTransport??(n?"fetch":t?"gatey":void 0),backendApiName:t,backendBaseUrl:n}}function pt(e){if(e.mode)return e.mode;let{transport:t}=we(e);return t?"backend-fallback":"local-only"}async function M(){let e=await ye(),{transport:t,backendApiName:n,backendBaseUrl:r}=we(e);if(!t)return{available:!1,reason:"No backend configured"};if(t==="fetch")return r?{available:!0,transport:t,baseUrl:r,reason:"Custom fetch backend"}:{available:!1,reason:"backendBaseUrl is missing"};if(!n)return{available:!1,reason:"backendApiName is missing"};let o=gt();return!o?.availability||await o.availability()!=="available"?{available:!1,reason:"Gatey is not available"}:{available:!0,transport:t,apiName:n,reason:"Gatey backend"}}function O(e){return typeof globalThis[e]<"u"}function ke(e){if(!e)return;let t=Number.parseInt(String(e).split(".")[0]??"",10);return Number.isFinite(t)?t:void 0}function V(e,t){return e?.find(n=>n.brand===t)?.version}async function ft(){let e=navigator?.userAgentData;if(e){try{let n=(await e.getHighEntropyValues?.(["fullVersionList"]))?.fullVersionList;if(Array.isArray(n)&&n.length>0)return n}catch{}if(Array.isArray(e.brands)&&e.brands.length>0)return e.brands}}function bt(e){let t=e.match(/\b(?:Chrome|Chromium)\/(\d{2,3})\b/i);return t?.[1]?ke(t[1]):void 0}function yt(){return!!navigator?.brave}async function wt(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??"",n=await ft(),r=V(n,"Microsoft Edge")??V(n,"Microsoft Edge WebView2"),o=V(n,"Google Chrome")??V(n,"Chromium"),a=!!r||/\bEdg\//i.test(t)||/\bEdgiOS\//i.test(t),s=/\bOPR\//i.test(t),i=/\bVivaldi\//i.test(t),u=/\bSamsungBrowser\//i.test(t),c=/\bFirefox\//i.test(t),p=!/\bChrome\//i.test(t)&&/\bSafari\//i.test(t)&&!/\bChromium\//i.test(t),l=yt()||/\bBrave\//i.test(t);if(a||s||i||u||c||p||l)return{allowed:!1,reason:a?"edge":l?"brave":c?"firefox":p?"safari":s?"opera":i?"vivaldi":u?"samsung":"unsupported-browser"};let m=ke(o)??bt(t),g=he[e];return g?m?m<g?{allowed:!1,reason:`chrome-too-old-${m}-lt-${g}`,chromeMajor:m}:{allowed:!0,reason:"ok",chromeMajor:m}:{allowed:!1,reason:"unknown-chrome-version"}:{allowed:!1,reason:"no-min-version",chromeMajor:m}}async function Ce(e,t){try{let n=await wt(e),r=`browser-gate:${n.reason}${n.chromeMajor?` (chrome ${n.chromeMajor})`:""}`;if(!n.allowed)return{available:!1,status:"unavailable",reason:r};let o=a=>a==="unavailable"?mt.has(e)?"requires Chrome flags or Origin Trial tokens \u2014 see AI-Kit Diagnostics":"check hardware requirements or see AI-Kit Diagnostics":r;switch(e){case"writer":{if(!O("Writer")||!Writer?.availability)return{available:!1,status:"api-not-present",reason:r};let a=await Writer.availability(t);return{available:a!=="unavailable",status:a,reason:o(a)}}case"rewriter":{if(!O("Rewriter")||!Rewriter?.availability)return{available:!1,status:"api-not-present",reason:r};let a=await Rewriter.availability(t);return{available:a!=="unavailable",status:a,reason:o(a)}}case"summarizer":{if(!O("Summarizer")||!Summarizer?.availability)return{available:!1,status:"api-not-present",reason:r};let a=await Summarizer.availability(t);return{available:a!=="unavailable",status:a,reason:o(a)}}case"proofreader":{if(!O("Proofreader")||!Proofreader?.availability)return{available:!1,status:"api-not-present",reason:r};let a=await Proofreader.availability(t);return{available:a!=="unavailable",status:a,reason:o(a)}}case"language-detector":{if(!O("LanguageDetector")||!LanguageDetector?.availability)return{available:!1,status:"api-not-present",reason:r};let a=await LanguageDetector.availability(t);return{available:a!=="unavailable",status:a,reason:o(a)}}case"translator":{if(!O("Translator")||!Translator?.availability)return{available:!1,status:"api-not-present",reason:r};let a=t;if(!a?.sourceLanguage||!a?.targetLanguage)return{available:!1,status:"error",reason:r,error:new Error("Translator.availability requires sourceLanguage/targetLanguage")};let s=await Translator.availability({...a,sourceLanguage:a.sourceLanguage==="auto"?"en":a.sourceLanguage,targetLanguage:a.sourceLanguage==="auto"||a.sourceLanguage===a.targetLanguage?"hu":a.targetLanguage});return{available:s!=="unavailable",status:s,reason:o(s)}}case"prompt":{if(!O("LanguageModel")||!LanguageModel?.availability)return{available:!1,status:"api-not-present",reason:r};let a=await LanguageModel.availability(t);return{available:a!=="unavailable",status:a,reason:o(a)}}default:return{available:!1,status:"unknown-feature",reason:r}}}catch(n){return{available:!1,status:"error",reason:"exception in availability()",error:n}}}function R(e){let t=["en","ja","es"],n=e.toLowerCase();return t.some(r=>n===r.toLowerCase())}async function $(e,t,n){let r=await ye(),o=n||pt(r),a=await M(),s=await Ce(e,t),i=s.available,u=a.available,c={feature:e,mode:o,onDeviceAvailable:i,onDeviceStatus:s.status,onDeviceReason:s.reason,backendAvailable:u,backendTransport:a.transport,backendApiName:a.apiName,backendBaseUrl:a.baseUrl,backendReason:a.reason};return o==="local-only"?i?{...c,source:"on-device",reason:`local-only, on-device available (${s.reason??s.status})`}:{...c,source:"none",reason:`local-only, but on-device unavailable (${s.reason??s.status})`}:o==="backend-only"?u?{...c,source:"backend",reason:`backend-only, backend available (${a.reason??"n/a"})`}:{...c,source:"none",reason:`backend-only, but backend unavailable (${a.reason??"n/a"})`}:i?{...c,source:"on-device",reason:`backend-fallback, using on-device (${s.reason??s.status})`}:u?{...c,source:"backend",reason:`backend-fallback, using backend (${a.reason??"n/a"}; on-device: ${s.reason??s.status})`}:{...c,source:"none",reason:`No on-device AI or backend available (on-device: ${s.reason??s.status}; backend: ${a.reason??"n/a"})`}}var he,mt,re=x(()=>{"use strict";j();he={summarizer:138,translator:138,"language-detector":138,writer:137,rewriter:137,proofreader:141,prompt:138},mt=new Set(["writer","rewriter","proofreader","prompt"])});var Le={};Z(Le,{dispatchCustomBackend:()=>Et,dispatchFeatureBackend:()=>K,withRecaptchaHeaders:()=>z});import{getGateyPlugin as ht}from"@smart-cloud/gatey-core";import{getRecaptcha as kt,getWpSuite as Ct}from"@smart-cloud/wpsuite-core";function vt(e){if(!e)return;let t=Date.parse(e);return Number.isFinite(t)?t:void 0}function At(e){let t=e?.reCaptchaChatTtlSeconds,n=typeof t=="number"&&Number.isFinite(t)?Math.max(0,t):120;return Math.min(3600,n)*1e3}function xt(e,t){let n=At(t);if(n<=0)return!1;let r=Ae.get(e);return r?Date.now()-r<n:!1}function ae(e,t){let n=vt(t);n&&Ae.set(e,n)}function xe(e,t){if(e!=="frontend"||!Se(t)||t.saveChatSession!==!0)return;let n=t.sessionId;return typeof n=="string"&&n.trim()?n.trim():void 0}function Pe(e,t){if(!e)return;try{if(typeof e.get=="function")return e.get(t)??void 0}catch{}let n=Object.keys(e).find(o=>o.toLowerCase()===t.toLowerCase());if(!n)return;let r=e[n];return typeof r=="string"&&r?r:void 0}async function Pt(e,t){if(e!=="frontend")return;let n=Ct()?.siteSettings;if(!n?.reCaptchaPublicKey||t?.cacheKey&&xt(t.cacheKey,L()?.settings||{}))return;let{execute:r}=await kt(n?.useRecaptchaEnterprise||!1);if(typeof r=="function")try{let a=await r(n.reCaptchaPublicKey,{action:"generate"});return typeof a=="string"&&a?a:void 0}catch{return}}async function z(e,t,n){if(e!=="frontend"||t["X-Recaptcha-Token"]||t["x-recaptcha-token"])return t;let r=await Pt(e,n);return r?{...t,"X-Recaptcha-Token":r}:t}function F(e,t){try{e?.onStatus?.(t)}catch{}}function Se(e){return typeof e=="object"&&e!==null&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null)}function Tt(e,t){if(!Se(t))return t;let n=St[e];if(!n)return t;let r={};for(let o of n)o in t&&(r[o]=t[o]);return r}function Rt(e,t){return(e==="admin"?Lt:Ot)[t]}function Bt(e,t){return`${e==="admin"?"/admin":"/frontend"}${t}`}async function K(e,t,n,r,o={}){let a=Rt(t,n);if(!a)throw new P(`No backend path configured for "${n}" (${t}).`,e);let s=Tt(n,r);return Te(e,t,n,a,"POST",s,o)}async function Et(e,t,n,r,o,a={}){let s=Bt(t,n);return Te(e,t,"prompt",s,r,o,a)}async function Te(e,t,n,r,o,a,s={}){if(e.backendTransport==="fetch"){if(!e.backendBaseUrl)throw new P("backendTransport=fetch but backendBaseUrl is missing.",e);return It(e.backendBaseUrl,r,o,a,s,e,n,t)}if(!e.backendApiName)throw new P("backendTransport=gatey but backendApiName is missing.",e);return Mt(e.backendApiName,r,o,a,s,e,n,t)}async function It(e,t,n,r,o,a,s,i){let u=`${e.replace(/\/+$/,"")}${t}`,c={"content-type":"application/json",...o.headers??{}},p=s==="prompt"?xe(i,r):void 0,l=await z(i,c,{cacheKey:p}),m=o.query&&Object.keys(o.query).length>0?"?"+new URLSearchParams(Object.entries(o.query).map(([b,h])=>[b,String(h)])).toString():"";F(o,{feature:s,context:i,step:"backend:request",source:"backend"}),F(o,{feature:s,context:i,step:"backend:waiting",source:"backend"});let g=await fetch(u+m,{method:n,headers:l,body:JSON.stringify(r??{}),signal:o.signal,credentials:"omit"});if(F(o,{feature:s,context:i,step:"backend:response",source:"backend"}),!g.ok){let b=`HTTP ${g.status}`;try{let h=await g.text();h&&(b=`${b}: ${h.substring(0,400)}`)}catch{}throw new P(`Fetch backend call failed: ${b}`,a,g.status)}let y=g.headers.get("content-type")||"",f=Pe(g.headers,"x-recaptcha-verified-at");if(y.includes("application/json")){let b=await g.json(),h=(b&&typeof b.sessionId=="string"&&b.sessionId.trim()?b.sessionId.trim():void 0)??p;return f&&h&&ae(h,f),b}return f&&p&&ae(p,f),await g.text()}async function Mt(e,t,n,r,o,a,s,i){let u=ht(),c;switch(n.toUpperCase()){case"POST":c=u?.cognito?.post;break;case"GET":c=u?.cognito?.get;break;case"PUT":c=u?.cognito?.put;break;case"PATCH":c=u?.cognito?.patch;break;case"DELETE":c=u?.cognito?.del;break;default:throw new P(`Unsupported HTTP method "${n}" for Gatey backend.`,a)}if(!c)throw new P(`Gatey backend selected, but Gatey.cognito.${n.toLowerCase()} is not available.`,a);let p=s==="prompt"?xe(i,r):void 0,l=await z(i,{...o.headers??{}},{cacheKey:p});F(o,{feature:s,context:i,step:"backend:request",source:"backend"}),F(o,{feature:s,context:i,step:"backend:waiting",source:"backend"});let m=c({apiName:e,path:t,options:{body:r,headers:l,retryStrategy:{strategy:"no-retry"}}});o?.signal?.addEventListener?.("abort",()=>{m.cancel()});let g=await m.response,y=Pe(g.headers,"x-recaptcha-verified-at"),f=await g.body.json(),b=f?.sessionId??p;return y&&typeof b=="string"&&b.trim()&&ae(b.trim(),y),F(o,{feature:s,context:i,step:"backend:response",source:"backend"}),f}var Ae,St,Lt,Ot,oe=x(()=>{"use strict";q();ne();Ae=new Map;St={prompt:["text","audio","audioUrl","systemPrompt","context","maxTokens","responseConstraint","saveChatSession","engine","sessionId","images","imageUrls","feedbackMessageId","feedbackType","knowledgeBaseId","disableKB","enableRerank","topK","temperature","userSelectedCategories","userSelectedSubcategories","userSelectedTags"],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"]};Lt={prompt:"/admin/prompt",writer:"/admin/write",rewriter:"/admin/rewrite",summarizer:"/admin/summarize",translator:"/admin/translate","language-detector":"/admin/detect-language",proofreader:"/admin/proofread"},Ot={prompt:"/frontend/prompt",writer:"/frontend/write",rewriter:"/frontend/rewrite",summarizer:"/frontend/summarize",translator:"/frontend/translate","language-detector":"/frontend/detect-language",proofreader:"/frontend/proofread"}});function Ft(e,t,n){let r=-1;for(let o=n-1;o>=t;o--){let a=e[o],s=o+1<e.length?e[o+1]:"";if((a==="."||a==="!"||a==="?")&&(s===" "||s===`
|
|
1
|
+
var Xe=Object.defineProperty;var x=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(r){throw n=[r],r}};var Z=(e,t)=>{for(var n in t)Xe(e,n,{get:t[n],enumerable:!0})};function L(){return globalThis.WpSuite?.plugins?.aiKit}async function le(e=8e3){let t=L();if(t?.status!=="available"){if(t?.status==="error")throw new Error("AiKit failed");await new Promise((n,r)=>{let o=()=>s(n),a=()=>s(()=>r(new Error("AiKit failed"))),s=u=>{window.removeEventListener("wpsuite:ai-kit:ready",o),window.removeEventListener("wpsuite:ai-kit:error",a),i&&clearTimeout(i),u()};window.addEventListener("wpsuite:ai-kit:ready",o,{once:!0}),window.addEventListener("wpsuite:ai-kit:error",a,{once:!0});let i=e?window.setTimeout(()=>s(()=>r(new Error("AiKit timeout"))),e):0})}}async function Je(e=1e4){await le(e);let n=L()?.features?.store;if(!n)throw new Error("AiKit store is not available");return n}var q=x(()=>{"use strict"});import{getConfig as ge,getWpSuite as Ze}from"@smart-cloud/wpsuite-core";import{createReduxStore as Ye,dispatch as pe,register as et,select as tt,subscribe as nt}from"@wordpress/data";import{I18n as de}from"aws-amplify/utils";var Y,ee,rt,at,ot,st,it,ut,H,ct,me,lt,j=x(()=>{"use strict";q();typeof WpSuite<"u"?Y=WpSuite.siteSettings:Y={};ee=e=>{let t=e&&typeof e=="object"?e:{},n={};return typeof t.mode=="string"&&(n.mode=t.mode),typeof t.backendTransport=="string"&&(n.backendTransport=t.backendTransport),typeof t.backendApiName=="string"&&(n.backendApiName=t.backendApiName),typeof t.backendBaseUrl=="string"&&(n.backendBaseUrl=t.backendBaseUrl),typeof t.subscriptionType=="string"&&(n.subscriptionType=t.subscriptionType),typeof t.enableChatbot=="boolean"&&(n.enableChatbot=t.enableChatbot),typeof t.chatbot=="object"&&t.chatbot!==null&&(n.chatbot=t.chatbot),n},rt=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="+Y.lastUpdate).then(n=>n.ok?n.text():null).then(n=>n?JSON.parse(n):null).catch(()=>null)),t??null},at=async()=>{let e=ee(await ge("aiKit")),t=await rt();return{config:e,showChatbotPreview:!1,language:void 0,direction:void 0,customTranslations:t}},ot={setShowChatbotPreview(e){return{type:"SET_SHOW_CHATBOT_PREVIEW",showChatbotPreview:e}},setLanguage(e){return!e||e==="system"?de.setLanguage(""):de.setLanguage(e),{type:"SET_LANGUAGE",language:e}},setDirection(e){return{type:"SET_DIRECTION",direction:e}},setConfig:e=>({type:"SET_CONFIG",config:e})},st={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}},it={},ut=e=>{let t=pe(e);return delete t.setConfig,t},H=e=>tt(e),ct=async e=>{Ze().siteSettings.lastUpdate=Date.now();let t=await ge("aiKit"),n=ee(t);pe(e).setConfig(n)},me=async()=>{let e=await at(),t=Ye("smartcloud/ai-kit",{reducer(n=e,r){switch(r.type){case"SET_LANGUAGE":return{...n,language:r.language};case"SET_DIRECTION":return{...n,direction:r.direction};case"SET_SHOW_CHATBOT_PREVIEW":return{...n,showChatbotPreview:r.showChatbotPreview};case"SET_CONFIG":return{...n,config:r.config}}return n},actions:ot,selectors:st,resolvers:it});return et(t),t},lt=(e,t,n)=>{let r;function o(){let s=H(e).getState(),i=t(s);if(i!==r){let u=r;r=i,n(r,u)}}let a=nt(o,e);return o(),a}});var k,fe=x(()=>{"use strict";k="smartcloud-ai-kit"});import{jsx as v,jsxs as te}from"react/jsx-runtime";var Pn,Sn,Tn,be=x(()=>{"use strict";Pn=e=>te("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:[v("path",{d:"M19 27H33"}),v("path",{d:"M19 33H33"}),v("path",{d:"M8 21L9.5 24L12.5 25.5L9.5 27L8 30L6.5 27L3.5 25.5L6.5 24Z"}),v("path",{d:"M36 4L38 8L42 10L38 12L36 16L34 12L30 10L34 8Z"}),v("path",{d:"M16 10V40H36V22"}),v("path",{d:"M16 10H22"}),v("path",{d:"M22 10V23H36"}),v("path",{d:"M22 10L36 22"})]}),Sn=e=>te("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:[v("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"}),v("rect",{x:"14",y:"13",width:"6",height:"6",rx:"1"}),v("rect",{x:"28",y:"13",width:"6",height:"6",rx:"1"}),v("path",{d:"M16 24H32"})]}),Tn=e=>te("svg",{xmlns:"http://www.w3.org/2000/svg",width:"48",height:"48",viewBox:"0 0 48 48",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",...e,children:[v("path",{stroke:"none",d:"M0 0h48v48H0z",fill:"none"}),v("path",{d:"M6 20a14 14 0 1 0 28 0a14 14 0 1 0 -28 0"}),v("path",{d:"M42 42l-12 -12"}),v("path",{d:"M20 20a3 3 0 1 0 -2.28 -4.948"}),v("circle",{cx:"20",cy:"26",r:"0.9",fill:"currentColor",stroke:"none"})]})});var P,ne=x(()=>{"use strict";P=class extends Error{constructor(n,r,o){super(n);this.decision=r;this.status=o;this.name="AiBackendError"}decision;status}});var ve={};Z(ve,{MIN_CHROME_VERSION:()=>he,checkOnDeviceAvailability:()=>Ce,decideCapability:()=>$,isOnDeviceLanguageSupported:()=>R,resolveBackend:()=>M});import{getWpSuite as dt}from"@smart-cloud/wpsuite-core";import{getGateyPlugin as gt}from"@smart-cloud/gatey-core";async function ye(){let t=await dt()?.plugins?.aiKit?.features.store;return H(t).getConfig()??{}}function we(e){let t=e.backendApiName?.trim()||void 0,n=e.backendBaseUrl?.trim()||void 0;return{transport:e.backendTransport??(n?"fetch":t?"gatey":void 0),backendApiName:t,backendBaseUrl:n}}function pt(e){if(e.mode)return e.mode;let{transport:t}=we(e);return t?"backend-fallback":"local-only"}async function M(){let e=await ye(),{transport:t,backendApiName:n,backendBaseUrl:r}=we(e);if(!t)return{available:!1,reason:"No backend configured"};if(t==="fetch")return r?{available:!0,transport:t,baseUrl:r,reason:"Custom fetch backend"}:{available:!1,reason:"backendBaseUrl is missing"};if(!n)return{available:!1,reason:"backendApiName is missing"};let o=gt();return!o?.availability||await o.availability()!=="available"?{available:!1,reason:"Gatey is not available"}:{available:!0,transport:t,apiName:n,reason:"Gatey backend"}}function O(e){return typeof globalThis[e]<"u"}function ke(e){if(!e)return;let t=Number.parseInt(String(e).split(".")[0]??"",10);return Number.isFinite(t)?t:void 0}function V(e,t){return e?.find(n=>n.brand===t)?.version}async function ft(){let e=navigator?.userAgentData;if(e){try{let n=(await e.getHighEntropyValues?.(["fullVersionList"]))?.fullVersionList;if(Array.isArray(n)&&n.length>0)return n}catch{}if(Array.isArray(e.brands)&&e.brands.length>0)return e.brands}}function bt(e){let t=e.match(/\b(?:Chrome|Chromium)\/(\d{2,3})\b/i);return t?.[1]?ke(t[1]):void 0}function yt(){return!!navigator?.brave}async function wt(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??"",n=await ft(),r=V(n,"Microsoft Edge")??V(n,"Microsoft Edge WebView2"),o=V(n,"Google Chrome")??V(n,"Chromium"),a=!!r||/\bEdg\//i.test(t)||/\bEdgiOS\//i.test(t),s=/\bOPR\//i.test(t),i=/\bVivaldi\//i.test(t),u=/\bSamsungBrowser\//i.test(t),c=/\bFirefox\//i.test(t),p=!/\bChrome\//i.test(t)&&/\bSafari\//i.test(t)&&!/\bChromium\//i.test(t),l=yt()||/\bBrave\//i.test(t);if(a||s||i||u||c||p||l)return{allowed:!1,reason:a?"edge":l?"brave":c?"firefox":p?"safari":s?"opera":i?"vivaldi":u?"samsung":"unsupported-browser"};let m=ke(o)??bt(t),g=he[e];return g?m?m<g?{allowed:!1,reason:`chrome-too-old-${m}-lt-${g}`,chromeMajor:m}:{allowed:!0,reason:"ok",chromeMajor:m}:{allowed:!1,reason:"unknown-chrome-version"}:{allowed:!1,reason:"no-min-version",chromeMajor:m}}async function Ce(e,t){try{let n=await wt(e),r=`browser-gate:${n.reason}${n.chromeMajor?` (chrome ${n.chromeMajor})`:""}`;if(!n.allowed)return{available:!1,status:"unavailable",reason:r};let o=a=>a==="unavailable"?mt.has(e)?"requires Chrome flags or Origin Trial tokens \u2014 see AI-Kit Diagnostics":"check hardware requirements or see AI-Kit Diagnostics":r;switch(e){case"writer":{if(!O("Writer")||!Writer?.availability)return{available:!1,status:"api-not-present",reason:r};let a=await Writer.availability(t);return{available:a!=="unavailable",status:a,reason:o(a)}}case"rewriter":{if(!O("Rewriter")||!Rewriter?.availability)return{available:!1,status:"api-not-present",reason:r};let a=await Rewriter.availability(t);return{available:a!=="unavailable",status:a,reason:o(a)}}case"summarizer":{if(!O("Summarizer")||!Summarizer?.availability)return{available:!1,status:"api-not-present",reason:r};let a=await Summarizer.availability(t);return{available:a!=="unavailable",status:a,reason:o(a)}}case"proofreader":{if(!O("Proofreader")||!Proofreader?.availability)return{available:!1,status:"api-not-present",reason:r};let a=await Proofreader.availability(t);return{available:a!=="unavailable",status:a,reason:o(a)}}case"language-detector":{if(!O("LanguageDetector")||!LanguageDetector?.availability)return{available:!1,status:"api-not-present",reason:r};let a=await LanguageDetector.availability(t);return{available:a!=="unavailable",status:a,reason:o(a)}}case"translator":{if(!O("Translator")||!Translator?.availability)return{available:!1,status:"api-not-present",reason:r};let a=t;if(!a?.sourceLanguage||!a?.targetLanguage)return{available:!1,status:"error",reason:r,error:new Error("Translator.availability requires sourceLanguage/targetLanguage")};let s=await Translator.availability({...a,sourceLanguage:a.sourceLanguage==="auto"?"en":a.sourceLanguage,targetLanguage:a.sourceLanguage==="auto"||a.sourceLanguage===a.targetLanguage?"hu":a.targetLanguage});return{available:s!=="unavailable",status:s,reason:o(s)}}case"prompt":{if(!O("LanguageModel")||!LanguageModel?.availability)return{available:!1,status:"api-not-present",reason:r};let a=await LanguageModel.availability(t);return{available:a!=="unavailable",status:a,reason:o(a)}}default:return{available:!1,status:"unknown-feature",reason:r}}}catch(n){return{available:!1,status:"error",reason:"exception in availability()",error:n}}}function R(e){let t=["en","ja","es"],n=e.toLowerCase();return t.some(r=>n===r.toLowerCase())}async function $(e,t,n){let r=await ye(),o=n||pt(r),a=await M(),s=await Ce(e,t),i=s.available,u=a.available,c={feature:e,mode:o,onDeviceAvailable:i,onDeviceStatus:s.status,onDeviceReason:s.reason,backendAvailable:u,backendTransport:a.transport,backendApiName:a.apiName,backendBaseUrl:a.baseUrl,backendReason:a.reason};return o==="local-only"?i?{...c,source:"on-device",reason:`local-only, on-device available (${s.reason??s.status})`}:{...c,source:"none",reason:`local-only, but on-device unavailable (${s.reason??s.status})`}:o==="backend-only"?u?{...c,source:"backend",reason:`backend-only, backend available (${a.reason??"n/a"})`}:{...c,source:"none",reason:`backend-only, but backend unavailable (${a.reason??"n/a"})`}:i?{...c,source:"on-device",reason:`backend-fallback, using on-device (${s.reason??s.status})`}:u?{...c,source:"backend",reason:`backend-fallback, using backend (${a.reason??"n/a"}; on-device: ${s.reason??s.status})`}:{...c,source:"none",reason:`No on-device AI or backend available (on-device: ${s.reason??s.status}; backend: ${a.reason??"n/a"})`}}var he,mt,re=x(()=>{"use strict";j();he={summarizer:138,translator:138,"language-detector":138,writer:137,rewriter:137,proofreader:141,prompt:138},mt=new Set(["writer","rewriter","proofreader","prompt"])});var Le={};Z(Le,{dispatchCustomBackend:()=>Et,dispatchFeatureBackend:()=>K,withRecaptchaHeaders:()=>z});import{getGateyPlugin as ht}from"@smart-cloud/gatey-core";import{getRecaptcha as kt,getWpSuite as Ct}from"@smart-cloud/wpsuite-core";function vt(e){if(!e)return;let t=Date.parse(e);return Number.isFinite(t)?t:void 0}function At(e){let t=e?.reCaptchaChatTtlSeconds,n=typeof t=="number"&&Number.isFinite(t)?Math.max(0,t):120;return Math.min(3600,n)*1e3}function xt(e,t){let n=At(t);if(n<=0)return!1;let r=Ae.get(e);return r?Date.now()-r<n:!1}function ae(e,t){let n=vt(t);n&&Ae.set(e,n)}function xe(e,t){if(e!=="frontend"||!Se(t)||t.saveChatSession!==!0)return;let n=t.sessionId;return typeof n=="string"&&n.trim()?n.trim():void 0}function Pe(e,t){if(!e)return;try{if(typeof e.get=="function")return e.get(t)??void 0}catch{}let n=Object.keys(e).find(o=>o.toLowerCase()===t.toLowerCase());if(!n)return;let r=e[n];return typeof r=="string"&&r?r:void 0}async function Pt(e,t){if(e!=="frontend")return;let n=Ct()?.siteSettings;if(!n?.reCaptchaPublicKey||t?.cacheKey&&xt(t.cacheKey,L()?.settings||{}))return;let{execute:r}=await kt(n?.useRecaptchaEnterprise||!1);if(typeof r=="function")try{let a=await r(n.reCaptchaPublicKey,{action:"generate"});return typeof a=="string"&&a?a:void 0}catch{return}}async function z(e,t,n){if(e!=="frontend"||t["X-Recaptcha-Token"]||t["x-recaptcha-token"])return t;let r=await Pt(e,n);return r?{...t,"X-Recaptcha-Token":r}:t}function F(e,t){try{e?.onStatus?.(t)}catch{}}function Se(e){return typeof e=="object"&&e!==null&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null)}function Tt(e,t){if(!Se(t))return t;let n=St[e];if(!n)return t;let r={};for(let o of n)o in t&&(r[o]=t[o]);return r}function Rt(e,t){return(e==="admin"?Lt:Ot)[t]}function Bt(e,t){return`${e==="admin"?"/admin":"/frontend"}${t}`}async function K(e,t,n,r,o={}){let a=Rt(t,n);if(!a)throw new P(`No backend path configured for "${n}" (${t}).`,e);let s=Tt(n,r);return Te(e,t,n,a,"POST",s,o)}async function Et(e,t,n,r,o,a={}){let s=Bt(t,n);return Te(e,t,"prompt",s,r,o,a)}async function Te(e,t,n,r,o,a,s={}){if(e.backendTransport==="fetch"){if(!e.backendBaseUrl)throw new P("backendTransport=fetch but backendBaseUrl is missing.",e);return It(e.backendBaseUrl,r,o,a,s,e,n,t)}if(!e.backendApiName)throw new P("backendTransport=gatey but backendApiName is missing.",e);return Mt(e.backendApiName,r,o,a,s,e,n,t)}async function It(e,t,n,r,o,a,s,i){let u=`${e.replace(/\/+$/,"")}${t}`,c={"content-type":"application/json",...o.headers??{}},p=s==="prompt"?xe(i,r):void 0,l=await z(i,c,{cacheKey:p}),m=o.query&&Object.keys(o.query).length>0?"?"+new URLSearchParams(Object.entries(o.query).map(([b,h])=>[b,String(h)])).toString():"";F(o,{feature:s,context:i,step:"backend:request",source:"backend"}),F(o,{feature:s,context:i,step:"backend:waiting",source:"backend"});let g=await fetch(u+m,{method:n,headers:l,body:JSON.stringify(r??{}),signal:o.signal,credentials:"omit"});if(F(o,{feature:s,context:i,step:"backend:response",source:"backend"}),!g.ok){let b=`HTTP ${g.status}`;try{let h=await g.text();h&&(b=`${b}: ${h.substring(0,400)}`)}catch{}throw new P(`Fetch backend call failed: ${b}`,a,g.status)}let y=g.headers.get("content-type")||"",f=Pe(g.headers,"x-recaptcha-verified-at");if(y.includes("application/json")){let b=await g.json(),h=(b&&typeof b.sessionId=="string"&&b.sessionId.trim()?b.sessionId.trim():void 0)??p;return f&&h&&ae(h,f),b}return f&&p&&ae(p,f),await g.text()}async function Mt(e,t,n,r,o,a,s,i){let u=ht(),c;switch(n.toUpperCase()){case"POST":c=u?.cognito?.post;break;case"GET":c=u?.cognito?.get;break;case"PUT":c=u?.cognito?.put;break;case"PATCH":c=u?.cognito?.patch;break;case"DELETE":c=u?.cognito?.del;break;default:throw new P(`Unsupported HTTP method "${n}" for Gatey backend.`,a)}if(!c)throw new P(`Gatey backend selected, but Gatey.cognito.${n.toLowerCase()} is not available.`,a);let p=s==="prompt"?xe(i,r):void 0,l=await z(i,{...o.headers??{}},{cacheKey:p});F(o,{feature:s,context:i,step:"backend:request",source:"backend"}),F(o,{feature:s,context:i,step:"backend:waiting",source:"backend"});let m=c({apiName:e,path:t,options:{body:r,headers:l,retryStrategy:{strategy:"no-retry"}}});o?.signal?.addEventListener?.("abort",()=>{m.cancel()});let g=await m.response,y=Pe(g.headers,"x-recaptcha-verified-at"),f=await g.body.json(),b=f?.sessionId??p;return y&&typeof b=="string"&&b.trim()&&ae(b.trim(),y),F(o,{feature:s,context:i,step:"backend:response",source:"backend"}),f}var Ae,St,Lt,Ot,oe=x(()=>{"use strict";q();ne();Ae=new Map;St={prompt:["text","audio","audioUrl","systemPrompt","context","maxTokens","responseConstraint","saveChatSession","engine","sessionId","images","imageUrls","feedbackMessageId","feedbackType","knowledgeBaseId","disableKB","topK","temperature","userSelectedCategories","userSelectedSubcategories","userSelectedTags"],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"]};Lt={prompt:"/admin/prompt",writer:"/admin/write",rewriter:"/admin/rewrite",summarizer:"/admin/summarize",translator:"/admin/translate","language-detector":"/admin/detect-language",proofreader:"/admin/proofread"},Ot={prompt:"/frontend/prompt",writer:"/frontend/write",rewriter:"/frontend/rewrite",summarizer:"/frontend/summarize",translator:"/frontend/translate","language-detector":"/frontend/detect-language",proofreader:"/frontend/proofread"}});function Ft(e,t,n){let r=-1;for(let o=n-1;o>=t;o--){let a=e[o],s=o+1<e.length?e[o+1]:"";if((a==="."||a==="!"||a==="?")&&(s===" "||s===`
|
|
2
2
|
`||s==="\r"||o===e.length-1)){r=o+1;break}}return r>t+(n-t)*.5?r:-1}function Kt(e,t,n){let r=-1;for(let o=n-1;o>=t;o--){let a=e[o],s=o+1<e.length?e[o+1]:"";if((a===","||a===";"||a===":")&&(s===" "||s===`
|
|
3
3
|
`||s==="\r")){r=o+1;break}}return r>t+(n-t)*.5?r:-1}function G(e,t){let n=[],r=0;for(;r<e.length;){let o=Math.min(r+t,e.length);if(o<e.length){let s=e.lastIndexOf(`
|
|
4
4
|
|
package/dist/types.d.ts
CHANGED
|
@@ -362,8 +362,6 @@ export interface PromptResult {
|
|
|
362
362
|
usage?: {
|
|
363
363
|
queryInputTokens?: number;
|
|
364
364
|
queryOutputTokens?: number;
|
|
365
|
-
rerankInputTokens?: number;
|
|
366
|
-
rerankOutputTokens?: number;
|
|
367
365
|
summaryInputTokens?: number;
|
|
368
366
|
summaryOutputTokens?: number;
|
|
369
367
|
inferenceInputTokens?: number;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@smart-cloud/ai-kit-core",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.3",
|
|
4
4
|
"description": "AI Kit Core Package",
|
|
5
5
|
"author": "Smart Cloud Solutions Inc.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -24,35 +24,51 @@
|
|
|
24
24
|
"build:types": "tsc -p tsconfig.types.json",
|
|
25
25
|
"lint": "eslint 'src/**/*.ts' --report-unused-disable-directives --max-warnings 0",
|
|
26
26
|
"test": "echo \"Error: no test specified\" && exit 1",
|
|
27
|
-
"release:npm": "WPSUITE_PREMIUM=true yarn build && npm publish --access=public"
|
|
27
|
+
"release:npm": "WPSUITE_PREMIUM=true yarn build && npm publish --access=public --registry=https://registry.npmjs.org/"
|
|
28
28
|
},
|
|
29
29
|
"publishConfig": {
|
|
30
30
|
"registry": "https://registry.npmjs.org/",
|
|
31
31
|
"access": "public"
|
|
32
32
|
},
|
|
33
|
+
"resolutions": {
|
|
34
|
+
"brace-expansion": "^5.0.9",
|
|
35
|
+
"esbuild": "^0.28.1",
|
|
36
|
+
"fast-xml-builder": "^1.3.0",
|
|
37
|
+
"fast-xml-parser": "^5.10.1",
|
|
38
|
+
"flatted": "^3.4.4",
|
|
39
|
+
"picomatch": "^4.0.5",
|
|
40
|
+
"rollup": "^4.62.3"
|
|
41
|
+
},
|
|
33
42
|
"dependencies": {
|
|
34
|
-
"@smart-cloud/gatey-core": "^2.3.
|
|
35
|
-
"@smart-cloud/wpsuite-core": "^2.3.
|
|
36
|
-
"aws-amplify": "^6.
|
|
43
|
+
"@smart-cloud/gatey-core": "^2.3.3",
|
|
44
|
+
"@smart-cloud/wpsuite-core": "^2.3.2",
|
|
45
|
+
"aws-amplify": "^6.20.0"
|
|
37
46
|
},
|
|
38
47
|
"peerDependencies": {
|
|
39
|
-
"@wordpress/data": "^10.
|
|
40
|
-
"@wordpress/i18n": "^6.
|
|
48
|
+
"@wordpress/data": "^10.52.0",
|
|
49
|
+
"@wordpress/i18n": "^6.25.0",
|
|
41
50
|
"react": "^18.3.1"
|
|
42
51
|
},
|
|
43
52
|
"devDependencies": {
|
|
53
|
+
"@aws-amplify/core": "^6.18.0",
|
|
54
|
+
"@smart-cloud/aws-amplify-ui": "6.15.5",
|
|
55
|
+
"@smart-cloud/aws-amplify-ui-react": "6.15.5",
|
|
44
56
|
"@eslint/js": "^10.0.1",
|
|
45
|
-
"@types/dom-chromium-ai": "^0.0.
|
|
46
|
-
"@types/node": "^
|
|
47
|
-
"@
|
|
48
|
-
"@
|
|
49
|
-
"@
|
|
50
|
-
"@
|
|
51
|
-
"
|
|
52
|
-
"
|
|
57
|
+
"@types/dom-chromium-ai": "^0.0.17",
|
|
58
|
+
"@types/node": "^26.1.2",
|
|
59
|
+
"@types/react": "^18.3.28",
|
|
60
|
+
"@types/react-dom": "^18.3.7",
|
|
61
|
+
"@typescript-eslint/eslint-plugin": "^8.65.0",
|
|
62
|
+
"@typescript-eslint/parser": "^8.65.0",
|
|
63
|
+
"@wordpress/data": "^10.52.0",
|
|
64
|
+
"@wordpress/i18n": "^6.25.0",
|
|
65
|
+
"eslint": "^10.8.0",
|
|
66
|
+
"globals": "^17.8.0",
|
|
67
|
+
"jose": "^6.2.5",
|
|
53
68
|
"react": "^18.3.1",
|
|
69
|
+
"react-dom": "^18.3.1",
|
|
54
70
|
"tsup": "^8.5.1",
|
|
55
71
|
"typescript": "^6.0.3",
|
|
56
|
-
"typescript-eslint": "^8.
|
|
72
|
+
"typescript-eslint": "^8.65.0"
|
|
57
73
|
}
|
|
58
74
|
}
|