# ai/trunk/build-scripts/experiments/suggest-reply.js

AI, version trunk. 1 lines.

- Page: https://pluginprobe.com/plugins/ai/trunk/code/build-scripts/experiments/suggest-reply.js
- Raw: https://pluginprobe.com/plugins/ai/trunk/raw/build-scripts/experiments/suggest-reply.js
- Modified: 2026-08-18T21:09:32+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/ai/trunk/code/build-scripts/experiments/suggest-reply.js#L10-L20`.

```javascript
(()=>{"use strict";const e={n:t=>{const n=t&&t.__esModule?()=>t.default:()=>t;return e.d(n,{a:n}),n},d:(t,n)=>{if(Array.isArray(n))for(var i=0;i<n.length;){var a=n[i++],o=n[i++];e.o(t,a)?0===o&&i++:0===o?Object.defineProperty(t,a,{enumerable:!0,value:n[i++]}):Object.defineProperty(t,a,{enumerable:!0,get:o})}else for(var a in n)e.o(n,a)&&!e.o(t,a)&&Object.defineProperty(t,a,{enumerable:!0,get:n[a]})},o:(e,t)=>Object.hasOwn(e,t)},t=window.wp.domReady;var n=e.n(t);const i=window.wp.i18n,a=window.wp.apiFetch;var o=e.n(a);const r=window.wp.url;let s=!1;const c=()=>{s||(console.warn("[AI] Client ability execution is unavailable. Falling back to REST."),s=!0)},l=(e,t,n)=>{if("GET"===n||"DELETE"===n)return{path:null==t?`/wp-abilities/v1/abilities/${e}/run`:(0,r.addQueryArgs)(`/wp-abilities/v1/abilities/${e}/run`,{input:t}),method:n};const i={path:`/wp-abilities/v1/abilities/${e}/run`,method:"POST"};return void 0!==t&&(i.data={input:t}),i};const u=(0,i.__)("Generating…","ai"),d=(0,i.__)("Suggest reply","ai"),p=(0,i.__)("Suggest Reply","ai"),y=(0,i.__)("Generating AI reply…","ai"),m=(0,i.__)("Failed to generate a reply suggestion. Please try again.","ai"),b="wpai-suggest-reply-error",w="wpai-suggest-reply-controls",g="wpai-suggest-reply-btn",f="friendly",h="data-wpai-suggest-reply-initialized",_="data-tone",v=[{label:(0,i.__)("Friendly","ai"),value:"friendly"},{label:(0,i.__)("Professional","ai"),value:"professional"},{label:(0,i.__)("Casual","ai"),value:"casual"}];function A(e){const t=document.querySelector("#replycontainer #replycontent");t&&(t.placeholder=e)}function E(e){const t=[document.querySelector("#replycontent"),document.querySelector("#replysubmit .save"),document.querySelector("#replysubmit .cancel"),document.getElementById(g),document.querySelector(".wpai-split-button__toggle")];document.querySelectorAll(".wpai-dropdown-item").forEach(e=>t.push(e)),document.querySelectorAll("#qt_replycontent_toolbar .ed_button").forEach(e=>{e instanceof HTMLInputElement&&t.push(e)}),t.forEach(t=>{t&&(t.disabled=e)})}function S(){document.getElementById(b)?.remove()}function q(e){S();const t=document.querySelector(".reply-submit-buttons");if(!t)return;const n=document.createElement("div");n.id=b,n.className="notice notice-error notice-alt inline wpai-suggest-reply-error";const i=document.createElement("p");i.textContent=e,n.appendChild(i),t.appendChild(n)}function C(e,t){const n=document.querySelector(`.wpai-suggest-reply[data-comment-id="${e}"]`);n&&(t?(n.textContent=u,n.setAttribute("aria-disabled","true"),n.classList.add("wpai-suggest-reply-link-loading")):(n.textContent=d,n.removeAttribute("aria-disabled"),n.classList.remove("wpai-suggest-reply-link-loading")))}function x(e){const t=document.getElementById(g);if(t&&(t.disabled=e,t.textContent=e?u:p),e){const e=document.querySelector(".wpai-split-button__dropdown"),t=document.querySelector(".wpai-split-button__toggle");e&&(e.hidden=!0),t&&t.setAttribute("aria-expanded","false")}}function L(){const e=document.querySelector(".wpai-split-button");return e?.getAttribute(_)??f}async function k(e,t){S(),A(y),E(!0),C(e,!0),x(!0);try{const n=await async function(e,t,n){try{const n=await(async()=>{try{const{ready:e}=await import("@wordpress/core-abilities");return await e,await import("@wordpress/abilities")}catch{return null}})();if("function"==typeof n?.executeAbility)return await n.executeAbility(e,t);c()}catch(e){if(console.error(e),!(e=>{if(!e||"object"!=typeof e)return!1;const t="message"in e&&"string"==typeof e.message?e.message:"",n="code"in e&&"string"==typeof e.code?e.code:"";return"ability_not_found"===n||t.includes("Ability not found")||t.includes("missing callback")||"ability_invalid_input"===n})(e))throw e;c()}const i=n?.method??"POST";return await o()({...l(e,t,i),...n?.signal?{signal:n.signal}:{}})}("ai/suggest-reply",{comment_id:e,tone:t});A(""),function(e){const t=document.querySelector("#replycontainer #replycontent");t&&(t.value=e,t.dispatchEvent(new Event("input",{bubbles:!0})))}(n??"")}catch(e){A(""),q(e.message?e.message:m)}finally{E(!1),C(e,!1),x(!1);const t=document.querySelector("#replycontainer #replycontent");t?.focus()}}function I(e){const t=document.querySelector("#replyrow"),n=document.querySelector("#replyrow #comment_ID");if(!t||!n)return!1;const i="none"!==t.style.display&&null!==t.offsetParent,a=parseInt(n.value,10)===e;return i&&a}function T(){const e=document.querySelector("#the-comment-list");e&&(function(){if(document.getElementById(w))return;const e=document.querySelector("#replysubmit .reply-submit-buttons");if(!e)return;const t=document.createElement("span");t.id=w,t.className="wpai-suggest-reply-controls",t.appendChild(function(){let e=f;const t=document.createElement("div");t.className="wpai-split-button",t.setAttribute(_,e);const n=document.createElement("button");n.id=g,n.type="button",n.className="button wpai-split-button__action",n.textContent=p,n.addEventListener("click",()=>{const e=document.querySelector("#replyrow #comment_ID"),t=parseInt(e?.value??"0",10);t>0&&async function(e){const t=L();await k(e,t)}(t)});const a=document.createElement("button");a.type="button",a.className="button wpai-split-button__toggle",a.setAttribute("aria-expanded","false"),a.setAttribute("aria-haspopup","true"),a.setAttribute("aria-label",(0,i.__)("Change reply tone","ai")),a.innerHTML='<span class="dashicons dashicons-arrow-down-alt2"></span>';const o=document.createElement("div");o.className="wpai-split-button__dropdown",o.hidden=!0;const r=()=>{o.querySelectorAll(".wpai-dropdown-item").forEach(t=>{t.getAttribute(_)===e?(t.classList.add("is-selected"),t.setAttribute("aria-selected","true")):(t.classList.remove("is-selected"),t.setAttribute("aria-selected","false"))}),t.setAttribute(_,e)};return v.forEach(({label:t,value:n})=>{const i=document.createElement("button");i.type="button",i.className="wpai-dropdown-item",i.setAttribute(_,n),i.innerHTML=`<span class="dashicons dashicons-yes wpai-selected-icon"></span> ${t}`,i.addEventListener("click",()=>{e=n,r(),o.hidden=!0,a.setAttribute("aria-expanded","false"),a.focus()}),o.appendChild(i)}),r(),a.addEventListener("click",()=>{const e="true"===a.getAttribute("aria-expanded");a.setAttribute("aria-expanded",e?"false":"true"),o.hidden=e}),t.addEventListener("keydown",e=>{"Escape"!==e.key||o.hidden||(o.hidden=!0,a.setAttribute("aria-expanded","false"),a.focus())}),document.addEventListener("click",e=>{t.contains(e.target)||(o.hidden=!0,a.setAttribute("aria-expanded","false"))}),t.appendChild(n),t.appendChild(a),t.appendChild(o),t}());const n=e.querySelector(".waiting.spinner");n?e.insertBefore(t,n):e.appendChild(t)}(),e.hasAttribute(h)||(e.setAttribute(h,"true"),e.addEventListener("click",e=>{const t=e.target;if(!t.classList.contains("wpai-suggest-reply"))return;if("true"===t.getAttribute("aria-disabled"))return;e.preventDefault();const n=parseInt(t.getAttribute("data-comment-id")??"0",10);n>0&&async function(e){const t=L();!function(e,t){if(I(e))return void t();const n=document.querySelector(`#comment-${e} .reply button`);n&&n.click();const i=Date.now(),a=()=>{I(e)?t():Date.now()-i>=1e3?q(m):window.setTimeout(a,30)};window.setTimeout(a,30)}(e,async()=>{await k(e,t)})}(n)})))}n()(()=>{const e=window.aiSuggestReplyData;e?.enabled&&T()})})();
```
