cli-jaw 1.7.30 → 1.7.31

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.
Files changed (70) hide show
  1. package/dist/server.js +9 -1
  2. package/dist/server.js.map +1 -1
  3. package/dist/src/agent/events.js +7 -3
  4. package/dist/src/agent/events.js.map +1 -1
  5. package/dist/src/agent/lifecycle-handler.js +54 -6
  6. package/dist/src/agent/lifecycle-handler.js.map +1 -1
  7. package/dist/src/agent/spawn.js +37 -28
  8. package/dist/src/agent/spawn.js.map +1 -1
  9. package/dist/src/cli/claude-models.js +16 -13
  10. package/dist/src/cli/claude-models.js.map +1 -1
  11. package/dist/src/cli/handlers-runtime.js +21 -5
  12. package/dist/src/cli/handlers-runtime.js.map +1 -1
  13. package/dist/src/core/compact.js +55 -4
  14. package/dist/src/core/compact.js.map +1 -1
  15. package/dist/src/core/main-session.js +50 -6
  16. package/dist/src/core/main-session.js.map +1 -1
  17. package/dist/src/core/runtime-settings.js +33 -3
  18. package/dist/src/core/runtime-settings.js.map +1 -1
  19. package/dist/src/memory/runtime.js +19 -2
  20. package/dist/src/memory/runtime.js.map +1 -1
  21. package/dist/src/memory/worklog.js +25 -2
  22. package/dist/src/memory/worklog.js.map +1 -1
  23. package/dist/src/orchestrator/distribute.js +6 -3
  24. package/dist/src/orchestrator/distribute.js.map +1 -1
  25. package/dist/src/orchestrator/pipeline.js +17 -3
  26. package/dist/src/orchestrator/pipeline.js.map +1 -1
  27. package/dist/src/orchestrator/state-machine.js +83 -6
  28. package/dist/src/orchestrator/state-machine.js.map +1 -1
  29. package/dist/src/prompt/builder.js +17 -1
  30. package/dist/src/prompt/builder.js.map +1 -1
  31. package/dist/src/prompt/soul-bootstrap-prompt.js +5 -2
  32. package/dist/src/prompt/soul-bootstrap-prompt.js.map +1 -1
  33. package/dist/src/prompt/templates/orchestration.md +21 -0
  34. package/dist/src/routes/jaw-memory.js +4 -2
  35. package/dist/src/routes/jaw-memory.js.map +1 -1
  36. package/dist/src/routes/orchestrate.js +81 -7
  37. package/dist/src/routes/orchestrate.js.map +1 -1
  38. package/package.json +1 -1
  39. package/public/css/markdown.css +25 -0
  40. package/public/dist/assets/constants-2eOyiA6N.js +1 -0
  41. package/public/dist/assets/{employees-DEAsLiuH.js → employees-lW91UfoX.js} +7 -7
  42. package/public/dist/assets/index-CHueOQjp.js +32 -0
  43. package/public/dist/assets/{index-CmogXq5K.css → index-DVAk6-ox.css} +1 -1
  44. package/public/dist/assets/memory-COqTr9_E.js +1 -0
  45. package/public/dist/assets/{memory-Da0JJE5y.js → memory-D6jlo74U.js} +9 -9
  46. package/public/dist/assets/{render-DtJkRgLi.js → render-DHNtorUk.js} +16 -11
  47. package/public/dist/assets/settings-BIbs7gYB.js +1 -0
  48. package/public/dist/assets/{settings-DO7YNchG.js → settings-BXig0Fq7.js} +13 -13
  49. package/public/dist/assets/skills-BRn8vpdf.js +1 -0
  50. package/public/dist/assets/{skills-_cb0eUR_.js → skills-BrXYVU1p.js} +6 -6
  51. package/public/dist/assets/{slash-commands-BnZWVFWF.js → slash-commands-DAObyBB2.js} +1 -1
  52. package/public/dist/assets/slash-commands-zrcxH6-n.js +1 -0
  53. package/public/dist/assets/ui-BUfs2YT6.js +130 -0
  54. package/public/dist/assets/ui-CMkGUYqS.js +1 -0
  55. package/public/dist/assets/{ws-DQw_dOlE.js → ws-wAkHWH8w.js} +7 -7
  56. package/public/dist/index.html +2 -2
  57. package/public/js/constants.ts +1 -1
  58. package/public/js/features/employees.ts +14 -7
  59. package/public/js/features/settings-core.ts +13 -6
  60. package/public/js/main.ts +6 -1
  61. package/public/js/render.ts +64 -6
  62. package/public/js/ui.ts +15 -0
  63. package/public/dist/assets/constants-CAm2valm.js +0 -1
  64. package/public/dist/assets/index-DEsjdzlb.js +0 -32
  65. package/public/dist/assets/memory-DxI8fiPv.js +0 -1
  66. package/public/dist/assets/settings-DyrQgYnt.js +0 -1
  67. package/public/dist/assets/skills-CyNBQeIq.js +0 -1
  68. package/public/dist/assets/slash-commands-BuZgvznw.js +0 -1
  69. package/public/dist/assets/ui-3SVmPEWt.js +0 -130
  70. package/public/dist/assets/ui-b08BeDGQ.js +0 -1
@@ -3,7 +3,7 @@ import { isAgentBusy, messageQueue, getQueuedMessageSnapshotForScope, removeQueu
3
3
  import { getLiveRun } from '../agent/live-run-state.js';
4
4
  import { orchestrate, orchestrateContinue, orchestrateReset, isContinueIntent, isResetIntent, drainPendingReplays } from '../orchestrator/pipeline.js';
5
5
  import { insertMessage } from '../core/db.js';
6
- import { getState, getCtx, setState, resetState, canTransition, resetAllStaleStates } from '../orchestrator/state-machine.js';
6
+ import { getState, getCtx, setState, resetState, canTransition, resetAllStaleStates, parseWorkerVerdict } from '../orchestrator/state-machine.js';
7
7
  import { resolveOrcScope } from '../orchestrator/scope.js';
8
8
  import { getActiveWorkers, claimWorker, finishWorker, failWorker, markWorkerReplayed, getWorkerSlot, WorkerBusyError } from '../orchestrator/worker-registry.js';
9
9
  import { findEmployee, runSingleAgent } from '../orchestrator/distribute.js';
@@ -51,8 +51,33 @@ export function registerOrchestrateRoutes(app, requireAuth) {
51
51
  app.get('/api/orchestrate/snapshot', (_req, res) => {
52
52
  const runtime = getRuntimeSnapshot();
53
53
  const scope = resolveOrcScope({ origin: 'web', workingDir: settings.workingDir || null });
54
+ const ctx = getCtx(scope);
55
+ // Phase 56.1: whitelist-sanitize ctx so legacy fields (e.g. sharedPlanPath)
56
+ // from pre-56.1 DB rows don't leak through the snapshot API.
57
+ const safeCtx = ctx ? {
58
+ originalPrompt: ctx.originalPrompt,
59
+ workingDir: ctx.workingDir,
60
+ scopeId: ctx.scopeId,
61
+ plan: ctx.plan,
62
+ workerResults: ctx.workerResults,
63
+ origin: ctx.origin,
64
+ target: ctx.target,
65
+ chatId: ctx.chatId,
66
+ worklogPath: ctx.worklogPath,
67
+ planHash: ctx.planHash,
68
+ planUpdatedAt: ctx.planUpdatedAt,
69
+ auditStatus: ctx.auditStatus,
70
+ verificationStatus: ctx.verificationStatus,
71
+ userApproved: ctx.userApproved,
72
+ } : null;
54
73
  res.json({
55
- orc: { scope, state: getState(scope), ctx: getCtx(scope) },
74
+ orc: {
75
+ scope,
76
+ state: getState(scope),
77
+ ctx: safeCtx,
78
+ planHash: ctx?.planHash || null,
79
+ planUpdatedAt: ctx?.planUpdatedAt || null,
80
+ },
56
81
  runtime: {
57
82
  ...runtime,
58
83
  busy: runtime.activeAgent || getActiveWorkers().some(w => w.state === 'running'),
@@ -121,10 +146,37 @@ export function registerOrchestrateRoutes(app, requireAuth) {
121
146
  const { agent: agentName, task, phase } = req.body || {};
122
147
  if (!agentName || !task)
123
148
  return fail(res, 400, 'Missing agent or task');
124
- const PABCD_PHASE_MAP = { A: 2, B: 3, C: 4 };
149
+ // Phase 57: B-phase workers are READ-ONLY verifiers (Phase 4=Check), not implementers (Phase 3=Dev).
150
+ // PABCD A=Plan Audit (Phase 2), B=Build but workers verify only (Phase 4), C=Check (Phase 4).
151
+ const PABCD_PHASE_MAP = { A: 2, B: 4, C: 4 };
125
152
  const dispatchScope = resolveOrcScope({ origin: 'web', workingDir: settings.workingDir || null });
126
153
  const currentOrcState = getState(dispatchScope);
127
154
  const resolvedPhase = phase ?? PABCD_PHASE_MAP[currentOrcState] ?? 3;
155
+ const dispatchCtx = getCtx(dispatchScope);
156
+ // Phase 57: Delegation Guard — block code-implementation tasks during B phase.
157
+ // Boss must implement directly; workers are read-only verifiers.
158
+ if (currentOrcState === 'B') {
159
+ const implPattern = /\b(implement|write\s+(?:the\s+)?code|create\s+(?:the\s+)?file|build\s+(?:the\s+)?feature|add\s+(?:the\s+)?(?:method|function|class))\b/i;
160
+ if (implPattern.test(String(task))) {
161
+ return res.status(400).json({
162
+ ok: false,
163
+ error: 'delegation_guard',
164
+ message: 'B phase: Boss must implement directly. Workers are read-only verifiers. Reword the task as "verify X compiles" / "check integration of Y" / "report DONE or NEEDS_FIX".',
165
+ });
166
+ }
167
+ }
168
+ // Phase 56.1: Auto-inject the full approved plan inline at the top of every
169
+ // dispatch task body. Workers no longer need to read any plan file — the plan
170
+ // is kept only in the worklog (## Plan section) and in ctx.plan.
171
+ let enrichedTask = String(task);
172
+ if (dispatchCtx?.plan) {
173
+ enrichedTask = [
174
+ `## Approved Plan (auto-injected by orchestrator — do not ask user to repeat)`,
175
+ dispatchCtx.plan,
176
+ `---`,
177
+ enrichedTask,
178
+ ].join('\n\n');
179
+ }
128
180
  const emps = getEmployees.all();
129
181
  // Try DB first (preserves existing id-based matching), then fall
130
182
  // through to static employees for entries like Control.
@@ -206,12 +258,26 @@ export function registerOrchestrateRoutes(app, requireAuth) {
206
258
  try {
207
259
  const ap = {
208
260
  agent: emp.name, role: emp.role || 'general developer',
209
- task, parallel: false,
261
+ task: enrichedTask, parallel: false,
210
262
  currentPhase: resolvedPhase, currentPhaseIdx: 0,
211
263
  phaseProfile: [resolvedPhase],
212
264
  };
213
- const result = await runSingleAgent(ap, emp, {}, 1, { origin: 'api' }, []);
265
+ // Phase 57: Pass worklog path so the worker can append progress entries.
266
+ const worklog = dispatchCtx?.worklogPath ? { path: dispatchCtx.worklogPath } : {};
267
+ const result = await runSingleAgent(ap, emp, worklog, 1, { origin: 'api' }, []);
214
268
  finishWorker(slot.agentId, result.text || '');
269
+ // Phase 58: Auto-update audit/verification status from worker verdict.
270
+ // 'A' phase verdicts → auditStatus; 'B' phase verdicts → verificationStatus.
271
+ const verdict = parseWorkerVerdict(result.text || '');
272
+ if (verdict && dispatchCtx) {
273
+ const freshCtx = getCtx(dispatchScope) || dispatchCtx;
274
+ if (currentOrcState === 'A' && (verdict === 'pass' || verdict === 'fail')) {
275
+ setState('A', { ...freshCtx, auditStatus: verdict }, dispatchScope);
276
+ }
277
+ else if (currentOrcState === 'B' && (verdict === 'done' || verdict === 'needs_fix')) {
278
+ setState('B', { ...freshCtx, verificationStatus: verdict }, dispatchScope);
279
+ }
280
+ }
215
281
  if (clientDisconnected) {
216
282
  console.warn(`[dispatch] client disconnected — keeping pendingReplay for ${slot.agentId}`);
217
283
  // Proactive drain: if Boss died before receiving the result, user input
@@ -262,8 +328,16 @@ export function registerOrchestrateRoutes(app, requireAuth) {
262
328
  const scope = resolveOrcScope({ origin: 'web', workingDir: settings.workingDir || null });
263
329
  const current = getState(scope);
264
330
  const t = target;
265
- if (!canTransition(current, t)) {
266
- return fail(res, 409, `Cannot transition: ${current} → ${t}`);
331
+ // Phase 58: HTTP override via { force: true } body.
332
+ const force = req.body?.force === true;
333
+ const currentCtx = getCtx(scope);
334
+ const gateCtx = force && currentCtx ? { ...currentCtx, userApproved: true } : currentCtx;
335
+ if (force && currentCtx) {
336
+ setState(current, gateCtx, scope);
337
+ }
338
+ const gate = canTransition(current, t, gateCtx);
339
+ if (!gate.ok) {
340
+ return fail(res, 409, gate.reason || `Cannot transition: ${current} → ${t}`);
267
341
  }
268
342
  if (t === 'D') {
269
343
  setState(t, undefined, scope, 'Done');
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrate.js","sourceRoot":"","sources":["../../../src/routes/orchestrate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orchestrate.js","sourceRoot":"","sources":["../../../src/routes/orchestrate.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cli-jaw",
3
- "version": "1.7.30",
3
+ "version": "1.7.31",
4
4
  "description": "Personal AI assistant powered by 5 engines (Claude, Codex, Gemini, OpenCode, Copilot) — Web, Terminal, Telegram, and Discord interfaces with 107 built-in skills",
5
5
  "type": "module",
6
6
  "keywords": [
@@ -280,6 +280,31 @@
280
280
  max-width: 100%;
281
281
  }
282
282
 
283
+ /* Phase 127-F1: skeleton placeholder while mermaid renders */
284
+ .mermaid-skeleton {
285
+ display: flex;
286
+ align-items: center;
287
+ justify-content: center;
288
+ gap: 12px;
289
+ padding: 24px 12px;
290
+ color: var(--text-dim);
291
+ }
292
+ .mermaid-skeleton-spinner {
293
+ width: 16px;
294
+ height: 16px;
295
+ border: 2px solid color-mix(in oklch, var(--text) 15%, transparent);
296
+ border-top-color: var(--accent);
297
+ border-radius: 50%;
298
+ animation: mermaid-spin 0.8s linear infinite;
299
+ }
300
+ .mermaid-skeleton-text {
301
+ font-size: 13px;
302
+ font-style: italic;
303
+ }
304
+ @keyframes mermaid-spin {
305
+ to { transform: rotate(360deg); }
306
+ }
307
+
283
308
  /* Mermaid popup button */
284
309
  .mermaid-zoom-btn {
285
310
  position: absolute;
@@ -0,0 +1 @@
1
+ import{t as e}from"./api-DygAf_G_.js";var t={claude:{label:`Claude`,efforts:[`low`,`medium`,`high`,`xhigh`,`max`],models:[`opus`,`sonnet`,`sonnet[1m]`,`haiku`]},codex:{label:`Codex`,efforts:[`low`,`medium`,`high`,`xhigh`],models:[`gpt-5.5`,`gpt-5.4`,`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.4-xhigh`,`openai/gpt-5.4-high`,`openai/gpt-5.3-codex-xhigh`,`openai/gpt-5.3-codex-high`,`opencode/big-pickle`,`opencode-go/glm-5`,`opencode-go/glm-5.1`,`opencode-go/kimi-k2.5`,`opencode-go/kimi-k2.6`,`opencode-go/mimo-v2-pro`,`opencode-go/mimo-v2-omni`,`opencode-go/minimax-m2.5`,`opencode-go/minimax-m2.7`,`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:`-> ~/.copilot/config.json`,models:[`gpt-5.5`,`claude-sonnet-4.6`,`claude-haiku-4.5`,`gpt-5.4`,`gpt-5.3-codex`,`gpt-5.2-codex`,`gpt-5.1-codex`,`gpt-4.1`,`gpt-5-mini`,`gemini-3-pro-preview`]}};function n(e){let t={};for(let[n,r]of Object.entries(e))t[n]=Array.isArray(r?.models)?[...r.models]:[];return t}function r(e){let t={};for(let[n,r]of Object.entries(e||{})){if(!r||typeof r!=`object`)continue;let e=r,i={label:e.label||n,efforts:Array.isArray(e.efforts)?[...e.efforts]:[],models:Array.isArray(e.models)?[...e.models]:[]};typeof e.effortNote==`string`&&e.effortNote.trim()&&(i.effortNote=e.effortNote),t[n]=i}return t}var i=r(t),a=Object.keys(i),o=n(i);function s(e){let t=r(e);return Object.keys(t).length?(i=t,a=Object.keys(t),o=n(t),!0):!1}async function c(){try{let t=await e(`/api/cli-registry`);if(!t||!s(t))throw Error(`invalid registry`)}catch(e){console.warn(`[cli-registry] fallback:`,e.message),s(t)}return i}function l(){return a}function u(e){return i[e]||null}var d=[{value:`frontend`,labelKey:`role.label.frontend`,label:`Frontend`,prompt:`Frontend employee — UI/UX, CSS, components`,skill:`dev-frontend`},{value:`backend`,labelKey:`role.label.backend`,label:`Backend`,prompt:`Backend employee — API, DB, server logic`,skill:`dev-backend`},{value:`data`,labelKey:`role.label.data`,label:`Data`,prompt:`Data employee — data pipeline, analysis, ML`,skill:`dev-data`},{value:`docs`,labelKey:`role.label.docs`,label:`Docs`,prompt:`Docs employee — documentation, README, API docs`,skill:`documentation`},{value:`custom`,labelKey:`role.label.custom`,label:`Custom...`,prompt:``,skill:null}];export{c as a,u as i,d as n,l as r,o as t};
@@ -1,5 +1,5 @@
1
- import{t as e}from"./state-O6NVkWcL.js";import{n as t,r as n,t as r}from"./api-DygAf_G_.js";import{h as i,n as a,s as o}from"./render-DtJkRgLi.js";import{n as s}from"./ws-DQw_dOlE.js";import{n as c,r as l,t as u}from"./constants-CAm2valm.js";var d={"React/Vue 기반 UI 컴포넌트 개발, 스타일링":`frontend`,"API 서버, DB 스키마, 비즈니스 로직 구현":`backend`,"프론트엔드와 백엔드 모두 담당":`frontend`,"CI/CD, Docker, 인프라 자동화":`backend`,"테스트 작성, 버그 재현, 품질 관리":`custom`,"데이터 파이프라인, ETL, 분석 쿼리":`data`,"API 문서화, README, 가이드 작성":`docs`,"UI/UX 구현, CSS, 컴포넌트 개발":`frontend`,"API, DB, 서버 로직 구현":`backend`,"데이터 파이프라인, 분석, ML":`data`,"문서화, README, API docs":`docs`,"UI/UX, CSS, components":`frontend`,"API, DB, server logic":`backend`,"Data pipeline, analysis, ML":`data`,"Documentation, README, API docs":`docs`},f={1:`#60a5fa`,2:`#a78bfa`,3:`#34d399`,4:`#fbbf24`,5:`#f472b6`};function p(e,t){if(e!==`claude`)return t||`default`;switch((t||``).trim()){case`sonnet`:return`claude-sonnet-4-6`;case`opus`:return`claude-opus-4-6`;case`sonnet[1m]`:return`claude-sonnet-4-6[1m]`;case`opus[1m]`:return`claude-opus-4-6[1m]`;default:return t||`default`}}function m(e,t){return e===`claude`?t.includes(`claude-sonnet-4-6`)?`claude-sonnet-4-6`:t[0]||`default`:`default`}async function h(){e.employees=await r(`/api/employees`)||[],g()}function g(){let t=document.getElementById(`employeesList`);if(!t)return;let n=e.employees;if(n.length===0){t.innerHTML=`<div style="color:var(--text-dim);font-size:11px;padding:4px 0">${i(`emp.addPrompt`)}</div>`;return}let r=l();t.innerHTML=n.map(e=>{let t=e.source===`static`,n=u[e.cli]||[],l=p(e.cli,e.model),m=d[e.role||``],h=m?c.find(e=>e.value===m):c.find(t=>t.prompt===e.role),g=h?h.value:e.role?`custom`:`frontend`,_=g===`custom`,v=s(e.id),y=v?.phase||e.phase,b=v?.phaseLabel||e.phaseLabel,x=y?`<span style="background:${f[y]||`#888`};color:#000;padding:1px 6px;border-radius:9px;font-size:9px">${a(b||`P`+y)}</span>`:``,S=t?`<span style="background:#3b3b4f;color:#a78bfa;padding:1px 6px;border-radius:9px;font-size:9px;letter-spacing:0.3px">BUILT-IN</span>`:``,C=t?`border-left:2px solid #a78bfa;`:``,w=t?`<span style="flex:1;color:var(--text);font-size:12px;font-weight:600">${a(e.name||`Agent`)}</span>`:`<input style="flex:1;background:none;border:none;color:var(--text);font-size:12px;font-weight:600;font-family:inherit;outline:none" value="${a(e.name||`Agent`)}" data-emp-name="${a(e.id)}">`,T=t?``:`<button style="background:none;border:none;color:var(--text-dim);cursor:pointer;font-size:12px" data-emp-delete="${a(e.id)}" title="${i(`emp.delete`)}">${o.close}</button>`,E=t?`<select disabled title="CLI fixed for built-in employee"><option>${a(e.cli)}</option></select>`:`<select data-emp-cli="${a(e.id)}">${r.map(t=>`<option${e.cli===t?` selected`:``}>${a(t)}</option>`).join(``)}</select>`,D=t?`<div style="font-size:11px;color:var(--text-dim);padding:4px 0">${a(e.role||``)}</div>`:`<select data-emp-role="${a(e.id)}">${c.map(e=>`<option value="${e.value}"${g===e.value?` selected`:``}>${e.label}</option>`).join(``)}</select>
2
- <textarea data-emp-custom="${a(e.id)}" style="display:${_?`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" placeholder="${i(`emp.customRole`)}">${_?a(e.role||``):``}</textarea>`;return`
1
+ import{t as e}from"./state-O6NVkWcL.js";import{n as t,r as n,t as r}from"./api-DygAf_G_.js";import{_ as i,l as a,n as o}from"./render-DHNtorUk.js";import{n as s}from"./ws-wAkHWH8w.js";import{n as c,r as l,t as u}from"./constants-2eOyiA6N.js";var d={"React/Vue 기반 UI 컴포넌트 개발, 스타일링":`frontend`,"API 서버, DB 스키마, 비즈니스 로직 구현":`backend`,"프론트엔드와 백엔드 모두 담당":`frontend`,"CI/CD, Docker, 인프라 자동화":`backend`,"테스트 작성, 버그 재현, 품질 관리":`custom`,"데이터 파이프라인, ETL, 분석 쿼리":`data`,"API 문서화, README, 가이드 작성":`docs`,"UI/UX 구현, CSS, 컴포넌트 개발":`frontend`,"API, DB, 서버 로직 구현":`backend`,"데이터 파이프라인, 분석, ML":`data`,"문서화, README, API docs":`docs`,"UI/UX, CSS, components":`frontend`,"API, DB, server logic":`backend`,"Data pipeline, analysis, ML":`data`,"Documentation, README, API docs":`docs`},f={1:`#60a5fa`,2:`#a78bfa`,3:`#34d399`,4:`#fbbf24`,5:`#f472b6`};function p(e,t){if(e!==`claude`)return t||`default`;let n=(t||``).trim();switch(n){case`claude-opus-4-6[1m]`:case`claude-opus-4-6`:case`claude-opus-4-7[1m]`:case`claude-opus-4-7`:case`opus[1m]`:return`opus`;case`claude-sonnet-4-6[1m]`:return`sonnet[1m]`;case`claude-sonnet-4-6`:case`claude-sonnet-4-5`:return`sonnet`;case`claude-haiku-4-5`:case`claude-haiku-4-5-20251001`:return`haiku`;default:return n||`default`}}function m(e,t){return e===`claude`?t.includes(`sonnet`)?`sonnet`:t[0]||`default`:`default`}async function h(){e.employees=await r(`/api/employees`)||[],g()}function g(){let t=document.getElementById(`employeesList`);if(!t)return;let n=e.employees;if(n.length===0){t.innerHTML=`<div style="color:var(--text-dim);font-size:11px;padding:4px 0">${i(`emp.addPrompt`)}</div>`;return}let r=l();t.innerHTML=n.map(e=>{let t=e.source===`static`,n=u[e.cli]||[],l=p(e.cli,e.model),m=d[e.role||``],h=m?c.find(e=>e.value===m):c.find(t=>t.prompt===e.role),g=h?h.value:e.role?`custom`:`frontend`,_=g===`custom`,v=s(e.id),y=v?.phase||e.phase,b=v?.phaseLabel||e.phaseLabel,x=y?`<span style="background:${f[y]||`#888`};color:#000;padding:1px 6px;border-radius:9px;font-size:9px">${o(b||`P`+y)}</span>`:``,S=t?`<span style="background:#3b3b4f;color:#a78bfa;padding:1px 6px;border-radius:9px;font-size:9px;letter-spacing:0.3px">BUILT-IN</span>`:``,C=t?`border-left:2px solid #a78bfa;`:``,w=t?`<span style="flex:1;color:var(--text);font-size:12px;font-weight:600">${o(e.name||`Agent`)}</span>`:`<input style="flex:1;background:none;border:none;color:var(--text);font-size:12px;font-weight:600;font-family:inherit;outline:none" value="${o(e.name||`Agent`)}" data-emp-name="${o(e.id)}">`,T=t?``:`<button style="background:none;border:none;color:var(--text-dim);cursor:pointer;font-size:12px" data-emp-delete="${o(e.id)}" title="${i(`emp.delete`)}">${a.close}</button>`,E=t?`<select disabled title="CLI fixed for built-in employee"><option>${o(e.cli)}</option></select>`:`<select data-emp-cli="${o(e.id)}">${r.map(t=>`<option${e.cli===t?` selected`:``}>${o(t)}</option>`).join(``)}</select>`,D=t?`<div style="font-size:11px;color:var(--text-dim);padding:4px 0">${o(e.role||``)}</div>`:`<select data-emp-role="${o(e.id)}">${c.map(e=>`<option value="${e.value}"${g===e.value?` selected`:``}>${e.label}</option>`).join(``)}</select>
2
+ <textarea data-emp-custom="${o(e.id)}" style="display:${_?`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" placeholder="${i(`emp.customRole`)}">${_?o(e.role||``):``}</textarea>`;return`
3
3
  <div class="settings-group" style="margin-bottom:8px;padding:8px 10px;${C}">
4
4
  <div style="display:flex;align-items:center;gap:6px;margin-bottom:6px">
5
5
  <span style="width:8px;height:8px;border-radius:50%;background:var(--accent);display:inline-block;flex-shrink:0"></span>
@@ -14,10 +14,10 @@ import{t as e}from"./state-O6NVkWcL.js";import{n as t,r as n,t as r}from"./api-D
14
14
  </div>
15
15
  <div>
16
16
  <label>Model</label>
17
- <select data-emp-model="${a(e.id)}">
17
+ <select data-emp-model="${o(e.id)}">
18
18
  <option value="default"${l===`default`?` selected`:``}>default</option>
19
- ${n.map(e=>`<option${l===e?` selected`:``}>${a(e)}</option>`).join(``)}
20
- ${l!==`default`&&!n.includes(l)?`<option selected>${a(l)}</option>`:``}
19
+ ${n.map(e=>`<option${l===e?` selected`:``}>${o(e)}</option>`).join(``)}
20
+ ${l!==`default`&&!n.includes(l)?`<option selected>${o(l)}</option>`:``}
21
21
  <option value="__custom__">${i(`emp.customModel`)}</option>
22
22
  </select>
23
23
  </div>
@@ -27,7 +27,7 @@ import{t as e}from"./state-O6NVkWcL.js";import{n as t,r as n,t as r}from"./api-D
27
27
  ${D}
28
28
  </div>
29
29
  <div style="margin-top:4px;font-size:10px;display:flex;align-items:center;gap:6px">
30
- <span style="color:${e.status===`running`?`#fbbf24`:`var(--green)`}"><span style="display:inline-block;width:6px;height:6px;border-radius:50%;background:currentColor;vertical-align:middle;margin-right:4px"></span>${a(e.status||`idle`)}</span>
30
+ <span style="color:${e.status===`running`?`#fbbf24`:`var(--green)`}"><span style="display:inline-block;width:6px;height:6px;border-radius:50%;background:currentColor;vertical-align:middle;margin-right:4px"></span>${o(e.status||`idle`)}</span>
31
31
  ${x}
32
32
  </div>
33
- </div>`}).join(``)}async function _(){await n(`/api/employees`,`POST`,{})}async function v(e,t){await n(`/api/employees/${e}`,`PUT`,t)}async function y(e){t(`/api/employees/${e}`,`DELETE`)}function b(e,t){let n=u[t]||[],r=m(t,n),o=document.querySelector(`[data-emp-model="${e}"]`);o&&(o.innerHTML=`<option value="default">default</option>`+n.map(e=>`<option>${a(e)}</option>`).join(``)+`<option value="__custom__">${i(`emp.customModel`)}</option>`,o.value=r),v(e,{cli:t,model:r})}function x(e,t){let n=c.find(e=>e.value===t),r=document.querySelector(`[data-emp-custom="${e}"]`);r&&(t===`custom`?(r.style.display=`block`,r.focus()):(r.style.display=`none`,r.value=``,v(e,{role:n?.prompt||``})))}export{_ as addEmployee,y as deleteEmployee,h as loadEmployees,b as onEmpCliChange,x as onEmpRoleChange,g as renderEmployees,v as updateEmployee};
33
+ </div>`}).join(``)}async function _(){await n(`/api/employees`,`POST`,{})}async function v(e,t){await n(`/api/employees/${e}`,`PUT`,t)}async function y(e){t(`/api/employees/${e}`,`DELETE`)}function b(e,t){let n=u[t]||[],r=m(t,n),a=document.querySelector(`[data-emp-model="${e}"]`);a&&(a.innerHTML=`<option value="default">default</option>`+n.map(e=>`<option>${o(e)}</option>`).join(``)+`<option value="__custom__">${i(`emp.customModel`)}</option>`,a.value=r),v(e,{cli:t,model:r})}function x(e,t){let n=c.find(e=>e.value===t),r=document.querySelector(`[data-emp-custom="${e}"]`);r&&(t===`custom`?(r.style.display=`block`,r.focus()):(r.style.display=`none`,r.value=``,v(e,{role:n?.prompt||``})))}export{_ as addEmployee,y as deleteEmployee,h as loadEmployees,b as onEmpCliChange,x as onEmpRoleChange,g as renderEmployees,v as updateEmployee};
@@ -0,0 +1,32 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-render-Bjnw0wQ6.css"])))=>i.map(i=>d[i]);
2
+ import{n as e,t}from"./vendor-render-D2YP6GiF.js";import{t as n}from"./state-O6NVkWcL.js";import{i as r,n as i,r as a,t as o}from"./api-DygAf_G_.js";import{Z as s}from"./vendor-mermaid-UktBx7L0.js";import{_ as c,f as l,g as u,h as ee,i as te,l as d,m as ne,n as f,s as re,t as ie}from"./render-DHNtorUk.js";import{_ as ae,b as oe,h as se,l as ce,n as p,s as le,t as m,v as ue,y as de}from"./ui-BUfs2YT6.js";import{a as h,n as fe}from"./idb-cache-DbK81tgv.js";import{r as pe,t as me}from"./ws-wAkHWH8w.js";import{t as he}from"./locale-CxI5nTcf.js";import{a as ge,i as _e,n as ve,o as ye,r as be,t as xe}from"./slash-commands-DAObyBB2.js";import{i as Se,t as Ce}from"./skills-BrXYVU1p.js";import{a as we,r as Te}from"./constants-2eOyiA6N.js";import{A as Ee,D as De,E as Oe,F as ke,I as Ae,M as je,N as Me,O as g,P as Ne,S as Pe,_ as Fe,a as Ie,c as Le,f as Re,g as ze,h as Be,i as Ve,j as He,k as Ue,l as We,m as Ge,n as Ke,o as qe,p as Je,r as Ye,s as Xe,t as _,u as Ze,v,w as Qe,x as $e}from"./settings-BXig0Fq7.js";import{a as et,c as y,d as tt,f as nt,i as rt,l as it,m as at,n as ot,o as st,p as ct,r as lt,s as ut,t as dt,u as b}from"./memory-D6jlo74U.js";var x=[];function ft(e){return/^\/compact(?:\s|$)/i.test(String(e||``).trim())?300*1e3:1e4}var S=!1;async function C(){let e=document.getElementById(`chatInput`),t=document.getElementById(`btnSend`);if(!e||!t)return;let o=document.activeElement===t;if(t.classList.contains(`stop-mode`)&&o&&!e.value.trim()&&!n.attachedFiles.length){i(`/api/stop`,`POST`);return}if(S)return;let l=e.value.trim();if(!l&&!n.attachedFiles.length)return;S=!0;let u=t,ee=u.disabled;u.disabled=!0;try{let t=l.slice(1).trim().split(/\s+/)[0]||``,i=t.includes(`/`)||t.includes(`\\`);if(l.startsWith(`/`)&&!n.attachedFiles.length&&!i){e.value=``,D(),xe();try{let e,t,n=ft(l);if(typeof AbortSignal?.timeout==`function`)e=AbortSignal.timeout(n);else{let r=new AbortController;e=r.signal,t=setTimeout(()=>r.abort(),n)}let i=he(),o=await r(),s=await fetch(`/api/command`,{method:`POST`,headers:{"Content-Type":`application/json`,"Accept-Language":i,...o?{Authorization:`Bearer ${o}`}:{}},body:JSON.stringify({text:l,locale:i}),signal:e});t&&clearTimeout(t);let c=await s.json().catch(()=>({}));if(c?.code===`not_command`){m(`user`,l),h({role:`user`,content:l,timestamp:Date.now()}),await a(`/api/message`,`POST`,{prompt:l});return}if(!s.ok&&!c?.text)throw Error(`HTTP ${s.status}`);if(c?.code===`clear_screen`){ie(),ue().clear();let e=document.getElementById(`chatMessages`);e&&(e.innerHTML=``)}c?.text&&p(f(c.text),``,c.type)}catch(e){p(c(`chat.cmd.fail`,{msg:e.message}),``,`error`)}return}if(n.attachedFiles.length){let t=`📎 [${n.attachedFiles.map(e=>e.name).join(`, `)}] ${l}`;m(`user`,t),h({role:`user`,content:t,timestamp:Date.now()}),e.value=``,D();try{let e=(await Promise.all(n.attachedFiles.map(e=>mt(e)))).map(e=>c(`chat.file.sent`,{path:e})).join(`
3
+ `);l&&(e+=c(`chat.file.sentWithMsg`,{text:l})),T(),await a(`/api/message`,`POST`,{prompt:e})}catch(e){p(c(`chat.file.uploadFail`,{msg:e.message})),T()}}else{e.value=``,D();let t=await fetch(`/api/message`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({prompt:l})}),n=await t.json().catch(()=>({}));if(t.status===409&&n?.error===`duplicate`)return;if(!t.ok){p(`${d.error} ${f(n.error||c(`chat.requestFail`,{status:t.status}))}`,``,`error`);return}if(n.queued){let{updateQueueBadge:e}=await s(async()=>{let{updateQueueBadge:e}=await import(`./ui-CMkGUYqS.js`);return{updateQueueBadge:e}},__vite__mapDeps([0]));e(n.pending||1)}else n.continued?(m(`user`,l),h({role:`user`,content:l,timestamp:Date.now()}),p(c(`chat.continue`))):(m(`user`,l),h({role:`user`,content:l,timestamp:Date.now()}))}}finally{S=!1,u.disabled=ee}}function pt(e){e.key===`Enter`&&!e.shiftKey&&!e.isComposing&&(e.preventDefault(),C())}async function mt(e){let t=await fetch(`/api/upload`,{method:`POST`,headers:{"X-Filename":encodeURIComponent(e.name)},body:e});if(!t.ok)throw Error(`upload failed`);return(await t.json()).path}function w(e){for(let t of e)n.attachedFiles.some(e=>e.name===t.name)||n.attachedFiles.push(t);E(),document.getElementById(`chatInput`)?.focus()}function ht(e){n.attachedFiles.splice(e,1),E()}function T(){x.forEach(e=>URL.revokeObjectURL(e)),x=[],n.attachedFiles=[],E();let e=document.getElementById(`fileInput`);e&&(e.value=``)}function E(){let e=document.getElementById(`filePreview`),t=document.getElementById(`filePreviewList`);if(e){if(x.forEach(e=>URL.revokeObjectURL(e)),x=[],!n.attachedFiles.length){e.classList.remove(`visible`),t&&(t.innerHTML=``);return}e.classList.add(`visible`),t&&(t.innerHTML=n.attachedFiles.map((e,t)=>{let n=(e.size/1024).toFixed(1),r=e.type.startsWith(`image/`),i=``;if(r){let t=URL.createObjectURL(e);x.push(t),i=`<img src="${t}" class="file-chip-thumb" alt="">`}return`<div class="file-chip">
4
+ ${i}
5
+ <span class="file-chip-name">${d.paperclip} ${f(e.name)} (${n}KB)</span>
6
+ <button class="file-chip-remove" data-file-idx="${t}" title="Remove">${d.close}</button>
7
+ </div>`}).join(``))}}async function gt(){ie(),ue().clear();let e=document.getElementById(`chatMessages`);e&&(e.innerHTML=``);let{cleanupToolActivity:t}=await s(async()=>{let{cleanupToolActivity:e}=await import(`./ui-CMkGUYqS.js`);return{cleanupToolActivity:e}},__vite__mapDeps([0]));t(),fe().catch(()=>{})}var _t=0;function vt(e){_t||=requestAnimationFrame(()=>{_t=0,e.style.height=`auto`,e.style.height=e.scrollHeight+`px`})}function yt(){let e=document.getElementById(`chatInput`);e&&e.addEventListener(`input`,()=>vt(e))}function D(){let e=document.getElementById(`chatInput`);e&&(e.style.height=`auto`)}function bt(){let e=document.querySelector(`.chat-area`),t=document.getElementById(`dragOverlay`);if(!e||!t)return;let n=0;e.addEventListener(`dragenter`,e=>{e.preventDefault(),n++,t.classList.add(`visible`)}),e.addEventListener(`dragleave`,e=>{e.preventDefault(),n--,n<=0&&(n=0,t.classList.remove(`visible`))}),e.addEventListener(`dragover`,e=>e.preventDefault()),e.addEventListener(`drop`,e=>{e.preventDefault(),n=0,t.classList.remove(`visible`);let r=[...e.dataTransfer?.files||[]];r.length&&w(r)}),document.getElementById(`fileInput`)?.addEventListener(`change`,e=>{let t=e.target,n=[...t.files||[]];n.length&&w(n),t.value=``}),document.addEventListener(`paste`,e=>{let t=e.clipboardData?.items;if(!t)return;let n=[];for(let e of t){if(e.kind!==`file`)continue;let t=e.getAsFile();if(t)if(!t.name||t.name===`image.png`){let e=new Date().toISOString().replace(/[:.]/g,`-`),r=t.type.split(`/`)[1]||`png`,i=new File([t],`pasted-${e}.${r}`,{type:t.type});n.push(i)}else n.push(t)}n.length&&(e.preventDefault(),w(n))})}async function xt(e,t,r){let i=document.getElementById(`chatInput`),o=i?.value.trim()||``,s=[...n.attachedFiles],l=[`🎤 [음성 메시지]`];s.length&&l.push(`📎 [${s.map(e=>e.name).join(`, `)}]`),o&&l.push(o),m(`user`,l.join(` `)),h({role:`user`,content:l.join(` `),timestamp:Date.now()}),i&&o&&(i.value=``,D()),s.length&&T();try{let n=await fetch(`/api/voice`,{method:`POST`,headers:{"Content-Type":r,"X-Voice-Ext":t,"X-STT-Only":`true`},body:e});if(!n.ok){let e=await n.json().catch(()=>({}));throw Error(e.error||`HTTP ${n.status}`)}let i=await n.json().catch(()=>null);if(!i?.text)throw Error(`Empty STT result`);p(`${d.mic} STT (${f(i.engine||``)}, ${i.elapsed?.toFixed(1)}s): "${f(i.text.slice(0,100))}"`,``,`info`);let l=[];s.length&&(l=await Promise.all(s.map(e=>mt(e))));let u=[];for(let e of l)u.push(c(`chat.file.sent`,{path:e}));u.push(`🎤 ${i.text}`),o&&u.push(o),await a(`/api/message`,`POST`,{prompt:u.join(`
8
+ `)})}catch(e){p(c(`voice.sttFail`,{msg:e.message}),``,`error`)}}var St={sun:0,mon:1,tue:2,wed:3,thu:4,fri:5,sat:6},Ct={jan:1,feb:2,mar:3,apr:4,may:5,jun:6,jul:7,aug:8,sep:9,oct:10,nov:11,dec:12};function wt(e){let t=typeof e==`string`?e.trim():``;if(t)try{return new Intl.DateTimeFormat(`en-US`,{timeZone:t}).format(new Date),t}catch{return}}function Tt(e){let t=e&&typeof e==`object`?e:{},n=t.kind,r=typeof t.timeZone==`string`?t.timeZone.trim():``,i=wt(t.timeZone);if(r&&!i)return{ok:!1,code:`invalid_timezone`,error:`invalid timeZone "${r}"`};if(n===`cron`){let e=typeof t.cron==`string`?t.cron.trim().replace(/\s+/g,` `):``;if(!e)return{ok:!1,code:`invalid_cron`,error:`cron expression required`};let n=Et(e);return n?{ok:!1,code:`invalid_cron`,error:n}:{ok:!0,schedule:i?{kind:`cron`,cron:e,timeZone:i}:{kind:`cron`,cron:e}}}if(n==null||n===`every`){let e=typeof t.minutes==`number`?t.minutes:Number(t.minutes);if(!Number.isInteger(e)||e<1)return{ok:!1,code:`invalid_minutes`,error:`minutes must be an integer >= 1`};let n=Math.max(1,Math.floor(e));return{ok:!0,schedule:i?{kind:`every`,minutes:n,timeZone:i}:{kind:`every`,minutes:n}}}return{ok:!1,code:`invalid_kind`,error:`invalid heartbeat schedule kind "${String(n)}"`}}function Et(e){try{let[t,n,r,i,a]=Dt(e);return O(t,{min:0,max:59}),O(n,{min:0,max:23}),O(r,{min:1,max:31}),O(i,{min:1,max:12,aliases:Ct}),O(a,{min:0,max:7,aliases:St,normalize:At}),null}catch(e){return e.message}}function Dt(e){let t=String(e||``).trim().replace(/\s+/g,` `).split(` `);if(t.length!==5)throw Error(`cron must have 5 fields, got ${t.length}`);return t}function O(e,t){for(let n of e.split(`,`))Ot(n.trim(),t)}function Ot(e,t){if(!e)throw Error(`empty cron segment`);let n=e;if(e.includes(`/`)){let[t,r,...i]=e.split(`/`);if(!t||!r||i.length>0)throw Error(`invalid cron step segment "${e}"`);n=t,kt(r,`invalid cron step "${r}"`)}if(n!==`*`){if(n.includes(`-`)){let[e,r,...i]=n.split(`-`);if(!e||!r||i.length>0||k(e,t)>k(r,t))throw Error(`invalid cron range "${n}"`);return}k(n,t)}}function k(e,t){let n=e.trim().toLowerCase(),r=t.aliases?.[n]??Number(n);if(!Number.isInteger(r))throw Error(`invalid cron value "${e}"`);let i=t.normalize?t.normalize(r):r;if(!jt(i,t.min,t.max))throw Error(`cron value "${e}" out of range ${t.min}-${t.max}`);return i}function kt(e,t){let n=Number(e);if(!Number.isInteger(n)||n<=0)throw Error(t);return n}function At(e){return e===7?0:e}function jt(e,t,n){return e>=t&&e<=n}async function Mt(){n.heartbeatJobs=((await o(`/api/heartbeat`))?.jobs||[]).map(M),n.heartbeatErrors=P(n.heartbeatJobs),A(),document.getElementById(`heartbeatModal`)?.classList.add(`open`)}function Nt(e){e&&e.target!==e.currentTarget||document.getElementById(`heartbeatModal`)?.classList.remove(`open`)}function A(){let e=document.getElementById(`hbJobsList`);if(!e)return;let t=n.heartbeatJobs.map(M);n.heartbeatJobs=t,n.heartbeatErrors=P(t),t.length===0?e.innerHTML=`<p style="color:var(--text-dim);font-size:12px;text-align:center">${c(`hb.empty`)}</p>`:e.innerHTML=t.map((e,t)=>{let r=Rt(e.schedule),i=r.kind===`cron`,a=n.heartbeatErrors[e.id],o=a||Wt(r),s=a?`hb-schedule-meta hb-error`:`hb-schedule-meta hb-help`,l=i?`<input type="text" value="${f(r.cron)}" placeholder="${f(c(`hb.cronPlaceholder`))}"
9
+ data-hb-cron="${t}">`:`<input type="number" value="${r.minutes}" min="1" data-hb-minutes="${t}">`,u=i?`<span class="hb-chip">${f(c(`hb.cronLabel`))}</span>`:`<span class="hb-chip">${f(c(`hb.minutesLabel`))}</span>`;return`
10
+ <div class="hb-job-card">
11
+ <div class="hb-job-header">
12
+ <input type="text" value="${f(String(e.name||``))}" placeholder="${f(c(`hb.name`))}"
13
+ data-hb-name="${t}">
14
+ <button class="hb-toggle ${e.enabled?`on`:`off`}"
15
+ data-hb-toggle="${t}" aria-label="${f(String(e.name||`job`)+` toggle`)}"></button>
16
+ <button class="hb-del" data-hb-remove="${t}">${d.close}</button>
17
+ </div>
18
+ <div class="hb-job-schedule">
19
+ <select data-hb-kind="${t}">
20
+ <option value="every"${i?``:` selected`}>${f(c(`hb.kindEvery`))}</option>
21
+ <option value="cron"${i?` selected`:``}>${f(c(`hb.kindCron`))}</option>
22
+ </select>
23
+ ${l}
24
+ ${u}
25
+ <input type="text" value="${f(r.timeZone||``)}" placeholder="${f(Vt())}"
26
+ data-hb-timezone="${t}">
27
+ </div>
28
+ <p class="${s}">${f(o)}</p>
29
+ <textarea class="hb-prompt" rows="2" placeholder="${f(c(`hb.prompt`))}"
30
+ data-hb-prompt="${t}">${f(String(e.prompt||``))}</textarea>
31
+ </div>
32
+ `}).join(``);let r=t.filter(e=>e.enabled).length,i=document.getElementById(`hbSidebarBtn`);i&&(i.innerHTML=`${d.heartPulse} Heartbeat (${r})`)}function Pt(){n.heartbeatJobs.push({id:`hb_`+Date.now(),name:``,enabled:!0,schedule:Bt({kind:`every`,minutes:5}),prompt:``}),A(),j()}function Ft(e){n.heartbeatJobs.splice(e,1),A(),j()}function It(e){let t=n.heartbeatJobs[e];t&&(t.enabled=!t.enabled,A(),j())}async function j(){let e=n.heartbeatJobs.map(M);if(n.heartbeatJobs=e,n.heartbeatErrors=P(e),Object.keys(n.heartbeatErrors).length>0){A();return}let t=await a(`/api/heartbeat`,`PUT`,{jobs:e});t?.jobs&&(n.heartbeatJobs=t.jobs.map(M),n.heartbeatErrors=P(n.heartbeatJobs),A())}async function Lt(){try{let e=((await o(`/api/heartbeat`))?.jobs||[]).map(M).filter(e=>e.enabled).length,t=document.getElementById(`hbSidebarBtn`);t&&(t.innerHTML=`${d.heartPulse} Heartbeat (${e})`)}catch{}}function M(e){return{id:String(e.id||`hb_${Date.now()}`),name:String(e.name||``),enabled:e.enabled!==!1,schedule:Rt(e.schedule),prompt:String(e.prompt||``)}}function Rt(e){let t=zt(e?.timeZone);if(e?.kind===`cron`){let n=typeof e.cron==`string`?e.cron.trim().replace(/\s+/g,` `):`0 9 * * *`;return t?{kind:`cron`,cron:n,timeZone:t}:{kind:`cron`,cron:n}}let n=typeof e?.minutes==`number`&&Number.isFinite(e.minutes)&&e.minutes>0?Math.max(1,Math.floor(e.minutes)):5;return t?{kind:`every`,minutes:n,timeZone:t}:{kind:`every`,minutes:n}}function zt(e){return(typeof e==`string`?e.trim():``)||void 0}function Bt(e){let t=N();return t?{...e,timeZone:t}:e}function N(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone||void 0}catch{return}}function Vt(){let e=N();return e?`${c(`hb.timezoneAuto`)} ${e}`:c(`hb.timezoneAuto`)}function P(e){let t={};for(let n of e){let e=Ht(n);e&&(t[n.id]=e)}return t}function Ht(e){let t=Tt(e.schedule);return t.ok?null:Ut(t.code,t.error)}function Ut(e,t){switch(e){case`invalid_cron`:return c(`hb.invalidCron`);case`invalid_timezone`:return c(`hb.invalidTimeZone`);case`invalid_minutes`:return c(`hb.invalidMinutes`);default:return t||c(`hb.invalidSchedule`)}}function Wt(e){let t=e.timeZone||N()||`Asia/Seoul`;return e.kind===`cron`?c(`hb.scheduleHintCron`,{cron:`0 9 * * *`,timeZone:t}):c(`hb.scheduleHintEvery`,{minutes:e.minutes,timeZone:t})}var F=`sidebarState`,I=900,Gt=768;function L(){return window.innerWidth<=Gt}function R(){document.body.classList.remove(`left-expanded`,`right-expanded`)}function Kt(e){let t=`${e}-expanded`,n=e===`left`?`right-expanded`:`left-expanded`,r=!document.body.classList.contains(t);document.body.classList.remove(n),document.body.classList.toggle(t,r)}function qt(){let e={};try{e=JSON.parse(localStorage.getItem(F)||`{}`)}catch{}e.left&&document.body.classList.add(`left-collapsed`),e.right&&document.body.classList.add(`right-collapsed`);let t=L();document.getElementById(`toggleLeft`)?.addEventListener(`click`,B),document.getElementById(`toggleRight`)?.addEventListener(`click`,V),window.addEventListener(`resize`,()=>{let e=L();if(window.innerWidth>I){R();let e={};try{e=JSON.parse(localStorage.getItem(F)||`{}`)}catch{}document.body.classList.toggle(`left-collapsed`,!!e.left),document.body.classList.toggle(`right-collapsed`,!!e.right)}else document.body.classList.remove(`left-collapsed`,`right-collapsed`),e!==t&&R();t=e,H()}),window.innerWidth<=I&&(document.body.classList.remove(`left-collapsed`,`right-collapsed`),L()&&R()),H()}function z(){return window.innerWidth<=I}function B(){z()?Kt(`left`):document.body.classList.toggle(`left-collapsed`),Xt(),H()}function V(){z()?Kt(`right`):document.body.classList.toggle(`right-collapsed`),Xt(),H()}function Jt(){return z()?document.body.classList.contains(`left-expanded`):!document.body.classList.contains(`left-collapsed`)}function Yt(){return z()?document.body.classList.contains(`right-expanded`):!document.body.classList.contains(`right-collapsed`)}function H(){let e=document.getElementById(`toggleLeft`),t=document.getElementById(`toggleRight`);e&&(e.innerHTML=Jt()?d.chevronLeft:d.chevronRight),t&&(t.innerHTML=Yt()?d.chevronRight:d.chevronLeft)}function Xt(){localStorage.setItem(F,JSON.stringify({left:document.body.classList.contains(`left-collapsed`),right:document.body.classList.contains(`right-collapsed`)}))}var Zt=`theme`,U=null;function Qt(n){let r=n===`light`?t:e;U||(U=document.createElement(`style`),U.id=`hljsTheme`,document.head.appendChild(U)),U.textContent=r}function $t(){let e=localStorage.getItem(Zt),t=window.matchMedia(`(prefers-color-scheme: light)`).matches?`light`:`dark`;tn(e||t),document.getElementById(`toggleTheme`)?.addEventListener(`click`,en)}function en(){let e=(document.documentElement.getAttribute(`data-theme`)||`dark`)===`dark`?`light`:`dark`;tn(e),localStorage.setItem(Zt,e)}function tn(e){document.documentElement.setAttribute(`data-theme`,e);let t=document.getElementById(`toggleTheme`);t&&t.classList.toggle(`is-light`,e===`light`),Qt(e),ae(),re()}var nn=50,rn=30,an=80,on=500,W=null,sn=!1;function cn(){if(sn||!(`ontouchstart`in window))return;sn=!0;let e=document.querySelector(`.chat-area`);e&&(e.addEventListener(`touchstart`,ln,{passive:!0}),e.addEventListener(`touchend`,un,{passive:!0}))}function ln(e){let t=e.touches[0],n=window.innerWidth,r=null;t.clientX<rn?r=`left`:t.clientX>n-rn&&(r=`right`),W={startX:t.clientX,startY:t.clientY,startTime:Date.now(),isEdge:r}}function un(e){if(!W)return;let t=e.changedTouches[0],n=t.clientX-W.startX,r=Math.abs(t.clientY-W.startY),i=Date.now()-W.startTime,a=W;W=null,!(r>an||i>on||Math.abs(n)<nn)&&(n>0&&a.isEdge===`left`&&B(),n<0&&a.isEdge===`right`&&V())}var G=!1,K=null,q=[],J=null,Y=null,dn=0;function fn(){if(typeof MediaRecorder>`u`)return``;for(let e of[`audio/webm;codecs=opus`,`audio/mp4`,`audio/ogg;codecs=opus`])if(MediaRecorder.isTypeSupported(e))return e;return``}function pn(e){let t=e;switch(t.name){case`NotAllowedError`:return c(`voice.micDenied`);case`NotFoundError`:return c(`voice.micNotFound`);case`NotReadableError`:case`AbortError`:return c(`voice.micBusy`);default:return t instanceof TypeError||!navigator.mediaDevices?c(`voice.httpsRequired`):c(`voice.micDenied`)}}async function mn(){if(n.isRecording)return;if(typeof MediaRecorder>`u`||!navigator.mediaDevices?.getUserMedia){p(c(`voice.unsupported`),``,`error`);return}try{J=await navigator.mediaDevices.getUserMedia({audio:!0})}catch(e){p(pn(e),``,`error`);return}let e=fn();K=new MediaRecorder(J,e?{mimeType:e}:{}),q=[],K.ondataavailable=e=>{e.data.size>0&&q.push(e.data)},K.onerror=()=>{hn(),p(c(`voice.interrupted`),``,`error`)},K.onstop=async()=>{if(G){q=[],vn(),G=!1;return}let t=K?.mimeType||e||`audio/webm`,n=t.includes(`mp4`)?`.m4a`:t.includes(`ogg`)?`.ogg`:`.webm`,r=new Blob(q,{type:t});if(q=[],vn(),r.size>20*1024*1024){p(c(`voice.tooLarge`),``,`error`);return}if(r.size<1e3){p(c(`voice.tooShort`),``,`error`);return}await xt(r,n,t)},K.start(),n.isRecording=!0,dn=Date.now(),X(!0),yn()}function hn(){!n.isRecording||!K||(K.state===`recording`&&K.stop(),n.isRecording=!1,bn(),X(!1))}function gn(){!n.isRecording||!K||(G=!0,K.state===`recording`&&K.stop(),n.isRecording=!1,bn(),X(!1))}function _n(){n.isRecording?hn():mn()}function vn(){J?.getTracks().forEach(e=>e.stop()),J=null}function yn(){let e=document.getElementById(`voiceTimer`);e&&(e.style.display=`inline`,Y=setInterval(()=>{let t=Math.floor((Date.now()-dn)/1e3);e.textContent=`${String(Math.floor(t/60)).padStart(2,`0`)}:${String(t%60).padStart(2,`0`)}`},500))}function bn(){Y&&=(clearInterval(Y),null);let e=document.getElementById(`voiceTimer`);e&&(e.style.display=`none`,e.textContent=`00:00`)}function X(e){let t=document.getElementById(`btnVoice`),n=document.getElementById(`btnVoiceCancel`);t&&(t.classList.toggle(`recording`,e),t.innerHTML=e?d.stop:d.mic,t.title=c(e?`voice.stop`:`voice.start`)),n&&(n.style.display=e?`inline-block`:`none`)}var Z=`jaw:stale-bundle-reload-pending`;function xn(e){let t=typeof e==`string`?e:e instanceof Error||typeof e?.message==`string`?e.message:``;if(!/(failed to fetch dynamically imported module|error loading dynamically imported module|importing a module script failed|chunkloaderror)/i.test(t))return!1;console.warn(`[stale-bundle] detected dynamic import failure:`,t);try{if(sessionStorage.getItem(Z)===`1`)return!0;sessionStorage.setItem(Z,`1`)}catch{}let n=()=>window.location.reload();return`serviceWorker`in navigator?(navigator.serviceWorker.getRegistration().then(e=>e?.update()).catch(()=>{}).finally(n),!0):(n(),!0)}window.addEventListener(`unhandledrejection`,e=>{if(xn(e.reason)){e.preventDefault();return}console.error(`[unhandled]`,e.reason),e.preventDefault()}),window.addEventListener(`error`,e=>{if(xn(e.error||e.message)){e.preventDefault();return}console.error(`[error]`,e.message,e.filename,e.lineno)});var{loadEmployees:Sn,addEmployee:Cn,deleteEmployee:wn,updateEmployee:Q,onEmpCliChange:Tn,onEmpRoleChange:En}=await s(async()=>{let{loadEmployees:e,addEmployee:t,deleteEmployee:n,updateEmployee:r,onEmpCliChange:i,onEmpRoleChange:a}=await import(`./employees-lW91UfoX.js`);return{loadEmployees:e,addEmployee:t,deleteEmployee:n,updateEmployee:r,onEmpCliChange:i,onEmpRoleChange:a}},__vite__mapDeps([0]));document.getElementById(`btnSend`)?.addEventListener(`click`,C);var Dn=document.getElementById(`chatInput`);Dn?.addEventListener(`keydown`,e=>{be(e)||pt(e)});var $=0;Dn?.addEventListener(`input`,e=>{e.isComposing||($&&cancelAnimationFrame($),$=requestAnimationFrame(()=>{ye(e.target?.value||``),$=0}))}),Dn?.addEventListener(`cmd-execute`,()=>{C()}),document.getElementById(`cmdDropdown`)?.addEventListener(`click`,ve),document.addEventListener(`click`,_e),pe(),document.getElementById(`filePreviewClear`)?.addEventListener(`click`,T),document.getElementById(`filePreviewList`)?.addEventListener(`click`,e=>{let t=e.target?.closest(`[data-file-idx]`);t&&ht(+(t.dataset.fileIdx||`0`))}),document.querySelector(`.btn-attach`)?.addEventListener(`click`,()=>{document.getElementById(`fileInput`)?.click()}),document.getElementById(`btnVoice`)?.addEventListener(`click`,()=>_n()),document.getElementById(`btnVoiceCancel`)?.addEventListener(`click`,()=>gn()),document.getElementById(`memorySidebarBtn`)?.addEventListener(`click`,rt),document.getElementById(`btnClearChat`)?.addEventListener(`click`,gt),document.getElementById(`hbSidebarBtn`)?.addEventListener(`click`,Mt),document.getElementById(`langToggle`)?.addEventListener(`click`,async()=>{let e=ne()===`ko`?`en`:`ko`;await u(e);let t=document.getElementById(`langToggle`);t&&(t.innerHTML=`${d.web} ${c(`lang.`+e)}`),n.ws&&n.ws.close()}),document.querySelector(`.tab-bar`)?.addEventListener(`click`,e=>{let t=e.target?.closest(`.tab-btn`);if(!t)return;let n=[...t.parentElement?.children||[]].filter(e=>e.classList.contains(`tab-btn`)).indexOf(t),r=[`agents`,`skills`,`settings`];r[n]&&se(r[n],t)}),document.querySelector(`.sidebar-save-bar .btn-save`)?.addEventListener(`click`,le),document.getElementById(`selCli`)?.addEventListener(`change`,()=>Be()),document.getElementById(`selModel`)?.addEventListener(`change`,()=>Fe()),document.getElementById(`selEffort`)?.addEventListener(`change`,()=>Fe()),document.getElementById(`flushCli`)?.addEventListener(`change`,()=>ze()),document.getElementById(`flushModel`)?.addEventListener(`change`,()=>ze()),document.querySelector(`[data-action="addEmployee"]`)?.addEventListener(`click`,Cn),document.getElementById(`employeesList`)?.addEventListener(`click`,e=>{let t=e.target?.closest(`[data-emp-delete]`);if(t){wn(t.dataset.empDelete||``);return}}),document.getElementById(`employeesList`)?.addEventListener(`change`,e=>{let t=e.target,n=t.closest(`[data-emp-name]`);if(n){Q(n.dataset.empName||``,{name:t.value});return}let r=t.closest(`[data-emp-cli]`);if(r){Tn(r.dataset.empCli||``,t.value);return}let i=t.closest(`[data-emp-model]`);if(i){if(t.value===`__custom__`){let e=prompt(c(`model.promptInput`));if(e?.trim()){let n=document.createElement(`option`);n.value=e.trim(),n.textContent=e.trim();let r=t.querySelector(`option[value="__custom__"]`);r&&t.insertBefore(n,r),t.value=e.trim(),Q(i.dataset.empModel||``,{model:e.trim()})}else t.value=`default`}else Q(i.dataset.empModel||``,{model:t.value});return}let a=t.closest(`[data-emp-role]`);if(a){En(a.dataset.empRole||``,t.value);return}let o=t.closest(`[data-emp-custom]`);if(o){Q(o.dataset.empCustom||``,{role:t.value});return}}),document.getElementById(`skillsList`)?.addEventListener(`click`,e=>{let t=e.target?.closest(`[data-skill-id]`);t&&Se(t.dataset.skillId||``,t.dataset.skillEnabled===`true`)}),document.querySelector(`#tabSkills`)?.addEventListener(`click`,e=>{let t=e.target?.closest(`.skill-filter`);t&&Ce(t.dataset.filter||`all`,t)}),document.querySelector(`[data-action="openPrompt"]`)?.addEventListener(`click`,Ye),document.getElementById(`tgOff`)?.addEventListener(`click`,()=>ke(!1)),document.getElementById(`tgOn`)?.addEventListener(`click`,()=>ke(!0)),document.getElementById(`tgForwardOff`)?.addEventListener(`click`,()=>Ne(!1)),document.getElementById(`tgForwardOn`)?.addEventListener(`click`,()=>Ne(!0)),document.getElementById(`tgMentionOff`)?.addEventListener(`click`,()=>Ae(!1)),document.getElementById(`tgMentionOn`)?.addEventListener(`click`,()=>Ae(!0)),document.getElementById(`tgToken`)?.addEventListener(`change`,Me),document.getElementById(`tgChatIds`)?.addEventListener(`change`,Me),document.getElementById(`chTelegram`)?.addEventListener(`click`,()=>De(`telegram`)),document.getElementById(`chDiscord`)?.addEventListener(`click`,()=>De(`discord`)),document.getElementById(`dcOff`)?.addEventListener(`click`,()=>Ue(!1)),document.getElementById(`dcOn`)?.addEventListener(`click`,()=>Ue(!0)),document.getElementById(`dcForwardOff`)?.addEventListener(`click`,()=>He(!1)),document.getElementById(`dcForwardOn`)?.addEventListener(`click`,()=>He(!0)),document.getElementById(`dcAllowBotsOff`)?.addEventListener(`click`,()=>Ee(!1)),document.getElementById(`dcAllowBotsOn`)?.addEventListener(`click`,()=>Ee(!0)),document.getElementById(`dcMentionOff`)?.addEventListener(`click`,()=>je(!1)),document.getElementById(`dcMentionOn`)?.addEventListener(`click`,()=>je(!0)),document.getElementById(`dcToken`)?.addEventListener(`change`,g),document.getElementById(`dcGuildId`)?.addEventListener(`change`,g),document.getElementById(`dcChannelIds`)?.addEventListener(`change`,g),document.getElementById(`fallbackOrderList`)?.addEventListener(`change`,Oe);function On(e){let t=document.getElementById(`codexFastOn`),n=document.getElementById(`codexFastOff`);t&&n&&(t.classList.toggle(`active`,e),n.classList.toggle(`active`,!e)),v()}document.getElementById(`codexFastOn`)?.addEventListener(`click`,()=>On(!0)),document.getElementById(`codexFastOff`)?.addEventListener(`click`,()=>On(!1));function kn(e){let t=document.getElementById(`codexCtxOn`),n=document.getElementById(`codexCtxOff`),r=document.getElementById(`codexCtxValues`);t&&n&&(t.classList.toggle(`active`,e),n.classList.toggle(`active`,!e)),r&&(r.style.display=e?``:`none`),v()}document.getElementById(`codexCtxOn`)?.addEventListener(`click`,()=>kn(!0)),document.getElementById(`codexCtxOff`)?.addEventListener(`click`,()=>kn(!1)),document.getElementById(`codexCtxWindow`)?.addEventListener(`change`,v),document.getElementById(`codexCtxCompact`)?.addEventListener(`change`,v);function An(e){let t=document.getElementById(`claude1mOn`),n=document.getElementById(`claude1mOff`),r=document.getElementById(`modelClaude`),i=e;if(r){let t=r.value||``;if(e&&!t.endsWith(`[1m]`)){let e=t+`[1m]`;Array.from(r.options).some(t=>t.value===e)?r.value=e:i=!1}else if(!e&&t.endsWith(`[1m]`)){let e=t.replace(/\[1m\]$/,``);Array.from(r.options).some(t=>t.value===e)?r.value=e:i=!0}else i=t.endsWith(`[1m]`)}t&&n&&(t.classList.toggle(`active`,i),n.classList.toggle(`active`,!i)),v()}document.getElementById(`claude1mOn`)?.addEventListener(`click`,()=>An(!0)),document.getElementById(`claude1mOff`)?.addEventListener(`click`,()=>An(!1));function jn(){for(let e of Te()){let t=e.charAt(0).toUpperCase()+e.slice(1),n=document.getElementById(`model`+t);n&&n.addEventListener(`change`,function(){Re(e,this)});let r=document.getElementById(`customModel`+t);r&&r.addEventListener(`change`,function(){Ze(e,this)});let i=document.getElementById(`effort`+t);i&&i.addEventListener(`change`,v)}}document.querySelector(`[data-action="syncMcp"]`)?.addEventListener(`click`,Qe),document.querySelector(`[data-action="installMcp"]`)?.addEventListener(`click`,Pe),document.querySelector(`[data-action="refreshCli"]`)?.addEventListener(`click`,()=>We(!0)),document.getElementById(`cliStatusInterval`)?.addEventListener(`change`,function(){localStorage.setItem(`cliStatusInterval`,this.value)}),document.getElementById(`promptModal`)?.addEventListener(`click`,e=>_(e)),document.querySelector(`#promptModal .modal-box`)?.addEventListener(`click`,e=>e.stopPropagation()),document.querySelector(`[data-action="closePrompt"]`)?.addEventListener(`click`,()=>_()),document.querySelector(`[data-action="cancelPrompt"]`)?.addEventListener(`click`,()=>_()),document.querySelector(`[data-action="savePrompt"]`)?.addEventListener(`click`,Ie),document.addEventListener(`keydown`,e=>{e.key===`Escape`&&!n.isRecording&&_()}),document.querySelector(`[data-action="openTemplates"]`)?.addEventListener(`click`,Ve),document.querySelector(`[data-action="saveTemplate"]`)?.addEventListener(`click`,qe),document.querySelector(`[data-action="closeTemplate"]`)?.addEventListener(`click`,()=>Ke()),document.getElementById(`templateModal`)?.addEventListener(`click`,e=>Ke(e)),document.querySelector(`#templateModal .modal-box`)?.addEventListener(`click`,e=>e.stopPropagation()),document.getElementById(`templateBack`)?.addEventListener(`click`,Xe),document.getElementById(`templateDevToggle`)?.addEventListener(`click`,Le),document.getElementById(`heartbeatModal`)?.addEventListener(`click`,e=>Nt(e)),document.querySelector(`#heartbeatModal .modal-box`)?.addEventListener(`click`,e=>e.stopPropagation()),document.querySelector(`[data-action="closeHeartbeat"]`)?.addEventListener(`click`,()=>Nt()),document.querySelector(`[data-action="addHeartbeat"]`)?.addEventListener(`click`,Pt),document.getElementById(`hbJobsList`)?.addEventListener(`click`,e=>{let t=e.target?.closest(`[data-hb-toggle]`);if(t){It(+(t.dataset.hbToggle||`0`));return}let n=e.target?.closest(`[data-hb-remove]`);if(n){Ft(+(n.dataset.hbRemove||`0`));return}}),document.getElementById(`hbJobsList`)?.addEventListener(`change`,e=>{let t=e.target,r=t.closest(`[data-hb-name]`);if(r){n.heartbeatJobs[+(r.dataset.hbName||`0`)].name=t.value,j();return}let i=t.closest(`[data-hb-kind]`);if(i){let e=+(i.dataset.hbKind||`0`),r=n.heartbeatJobs[e]?.schedule,a=typeof r?.timeZone==`string`?r.timeZone:void 0;n.heartbeatJobs[e].schedule=t.value===`cron`?{kind:`cron`,cron:typeof r?.cron==`string`&&r.cron.trim()?r.cron:`0 9 * * *`,...a?{timeZone:a}:{}}:{kind:`every`,minutes:typeof r?.minutes==`number`&&r.minutes>0?Math.floor(r.minutes):5,...a?{timeZone:a}:{}},A(),j();return}let a=t.closest(`[data-hb-minutes]`);if(a){let e=+(a.dataset.hbMinutes||`0`),r=n.heartbeatJobs[e]?.schedule,i=Math.max(1,Math.floor(Number(t.value)||5)),o=typeof r?.timeZone==`string`?r.timeZone:void 0;n.heartbeatJobs[e].schedule={kind:`every`,minutes:i,...o?{timeZone:o}:{}},A(),j();return}let o=t.closest(`[data-hb-cron]`);if(o){let e=+(o.dataset.hbCron||`0`),r=n.heartbeatJobs[e]?.schedule,i=typeof r?.timeZone==`string`?r.timeZone:void 0,a=t.value.trim().replace(/\s+/g,` `);n.heartbeatJobs[e].schedule={kind:`cron`,cron:a,...i?{timeZone:i}:{}},A(),j();return}let s=t.closest(`[data-hb-timezone]`);if(s){let e=+(s.dataset.hbTimezone||`0`),r=n.heartbeatJobs[e]?.schedule;r?.kind===`cron`?n.heartbeatJobs[e].schedule={kind:`cron`,cron:typeof r.cron==`string`&&r.cron.trim()?r.cron:`0 9 * * *`,...t.value.trim()?{timeZone:t.value.trim()}:{}}:n.heartbeatJobs[e].schedule={kind:`every`,minutes:typeof r?.minutes==`number`&&r.minutes>0?Math.floor(r.minutes):5,...t.value.trim()?{timeZone:t.value.trim()}:{}},A(),j();return}let c=t.closest(`[data-hb-prompt]`);if(c){n.heartbeatJobs[+(c.dataset.hbPrompt||`0`)].prompt=t.value,j();return}}),document.getElementById(`memoryModal`)?.addEventListener(`click`,e=>dt(e)),document.querySelector(`#memoryModal .modal-box`)?.addEventListener(`click`,e=>e.stopPropagation()),document.querySelector(`[data-action="closeMemory"]`)?.addEventListener(`click`,()=>dt()),document.getElementById(`memTabBtnSettings`)?.addEventListener(`click`,()=>b(`settings`)),document.getElementById(`memTabBtnAdvOps`)?.addEventListener(`click`,()=>b(`status`)),document.getElementById(`memTabBtnFiles`)?.addEventListener(`click`,()=>b(`files`)),document.getElementById(`memOn`)?.addEventListener(`click`,()=>it(!0)),document.getElementById(`memOff`)?.addEventListener(`click`,()=>it(!1)),document.getElementById(`memFlushEvery`)?.addEventListener(`change`,y),document.getElementById(`memRetention`)?.addEventListener(`change`,y),document.getElementById(`memFlushLang`)?.addEventListener(`change`,y),document.getElementById(`memFlushNowBtn`)?.addEventListener(`click`,nt),document.getElementById(`advBootstrapBtn`)?.addEventListener(`click`,ut),document.getElementById(`advReindexBtn`)?.addEventListener(`click`,st),document.getElementById(`advReimportBtn`)?.addEventListener(`click`,ut),document.getElementById(`advOpenCorruptedBtn`)?.addEventListener(`click`,lt),document.getElementById(`advStatusBanner`)?.addEventListener(`click`,e=>{e.target?.id===`advUpgradeSoulBtn`&&ct(),e.target?.id===`advSynthesizeSoulBtn`&&tt()}),document.getElementById(`basicMemoryFiles`)?.addEventListener(`click`,e=>{let t=e.target?.closest(`[data-mem-delete]`);if(t){e.stopPropagation(),ot(t.dataset.memDelete||``);return}let n=e.target?.closest(`[data-mem-view]`);if(n){at(n.dataset.memView||``);return}if(e.target?.closest(`[data-mem-back]`)){rt();return}});async function Mn(){l(),$e(),$t(),await ee();let e=document.getElementById(`langToggle`);e&&(e.innerHTML=`${d.web} ${c(`lang.`+ne())}`),await we(),jn(),me(),bt(),yt(),await ge(),await Ge(),Je(),We(),Sn(),Lt(),et(),oe(),await de(),qt(),ce(),cn();try{sessionStorage.removeItem(Z)}catch{}te(),`serviceWorker`in navigator&&navigator.serviceWorker.register(`/sw.js`).catch(()=>{})}Mn().catch(e=>{console.error(`[bootstrap]`,e)}),document.addEventListener(`keydown`,e=>{if(e.key===`Escape`){if(n.isRecording){e.preventDefault(),gn();return}document.querySelectorAll(`.modal-overlay.open`).forEach(e=>{e.classList.remove(`open`)})}(e.ctrlKey||e.metaKey)&&e.shiftKey&&e.code===`Space`&&(e.preventDefault(),_n())}),document.getElementById(`mobileMenuLeft`)?.addEventListener(`click`,B),document.getElementById(`mobileMenuRight`)?.addEventListener(`click`,V);