cli-jaw 0.1.0 → 0.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/dist/server.js +11 -0
- package/dist/server.js.map +1 -1
- package/package.json +2 -2
- package/public/dist/bundle.js +140 -0
- package/public/dist/bundle.js.map +7 -0
package/dist/server.js
CHANGED
|
@@ -795,6 +795,17 @@ server.listen(PORT, () => {
|
|
|
795
795
|
log.info(` CWD: ${settings.workingDir}`);
|
|
796
796
|
log.info(` DB: ${DB_PATH}`);
|
|
797
797
|
log.info(` Prompts: ${PROMPTS_DIR}\n`);
|
|
798
|
+
// Auto-open browser (cross-platform)
|
|
799
|
+
const url = `http://localhost:${PORT}`;
|
|
800
|
+
const openCmd = process.platform === 'darwin' ? 'open'
|
|
801
|
+
: process.platform === 'win32' ? 'start'
|
|
802
|
+
: 'xdg-open';
|
|
803
|
+
import('child_process').then(({ exec }) => {
|
|
804
|
+
exec(`${openCmd} ${url}`, (err) => {
|
|
805
|
+
if (err)
|
|
806
|
+
log.info(` Browser: could not auto-open (${err.message})`);
|
|
807
|
+
});
|
|
808
|
+
});
|
|
798
809
|
try {
|
|
799
810
|
initMcpConfig(settings.workingDir);
|
|
800
811
|
const symlinks = ensureSkillsSymlinks(settings.workingDir, { onConflict: 'backup' });
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cli-jaw",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "Personal AI assistant powered by 5 engines (Claude, Codex, Gemini, OpenCode, Copilot) — Web, Terminal, and Telegram interfaces with 107 built-in skills",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"keywords": [
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"build:frontend": "node esbuild.config.mjs",
|
|
56
56
|
"watch:frontend": "node esbuild.config.mjs --watch",
|
|
57
57
|
"typecheck": "tsc --noEmit",
|
|
58
|
-
"prepublishOnly": "tsc"
|
|
58
|
+
"prepublishOnly": "tsc && node esbuild.config.mjs"
|
|
59
59
|
},
|
|
60
60
|
"dependencies": {
|
|
61
61
|
"@grammyjs/runner": "^2.0.3",
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
var Bn=Object.defineProperty;var v=(e,t)=>()=>(e&&(t=e(e=0)),t);var P=(e,t)=>{for(var n in t)Bn(e,n,{get:t[n],enumerable:!0})};var l,S=v(()=>{"use strict";l={ws:null,agentBusy:!1,employees:[],allSkills:[],currentSkillFilter:"all",currentAgentDiv:null,attachedFiles:[],heartbeatJobs:[],cliStatusCache:null,cliStatusTs:0}});var Ct={};P(Ct,{api:()=>p,apiFire:()=>w,apiJson:()=>f});async function p(e,t={}){try{let n=await fetch(e,t);if(!n.ok)return console.warn(`[api] ${t.method||"GET"} ${e} \u2192 ${n.status}`),null;if(!(n.headers.get("content-type")||"").includes("json"))return null;let a=await n.json();return a&&typeof a=="object"&&"ok"in a&&"data"in a?a.ok?a.data:(console.warn(`[api] ${e} \u2192 ok:false`,a.error||""),null):a}catch(n){return console.warn(`[api] ${e} failed:`,n.message),null}}async function f(e,t,n){return p(e,{method:t,headers:{"Content-Type":"application/json"},body:JSON.stringify(n)})}function w(e,t="POST",n){let o={method:t};n&&(o.headers={"Content-Type":"application/json"},o.body=JSON.stringify(n)),fetch(e,o).catch(()=>{})}var E=v(()=>{"use strict"});function Tt(e){let t={};for(let[n,o]of Object.entries(e||{}))t[n]=Array.isArray(o?.models)?[...o.models]:[];return t}function At(e){let t={};for(let[n,o]of Object.entries(e||{})){if(!o||typeof o!="object")continue;let a={label:o.label||n,efforts:Array.isArray(o.efforts)?[...o.efforts]:[],models:Array.isArray(o.models)?[...o.models]:[]};typeof o.effortNote=="string"&&o.effortNote.trim()&&(a.effortNote=o.effortNote),t[n]=a}return t}function $t(e){let t=At(e);return Object.keys(t).length?(J=t,Ot=Object.keys(t),M=Tt(t),!0):!1}async function oe(){try{let e=await p("/api/cli-registry");if(!e||!$t(e))throw new Error("invalid registry")}catch(e){console.warn("[cli-registry] fallback:",e.message),$t(Mt)}return J}function B(){return Ot}function ae(e){return J[e]||null}var Mt,J,Ot,M,K,ie=v(()=>{"use strict";E();Mt={claude:{label:"Claude",efforts:["low","medium","high"],models:["claude-sonnet-4-6","claude-opus-4-6","claude-sonnet-4-6[1m]","claude-opus-4-6[1m]","claude-haiku-4-5-20251001"]},codex:{label:"Codex",efforts:["low","medium","high","xhigh"],models:["gpt-5.3-codex","gpt-5.3-codex-spark","gpt-5.2-codex","gpt-5.1-codex-max","gpt-5.1-codex-mini"]},gemini:{label:"Gemini",efforts:[],models:["gemini-3.0-pro-preview","gemini-3.1-pro-preview","gemini-2.5-pro","gemini-3-flash-preview","gemini-2.5-flash"]},opencode:{label:"OpenCode",efforts:["minimal","low","high","max"],models:["anthropic/claude-opus-4-6-thinking","anthropic/claude-sonnet-4-6-thinking","anthropic/claude-sonnet-4-6","openai/gpt-5.3-codex-xhigh","openai/gpt-5.3-codex-high","opencode/big-pickle","opencode/GLM-5 Free","opencode/MiniMax M2.5 Free","opencode/Kimi K2.5 Free","opencode/GPT 5 Nano Free","opencode/Grok Code Fast 1 Free"]},copilot:{label:"Copilot",efforts:["low","medium","high"],effortNote:"\u2192 ~/.copilot/config.json",models:["claude-sonnet-4.6","claude-opus-4.6","claude-opus-4.6-fast","claude-haiku-4.5","gpt-5.3-codex","gpt-5.2-codex","gpt-5.1-codex","gpt-4.1","gpt-5-mini","gemini-3-pro-preview"]}};J=At(Mt),Ot=Object.keys(J),M=Tt(J);K=[{value:"frontend",labelKey:"role.label.frontend",label:"Frontend",prompt:"UI/UX, CSS, components",skill:"dev-frontend"},{value:"backend",labelKey:"role.label.backend",label:"Backend",prompt:"API, DB, server logic",skill:"dev-backend"},{value:"data",labelKey:"role.label.data",label:"Data",prompt:"Data pipeline, analysis, ML",skill:"dev-data"},{value:"docs",labelKey:"role.label.docs",label:"Docs",prompt:"Documentation, README, API docs",skill:"documentation"},{value:"custom",labelKey:"role.label.custom",label:"Custom...",prompt:"",skill:null}]});var U={};P(U,{addEmployee:()=>$e,deleteEmployee:()=>Me,loadEmployees:()=>Ce,onEmpCliChange:()=>Te,onEmpRoleChange:()=>Ae,renderEmployees:()=>Pt,updateEmployee:()=>C});async function Ce(){let e=await p("/api/employees");l.employees=e||[],Pt()}function Pt(){let e=document.getElementById("employeesList");if(l.employees.length===0){e.innerHTML=`<div style="color:var(--text-dim);font-size:11px;padding:4px 0">${r("emp.addPrompt")}</div>`;return}let t=B();e.innerHTML=l.employees.map(n=>{let o=M[n.cli]||[],i={"React/Vue \uAE30\uBC18 UI \uCEF4\uD3EC\uB10C\uD2B8 \uAC1C\uBC1C, \uC2A4\uD0C0\uC77C\uB9C1":"frontend","API \uC11C\uBC84, DB \uC2A4\uD0A4\uB9C8, \uBE44\uC988\uB2C8\uC2A4 \uB85C\uC9C1 \uAD6C\uD604":"backend","\uD504\uB860\uD2B8\uC5D4\uB4DC\uC640 \uBC31\uC5D4\uB4DC \uBAA8\uB450 \uB2F4\uB2F9":"frontend","CI/CD, Docker, \uC778\uD504\uB77C \uC790\uB3D9\uD654":"backend","\uD14C\uC2A4\uD2B8 \uC791\uC131, \uBC84\uADF8 \uC7AC\uD604, \uD488\uC9C8 \uAD00\uB9AC":"custom","\uB370\uC774\uD130 \uD30C\uC774\uD504\uB77C\uC778, ETL, \uBD84\uC11D \uCFFC\uB9AC":"data","API \uBB38\uC11C\uD654, README, \uAC00\uC774\uB4DC \uC791\uC131":"docs","UI/UX \uAD6C\uD604, CSS, \uCEF4\uD3EC\uB10C\uD2B8 \uAC1C\uBC1C":"frontend","API, DB, \uC11C\uBC84 \uB85C\uC9C1 \uAD6C\uD604":"backend","\uB370\uC774\uD130 \uD30C\uC774\uD504\uB77C\uC778, \uBD84\uC11D, ML":"data","\uBB38\uC11C\uD654, README, API docs":"docs","UI/UX, CSS, components":"frontend","API, DB, server logic":"backend","Data pipeline, analysis, ML":"data","Documentation, README, API docs":"docs"}[n.role],s=i?K.find(m=>m.value===i):K.find(m=>m.prompt===n.role),u=s?s.value:n.role?"custom":"frontend",c=u==="custom";return`
|
|
2
|
+
<div class="settings-group" style="margin-bottom:8px;padding:8px 10px">
|
|
3
|
+
<div style="display:flex;align-items:center;gap:6px;margin-bottom:6px">
|
|
4
|
+
<span style="width:8px;height:8px;border-radius:50%;background:var(--accent);display:inline-block;flex-shrink:0"></span>
|
|
5
|
+
<input style="flex:1;background:none;border:none;color:var(--text);font-size:12px;font-weight:600;font-family:inherit;outline:none"
|
|
6
|
+
value="${d(n.name||"Agent")}"
|
|
7
|
+
data-emp-name="${n.id}">
|
|
8
|
+
<button style="background:none;border:none;color:var(--text-dim);cursor:pointer;font-size:12px" data-emp-delete="${n.id}" title="${r("emp.delete")}">\u2715</button>
|
|
9
|
+
</div>
|
|
10
|
+
<div style="display:grid;grid-template-columns:1fr 1fr;gap:4px;margin-bottom:4px">
|
|
11
|
+
<div>
|
|
12
|
+
<label>CLI</label>
|
|
13
|
+
<select data-emp-cli="${n.id}">
|
|
14
|
+
${t.map(m=>`<option${n.cli===m?" selected":""}>${m}</option>`).join("")}
|
|
15
|
+
</select>
|
|
16
|
+
</div>
|
|
17
|
+
<div>
|
|
18
|
+
<label>Model</label>
|
|
19
|
+
<select data-emp-model="${n.id}">
|
|
20
|
+
<option value="default"${!n.model||n.model==="default"?" selected":""}>default</option>
|
|
21
|
+
${o.map(m=>`<option${n.model===m?" selected":""}>${m}</option>`).join("")}
|
|
22
|
+
</select>
|
|
23
|
+
</div>
|
|
24
|
+
</div>
|
|
25
|
+
<div>
|
|
26
|
+
<label>Role</label>
|
|
27
|
+
<select data-emp-role="${n.id}">
|
|
28
|
+
${K.map(m=>`<option value="${m.value}"${u===m.value?" selected":""}>${m.label}</option>`).join("")}
|
|
29
|
+
</select>
|
|
30
|
+
<textarea data-emp-custom="${n.id}" style="display:${c?"block":"none"};margin-top:4px;width:100%;height:40px;background:var(--bg);border:1px solid var(--border);color:var(--text);padding:4px 6px;border-radius:4px;font-size:10px;font-family:inherit;resize:vertical"
|
|
31
|
+
placeholder="${r("emp.customRole")}">${c?d(n.role):""}</textarea>
|
|
32
|
+
</div>
|
|
33
|
+
<div style="margin-top:4px;font-size:10px;display:flex;align-items:center;gap:6px">
|
|
34
|
+
<span style="color:${n.status==="running"?"#fbbf24":"var(--green)"}">\u25CF ${n.status||"idle"}</span>
|
|
35
|
+
${(()=>{let m=jt(n.id),g=m?.phase||n.phase,$=m?.phaseLabel||n.phaseLabel;return g?`<span style="background:${{1:"#60a5fa",2:"#a78bfa",3:"#34d399",4:"#fbbf24",5:"#f472b6"}[g]||"#888"};color:#000;padding:1px 6px;border-radius:9px;font-size:9px">${$||"P"+g}</span>`:""})()}
|
|
36
|
+
</div>
|
|
37
|
+
</div>`}).join("")}async function $e(){await f("/api/employees","POST",{})}async function C(e,t){await f(`/api/employees/${e}`,"PUT",t)}async function Me(e){w(`/api/employees/${e}`,"DELETE")}function Te(e,t){let n=M[t]||[],o=document.querySelector(`[data-emp-model="${e}"]`);o.innerHTML='<option value="default" selected>default</option>'+n.map(a=>`<option>${d(a)}</option>`).join("")+`<option value="__custom__">${r("emp.customModel")}</option>`,C(e,{cli:t,model:"default"})}function Ae(e,t){let n=K.find(a=>a.value===t),o=document.querySelector(`[data-emp-custom="${e}"]`);t==="custom"?(o.style.display="block",o.focus()):(o.style.display="none",o.value="",C(e,{role:n?.prompt||""}))}var j=v(()=>{"use strict";S();ie();T();Oe();x();E()});var De={};P(De,{filterSkills:()=>He,loadSkills:()=>Ht,renderSkills:()=>Pe,toggleSkill:()=>je});async function Ht(){try{let e=await Dt("/api/skills");l.allSkills=await e.json(),Pe()}catch{document.getElementById("skillsList").innerHTML=`<div style="color:var(--text-dim);font-size:11px">${r("skill.loadFail")}</div>`}}function Pe(){let e=document.getElementById("skillsList"),t=document.getElementById("skillsCount"),n=l.allSkills;l.currentSkillFilter==="installed"?n=l.allSkills.filter(a=>a.enabled):l.currentSkillFilter==="other"?n=l.allSkills.filter(a=>!Cn.includes(a.category)):l.currentSkillFilter!=="all"&&(n=l.allSkills.filter(a=>a.category===l.currentSkillFilter));let o=l.allSkills.filter(a=>a.enabled).length;t.textContent=r("skill.count",{active:o,total:l.allSkills.length}),e.innerHTML=n.map(a=>{let i=[];return a.requires?.env&&i.push("\u{1F511} "+a.requires.env.join(", ")),a.requires?.bins&&i.push("\u2699\uFE0F "+a.requires.bins.join(", ")),a.install&&i.push(a.install),`
|
|
38
|
+
<div class="skill-card ${a.enabled?"enabled":""}">
|
|
39
|
+
<div class="skill-card-header">
|
|
40
|
+
<span class="skill-emoji">${d(a.emoji||"\u{1F527}")}</span>
|
|
41
|
+
<span class="skill-name">${d(a.name||a.id)}</span>
|
|
42
|
+
<button class="skill-toggle ${a.enabled?"on":"off"}"
|
|
43
|
+
data-skill-id="${d(a.id)}" data-skill-enabled="${a.enabled}"></button>
|
|
44
|
+
</div>
|
|
45
|
+
<div class="skill-desc">${d(a.description||"")}</div>
|
|
46
|
+
${i.length?`<div class="skill-req">${i.join(" \xB7 ")}</div>`:""}
|
|
47
|
+
</div>`}).join("")}async function je(e,t){let n=t?"/api/skills/disable":"/api/skills/enable";try{await f(n,"POST",{id:e}),await Ht()}catch(o){console.error("toggleSkill error:",o)}}function He(e,t){l.currentSkillFilter=e,document.querySelectorAll(".skill-filter").forEach(n=>n.classList.remove("active")),t&&t.classList.add("active"),Pe()}var Cn,le=v(()=>{"use strict";S();x();E();T();Cn=["productivity","communication","devtools","ai-media","utility","smarthome","automation"]});function se(){try{for(let e of _t){let t=localStorage.getItem(e);if(t)return t}}catch{}return navigator.language||"ko"}function Ft(e){let t=String(e||"").trim();if(t)try{for(let n of _t)localStorage.setItem(n,t)}catch{}}var _t,re=v(()=>{"use strict";_t=["claw_locale","claw.locale"]});var Ke={};P(Ke,{close:()=>k,handleClick:()=>ze,handleKeydown:()=>Ne,handleOutsideClick:()=>Je,isDropdownOpen:()=>Mn,loadCommands:()=>Re,update:()=>me});function Rt(e){let n=String(e||"").slice(1).trim().split(/\s+/)[0]||"";return n.includes("/")||n.includes("\\")}function _e(e){return String(e||"").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function $n(e){let t=String(e||"").toLowerCase();return Fe.filter(n=>`/${n.name}`.startsWith(t))}function qt(){let e=de(),t=D();!e||!t||(A&&(clearTimeout(A),A=null),e.style.display="block",requestAnimationFrame(()=>e.classList.add("visible")),H=!0,t.setAttribute("aria-expanded","true"))}function ce(){let e=de(),t=D();if(!e||!t)return;if(!L.length){if(!t.value.startsWith("/")||Rt(t.value)){k();return}e.innerHTML=`
|
|
48
|
+
<div class="cmd-item cmd-empty" role="option" aria-disabled="true">
|
|
49
|
+
${r("cmd.noMatch")}
|
|
50
|
+
</div>
|
|
51
|
+
`,qt(),t.setAttribute("aria-activedescendant","");return}e.innerHTML=L.map((o,a)=>{let i=a===b;return`<div class="cmd-item${i?" selected":""}"
|
|
52
|
+
role="option"
|
|
53
|
+
id="cmd-item-${a}"
|
|
54
|
+
aria-selected="${i}"
|
|
55
|
+
data-index="${a}">
|
|
56
|
+
<span class="cmd-name">/${_e(o.name)}</span>
|
|
57
|
+
<span class="cmd-desc">${_e(o.desc)}</span>
|
|
58
|
+
${o.args?`<span class="cmd-args">${_e(o.args)}</span>`:""}
|
|
59
|
+
</div>`}).join(""),qt(),t.setAttribute("aria-activedescendant",b>=0?`cmd-item-${b}`:"");let n=e.querySelector(".selected");n&&n.scrollIntoView({block:"nearest"})}function qe(e){let t=L[b],n=D();if(!t||!n){k();return}if(k(),t.args||!e){n.value=`/${t.name} `,n.focus(),n.selectionStart=n.selectionEnd=n.value.length;return}n.value=`/${t.name}`,n.dispatchEvent(new Event("cmd-execute",{bubbles:!0}))}async function Re(){try{let e=se(),t=`/api/commands?interface=web&locale=${encodeURIComponent(e)}`;Fe=await p(t,{headers:{"Accept-Language":e}})||[]}catch(e){console.warn("[slash-commands] loadCommands failed:",e.message),Fe=[]}}function k(){let e=de();A&&(clearTimeout(A),A=null),e&&(e.classList.remove("visible"),A=setTimeout(()=>{e.classList.contains("visible")||(e.style.display="none",e.innerHTML="")},150)),H=!1,b=-1,L=[];let t=D();t&&(t.setAttribute("aria-expanded","false"),t.setAttribute("aria-activedescendant",""))}function me(e){let t=String(e||"");if(!t.startsWith("/")||t.includes(" ")||t.includes(`
|
|
60
|
+
`)||Rt(t)){k();return}L=$n(t),b=L.length?0:-1,ce()}function Ne(e){return H?L.length?e.key==="ArrowDown"?(e.preventDefault(),b=Math.min(L.length-1,b+1),ce(),!0):e.key==="ArrowUp"?(e.preventDefault(),b=Math.max(0,b-1),ce(),!0):e.key==="Tab"?(e.preventDefault(),qe(!1),!0):e.key==="Enter"&&!e.shiftKey&&!e.isComposing?(e.preventDefault(),qe(!0),!0):e.key==="Escape"?(e.preventDefault(),k(),!0):!1:e.key==="Escape"?(e.preventDefault(),k(),!0):!1:(e.key==="ArrowDown"||e.key==="ArrowUp")&&!e.isComposing?(me(D()?.value||""),H?(b=e.key==="ArrowUp"?L.length-1:0,ce(),e.preventDefault(),!0):!1):!1}function ze(e){let t=e.target.closest(".cmd-item");if(!t)return;let n=parseInt(t.dataset.index||"-1",10);Number.isNaN(n)||n<0||(b=Math.min(n,L.length-1),qe(!0))}function Je(e){if(!H)return;let t=de(),n=D();!t||!n||!t.contains(e.target)&&e.target!==n&&k()}function Mn(){return H}var Fe,L,b,H,A,de,D,ue=v(()=>{"use strict";re();x();E();Fe=[],L=[],b=-1,H=!1,A=null;de=()=>document.getElementById("cmdDropdown"),D=()=>document.getElementById("chatInput")});var X={};P(X,{applyCustomModel:()=>et,closePromptModal:()=>F,getModelValue:()=>Kt,handleModelSelect:()=>Ze,installMcpGlobal:()=>Qe,loadCliStatus:()=>he,loadFallbackOrder:()=>Ut,loadMcpServers:()=>Ve,loadSettings:()=>Ye,onCliChange:()=>fe,openPromptModal:()=>nt,saveActiveCliSettings:()=>_,saveFallbackOrder:()=>tt,savePerCli:()=>V,savePromptFromModal:()=>ot,saveTelegramSettings:()=>ge,setPerm:()=>Y,setTelegram:()=>ye,syncMcpServers:()=>Xe,updateSettings:()=>pe});function Ge(e){return e.charAt(0).toUpperCase()+e.slice(1)}function W(e){return document.getElementById("model"+Ge(e))}function zt(e){return document.getElementById("customModel"+Ge(e))}function We(e){return document.getElementById("effort"+Ge(e))}function Jt(e,t,{includeCustom:n=!1,includeDefault:o=!1,selected:a=""}={}){if(!e)return;let i=o?'<option value="default">default</option>':"",s=n?`<option value="__custom__">${r("model.customOption")}</option>`:"",u=(t||[]).map(c=>`<option value="${d(c)}">${d(c)}</option>`).join("");e.innerHTML=i+u+s,a&&Array.from(e.options).some(c=>c.value===a)&&(e.value=a)}function G(e,t){if(!e||!t||Array.from(e.options).some(a=>a.value===t))return;let n=document.createElement("option");n.value=t,n.textContent=t;let o=e.querySelector('option[value="__custom__"]');o?e.insertBefore(n,o):e.appendChild(n)}function Tn(e=null){let t=B(),n=document.getElementById("selCli");if(n){let a=e?.cli||n.value||t[0]||"claude";n.innerHTML=t.map(i=>{let s=ae(i)?.label||i;return`<option value="${d(i)}">${d(s)}</option>`}).join(""),Array.from(n.options).some(i=>i.value===a)&&(n.value=a)}let o=document.getElementById("memCli");if(o){let a=e?.memory?.cli||o.value||"";o.innerHTML='<option value="">(active CLI)</option>'+t.map(i=>`<option value="${d(i)}">${d(i)}</option>`).join(""),Array.from(o.options).some(i=>i.value===a)&&(o.value=a)}}function An(e=null){for(let t of B()){let n=W(t);if(n){let a=e?.perCli?.[t]?.model||n.value||"";Jt(n,M[t]||[],{includeCustom:!0,selected:a}),a&&!Array.from(n.options).some(i=>i.value===a)&&(G(n,a),n.value=a)}let o=We(t);if(o){let a=ae(t),i=[""].concat(a?.efforts||[]),s=e?.perCli?.[t]?.effort||o.value||"",u=[...new Set(i)],c=a?.efforts?.length===0&&a?.effortNote?a.effortNote:"\u2014 none";o.innerHTML=u.map(m=>m?`<option value="${d(m)}">${d(m)}</option>`:`<option value="">${d(c)}</option>`).join(""),a?.effortNote&&(o.title=a.effortNote),o.disabled=a?.efforts?.length===0&&!!a?.effortNote,Array.from(o.options).some(m=>m.value===s)&&(o.value=s)}}}function Ue(e,t=""){let n=document.getElementById("selEffort");if(!n)return;let o=ae(e);if(o?.effortNote){n.innerHTML=`<option value="">${d(o.effortNote)}</option>`,n.title=o.effortNote,n.disabled=!0;return}let a=[""].concat(o?.efforts||[]),i=[...new Set(a)];n.innerHTML=i.map(s=>s?`<option value="${d(s)}">${d(s)}</option>`:'<option value="">\u2014 none</option>').join(""),n.disabled=!1,n.title="",Array.from(n.options).some(s=>s.value===t)&&(n.value=t)}async function Ye(){await oe();let e=await p("/api/settings");if(!e)return;Ft(e.locale),Tn(e),An(e);let t=document.getElementById("selCli");if(Array.from(t.options).some(s=>s.value===e.cli)&&(t.value=e.cli),document.getElementById("inpCwd").value=e.workingDir,document.getElementById("headerCli").textContent=e.cli,Y(e.permissions,!1),e.perCli)for(let[s,u]of Object.entries(e.perCli)){let c=W(s),m=We(s);c&&u.model&&(G(c,u.model),c.value=u.model),m&&(m.value=u.effort||"")}fe(!1);let n=e.activeOverrides?.[e.cli]||{},o=e.perCli?.[e.cli]||{},a=n.model||o.model,i=n.effort||o.effort||"";a&&(document.getElementById("selModel").value=a),Ue(e.cli,i),On(e),Ut(e),Ve()}async function Ve(){try{let e=await p("/api/mcp");if(!e)return;let t=document.getElementById("mcpServerList"),n=Object.entries(e.servers||{});if(!n.length){t.textContent=r("mcp.noServers");return}t.innerHTML=n.map(([o,a])=>`<div style="padding:2px 0">\u2022 <b>${o}</b> <span style="opacity:.6">${a.command} ${(a.args||[]).slice(0,2).join(" ")}</span></div>`).join("")}catch{}}async function Xe(){let e=document.getElementById("mcpSyncResult");e.style.display="block",e.textContent=r("mcp.syncing");try{let t=await f("/api/mcp/sync","POST",{});if(!t){e.textContent="\u274C sync failed";return}let n=t.results||{};e.innerHTML=Object.entries(n).map(([o,a])=>`${a?"\u2705":"\u23ED\uFE0F"} ${o}`).join(" ")}catch(t){e.textContent="\u274C "+t.message}}async function Qe(){let e=document.getElementById("mcpSyncResult");e.style.display="block",e.textContent=r("mcp.installing");try{let t=await f("/api/mcp/install","POST",{});if(!t){e.textContent="\u274C install failed";return}e.innerHTML=Object.entries(t.results||{}).map(([n,o])=>`${o.status==="installed"?"\u2705":o.status==="skip"?"\u23ED\uFE0F":"\u274C"} <b>${n}</b>: ${o.status}${o.bin?" \u2192 "+o.bin:""}`).join("<br>"),Ve()}catch(t){e.textContent="\u274C "+t.message}}async function pe(){let e={cli:document.getElementById("selCli").value,workingDir:document.getElementById("inpCwd").value};document.getElementById("headerCli").textContent=e.cli,await f("/api/settings","PUT",e)}function Y(e,t=!0){document.getElementById("permSafe").classList.toggle("active",e==="safe"),document.getElementById("permAuto").classList.toggle("active",e==="auto"),t&&w("/api/settings","PUT",{permissions:e})}function Kt(e){let t=W(e);return t?t.value==="__custom__"?zt(e)?.value?.trim()||t.options[0]?.value||"default":t.value:"default"}function Ze(e,t){let n=zt(e);n&&(t.value==="__custom__"?(n.style.display="block",n.focus()):(n.style.display="none",V()))}function et(e,t){let n=t.value.trim();if(!n)return;let o=W(e);o&&(G(o,n),o.value=n,t.style.display="none",V())}async function V(){let e={};for(let t of B()){if(!W(t))continue;let o=We(t);e[t]={model:Kt(t),effort:o?o.value:""}}await f("/api/settings","PUT",{perCli:e})}function fe(e=!0){let t=document.getElementById("selCli").value,n=M[t]||[],o=document.getElementById("selModel");Jt(o,n,{includeCustom:!0,includeDefault:!0}),document.getElementById("headerCli").textContent=t,Ue(t);let a=document.getElementById("selModelCustom");a&&a.remove();let i=document.createElement("input");i.type="text",i.id="selModelCustom",i.className="custom-model-input",i.placeholder=r("model.placeholder"),i.style.display="none",i.onchange=function(){let s=this.value.trim();s&&(G(o,s),o.value=s,this.style.display="none",_())},o.parentElement.appendChild(i),o.onchange=function(){this.value==="__custom__"?(i.style.display="block",i.focus()):(i.style.display="none",_())},p("/api/settings").then(s=>{if(!s)return;let u=s.activeOverrides?.[t]||{},c=s.perCli?.[t]||{},m=u.model||c.model,g=u.effort||c.effort||"";m&&(G(o,m),o.value=m),Ue(t,g)}),e&&pe()}async function _(){let e=document.getElementById("selCli").value,n=document.getElementById("selModel")?.value||"default";n==="__custom__"&&(n=document.getElementById("selModelCustom")?.value?.trim()||"default");let o=document.getElementById("selEffort"),a={};a[e]={model:n},o?.disabled||(a[e].effort=o?.value||""),await f("/api/settings","PUT",{activeOverrides:a})}async function ge(){let e=document.getElementById("tgToken").value.trim(),t=document.getElementById("tgChatIds").value.trim(),n=t?t.split(",").map(o=>parseInt(o.trim(),10)).filter(o=>!isNaN(o)):[];await f("/api/settings","PUT",{telegram:{token:e,allowedChatIds:n}})}async function ye(e){document.getElementById("tgOn").classList.toggle("active",e),document.getElementById("tgOff").classList.toggle("active",!e),await f("/api/settings","PUT",{telegram:{enabled:e}})}function On(e){if(!e.telegram)return;let t=e.telegram;document.getElementById("tgOn").classList.toggle("active",!!t.enabled),document.getElementById("tgOff").classList.toggle("active",!t.enabled),t.token&&(document.getElementById("tgToken").value=t.token),t.allowedChatIds?.length&&(document.getElementById("tgChatIds").value=t.allowedChatIds.join(", "))}function Ut(e){let t=document.getElementById("fallbackOrderList");if(!t)return;let n=Object.keys(e.perCli||{}),o=e.fallbackOrder||[],a=Math.min(n.length-1,3),i="";for(let s=0;s<a;s++){let u=o[s]||"",c=n.map(m=>`<option value="${m}" ${m===u?"selected":""}>${m}</option>`).join("");i+=`
|
|
61
|
+
<div class="settings-row sub-row">
|
|
62
|
+
<label style="min-width:60px">Fallback ${s+1}</label>
|
|
63
|
+
<select id="fallback${s}"
|
|
64
|
+
style="font-size:11px;padding:4px;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:4px;flex:1">
|
|
65
|
+
<option value="">${r("settings.none")}</option>
|
|
66
|
+
${c}
|
|
67
|
+
</select>
|
|
68
|
+
</div>`}t.innerHTML=i}async function tt(){let t=[...document.querySelectorAll("#fallbackOrderList select")].map(n=>n.value).filter(Boolean);await f("/api/settings","PUT",{fallbackOrder:t})}async function he(e=!1){let t=Number(localStorage.getItem("cliStatusInterval")||300);if(!e&&l.cliStatusCache&&t>0&&Date.now()-l.cliStatusTs<t*1e3){Nt(l.cliStatusCache);return}let n=document.getElementById("cliStatusList");n&&(n.innerHTML='<div style="color:var(--text-dim);font-size:11px">Loading...</div>');let[o,a]=await Promise.all([p("/api/cli-status"),p("/api/quota")]);l.cliStatusCache={cliStatus:o,quota:a},l.cliStatusTs=Date.now(),Nt(l.cliStatusCache)}function Nt(e){let{cliStatus:t,quota:n}=e,o=document.getElementById("cliStatusList"),a={claude:{install:"npm i -g @anthropic-ai/claude-code",auth:"claude auth"},codex:{install:"npm i -g @openai/codex",auth:"codex login"},gemini:{install:"npm i -g @google/gemini-cli",auth:`gemini (${r("cli.gemini.auth")})`},opencode:{install:"npm i -g opencode-ai",auth:"opencode auth"},copilot:{install:"gh copilot --help",auth:"1) gh auth login \u2192 2) gh copilot --help \u2192 3) copilot login"}},i="";if(!t||typeof t!="object"){o&&(o.innerHTML='<div style="color:var(--text-dim);font-size:11px">Failed to load CLI status</div>');return}for(let[s,u]of Object.entries(t)){let c=n[s],m=u.available?"ok":"missing",g="";if(c?.account){let h=[];c.account.email&&h.push(c.account.email),c.account.type&&h.push(c.account.type),c.account.plan&&h.push(c.account.plan),c.account.tier&&h.push(c.account.tier),h.length&&(g=`<div style="font-size:10px;color:var(--text-dim);margin:2px 0 4px 16px">${d(h.join(" \xB7 "))}</div>`)}let $="";if(!u.available){let h=a[s];h&&($=`
|
|
69
|
+
<div style="font-size:10px;margin:4px 0 2px 16px;padding:6px 8px;background:var(--bg-dim, #1e1e2e);border-radius:4px;border-left:2px solid #fbbf24">
|
|
70
|
+
<div style="color:#fbbf24;margin-bottom:3px">${r("cli.authRequired")}</div>
|
|
71
|
+
<div style="color:var(--text-dim)"><code style="font-size:10px;background:var(--border);padding:1px 4px;border-radius:2px">${d(h.install)}</code></div>
|
|
72
|
+
<div style="color:var(--text-dim);margin-top:2px"><code style="font-size:10px;background:var(--border);padding:1px 4px;border-radius:2px">${d(h.auth)}</code></div>
|
|
73
|
+
</div>
|
|
74
|
+
`)}let Bt="";c?.windows?.length&&(Bt=c.windows.map(h=>{let ne=Math.round(h.percent),wn=ne>80?"#ef4444":ne>50?"#fbbf24":"#38bdf8";return`
|
|
75
|
+
<div style="display:flex;align-items:center;gap:6px;margin-left:16px;font-size:10px;color:var(--text-dim)">
|
|
76
|
+
<span style="width:42px">${h.label}</span>
|
|
77
|
+
<div style="flex:1;height:4px;background:var(--border);border-radius:2px;overflow:hidden">
|
|
78
|
+
<div style="width:${ne}%;height:100%;background:${wn};border-radius:2px"></div>
|
|
79
|
+
</div>
|
|
80
|
+
<span style="width:28px;text-align:right">${ne}%</span>
|
|
81
|
+
</div>
|
|
82
|
+
`}).join("")),i+=`
|
|
83
|
+
<div class="settings-group" style="margin-bottom:6px;padding:8px 10px">
|
|
84
|
+
<div class="cli-status-row">
|
|
85
|
+
<span class="cli-dot ${m}"></span>
|
|
86
|
+
<span class="cli-name" style="font-weight:600">${s}</span>
|
|
87
|
+
</div>
|
|
88
|
+
${g}
|
|
89
|
+
${$}
|
|
90
|
+
${Bt}
|
|
91
|
+
</div>
|
|
92
|
+
`}o.innerHTML=i}function nt(){p("/api/prompt").then(e=>{e&&(document.getElementById("modalPromptEditor").value=e.content||"",document.getElementById("promptModal").classList.add("open"))})}function F(e){e&&e.target!==e.currentTarget||document.getElementById("promptModal").classList.remove("open")}async function ot(){let e=document.getElementById("modalPromptEditor").value;await f("/api/prompt","PUT",{content:e}),document.getElementById("promptModal").classList.remove("open")}var q=v(()=>{"use strict";ie();T();re();x();E();S()});async function Gt(){let e=null;try{e=localStorage.getItem("claw_locale")}catch{}if(!e){let t=(navigator.language||"ko").split(/[-_]/)[0].toLowerCase();e=["en","ko"].includes(t)?t:"ko"}ve=await at("ko"),e==="ko"?Z=ve:Z=await at(e),Q=e,Wt()}async function at(e){try{let{api:t}=await Promise.resolve().then(()=>(E(),Ct));return await t(`/api/i18n/${e}`)||{}}catch{return{}}}function r(e,t={}){let n=Z[e]??ve[e]??e;for(let[o,a]of Object.entries(t))n=n.replaceAll(`{${o}}`,String(a));return n}function Wt(){document.querySelectorAll("[data-i18n]").forEach(e=>{let t=e.getAttribute("data-i18n");t&&(e.textContent=r(t))}),document.querySelectorAll("[data-i18n-placeholder]").forEach(e=>{let t=e.getAttribute("data-i18n-placeholder");t&&(e.placeholder=r(t))}),document.querySelectorAll("[data-i18n-title]").forEach(e=>{let t=e.getAttribute("data-i18n-title");t&&(e.title=r(t))}),document.querySelectorAll("[data-i18n-aria]").forEach(e=>{let t=e.getAttribute("data-i18n-aria");t&&e.setAttribute("aria-label",r(t))})}async function Yt(e){if(e!==Q){e==="ko"?Z=ve:Z=await at(e),Q=e;try{localStorage.setItem("claw_locale",e)}catch{}Wt();try{let{loadEmployees:t}=await Promise.resolve().then(()=>(j(),U));t()}catch{}try{let{loadSkills:t}=await Promise.resolve().then(()=>(le(),De));t()}catch{}try{let{loadCommands:t}=await Promise.resolve().then(()=>(ue(),Ke));t()}catch{}try{let{loadSettings:t}=await Promise.resolve().then(()=>(q(),X));t()}catch{}}}function ee(){return Q}function Dt(e,t={}){let n=new URL(e,location.origin);return n.searchParams.has("locale")||n.searchParams.set("locale",Q),fetch(n.toString(),t)}var Q,Z,ve,x=v(()=>{"use strict";Q="ko",Z={},ve={}});function d(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function Pn(e){return typeof DOMPurify<"u"?DOMPurify.sanitize(e,{USE_PROFILES:{html:!0},FORBID_TAGS:["script","style","iframe","object","embed","form"],FORBID_ATTR:["onerror","onclick","onload","onmouseover","onfocus","onblur"],ADD_TAGS:["use"]}):e.replace(/<script[\s\S]*?>[\s\S]*?<\/script>/gi,"").replace(/\bon\w+\s*=/gi,"data-removed=").replace(/javascript\s*:/gi,"about:blank")}function jn(e){let t=e.replace(/```json\n[\s\S]*?\n```/g,"");return t=t.replace(/\{[\s\S]*"subtasks"\s*:\s*\[[\s\S]*?\]\s*\}/g,"").trim(),t}function Hn(e){return typeof katex>"u"||(e=e.replace(/\$\$([\s\S]+?)\$\$/g,(t,n)=>{try{return katex.renderToString(n.trim(),{displayMode:!0,throwOnError:!1})}catch{return`<code>${d(n)}</code>`}}),e=e.replace(/(?<!\$)\$(?!\$)([^\n$]+?)\$(?!\$)/g,(t,n)=>{try{return katex.renderToString(n.trim(),{displayMode:!1,throwOnError:!1})}catch{return`<code>${d(n)}</code>`}})),e}function Qt(){typeof mermaid>"u"||document.querySelectorAll(".mermaid-pending").forEach(async e=>{e.classList.remove("mermaid-pending");let t=e.textContent,n=`mermaid-${++Dn}`;try{let{svg:o}=await mermaid.render(n,t);e.innerHTML=o,e.classList.add("mermaid-rendered");let a=e.innerHTML,i=document.createElement("button");i.className="mermaid-zoom-btn",i.textContent="\u26F6",i.title="Expand diagram",i.addEventListener("click",()=>_n(a)),e.appendChild(i)}catch(o){let a=o?.message||o?.str||"Unknown error";e.innerHTML=`
|
|
93
|
+
<div style="border:1px solid #ef4444;border-radius:6px;padding:8px;margin:4px 0">
|
|
94
|
+
<div style="color:#ef4444;font-size:11px;margin-bottom:4px">\u26A0\uFE0F Mermaid \uB80C\uB354\uB9C1 \uC2E4\uD328</div>
|
|
95
|
+
<div style="color:#fbbf24;font-size:10px;margin-bottom:6px">${d(a.slice(0,200))}</div>
|
|
96
|
+
<pre style="margin:0;font-size:11px;overflow-x:auto"><code>${d(t)}</code></pre>
|
|
97
|
+
</div>`}})}function _n(e){document.getElementById("mermaidOverlay")?.remove();let t=document.createElement("div");t.id="mermaidOverlay",t.className="mermaid-overlay",t.innerHTML=`
|
|
98
|
+
<div class="mermaid-overlay-backdrop"></div>
|
|
99
|
+
<div class="mermaid-overlay-content">
|
|
100
|
+
<button class="mermaid-overlay-close">\u2715</button>
|
|
101
|
+
<div class="mermaid-overlay-svg">${e}</div>
|
|
102
|
+
</div>`,document.body.appendChild(t);let n=t.querySelector("svg");n&&(n.removeAttribute("width"),n.removeAttribute("height"),n.style.width="100%",n.style.height="auto",n.style.maxHeight="85vh");let o=()=>t.remove();t.querySelector(".mermaid-overlay-backdrop").addEventListener("click",o),t.querySelector(".mermaid-overlay-close").addEventListener("click",a=>{a.stopPropagation(),a.preventDefault(),o()}),document.addEventListener("keydown",function a(i){i.key==="Escape"&&(o(),document.removeEventListener("keydown",a))})}function Zt(){if(Vt)return!0;if(typeof marked>"u")return!1;let e=new marked.Renderer;return e.code=function({text:t,lang:n}){if(n==="mermaid")return`<div class="mermaid-container mermaid-pending">${d(t)}</div>`;let o=d(t);if(typeof hljs<"u"&&n&&hljs.getLanguage(n))try{o=hljs.highlight(t,{language:n}).value}catch{}else if(typeof hljs<"u")try{o=hljs.highlightAuto(t).value}catch{}let a=n?d(n):r("code.copy");return`<div class="code-block-wrapper">${`<span class="code-lang-label" data-lang="${n?d(n):""}">${a}</span>`}<pre><code class="hljs${n?` language-${d(n)}`:""}">${o}</code></pre></div>`},marked.setOptions({renderer:e,gfm:!0,breaks:!0}),typeof window.mermaid<"u"&&window.mermaid.initialize({startOnLoad:!1,theme:"base",securityLevel:"loose",themeVariables:{darkMode:!0,background:"#0f172a",primaryColor:"#1e3a5f",primaryTextColor:"#e2e8f0",primaryBorderColor:"#38bdf8",lineColor:"#94a3b8",secondaryColor:"#1e293b",tertiaryColor:"#0f172a",textColor:"#e2e8f0",mainBkg:"#1e293b",nodeBorder:"#38bdf8",clusterBkg:"#1e293b",titleColor:"#e2e8f0",edgeLabelBackground:"#1e293b",nodeTextColor:"#e2e8f0"}}),Vt=!0,!0}function Fn(e){return d(e).replace(/`{3,}(\w*)\n([\s\S]*?)`{3,}/g,"<pre><code>$2</code></pre>").replace(/`([^`]+)`/g,"<code>$1</code>").replace(/\*\*(.+?)\*\*/g,"<strong>$1</strong>").replace(/^### (.+)$/gm,'<div style="font-weight:700;margin:8px 0 4px">$1</div>').replace(/^## (.+)$/gm,'<div style="font-weight:700;font-size:14px;margin:10px 0 4px">$1</div>').replace(/^# (.+)$/gm,'<div style="font-weight:700;font-size:16px;margin:12px 0 4px">$1</div>').replace(/\n/g,"<br>")}function en(){typeof hljs>"u"||document.querySelectorAll(".code-block-wrapper pre code").forEach(e=>{if(e.dataset.highlighted==="yes")return;let t=[...e.classList].find(o=>o.startsWith("language-"))?.replace("language-",""),n=e.textContent;try{t&&hljs.getLanguage(t)?e.innerHTML=hljs.highlight(n,{language:t}).value:e.innerHTML=hljs.highlightAuto(n).value,e.dataset.highlighted="yes"}catch{}})}function qn(){Xt||(Xt=!0,document.addEventListener("click",e=>{let t=e.target.closest(".code-lang-label");if(!t)return;let n=t.closest(".code-block-wrapper");if(!n)return;let o=n.querySelector("pre code");o&&navigator.clipboard.writeText(o.textContent).then(()=>{let a=t.textContent;t.textContent=r("code.copied"),t.classList.add("copied"),setTimeout(()=>{t.textContent=a,t.classList.remove("copied")},1500)}).catch(()=>{})}))}function it(e){let t=jn(e);if(!t)return`<em style="color:var(--text-dim)">${r("orchestrator.dispatching")}</em>`;let n;return Zt()?(n=marked.parse(t),n=n.replace(/<table/g,'<div class="table-wrapper"><table').replace(/<\/table>/g,"</table></div>")):n=Fn(t),n=Hn(n),n=Pn(n),requestAnimationFrame(()=>{Qt(),en()}),qn(),n}var Dn,Vt,Xt,T=v(()=>{"use strict";x();Dn=0;Vt=!1;(function e(){if(typeof hljs<"u"){en();return}setTimeout(e,200)})();(function e(){if(typeof mermaid<"u"){Zt(),Qt();return}setTimeout(e,300)})();Xt=!1});function on(){return R}function tn(e){R=(e||"").trim()||lt,localStorage.setItem(nn,R);let t=document.getElementById("appNameInput");t&&(t.value=R)}function an(){R=localStorage.getItem(nn)||lt;let e=document.getElementById("appNameInput");e&&(e.value=R),document.getElementById("appNameSave")?.addEventListener("click",()=>{let t=document.getElementById("appNameInput");t&&tn(t.value)}),document.getElementById("appNameInput")?.addEventListener("keydown",t=>{t.key==="Enter"&&(t.preventDefault(),tn(t.target.value),t.target.blur())})}var nn,lt,R,st=v(()=>{"use strict";nn="agentName",lt="CLI-JAW",R=lt});var ft={};P(ft,{addMessage:()=>I,addSystemMsg:()=>y,appendAgentText:()=>rt,finalizeAgent:()=>Ee,handleSave:()=>mt,initMsgCopy:()=>ut,loadMemory:()=>pt,loadMessages:()=>Rn,loadStats:()=>sn,scrollToBottom:()=>ct,setStatus:()=>N,switchTab:()=>dt,updateQueueBadge:()=>be});function N(e){let t=document.getElementById("statusBadge"),n=document.getElementById("btnSend");l.agentBusy=e==="running",document.getElementById("typingIndicator").classList.toggle("active",l.agentBusy),e==="running"?(t.className="status-badge status-running",t.textContent="\u23F3 running",n.textContent="\u25A0",n.title=r("btn.stop"),n.classList.add("stop-mode")):(t.className="status-badge status-idle",t.textContent="\u26A1 idle",n.textContent="\u27A4",n.title="Send",n.classList.remove("stop-mode"),be(0))}function be(e){let t=document.getElementById("queueBadge");t||(t=document.createElement("span"),t.id="queueBadge",t.style.cssText="position:absolute;top:-6px;right:-6px;background:#f80;color:#fff;border-radius:50%;font-size:11px;min-width:18px;height:18px;display:flex;align-items:center;justify-content:center;font-weight:bold",document.getElementById("btnSend").parentElement.style.position="relative",document.getElementById("btnSend").style.position="relative",document.getElementById("btnSend").appendChild(t)),t.textContent=e>0?e:"",t.style.display=e>0?"flex":"none"}function y(e,t,n){let o=document.getElementById("chatMessages"),a=document.createElement("div"),i=n?` msg-type-${n}`:"";a.className="msg msg-system"+i+(t?" "+t:""),a.textContent=e,o.appendChild(a),o.scrollTop=o.scrollHeight}function rt(e){if(!e)return;l.currentAgentDiv||(l.currentAgentDiv=I("agent",""));let t=l.currentAgentDiv.querySelector(".msg-content");t.textContent+=e,ct()}function Ee(e,t){let n=Date.now();if(!(!l.currentAgentDiv&&n-ln<500)){if(document.querySelectorAll(".msg-system.tool-activity").forEach(o=>o.remove()),e){l.currentAgentDiv||(l.currentAgentDiv=I("agent",""));let o=l.currentAgentDiv.querySelector(".msg-content");l.currentAgentDiv.dataset.rawText=e;let a="";if(t&&t.length>0){let i={};t.forEach(c=>{i[c.icon]=(i[c.icon]||0)+1});let s=Object.entries(i).map(([c,m])=>`${c}\xD7${m}`).join(" "),u=t.map(c=>`${c.icon} ${d(c.label)}`).join(`
|
|
103
|
+
`);a=`<details class="tool-summary"><summary>${s}</summary><div class="tool-log">${u}</div></details>`}o.innerHTML=a+it(e)}l.currentAgentDiv=null,ln=Date.now(),N("idle"),sn()}}function I(e,t){let n=document.getElementById("chatMessages"),o=document.createElement("div");o.className=`msg msg-${e}`,o.dataset.rawText=t;let a=it(t),i='<span class="msg-copy" title="Copy raw text"></span>';return o.innerHTML=`<div class="msg-label">${e==="user"?r("msg.you"):on()}</div><div class="msg-content">${a}</div>${i}`,n.appendChild(o),ct(),o}function ct(){let e=document.getElementById("chatMessages");e.scrollTop=e.scrollHeight}function dt(e,t){document.querySelectorAll(".tab-btn").forEach(o=>o.classList.remove("active")),document.querySelectorAll(".tab-content").forEach(o=>o.classList.remove("active"));let n={agents:"tabAgents",settings:"tabSettings",skills:"tabSkills"};document.getElementById(n[e]).classList.add("active"),t&&t.classList.add("active"),e==="settings"&&Promise.resolve().then(()=>(q(),X)).then(o=>o.loadSettings()),e==="agents"&&Promise.resolve().then(()=>(j(),U)).then(o=>o.loadEmployees()),e==="skills"&&Promise.resolve().then(()=>(le(),De)).then(o=>o.loadSkills())}function mt(){document.getElementById("tabSettings").classList.contains("active")?Promise.resolve().then(()=>(q(),X)).then(t=>t.savePerCli()):Promise.resolve().then(()=>(q(),X)).then(t=>t.updateSettings())}async function sn(){let e=await p("/api/messages");e&&(document.getElementById("statMsgs").textContent=r("stat.messages",{count:e.length}))}async function Rn(){let e=await p("/api/messages");e&&e.forEach(t=>I(t.role==="assistant"?"agent":t.role,t.content))}function ut(){document.getElementById("chatMessages").addEventListener("click",async e=>{let t=e.target.closest(".msg-copy");if(!t)return;let n=t.closest(".msg"),o=n?.dataset?.rawText||n?.querySelector(".msg-content")?.innerText||"";try{await navigator.clipboard.writeText(o),t.classList.add("copied"),setTimeout(()=>{t.classList.remove("copied")},1500)}catch{setTimeout(()=>{},1500)}})}async function pt(){try{let e=await p("/api/memory"),t=document.getElementById("memoryList");if(!t)return;if(e.length===0){t.innerHTML=`<li style="color:var(--text-dim)">${r("mem.empty")}</li>`;return}t.innerHTML=e.map(n=>`<li><span class="memory-key">${d(n.key)}</span>: ${d(n.value)}</li>`).join("")}catch{}}var ln,z=v(()=>{"use strict";S();T();st();x();E();ln=0});function gt(){l.ws=new WebSocket(`ws://${location.host}?lang=${ee()}`),l.ws.onmessage=e=>{let t=JSON.parse(e.data);if(t.type==="agent_status")t.running!==void 0?N(t.running?"running":"idle"):N(t.status),t.agentId&&t.phase&&(rn[t.agentId]={phase:t.phase,phaseLabel:t.phaseLabel||""},Promise.resolve().then(()=>(j(),U)).then(n=>n.loadEmployees()));else if(t.type==="queue_update")be(t.pending||0);else if(t.type==="worklog_created")y(`\u{1F4CB} Worklog: ${t.path}`);else if(t.type==="round_start"){let n=t.agentPhases||t.subtasks||[],o=n.map(a=>a.agent||a.name).join(", ");y(r("ws.roundStart",{round:t.round,count:n.length,names:o}))}else t.type==="round_done"?t.action==="complete"?y(r("ws.roundDone",{round:t.round})):t.action==="next"?y(r("ws.roundNext",{round:t.round})):y(r("ws.roundRetry",{round:t.round})):t.type==="agent_tool"?y(`${t.icon} ${t.label}`,"tool-activity"):t.type==="agent_output"?rt(t.text):t.type==="agent_fallback"?y(r("ws.fallback",{from:t.from,to:t.to}),"tool-activity"):t.type==="agent_done"?Ee(t.text,t.toolLog):t.type==="orchestrate_done"?Ee(t.text):t.type==="clear"?document.getElementById("chatMessages").innerHTML="":t.type==="agent_added"||t.type==="agent_updated"||t.type==="agent_deleted"?Promise.resolve().then(()=>(j(),U)).then(n=>n.loadEmployees()):t.type==="new_message"&&t.source==="telegram"&&I(t.role==="assistant"?"agent":t.role,t.content)},l.ws.onopen=()=>{console.log("[ws] connected"),Promise.resolve().then(()=>(z(),ft)).then(e=>{document.getElementById("chatMessages").innerHTML="",e.loadMessages(),e.setStatus("idle")})},l.ws.onclose=()=>{console.log("[ws] disconnected, reconnecting in 2s..."),N("idle"),setTimeout(gt,2e3)}}function jt(e){return rn[e]||null}var rn,Oe=v(()=>{"use strict";S();z();x();rn={}});Oe();z();S();z();re();x();ue();E();async function Le(){let e=document.getElementById("chatInput");if(document.getElementById("btnSend").classList.contains("stop-mode")&&!e.value.trim()&&!l.attachedFiles.length){w("/api/stop","POST");return}let n=e.value.trim();if(!n&&!l.attachedFiles.length)return;let a=n.slice(1).trim().split(/\s+/)[0]||"",i=a.includes("/")||a.includes("\\");if(n.startsWith("/")&&!l.attachedFiles.length&&!i){e.value="",ht(),k();try{let s,u;if(typeof AbortSignal?.timeout=="function")s=AbortSignal.timeout(1e4);else{let $=new AbortController;s=$.signal,u=setTimeout(()=>$.abort(),1e4)}let c=se(),m=await fetch("/api/command",{method:"POST",headers:{"Content-Type":"application/json","Accept-Language":c},body:JSON.stringify({text:n,locale:c}),signal:s});u&&clearTimeout(u);let g=await m.json().catch(()=>({}));if(g?.code==="not_command"){I("user",n),await f("/api/message","POST",{prompt:n});return}if(!m.ok&&!g?.text)throw new Error(`HTTP ${m.status}`);g?.code==="clear_screen"&&(document.getElementById("chatMessages").innerHTML=""),g?.text&&y(g.text,"",g.type)}catch(s){y(r("chat.cmd.fail",{msg:s.message}),"","error")}return}if(l.attachedFiles.length){let u=`[\u{1F4CE} ${l.attachedFiles.map(c=>c.name).join(", ")}] ${n}`;I("user",u),e.value="",ht();try{let m=(await Promise.all(l.attachedFiles.map(g=>Nn(g)))).map(g=>r("chat.file.sent",{path:g})).join(`
|
|
104
|
+
`);n&&(m+=r("chat.file.sentWithMsg",{text:n})),xe(),await f("/api/message","POST",{prompt:m})}catch(c){y(r("chat.file.uploadFail",{msg:c.message})),xe()}}else{I("user",n),e.value="",ht();let s=await fetch("/api/message",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({prompt:n})}),u=await s.json().catch(()=>({}));if(!s.ok){y(`\u274C ${u.error||r("chat.requestFail",{status:s.status})}`,"","error");return}if(u.queued){let{updateQueueBadge:c}=await Promise.resolve().then(()=>(z(),ft));c(u.pending||1)}else u.continued&&y(r("chat.continue"))}}function cn(e){e.key==="Enter"&&!e.shiftKey&&!e.isComposing&&(e.preventDefault(),Le())}async function Nn(e){let t=await fetch("/api/upload",{method:"POST",headers:{"X-Filename":encodeURIComponent(e.name)},body:e});if(!t.ok)throw new Error("upload failed");return(await t.json()).path}function yt(e){for(let t of e)l.attachedFiles.some(n=>n.name===t.name)||l.attachedFiles.push(t);vt(),document.getElementById("chatInput").focus()}function dn(e){l.attachedFiles.splice(e,1),vt()}function xe(){l.attachedFiles=[],vt(),document.getElementById("fileInput").value=""}function vt(){let e=document.getElementById("filePreview"),t=document.getElementById("filePreviewList");if(!l.attachedFiles.length){e.classList.remove("visible"),t&&(t.innerHTML="");return}e.classList.add("visible"),t&&(t.innerHTML=l.attachedFiles.map((n,o)=>{let a=(n.size/1024).toFixed(1);return`<div class="file-chip">
|
|
105
|
+
${n.type.startsWith("image/")?`<img src="${URL.createObjectURL(n)}" class="file-chip-thumb" alt="">`:""}
|
|
106
|
+
<span class="file-chip-name">\u{1F4CE} ${n.name} (${a}KB)</span>
|
|
107
|
+
<button class="file-chip-remove" data-file-idx="${o}" title="Remove">\u2715</button>
|
|
108
|
+
</div>`}).join(""))}async function mn(){w("/api/clear","POST"),document.getElementById("chatMessages").innerHTML=""}function zn(e){e.style.height="auto",e.style.height=e.scrollHeight+"px"}function un(){let e=document.getElementById("chatInput");e.addEventListener("input",()=>zn(e))}function ht(){let e=document.getElementById("chatInput");e.style.height="auto"}function pn(){let e=document.querySelector(".chat-area"),t=document.getElementById("dragOverlay"),n=0;e.addEventListener("dragenter",o=>{o.preventDefault(),n++,t.classList.add("visible")}),e.addEventListener("dragleave",o=>{o.preventDefault(),n--,n<=0&&(n=0,t.classList.remove("visible"))}),e.addEventListener("dragover",o=>o.preventDefault()),e.addEventListener("drop",o=>{o.preventDefault(),n=0,t.classList.remove("visible");let a=[...o.dataTransfer.files];a.length&&yt(a)}),document.getElementById("fileInput").addEventListener("change",o=>{let a=[...o.target.files];a.length&&yt(a),o.target.value=""}),document.addEventListener("paste",o=>{let a=o.clipboardData?.items;if(!a)return;let i=[];for(let s of a){if(s.kind!=="file")continue;let u=s.getAsFile();if(u)if(!u.name||u.name==="image.png"){let c=new Date().toISOString().replace(/[:.]/g,"-"),m=u.type.split("/")[1]||"png",g=new File([u],`pasted-${c}.${m}`,{type:u.type});i.push(g)}else i.push(u)}i.length&&(o.preventDefault(),yt(i))})}ue();le();q();j();S();x();E();T();async function fn(){let e=await p("/api/heartbeat");l.heartbeatJobs=e?.jobs||[],ke(),document.getElementById("heartbeatModal").classList.add("open")}function bt(e){e&&e.target!==e.currentTarget||document.getElementById("heartbeatModal").classList.remove("open")}function ke(){let e=document.getElementById("hbJobsList");l.heartbeatJobs.length===0?e.innerHTML=`<p style="color:var(--text-dim);font-size:12px;text-align:center">${r("hb.empty")}</p>`:e.innerHTML=l.heartbeatJobs.map((n,o)=>`
|
|
109
|
+
<div class="hb-job-card">
|
|
110
|
+
<div class="hb-job-header">
|
|
111
|
+
<input type="text" value="${d(n.name||"")}" placeholder="${r("hb.name")}"
|
|
112
|
+
data-hb-name="${o}">
|
|
113
|
+
<span style="font-size:11px;color:var(--text-dim)">every</span>
|
|
114
|
+
<input type="number" value="${n.schedule?.minutes||5}" min="1"
|
|
115
|
+
data-hb-minutes="${o}">
|
|
116
|
+
<span style="font-size:11px;color:var(--text-dim)">min</span>
|
|
117
|
+
<button class="hb-toggle ${n.enabled?"on":"off"}"
|
|
118
|
+
data-hb-toggle="${o}"></button>
|
|
119
|
+
<button class="hb-del" data-hb-remove="${o}">\u2715</button>
|
|
120
|
+
</div>
|
|
121
|
+
<textarea class="hb-prompt" rows="2" placeholder="${r("hb.prompt")}"
|
|
122
|
+
data-hb-prompt="${o}">${d(n.prompt||"")}</textarea>
|
|
123
|
+
</div>
|
|
124
|
+
`).join("");let t=l.heartbeatJobs.filter(n=>n.enabled).length;document.getElementById("hbSidebarBtn").textContent=`\u{1F493} Heartbeat (${t})`}function gn(){l.heartbeatJobs.push({id:"hb_"+Date.now(),name:"",enabled:!0,schedule:{kind:"every",minutes:5},prompt:""}),ke(),O()}function yn(e){l.heartbeatJobs.splice(e,1),ke(),O()}function hn(e){l.heartbeatJobs[e].enabled=!l.heartbeatJobs[e].enabled,ke(),O()}async function O(){await f("/api/heartbeat","PUT",{jobs:l.heartbeatJobs})}async function vn(){try{let t=((await p("/api/heartbeat"))?.jobs||[]).filter(n=>n.enabled).length;document.getElementById("hbSidebarBtn").textContent=`\u{1F493} Heartbeat (${t})`}catch{}}T();E();async function Ie(){let e=await p("/api/memory-files");e&&(document.getElementById("memOn").classList.toggle("active",e.enabled),document.getElementById("memOff").classList.toggle("active",!e.enabled),document.getElementById("memFlushEvery").value=e.flushEvery,document.getElementById("memCli").value=e.cli||"",document.getElementById("memModel").value=e.model||"",document.getElementById("memRetention").value=e.retentionDays,document.getElementById("memPath").textContent=e.path,document.getElementById("memCounter").textContent=e.counter,document.getElementById("memThreshold").textContent=e.flushEvery,Jn(e.files),document.getElementById("memorySidebarBtn").textContent=`\u{1F9E0} Memory (${e.files.length})`,document.getElementById("memoryModal").classList.add("open"))}function Et(e){e&&e.target!==e.currentTarget||document.getElementById("memoryModal").classList.remove("open")}function xt(e){document.getElementById("memTabSettings").style.display=e==="settings"?"":"none",document.getElementById("memTabFiles").style.display=e==="files"?"":"none",document.getElementById("memTabBtnSettings").classList.toggle("active",e==="settings"),document.getElementById("memTabBtnFiles").classList.toggle("active",e==="files")}async function Lt(e){document.getElementById("memOn").classList.toggle("active",e),document.getElementById("memOff").classList.toggle("active",!e),await f("/api/memory-files/settings","PUT",{enabled:e})}async function te(){await f("/api/memory-files/settings","PUT",{flushEvery:+document.getElementById("memFlushEvery").value,cli:document.getElementById("memCli").value,model:document.getElementById("memModel").value,retentionDays:+document.getElementById("memRetention").value}),document.getElementById("memThreshold").textContent=document.getElementById("memFlushEvery").value}function Jn(e){let t=document.getElementById("memFilesList");if(!e||e.length===0){t.innerHTML='<p style="color:var(--text-dim);font-size:12px;text-align:center">No memory files yet</p>';return}t.innerHTML=e.map(n=>`
|
|
125
|
+
<div style="display:flex;align-items:center;justify-content:space-between;padding:6px 8px;border:1px solid var(--border);border-radius:4px;margin-bottom:4px;cursor:pointer"
|
|
126
|
+
data-mem-view="${d(n.name)}">
|
|
127
|
+
<div>
|
|
128
|
+
<span style="font-size:12px;font-family:monospace">${d(n.name)}</span>
|
|
129
|
+
<span style="font-size:10px;color:var(--accent);margin-left:6px">${n.entries} entries</span>
|
|
130
|
+
</div>
|
|
131
|
+
<button data-mem-delete="${d(n.name)}" style="background:none;border:none;color:#f55;cursor:pointer;font-size:14px">\u{1F5D1}\uFE0F</button>
|
|
132
|
+
</div>
|
|
133
|
+
`).join("")}async function bn(e){confirm("Delete "+e+"?")&&(await f("/api/memory-files/"+e,"DELETE"),Ie())}async function En(e){let t=await p("/api/memory-files/"+e);if(!t)return;let n=document.getElementById("memFilesList");n.innerHTML=`
|
|
134
|
+
<div style="margin-bottom:8px;display:flex;justify-content:space-between;align-items:center">
|
|
135
|
+
<span style="font-size:12px;font-weight:600">${t.name}</span>
|
|
136
|
+
<button data-mem-back style="background:none;border:none;color:var(--accent);cursor:pointer;font-size:11px">\u2190 back</button>
|
|
137
|
+
</div>
|
|
138
|
+
<pre style="background:var(--bg);padding:8px;border-radius:4px;font-size:11px;white-space:pre-wrap;max-height:50vh;overflow-y:auto;color:var(--text)">${d(t.content)}</pre>
|
|
139
|
+
`}S();ie();st();var kt="sidebarState";function xn(){let e=JSON.parse(localStorage.getItem(kt)||"{}");e.left&&document.body.classList.add("left-collapsed"),e.right&&document.body.classList.add("right-collapsed"),document.getElementById("toggleLeft")?.addEventListener("click",It),document.getElementById("toggleRight")?.addEventListener("click",St),window.addEventListener("resize",()=>{if(window.innerWidth>900){document.body.classList.remove("left-expanded","right-expanded");let t=JSON.parse(localStorage.getItem(kt)||"{}");document.body.classList.toggle("left-collapsed",!!t.left),document.body.classList.toggle("right-collapsed",!!t.right)}else document.body.classList.remove("left-collapsed","right-collapsed");Se()}),window.innerWidth<=900&&document.body.classList.remove("left-collapsed","right-collapsed"),Se()}function we(){return window.innerWidth<=900}function It(){we()?document.body.classList.toggle("left-expanded"):document.body.classList.toggle("left-collapsed"),Ln(),Se()}function St(){we()?document.body.classList.toggle("right-expanded"):document.body.classList.toggle("right-collapsed"),Ln(),Se()}function Kn(){return we()?document.body.classList.contains("left-expanded"):!document.body.classList.contains("left-collapsed")}function Un(){return we()?document.body.classList.contains("right-expanded"):!document.body.classList.contains("right-collapsed")}function Se(){let e=document.getElementById("toggleLeft"),t=document.getElementById("toggleRight");e&&(e.textContent=Kn()?"\u25C0":"\u25B6"),t&&(t.textContent=Un()?"\u25B6":"\u25C0")}function Ln(){localStorage.setItem(kt,JSON.stringify({left:document.body.classList.contains("left-collapsed"),right:document.body.classList.contains("right-collapsed")}))}var kn="theme",Gn="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.11.1/styles/github-dark.min.css",Wn="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.11.1/styles/github.min.css";function In(){let e=localStorage.getItem(kn),t=window.matchMedia("(prefers-color-scheme: light)").matches?"light":"dark";Sn(e||t),document.getElementById("toggleTheme")?.addEventListener("click",Yn)}function Yn(){let t=(document.documentElement.getAttribute("data-theme")||"dark")==="dark"?"light":"dark";Sn(t),localStorage.setItem(kn,t)}function Sn(e){document.documentElement.setAttribute("data-theme",e);let t=document.getElementById("toggleTheme");t&&t.classList.toggle("is-light",e==="light");let n=document.getElementById("hljsTheme");n&&(n.href=e==="dark"?Gn:Wn)}x();window.addEventListener("unhandledrejection",e=>{console.error("[unhandled]",e.reason),e.preventDefault()});window.addEventListener("error",e=>{console.error("[error]",e.message,e.filename,e.lineno)});document.getElementById("btnSend").addEventListener("click",Le);var wt=document.getElementById("chatInput");wt.addEventListener("keydown",e=>{Ne(e)||cn(e)});var Be=0;wt.addEventListener("input",e=>{e.isComposing||(Be&&cancelAnimationFrame(Be),Be=requestAnimationFrame(()=>{me(e.target.value),Be=0}))});wt.addEventListener("cmd-execute",()=>{Le()});document.getElementById("cmdDropdown")?.addEventListener("click",ze);document.addEventListener("click",Je);document.getElementById("filePreviewClear").addEventListener("click",xe);document.getElementById("filePreviewList").addEventListener("click",e=>{let t=e.target.closest("[data-file-idx]");t&&dn(+t.dataset.fileIdx)});document.querySelector(".btn-attach").addEventListener("click",()=>{document.getElementById("fileInput").click()});document.getElementById("memorySidebarBtn").addEventListener("click",Ie);document.getElementById("btnClearChat").addEventListener("click",mn);document.getElementById("hbSidebarBtn").addEventListener("click",fn);document.getElementById("langToggle")?.addEventListener("click",async()=>{let e=ee()==="ko"?"en":"ko";await Yt(e);let t=document.getElementById("langToggle");t&&(t.textContent=`\u{1F310} ${r("lang."+e)}`),l.ws&&l.ws.close()});document.querySelector(".tab-bar").addEventListener("click",e=>{let t=e.target.closest(".tab-btn");if(!t)return;let o=[...t.parentElement.children].filter(i=>i.classList.contains("tab-btn")).indexOf(t),a=["agents","skills","settings"];a[o]&&dt(a[o],t)});document.querySelector(".sidebar-save-bar .btn-save").addEventListener("click",mt);document.getElementById("selCli").addEventListener("change",()=>fe());document.getElementById("selModel").addEventListener("change",()=>_());document.getElementById("selEffort").addEventListener("change",()=>_());document.getElementById("permSafe").addEventListener("click",()=>Y("safe"));document.getElementById("permAuto").addEventListener("click",()=>Y("auto"));document.getElementById("inpCwd").addEventListener("change",pe);document.querySelector('[data-action="addEmployee"]').addEventListener("click",$e);document.getElementById("employeesList").addEventListener("click",e=>{let t=e.target.closest("[data-emp-delete]");if(t){Me(t.dataset.empDelete);return}});document.getElementById("employeesList").addEventListener("change",e=>{let t=e.target.closest("[data-emp-name]");if(t){C(t.dataset.empName,{name:e.target.value});return}let n=e.target.closest("[data-emp-cli]");if(n){Te(n.dataset.empCli,e.target.value);return}let o=e.target.closest("[data-emp-model]");if(o){if(e.target.value==="__custom__"){let s=prompt(r("model.promptInput"));if(s?.trim()){let u=document.createElement("option");u.value=s.trim(),u.textContent=s.trim();let c=e.target.querySelector('option[value="__custom__"]');e.target.insertBefore(u,c),e.target.value=s.trim(),C(o.dataset.empModel,{model:s.trim()})}else e.target.value="default"}else C(o.dataset.empModel,{model:e.target.value});return}let a=e.target.closest("[data-emp-role]");if(a){Ae(a.dataset.empRole,e.target.value);return}let i=e.target.closest("[data-emp-custom]");if(i){C(i.dataset.empCustom,{role:e.target.value});return}});document.getElementById("skillsList").addEventListener("click",e=>{let t=e.target.closest("[data-skill-id]");t&&je(t.dataset.skillId,t.dataset.skillEnabled==="true")});document.querySelector("#tabSkills").addEventListener("click",e=>{let t=e.target.closest(".skill-filter");if(t){let n=t.dataset.filter;He(n,t)}});document.querySelector('[data-action="openPrompt"]').addEventListener("click",nt);document.getElementById("tgOff").addEventListener("click",()=>ye(!1));document.getElementById("tgOn").addEventListener("click",()=>ye(!0));document.getElementById("tgToken").addEventListener("change",ge);document.getElementById("tgChatIds").addEventListener("change",ge);document.getElementById("fallbackOrderList").addEventListener("change",tt);function Vn(){for(let e of B()){let t=e.charAt(0).toUpperCase()+e.slice(1),n=document.getElementById("model"+t);n&&n.addEventListener("change",function(){Ze(e,this)});let o=document.getElementById("customModel"+t);o&&o.addEventListener("change",function(){et(e,this)});let a=document.getElementById("effort"+t);a&&a.addEventListener("change",V)}}document.querySelector('[data-action="syncMcp"]').addEventListener("click",Xe);document.querySelector('[data-action="installMcp"]').addEventListener("click",Qe);document.querySelector('[data-action="refreshCli"]').addEventListener("click",()=>he(!0));document.getElementById("cliStatusInterval").addEventListener("change",function(){localStorage.setItem("cliStatusInterval",this.value)});document.getElementById("promptModal").addEventListener("click",e=>F(e));document.querySelector("#promptModal .modal-box").addEventListener("click",e=>e.stopPropagation());document.querySelector('[data-action="closePrompt"]').addEventListener("click",()=>F());document.querySelector('[data-action="cancelPrompt"]').addEventListener("click",()=>F());document.querySelector('[data-action="savePrompt"]').addEventListener("click",ot);document.addEventListener("keydown",e=>{e.key==="Escape"&&F()});document.getElementById("heartbeatModal").addEventListener("click",e=>bt(e));document.querySelector("#heartbeatModal .modal-box").addEventListener("click",e=>e.stopPropagation());document.querySelector('[data-action="closeHeartbeat"]').addEventListener("click",()=>bt());document.querySelector('[data-action="addHeartbeat"]').addEventListener("click",gn);document.getElementById("hbJobsList").addEventListener("click",e=>{let t=e.target.closest("[data-hb-toggle]");if(t){hn(+t.dataset.hbToggle);return}let n=e.target.closest("[data-hb-remove]");if(n){yn(+n.dataset.hbRemove);return}});document.getElementById("hbJobsList").addEventListener("change",e=>{let t=e.target.closest("[data-hb-name]");if(t){l.heartbeatJobs[+t.dataset.hbName].name=e.target.value,O();return}let n=e.target.closest("[data-hb-minutes]");if(n){l.heartbeatJobs[+n.dataset.hbMinutes].schedule={kind:"every",minutes:+e.target.value},O();return}let o=e.target.closest("[data-hb-prompt]");if(o){l.heartbeatJobs[+o.dataset.hbPrompt].prompt=e.target.value,O();return}});document.getElementById("memoryModal").addEventListener("click",e=>Et(e));document.querySelector("#memoryModal .modal-box").addEventListener("click",e=>e.stopPropagation());document.querySelector('[data-action="closeMemory"]').addEventListener("click",()=>Et());document.getElementById("memTabBtnSettings").addEventListener("click",()=>xt("settings"));document.getElementById("memTabBtnFiles").addEventListener("click",()=>xt("files"));document.getElementById("memOn").addEventListener("click",()=>Lt(!0));document.getElementById("memOff").addEventListener("click",()=>Lt(!1));document.getElementById("memFlushEvery").addEventListener("change",te);document.getElementById("memCli").addEventListener("change",te);document.getElementById("memModel").addEventListener("change",te);document.getElementById("memRetention").addEventListener("change",te);document.getElementById("memFilesList").addEventListener("click",e=>{let t=e.target.closest("[data-mem-delete]");if(t){e.stopPropagation(),bn(t.dataset.memDelete);return}let n=e.target.closest("[data-mem-view]");if(n){En(n.dataset.memView);return}if(e.target.closest("[data-mem-back]")){Ie();return}});async function Xn(){await Gt();let e=document.getElementById("langToggle");e&&(e.textContent=`\u{1F310} ${r("lang."+ee())}`),await oe(),Vn(),gt(),pn(),un(),await Re(),await Ye(),he(),pt(),Ce(),vn(),an(),xn(),In(),ut()}Xn().catch(e=>{console.error("[bootstrap]",e)});document.addEventListener("keydown",e=>{e.key==="Escape"&&document.querySelectorAll(".modal-overlay.open").forEach(t=>{t.classList.remove("open")})});document.getElementById("mobileMenuLeft")?.addEventListener("click",It);document.getElementById("mobileMenuRight")?.addEventListener("click",St);
|
|
140
|
+
//# sourceMappingURL=bundle.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../js/state.js", "../js/api.js", "../js/constants.js", "../js/features/employees.js", "../js/features/skills.js", "../js/locale.js", "../js/features/slash-commands.js", "../js/features/settings.js", "../js/features/i18n.js", "../js/render.js", "../js/features/appname.js", "../js/ui.js", "../js/ws.js", "../js/main.js", "../js/features/chat.js", "../js/features/heartbeat.js", "../js/features/memory.js", "../js/features/sidebar.js", "../js/features/theme.js"],
|
|
4
|
+
"sourcesContent": ["// \u2500\u2500 Shared State Module \u2500\u2500\n// All modules import this to access/modify shared state.\n// Object reference ensures mutations are seen across modules.\n\nexport const state = {\n ws: null,\n agentBusy: false,\n employees: [],\n allSkills: [],\n currentSkillFilter: 'all',\n currentAgentDiv: null,\n attachedFiles: [],\n heartbeatJobs: [],\n cliStatusCache: null,\n cliStatusTs: 0,\n};\n", "// \u2500\u2500 API Fetch Wrapper \u2500\u2500\n// All API calls centralized for error handling + ok/data unwrapping\n\n/**\n * @param {string} path - API path (e.g. '/api/settings')\n * @param {RequestInit} opts - fetch options\n * @returns {Promise<any|null>} - data on success, null on failure\n */\nexport async function api(path, opts = {}) {\n try {\n const res = await fetch(path, opts);\n if (!res.ok) {\n console.warn(`[api] ${opts.method || 'GET'} ${path} \u2192 ${res.status}`);\n return null;\n }\n const contentType = res.headers.get('content-type') || '';\n if (!contentType.includes('json')) return null;\n const json = await res.json();\n // Phase 9.2 dual-response compat: { ok, data } or bare response\n if (json && typeof json === 'object' && 'ok' in json && 'data' in json) {\n if (!json.ok) {\n console.warn(`[api] ${path} \u2192 ok:false`, json.error || '');\n return null;\n }\n return json.data;\n }\n return json;\n } catch (e) {\n console.warn(`[api] ${path} failed:`, e.message);\n return null;\n }\n}\n\n/**\n * POST/PUT/DELETE JSON request\n */\nexport async function apiJson(path, method, body) {\n return api(path, {\n method,\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(body),\n });\n}\n\n/**\n * fire-and-forget: ignores result\n */\nexport function apiFire(path, method = 'POST', body) {\n const opts = { method };\n if (body) {\n opts.headers = { 'Content-Type': 'application/json' };\n opts.body = JSON.stringify(body);\n }\n fetch(path, opts).catch(() => { });\n}\n", "// \u2500\u2500 Shared constants (frontend) \u2500\u2500\nimport { api } from './api.js';\n\nconst FALLBACK_CLI_REGISTRY = {\n claude: {\n label: 'Claude',\n efforts: ['low', 'medium', 'high'],\n models: ['claude-sonnet-4-6', 'claude-opus-4-6', 'claude-sonnet-4-6[1m]', 'claude-opus-4-6[1m]', 'claude-haiku-4-5-20251001'],\n },\n codex: {\n label: 'Codex',\n efforts: ['low', 'medium', 'high', 'xhigh'],\n models: ['gpt-5.3-codex', 'gpt-5.3-codex-spark', 'gpt-5.2-codex', 'gpt-5.1-codex-max', 'gpt-5.1-codex-mini'],\n },\n gemini: {\n label: 'Gemini',\n efforts: [],\n models: ['gemini-3.0-pro-preview', 'gemini-3.1-pro-preview', 'gemini-2.5-pro', 'gemini-3-flash-preview', 'gemini-2.5-flash'],\n },\n opencode: {\n label: 'OpenCode',\n efforts: ['minimal', 'low', 'high', 'max'],\n models: [\n 'anthropic/claude-opus-4-6-thinking',\n 'anthropic/claude-sonnet-4-6-thinking',\n 'anthropic/claude-sonnet-4-6',\n 'openai/gpt-5.3-codex-xhigh',\n 'openai/gpt-5.3-codex-high',\n 'opencode/big-pickle',\n 'opencode/GLM-5 Free',\n 'opencode/MiniMax M2.5 Free',\n 'opencode/Kimi K2.5 Free',\n 'opencode/GPT 5 Nano Free',\n 'opencode/Grok Code Fast 1 Free',\n ],\n },\n copilot: {\n label: 'Copilot',\n efforts: ['low', 'medium', 'high'],\n effortNote: '\u2192 ~/.copilot/config.json',\n models: [\n 'claude-sonnet-4.6',\n 'claude-opus-4.6',\n 'claude-opus-4.6-fast',\n 'claude-haiku-4.5',\n 'gpt-5.3-codex',\n 'gpt-5.2-codex',\n 'gpt-5.1-codex',\n 'gpt-4.1',\n 'gpt-5-mini',\n 'gemini-3-pro-preview',\n ],\n },\n};\n\nfunction toModelMap(registry) {\n const out = {};\n for (const [key, value] of Object.entries(registry || {})) {\n out[key] = Array.isArray(value?.models) ? [...value.models] : [];\n }\n return out;\n}\n\nfunction normalizeRegistry(input) {\n const out = {};\n for (const [key, value] of Object.entries(input || {})) {\n if (!value || typeof value !== 'object') continue;\n const normalized = {\n label: value.label || key,\n efforts: Array.isArray(value.efforts) ? [...value.efforts] : [],\n models: Array.isArray(value.models) ? [...value.models] : [],\n };\n if (typeof value.effortNote === 'string' && value.effortNote.trim()) {\n normalized.effortNote = value.effortNote;\n }\n out[key] = normalized;\n }\n return out;\n}\n\nexport let CLI_REGISTRY = normalizeRegistry(FALLBACK_CLI_REGISTRY);\nexport let CLI_KEYS = Object.keys(CLI_REGISTRY);\nexport let MODEL_MAP = toModelMap(CLI_REGISTRY);\n\nfunction applyRegistry(registry) {\n const normalized = normalizeRegistry(registry);\n if (!Object.keys(normalized).length) return false;\n CLI_REGISTRY = normalized;\n CLI_KEYS = Object.keys(normalized);\n MODEL_MAP = toModelMap(normalized);\n return true;\n}\n\nexport async function loadCliRegistry() {\n try {\n const data = await api('/api/cli-registry');\n if (!data || !applyRegistry(data)) throw new Error('invalid registry');\n } catch (e) {\n console.warn('[cli-registry] fallback:', e.message);\n applyRegistry(FALLBACK_CLI_REGISTRY);\n }\n return CLI_REGISTRY;\n}\n\nexport function getCliKeys() {\n return CLI_KEYS;\n}\n\nexport function getCliMeta(cli) {\n return CLI_REGISTRY[cli] || null;\n}\n\nexport const ROLE_PRESETS = [\n { value: 'frontend', labelKey: 'role.label.frontend', label: 'Frontend', prompt: 'UI/UX, CSS, components', skill: 'dev-frontend' },\n { value: 'backend', labelKey: 'role.label.backend', label: 'Backend', prompt: 'API, DB, server logic', skill: 'dev-backend' },\n { value: 'data', labelKey: 'role.label.data', label: 'Data', prompt: 'Data pipeline, analysis, ML', skill: 'dev-data' },\n { value: 'docs', labelKey: 'role.label.docs', label: 'Docs', prompt: 'Documentation, README, API docs', skill: 'documentation' },\n { value: 'custom', labelKey: 'role.label.custom', label: 'Custom...', prompt: '', skill: null },\n];\n", "// \u2500\u2500 Employees Feature \u2500\u2500\nimport { state } from '../state.js';\nimport { MODEL_MAP, ROLE_PRESETS, getCliKeys } from '../constants.js';\nimport { escapeHtml } from '../render.js';\nimport { getAgentPhase } from '../ws.js';\nimport { t } from './i18n.js';\nimport { api, apiJson, apiFire } from '../api.js';\n\nexport async function loadEmployees() {\n const data = await api('/api/employees');\n state.employees = data || [];\n renderEmployees();\n}\n\nexport function renderEmployees() {\n const el = document.getElementById('employeesList');\n if (state.employees.length === 0) {\n el.innerHTML = `<div style=\"color:var(--text-dim);font-size:11px;padding:4px 0\">${t('emp.addPrompt')}</div>`;\n return;\n }\n const cliKeys = getCliKeys();\n el.innerHTML = state.employees.map(a => {\n const models = MODEL_MAP[a.cli] || [];\n // Legacy role prompt \u2192 new preset migration\n const LEGACY_MAP = {\n // Legacy Korean roles (backward compat with old DB data)\n 'React/Vue \uAE30\uBC18 UI \uCEF4\uD3EC\uB10C\uD2B8 \uAC1C\uBC1C, \uC2A4\uD0C0\uC77C\uB9C1': 'frontend',\n 'API \uC11C\uBC84, DB \uC2A4\uD0A4\uB9C8, \uBE44\uC988\uB2C8\uC2A4 \uB85C\uC9C1 \uAD6C\uD604': 'backend',\n '\uD504\uB860\uD2B8\uC5D4\uB4DC\uC640 \uBC31\uC5D4\uB4DC \uBAA8\uB450 \uB2F4\uB2F9': 'frontend',\n 'CI/CD, Docker, \uC778\uD504\uB77C \uC790\uB3D9\uD654': 'backend',\n '\uD14C\uC2A4\uD2B8 \uC791\uC131, \uBC84\uADF8 \uC7AC\uD604, \uD488\uC9C8 \uAD00\uB9AC': 'custom',\n '\uB370\uC774\uD130 \uD30C\uC774\uD504\uB77C\uC778, ETL, \uBD84\uC11D \uCFFC\uB9AC': 'data',\n 'API \uBB38\uC11C\uD654, README, \uAC00\uC774\uB4DC \uC791\uC131': 'docs',\n // Previous default Korean preset prompts\n 'UI/UX \uAD6C\uD604, CSS, \uCEF4\uD3EC\uB10C\uD2B8 \uAC1C\uBC1C': 'frontend',\n 'API, DB, \uC11C\uBC84 \uB85C\uC9C1 \uAD6C\uD604': 'backend',\n '\uB370\uC774\uD130 \uD30C\uC774\uD504\uB77C\uC778, \uBD84\uC11D, ML': 'data',\n '\uBB38\uC11C\uD654, README, API docs': 'docs',\n // Phase 6.9: new English preset prompts\n 'UI/UX, CSS, components': 'frontend',\n 'API, DB, server logic': 'backend',\n 'Data pipeline, analysis, ML': 'data',\n 'Documentation, README, API docs': 'docs',\n };\n const legacyVal = LEGACY_MAP[a.role];\n const matched = legacyVal ? ROLE_PRESETS.find(r => r.value === legacyVal) : ROLE_PRESETS.find(r => r.prompt === a.role);\n const presetVal = matched ? matched.value : (a.role ? 'custom' : 'frontend');\n const isCustom = presetVal === 'custom';\n\n return `\n <div class=\"settings-group\" style=\"margin-bottom:8px;padding:8px 10px\">\n <div style=\"display:flex;align-items:center;gap:6px;margin-bottom:6px\">\n <span style=\"width:8px;height:8px;border-radius:50%;background:var(--accent);display:inline-block;flex-shrink:0\"></span>\n <input style=\"flex:1;background:none;border:none;color:var(--text);font-size:12px;font-weight:600;font-family:inherit;outline:none\"\n value=\"${escapeHtml(a.name || 'Agent')}\"\n data-emp-name=\"${a.id}\">\n <button style=\"background:none;border:none;color:var(--text-dim);cursor:pointer;font-size:12px\" data-emp-delete=\"${a.id}\" title=\"${t('emp.delete')}\">\u2715</button>\n </div>\n <div style=\"display:grid;grid-template-columns:1fr 1fr;gap:4px;margin-bottom:4px\">\n <div>\n <label>CLI</label>\n <select data-emp-cli=\"${a.id}\">\n ${cliKeys.map(c => `<option${a.cli === c ? ' selected' : ''}>${c}</option>`).join('')}\n </select>\n </div>\n <div>\n <label>Model</label>\n <select data-emp-model=\"${a.id}\">\n <option value=\"default\"${(!a.model || a.model === 'default') ? ' selected' : ''}>default</option>\n ${models.map(m => `<option${a.model === m ? ' selected' : ''}>${m}</option>`).join('')}\n </select>\n </div>\n </div>\n <div>\n <label>Role</label>\n <select data-emp-role=\"${a.id}\">\n ${ROLE_PRESETS.map(r => `<option value=\"${r.value}\"${presetVal === r.value ? ' selected' : ''}>${r.label}</option>`).join('')}\n </select>\n <textarea data-emp-custom=\"${a.id}\" style=\"display:${isCustom ? 'block' : 'none'};margin-top:4px;width:100%;height:40px;background:var(--bg);border:1px solid var(--border);color:var(--text);padding:4px 6px;border-radius:4px;font-size:10px;font-family:inherit;resize:vertical\"\n placeholder=\"${t('emp.customRole')}\">${isCustom ? escapeHtml(a.role) : ''}</textarea>\n </div>\n <div style=\"margin-top:4px;font-size:10px;display:flex;align-items:center;gap:6px\">\n <span style=\"color:${a.status === 'running' ? '#fbbf24' : 'var(--green)'}\">\u25CF ${a.status || 'idle'}</span>\n ${(() => { const ps = getAgentPhase(a.id); const p = ps?.phase || a.phase; const pl = ps?.phaseLabel || a.phaseLabel; return p ? `<span style=\"background:${({ 1: '#60a5fa', 2: '#a78bfa', 3: '#34d399', 4: '#fbbf24', 5: '#f472b6' })[p] || '#888'};color:#000;padding:1px 6px;border-radius:9px;font-size:9px\">${pl || 'P' + p}</span>` : ''; })()}\n </div>\n </div>`;\n }).join('');\n}\n\nexport async function addEmployee() {\n await apiJson('/api/employees', 'POST', {});\n}\n\nexport async function updateEmployee(id, data) {\n await apiJson(`/api/employees/${id}`, 'PUT', data);\n}\n\nexport async function deleteEmployee(id) {\n apiFire(`/api/employees/${id}`, 'DELETE');\n}\n\nexport function onEmpCliChange(id, cli) {\n const models = MODEL_MAP[cli] || [];\n const sel = document.querySelector(`[data-emp-model=\"${id}\"]`);\n sel.innerHTML = `<option value=\"default\" selected>default</option>` + models.map(m => `<option>${escapeHtml(m)}</option>`).join('') + `<option value=\"__custom__\">${t('emp.customModel')}</option>`;\n updateEmployee(id, { cli, model: 'default' });\n}\n\nexport function onEmpRoleChange(id, presetVal) {\n const preset = ROLE_PRESETS.find(r => r.value === presetVal);\n const customEl = document.querySelector(`[data-emp-custom=\"${id}\"]`);\n if (presetVal === 'custom') {\n customEl.style.display = 'block';\n customEl.focus();\n } else {\n customEl.style.display = 'none';\n customEl.value = '';\n updateEmployee(id, { role: preset?.prompt || '' });\n }\n}\n", "// \u2500\u2500 Skills Feature \u2500\u2500\nimport { state } from '../state.js';\nimport { t, fetchWithLocale } from './i18n.js';\nimport { apiJson } from '../api.js';\nimport { escapeHtml } from '../render.js';\n\nexport async function loadSkills() {\n try {\n const res = await fetchWithLocale('/api/skills');\n state.allSkills = await res.json();\n renderSkills();\n } catch (e) {\n document.getElementById('skillsList').innerHTML =\n `<div style=\"color:var(--text-dim);font-size:11px\">${t('skill.loadFail')}</div>`;\n }\n}\n\nconst KNOWN_CATS = ['productivity', 'communication', 'devtools', 'ai-media', 'utility', 'smarthome', 'automation'];\n\nexport function renderSkills() {\n const list = document.getElementById('skillsList');\n const count = document.getElementById('skillsCount');\n let filtered = state.allSkills;\n if (state.currentSkillFilter === 'installed') {\n filtered = state.allSkills.filter(s => s.enabled);\n } else if (state.currentSkillFilter === 'other') {\n filtered = state.allSkills.filter(s => !KNOWN_CATS.includes(s.category));\n } else if (state.currentSkillFilter !== 'all') {\n filtered = state.allSkills.filter(s => s.category === state.currentSkillFilter);\n }\n const enabledCount = state.allSkills.filter(s => s.enabled).length;\n count.textContent = t('skill.count', { active: enabledCount, total: state.allSkills.length });\n\n list.innerHTML = filtered.map(s => {\n const reqParts = [];\n if (s.requires?.env) reqParts.push('\uD83D\uDD11 ' + s.requires.env.join(', '));\n if (s.requires?.bins) reqParts.push('\u2699\uFE0F ' + s.requires.bins.join(', '));\n if (s.install) reqParts.push(s.install);\n return `\n <div class=\"skill-card ${s.enabled ? 'enabled' : ''}\">\n <div class=\"skill-card-header\">\n <span class=\"skill-emoji\">${escapeHtml(s.emoji || '\uD83D\uDD27')}</span>\n <span class=\"skill-name\">${escapeHtml(s.name || s.id)}</span>\n <button class=\"skill-toggle ${s.enabled ? 'on' : 'off'}\"\n data-skill-id=\"${escapeHtml(s.id)}\" data-skill-enabled=\"${s.enabled}\"></button>\n </div>\n <div class=\"skill-desc\">${escapeHtml(s.description || '')}</div>\n ${reqParts.length ? `<div class=\"skill-req\">${reqParts.join(' \u00B7 ')}</div>` : ''}\n </div>`;\n }).join('');\n}\n\nexport async function toggleSkill(id, currentlyEnabled) {\n const endpoint = currentlyEnabled ? '/api/skills/disable' : '/api/skills/enable';\n try {\n await apiJson(endpoint, 'POST', { id });\n await loadSkills();\n } catch (e) {\n console.error('toggleSkill error:', e);\n }\n}\n\nexport function filterSkills(cat, btn) {\n state.currentSkillFilter = cat;\n document.querySelectorAll('.skill-filter').forEach(b => b.classList.remove('active'));\n if (btn) btn.classList.add('active');\n renderSkills();\n}\n", "// \u2500\u2500 Web Locale Helpers \u2500\u2500\n\nconst LOCALE_KEYS = ['claw_locale', 'claw.locale'];\n\nexport function getPreferredLocale() {\n try {\n for (const key of LOCALE_KEYS) {\n const saved = localStorage.getItem(key);\n if (saved) return saved;\n }\n } catch { }\n return navigator.language || 'ko';\n}\n\nexport function syncStoredLocale(locale) {\n const value = String(locale || '').trim();\n if (!value) return;\n try {\n for (const key of LOCALE_KEYS) {\n localStorage.setItem(key, value);\n }\n } catch { }\n}\n", "// \u2500\u2500 Slash Command Dropdown \u2500\u2500\nimport { getPreferredLocale } from '../locale.js';\nimport { t } from './i18n.js';\nimport { api } from '../api.js';\n\nlet cmdList = []; // { name, desc, args, category }[]\nlet filtered = []; // currently filtered list\nlet selectedIdx = -1; // -1 = none\nlet isOpen = false;\nlet closeTimer = null;\n\n// File paths like /Users/junny/... or /tmp/foo \u2014 not commands\nfunction looksLikeFilePath(text) {\n const after = String(text || '').slice(1).trim();\n const tok = after.split(/\\s+/)[0] || '';\n return tok.includes('/') || tok.includes('\\\\');\n}\n\nconst dropdown = () => document.getElementById('cmdDropdown');\nconst input = () => document.getElementById('chatInput');\n\nfunction escapeHtml(str) {\n return String(str || '')\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"');\n}\n\nfunction filterCommands(partial) {\n const prefix = String(partial || '').toLowerCase();\n return cmdList.filter(c => (`/${c.name}`).startsWith(prefix));\n}\n\nfunction showDropdown() {\n const el = dropdown();\n const inp = input();\n if (!el || !inp) return;\n\n if (closeTimer) {\n clearTimeout(closeTimer);\n closeTimer = null;\n }\n\n el.style.display = 'block';\n requestAnimationFrame(() => el.classList.add('visible'));\n isOpen = true;\n\n inp.setAttribute('aria-expanded', 'true');\n}\n\nfunction render() {\n const el = dropdown();\n const inp = input();\n if (!el || !inp) return;\n\n if (!filtered.length) {\n if (!inp.value.startsWith('/') || looksLikeFilePath(inp.value)) { close(); return; }\n\n el.innerHTML = `\n <div class=\"cmd-item cmd-empty\" role=\"option\" aria-disabled=\"true\">\n ${t('cmd.noMatch')}\n </div>\n `;\n showDropdown();\n inp.setAttribute('aria-activedescendant', '');\n return;\n }\n\n el.innerHTML = filtered.map((cmd, i) => {\n const selected = i === selectedIdx;\n return `<div class=\"cmd-item${selected ? ' selected' : ''}\"\n role=\"option\"\n id=\"cmd-item-${i}\"\n aria-selected=\"${selected}\"\n data-index=\"${i}\">\n <span class=\"cmd-name\">/${escapeHtml(cmd.name)}</span>\n <span class=\"cmd-desc\">${escapeHtml(cmd.desc)}</span>\n ${cmd.args ? `<span class=\"cmd-args\">${escapeHtml(cmd.args)}</span>` : ''}\n </div>`;\n }).join('');\n\n showDropdown();\n inp.setAttribute('aria-activedescendant', selectedIdx >= 0 ? `cmd-item-${selectedIdx}` : '');\n\n const selected = el.querySelector('.selected');\n if (selected) selected.scrollIntoView({ block: 'nearest' });\n}\n\nfunction applySelection(execute) {\n const cmd = filtered[selectedIdx];\n const inp = input();\n if (!cmd || !inp) { close(); return; }\n\n close();\n if (cmd.args || !execute) {\n inp.value = `/${cmd.name} `;\n inp.focus();\n inp.selectionStart = inp.selectionEnd = inp.value.length;\n return;\n }\n\n inp.value = `/${cmd.name}`;\n inp.dispatchEvent(new Event('cmd-execute', { bubbles: true }));\n}\n\nexport async function loadCommands() {\n try {\n const locale = getPreferredLocale();\n const url = `/api/commands?interface=web&locale=${encodeURIComponent(locale)}`;\n const data = await api(url, { headers: { 'Accept-Language': locale } });\n cmdList = data || [];\n } catch (err) {\n console.warn('[slash-commands] loadCommands failed:', err.message);\n cmdList = [];\n }\n}\n\nexport function close() {\n const el = dropdown();\n\n if (closeTimer) {\n clearTimeout(closeTimer);\n closeTimer = null;\n }\n if (el) {\n el.classList.remove('visible');\n closeTimer = setTimeout(() => {\n if (el.classList.contains('visible')) return;\n el.style.display = 'none';\n el.innerHTML = '';\n }, 150);\n }\n\n isOpen = false;\n selectedIdx = -1;\n filtered = [];\n\n const inp = input();\n if (inp) {\n inp.setAttribute('aria-expanded', 'false');\n inp.setAttribute('aria-activedescendant', '');\n }\n}\n\nexport function update(text) {\n const raw = String(text || '');\n if (!raw.startsWith('/') || raw.includes(' ') || raw.includes('\\n') || looksLikeFilePath(raw)) {\n close();\n return;\n }\n\n filtered = filterCommands(raw);\n selectedIdx = filtered.length ? 0 : -1;\n render();\n}\n\nexport function handleKeydown(e) {\n if (!isOpen) {\n if ((e.key === 'ArrowDown' || e.key === 'ArrowUp') && !e.isComposing) {\n update(input()?.value || '');\n if (!isOpen) return false;\n selectedIdx = e.key === 'ArrowUp' ? filtered.length - 1 : 0;\n render();\n e.preventDefault();\n return true;\n }\n return false;\n }\n\n if (!filtered.length) {\n if (e.key === 'Escape') {\n e.preventDefault();\n close();\n return true;\n }\n return false;\n }\n\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n selectedIdx = Math.min(filtered.length - 1, selectedIdx + 1);\n render();\n return true;\n }\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n selectedIdx = Math.max(0, selectedIdx - 1);\n render();\n return true;\n }\n if (e.key === 'Tab') {\n e.preventDefault();\n applySelection(false);\n return true;\n }\n if (e.key === 'Enter' && !e.shiftKey && !e.isComposing) {\n e.preventDefault();\n applySelection(true);\n return true;\n }\n if (e.key === 'Escape') {\n e.preventDefault();\n close();\n return true;\n }\n return false;\n}\n\nexport function handleClick(e) {\n const item = e.target.closest('.cmd-item');\n if (!item) return;\n const idx = parseInt(item.dataset.index || '-1', 10);\n if (Number.isNaN(idx) || idx < 0) return;\n selectedIdx = Math.min(idx, filtered.length - 1);\n applySelection(true);\n}\n\nexport function handleOutsideClick(e) {\n if (!isOpen) return;\n const el = dropdown();\n const inp = input();\n if (!el || !inp) return;\n if (!el.contains(e.target) && e.target !== inp) {\n close();\n }\n}\n\nexport function isDropdownOpen() {\n return isOpen;\n}\n", "// \u2500\u2500 Settings Feature \u2500\u2500\nimport { MODEL_MAP, loadCliRegistry, getCliKeys, getCliMeta } from '../constants.js';\nimport { escapeHtml } from '../render.js';\nimport { syncStoredLocale } from '../locale.js';\nimport { t } from './i18n.js';\nimport { api, apiJson, apiFire } from '../api.js';\n\nfunction toCap(cli) {\n return cli.charAt(0).toUpperCase() + cli.slice(1);\n}\n\nfunction getModelSelect(cli) {\n return document.getElementById('model' + toCap(cli));\n}\n\nfunction getCustomModelInput(cli) {\n return document.getElementById('customModel' + toCap(cli));\n}\n\nfunction getEffortSelect(cli) {\n return document.getElementById('effort' + toCap(cli));\n}\n\nfunction setSelectOptions(selectEl, values, { includeCustom = false, includeDefault = false, selected = '' } = {}) {\n if (!selectEl) return;\n const defaultHtml = includeDefault ? '<option value=\"default\">default</option>' : '';\n const customHtml = includeCustom ? `<option value=\"__custom__\">${t('model.customOption')}</option>` : '';\n const opts = (values || []).map(v => `<option value=\"${escapeHtml(v)}\">${escapeHtml(v)}</option>`).join('');\n selectEl.innerHTML = defaultHtml + opts + customHtml;\n\n if (selected && Array.from(selectEl.options).some(o => o.value === selected)) {\n selectEl.value = selected;\n }\n}\n\nfunction appendCustomOption(selectEl, value) {\n if (!selectEl || !value) return;\n if (Array.from(selectEl.options).some(o => o.value === value)) return;\n const opt = document.createElement('option');\n opt.value = value;\n opt.textContent = value;\n const customOpt = selectEl.querySelector('option[value=\"__custom__\"]');\n if (customOpt) selectEl.insertBefore(opt, customOpt);\n else selectEl.appendChild(opt);\n}\n\nfunction syncCliOptionSelects(settings = null) {\n const cliKeys = getCliKeys();\n\n const selCli = document.getElementById('selCli');\n if (selCli) {\n const current = settings?.cli || selCli.value || cliKeys[0] || 'claude';\n selCli.innerHTML = cliKeys.map(cli => {\n const label = getCliMeta(cli)?.label || cli;\n return `<option value=\"${escapeHtml(cli)}\">${escapeHtml(label)}</option>`;\n }).join('');\n if (Array.from(selCli.options).some(o => o.value === current)) selCli.value = current;\n }\n\n const memCli = document.getElementById('memCli');\n if (memCli) {\n const current = settings?.memory?.cli || memCli.value || '';\n memCli.innerHTML = '<option value=\"\">(active CLI)</option>' +\n cliKeys.map(cli => `<option value=\"${escapeHtml(cli)}\">${escapeHtml(cli)}</option>`).join('');\n if (Array.from(memCli.options).some(o => o.value === current)) memCli.value = current;\n }\n}\n\nfunction syncPerCliModelAndEffortControls(settings = null) {\n for (const cli of getCliKeys()) {\n const modelSel = getModelSelect(cli);\n if (modelSel) {\n const selected = settings?.perCli?.[cli]?.model || modelSel.value || '';\n setSelectOptions(modelSel, MODEL_MAP[cli] || [], { includeCustom: true, selected });\n if (selected && !Array.from(modelSel.options).some(o => o.value === selected)) {\n appendCustomOption(modelSel, selected);\n modelSel.value = selected;\n }\n }\n\n const effortSel = getEffortSelect(cli);\n if (effortSel) {\n const meta = getCliMeta(cli);\n const options = [''].concat(meta?.efforts || []);\n const selected = settings?.perCli?.[cli]?.effort || effortSel.value || '';\n const unique = [...new Set(options)];\n const noneLabel = (meta?.efforts?.length === 0 && meta?.effortNote) ? meta.effortNote : '\u2014 none';\n effortSel.innerHTML = unique.map(v => {\n if (!v) return `<option value=\"\">${escapeHtml(noneLabel)}</option>`;\n return `<option value=\"${escapeHtml(v)}\">${escapeHtml(v)}</option>`;\n }).join('');\n if (meta?.effortNote) effortSel.title = meta.effortNote;\n effortSel.disabled = (meta?.efforts?.length === 0 && !!meta?.effortNote);\n if (Array.from(effortSel.options).some(o => o.value === selected)) effortSel.value = selected;\n }\n }\n}\n\nfunction syncActiveEffortOptions(cli, selected = '') {\n const selEffort = document.getElementById('selEffort');\n if (!selEffort) return;\n const meta = getCliMeta(cli);\n if (meta?.effortNote) {\n // Effort managed externally (e.g. Copilot config.json) \u2014 show hint, disable\n selEffort.innerHTML = `<option value=\"\">${escapeHtml(meta.effortNote)}</option>`;\n selEffort.title = meta.effortNote;\n selEffort.disabled = true;\n return;\n }\n const efforts = [''].concat(meta?.efforts || []);\n const unique = [...new Set(efforts)];\n selEffort.innerHTML = unique.map(v => {\n if (!v) return '<option value=\"\">\u2014 none</option>';\n return `<option value=\"${escapeHtml(v)}\">${escapeHtml(v)}</option>`;\n }).join('');\n selEffort.disabled = false;\n selEffort.title = '';\n if (Array.from(selEffort.options).some(o => o.value === selected)) selEffort.value = selected;\n}\n\nexport async function loadSettings() {\n await loadCliRegistry();\n const s = await api('/api/settings');\n if (!s) return;\n syncStoredLocale(s.locale);\n syncCliOptionSelects(s);\n syncPerCliModelAndEffortControls(s);\n\n const selCli = document.getElementById('selCli');\n if (Array.from(selCli.options).some(o => o.value === s.cli)) {\n selCli.value = s.cli;\n }\n document.getElementById('inpCwd').value = s.workingDir;\n document.getElementById('headerCli').textContent = s.cli;\n setPerm(s.permissions, false);\n\n if (s.perCli) {\n for (const [cli, cfg] of Object.entries(s.perCli)) {\n const modelEl = getModelSelect(cli);\n const effortEl = getEffortSelect(cli);\n if (modelEl && cfg.model) {\n appendCustomOption(modelEl, cfg.model);\n modelEl.value = cfg.model;\n }\n if (effortEl) effortEl.value = cfg.effort || '';\n }\n }\n\n onCliChange(false);\n const ao = s.activeOverrides?.[s.cli] || {};\n const pc = s.perCli?.[s.cli] || {};\n const activeModel = ao.model || pc.model;\n const activeEffort = ao.effort || pc.effort || '';\n if (activeModel) document.getElementById('selModel').value = activeModel;\n syncActiveEffortOptions(s.cli, activeEffort);\n\n loadTelegramSettings(s);\n loadFallbackOrder(s);\n loadMcpServers();\n}\n\nexport async function loadMcpServers() {\n try {\n const d = await api('/api/mcp');\n if (!d) return;\n const el = document.getElementById('mcpServerList');\n const names = Object.entries(d.servers || {});\n if (!names.length) { el.textContent = t('mcp.noServers'); return; }\n el.innerHTML = names.map(([n, s]) =>\n `<div style=\"padding:2px 0\">\u2022 <b>${n}</b> <span style=\"opacity:.6\">${s.command} ${(s.args || []).slice(0, 2).join(' ')}</span></div>`\n ).join('');\n } catch { }\n}\n\nexport async function syncMcpServers() {\n const resultEl = document.getElementById('mcpSyncResult');\n resultEl.style.display = 'block';\n resultEl.textContent = t('mcp.syncing');\n try {\n const d = await apiJson('/api/mcp/sync', 'POST', {});\n if (!d) { resultEl.textContent = '\u274C sync failed'; return; }\n const r = d.results || {};\n resultEl.innerHTML = Object.entries(r).map(([k, v]) =>\n `${v ? '\u2705' : '\u23ED\uFE0F'} ${k}`\n ).join(' ');\n } catch (e) { resultEl.textContent = '\u274C ' + e.message; }\n}\n\nexport async function installMcpGlobal() {\n const resultEl = document.getElementById('mcpSyncResult');\n resultEl.style.display = 'block';\n resultEl.textContent = t('mcp.installing');\n try {\n const d = await apiJson('/api/mcp/install', 'POST', {});\n if (!d) { resultEl.textContent = '\u274C install failed'; return; }\n resultEl.innerHTML = Object.entries(d.results || {}).map(([k, v]) => {\n const icon = v.status === 'installed' ? '\u2705' : v.status === 'skip' ? '\u23ED\uFE0F' : '\u274C';\n return `${icon} <b>${k}</b>: ${v.status}${v.bin ? ' \u2192 ' + v.bin : ''}`;\n }).join('<br>');\n loadMcpServers();\n } catch (e) { resultEl.textContent = '\u274C ' + e.message; }\n}\n\nexport async function updateSettings() {\n const s = {\n cli: document.getElementById('selCli').value,\n workingDir: document.getElementById('inpCwd').value,\n };\n document.getElementById('headerCli').textContent = s.cli;\n await apiJson('/api/settings', 'PUT', s);\n}\n\nexport function setPerm(p, save = true) {\n document.getElementById('permSafe').classList.toggle('active', p === 'safe');\n document.getElementById('permAuto').classList.toggle('active', p === 'auto');\n if (save) apiFire('/api/settings', 'PUT', { permissions: p });\n}\n\nexport function getModelValue(cli) {\n const sel = getModelSelect(cli);\n if (!sel) return 'default';\n if (sel.value === '__custom__') {\n const inp = getCustomModelInput(cli);\n return inp?.value?.trim() || sel.options[0]?.value || 'default';\n }\n return sel.value;\n}\n\nexport function handleModelSelect(cli, selectEl) {\n const customInput = getCustomModelInput(cli);\n if (!customInput) return;\n if (selectEl.value === '__custom__') {\n customInput.style.display = 'block';\n customInput.focus();\n } else {\n customInput.style.display = 'none';\n savePerCli();\n }\n}\n\nexport function applyCustomModel(cli, inputEl) {\n const val = inputEl.value.trim();\n if (!val) return;\n const select = getModelSelect(cli);\n if (!select) return;\n appendCustomOption(select, val);\n select.value = val;\n inputEl.style.display = 'none';\n savePerCli();\n}\n\nexport async function savePerCli() {\n const perCli = {};\n for (const cli of getCliKeys()) {\n const modelEl = getModelSelect(cli);\n if (!modelEl) continue;\n const effortEl = getEffortSelect(cli);\n perCli[cli] = {\n model: getModelValue(cli),\n effort: effortEl ? effortEl.value : '',\n };\n }\n await apiJson('/api/settings', 'PUT', { perCli });\n}\n\nexport function onCliChange(save = true) {\n const cli = document.getElementById('selCli').value;\n const models = MODEL_MAP[cli] || [];\n const modelSel = document.getElementById('selModel');\n setSelectOptions(modelSel, models, { includeCustom: true, includeDefault: true });\n document.getElementById('headerCli').textContent = cli;\n syncActiveEffortOptions(cli);\n\n const oldInput = document.getElementById('selModelCustom');\n if (oldInput) oldInput.remove();\n const inp = document.createElement('input');\n inp.type = 'text'; inp.id = 'selModelCustom';\n inp.className = 'custom-model-input';\n inp.placeholder = t('model.placeholder');\n inp.style.display = 'none';\n inp.onchange = function () {\n const val = this.value.trim();\n if (!val) return;\n appendCustomOption(modelSel, val);\n modelSel.value = val;\n this.style.display = 'none';\n saveActiveCliSettings();\n };\n modelSel.parentElement.appendChild(inp);\n modelSel.onchange = function () {\n if (this.value === '__custom__') {\n inp.style.display = 'block';\n inp.focus();\n } else {\n inp.style.display = 'none';\n saveActiveCliSettings();\n }\n };\n\n api('/api/settings').then(s => {\n if (!s) return;\n const ao = s.activeOverrides?.[cli] || {};\n const pc = s.perCli?.[cli] || {};\n const model = ao.model || pc.model;\n const effort = ao.effort || pc.effort || '';\n if (model) {\n appendCustomOption(modelSel, model);\n modelSel.value = model;\n }\n syncActiveEffortOptions(cli, effort);\n });\n\n if (save) updateSettings();\n}\n\nexport async function saveActiveCliSettings() {\n const cli = document.getElementById('selCli').value;\n const modelSel = document.getElementById('selModel');\n let model = modelSel?.value || 'default';\n if (model === '__custom__') {\n model = document.getElementById('selModelCustom')?.value?.trim() || 'default';\n }\n const effortEl = document.getElementById('selEffort');\n const overrides = {};\n overrides[cli] = { model };\n if (!effortEl?.disabled) overrides[cli].effort = effortEl?.value || '';\n await apiJson('/api/settings', 'PUT', { activeOverrides: overrides });\n}\n\n// \u2500\u2500 Telegram \u2500\u2500\nexport async function saveTelegramSettings() {\n const token = document.getElementById('tgToken').value.trim();\n const chatIdsRaw = document.getElementById('tgChatIds').value.trim();\n const allowedChatIds = chatIdsRaw\n ? chatIdsRaw.split(',').map(s => parseInt(s.trim(), 10)).filter(n => !isNaN(n))\n : [];\n await apiJson('/api/settings', 'PUT', { telegram: { token, allowedChatIds } });\n}\n\nexport async function setTelegram(enabled) {\n document.getElementById('tgOn').classList.toggle('active', enabled);\n document.getElementById('tgOff').classList.toggle('active', !enabled);\n await apiJson('/api/settings', 'PUT', { telegram: { enabled } });\n}\n\nfunction loadTelegramSettings(s) {\n if (!s.telegram) return;\n const tg = s.telegram;\n document.getElementById('tgOn').classList.toggle('active', !!tg.enabled);\n document.getElementById('tgOff').classList.toggle('active', !tg.enabled);\n if (tg.token) document.getElementById('tgToken').value = tg.token;\n if (tg.allowedChatIds?.length) {\n document.getElementById('tgChatIds').value = tg.allowedChatIds.join(', ');\n }\n}\n\n// \u2500\u2500 Fallback Order \u2500\u2500\nexport function loadFallbackOrder(s) {\n const container = document.getElementById('fallbackOrderList');\n if (!container) return;\n const allClis = Object.keys(s.perCli || {});\n const active = s.fallbackOrder || [];\n const slotCount = Math.min(allClis.length - 1, 3);\n\n let html = '';\n for (let i = 0; i < slotCount; i++) {\n const current = active[i] || '';\n const opts = allClis.map(cli =>\n `<option value=\"${cli}\" ${cli === current ? 'selected' : ''}>${cli}</option>`\n ).join('');\n html += `\n <div class=\"settings-row sub-row\">\n <label style=\"min-width:60px\">Fallback ${i + 1}</label>\n <select id=\"fallback${i}\"\n style=\"font-size:11px;padding:4px;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:4px;flex:1\">\n <option value=\"\">${t('settings.none')}</option>\n ${opts}\n </select>\n </div>`;\n }\n container.innerHTML = html;\n}\n\nexport async function saveFallbackOrder() {\n const selects = document.querySelectorAll('#fallbackOrderList select');\n const fallbackOrder = [...selects].map(s => s.value).filter(Boolean);\n await apiJson('/api/settings', 'PUT', { fallbackOrder });\n}\n\n// \u2500\u2500 CLI Status \u2500\u2500\nimport { state } from '../state.js';\n\nexport async function loadCliStatus(force = false) {\n const interval = Number(localStorage.getItem('cliStatusInterval') || 300);\n if (!force && state.cliStatusCache && interval > 0 && (Date.now() - state.cliStatusTs) < interval * 1000) {\n renderCliStatus(state.cliStatusCache);\n return;\n }\n\n const el = document.getElementById('cliStatusList');\n if (el) el.innerHTML = '<div style=\"color:var(--text-dim);font-size:11px\">Loading...</div>';\n\n const [cliStatus, quota] = await Promise.all([\n api('/api/cli-status'),\n api('/api/quota'),\n ]);\n\n state.cliStatusCache = { cliStatus, quota };\n state.cliStatusTs = Date.now();\n renderCliStatus(state.cliStatusCache);\n}\n\nfunction renderCliStatus(data) {\n const { cliStatus, quota } = data;\n const el = document.getElementById('cliStatusList');\n\n const AUTH_HINTS = {\n claude: { install: 'npm i -g @anthropic-ai/claude-code', auth: 'claude auth' },\n codex: { install: 'npm i -g @openai/codex', auth: 'codex login' },\n gemini: { install: 'npm i -g @google/gemini-cli', auth: `gemini (${t('cli.gemini.auth')})` },\n opencode: { install: 'npm i -g opencode-ai', auth: 'opencode auth' },\n copilot: { install: 'gh copilot --help', auth: '1) gh auth login \u2192 2) gh copilot --help \u2192 3) copilot login' },\n };\n\n let html = '';\n\n if (!cliStatus || typeof cliStatus !== 'object') {\n if (el) el.innerHTML = '<div style=\"color:var(--text-dim);font-size:11px\">Failed to load CLI status</div>';\n return;\n }\n\n for (const [name, info] of Object.entries(cliStatus)) {\n const q = quota[name];\n const dotClass = info.available ? 'ok' : 'missing';\n\n let accountLine = '';\n if (q?.account) {\n const parts = [];\n if (q.account.email) parts.push(q.account.email);\n if (q.account.type) parts.push(q.account.type);\n if (q.account.plan) parts.push(q.account.plan);\n if (q.account.tier) parts.push(q.account.tier);\n if (parts.length) accountLine = `<div style=\"font-size:10px;color:var(--text-dim);margin:2px 0 4px 16px\">${escapeHtml(parts.join(' \u00B7 '))}</div>`;\n }\n\n // Auth hint when CLI is not available\n let authHint = '';\n if (!info.available) {\n const hint = AUTH_HINTS[name];\n if (hint) {\n authHint = `\n <div style=\"font-size:10px;margin:4px 0 2px 16px;padding:6px 8px;background:var(--bg-dim, #1e1e2e);border-radius:4px;border-left:2px solid #fbbf24\">\n <div style=\"color:#fbbf24;margin-bottom:3px\">${t('cli.authRequired')}</div>\n <div style=\"color:var(--text-dim)\"><code style=\"font-size:10px;background:var(--border);padding:1px 4px;border-radius:2px\">${escapeHtml(hint.install)}</code></div>\n <div style=\"color:var(--text-dim);margin-top:2px\"><code style=\"font-size:10px;background:var(--border);padding:1px 4px;border-radius:2px\">${escapeHtml(hint.auth)}</code></div>\n </div>\n `;\n }\n }\n\n let windowsHtml = '';\n if (q?.windows?.length) {\n windowsHtml = q.windows.map(w => {\n const pct = Math.round(w.percent);\n const barColor = pct > 80 ? '#ef4444' : pct > 50 ? '#fbbf24' : '#38bdf8';\n return `\n <div style=\"display:flex;align-items:center;gap:6px;margin-left:16px;font-size:10px;color:var(--text-dim)\">\n <span style=\"width:42px\">${w.label}</span>\n <div style=\"flex:1;height:4px;background:var(--border);border-radius:2px;overflow:hidden\">\n <div style=\"width:${pct}%;height:100%;background:${barColor};border-radius:2px\"></div>\n </div>\n <span style=\"width:28px;text-align:right\">${pct}%</span>\n </div>\n `;\n }).join('');\n }\n\n html += `\n <div class=\"settings-group\" style=\"margin-bottom:6px;padding:8px 10px\">\n <div class=\"cli-status-row\">\n <span class=\"cli-dot ${dotClass}\"></span>\n <span class=\"cli-name\" style=\"font-weight:600\">${name}</span>\n </div>\n ${accountLine}\n ${authHint}\n ${windowsHtml}\n </div>\n `;\n }\n\n el.innerHTML = html;\n}\n\n// \u2500\u2500 Prompt Modal \u2500\u2500\nexport function openPromptModal() {\n api('/api/prompt').then(data => {\n if (!data) return;\n document.getElementById('modalPromptEditor').value = data.content || '';\n document.getElementById('promptModal').classList.add('open');\n });\n}\n\nexport function closePromptModal(e) {\n if (e && e.target !== e.currentTarget) return;\n document.getElementById('promptModal').classList.remove('open');\n}\n\nexport async function savePromptFromModal() {\n const content = document.getElementById('modalPromptEditor').value;\n await apiJson('/api/prompt', 'PUT', { content });\n document.getElementById('promptModal').classList.remove('open');\n}\n", "// \u2500\u2500 Frontend i18n module \u2500\u2500\n// Phase 7: client-side translation with lazy-loaded locale JSON\n\nlet currentLocale = 'ko';\nlet dict = {}; // current locale dictionary\nlet fallbackDict = {}; // ko fallback\n\n/**\n * Initialize i18n: restore from localStorage, detect from browser, load locale\n */\nexport async function initI18n() {\n let saved = null;\n try { saved = localStorage.getItem('claw_locale'); } catch { /* Safari private */ }\n\n if (!saved) {\n // Detect from browser language\n const browserLang = (navigator.language || 'ko').split(/[-_]/)[0].toLowerCase();\n saved = ['en', 'ko'].includes(browserLang) ? browserLang : 'ko';\n }\n\n // Always load ko as fallback\n fallbackDict = await fetchLocale('ko');\n if (saved === 'ko') {\n dict = fallbackDict;\n } else {\n dict = await fetchLocale(saved);\n }\n currentLocale = saved;\n applyI18n();\n}\n\n/**\n * Fetch a locale JSON from the server\n */\nasync function fetchLocale(lang) {\n try {\n const { api } = await import('../api.js');\n return await api(`/api/i18n/${lang}`) || {};\n } catch { return {}; }\n}\n\n/**\n * Translate a key with optional parameter interpolation\n * Falls back: dict[key] \u2192 fallbackDict[key] \u2192 key itself\n */\nexport function t(key, params = {}) {\n let val = dict[key] ?? fallbackDict[key] ?? key;\n for (const [k, v] of Object.entries(params)) {\n val = val.replaceAll(`{${k}}`, String(v));\n }\n return val;\n}\n\n/**\n * Apply translations to all elements with data-i18n attributes\n */\nexport function applyI18n() {\n document.querySelectorAll('[data-i18n]').forEach(el => {\n const key = el.getAttribute('data-i18n');\n if (key) el.textContent = t(key);\n });\n document.querySelectorAll('[data-i18n-placeholder]').forEach(el => {\n const key = el.getAttribute('data-i18n-placeholder');\n if (key) el.placeholder = t(key);\n });\n document.querySelectorAll('[data-i18n-title]').forEach(el => {\n const key = el.getAttribute('data-i18n-title');\n if (key) el.title = t(key);\n });\n document.querySelectorAll('[data-i18n-aria]').forEach(el => {\n const key = el.getAttribute('data-i18n-aria');\n if (key) el.setAttribute('aria-label', t(key));\n });\n}\n\n/**\n * Switch language, reload locale, rebind all UI\n */\nexport async function setLang(lang) {\n if (lang === currentLocale) return;\n if (lang === 'ko') {\n dict = fallbackDict;\n } else {\n dict = await fetchLocale(lang);\n }\n currentLocale = lang;\n try { localStorage.setItem('claw_locale', lang); } catch { /* Safari private */ }\n applyI18n();\n\n // Reload dynamic content that uses t()\n try {\n const { loadEmployees } = await import('./employees.js');\n loadEmployees();\n } catch { }\n try {\n const { loadSkills } = await import('./skills.js');\n loadSkills();\n } catch { }\n try {\n const { loadCommands } = await import('./slash-commands.js');\n loadCommands();\n } catch { }\n try {\n const { loadSettings } = await import('./settings.js');\n loadSettings();\n } catch { }\n}\n\n/**\n * Get current locale code\n */\nexport function getLang() {\n return currentLocale;\n}\n\n/**\n * fetchWithLocale \u2014 wrapper that appends ?locale= to requests\n */\nexport function fetchWithLocale(url, init = {}) {\n const u = new URL(url, location.origin);\n if (!u.searchParams.has('locale')) {\n u.searchParams.set('locale', currentLocale);\n }\n return fetch(u.toString(), init);\n}\n", "// \u2500\u2500 Render Helpers \u2500\u2500\n// Modular markdown rendering: marked.js + highlight.js + KaTeX + Mermaid\n// All libs loaded via CDN (defer), graceful fallback if unavailable\nimport { t } from './features/i18n.js';\n\nexport function escapeHtml(str) {\n return str.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>')\n .replace(/\"/g, '"').replace(/'/g, ''');\n}\n\n// \u2500\u2500 XSS sanitization \u2500\u2500\nexport function sanitizeHtml(html) {\n if (typeof DOMPurify !== 'undefined') {\n return DOMPurify.sanitize(html, {\n USE_PROFILES: { html: true },\n FORBID_TAGS: ['script', 'style', 'iframe', 'object', 'embed', 'form'],\n FORBID_ATTR: ['onerror', 'onclick', 'onload', 'onmouseover', 'onfocus', 'onblur'],\n ADD_TAGS: ['use'], // Mermaid SVG compatibility\n });\n }\n // CDN fallback: regex-based stripping\n return html\n .replace(/<script[\\s\\S]*?>[\\s\\S]*?<\\/script>/gi, '')\n .replace(/\\bon\\w+\\s*=/gi, 'data-removed=')\n .replace(/javascript\\s*:/gi, 'about:blank');\n}\n\n// \u2500\u2500 Orchestration JSON stripping \u2500\u2500\nfunction stripOrchestration(text) {\n let cleaned = text.replace(/```json\\n[\\s\\S]*?\\n```/g, '');\n cleaned = cleaned.replace(/\\{[\\s\\S]*\"subtasks\"\\s*:\\s*\\[[\\s\\S]*?\\]\\s*\\}/g, '').trim();\n return cleaned;\n}\n\n// \u2500\u2500 KaTeX inline/block math \u2500\u2500\nfunction renderMath(html) {\n if (typeof katex === 'undefined') return html;\n // Block math: $$...$$\n html = html.replace(/\\$\\$([\\s\\S]+?)\\$\\$/g, (_, tex) => {\n try {\n return katex.renderToString(tex.trim(), { displayMode: true, throwOnError: false });\n } catch { return `<code>${escapeHtml(tex)}</code>`; }\n });\n // Inline math: $...$ (avoid matching currency like $10)\n html = html.replace(/(?<!\\$)\\$(?!\\$)([^\\n$]+?)\\$(?!\\$)/g, (_, tex) => {\n try {\n return katex.renderToString(tex.trim(), { displayMode: false, throwOnError: false });\n } catch { return `<code>${escapeHtml(tex)}</code>`; }\n });\n return html;\n}\n\n// \u2500\u2500 Mermaid deferred rendering \u2500\u2500\n// NOTE: No DOMPurify on mermaid SVG \u2014 mermaid.render() with securityLevel:'loose'\n// handles its own sanitization. DOMPurify strips foreignObject/style tags needed for text.\nlet mermaidId = 0;\n\nfunction renderMermaidBlocks() {\n if (typeof mermaid === 'undefined') return;\n document.querySelectorAll('.mermaid-pending').forEach(async (el) => {\n el.classList.remove('mermaid-pending');\n const code = el.textContent;\n const id = `mermaid-${++mermaidId}`;\n try {\n const { svg } = await mermaid.render(id, code);\n el.innerHTML = svg;\n el.classList.add('mermaid-rendered');\n // Store raw SVG for overlay (before zoom button is appended)\n const rawSvg = el.innerHTML;\n // Add zoom button\n const zoomBtn = document.createElement('button');\n zoomBtn.className = 'mermaid-zoom-btn';\n zoomBtn.textContent = '\u26F6';\n zoomBtn.title = 'Expand diagram';\n zoomBtn.addEventListener('click', () => openMermaidOverlay(rawSvg));\n el.appendChild(zoomBtn);\n } catch (err) {\n const errMsg = err?.message || err?.str || 'Unknown error';\n el.innerHTML = `\n <div style=\"border:1px solid #ef4444;border-radius:6px;padding:8px;margin:4px 0\">\n <div style=\"color:#ef4444;font-size:11px;margin-bottom:4px\">\u26A0\uFE0F Mermaid \uB80C\uB354\uB9C1 \uC2E4\uD328</div>\n <div style=\"color:#fbbf24;font-size:10px;margin-bottom:6px\">${escapeHtml(errMsg.slice(0, 200))}</div>\n <pre style=\"margin:0;font-size:11px;overflow-x:auto\"><code>${escapeHtml(code)}</code></pre>\n </div>`;\n }\n });\n}\n// \u2500\u2500 Mermaid popup overlay \u2500\u2500\nfunction openMermaidOverlay(svgHtml) {\n // Remove existing overlay if any\n document.getElementById('mermaidOverlay')?.remove();\n\n const overlay = document.createElement('div');\n overlay.id = 'mermaidOverlay';\n overlay.className = 'mermaid-overlay';\n overlay.innerHTML = `\n <div class=\"mermaid-overlay-backdrop\"></div>\n <div class=\"mermaid-overlay-content\">\n <button class=\"mermaid-overlay-close\">\u2715</button>\n <div class=\"mermaid-overlay-svg\">${svgHtml}</div>\n </div>`;\n document.body.appendChild(overlay);\n\n // Make SVG fill the popup\n const svgEl = overlay.querySelector('svg');\n if (svgEl) {\n svgEl.removeAttribute('width');\n svgEl.removeAttribute('height');\n svgEl.style.width = '100%';\n svgEl.style.height = 'auto';\n svgEl.style.maxHeight = '85vh';\n }\n\n const close = () => overlay.remove();\n overlay.querySelector('.mermaid-overlay-backdrop').addEventListener('click', close);\n overlay.querySelector('.mermaid-overlay-close').addEventListener('click', (e) => {\n e.stopPropagation();\n e.preventDefault();\n close();\n });\n document.addEventListener('keydown', function handler(e) {\n if (e.key === 'Escape') { close(); document.removeEventListener('keydown', handler); }\n });\n}\n\n// \u2500\u2500 marked.js configuration \u2500\u2500\nlet markedReady = false;\n\nfunction ensureMarked() {\n if (markedReady) return true;\n if (typeof marked === 'undefined') return false;\n\n const renderer = new marked.Renderer();\n\n // Code blocks: highlight.js + mermaid detection\n renderer.code = function ({ text, lang }) {\n // Mermaid\n if (lang === 'mermaid') {\n return `<div class=\"mermaid-container mermaid-pending\">${escapeHtml(text)}</div>`;\n }\n // Highlight.js\n let highlighted = escapeHtml(text);\n if (typeof hljs !== 'undefined' && lang && hljs.getLanguage(lang)) {\n try {\n highlighted = hljs.highlight(text, { language: lang }).value;\n } catch { /* fallback to escaped */ }\n } else if (typeof hljs !== 'undefined') {\n try {\n highlighted = hljs.highlightAuto(text).value;\n } catch { /* fallback */ }\n }\n const labelText = lang ? escapeHtml(lang) : t('code.copy');\n const label = `<span class=\"code-lang-label\" data-lang=\"${lang ? escapeHtml(lang) : ''}\">${labelText}</span>`;\n return `<div class=\"code-block-wrapper\">${label}<pre><code class=\"hljs${lang ? ` language-${escapeHtml(lang)}` : ''}\">${highlighted}</code></pre></div>`;\n };\n\n marked.setOptions({\n renderer,\n gfm: true,\n breaks: true,\n });\n\n // Init mermaid\n if (typeof window.mermaid !== 'undefined') {\n window.mermaid.initialize({\n startOnLoad: false,\n theme: 'base',\n securityLevel: 'loose',\n themeVariables: {\n darkMode: true,\n background: '#0f172a',\n primaryColor: '#1e3a5f',\n primaryTextColor: '#e2e8f0',\n primaryBorderColor: '#38bdf8',\n lineColor: '#94a3b8',\n secondaryColor: '#1e293b',\n tertiaryColor: '#0f172a',\n textColor: '#e2e8f0',\n mainBkg: '#1e293b',\n nodeBorder: '#38bdf8',\n clusterBkg: '#1e293b',\n titleColor: '#e2e8f0',\n edgeLabelBackground: '#1e293b',\n nodeTextColor: '#e2e8f0',\n },\n });\n }\n\n markedReady = true;\n return true;\n}\n\n// \u2500\u2500 Fallback regex renderer (CDN \uC2E4\uD328 \uC2DC) \u2500\u2500\nfunction renderFallback(text) {\n return escapeHtml(text)\n .replace(/`{3,}(\\w*)\\n([\\s\\S]*?)`{3,}/g, '<pre><code>$2</code></pre>')\n .replace(/`([^`]+)`/g, '<code>$1</code>')\n .replace(/\\*\\*(.+?)\\*\\*/g, '<strong>$1</strong>')\n .replace(/^### (.+)$/gm, '<div style=\"font-weight:700;margin:8px 0 4px\">$1</div>')\n .replace(/^## (.+)$/gm, '<div style=\"font-weight:700;font-size:14px;margin:10px 0 4px\">$1</div>')\n .replace(/^# (.+)$/gm, '<div style=\"font-weight:700;font-size:16px;margin:12px 0 4px\">$1</div>')\n .replace(/\\n/g, '<br>');\n}\n\n// \u2500\u2500 Rehighlight all code blocks (call after hljs loads) \u2500\u2500\nexport function rehighlightAll() {\n if (typeof hljs === 'undefined') return;\n document.querySelectorAll('.code-block-wrapper pre code').forEach(el => {\n if (el.dataset.highlighted === 'yes') return;\n const lang = [...el.classList].find(c => c.startsWith('language-'))?.replace('language-', '');\n const raw = el.textContent;\n try {\n if (lang && hljs.getLanguage(lang)) {\n el.innerHTML = hljs.highlight(raw, { language: lang }).value;\n } else {\n el.innerHTML = hljs.highlightAuto(raw).value;\n }\n el.dataset.highlighted = 'yes';\n } catch { /* ignore */ }\n });\n}\n\n// Poll for hljs load and auto-rehighlight\n(function waitForHljs() {\n if (typeof hljs !== 'undefined') { rehighlightAll(); return; }\n setTimeout(waitForHljs, 200);\n})();\n\n// Poll for mermaid load and render pending blocks\n(function waitForMermaid() {\n if (typeof mermaid !== 'undefined') {\n ensureMarked(); // ensure mermaid.initialize() runs\n renderMermaidBlocks();\n return;\n }\n setTimeout(waitForMermaid, 300);\n})();\n\n// \u2500\u2500 Copy button event delegation (one-time setup) \u2500\u2500\nlet copyDelegationReady = false;\n\nfunction ensureCopyDelegation() {\n if (copyDelegationReady) return;\n copyDelegationReady = true;\n document.addEventListener('click', (e) => {\n const label = e.target.closest('.code-lang-label');\n if (!label) return;\n const wrapper = label.closest('.code-block-wrapper');\n if (!wrapper) return;\n const codeEl = wrapper.querySelector('pre code');\n if (!codeEl) return;\n navigator.clipboard.writeText(codeEl.textContent).then(() => {\n const orig = label.textContent;\n label.textContent = t('code.copied');\n label.classList.add('copied');\n setTimeout(() => {\n label.textContent = orig;\n label.classList.remove('copied');\n }, 1500);\n }).catch(() => { /* clipboard API fail silently */ });\n });\n}\n\n// \u2500\u2500 Main export \u2500\u2500\nexport function renderMarkdown(text) {\n const cleaned = stripOrchestration(text);\n if (!cleaned) return `<em style=\"color:var(--text-dim)\">${t('orchestrator.dispatching')}</em>`;\n\n let html;\n if (ensureMarked()) {\n html = marked.parse(cleaned);\n // Wrap tables for horizontal scrolling\n html = html.replace(/<table/g, '<div class=\"table-wrapper\"><table').replace(/<\\/table>/g, '</table></div>');\n } else {\n html = renderFallback(cleaned);\n }\n\n // KaTeX math\n html = renderMath(html);\n\n // XSS sanitization\n html = sanitizeHtml(html);\n\n // Schedule mermaid rendering (needs DOM)\n requestAnimationFrame(() => {\n renderMermaidBlocks();\n rehighlightAll();\n });\n\n // Ensure copy delegation is set up\n ensureCopyDelegation();\n\n return html;\n}\n", "// \u2500\u2500 Agent Name Customization \u2500\u2500\n// localStorage-based agent display name (message label only)\n// Logo, header, title remain \"CLI-JAW\" (immutable)\n\nconst STORAGE_KEY = 'agentName';\nconst DEFAULT_NAME = 'CLI-JAW';\n\nlet currentName = DEFAULT_NAME;\n\nexport function getAppName() {\n return currentName;\n}\n\nexport function setAppName(name) {\n currentName = (name || '').trim() || DEFAULT_NAME;\n localStorage.setItem(STORAGE_KEY, currentName);\n // Update input field\n const input = document.getElementById('appNameInput');\n if (input) input.value = currentName;\n}\n\nexport function initAppName() {\n currentName = localStorage.getItem(STORAGE_KEY) || DEFAULT_NAME;\n\n // Sync input\n const input = document.getElementById('appNameInput');\n if (input) input.value = currentName;\n\n // Save button\n document.getElementById('appNameSave')?.addEventListener('click', () => {\n const inp = document.getElementById('appNameInput');\n if (inp) setAppName(inp.value);\n });\n\n // Enter key\n document.getElementById('appNameInput')?.addEventListener('keydown', (e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n setAppName(e.target.value);\n e.target.blur();\n }\n });\n}\n", "// \u2500\u2500 UI Utilities \u2500\u2500\nimport { state } from './state.js';\nimport { renderMarkdown, escapeHtml } from './render.js';\nimport { getAppName } from './features/appname.js';\nimport { t } from './features/i18n.js';\nimport { api } from './api.js';\n\nexport function setStatus(s) {\n const badge = document.getElementById('statusBadge');\n const btn = document.getElementById('btnSend');\n state.agentBusy = s === 'running';\n document.getElementById('typingIndicator').classList.toggle('active', state.agentBusy);\n if (s === 'running') {\n badge.className = 'status-badge status-running';\n badge.textContent = '\u23F3 running';\n btn.textContent = '\u25A0';\n btn.title = t('btn.stop');\n btn.classList.add('stop-mode');\n } else {\n badge.className = 'status-badge status-idle';\n badge.textContent = '\u26A1 idle';\n btn.textContent = '\u27A4';\n btn.title = 'Send';\n btn.classList.remove('stop-mode');\n updateQueueBadge(0);\n }\n}\n\nexport function updateQueueBadge(count) {\n let el = document.getElementById('queueBadge');\n if (!el) {\n el = document.createElement('span');\n el.id = 'queueBadge';\n el.style.cssText = 'position:absolute;top:-6px;right:-6px;background:#f80;color:#fff;border-radius:50%;font-size:11px;min-width:18px;height:18px;display:flex;align-items:center;justify-content:center;font-weight:bold';\n document.getElementById('btnSend').parentElement.style.position = 'relative';\n document.getElementById('btnSend').style.position = 'relative';\n document.getElementById('btnSend').appendChild(el);\n }\n el.textContent = count > 0 ? count : '';\n el.style.display = count > 0 ? 'flex' : 'none';\n}\n\nexport function addSystemMsg(text, extraClass, type) {\n const container = document.getElementById('chatMessages');\n const div = document.createElement('div');\n const typeClass = type ? ` msg-type-${type}` : '';\n div.className = 'msg msg-system' + typeClass + (extraClass ? ' ' + extraClass : '');\n div.textContent = text;\n container.appendChild(div);\n container.scrollTop = container.scrollHeight;\n}\n\nexport function appendAgentText(text) {\n if (!text) return;\n if (!state.currentAgentDiv) {\n state.currentAgentDiv = addMessage('agent', '');\n }\n const content = state.currentAgentDiv.querySelector('.msg-content');\n content.textContent += text;\n scrollToBottom();\n}\n\nlet lastFinalizeTs = 0;\n\nexport function finalizeAgent(text, toolLog) {\n // Guard: prevent double-render when both agent_done + orchestrate_done fire\n const now = Date.now();\n if (!state.currentAgentDiv && now - lastFinalizeTs < 500) return;\n\n document.querySelectorAll('.msg-system.tool-activity').forEach(el => el.remove());\n if (text) {\n if (!state.currentAgentDiv) {\n state.currentAgentDiv = addMessage('agent', '');\n }\n const content = state.currentAgentDiv.querySelector('.msg-content');\n state.currentAgentDiv.dataset.rawText = text;\n let toolHtml = '';\n if (toolLog && toolLog.length > 0) {\n const counts = {};\n toolLog.forEach(t => { counts[t.icon] = (counts[t.icon] || 0) + 1; });\n const summaryParts = Object.entries(counts).map(([icon, n]) => `${icon}\u00D7${n}`).join(' ');\n const logLines = toolLog.map(t => `${t.icon} ${escapeHtml(t.label)}`).join('\\n');\n toolHtml = `<details class=\"tool-summary\"><summary>${summaryParts}</summary><div class=\"tool-log\">${logLines}</div></details>`;\n }\n content.innerHTML = toolHtml + renderMarkdown(text);\n }\n state.currentAgentDiv = null;\n lastFinalizeTs = Date.now();\n setStatus('idle');\n loadStats();\n}\n\nexport function addMessage(role, text) {\n const container = document.getElementById('chatMessages');\n const div = document.createElement('div');\n div.className = `msg msg-${role}`;\n div.dataset.rawText = text;\n const rendered = renderMarkdown(text);\n const copyBtn = '<span class=\"msg-copy\" title=\"Copy raw text\"></span>';\n div.innerHTML = `<div class=\"msg-label\">${role === 'user' ? t('msg.you') : getAppName()}</div><div class=\"msg-content\">${rendered}</div>${copyBtn}`;\n container.appendChild(div);\n scrollToBottom();\n return div;\n}\n\nexport function scrollToBottom() {\n const c = document.getElementById('chatMessages');\n c.scrollTop = c.scrollHeight;\n}\n\nexport function switchTab(name, targetBtn) {\n document.querySelectorAll('.tab-btn').forEach(b => b.classList.remove('active'));\n document.querySelectorAll('.tab-content').forEach(c => c.classList.remove('active'));\n const tabMap = { agents: 'tabAgents', settings: 'tabSettings', skills: 'tabSkills' };\n document.getElementById(tabMap[name]).classList.add('active');\n if (targetBtn) targetBtn.classList.add('active');\n // Lazy-load tab content\n if (name === 'settings') { import('./features/settings.js').then(m => m.loadSettings()); }\n if (name === 'agents') { import('./features/employees.js').then(m => m.loadEmployees()); }\n if (name === 'skills') { import('./features/skills.js').then(m => m.loadSkills()); }\n}\n\nexport function handleSave() {\n const isSettings = document.getElementById('tabSettings').classList.contains('active');\n if (isSettings) {\n import('./features/settings.js').then(m => m.savePerCli());\n } else {\n import('./features/settings.js').then(m => m.updateSettings());\n }\n}\n\nexport async function loadStats() {\n const msgs = await api('/api/messages');\n if (!msgs) return;\n document.getElementById('statMsgs').textContent = t('stat.messages', { count: msgs.length });\n}\n\nexport async function loadMessages() {\n const msgs = await api('/api/messages');\n if (!msgs) return;\n msgs.forEach(m => addMessage(m.role === 'assistant' ? 'agent' : m.role, m.content));\n}\n\n// \u2500\u2500 Copy button delegation \u2500\u2500\nexport function initMsgCopy() {\n document.getElementById('chatMessages').addEventListener('click', async (e) => {\n const btn = e.target.closest('.msg-copy');\n if (!btn) return;\n const msg = btn.closest('.msg');\n const raw = msg?.dataset?.rawText || msg?.querySelector('.msg-content')?.innerText || '';\n try {\n await navigator.clipboard.writeText(raw);\n btn.classList.add('copied');\n setTimeout(() => { btn.classList.remove('copied'); }, 1500);\n } catch { setTimeout(() => { }, 1500); }\n });\n}\n\nexport async function loadMemory() {\n try {\n const items = await api('/api/memory');\n const list = document.getElementById('memoryList');\n if (!list) return;\n if (items.length === 0) {\n list.innerHTML = `<li style=\"color:var(--text-dim)\">${t('mem.empty')}</li>`;\n return;\n }\n list.innerHTML = items.map(m =>\n `<li><span class=\"memory-key\">${escapeHtml(m.key)}</span>: ${escapeHtml(m.value)}</li>`\n ).join('');\n } catch { }\n}\n", "// \u2500\u2500 WebSocket Connection \u2500\u2500\nimport { state } from './state.js';\nimport { setStatus, updateQueueBadge, addSystemMsg, appendAgentText, finalizeAgent, addMessage } from './ui.js';\nimport { t, getLang } from './features/i18n.js';\n\n// Agent phase state (populated by agent_status events from orchestrator)\nconst agentPhaseState = {};\n\nexport function connect() {\n state.ws = new WebSocket(`ws://${location.host}?lang=${getLang()}`);\n state.ws.onmessage = (e) => {\n const msg = JSON.parse(e.data);\n if (msg.type === 'agent_status') {\n if (msg.running !== undefined) {\n setStatus(msg.running ? 'running' : 'idle');\n } else {\n setStatus(msg.status);\n }\n // Track per-agent phase for badge rendering\n if (msg.agentId && msg.phase) {\n agentPhaseState[msg.agentId] = { phase: msg.phase, phaseLabel: msg.phaseLabel || '' };\n import('./features/employees.js').then(m => m.loadEmployees());\n }\n } else if (msg.type === 'queue_update') {\n updateQueueBadge(msg.pending || 0);\n } else if (msg.type === 'worklog_created') {\n addSystemMsg(`\uD83D\uDCCB Worklog: ${msg.path}`);\n } else if (msg.type === 'round_start') {\n const agents = (msg.agentPhases || msg.subtasks || []);\n const names = agents.map(a => a.agent || a.name).join(', ');\n addSystemMsg(t('ws.roundStart', { round: msg.round, count: agents.length, names }));\n } else if (msg.type === 'round_done') {\n if (msg.action === 'complete') {\n addSystemMsg(t('ws.roundDone', { round: msg.round }));\n } else if (msg.action === 'next') {\n addSystemMsg(t('ws.roundNext', { round: msg.round }));\n } else {\n addSystemMsg(t('ws.roundRetry', { round: msg.round }));\n }\n } else if (msg.type === 'agent_tool') {\n addSystemMsg(`${msg.icon} ${msg.label}`, 'tool-activity');\n } else if (msg.type === 'agent_output') {\n appendAgentText(msg.text);\n } else if (msg.type === 'agent_fallback') {\n addSystemMsg(t('ws.fallback', { from: msg.from, to: msg.to }), 'tool-activity');\n } else if (msg.type === 'agent_done') {\n finalizeAgent(msg.text, msg.toolLog);\n } else if (msg.type === 'orchestrate_done') {\n finalizeAgent(msg.text);\n } else if (msg.type === 'clear') {\n document.getElementById('chatMessages').innerHTML = '';\n } else if (msg.type === 'agent_added' || msg.type === 'agent_updated' || msg.type === 'agent_deleted') {\n import('./features/employees.js').then(m => m.loadEmployees());\n } else if (msg.type === 'new_message' && msg.source === 'telegram') {\n addMessage(msg.role === 'assistant' ? 'agent' : msg.role, msg.content);\n }\n };\n state.ws.onopen = () => {\n console.log('[ws] connected');\n // Restore state: reload messages to stay in sync after reconnect\n import('./ui.js').then(m => {\n document.getElementById('chatMessages').innerHTML = '';\n m.loadMessages();\n m.setStatus('idle');\n });\n };\n state.ws.onclose = () => {\n console.log('[ws] disconnected, reconnecting in 2s...');\n setStatus('idle');\n setTimeout(connect, 2000);\n };\n}\n\nexport function getAgentPhase(agentId) {\n return agentPhaseState[agentId] || null;\n}\n", "// \u2500\u2500 App Entry Point \u2500\u2500\n// All event bindings happen here (no inline onclick in HTML)\n\n// \u2500\u2500 Global Error Boundary \u2500\u2500\nwindow.addEventListener('unhandledrejection', (e) => {\n console.error('[unhandled]', e.reason);\n e.preventDefault();\n});\nwindow.addEventListener('error', (e) => {\n console.error('[error]', e.message, e.filename, e.lineno);\n});\n\nimport { connect } from './ws.js';\nimport { switchTab, handleSave, loadStats, loadMessages, loadMemory, initMsgCopy } from './ui.js';\nimport { sendMessage, handleKey, clearAttachedFiles, removeAttachedFile, clearChat, initDragDrop, initAutoResize } from './features/chat.js';\nimport {\n loadCommands, update as updateSlashDropdown, handleKeydown as handleSlashKeydown,\n handleClick as handleSlashClick, handleOutsideClick as handleSlashOutsideClick,\n} from './features/slash-commands.js';\nimport { loadSkills, toggleSkill, filterSkills } from './features/skills.js';\nimport {\n loadSettings, setPerm, handleModelSelect, applyCustomModel, onCliChange,\n saveActiveCliSettings, savePerCli, updateSettings, openPromptModal,\n closePromptModal, savePromptFromModal, syncMcpServers, installMcpGlobal,\n loadCliStatus, setTelegram, saveTelegramSettings, saveFallbackOrder\n} from './features/settings.js';\nimport {\n loadEmployees, addEmployee, deleteEmployee, updateEmployee,\n onEmpCliChange, onEmpRoleChange\n} from './features/employees.js';\nimport {\n openHeartbeatModal, closeHeartbeatModal, addHeartbeatJob,\n removeHeartbeatJob, toggleHeartbeatJob, saveHeartbeatJobs,\n initHeartbeatBadge\n} from './features/heartbeat.js';\nimport {\n openMemoryModal, closeMemoryModal, switchMemTab, setMemEnabled,\n saveMemSettings, deleteMemFile, viewMemFile\n} from './features/memory.js';\nimport { state } from './state.js';\nimport { loadCliRegistry, getCliKeys } from './constants.js';\nimport { initAppName } from './features/appname.js';\nimport { initSidebar, toggleLeft, toggleRight } from './features/sidebar.js';\nimport { initTheme } from './features/theme.js';\nimport { initI18n, setLang, getLang, t } from './features/i18n.js';\n\n// \u2500\u2500 Chat Actions \u2500\u2500\ndocument.getElementById('btnSend').addEventListener('click', sendMessage);\nconst chatInput = document.getElementById('chatInput');\nchatInput.addEventListener('keydown', (e) => {\n if (handleSlashKeydown(e)) return;\n handleKey(e);\n});\nlet slashInputRaf = 0;\nchatInput.addEventListener('input', (e) => {\n if (e.isComposing) return;\n if (slashInputRaf) cancelAnimationFrame(slashInputRaf);\n slashInputRaf = requestAnimationFrame(() => {\n updateSlashDropdown(e.target.value);\n slashInputRaf = 0;\n });\n});\nchatInput.addEventListener('cmd-execute', () => {\n void sendMessage();\n});\ndocument.getElementById('cmdDropdown')?.addEventListener('click', handleSlashClick);\ndocument.addEventListener('click', handleSlashOutsideClick);\ndocument.getElementById('filePreviewClear').addEventListener('click', clearAttachedFiles);\ndocument.getElementById('filePreviewList').addEventListener('click', (e) => {\n const btn = e.target.closest('[data-file-idx]');\n if (btn) removeAttachedFile(+btn.dataset.fileIdx);\n});\ndocument.querySelector('.btn-attach').addEventListener('click', () => {\n document.getElementById('fileInput').click();\n});\n\n// \u2500\u2500 Left Sidebar \u2500\u2500\ndocument.getElementById('memorySidebarBtn').addEventListener('click', openMemoryModal);\ndocument.getElementById('btnClearChat').addEventListener('click', clearChat);\ndocument.getElementById('hbSidebarBtn').addEventListener('click', openHeartbeatModal);\n\n// Language toggle\ndocument.getElementById('langToggle')?.addEventListener('click', async () => {\n const next = getLang() === 'ko' ? 'en' : 'ko';\n await setLang(next);\n const btn = document.getElementById('langToggle');\n if (btn) btn.textContent = `\uD83C\uDF10 ${t('lang.' + next)}`;\n // Reconnect WS with new locale\n if (state.ws) { state.ws.close(); }\n});\n\n// \u2500\u2500 Tab Bar (event delegation) \u2500\u2500\ndocument.querySelector('.tab-bar').addEventListener('click', (e) => {\n const btn = e.target.closest('.tab-btn');\n if (!btn) return;\n const tabs = [...btn.parentElement.children].filter(c => c.classList.contains('tab-btn'));\n const idx = tabs.indexOf(btn);\n const names = ['agents', 'skills', 'settings'];\n if (names[idx]) switchTab(names[idx], btn);\n});\n\n// \u2500\u2500 Save Button \u2500\u2500\ndocument.querySelector('.sidebar-save-bar .btn-save').addEventListener('click', handleSave);\n\n// \u2500\u2500 Agents Tab \u2500\u2500\ndocument.getElementById('selCli').addEventListener('change', () => onCliChange());\ndocument.getElementById('selModel').addEventListener('change', () => saveActiveCliSettings());\ndocument.getElementById('selEffort').addEventListener('change', () => saveActiveCliSettings());\ndocument.getElementById('permSafe').addEventListener('click', () => setPerm('safe'));\ndocument.getElementById('permAuto').addEventListener('click', () => setPerm('auto'));\ndocument.getElementById('inpCwd').addEventListener('change', updateSettings);\ndocument.querySelector('[data-action=\"addEmployee\"]').addEventListener('click', addEmployee);\n\n// \u2500\u2500 Employees (Event Delegation) \u2500\u2500\ndocument.getElementById('employeesList').addEventListener('click', (e) => {\n const del = e.target.closest('[data-emp-delete]');\n if (del) { deleteEmployee(del.dataset.empDelete); return; }\n});\ndocument.getElementById('employeesList').addEventListener('change', (e) => {\n const name = e.target.closest('[data-emp-name]');\n if (name) { updateEmployee(name.dataset.empName, { name: e.target.value }); return; }\n const cli = e.target.closest('[data-emp-cli]');\n if (cli) { onEmpCliChange(cli.dataset.empCli, e.target.value); return; }\n const model = e.target.closest('[data-emp-model]');\n if (model) {\n if (e.target.value === '__custom__') {\n const val = prompt(t('model.promptInput'));\n if (val?.trim()) {\n const opt = document.createElement('option');\n opt.value = val.trim(); opt.textContent = val.trim();\n const customOpt = e.target.querySelector('option[value=\"__custom__\"]');\n e.target.insertBefore(opt, customOpt);\n e.target.value = val.trim();\n updateEmployee(model.dataset.empModel, { model: val.trim() });\n } else { e.target.value = 'default'; }\n } else { updateEmployee(model.dataset.empModel, { model: e.target.value }); }\n return;\n }\n const role = e.target.closest('[data-emp-role]');\n if (role) { onEmpRoleChange(role.dataset.empRole, e.target.value); return; }\n const custom = e.target.closest('[data-emp-custom]');\n if (custom) { updateEmployee(custom.dataset.empCustom, { role: e.target.value }); return; }\n});\n\n// \u2500\u2500 Skills Tab (Event Delegation) \u2500\u2500\ndocument.getElementById('skillsList').addEventListener('click', (e) => {\n const toggle = e.target.closest('[data-skill-id]');\n if (toggle) {\n toggleSkill(toggle.dataset.skillId, toggle.dataset.skillEnabled === 'true');\n }\n});\n// Skill filter buttons (event delegation)\ndocument.querySelector('#tabSkills').addEventListener('click', (e) => {\n const filterBtn = e.target.closest('.skill-filter');\n if (filterBtn) {\n const cat = filterBtn.dataset.filter;\n filterSkills(cat, filterBtn);\n }\n});\n\n// \u2500\u2500 Settings Tab \u2500\u2500\ndocument.querySelector('[data-action=\"openPrompt\"]').addEventListener('click', openPromptModal);\ndocument.getElementById('tgOff').addEventListener('click', () => setTelegram(false));\ndocument.getElementById('tgOn').addEventListener('click', () => setTelegram(true));\ndocument.getElementById('tgToken').addEventListener('change', saveTelegramSettings);\ndocument.getElementById('tgChatIds').addEventListener('change', saveTelegramSettings);\ndocument.getElementById('fallbackOrderList').addEventListener('change', saveFallbackOrder);\n\n// Per-CLI model selects\nfunction bindPerCliControlEvents() {\n for (const cli of getCliKeys()) {\n const cap = cli.charAt(0).toUpperCase() + cli.slice(1);\n const sel = document.getElementById('model' + cap);\n if (sel) sel.addEventListener('change', function () { handleModelSelect(cli, this); });\n const custom = document.getElementById('customModel' + cap);\n if (custom) custom.addEventListener('change', function () { applyCustomModel(cli, this); });\n const effort = document.getElementById('effort' + cap);\n if (effort) effort.addEventListener('change', savePerCli);\n }\n}\n\n// MCP\ndocument.querySelector('[data-action=\"syncMcp\"]').addEventListener('click', syncMcpServers);\ndocument.querySelector('[data-action=\"installMcp\"]').addEventListener('click', installMcpGlobal);\ndocument.querySelector('[data-action=\"refreshCli\"]').addEventListener('click', () => loadCliStatus(true));\ndocument.getElementById('cliStatusInterval').addEventListener('change', function () {\n localStorage.setItem('cliStatusInterval', this.value);\n});\n\n// \u2500\u2500 Prompt Modal \u2500\u2500\ndocument.getElementById('promptModal').addEventListener('click', (e) => closePromptModal(e));\ndocument.querySelector('#promptModal .modal-box').addEventListener('click', (e) => e.stopPropagation());\ndocument.querySelector('[data-action=\"closePrompt\"]').addEventListener('click', () => closePromptModal());\ndocument.querySelector('[data-action=\"cancelPrompt\"]').addEventListener('click', () => closePromptModal());\ndocument.querySelector('[data-action=\"savePrompt\"]').addEventListener('click', savePromptFromModal);\ndocument.addEventListener('keydown', (e) => { if (e.key === 'Escape') closePromptModal(); });\n\n// \u2500\u2500 Heartbeat Modal \u2500\u2500\ndocument.getElementById('heartbeatModal').addEventListener('click', (e) => closeHeartbeatModal(e));\ndocument.querySelector('#heartbeatModal .modal-box').addEventListener('click', (e) => e.stopPropagation());\ndocument.querySelector('[data-action=\"closeHeartbeat\"]').addEventListener('click', () => closeHeartbeatModal());\ndocument.querySelector('[data-action=\"addHeartbeat\"]').addEventListener('click', addHeartbeatJob);\n\n// Heartbeat jobs (event delegation)\ndocument.getElementById('hbJobsList').addEventListener('click', (e) => {\n const toggle = e.target.closest('[data-hb-toggle]');\n if (toggle) { toggleHeartbeatJob(+toggle.dataset.hbToggle); return; }\n const remove = e.target.closest('[data-hb-remove]');\n if (remove) { removeHeartbeatJob(+remove.dataset.hbRemove); return; }\n});\ndocument.getElementById('hbJobsList').addEventListener('change', (e) => {\n const name = e.target.closest('[data-hb-name]');\n if (name) { state.heartbeatJobs[+name.dataset.hbName].name = e.target.value; saveHeartbeatJobs(); return; }\n const min = e.target.closest('[data-hb-minutes]');\n if (min) { state.heartbeatJobs[+min.dataset.hbMinutes].schedule = { kind: 'every', minutes: +e.target.value }; saveHeartbeatJobs(); return; }\n const prompt = e.target.closest('[data-hb-prompt]');\n if (prompt) { state.heartbeatJobs[+prompt.dataset.hbPrompt].prompt = e.target.value; saveHeartbeatJobs(); return; }\n});\n\n// \u2500\u2500 Memory Modal \u2500\u2500\ndocument.getElementById('memoryModal').addEventListener('click', (e) => closeMemoryModal(e));\ndocument.querySelector('#memoryModal .modal-box').addEventListener('click', (e) => e.stopPropagation());\ndocument.querySelector('[data-action=\"closeMemory\"]').addEventListener('click', () => closeMemoryModal());\ndocument.getElementById('memTabBtnSettings').addEventListener('click', () => switchMemTab('settings'));\ndocument.getElementById('memTabBtnFiles').addEventListener('click', () => switchMemTab('files'));\ndocument.getElementById('memOn').addEventListener('click', () => setMemEnabled(true));\ndocument.getElementById('memOff').addEventListener('click', () => setMemEnabled(false));\ndocument.getElementById('memFlushEvery').addEventListener('change', saveMemSettings);\ndocument.getElementById('memCli').addEventListener('change', saveMemSettings);\ndocument.getElementById('memModel').addEventListener('change', saveMemSettings);\ndocument.getElementById('memRetention').addEventListener('change', saveMemSettings);\n\n// Memory files (event delegation)\ndocument.getElementById('memFilesList').addEventListener('click', (e) => {\n const del = e.target.closest('[data-mem-delete]');\n if (del) { e.stopPropagation(); deleteMemFile(del.dataset.memDelete); return; }\n const view = e.target.closest('[data-mem-view]');\n if (view) { viewMemFile(view.dataset.memView); return; }\n const back = e.target.closest('[data-mem-back]');\n if (back) { openMemoryModal(); return; }\n});\n\n// \u2500\u2500 Init \u2500\u2500\nasync function bootstrap() {\n await initI18n();\n const langBtn = document.getElementById('langToggle');\n if (langBtn) langBtn.textContent = `\uD83C\uDF10 ${t('lang.' + getLang())}`;\n await loadCliRegistry();\n bindPerCliControlEvents();\n connect();\n initDragDrop();\n initAutoResize();\n await loadCommands();\n await loadSettings();\n loadCliStatus();\n loadMemory();\n // loadMessages() is handled by ws.js onopen (clear + reload)\n loadEmployees();\n initHeartbeatBadge();\n initAppName();\n initSidebar();\n initTheme();\n initMsgCopy();\n}\n\nvoid bootstrap().catch((err) => {\n console.error('[bootstrap]', err);\n});\n\n// \u2500\u2500 Keyboard: Escape closes modals \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\ndocument.addEventListener('keydown', (e) => {\n if (e.key === 'Escape') {\n document.querySelectorAll('.modal-overlay.open').forEach(m => {\n m.classList.remove('open');\n });\n }\n});\n\n// \u2500\u2500 Mobile sidebar toggle (sidebar.js functions reuse) \u2500\u2500\ndocument.getElementById('mobileMenuLeft')?.addEventListener('click', toggleLeft);\ndocument.getElementById('mobileMenuRight')?.addEventListener('click', toggleRight);\n", "// \u2500\u2500 Chat Feature \u2500\u2500\nimport { state } from '../state.js';\nimport { addMessage, addSystemMsg, scrollToBottom } from '../ui.js';\nimport { getPreferredLocale } from '../locale.js';\nimport { t } from './i18n.js';\nimport * as slashCmd from './slash-commands.js';\nimport { api, apiJson, apiFire } from '../api.js';\n\nexport async function sendMessage() {\n const input = document.getElementById('chatInput');\n const btn = document.getElementById('btnSend');\n\n // Stop mode: clicking \u25A0 stops the agent\n if (btn.classList.contains('stop-mode') && !input.value.trim() && !state.attachedFiles.length) {\n apiFire('/api/stop', 'POST');\n return;\n }\n\n const text = input.value.trim();\n if (!text && !state.attachedFiles.length) return;\n\n // File paths like /Users/junny/... or /tmp/foo \u2014 not commands\n const afterSlash = text.slice(1).trim();\n const firstToken = afterSlash.split(/\\s+/)[0] || '';\n const isFilePath = firstToken.includes('/') || firstToken.includes('\\\\');\n\n if (text.startsWith('/') && !state.attachedFiles.length && !isFilePath) {\n input.value = '';\n resetInputHeight();\n slashCmd.close();\n try {\n let signal, timer;\n if (typeof AbortSignal?.timeout === 'function') {\n signal = AbortSignal.timeout(10000);\n } else {\n const ac = new AbortController();\n signal = ac.signal;\n timer = setTimeout(() => ac.abort(), 10000);\n }\n const locale = getPreferredLocale();\n const res = await fetch('/api/command', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Accept-Language': locale,\n },\n body: JSON.stringify({ text, locale }),\n signal,\n });\n if (timer) clearTimeout(timer);\n const result = await res.json().catch(() => ({}));\n // not_command \u2192 fall through to normal chat\n if (result?.code === 'not_command') {\n addMessage('user', text);\n await apiJson('/api/message', 'POST', { prompt: text });\n return;\n }\n if (!res.ok && !result?.text) throw new Error(`HTTP ${res.status}`);\n if (result?.code === 'clear_screen') {\n document.getElementById('chatMessages').innerHTML = '';\n }\n if (result?.text) addSystemMsg(result.text, '', result.type);\n } catch (err) {\n addSystemMsg(t('chat.cmd.fail', { msg: err.message }), '', 'error');\n }\n return;\n }\n\n if (state.attachedFiles.length) {\n const names = state.attachedFiles.map(f => f.name).join(', ');\n const displayMsg = `[\uD83D\uDCCE ${names}] ${text}`;\n addMessage('user', displayMsg);\n input.value = '';\n resetInputHeight();\n try {\n // Upload all files in parallel\n const paths = await Promise.all(state.attachedFiles.map(f => uploadFile(f)));\n let prompt = paths.map(p => t('chat.file.sent', { path: p })).join('\\n');\n if (text) prompt += t('chat.file.sentWithMsg', { text });\n clearAttachedFiles();\n await apiJson('/api/message', 'POST', { prompt });\n } catch (err) {\n addSystemMsg(t('chat.file.uploadFail', { msg: err.message }));\n clearAttachedFiles();\n }\n } else {\n addMessage('user', text);\n input.value = '';\n resetInputHeight();\n const res = await fetch('/api/message', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ prompt: text }),\n });\n const data = await res.json().catch(() => ({}));\n if (!res.ok) {\n addSystemMsg(`\u274C ${data.error || t('chat.requestFail', { status: res.status })}`, '', 'error');\n return;\n }\n if (data.queued) {\n const { updateQueueBadge } = await import('../ui.js');\n updateQueueBadge(data.pending || 1);\n } else if (data.continued) {\n addSystemMsg(t('chat.continue'));\n }\n }\n}\n\nexport function handleKey(e) {\n if (e.key === 'Enter' && !e.shiftKey && !e.isComposing) { e.preventDefault(); sendMessage(); }\n}\n\nasync function uploadFile(file) {\n const res = await fetch('/api/upload', {\n method: 'POST',\n headers: { 'X-Filename': encodeURIComponent(file.name) },\n body: file,\n });\n if (!res.ok) throw new Error('upload failed');\n const data = await res.json();\n return data.path;\n}\n\nexport function attachFiles(files) {\n for (const file of files) {\n // Skip duplicates by name\n if (state.attachedFiles.some(f => f.name === file.name)) continue;\n state.attachedFiles.push(file);\n }\n renderFilePreview();\n document.getElementById('chatInput').focus();\n}\n\nexport function removeAttachedFile(index) {\n state.attachedFiles.splice(index, 1);\n renderFilePreview();\n}\n\nexport function clearAttachedFiles() {\n state.attachedFiles = [];\n renderFilePreview();\n document.getElementById('fileInput').value = '';\n}\n\nfunction renderFilePreview() {\n const preview = document.getElementById('filePreview');\n const listEl = document.getElementById('filePreviewList');\n if (!state.attachedFiles.length) {\n preview.classList.remove('visible');\n if (listEl) listEl.innerHTML = '';\n return;\n }\n preview.classList.add('visible');\n if (!listEl) return;\n listEl.innerHTML = state.attachedFiles.map((f, i) => {\n const size = (f.size / 1024).toFixed(1);\n const isImg = f.type.startsWith('image/');\n const thumb = isImg ? `<img src=\"${URL.createObjectURL(f)}\" class=\"file-chip-thumb\" alt=\"\">` : '';\n return `<div class=\"file-chip\">\n ${thumb}\n <span class=\"file-chip-name\">\uD83D\uDCCE ${f.name} (${size}KB)</span>\n <button class=\"file-chip-remove\" data-file-idx=\"${i}\" title=\"Remove\">\u2715</button>\n </div>`;\n }).join('');\n}\n\nexport async function clearChat() {\n apiFire('/api/clear', 'POST');\n document.getElementById('chatMessages').innerHTML = '';\n}\n\n// \u2500\u2500 Auto-resize textarea \u2500\u2500\nfunction autoResize(el) {\n el.style.height = 'auto';\n el.style.height = el.scrollHeight + 'px';\n}\n\nexport function initAutoResize() {\n const el = document.getElementById('chatInput');\n el.addEventListener('input', () => autoResize(el));\n}\n\nexport function resetInputHeight() {\n const el = document.getElementById('chatInput');\n el.style.height = 'auto';\n}\n\nexport function initDragDrop() {\n const chatArea = document.querySelector('.chat-area');\n const overlay = document.getElementById('dragOverlay');\n let dragCounter = 0;\n\n chatArea.addEventListener('dragenter', (e) => {\n e.preventDefault();\n dragCounter++;\n overlay.classList.add('visible');\n });\n chatArea.addEventListener('dragleave', (e) => {\n e.preventDefault();\n dragCounter--;\n if (dragCounter <= 0) { dragCounter = 0; overlay.classList.remove('visible'); }\n });\n chatArea.addEventListener('dragover', (e) => e.preventDefault());\n chatArea.addEventListener('drop', (e) => {\n e.preventDefault();\n dragCounter = 0;\n overlay.classList.remove('visible');\n const files = [...e.dataTransfer.files];\n if (files.length) attachFiles(files);\n });\n\n document.getElementById('fileInput').addEventListener('change', (e) => {\n const files = [...e.target.files];\n if (files.length) attachFiles(files);\n e.target.value = ''; // allow re-selecting same file\n });\n\n // \u2500\u2500 Clipboard paste (Cmd+V) \u2500\u2500\n document.addEventListener('paste', (e) => {\n const items = e.clipboardData?.items;\n if (!items) return;\n const files = [];\n for (const item of items) {\n if (item.kind !== 'file') continue;\n const blob = item.getAsFile();\n if (!blob) continue;\n // Pasted images often have no useful name; generate one\n if (!blob.name || blob.name === 'image.png') {\n const ts = new Date().toISOString().replace(/[:.]/g, '-');\n const ext = blob.type.split('/')[1] || 'png';\n const named = new File([blob], `pasted-${ts}.${ext}`, { type: blob.type });\n files.push(named);\n } else {\n files.push(blob);\n }\n }\n if (files.length) {\n e.preventDefault();\n attachFiles(files);\n }\n });\n}\n", "// \u2500\u2500 Heartbeat Feature \u2500\u2500\nimport { state } from '../state.js';\nimport { t } from './i18n.js';\nimport { api, apiJson } from '../api.js';\nimport { escapeHtml } from '../render.js';\n\nexport async function openHeartbeatModal() {\n const data = await api('/api/heartbeat');\n state.heartbeatJobs = data?.jobs || [];\n renderHeartbeatJobs();\n document.getElementById('heartbeatModal').classList.add('open');\n}\n\nexport function closeHeartbeatModal(e) {\n if (e && e.target !== e.currentTarget) return;\n document.getElementById('heartbeatModal').classList.remove('open');\n}\n\nexport function renderHeartbeatJobs() {\n const container = document.getElementById('hbJobsList');\n if (state.heartbeatJobs.length === 0) {\n container.innerHTML = `<p style=\"color:var(--text-dim);font-size:12px;text-align:center\">${t('hb.empty')}</p>`;\n } else {\n container.innerHTML = state.heartbeatJobs.map((job, i) => `\n <div class=\"hb-job-card\">\n <div class=\"hb-job-header\">\n <input type=\"text\" value=\"${escapeHtml(job.name || '')}\" placeholder=\"${t('hb.name')}\"\n data-hb-name=\"${i}\">\n <span style=\"font-size:11px;color:var(--text-dim)\">every</span>\n <input type=\"number\" value=\"${job.schedule?.minutes || 5}\" min=\"1\"\n data-hb-minutes=\"${i}\">\n <span style=\"font-size:11px;color:var(--text-dim)\">min</span>\n <button class=\"hb-toggle ${job.enabled ? 'on' : 'off'}\"\n data-hb-toggle=\"${i}\"></button>\n <button class=\"hb-del\" data-hb-remove=\"${i}\">\u2715</button>\n </div>\n <textarea class=\"hb-prompt\" rows=\"2\" placeholder=\"${t('hb.prompt')}\"\n data-hb-prompt=\"${i}\">${escapeHtml(job.prompt || '')}</textarea>\n </div>\n `).join('');\n }\n const active = state.heartbeatJobs.filter(j => j.enabled).length;\n document.getElementById('hbSidebarBtn').textContent = `\uD83D\uDC93 Heartbeat (${active})`;\n}\n\nexport function addHeartbeatJob() {\n state.heartbeatJobs.push({\n id: 'hb_' + Date.now(),\n name: '',\n enabled: true,\n schedule: { kind: 'every', minutes: 5 },\n prompt: ''\n });\n renderHeartbeatJobs();\n saveHeartbeatJobs();\n}\n\nexport function removeHeartbeatJob(i) {\n state.heartbeatJobs.splice(i, 1);\n renderHeartbeatJobs();\n saveHeartbeatJobs();\n}\n\nexport function toggleHeartbeatJob(i) {\n state.heartbeatJobs[i].enabled = !state.heartbeatJobs[i].enabled;\n renderHeartbeatJobs();\n saveHeartbeatJobs();\n}\n\nexport async function saveHeartbeatJobs() {\n await apiJson('/api/heartbeat', 'PUT', { jobs: state.heartbeatJobs });\n}\n\nexport async function initHeartbeatBadge() {\n try {\n const d = await api('/api/heartbeat');\n const active = (d?.jobs || []).filter(j => j.enabled).length;\n document.getElementById('hbSidebarBtn').textContent = `\uD83D\uDC93 Heartbeat (${active})`;\n } catch { }\n}\n", "// \u2500\u2500 Memory Feature \u2500\u2500\nimport { escapeHtml } from '../render.js';\nimport { api, apiJson, apiFire } from '../api.js';\n\nexport async function openMemoryModal() {\n const data = await api('/api/memory-files');\n if (!data) return;\n document.getElementById('memOn').classList.toggle('active', data.enabled);\n document.getElementById('memOff').classList.toggle('active', !data.enabled);\n document.getElementById('memFlushEvery').value = data.flushEvery;\n document.getElementById('memCli').value = data.cli || '';\n document.getElementById('memModel').value = data.model || '';\n document.getElementById('memRetention').value = data.retentionDays;\n document.getElementById('memPath').textContent = data.path;\n document.getElementById('memCounter').textContent = data.counter;\n document.getElementById('memThreshold').textContent = data.flushEvery;\n renderMemFiles(data.files);\n document.getElementById('memorySidebarBtn').textContent = `\uD83E\uDDE0 Memory (${data.files.length})`;\n document.getElementById('memoryModal').classList.add('open');\n}\n\nexport function closeMemoryModal(e) {\n if (e && e.target !== e.currentTarget) return;\n document.getElementById('memoryModal').classList.remove('open');\n}\n\nexport function switchMemTab(tab) {\n document.getElementById('memTabSettings').style.display = tab === 'settings' ? '' : 'none';\n document.getElementById('memTabFiles').style.display = tab === 'files' ? '' : 'none';\n document.getElementById('memTabBtnSettings').classList.toggle('active', tab === 'settings');\n document.getElementById('memTabBtnFiles').classList.toggle('active', tab === 'files');\n}\n\nexport async function setMemEnabled(v) {\n document.getElementById('memOn').classList.toggle('active', v);\n document.getElementById('memOff').classList.toggle('active', !v);\n await apiJson('/api/memory-files/settings', 'PUT', { enabled: v });\n}\n\nexport async function saveMemSettings() {\n await apiJson('/api/memory-files/settings', 'PUT', {\n flushEvery: +document.getElementById('memFlushEvery').value,\n cli: document.getElementById('memCli').value,\n model: document.getElementById('memModel').value,\n retentionDays: +document.getElementById('memRetention').value,\n });\n document.getElementById('memThreshold').textContent = document.getElementById('memFlushEvery').value;\n}\n\nfunction renderMemFiles(files) {\n const container = document.getElementById('memFilesList');\n if (!files || files.length === 0) {\n container.innerHTML = '<p style=\"color:var(--text-dim);font-size:12px;text-align:center\">No memory files yet</p>';\n return;\n }\n container.innerHTML = files.map(f => `\n <div style=\"display:flex;align-items:center;justify-content:space-between;padding:6px 8px;border:1px solid var(--border);border-radius:4px;margin-bottom:4px;cursor:pointer\"\n data-mem-view=\"${escapeHtml(f.name)}\">\n <div>\n <span style=\"font-size:12px;font-family:monospace\">${escapeHtml(f.name)}</span>\n <span style=\"font-size:10px;color:var(--accent);margin-left:6px\">${f.entries} entries</span>\n </div>\n <button data-mem-delete=\"${escapeHtml(f.name)}\" style=\"background:none;border:none;color:#f55;cursor:pointer;font-size:14px\">\uD83D\uDDD1\uFE0F</button>\n </div>\n `).join('');\n}\n\nexport async function deleteMemFile(name) {\n if (!confirm('Delete ' + name + '?')) return;\n await apiJson('/api/memory-files/' + name, 'DELETE');\n openMemoryModal();\n}\n\nexport async function viewMemFile(name) {\n const data = await api('/api/memory-files/' + name);\n if (!data) return;\n const container = document.getElementById('memFilesList');\n container.innerHTML = `\n <div style=\"margin-bottom:8px;display:flex;justify-content:space-between;align-items:center\">\n <span style=\"font-size:12px;font-weight:600\">${data.name}</span>\n <button data-mem-back style=\"background:none;border:none;color:var(--accent);cursor:pointer;font-size:11px\">\u2190 back</button>\n </div>\n <pre style=\"background:var(--bg);padding:8px;border-radius:4px;font-size:11px;white-space:pre-wrap;max-height:50vh;overflow-y:auto;color:var(--text)\">${escapeHtml(data.content)}</pre>\n `;\n}\n", "// \u2500\u2500 Sidebar Collapse \u2500\u2500\n// Toggle left/right sidebars. Responsive-aware:\n// - Wide viewport (>900px): toggle *-collapsed classes\n// - Narrow viewport (\u2264900px): CSS auto-collapses, toggle *-expanded to override\n\nconst STORAGE_KEY = 'sidebarState';\nconst BREAKPOINT = 900;\n\nexport function initSidebar() {\n const saved = JSON.parse(localStorage.getItem(STORAGE_KEY) || '{}');\n if (saved.left) document.body.classList.add('left-collapsed');\n if (saved.right) document.body.classList.add('right-collapsed');\n\n document.getElementById('toggleLeft')?.addEventListener('click', toggleLeft);\n document.getElementById('toggleRight')?.addEventListener('click', toggleRight);\n\n // On resize: sync classes with viewport mode\n window.addEventListener('resize', () => {\n if (window.innerWidth > BREAKPOINT) {\n // Wide: remove expanded, restore collapsed from storage\n document.body.classList.remove('left-expanded', 'right-expanded');\n const s = JSON.parse(localStorage.getItem(STORAGE_KEY) || '{}');\n document.body.classList.toggle('left-collapsed', !!s.left);\n document.body.classList.toggle('right-collapsed', !!s.right);\n } else {\n // Narrow: suspend collapsed (CSS media query handles auto-collapse)\n document.body.classList.remove('left-collapsed', 'right-collapsed');\n }\n syncIcons();\n });\n\n // If starting narrow, suspend collapsed\n if (window.innerWidth <= BREAKPOINT) {\n document.body.classList.remove('left-collapsed', 'right-collapsed');\n }\n\n syncIcons();\n}\n\nfunction isNarrow() {\n return window.innerWidth <= BREAKPOINT;\n}\n\nexport function toggleLeft() {\n if (isNarrow()) {\n // Narrow mode: toggle expanded override\n document.body.classList.toggle('left-expanded');\n } else {\n // Wide mode: toggle collapsed\n document.body.classList.toggle('left-collapsed');\n }\n save();\n syncIcons();\n}\n\nexport function toggleRight() {\n if (isNarrow()) {\n document.body.classList.toggle('right-expanded');\n } else {\n document.body.classList.toggle('right-collapsed');\n }\n save();\n syncIcons();\n}\n\nfunction isLeftOpen() {\n if (isNarrow()) return document.body.classList.contains('left-expanded');\n return !document.body.classList.contains('left-collapsed');\n}\n\nfunction isRightOpen() {\n if (isNarrow()) return document.body.classList.contains('right-expanded');\n return !document.body.classList.contains('right-collapsed');\n}\n\nfunction syncIcons() {\n const leftBtn = document.getElementById('toggleLeft');\n const rightBtn = document.getElementById('toggleRight');\n if (leftBtn) leftBtn.textContent = isLeftOpen() ? '\u25C0' : '\u25B6';\n if (rightBtn) rightBtn.textContent = isRightOpen() ? '\u25B6' : '\u25C0';\n}\n\nfunction save() {\n localStorage.setItem(STORAGE_KEY, JSON.stringify({\n left: document.body.classList.contains('left-collapsed'),\n right: document.body.classList.contains('right-collapsed'),\n }));\n}\n", "// \u2500\u2500 Theme Toggle \u2500\u2500\n// Dark/Light theme switching with localStorage persistence\n// Swaps CSS data-theme attribute + highlight.js stylesheet\n\nconst STORAGE_KEY = 'theme';\nconst HLJS_DARK = 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.11.1/styles/github-dark.min.css';\nconst HLJS_LIGHT = 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.11.1/styles/github.min.css';\n\nexport function initTheme() {\n // Detect: localStorage \u2192 OS preference \u2192 default dark\n const saved = localStorage.getItem(STORAGE_KEY);\n const prefer = window.matchMedia('(prefers-color-scheme: light)').matches ? 'light' : 'dark';\n const theme = saved || prefer;\n applyTheme(theme);\n\n document.getElementById('toggleTheme')?.addEventListener('click', toggleTheme);\n}\n\nfunction toggleTheme() {\n const current = document.documentElement.getAttribute('data-theme') || 'dark';\n const next = current === 'dark' ? 'light' : 'dark';\n applyTheme(next);\n localStorage.setItem(STORAGE_KEY, next);\n}\n\nfunction applyTheme(theme) {\n document.documentElement.setAttribute('data-theme', theme);\n\n // Update button icon (SVG sun/moon swap)\n const btn = document.getElementById('toggleTheme');\n if (btn) {\n btn.classList.toggle('is-light', theme === 'light');\n }\n\n // Swap highlight.js theme\n const hljsLink = document.getElementById('hljsTheme');\n if (hljsLink) {\n hljsLink.href = theme === 'dark' ? HLJS_DARK : HLJS_LIGHT;\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["state", "init_state", "__esmMin", "api_exports", "__export", "api", "apiFire", "apiJson", "path", "opts", "res", "json", "e", "method", "body", "init_api", "__esmMin", "toModelMap", "registry", "out", "key", "value", "normalizeRegistry", "input", "normalized", "applyRegistry", "CLI_REGISTRY", "CLI_KEYS", "MODEL_MAP", "loadCliRegistry", "data", "api", "FALLBACK_CLI_REGISTRY", "getCliKeys", "getCliMeta", "cli", "ROLE_PRESETS", "init_constants", "__esmMin", "init_api", "employees_exports", "__export", "addEmployee", "deleteEmployee", "loadEmployees", "onEmpCliChange", "onEmpRoleChange", "renderEmployees", "updateEmployee", "data", "api", "state", "el", "t", "cliKeys", "getCliKeys", "a", "models", "MODEL_MAP", "legacyVal", "matched", "ROLE_PRESETS", "r", "presetVal", "isCustom", "escapeHtml", "c", "ps", "getAgentPhase", "p", "pl", "apiJson", "id", "apiFire", "cli", "sel", "m", "preset", "customEl", "init_employees", "__esmMin", "init_state", "init_constants", "init_render", "init_ws", "init_i18n", "init_api", "skills_exports", "__export", "filterSkills", "loadSkills", "renderSkills", "toggleSkill", "res", "fetchWithLocale", "state", "t", "list", "count", "filtered", "s", "KNOWN_CATS", "enabledCount", "reqParts", "escapeHtml", "id", "currentlyEnabled", "endpoint", "apiJson", "e", "cat", "btn", "b", "init_skills", "__esmMin", "init_state", "init_i18n", "init_api", "init_render", "getPreferredLocale", "key", "LOCALE_KEYS", "saved", "syncStoredLocale", "locale", "value", "init_locale", "__esmMin", "slash_commands_exports", "__export", "close", "handleClick", "handleKeydown", "handleOutsideClick", "isDropdownOpen", "loadCommands", "update", "looksLikeFilePath", "text", "tok", "escapeHtml", "str", "filterCommands", "partial", "prefix", "cmdList", "c", "showDropdown", "el", "dropdown", "inp", "input", "closeTimer", "isOpen", "render", "filtered", "t", "cmd", "i", "selected", "selectedIdx", "applySelection", "execute", "locale", "getPreferredLocale", "url", "api", "err", "raw", "item", "idx", "init_slash_commands", "__esmMin", "init_locale", "init_i18n", "init_api", "settings_exports", "__export", "applyCustomModel", "closePromptModal", "getModelValue", "handleModelSelect", "installMcpGlobal", "loadCliStatus", "loadFallbackOrder", "loadMcpServers", "loadSettings", "onCliChange", "openPromptModal", "saveActiveCliSettings", "saveFallbackOrder", "savePerCli", "savePromptFromModal", "saveTelegramSettings", "setPerm", "setTelegram", "syncMcpServers", "updateSettings", "toCap", "cli", "getModelSelect", "getCustomModelInput", "getEffortSelect", "setSelectOptions", "selectEl", "values", "includeCustom", "includeDefault", "selected", "defaultHtml", "customHtml", "t", "opts", "v", "escapeHtml", "o", "appendCustomOption", "value", "opt", "customOpt", "syncCliOptionSelects", "settings", "cliKeys", "getCliKeys", "selCli", "current", "label", "getCliMeta", "memCli", "syncPerCliModelAndEffortControls", "modelSel", "MODEL_MAP", "effortSel", "meta", "options", "unique", "noneLabel", "syncActiveEffortOptions", "selEffort", "efforts", "loadCliRegistry", "s", "api", "syncStoredLocale", "cfg", "modelEl", "effortEl", "ao", "pc", "activeModel", "activeEffort", "loadTelegramSettings", "d", "el", "names", "n", "resultEl", "apiJson", "r", "k", "e", "p", "save", "apiFire", "sel", "customInput", "inputEl", "val", "select", "perCli", "models", "oldInput", "inp", "model", "effort", "overrides", "token", "chatIdsRaw", "allowedChatIds", "enabled", "tg", "container", "allClis", "active", "slotCount", "html", "i", "fallbackOrder", "force", "interval", "state", "renderCliStatus", "cliStatus", "quota", "data", "AUTH_HINTS", "name", "info", "q", "dotClass", "accountLine", "parts", "authHint", "hint", "windowsHtml", "w", "pct", "barColor", "content", "init_settings", "__esmMin", "init_constants", "init_render", "init_locale", "init_i18n", "init_api", "init_state", "initI18n", "saved", "browserLang", "fallbackDict", "fetchLocale", "dict", "currentLocale", "applyI18n", "lang", "api", "t", "key", "params", "val", "k", "v", "el", "setLang", "loadEmployees", "loadSkills", "loadCommands", "loadSettings", "getLang", "fetchWithLocale", "url", "init", "u", "init_i18n", "__esmMin", "escapeHtml", "str", "sanitizeHtml", "html", "stripOrchestration", "text", "cleaned", "renderMath", "_", "tex", "renderMermaidBlocks", "el", "code", "id", "mermaidId", "svg", "rawSvg", "zoomBtn", "openMermaidOverlay", "err", "errMsg", "svgHtml", "overlay", "svgEl", "close", "e", "handler", "ensureMarked", "markedReady", "renderer", "lang", "highlighted", "labelText", "t", "renderFallback", "rehighlightAll", "c", "raw", "ensureCopyDelegation", "copyDelegationReady", "label", "wrapper", "codeEl", "orig", "renderMarkdown", "init_render", "__esmMin", "init_i18n", "waitForHljs", "waitForMermaid", "getAppName", "currentName", "setAppName", "name", "DEFAULT_NAME", "STORAGE_KEY", "input", "initAppName", "inp", "e", "init_appname", "__esmMin", "ui_exports", "__export", "addMessage", "addSystemMsg", "appendAgentText", "finalizeAgent", "handleSave", "initMsgCopy", "loadMemory", "loadMessages", "loadStats", "scrollToBottom", "setStatus", "switchTab", "updateQueueBadge", "s", "badge", "btn", "state", "t", "count", "el", "text", "extraClass", "type", "container", "div", "typeClass", "content", "toolLog", "now", "lastFinalizeTs", "toolHtml", "counts", "summaryParts", "icon", "n", "logLines", "escapeHtml", "renderMarkdown", "role", "rendered", "copyBtn", "getAppName", "c", "name", "targetBtn", "b", "tabMap", "m", "msgs", "api", "msg", "raw", "items", "list", "init_ui", "__esmMin", "init_state", "init_render", "init_appname", "init_i18n", "init_api", "connect", "state", "getLang", "msg", "setStatus", "agentPhaseState", "m", "updateQueueBadge", "addSystemMsg", "agents", "names", "t", "appendAgentText", "finalizeAgent", "addMessage", "getAgentPhase", "agentId", "init_ws", "__esmMin", "init_state", "init_ui", "init_i18n", "init_ws", "init_ui", "init_state", "init_ui", "init_locale", "init_i18n", "init_slash_commands", "init_api", "sendMessage", "input", "state", "apiFire", "text", "firstToken", "isFilePath", "resetInputHeight", "close", "signal", "timer", "ac", "locale", "getPreferredLocale", "res", "result", "addMessage", "apiJson", "addSystemMsg", "err", "t", "displayMsg", "f", "prompt", "uploadFile", "p", "clearAttachedFiles", "data", "updateQueueBadge", "handleKey", "file", "attachFiles", "files", "renderFilePreview", "removeAttachedFile", "index", "preview", "listEl", "i", "size", "clearChat", "autoResize", "el", "initAutoResize", "initDragDrop", "chatArea", "overlay", "dragCounter", "e", "items", "item", "blob", "ts", "ext", "named", "init_slash_commands", "init_skills", "init_settings", "init_employees", "init_state", "init_i18n", "init_api", "init_render", "openHeartbeatModal", "data", "api", "state", "renderHeartbeatJobs", "closeHeartbeatModal", "container", "t", "job", "i", "escapeHtml", "active", "j", "addHeartbeatJob", "saveHeartbeatJobs", "removeHeartbeatJob", "toggleHeartbeatJob", "apiJson", "initHeartbeatBadge", "init_render", "init_api", "openMemoryModal", "data", "api", "renderMemFiles", "closeMemoryModal", "switchMemTab", "tab", "setMemEnabled", "v", "apiJson", "saveMemSettings", "files", "container", "f", "escapeHtml", "deleteMemFile", "name", "viewMemFile", "init_state", "init_constants", "init_appname", "STORAGE_KEY", "initSidebar", "saved", "STORAGE_KEY", "toggleLeft", "toggleRight", "s", "syncIcons", "isNarrow", "save", "isLeftOpen", "isRightOpen", "leftBtn", "rightBtn", "STORAGE_KEY", "HLJS_DARK", "HLJS_LIGHT", "initTheme", "saved", "prefer", "applyTheme", "toggleTheme", "next", "theme", "btn", "hljsLink", "init_i18n", "sendMessage", "chatInput", "handleKeydown", "handleKey", "slashInputRaf", "update", "handleClick", "handleOutsideClick", "clearAttachedFiles", "btn", "removeAttachedFile", "openMemoryModal", "clearChat", "openHeartbeatModal", "next", "getLang", "setLang", "t", "state", "idx", "c", "names", "switchTab", "handleSave", "onCliChange", "saveActiveCliSettings", "setPerm", "updateSettings", "addEmployee", "del", "deleteEmployee", "name", "updateEmployee", "cli", "onEmpCliChange", "model", "val", "opt", "customOpt", "role", "onEmpRoleChange", "custom", "toggle", "toggleSkill", "filterBtn", "cat", "filterSkills", "openPromptModal", "setTelegram", "saveTelegramSettings", "saveFallbackOrder", "bindPerCliControlEvents", "getCliKeys", "cap", "sel", "handleModelSelect", "applyCustomModel", "effort", "savePerCli", "syncMcpServers", "installMcpGlobal", "loadCliStatus", "closePromptModal", "savePromptFromModal", "closeHeartbeatModal", "addHeartbeatJob", "toggleHeartbeatJob", "remove", "removeHeartbeatJob", "saveHeartbeatJobs", "min", "prompt", "closeMemoryModal", "switchMemTab", "setMemEnabled", "saveMemSettings", "deleteMemFile", "view", "viewMemFile", "bootstrap", "initI18n", "langBtn", "loadCliRegistry", "connect", "initDragDrop", "initAutoResize", "loadCommands", "loadSettings", "loadMemory", "loadEmployees", "initHeartbeatBadge", "initAppName", "initSidebar", "initTheme", "initMsgCopy", "err", "m", "toggleLeft", "toggleRight"]
|
|
7
|
+
}
|