cli-jaw 2.1.0 → 2.1.1
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/package.json +1 -1
- package/public/css/orc-state.css +21 -2
- package/public/dist/assets/{app-DLDdZ41k.js → app-2Rz848bQ.js} +4 -4
- package/public/dist/assets/{app-RpnKs-sT.css → app-BW-Xz2p6.css} +1 -1
- package/public/dist/assets/{employees-DZSPGlaH.js → employees-DiNLzEXS.js} +1 -1
- package/public/dist/assets/{memory-B4RpXXJ7.js → memory-B_nn0A4v.js} +1 -1
- package/public/dist/assets/memory-CCjNFWmO.js +1 -0
- package/public/dist/assets/{render-DnylWKO1.js → render-CgDEBoCX.js} +1 -1
- package/public/dist/assets/settings-CY_6tGuS.js +1 -0
- package/public/dist/assets/{settings-VCXKhhhz.js → settings-DWW4GzNc.js} +1 -1
- package/public/dist/assets/sidebar-DQKE5IA1.js +23 -0
- package/public/dist/assets/{skills-CW7NEhew.js → skills-COa4iSwL.js} +1 -1
- package/public/dist/assets/skills-DYTlqoke.js +1 -0
- package/public/dist/assets/{slash-commands-CAydTUgf.js → slash-commands-C_ePvrPi.js} +1 -1
- package/public/dist/assets/slash-commands-D7CU5oso.js +1 -0
- package/public/dist/assets/{trace-drawer-G-KP3IbQ.js → trace-drawer-CY4z_Ie8.js} +1 -1
- package/public/dist/assets/ui-Car1OUvV.js +1 -0
- package/public/dist/assets/{ui-CkHB9Jmo.js → ui-DK_9ndj0.js} +3 -3
- package/public/dist/index.html +2 -2
- package/public/js/ws.ts +31 -3
- package/public/dist/assets/memory-C9EVOb_D.js +0 -1
- package/public/dist/assets/settings-DIG_i79X.js +0 -1
- package/public/dist/assets/sidebar-Bi_ktFVw.js +0 -18
- package/public/dist/assets/skills-RjRqvykb.js +0 -1
- package/public/dist/assets/slash-commands-DdXu96Zd.js +0 -1
- package/public/dist/assets/ui-CIQjTLzc.js +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cli-jaw",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.1",
|
|
4
4
|
"description": "Personal AI assistant powered by Antigravity, AI-E, Claude, Claude E, Codex, Codex App, Cursor, Gemini, Grok, OpenCode, and Copilot — Web, Terminal, Telegram, and Discord interfaces with 107 built-in skills",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"keywords": [
|
package/public/css/orc-state.css
CHANGED
|
@@ -240,10 +240,29 @@ body[data-orc-state].orc-pulse #chatMessages {
|
|
|
240
240
|
}
|
|
241
241
|
|
|
242
242
|
/* ─── Interview Panel ─── */
|
|
243
|
-
.interview-panel { margin: 0 auto 8px; max-width: 600px;
|
|
243
|
+
.interview-panel { margin: 0 auto 8px; max-width: 600px; font-size: 0.82rem; }
|
|
244
244
|
.interview-panel[hidden] { display: none; }
|
|
245
|
+
|
|
246
|
+
/* One-line toggle header — sits right under the IPABCD bar */
|
|
247
|
+
.iv-toggle {
|
|
248
|
+
display: flex; align-items: center; gap: 6px; width: 100%;
|
|
249
|
+
background: var(--bg-secondary, rgba(255,255,255,0.04));
|
|
250
|
+
border: 1px solid var(--border-color, rgba(255,255,255,0.08));
|
|
251
|
+
border-radius: 8px; padding: 4px 10px; cursor: pointer;
|
|
252
|
+
color: var(--text-secondary, inherit); font: inherit; font-size: 0.78rem;
|
|
253
|
+
text-align: left;
|
|
254
|
+
}
|
|
255
|
+
.iv-toggle:hover { background: var(--bg-hover, rgba(255,255,255,0.08)); }
|
|
256
|
+
.iv-chevron { display: inline-block; opacity: 0.65; transition: transform 0.15s ease; }
|
|
257
|
+
.interview-panel:not(.collapsed) .iv-chevron { transform: rotate(90deg); }
|
|
258
|
+
.iv-summary { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
259
|
+
.iv-known-count { color: var(--accent-green, #4caf50); }
|
|
260
|
+
.iv-unknown-count { color: var(--accent-yellow, #ff9800); }
|
|
261
|
+
|
|
262
|
+
/* Expandable body — capped height so it never buries the chat */
|
|
263
|
+
.iv-body { display: flex; gap: 16px; margin-top: 6px; max-height: 220px; overflow-y: auto; }
|
|
264
|
+
.interview-panel.collapsed .iv-body { display: none; }
|
|
245
265
|
.iv-section { flex: 1; }
|
|
246
266
|
.iv-section ul { list-style: none; padding: 0; margin: 4px 0; }
|
|
247
267
|
.iv-known::before { content: '✓ '; color: var(--accent-green, #4caf50); }
|
|
248
268
|
.iv-unknown::before { content: '? '; color: var(--accent-yellow, #ff9800); }
|
|
249
|
-
.iv-round { font-size: 0.75rem; opacity: 0.6; align-self: flex-end; }
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-render-Bjnw0wQ6.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{n as e,r as t}from"./vendor-render-DCb9B75Q.js";import{t as n}from"./state-D04-chBy.js";import{a as r,i,n as a,r as o,t as s}from"./api-tVoG39dL.js";import{t as c}from"./preload-helper-DuH3-WbD.js";import{S as l,a as u,b as d,d as f,g as p,i as m,l as ee,m as te,n as ne,o as re,u as ie,x as ae,y as oe}from"./render-
|
|
2
|
+
import{n as e,r as t}from"./vendor-render-DCb9B75Q.js";import{t as n}from"./state-D04-chBy.js";import{a as r,i,n as a,r as o,t as s}from"./api-tVoG39dL.js";import{t as c}from"./preload-helper-DuH3-WbD.js";import{S as l,a as u,b as d,d as f,g as p,i as m,l as ee,m as te,n as ne,o as re,u as ie,x as ae,y as oe}from"./render-CgDEBoCX.js";import{C as se,D as ce,O as le,S as ue,_ as de,a as fe,g as h,h as g,s as pe,u as me,v as he,x as ge}from"./ui-DK_9ndj0.js";import{a as _,n as _e}from"./idb-cache-CZ3JdK8r.js";import{a as ve,c as ye,i as be,l as xe,r as Se,s as Ce,t as we,u as Te}from"./sidebar-DQKE5IA1.js";import{t as Ee}from"./provider-icons-XEfJPGTe.js";import{t as De}from"./locale-DT1WRaeJ.js";import{a as Oe,i as ke,n as Ae,o as je,r as Me,t as Ne}from"./slash-commands-C_ePvrPi.js";import{i as Pe,o as Fe}from"./constants-ahKI_aEG.js";import{A as Ie,B as Le,C as Re,E as v,F as ze,H as Be,I as Ve,L as He,M as Ue,P as We,R as Ge,S as Ke,T as qe,U as Je,V as Ye,W as Xe,_ as Ze,a as Qe,b as $e,c as et,d as tt,f as nt,g as rt,h as it,i as at,k as ot,l as st,m as ct,n as lt,o as ut,p as dt,r as ft,s as pt,t as y,u as mt,w as ht,x as gt,y as _t,z as vt}from"./settings-DWW4GzNc.js";import{a as yt,i as bt,t as xt}from"./skills-COa4iSwL.js";import{a as St,c as Ct,d as wt,f as Tt,i as Et,l as Dt,m as Ot,n as kt,o as At,p as jt,r as Mt,s as Nt,t as Pt,u as Ft}from"./memory-B_nn0A4v.js";var b=[],It=8e3;function Lt(e){return/^\/compact(?:\s|$)/i.test(String(e||``).trim())?300*1e3:1e4}function Rt(e){let t=u();return t?new Promise(n=>{let r=`preview-send-${Date.now()}-${Math.random().toString(36).slice(2)}`,i=!1,a=()=>{window.removeEventListener(`message`,s),window.clearTimeout(c)},o=e=>{i||(i=!0,a(),n(e))},s=e=>{if(e.source!==window.parent||!m(e.origin))return;let t=e.data;!t||t.type!==`jaw-preview-send-result`||t.requestId!==r||o({ok:!!t.ok,status:Number.isInteger(t.status)?t.status:t.ok?200:502,data:t.data||(t.error?{error:t.error}:{})})},c=window.setTimeout(()=>o(null),It);window.addEventListener(`message`,s);try{window.parent.postMessage({type:`jaw-preview-send-message`,requestId:r,prompt:e},t)}catch{o(null)}}):Promise.resolve(null)}async function zt(e){let t=await Rt(e);if(t?.ok)return t;try{let t=await fetch(`${s}/api/message`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({prompt:e})}),n=await t.json().catch(()=>({}));return{ok:t.ok,status:t.status,data:n}}catch(e){return{ok:!1,status:0,data:{error:e.message}}}}function Bt(e){let t=e.recovery;if(!t?.originalText)return e.text?p(e.text):``;let n=(t.suggestedCommands||[]).slice(0,5),r=n.length?`<div class="cmd-recovery-suggestions">${n.map(e=>`<code>${p(e)}</code>`).join(` `)}</div>`:``,i=p(t.originalText);return`${e.text?`<div>${p(e.text)}</div>`:``}
|
|
3
3
|
<div class="cmd-recovery" data-cmd-recovery>
|
|
4
4
|
<div class="cmd-recovery-label">${p(l(`cmd.recovery.originalPrompt`))}</div>
|
|
5
5
|
<pre class="cmd-recovery-text">${i}</pre>
|
|
@@ -9,11 +9,11 @@ import{n as e,r as t}from"./vendor-render-DCb9B75Q.js";import{t as n}from"./stat
|
|
|
9
9
|
<button type="button" class="cmd-recovery-btn" data-cmd-recovery-action="copy" data-cmd-text="${i}">${p(l(`cmd.artifact.action.copy`))}</button>
|
|
10
10
|
</div>
|
|
11
11
|
</div>`}document.addEventListener(`click`,async e=>{let t=e.target?.closest(`[data-cmd-recovery-action]`);if(!t)return;let n=t.dataset.cmdRecoveryAction||``,r=t.dataset.cmdText||``;if(r){if(n===`reinsert`){let e=document.getElementById(`chatInput`);if(!e)return;e.value=r,e.focus(),e.selectionStart=e.selectionEnd=e.value.length,e.dispatchEvent(new Event(`input`,{bubbles:!0}));return}n===`copy`&&await ie(r)}});var Vt=!1;async function Ht(e=`enter`){let t=document.getElementById(`chatInput`),a=document.getElementById(`btnSend`);if(!t||!a)return;let u=e===`button`;if(a.classList.contains(`stop-mode`)&&u){o(`/api/stop`,`POST`);return}if(Vt)return;let d=t.value.trim();if(!d&&!n.attachedFiles.length)return;ye(),Vt=!0;let m=a,ee=m.disabled;m.disabled=!0;try{await ot();let e=d.slice(1).trim().split(/\s+/)[0]||``,a=e.includes(`/`)||e.includes(`\\`);if(d.startsWith(`/`)&&!n.attachedFiles.length&&!a){t.value=``,S(),Ne();try{let e,t,n=Lt(d);if(typeof AbortSignal?.timeout==`function`)e=AbortSignal.timeout(n);else{let r=new AbortController;e=r.signal,t=setTimeout(()=>r.abort(),n)}let a=De(),o=await r(),c=await fetch(`${s}/api/command`,{method:`POST`,headers:{"Content-Type":`application/json`,"Accept-Language":a,...o?{Authorization:`Bearer ${o}`}:{}},body:JSON.stringify({text:d,locale:a}),signal:e});t&&clearTimeout(t);let l=await c.json().catch(()=>({}));if(l?.code===`not_command`){g(`user`,d),_({role:`user`,content:d,timestamp:Date.now()}),await i(`/api/message`,`POST`,{prompt:d});return}if(!c.ok&&!l?.text)throw Error(`HTTP ${c.status}`);if(l?.code===`clear_screen`){ne(),ce().clear();let e=document.getElementById(`chatMessages`);e&&(e.innerHTML=``)}(l?.text||l?.recovery)&&h(Bt(l),``,l.type),l?.steerPrompt&&await i(`/api/message`,`POST`,{prompt:l.steerPrompt})}catch(e){h(l(`chat.cmd.fail`,{msg:e.message}),``,`error`)}finally{Ce(`command`).catch(()=>{})}return}if(n.attachedFiles.length){let e=`📎 [${n.attachedFiles.map(e=>e.name).join(`, `)}] ${d}`;g(`user`,e),_({role:`user`,content:e,timestamp:Date.now()}),t.value=``,S();try{let e=(await Promise.all(n.attachedFiles.map(e=>Wt(e)))).map(e=>l(`chat.file.sent`,{path:e})).join(`
|
|
12
|
-
`);d&&(e+=l(`chat.file.sentWithMsg`,{text:d})),x(),await i(`/api/message`,`POST`,{prompt:e})}catch(e){h(l(`chat.file.uploadFail`,{msg:e.message})),x()}}else{t.value=``,S();let e=await zt(d),n=e.data;if(e.status===409&&n.error===`duplicate`)return;if(!e.ok){h(`${f.error} ${p(n.error||l(`chat.requestFail`,{status:e.status}))}`,``,`error`);return}if(n.queued){let{updateQueueBadge:e}=await c(async()=>{let{updateQueueBadge:e}=await import(`./ui-
|
|
12
|
+
`);d&&(e+=l(`chat.file.sentWithMsg`,{text:d})),x(),await i(`/api/message`,`POST`,{prompt:e})}catch(e){h(l(`chat.file.uploadFail`,{msg:e.message})),x()}}else{t.value=``,S();let e=await zt(d),n=e.data;if(e.status===409&&n.error===`duplicate`)return;if(!e.ok){h(`${f.error} ${p(n.error||l(`chat.requestFail`,{status:e.status}))}`,``,`error`);return}if(n.queued){let{updateQueueBadge:e}=await c(async()=>{let{updateQueueBadge:e}=await import(`./ui-Car1OUvV.js`);return{updateQueueBadge:e}},__vite__mapDeps([0]));e(n.pending||1)}else n.noPendingContinue?(g(`user`,d),_({role:`user`,content:d,timestamp:Date.now()}),se(!0)):n.continued?(g(`user`,d),_({role:`user`,content:d,timestamp:Date.now()}),h(l(`chat.continue`)),se(!0)):(g(`user`,d),_({role:`user`,content:d,timestamp:Date.now()}),se(!0))}}finally{Vt=!1,m.disabled=ee}}function Ut(e){e.key===`Enter`&&!e.shiftKey&&!e.isComposing&&(e.preventDefault(),Ht(`enter`))}async function Wt(e){let t=await fetch(`${s}/api/upload`,{method:`POST`,headers:{"X-Filename":encodeURIComponent(e.name)},body:e});if(!t.ok)throw Error(`upload failed`);return(await t.json()).path}function Gt(e){for(let t of e)n.attachedFiles.some(e=>e.name===t.name)||n.attachedFiles.push(t);qt(),document.getElementById(`chatInput`)?.focus()}function Kt(e){n.attachedFiles.splice(e,1),qt()}function x(){b.forEach(e=>URL.revokeObjectURL(e)),b=[],n.attachedFiles=[],qt();let e=document.getElementById(`fileInput`);e&&(e.value=``)}function qt(){let e=document.getElementById(`filePreview`),t=document.getElementById(`filePreviewList`);if(e){if(b.forEach(e=>URL.revokeObjectURL(e)),b=[],!n.attachedFiles.length){e.classList.remove(`visible`),t&&(t.innerHTML=``);return}e.classList.add(`visible`),t&&(t.innerHTML=n.attachedFiles.map((e,t)=>{let n=(e.size/1024).toFixed(1),r=e.type.startsWith(`image/`),i=``;if(r){let t=URL.createObjectURL(e);b.push(t),i=`<img src="${t}" class="file-chip-thumb" alt="">`}return`<div class="file-chip">
|
|
13
13
|
${i}
|
|
14
14
|
<span class="file-chip-name">${f.paperclip} ${p(e.name)} (${n}KB)</span>
|
|
15
15
|
<button class="file-chip-remove" data-file-idx="${t}" title="Remove">${f.close}</button>
|
|
16
|
-
</div>`}).join(``))}}async function Jt(){ne(),ce().clear();let e=document.getElementById(`chatMessages`);e&&(e.innerHTML=``);let{cleanupToolActivity:t}=await c(async()=>{let{cleanupToolActivity:e}=await import(`./ui-
|
|
16
|
+
</div>`}).join(``))}}async function Jt(){ne(),ce().clear();let e=document.getElementById(`chatMessages`);e&&(e.innerHTML=``);let{cleanupToolActivity:t}=await c(async()=>{let{cleanupToolActivity:e}=await import(`./ui-Car1OUvV.js`);return{cleanupToolActivity:e}},__vite__mapDeps([0]));t(),_e().catch(()=>{}),ye()}var Yt=0;function Xt(e){if(Yt)return;let t=ge();Yt=requestAnimationFrame(()=>{if(Yt=0,e.style.height=`auto`,e.style.height=e.scrollHeight+`px`,t){let e=document.getElementById(`chatMessages`);e&&(e.scrollTop=e.scrollHeight,ue())}})}function Zt(){let e=document.getElementById(`chatInput`);e&&e.addEventListener(`input`,()=>Xt(e))}function S(){let e=document.getElementById(`chatInput`),t=ge();if(e&&(e.style.height=`auto`),t){let e=document.getElementById(`chatMessages`);e&&(e.scrollTop=e.scrollHeight,ue())}}function Qt(){let e=document.querySelector(`.chat-area`),t=document.getElementById(`dragOverlay`);if(!e||!t)return;let n=0;e.addEventListener(`dragenter`,e=>{e.preventDefault(),n++,t.classList.add(`visible`)}),e.addEventListener(`dragleave`,e=>{e.preventDefault(),n--,n<=0&&(n=0,t.classList.remove(`visible`))}),e.addEventListener(`dragover`,e=>e.preventDefault()),e.addEventListener(`drop`,e=>{e.preventDefault(),n=0,t.classList.remove(`visible`);let r=[...e.dataTransfer?.files||[]];r.length&&Gt(r)}),document.getElementById(`fileInput`)?.addEventListener(`change`,e=>{let t=e.target,n=[...t.files||[]];n.length&&Gt(n),t.value=``}),document.addEventListener(`paste`,e=>{let t=e.clipboardData?.items;if(!t)return;let n=[];for(let e of t){if(e.kind!==`file`)continue;let t=e.getAsFile();if(t)if(!t.name||t.name===`image.png`){let e=new Date().toISOString().replace(/[:.]/g,`-`),r=t.type.split(`/`)[1]||`png`,i=new File([t],`pasted-${e}.${r}`,{type:t.type});n.push(i)}else n.push(t)}n.length&&(e.preventDefault(),Gt(n))})}async function $t(e,t,r){let a=document.getElementById(`chatInput`),o=a?.value.trim()||``,c=[...n.attachedFiles],u=[l(`chat.voice.label`)];c.length&&u.push(`📎 [${c.map(e=>e.name).join(`, `)}]`),o&&u.push(o),g(`user`,u.join(` `)),_({role:`user`,content:u.join(` `),timestamp:Date.now()}),a&&o&&(a.value=``,S()),c.length&&x();try{let n=await fetch(`${s}/api/voice`,{method:`POST`,headers:{"Content-Type":r,"X-Voice-Ext":t,"X-STT-Only":`true`},body:e});if(!n.ok){let e=await n.json().catch(()=>({}));throw Error(e.error||`HTTP ${n.status}`)}let a=await n.json().catch(()=>null);if(!a?.text)throw Error(`Empty STT result`);h(`${f.mic} STT (${p(a.engine||``)}, ${a.elapsed?.toFixed(1)}s): "${p(a.text.slice(0,100))}"`,``,`info`);let u=[];c.length&&(u=await Promise.all(c.map(e=>Wt(e))));let d=[];for(let e of u)d.push(l(`chat.file.sent`,{path:e}));d.push(`🎤 ${a.text}`),o&&d.push(o),await i(`/api/message`,`POST`,{prompt:d.join(`
|
|
17
17
|
`)})}catch(e){h(l(`voice.sttFail`,{msg:e.message}),``,`error`)}}var en={sun:0,mon:1,tue:2,wed:3,thu:4,fri:5,sat:6},tn={jan:1,feb:2,mar:3,apr:4,may:5,jun:6,jul:7,aug:8,sep:9,oct:10,nov:11,dec:12};function nn(e){let t=typeof e==`string`?e.trim():``;if(t)try{return new Intl.DateTimeFormat(`en-US`,{timeZone:t}).format(new Date),t}catch{return}}function rn(e){let t=e&&typeof e==`object`?e:{},n=t.kind,r=typeof t.timeZone==`string`?t.timeZone.trim():``,i=nn(t.timeZone);if(r&&!i)return{ok:!1,code:`invalid_timezone`,error:`invalid timeZone "${r}"`};if(n===`cron`){let e=typeof t.cron==`string`?t.cron.trim().replace(/\s+/g,` `):``;if(!e)return{ok:!1,code:`invalid_cron`,error:`cron expression required`};let n=an(e);return n?{ok:!1,code:`invalid_cron`,error:n}:{ok:!0,schedule:i?{kind:`cron`,cron:e,timeZone:i}:{kind:`cron`,cron:e}}}if(n==null||n===`every`){let e=typeof t.minutes==`number`?t.minutes:Number(t.minutes);if(!Number.isInteger(e)||e<1)return{ok:!1,code:`invalid_minutes`,error:`minutes must be an integer >= 1`};let n=Math.max(1,Math.floor(e));return{ok:!0,schedule:i?{kind:`every`,minutes:n,timeZone:i}:{kind:`every`,minutes:n}}}return{ok:!1,code:`invalid_kind`,error:`invalid heartbeat schedule kind "${String(n)}"`}}function an(e){try{let[t,n,r,i,a]=on(e);return C(t,{min:0,max:59}),C(n,{min:0,max:23}),C(r,{min:1,max:31}),C(i,{min:1,max:12,aliases:tn}),C(a,{min:0,max:7,aliases:en,normalize:un}),null}catch(e){return e.message}}function on(e){let t=String(e||``).trim().replace(/\s+/g,` `).split(` `);if(t.length!==5)throw Error(`cron must have 5 fields, got ${t.length}`);return t}function C(e,t){for(let n of e.split(`,`))sn(n.trim(),t)}function sn(e,t){if(!e)throw Error(`empty cron segment`);let n=e;if(e.includes(`/`)){let[t,r,...i]=e.split(`/`);if(!t||!r||i.length>0)throw Error(`invalid cron step segment "${e}"`);n=t,ln(r,`invalid cron step "${r}"`)}if(n!==`*`){if(n.includes(`-`)){let[e,r,...i]=n.split(`-`);if(!e||!r||i.length>0||cn(e,t)>cn(r,t))throw Error(`invalid cron range "${n}"`);return}cn(n,t)}}function cn(e,t){let n=e.trim().toLowerCase(),r=t.aliases?.[n]??Number(n);if(!Number.isInteger(r))throw Error(`invalid cron value "${e}"`);let i=t.normalize?t.normalize(r):r;if(!dn(i,t.min,t.max))throw Error(`cron value "${e}" out of range ${t.min}-${t.max}`);return i}function ln(e,t){let n=Number(e);if(!Number.isInteger(n)||n<=0)throw Error(t);return n}function un(e){return e===7?0:e}function dn(e,t,n){return e>=t&&e<=n}async function fn(){n.heartbeatJobs=((await a(`/api/heartbeat`))?.jobs||[]).map(E),n.heartbeatErrors=D(n.heartbeatJobs),w(),document.getElementById(`heartbeatModal`)?.classList.add(`open`)}function pn(e){e&&e.target!==e.currentTarget||document.getElementById(`heartbeatModal`)?.classList.remove(`open`)}function w(){let e=document.getElementById(`hbJobsList`);if(!e)return;let t=n.heartbeatJobs.map(E);n.heartbeatJobs=t,n.heartbeatErrors=D(t),t.length===0?e.innerHTML=`<p style="color:var(--text-dim);font-size:12px;text-align:center">${l(`hb.empty`)}</p>`:e.innerHTML=t.map((e,t)=>{let r=vn(e.schedule),i=r.kind===`cron`,a=n.heartbeatErrors[e.id],o=a||Tn(r),s=a?`hb-schedule-meta hb-error`:`hb-schedule-meta hb-help`,c=i?`<input type="text" value="${p(r.cron)}" placeholder="${p(l(`hb.cronPlaceholder`))}"
|
|
18
18
|
data-hb-cron="${t}">`:`<input type="number" value="${r.minutes}" min="1" data-hb-minutes="${t}">`,u=i?`<span class="hb-chip">${p(l(`hb.cronLabel`))}</span>`:`<span class="hb-chip">${p(l(`hb.minutesLabel`))}</span>`;return`
|
|
19
19
|
<div class="hb-job-card">
|
|
@@ -45,4 +45,4 @@ import{n as e,r as t}from"./vendor-render-DCb9B75Q.js";import{t as n}from"./stat
|
|
|
45
45
|
<span>${p(s)}</span>
|
|
46
46
|
</div>
|
|
47
47
|
<div class="chat-search-result-snippet">${o}</div>
|
|
48
|
-
</div>`}function Fr(e,t){if(!e)return``;try{let n=JSON.parse(e),r=t.toLowerCase();for(let e of n){let t=`${e.label||``} ${e.detail||``}`;if(t.toLowerCase().includes(r))return t}}catch{}return e.slice(0,300)}function Ir(e,t){let n=e.toLowerCase().indexOf(t.toLowerCase());if(n===-1)return p(e.slice(0,120));let r=Math.max(0,n-40),i=Math.min(e.length,n+t.length+80),a=p(e.slice(r,n)),o=p(e.slice(n,n+t.length)),s=p(e.slice(n+t.length,i));return`${r>0?`…`:``}${a}<mark>${o}</mark>${s}${i<e.length?`…`:``}`}function Lr(e){if(!X)return;let t=X.get(e);t!=null&&(ce().scrollToIndex(t,`center`),requestAnimationFrame(()=>{setTimeout(()=>{let e=document.getElementById(`chatMessages`);if(!e)return;e.querySelectorAll(`.msg.search-highlight`).forEach(e=>e.classList.remove(`search-highlight`));let n=e.querySelectorAll(`.msg`);for(let e of n){let n=e.getAttribute(`data-turn-index`);if(n!=null&&Number(n)===t){e.classList.add(`search-highlight`);break}}},150)}))}function Rr(e,t){let n=Array.from(e.querySelectorAll(`.chat-search-result`));if(n.length===0)return;let r=e.querySelector(`.chat-search-result.active`),i=r?n.indexOf(r)+t:0;i<0&&(i=n.length-1),i>=n.length&&(i=0),n.forEach(e=>e.classList.remove(`active`)),n[i].classList.add(`active`),n[i].scrollIntoView({block:`nearest`}),n[i].click()}function zr(e,t){e.classList.remove(`has-results`),e.innerHTML=``,t.textContent=``}function Br(e){try{let t=new Date(e),n=new Date;return t.toDateString()===n.toDateString()?t.toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`}):t.toLocaleDateString([],{month:`short`,day:`numeric`})+` `+t.toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`})}catch{return``}}var Vr=`jaw:stale-bundle-reload-pending`;function Hr(e){let t=typeof e==`string`?e:e instanceof Error||typeof e?.message==`string`?e.message:``;if(!/(failed to fetch dynamically imported module|error loading dynamically imported module|importing a module script failed|chunkloaderror)/i.test(t))return!1;console.warn(`[stale-bundle] detected dynamic import failure:`,t);try{if(sessionStorage.getItem(Vr)===`1`)return!0;sessionStorage.setItem(Vr,`1`)}catch{}let n=()=>window.location.reload();return`serviceWorker`in navigator?(navigator.serviceWorker.getRegistration().then(e=>e?.update()).catch(()=>{}).finally(n),!0):(n(),!0)}window.addEventListener(`unhandledrejection`,e=>{if(Hr(e.reason)){e.preventDefault();return}console.error(`[unhandled]`,e.reason),e.preventDefault()}),window.addEventListener(`error`,e=>{if(Hr(e.error||e.message)){e.preventDefault();return}console.error(`[error]`,e.message,e.filename,e.lineno)});var{loadEmployees:Ur,addEmployee:Wr,deleteEmployee:Gr,updateEmployee:Q,onEmpCliChange:Kr,onEmpRoleChange:qr}=await c(async()=>{let{loadEmployees:e,addEmployee:t,deleteEmployee:n,updateEmployee:r,onEmpCliChange:i,onEmpRoleChange:a}=await import(`./employees-DZSPGlaH.js`);return{loadEmployees:e,addEmployee:t,deleteEmployee:n,updateEmployee:r,onEmpCliChange:i,onEmpRoleChange:a}},__vite__mapDeps([0]));function Jr(e){if(e===window.location.origin)return!0;try{let t=new URL(e).hostname;return t===`localhost`||t===`127.0.0.1`||t===`::1`||t===`[::1]`}catch{return!1}}function Yr(e){let t=(e.ctrlKey||e.metaKey)&&e.shiftKey&&e.code===`Space`,n=e.altKey&&!e.ctrlKey&&!e.metaKey&&!e.shiftKey&&e.code===`KeyM`;return t||n}document.getElementById(`btnSend`)?.addEventListener(`click`,()=>{Ht(`button`)});var Xr=document.getElementById(`chatInput`);Xr?.addEventListener(`keydown`,e=>{Me(e)||Ut(e)});var $=0;Xr?.addEventListener(`input`,e=>{e.isComposing||($&&cancelAnimationFrame($),$=requestAnimationFrame(()=>{je(e.target?.value||``),$=0}))}),Xr?.addEventListener(`cmd-execute`,()=>{Ht(`cmd-execute`)}),document.getElementById(`cmdDropdown`)?.addEventListener(`click`,Ae),document.addEventListener(`click`,ke),Te(),document.getElementById(`filePreviewClear`)?.addEventListener(`click`,x),document.getElementById(`filePreviewList`)?.addEventListener(`click`,e=>{let t=e.target?.closest(`[data-file-idx]`);t&&Kt(+(t.dataset.fileIdx||`0`))}),document.querySelector(`.btn-attach`)?.addEventListener(`click`,()=>{document.getElementById(`fileInput`)?.click()}),document.getElementById(`btnVoice`)?.addEventListener(`click`,()=>cr()),document.getElementById(`btnVoiceCancel`)?.addEventListener(`click`,()=>sr()),window.addEventListener(`message`,e=>{if(window.parent===window||e.source!==window.parent||!Jr(e.origin))return;let t=e.data;!t||t.type!==`jaw-preview-stt-toggle`||cr()}),document.getElementById(`memorySidebarBtn`)?.addEventListener(`click`,Et),document.getElementById(`btnClearChat`)?.addEventListener(`click`,Jt),document.getElementById(`hbSidebarBtn`)?.addEventListener(`click`,fn),document.getElementById(`langSelect`)?.addEventListener(`change`,async e=>{let t=e.target.value;[`ko`,`en`,`zh`,`ja`].includes(t)&&(await ae(t),n.ws&&n.ws.close())}),document.querySelector(`.tab-bar`)?.addEventListener(`click`,e=>{let t=e.target?.closest(`.tab-btn`);if(!t)return;let n=[...t.parentElement?.children||[]].filter(e=>e.classList.contains(`tab-btn`)).indexOf(t),r=[`agents`,`skills`,`settings`];r[n]&&me(r[n],t)}),document.querySelector(`.sidebar-save-bar .btn-save`)?.addEventListener(`click`,fe);function Zr(e){let t=(e instanceof HTMLSelectElement?e:document.getElementById(`selAiEProvider`))?.value||``,n=document.getElementById(`providerAiE`);!t||!n||Array.from(n.options).some(e=>e.value===t)&&(n.value=t)}document.getElementById(`selCli`)?.addEventListener(`change`,()=>Ke()),document.getElementById(`selAiEProvider`)?.addEventListener(`change`,e=>{Zr(e.target),Ke(),qe()}),document.getElementById(`selModel`)?.addEventListener(`change`,()=>qe()),document.getElementById(`selEffort`)?.addEventListener(`change`,()=>qe()),document.getElementById(`flushCli`)?.addEventListener(`change`,()=>Re()),document.getElementById(`flushModel`)?.addEventListener(`change`,()=>Re()),document.querySelector(`[data-action="addEmployee"]`)?.addEventListener(`click`,Wr),document.getElementById(`employeesList`)?.addEventListener(`click`,e=>{let t=e.target?.closest(`[data-emp-delete]`);if(t){Gr(t.dataset.empDelete||``);return}}),document.getElementById(`employeesList`)?.addEventListener(`change`,e=>{let t=e.target,n=t.closest(`[data-emp-name]`);if(n){Q(n.dataset.empName||``,{name:t.value});return}let r=t.closest(`[data-emp-cli]`);if(r){Kr(r.dataset.empCli||``,t.value);return}let i=t.closest(`[data-emp-model]`);if(i){if(t.value===`__custom__`){let e=prompt(l(`model.promptInput`));if(e?.trim()){let n=document.createElement(`option`);n.value=e.trim(),n.textContent=e.trim();let r=t.querySelector(`option[value="__custom__"]`);r&&t.insertBefore(n,r),t.value=e.trim(),Q(i.dataset.empModel||``,{model:e.trim()})}else t.value=`default`}else Q(i.dataset.empModel||``,{model:t.value});return}let a=t.closest(`[data-emp-role]`);if(a){qr(a.dataset.empRole||``,t.value);return}let o=t.closest(`[data-emp-custom]`);if(o){Q(o.dataset.empCustom||``,{role:t.value});return}}),document.getElementById(`skillsList`)?.addEventListener(`click`,e=>{let t=e.target?.closest(`[data-skill-id]`);t&&yt(t.dataset.skillId||``,t.dataset.skillEnabled===`true`)}),document.querySelector(`#tabSkills`)?.addEventListener(`click`,e=>{let t=e.target?.closest(`.skill-filter`);t&&xt(t.dataset.filter||`all`,t)}),document.getElementById(`skillSearchInput`)?.addEventListener(`input`,e=>{bt(e.target.value)}),document.querySelector(`[data-action="openPrompt"]`)?.addEventListener(`click`,ft),document.getElementById(`tgOff`)?.addEventListener(`click`,()=>Je(!1)),document.getElementById(`tgOn`)?.addEventListener(`click`,()=>Je(!0)),document.getElementById(`tgForwardOff`)?.addEventListener(`click`,()=>Be(!1)),document.getElementById(`tgForwardOn`)?.addEventListener(`click`,()=>Be(!0)),document.getElementById(`tgMentionOff`)?.addEventListener(`click`,()=>Xe(!1)),document.getElementById(`tgMentionOn`)?.addEventListener(`click`,()=>Xe(!0)),document.getElementById(`tgToken`)?.addEventListener(`change`,Ye),document.getElementById(`tgChatIds`)?.addEventListener(`change`,Ye),document.getElementById(`chTelegram`)?.addEventListener(`click`,()=>ze(`telegram`)),document.getElementById(`chDiscord`)?.addEventListener(`click`,()=>ze(`discord`)),document.getElementById(`dcOff`)?.addEventListener(`click`,()=>He(!1)),document.getElementById(`dcOn`)?.addEventListener(`click`,()=>He(!0)),document.getElementById(`dcForwardOff`)?.addEventListener(`click`,()=>vt(!1)),document.getElementById(`dcForwardOn`)?.addEventListener(`click`,()=>vt(!0)),document.getElementById(`dcAllowBotsOff`)?.addEventListener(`click`,()=>Ge(!1)),document.getElementById(`dcAllowBotsOn`)?.addEventListener(`click`,()=>Ge(!0)),document.getElementById(`dcMentionOff`)?.addEventListener(`click`,()=>Le(!1)),document.getElementById(`dcMentionOn`)?.addEventListener(`click`,()=>Le(!0)),document.getElementById(`dcToken`)?.addEventListener(`change`,Ve),document.getElementById(`dcGuildId`)?.addEventListener(`change`,Ve),document.getElementById(`dcChannelIds`)?.addEventListener(`change`,Ve),document.getElementById(`fallbackOrderList`)?.addEventListener(`change`,We);function Qr(e){let t=document.getElementById(`codexFastOn`),n=document.getElementById(`codexFastOff`);t&&n&&(t.classList.toggle(`active`,e),n.classList.toggle(`active`,!e)),v()}document.getElementById(`codexFastOn`)?.addEventListener(`click`,()=>Qr(!0)),document.getElementById(`codexFastOff`)?.addEventListener(`click`,()=>Qr(!1));function $r(e){let t=document.getElementById(`codexCtxOn`),n=document.getElementById(`codexCtxOff`),r=document.getElementById(`codexCtxValues`);t&&n&&(t.classList.toggle(`active`,e),n.classList.toggle(`active`,!e)),r&&(r.style.display=e?``:`none`),v()}document.getElementById(`codexCtxOn`)?.addEventListener(`click`,()=>$r(!0)),document.getElementById(`codexCtxOff`)?.addEventListener(`click`,()=>$r(!1)),document.getElementById(`codexCtxWindow`)?.addEventListener(`change`,v),document.getElementById(`codexCtxCompact`)?.addEventListener(`change`,v);function ei(e){let t=document.getElementById(`claude1mOn`),n=document.getElementById(`claude1mOff`),r=document.getElementById(`modelClaude`),i=e;if(r){let t=r.value||``;if(e&&!t.endsWith(`[1m]`)){let e=t+`[1m]`;Array.from(r.options).some(t=>t.value===e)?r.value=e:i=!1}else if(!e&&t.endsWith(`[1m]`)){let e=t.replace(/\[1m\]$/,``);Array.from(r.options).some(t=>t.value===e)?r.value=e:i=!0}else i=t.endsWith(`[1m]`)}t&&n&&(t.classList.toggle(`active`,i),n.classList.toggle(`active`,!i)),v()}document.getElementById(`claude1mOn`)?.addEventListener(`click`,()=>ei(!0)),document.getElementById(`claude1mOff`)?.addEventListener(`click`,()=>ei(!1));function ti(e){return e.split(/[^a-zA-Z0-9]+/).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(``)}function ni(){for(let e of Pe()){let t=ti(e),n=document.getElementById(`model`+t);n&&n.addEventListener(`change`,function(){_t(e,this)});let r=document.getElementById(`customModel`+t);r&&r.addEventListener(`change`,function(){Ze(e,this)});let i=document.getElementById(`effort`+t);i&&i.addEventListener(`change`,v)}document.getElementById(`providerAiE`)?.addEventListener(`change`,ht)}document.querySelector(`[data-action="syncMcp"]`)?.addEventListener(`click`,Ue),document.querySelector(`[data-action="installMcp"]`)?.addEventListener(`click`,Ie),document.querySelector(`[data-action="refreshCli"]`)?.addEventListener(`click`,()=>{nt()?ct(!0):st()}),document.getElementById(`cliStatusInterval`)?.addEventListener(`change`,function(){rt(this.value)}),document.getElementById(`promptModal`)?.addEventListener(`click`,e=>y(e)),document.querySelector(`#promptModal .modal-box`)?.addEventListener(`click`,e=>e.stopPropagation()),document.querySelector(`[data-action="closePrompt"]`)?.addEventListener(`click`,()=>y()),document.querySelector(`[data-action="cancelPrompt"]`)?.addEventListener(`click`,()=>y()),document.querySelector(`[data-action="savePrompt"]`)?.addEventListener(`click`,Qe),document.addEventListener(`keydown`,e=>{e.key===`Escape`&&!n.isRecording&&y()}),document.querySelector(`[data-action="openTemplates"]`)?.addEventListener(`click`,at),document.querySelector(`[data-action="saveTemplate"]`)?.addEventListener(`click`,ut),document.querySelector(`[data-action="closeTemplate"]`)?.addEventListener(`click`,()=>lt()),document.getElementById(`templateModal`)?.addEventListener(`click`,e=>lt(e)),document.querySelector(`#templateModal .modal-box`)?.addEventListener(`click`,e=>e.stopPropagation()),document.getElementById(`templateBack`)?.addEventListener(`click`,pt),document.getElementById(`templateDevToggle`)?.addEventListener(`click`,et),document.getElementById(`heartbeatModal`)?.addEventListener(`click`,e=>pn(e)),document.querySelector(`#heartbeatModal .modal-box`)?.addEventListener(`click`,e=>e.stopPropagation()),document.querySelector(`[data-action="closeHeartbeat"]`)?.addEventListener(`click`,()=>pn()),document.querySelector(`[data-action="addHeartbeat"]`)?.addEventListener(`click`,mn),document.getElementById(`hbJobsList`)?.addEventListener(`click`,e=>{let t=e.target?.closest(`[data-hb-toggle]`);if(t){gn(+(t.dataset.hbToggle||`0`));return}let n=e.target?.closest(`[data-hb-remove]`);if(n){hn(+(n.dataset.hbRemove||`0`));return}}),document.getElementById(`hbJobsList`)?.addEventListener(`change`,e=>{let t=e.target,r=t.closest(`[data-hb-name]`);if(r){n.heartbeatJobs[+(r.dataset.hbName||`0`)].name=t.value,T();return}let i=t.closest(`[data-hb-kind]`);if(i){let e=+(i.dataset.hbKind||`0`),r=n.heartbeatJobs[e]?.schedule,a=typeof r?.timeZone==`string`?r.timeZone:void 0;n.heartbeatJobs[e].schedule=t.value===`cron`?{kind:`cron`,cron:typeof r?.cron==`string`&&r.cron.trim()?r.cron:`0 9 * * *`,...a?{timeZone:a}:{}}:{kind:`every`,minutes:typeof r?.minutes==`number`&&r.minutes>0?Math.floor(r.minutes):5,...a?{timeZone:a}:{}},w(),T();return}let a=t.closest(`[data-hb-minutes]`);if(a){let e=+(a.dataset.hbMinutes||`0`),r=n.heartbeatJobs[e]?.schedule,i=Math.max(1,Math.floor(Number(t.value)||5)),o=typeof r?.timeZone==`string`?r.timeZone:void 0;n.heartbeatJobs[e].schedule={kind:`every`,minutes:i,...o?{timeZone:o}:{}},w(),T();return}let o=t.closest(`[data-hb-cron]`);if(o){let e=+(o.dataset.hbCron||`0`),r=n.heartbeatJobs[e]?.schedule,i=typeof r?.timeZone==`string`?r.timeZone:void 0,a=t.value.trim().replace(/\s+/g,` `);n.heartbeatJobs[e].schedule={kind:`cron`,cron:a,...i?{timeZone:i}:{}},w(),T();return}let s=t.closest(`[data-hb-timezone]`);if(s){let e=+(s.dataset.hbTimezone||`0`),r=n.heartbeatJobs[e]?.schedule;r?.kind===`cron`?n.heartbeatJobs[e].schedule={kind:`cron`,cron:typeof r.cron==`string`&&r.cron.trim()?r.cron:`0 9 * * *`,...t.value.trim()?{timeZone:t.value.trim()}:{}}:n.heartbeatJobs[e].schedule={kind:`every`,minutes:typeof r?.minutes==`number`&&r.minutes>0?Math.floor(r.minutes):5,...t.value.trim()?{timeZone:t.value.trim()}:{}},w(),T();return}let c=t.closest(`[data-hb-prompt]`);if(c){n.heartbeatJobs[+(c.dataset.hbPrompt||`0`)].prompt=t.value,T();return}}),document.getElementById(`memoryModal`)?.addEventListener(`click`,e=>Pt(e)),document.querySelector(`#memoryModal .modal-box`)?.addEventListener(`click`,e=>e.stopPropagation()),document.querySelector(`[data-action="closeMemory"]`)?.addEventListener(`click`,()=>Pt()),document.getElementById(`memTabBtnSettings`)?.addEventListener(`click`,()=>Ft(`settings`)),document.getElementById(`memTabBtnAdvOps`)?.addEventListener(`click`,()=>Ft(`status`)),document.getElementById(`memTabBtnFiles`)?.addEventListener(`click`,()=>Ft(`files`)),document.getElementById(`memOn`)?.addEventListener(`click`,()=>Dt(!0)),document.getElementById(`memOff`)?.addEventListener(`click`,()=>Dt(!1)),document.getElementById(`memFlushEvery`)?.addEventListener(`change`,Ct),document.getElementById(`memRetention`)?.addEventListener(`change`,Ct),document.getElementById(`memFlushLang`)?.addEventListener(`change`,Ct),document.getElementById(`memFlushNowBtn`)?.addEventListener(`click`,Tt),document.getElementById(`advBootstrapBtn`)?.addEventListener(`click`,Nt),document.getElementById(`advReindexBtn`)?.addEventListener(`click`,At),document.getElementById(`advReimportBtn`)?.addEventListener(`click`,Nt),document.getElementById(`advOpenCorruptedBtn`)?.addEventListener(`click`,Mt),document.getElementById(`advStatusBanner`)?.addEventListener(`click`,e=>{e.target?.id===`advUpgradeSoulBtn`&&jt(),e.target?.id===`advSynthesizeSoulBtn`&&wt()}),document.getElementById(`basicMemoryFiles`)?.addEventListener(`click`,e=>{let t=e.target?.closest(`[data-mem-delete]`);if(t){e.stopPropagation(),kt(t.dataset.memDelete||``);return}let n=e.target?.closest(`[data-mem-view]`);if(n){Ot(n.dataset.memView||``);return}if(e.target?.closest(`[data-mem-back]`)){Et();return}});async function ri(){te(),Ee(),kn(),In(),await d();let e=document.getElementById(`langSelect`);e&&(e.value=oe()),await Fe(),ni(),mr(),Ar(),document.getElementById(`chatSearchTrigger`)?.addEventListener(`click`,jr),xe(),ve(),Qt(),Zt(),await Oe(),await gt(),$e(),it(),tt(),mt(),nt()&&ct(),we(),Ur(),_n(),St(),de(),await le(),pe(),Hn();try{sessionStorage.removeItem(Vr)}catch{}re(),`serviceWorker`in navigator&&!dt()&&navigator.serviceWorker.register(`/sw.js`).catch(()=>{})}ri().catch(e=>{console.error(`[bootstrap]`,e)}),document.addEventListener(`keydown`,e=>{(e.ctrlKey||e.metaKey)&&e.key===`f`&&(e.preventDefault(),e.stopPropagation(),jr())},!0),document.addEventListener(`keydown`,e=>{if(e.key===`Escape`){if(document.getElementById(`chatSearch`)?.classList.contains(`open`)){e.preventDefault(),Z();return}if(n.isRecording){e.preventDefault(),sr();return}document.querySelectorAll(`.modal-overlay.open`).forEach(e=>{e.classList.remove(`open`)})}Yr(e)&&(e.preventDefault(),cr())}),document.getElementById(`mobileMenuLeft`)?.addEventListener(`click`,Se),document.getElementById(`mobileMenuRight`)?.addEventListener(`click`,be);
|
|
48
|
+
</div>`}function Fr(e,t){if(!e)return``;try{let n=JSON.parse(e),r=t.toLowerCase();for(let e of n){let t=`${e.label||``} ${e.detail||``}`;if(t.toLowerCase().includes(r))return t}}catch{}return e.slice(0,300)}function Ir(e,t){let n=e.toLowerCase().indexOf(t.toLowerCase());if(n===-1)return p(e.slice(0,120));let r=Math.max(0,n-40),i=Math.min(e.length,n+t.length+80),a=p(e.slice(r,n)),o=p(e.slice(n,n+t.length)),s=p(e.slice(n+t.length,i));return`${r>0?`…`:``}${a}<mark>${o}</mark>${s}${i<e.length?`…`:``}`}function Lr(e){if(!X)return;let t=X.get(e);t!=null&&(ce().scrollToIndex(t,`center`),requestAnimationFrame(()=>{setTimeout(()=>{let e=document.getElementById(`chatMessages`);if(!e)return;e.querySelectorAll(`.msg.search-highlight`).forEach(e=>e.classList.remove(`search-highlight`));let n=e.querySelectorAll(`.msg`);for(let e of n){let n=e.getAttribute(`data-turn-index`);if(n!=null&&Number(n)===t){e.classList.add(`search-highlight`);break}}},150)}))}function Rr(e,t){let n=Array.from(e.querySelectorAll(`.chat-search-result`));if(n.length===0)return;let r=e.querySelector(`.chat-search-result.active`),i=r?n.indexOf(r)+t:0;i<0&&(i=n.length-1),i>=n.length&&(i=0),n.forEach(e=>e.classList.remove(`active`)),n[i].classList.add(`active`),n[i].scrollIntoView({block:`nearest`}),n[i].click()}function zr(e,t){e.classList.remove(`has-results`),e.innerHTML=``,t.textContent=``}function Br(e){try{let t=new Date(e),n=new Date;return t.toDateString()===n.toDateString()?t.toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`}):t.toLocaleDateString([],{month:`short`,day:`numeric`})+` `+t.toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`})}catch{return``}}var Vr=`jaw:stale-bundle-reload-pending`;function Hr(e){let t=typeof e==`string`?e:e instanceof Error||typeof e?.message==`string`?e.message:``;if(!/(failed to fetch dynamically imported module|error loading dynamically imported module|importing a module script failed|chunkloaderror)/i.test(t))return!1;console.warn(`[stale-bundle] detected dynamic import failure:`,t);try{if(sessionStorage.getItem(Vr)===`1`)return!0;sessionStorage.setItem(Vr,`1`)}catch{}let n=()=>window.location.reload();return`serviceWorker`in navigator?(navigator.serviceWorker.getRegistration().then(e=>e?.update()).catch(()=>{}).finally(n),!0):(n(),!0)}window.addEventListener(`unhandledrejection`,e=>{if(Hr(e.reason)){e.preventDefault();return}console.error(`[unhandled]`,e.reason),e.preventDefault()}),window.addEventListener(`error`,e=>{if(Hr(e.error||e.message)){e.preventDefault();return}console.error(`[error]`,e.message,e.filename,e.lineno)});var{loadEmployees:Ur,addEmployee:Wr,deleteEmployee:Gr,updateEmployee:Q,onEmpCliChange:Kr,onEmpRoleChange:qr}=await c(async()=>{let{loadEmployees:e,addEmployee:t,deleteEmployee:n,updateEmployee:r,onEmpCliChange:i,onEmpRoleChange:a}=await import(`./employees-DiNLzEXS.js`);return{loadEmployees:e,addEmployee:t,deleteEmployee:n,updateEmployee:r,onEmpCliChange:i,onEmpRoleChange:a}},__vite__mapDeps([0]));function Jr(e){if(e===window.location.origin)return!0;try{let t=new URL(e).hostname;return t===`localhost`||t===`127.0.0.1`||t===`::1`||t===`[::1]`}catch{return!1}}function Yr(e){let t=(e.ctrlKey||e.metaKey)&&e.shiftKey&&e.code===`Space`,n=e.altKey&&!e.ctrlKey&&!e.metaKey&&!e.shiftKey&&e.code===`KeyM`;return t||n}document.getElementById(`btnSend`)?.addEventListener(`click`,()=>{Ht(`button`)});var Xr=document.getElementById(`chatInput`);Xr?.addEventListener(`keydown`,e=>{Me(e)||Ut(e)});var $=0;Xr?.addEventListener(`input`,e=>{e.isComposing||($&&cancelAnimationFrame($),$=requestAnimationFrame(()=>{je(e.target?.value||``),$=0}))}),Xr?.addEventListener(`cmd-execute`,()=>{Ht(`cmd-execute`)}),document.getElementById(`cmdDropdown`)?.addEventListener(`click`,Ae),document.addEventListener(`click`,ke),Te(),document.getElementById(`filePreviewClear`)?.addEventListener(`click`,x),document.getElementById(`filePreviewList`)?.addEventListener(`click`,e=>{let t=e.target?.closest(`[data-file-idx]`);t&&Kt(+(t.dataset.fileIdx||`0`))}),document.querySelector(`.btn-attach`)?.addEventListener(`click`,()=>{document.getElementById(`fileInput`)?.click()}),document.getElementById(`btnVoice`)?.addEventListener(`click`,()=>cr()),document.getElementById(`btnVoiceCancel`)?.addEventListener(`click`,()=>sr()),window.addEventListener(`message`,e=>{if(window.parent===window||e.source!==window.parent||!Jr(e.origin))return;let t=e.data;!t||t.type!==`jaw-preview-stt-toggle`||cr()}),document.getElementById(`memorySidebarBtn`)?.addEventListener(`click`,Et),document.getElementById(`btnClearChat`)?.addEventListener(`click`,Jt),document.getElementById(`hbSidebarBtn`)?.addEventListener(`click`,fn),document.getElementById(`langSelect`)?.addEventListener(`change`,async e=>{let t=e.target.value;[`ko`,`en`,`zh`,`ja`].includes(t)&&(await ae(t),n.ws&&n.ws.close())}),document.querySelector(`.tab-bar`)?.addEventListener(`click`,e=>{let t=e.target?.closest(`.tab-btn`);if(!t)return;let n=[...t.parentElement?.children||[]].filter(e=>e.classList.contains(`tab-btn`)).indexOf(t),r=[`agents`,`skills`,`settings`];r[n]&&me(r[n],t)}),document.querySelector(`.sidebar-save-bar .btn-save`)?.addEventListener(`click`,fe);function Zr(e){let t=(e instanceof HTMLSelectElement?e:document.getElementById(`selAiEProvider`))?.value||``,n=document.getElementById(`providerAiE`);!t||!n||Array.from(n.options).some(e=>e.value===t)&&(n.value=t)}document.getElementById(`selCli`)?.addEventListener(`change`,()=>Ke()),document.getElementById(`selAiEProvider`)?.addEventListener(`change`,e=>{Zr(e.target),Ke(),qe()}),document.getElementById(`selModel`)?.addEventListener(`change`,()=>qe()),document.getElementById(`selEffort`)?.addEventListener(`change`,()=>qe()),document.getElementById(`flushCli`)?.addEventListener(`change`,()=>Re()),document.getElementById(`flushModel`)?.addEventListener(`change`,()=>Re()),document.querySelector(`[data-action="addEmployee"]`)?.addEventListener(`click`,Wr),document.getElementById(`employeesList`)?.addEventListener(`click`,e=>{let t=e.target?.closest(`[data-emp-delete]`);if(t){Gr(t.dataset.empDelete||``);return}}),document.getElementById(`employeesList`)?.addEventListener(`change`,e=>{let t=e.target,n=t.closest(`[data-emp-name]`);if(n){Q(n.dataset.empName||``,{name:t.value});return}let r=t.closest(`[data-emp-cli]`);if(r){Kr(r.dataset.empCli||``,t.value);return}let i=t.closest(`[data-emp-model]`);if(i){if(t.value===`__custom__`){let e=prompt(l(`model.promptInput`));if(e?.trim()){let n=document.createElement(`option`);n.value=e.trim(),n.textContent=e.trim();let r=t.querySelector(`option[value="__custom__"]`);r&&t.insertBefore(n,r),t.value=e.trim(),Q(i.dataset.empModel||``,{model:e.trim()})}else t.value=`default`}else Q(i.dataset.empModel||``,{model:t.value});return}let a=t.closest(`[data-emp-role]`);if(a){qr(a.dataset.empRole||``,t.value);return}let o=t.closest(`[data-emp-custom]`);if(o){Q(o.dataset.empCustom||``,{role:t.value});return}}),document.getElementById(`skillsList`)?.addEventListener(`click`,e=>{let t=e.target?.closest(`[data-skill-id]`);t&&yt(t.dataset.skillId||``,t.dataset.skillEnabled===`true`)}),document.querySelector(`#tabSkills`)?.addEventListener(`click`,e=>{let t=e.target?.closest(`.skill-filter`);t&&xt(t.dataset.filter||`all`,t)}),document.getElementById(`skillSearchInput`)?.addEventListener(`input`,e=>{bt(e.target.value)}),document.querySelector(`[data-action="openPrompt"]`)?.addEventListener(`click`,ft),document.getElementById(`tgOff`)?.addEventListener(`click`,()=>Je(!1)),document.getElementById(`tgOn`)?.addEventListener(`click`,()=>Je(!0)),document.getElementById(`tgForwardOff`)?.addEventListener(`click`,()=>Be(!1)),document.getElementById(`tgForwardOn`)?.addEventListener(`click`,()=>Be(!0)),document.getElementById(`tgMentionOff`)?.addEventListener(`click`,()=>Xe(!1)),document.getElementById(`tgMentionOn`)?.addEventListener(`click`,()=>Xe(!0)),document.getElementById(`tgToken`)?.addEventListener(`change`,Ye),document.getElementById(`tgChatIds`)?.addEventListener(`change`,Ye),document.getElementById(`chTelegram`)?.addEventListener(`click`,()=>ze(`telegram`)),document.getElementById(`chDiscord`)?.addEventListener(`click`,()=>ze(`discord`)),document.getElementById(`dcOff`)?.addEventListener(`click`,()=>He(!1)),document.getElementById(`dcOn`)?.addEventListener(`click`,()=>He(!0)),document.getElementById(`dcForwardOff`)?.addEventListener(`click`,()=>vt(!1)),document.getElementById(`dcForwardOn`)?.addEventListener(`click`,()=>vt(!0)),document.getElementById(`dcAllowBotsOff`)?.addEventListener(`click`,()=>Ge(!1)),document.getElementById(`dcAllowBotsOn`)?.addEventListener(`click`,()=>Ge(!0)),document.getElementById(`dcMentionOff`)?.addEventListener(`click`,()=>Le(!1)),document.getElementById(`dcMentionOn`)?.addEventListener(`click`,()=>Le(!0)),document.getElementById(`dcToken`)?.addEventListener(`change`,Ve),document.getElementById(`dcGuildId`)?.addEventListener(`change`,Ve),document.getElementById(`dcChannelIds`)?.addEventListener(`change`,Ve),document.getElementById(`fallbackOrderList`)?.addEventListener(`change`,We);function Qr(e){let t=document.getElementById(`codexFastOn`),n=document.getElementById(`codexFastOff`);t&&n&&(t.classList.toggle(`active`,e),n.classList.toggle(`active`,!e)),v()}document.getElementById(`codexFastOn`)?.addEventListener(`click`,()=>Qr(!0)),document.getElementById(`codexFastOff`)?.addEventListener(`click`,()=>Qr(!1));function $r(e){let t=document.getElementById(`codexCtxOn`),n=document.getElementById(`codexCtxOff`),r=document.getElementById(`codexCtxValues`);t&&n&&(t.classList.toggle(`active`,e),n.classList.toggle(`active`,!e)),r&&(r.style.display=e?``:`none`),v()}document.getElementById(`codexCtxOn`)?.addEventListener(`click`,()=>$r(!0)),document.getElementById(`codexCtxOff`)?.addEventListener(`click`,()=>$r(!1)),document.getElementById(`codexCtxWindow`)?.addEventListener(`change`,v),document.getElementById(`codexCtxCompact`)?.addEventListener(`change`,v);function ei(e){let t=document.getElementById(`claude1mOn`),n=document.getElementById(`claude1mOff`),r=document.getElementById(`modelClaude`),i=e;if(r){let t=r.value||``;if(e&&!t.endsWith(`[1m]`)){let e=t+`[1m]`;Array.from(r.options).some(t=>t.value===e)?r.value=e:i=!1}else if(!e&&t.endsWith(`[1m]`)){let e=t.replace(/\[1m\]$/,``);Array.from(r.options).some(t=>t.value===e)?r.value=e:i=!0}else i=t.endsWith(`[1m]`)}t&&n&&(t.classList.toggle(`active`,i),n.classList.toggle(`active`,!i)),v()}document.getElementById(`claude1mOn`)?.addEventListener(`click`,()=>ei(!0)),document.getElementById(`claude1mOff`)?.addEventListener(`click`,()=>ei(!1));function ti(e){return e.split(/[^a-zA-Z0-9]+/).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(``)}function ni(){for(let e of Pe()){let t=ti(e),n=document.getElementById(`model`+t);n&&n.addEventListener(`change`,function(){_t(e,this)});let r=document.getElementById(`customModel`+t);r&&r.addEventListener(`change`,function(){Ze(e,this)});let i=document.getElementById(`effort`+t);i&&i.addEventListener(`change`,v)}document.getElementById(`providerAiE`)?.addEventListener(`change`,ht)}document.querySelector(`[data-action="syncMcp"]`)?.addEventListener(`click`,Ue),document.querySelector(`[data-action="installMcp"]`)?.addEventListener(`click`,Ie),document.querySelector(`[data-action="refreshCli"]`)?.addEventListener(`click`,()=>{nt()?ct(!0):st()}),document.getElementById(`cliStatusInterval`)?.addEventListener(`change`,function(){rt(this.value)}),document.getElementById(`promptModal`)?.addEventListener(`click`,e=>y(e)),document.querySelector(`#promptModal .modal-box`)?.addEventListener(`click`,e=>e.stopPropagation()),document.querySelector(`[data-action="closePrompt"]`)?.addEventListener(`click`,()=>y()),document.querySelector(`[data-action="cancelPrompt"]`)?.addEventListener(`click`,()=>y()),document.querySelector(`[data-action="savePrompt"]`)?.addEventListener(`click`,Qe),document.addEventListener(`keydown`,e=>{e.key===`Escape`&&!n.isRecording&&y()}),document.querySelector(`[data-action="openTemplates"]`)?.addEventListener(`click`,at),document.querySelector(`[data-action="saveTemplate"]`)?.addEventListener(`click`,ut),document.querySelector(`[data-action="closeTemplate"]`)?.addEventListener(`click`,()=>lt()),document.getElementById(`templateModal`)?.addEventListener(`click`,e=>lt(e)),document.querySelector(`#templateModal .modal-box`)?.addEventListener(`click`,e=>e.stopPropagation()),document.getElementById(`templateBack`)?.addEventListener(`click`,pt),document.getElementById(`templateDevToggle`)?.addEventListener(`click`,et),document.getElementById(`heartbeatModal`)?.addEventListener(`click`,e=>pn(e)),document.querySelector(`#heartbeatModal .modal-box`)?.addEventListener(`click`,e=>e.stopPropagation()),document.querySelector(`[data-action="closeHeartbeat"]`)?.addEventListener(`click`,()=>pn()),document.querySelector(`[data-action="addHeartbeat"]`)?.addEventListener(`click`,mn),document.getElementById(`hbJobsList`)?.addEventListener(`click`,e=>{let t=e.target?.closest(`[data-hb-toggle]`);if(t){gn(+(t.dataset.hbToggle||`0`));return}let n=e.target?.closest(`[data-hb-remove]`);if(n){hn(+(n.dataset.hbRemove||`0`));return}}),document.getElementById(`hbJobsList`)?.addEventListener(`change`,e=>{let t=e.target,r=t.closest(`[data-hb-name]`);if(r){n.heartbeatJobs[+(r.dataset.hbName||`0`)].name=t.value,T();return}let i=t.closest(`[data-hb-kind]`);if(i){let e=+(i.dataset.hbKind||`0`),r=n.heartbeatJobs[e]?.schedule,a=typeof r?.timeZone==`string`?r.timeZone:void 0;n.heartbeatJobs[e].schedule=t.value===`cron`?{kind:`cron`,cron:typeof r?.cron==`string`&&r.cron.trim()?r.cron:`0 9 * * *`,...a?{timeZone:a}:{}}:{kind:`every`,minutes:typeof r?.minutes==`number`&&r.minutes>0?Math.floor(r.minutes):5,...a?{timeZone:a}:{}},w(),T();return}let a=t.closest(`[data-hb-minutes]`);if(a){let e=+(a.dataset.hbMinutes||`0`),r=n.heartbeatJobs[e]?.schedule,i=Math.max(1,Math.floor(Number(t.value)||5)),o=typeof r?.timeZone==`string`?r.timeZone:void 0;n.heartbeatJobs[e].schedule={kind:`every`,minutes:i,...o?{timeZone:o}:{}},w(),T();return}let o=t.closest(`[data-hb-cron]`);if(o){let e=+(o.dataset.hbCron||`0`),r=n.heartbeatJobs[e]?.schedule,i=typeof r?.timeZone==`string`?r.timeZone:void 0,a=t.value.trim().replace(/\s+/g,` `);n.heartbeatJobs[e].schedule={kind:`cron`,cron:a,...i?{timeZone:i}:{}},w(),T();return}let s=t.closest(`[data-hb-timezone]`);if(s){let e=+(s.dataset.hbTimezone||`0`),r=n.heartbeatJobs[e]?.schedule;r?.kind===`cron`?n.heartbeatJobs[e].schedule={kind:`cron`,cron:typeof r.cron==`string`&&r.cron.trim()?r.cron:`0 9 * * *`,...t.value.trim()?{timeZone:t.value.trim()}:{}}:n.heartbeatJobs[e].schedule={kind:`every`,minutes:typeof r?.minutes==`number`&&r.minutes>0?Math.floor(r.minutes):5,...t.value.trim()?{timeZone:t.value.trim()}:{}},w(),T();return}let c=t.closest(`[data-hb-prompt]`);if(c){n.heartbeatJobs[+(c.dataset.hbPrompt||`0`)].prompt=t.value,T();return}}),document.getElementById(`memoryModal`)?.addEventListener(`click`,e=>Pt(e)),document.querySelector(`#memoryModal .modal-box`)?.addEventListener(`click`,e=>e.stopPropagation()),document.querySelector(`[data-action="closeMemory"]`)?.addEventListener(`click`,()=>Pt()),document.getElementById(`memTabBtnSettings`)?.addEventListener(`click`,()=>Ft(`settings`)),document.getElementById(`memTabBtnAdvOps`)?.addEventListener(`click`,()=>Ft(`status`)),document.getElementById(`memTabBtnFiles`)?.addEventListener(`click`,()=>Ft(`files`)),document.getElementById(`memOn`)?.addEventListener(`click`,()=>Dt(!0)),document.getElementById(`memOff`)?.addEventListener(`click`,()=>Dt(!1)),document.getElementById(`memFlushEvery`)?.addEventListener(`change`,Ct),document.getElementById(`memRetention`)?.addEventListener(`change`,Ct),document.getElementById(`memFlushLang`)?.addEventListener(`change`,Ct),document.getElementById(`memFlushNowBtn`)?.addEventListener(`click`,Tt),document.getElementById(`advBootstrapBtn`)?.addEventListener(`click`,Nt),document.getElementById(`advReindexBtn`)?.addEventListener(`click`,At),document.getElementById(`advReimportBtn`)?.addEventListener(`click`,Nt),document.getElementById(`advOpenCorruptedBtn`)?.addEventListener(`click`,Mt),document.getElementById(`advStatusBanner`)?.addEventListener(`click`,e=>{e.target?.id===`advUpgradeSoulBtn`&&jt(),e.target?.id===`advSynthesizeSoulBtn`&&wt()}),document.getElementById(`basicMemoryFiles`)?.addEventListener(`click`,e=>{let t=e.target?.closest(`[data-mem-delete]`);if(t){e.stopPropagation(),kt(t.dataset.memDelete||``);return}let n=e.target?.closest(`[data-mem-view]`);if(n){Ot(n.dataset.memView||``);return}if(e.target?.closest(`[data-mem-back]`)){Et();return}});async function ri(){te(),Ee(),kn(),In(),await d();let e=document.getElementById(`langSelect`);e&&(e.value=oe()),await Fe(),ni(),mr(),Ar(),document.getElementById(`chatSearchTrigger`)?.addEventListener(`click`,jr),xe(),ve(),Qt(),Zt(),await Oe(),await gt(),$e(),it(),tt(),mt(),nt()&&ct(),we(),Ur(),_n(),St(),de(),await le(),pe(),Hn();try{sessionStorage.removeItem(Vr)}catch{}re(),`serviceWorker`in navigator&&!dt()&&navigator.serviceWorker.register(`/sw.js`).catch(()=>{})}ri().catch(e=>{console.error(`[bootstrap]`,e)}),document.addEventListener(`keydown`,e=>{(e.ctrlKey||e.metaKey)&&e.key===`f`&&(e.preventDefault(),e.stopPropagation(),jr())},!0),document.addEventListener(`keydown`,e=>{if(e.key===`Escape`){if(document.getElementById(`chatSearch`)?.classList.contains(`open`)){e.preventDefault(),Z();return}if(n.isRecording){e.preventDefault(),sr();return}document.querySelectorAll(`.modal-overlay.open`).forEach(e=>{e.classList.remove(`open`)})}Yr(e)&&(e.preventDefault(),cr())}),document.getElementById(`mobileMenuLeft`)?.addEventListener(`click`,Se),document.getElementById(`mobileMenuRight`)?.addEventListener(`click`,be);
|