cli-jaw 2.17.44 → 2.17.45
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/README.ja.md +5 -7
- package/README.ko.md +5 -7
- package/README.md +19 -7
- package/README.zh-CN.md +5 -7
- package/dist/bin/commands/dispatch.js +93 -18
- package/dist/bin/commands/dispatch.js.map +1 -1
- package/dist/bin/commands/doctor.js +0 -70
- package/dist/bin/commands/doctor.js.map +1 -1
- package/dist/bin/commands/provider.js +16 -28
- package/dist/bin/commands/provider.js.map +1 -1
- package/dist/bin/commands/slack.js +65 -2
- package/dist/bin/commands/slack.js.map +1 -1
- package/dist/bin/commands/tui/slash-command-runner.js +1 -1
- package/dist/bin/commands/tui/slash-command-runner.js.map +1 -1
- package/dist/bin/commands/tui/types.js +0 -4
- package/dist/bin/commands/tui/types.js.map +1 -1
- package/dist/scripts/fresh-install-smoke.js +1 -1
- package/dist/scripts/fresh-install-smoke.js.map +1 -1
- package/dist/server.js +5 -3
- package/dist/server.js.map +1 -1
- package/dist/src/agent/args.js +1 -176
- package/dist/src/agent/args.js.map +1 -1
- package/dist/src/agent/claude-runtime-pool.js +11 -7
- package/dist/src/agent/claude-runtime-pool.js.map +1 -1
- package/dist/src/agent/cli-helpers.js +1 -3
- package/dist/src/agent/cli-helpers.js.map +1 -1
- package/dist/src/agent/error-classifier.js +1 -1
- package/dist/src/agent/error-classifier.js.map +1 -1
- package/dist/src/agent/error-cooldown.js +1 -3
- package/dist/src/agent/error-cooldown.js.map +1 -1
- package/dist/src/agent/events/claude.js +4 -56
- package/dist/src/agent/events/claude.js.map +1 -1
- package/dist/src/agent/events/helpers.js +3 -5
- package/dist/src/agent/events/helpers.js.map +1 -1
- package/dist/src/agent/events/index.js +12 -18
- package/dist/src/agent/events/index.js.map +1 -1
- package/dist/src/agent/kiro-runtime.js +3 -16
- package/dist/src/agent/kiro-runtime.js.map +1 -1
- package/dist/src/agent/lifecycle-handler.js +17 -12
- package/dist/src/agent/lifecycle-handler.js.map +1 -1
- package/dist/src/agent/native-runtime-run.js +7 -2
- package/dist/src/agent/native-runtime-run.js.map +1 -1
- package/dist/src/agent/prompt-context.js +4 -5
- package/dist/src/agent/prompt-context.js.map +1 -1
- package/dist/src/agent/resume-classifier.js +0 -5
- package/dist/src/agent/resume-classifier.js.map +1 -1
- package/dist/src/agent/runtime/acp/cursor-session.js +21 -3
- package/dist/src/agent/runtime/acp/cursor-session.js.map +1 -1
- package/dist/src/agent/runtime-pool.js +127 -51
- package/dist/src/agent/runtime-pool.js.map +1 -1
- package/dist/src/agent/session-persistence.js +1 -6
- package/dist/src/agent/session-persistence.js.map +1 -1
- package/dist/src/agent/spawn/resume.js +3 -3
- package/dist/src/agent/spawn/resume.js.map +1 -1
- package/dist/src/agent/spawn.js +27 -96
- package/dist/src/agent/spawn.js.map +1 -1
- package/dist/src/cli/claude-models.js +1 -1
- package/dist/src/cli/claude-models.js.map +1 -1
- package/dist/src/cli/cli-status-worker.js +1 -8
- package/dist/src/cli/cli-status-worker.js.map +1 -1
- package/dist/src/cli/compact.js +2 -6
- package/dist/src/cli/compact.js.map +1 -1
- package/dist/src/cli/employee-handler.js +4 -0
- package/dist/src/cli/employee-handler.js.map +1 -1
- package/dist/src/cli/handlers-completions.js +1 -1
- package/dist/src/cli/handlers-completions.js.map +1 -1
- package/dist/src/cli/handlers-runtime.js +18 -8
- package/dist/src/cli/handlers-runtime.js.map +1 -1
- package/dist/src/cli/handlers.js +3 -31
- package/dist/src/cli/handlers.js.map +1 -1
- package/dist/src/cli/opencodex-models.js +0 -5
- package/dist/src/cli/opencodex-models.js.map +1 -1
- package/dist/src/cli/readiness.js +1 -20
- package/dist/src/cli/readiness.js.map +1 -1
- package/dist/src/cli/registry-live.js +1 -51
- package/dist/src/cli/registry-live.js.map +1 -1
- package/dist/src/cli/registry.js +0 -64
- package/dist/src/cli/registry.js.map +1 -1
- package/dist/src/core/chat-sessions.js +3 -2
- package/dist/src/core/chat-sessions.js.map +1 -1
- package/dist/src/core/cli-detection.js +2 -178
- package/dist/src/core/cli-detection.js.map +1 -1
- package/dist/src/core/compact.js +2 -4
- package/dist/src/core/compact.js.map +1 -1
- package/dist/src/core/config.js +5 -4
- package/dist/src/core/config.js.map +1 -1
- package/dist/src/core/runtime-settings.js +5 -20
- package/dist/src/core/runtime-settings.js.map +1 -1
- package/dist/src/core/session-ops.js +4 -6
- package/dist/src/core/session-ops.js.map +1 -1
- package/dist/src/core/windows-launch-spec.js +1 -1
- package/dist/src/http/full-access.js +42 -0
- package/dist/src/http/full-access.js.map +1 -0
- package/dist/src/manager/proxy.js +1 -0
- package/dist/src/manager/proxy.js.map +1 -1
- package/dist/src/messaging/send.js +30 -8
- package/dist/src/messaging/send.js.map +1 -1
- package/dist/src/orchestrator/dispatch-admission.js +424 -0
- package/dist/src/orchestrator/dispatch-admission.js.map +1 -0
- package/dist/src/orchestrator/distribute.js +63 -21
- package/dist/src/orchestrator/distribute.js.map +1 -1
- package/dist/src/orchestrator/gateway.js +6 -4
- package/dist/src/orchestrator/gateway.js.map +1 -1
- package/dist/src/orchestrator/worker-registry.js +8 -1
- package/dist/src/orchestrator/worker-registry.js.map +1 -1
- package/dist/src/prompt/builder.js +40 -16
- package/dist/src/prompt/builder.js.map +1 -1
- package/dist/src/prompt/templates/employee.md +4 -4
- package/dist/src/routes/messaging.js +34 -18
- package/dist/src/routes/messaging.js.map +1 -1
- package/dist/src/routes/orchestrate.js +139 -64
- package/dist/src/routes/orchestrate.js.map +1 -1
- package/dist/src/routes/settings.js +1 -30
- package/dist/src/routes/settings.js.map +1 -1
- package/dist/src/routes/slack-tools.js +6 -4
- package/dist/src/routes/slack-tools.js.map +1 -1
- package/dist/src/security/path-guards.js +15 -1
- package/dist/src/security/path-guards.js.map +1 -1
- package/dist/src/slack/search-quote.js +9 -5
- package/dist/src/slack/search-quote.js.map +1 -1
- package/dist/src/slack/send-handler.js +1 -25
- package/dist/src/slack/send-handler.js.map +1 -1
- package/dist/src/slack/slack-file.js +105 -53
- package/dist/src/slack/slack-file.js.map +1 -1
- package/dist/src/slack/tool-access.js +10 -2
- package/dist/src/slack/tool-access.js.map +1 -1
- package/dist/src/slack/tool-capabilities.js +16 -8
- package/dist/src/slack/tool-capabilities.js.map +1 -1
- package/dist/src/types/cli-engine.js +26 -3
- package/dist/src/types/cli-engine.js.map +1 -1
- package/dist/src/types/cli-events.js +1 -1
- package/dist/src/types/cli-events.js.map +1 -1
- package/dist/src/workflows/employee-boundary.js +9 -5
- package/dist/src/workflows/employee-boundary.js.map +1 -1
- package/dist/src/workflows/scope-sandbox.js +5 -2
- package/dist/src/workflows/scope-sandbox.js.map +1 -1
- package/package.json +2 -6
- package/public/dist/.vite/manifest.json +115 -115
- package/public/dist/assets/Agent-CKX93LQ8.js +1 -0
- package/public/dist/assets/Employees-BuFw6-fT.js +1 -0
- package/public/dist/assets/Heartbeat-BmkZshEU.js +1 -0
- package/public/dist/assets/Memory-DsK_yOCW.js +1 -0
- package/public/dist/assets/ModelProvider-L_hW6YWJ.js +1 -0
- package/public/dist/assets/agent-meta-CkRJlOmN.js +1 -0
- package/public/dist/assets/{app-9OQNfmqw.js → app-B_JTnXIY.js} +4 -4
- package/public/dist/assets/{bgtask-badge-BvxHqMGi.js → bgtask-badge-BLdI7Ara.js} +1 -1
- package/public/dist/assets/bgtask-badge-DOhTsE9l.js +1 -0
- package/public/dist/assets/cli-engine-NdU0lzs_.js +1 -0
- package/public/dist/assets/constants-DmRtjRj3.js +1 -0
- package/public/dist/assets/{employees-CkUqN4oh.js → employees-DGoVBWQd.js} +1 -1
- package/public/dist/assets/iframe-renderer-Dw5vTqFX.js +1 -0
- package/public/dist/assets/{iframe-renderer-C2gchtOj.js → iframe-renderer-mBjdW5ZV.js} +2 -2
- package/public/dist/assets/{manager-rb5X-4DJ.js → manager-iX7KosWI.js} +1 -1
- package/public/dist/assets/memory-DuHc2no-.js +1 -0
- package/public/dist/assets/{memory-BiWzpoBq.js → memory-Hq9y-GQB.js} +1 -1
- package/public/dist/assets/message-history-DT0VaJRd.js +1 -0
- package/public/dist/assets/{message-history-CuFefS02.js → message-history-H7G4apTo.js} +1 -1
- package/public/dist/assets/{provider-icons-Det0fC-4.js → provider-icons-Bge6teOj.js} +1 -1
- package/public/dist/assets/{render-DUGqq9Mu.js → render-OT0puqo3.js} +1 -1
- package/public/dist/assets/settings-BW8q_Rnq.js +1 -0
- package/public/dist/assets/{settings-DQ1fLygB.js → settings-DjCtFSpd.js} +3 -3
- package/public/dist/assets/{settings-BqUHavbH.js → settings-KIPNUOIV.js} +1 -1
- package/public/dist/assets/settings-core-CVO3_bn9.js +1 -0
- package/public/dist/assets/settings-core-DiStY7KC.js +2 -0
- package/public/dist/assets/{settings-embedding-BAKFrVLV.js → settings-embedding-DIqST-91.js} +1 -1
- package/public/dist/assets/{sidebar-CvGbp9x5.js → sidebar-DiS6dGEP.js} +3 -3
- package/public/dist/assets/{skills-abLMqY5_.js → skills-D_mbeyb3.js} +1 -1
- package/public/dist/assets/skills-NzM-geDj.js +1 -0
- package/public/dist/assets/slash-commands-DUk5bLQ1.js +1 -0
- package/public/dist/assets/{slash-commands-D8o9pqOS.js → slash-commands-PWDX9hXL.js} +1 -1
- package/public/dist/assets/{trace-drawer-C6RvkUAd.js → trace-drawer-DSn3xg8f.js} +1 -1
- package/public/dist/assets/{ui-Bxapl_Eu.js → ui-Dzebjyzl.js} +1 -1
- package/public/dist/assets/ui-TcZtZTFR.js +1 -0
- package/public/dist/index.html +1 -3
- package/public/dist/manager/index.html +1 -1
- package/public/dist/settings/index.html +1 -1
- package/public/index.html +0 -2
- package/public/js/constants.ts +1 -46
- package/public/js/features/employees.ts +1 -1
- package/public/js/features/retired-runtime-option.ts +2 -2
- package/public/js/features/settings-channel.ts +4 -2
- package/public/js/features/settings-cli-status-render.ts +2 -2
- package/public/js/features/settings-cli-status.ts +0 -2
- package/public/js/provider-icons.ts +1 -3
- package/public/manager/src/settings/pages/Heartbeat.tsx +2 -2
- package/public/manager/src/settings/pages/Memory.tsx +2 -2
- package/public/manager/src/settings/pages/ModelProvider.tsx +7 -4
- package/public/manager/src/settings/pages/components/agent/FlushAgentSection.tsx +2 -2
- package/public/manager/src/settings/pages/components/agent/RuntimeEmployeeRow.tsx +2 -2
- package/public/manager/src/settings/pages/components/agent/RuntimeHeader.tsx +2 -2
- package/public/manager/src/settings/pages/components/agent/agent-meta.ts +4 -35
- package/public/manager/src/settings/pages/components/employees-helpers.ts +0 -2
- package/public/manager/src/settings/pages/components/heartbeat-helpers.ts +0 -2
- package/scripts/bundle-sidecar.sh +0 -24
- package/scripts/check-electron-sidecar-no-jwc.cjs +12 -4
- package/scripts/fresh-install-smoke.ts +1 -1
- package/scripts/install.sh +0 -5
- package/scripts/retired-runtime-package-smoke.mjs +2 -12
- package/scripts/verify-fresh-install.sh +0 -14
- package/dist/src/agent/claude-e-runtime.js +0 -44
- package/dist/src/agent/claude-e-runtime.js.map +0 -1
- package/public/dist/assets/Agent-CNad_A6t.js +0 -1
- package/public/dist/assets/Employees-B6uviPeN.js +0 -1
- package/public/dist/assets/Heartbeat-C3S3d8xW.js +0 -1
- package/public/dist/assets/Memory-BgeIbQSr.js +0 -1
- package/public/dist/assets/ModelProvider-AnxBVYws.js +0 -1
- package/public/dist/assets/agent-meta-BWHASq1a.js +0 -1
- package/public/dist/assets/bgtask-badge-DeSZJGNN.js +0 -1
- package/public/dist/assets/cli-engine-Bw0QTAVX.js +0 -1
- package/public/dist/assets/constants-D8XAqfHk.js +0 -1
- package/public/dist/assets/iframe-renderer-DfvACXIn.js +0 -1
- package/public/dist/assets/memory-Ckp1Eq5a.js +0 -1
- package/public/dist/assets/message-history-Bv0l_t7O.js +0 -1
- package/public/dist/assets/settings-C81Kf9uX.js +0 -1
- package/public/dist/assets/settings-core-CzdXfoOK.js +0 -2
- package/public/dist/assets/settings-core-DO_5M7Lv.js +0 -1
- package/public/dist/assets/skills-DFpPmMUR.js +0 -1
- package/public/dist/assets/slash-commands-BU58xYih.js +0 -1
- package/public/dist/assets/ui-CUB4iwz3.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e}from"./memory-Hq9y-GQB.js";export{e as refreshMemorySidebar};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{i as e,n as t}from"./api-CUtiCd2-.js";import{O as n,P as r}from"./render-
|
|
1
|
+
import{i as e,n as t}from"./api-CUtiCd2-.js";import{O as n,P as r}from"./render-OT0puqo3.js";import{t as i}from"./icons-CVkqyECl.js";import{t as a}from"./copy-text-DjgetgoZ.js";import{r as o}from"./locale-B9w_kUtW.js";function s(e){return document.getElementById(e)}function c(e,t){let n=s(e);n&&(n.textContent=t==null?``:String(t))}function l(e,t){let n=s(e);n&&(n.value=t==null?``:String(t))}function u(e,t){let a=s(`memorySidebarBtn`);if(!a)return;if(e?.enabled&&e?.hasSoul===!1){a.innerHTML=`${i.brain} Memory · <span style="color:var(--accent)">${o(`updateNeeded`)}</span>`;return}if(e?.enabled&&e?.hasSoul&&!e?.soulSynthesized){a.innerHTML=`${i.brain} Memory · <span style="color:var(--accent)">${r(`memory.banner.soulOptimize`)}</span>`;return}let c=e?.indexState===`ready`?`Ready`:e?.state===`not_initialized`?`Indexing`:e?.state||`(${t})`;a.innerHTML=`${i.brain} Memory · ${n(c)}`}function d(e){let t=s(`advStatusBanner`);if(t){if(!e?.enabled){t.style.display=`none`,t.textContent=``;return}if(t.style.display=``,e.hasSoul===!1){t.innerHTML=`<span>Memory structure upgrade available.</span>
|
|
2
2
|
<button id="advUpgradeSoulBtn" class="btn-sm" style="margin-left:8px">${o(`memoryUpdateBtn`)}</button>`;return}if(e.hasSoul&&!e.soulSynthesized){t.innerHTML=`<span>Soul identity can be personalized with your active CLI.</span>
|
|
3
3
|
<button id="advSynthesizeSoulBtn" class="btn-sm" style="margin-left:8px">${r(`memory.banner.soulOptimize`)}</button>`;return}if(e.state===`not_initialized`){t.textContent=`Integrated memory is preparing its index. Temporary fallback memory context is active until initialization completes.`;return}if(e.indexState===`not_indexed`){t.textContent=`Integrated memory is configured. Indexed search/read will activate after indexing becomes available.`;return}t.textContent=`Memory active. search/read=${e.routing?.searchRead||`basic`} / save=${e.routing?.save||`basic`}`}}function f(e,t=!0){let n=s(`advStatusBanner`);n&&(n.style.display=t?``:`none`,n.textContent=e)}function p(e){for(let t of[`advBootstrapBtn`,`advReindexBtn`,`advReimportBtn`,`advOpenCorruptedBtn`]){let n=s(t);n&&(n.disabled=e)}}function m(e){s(`memOn`)?.classList.toggle(`active`,e.enabled),s(`memOff`)?.classList.toggle(`active`,!e.enabled),l(`memFlushEvery`,e.flushEvery),l(`memRetention`,e.retentionDays),l(`memFlushLang`,e.flushLanguage||`en`),c(`memPath`,e.path),c(`memCounter`,e.counter),c(`memThreshold`,e.flushEvery)}function h(e){let t=s(`memTabBtnSettings`),n=s(`memTabSettings`);t&&n&&(t.style.display=``,n.style.display||(n.style.display=``))}function g(e){c(`advIndexState`,e?.indexState||e?.state||`-`),c(`advStorageRoot`,e?.storageRoot||`-`),c(`advIndexedFiles`,e?.indexedFiles||0),c(`advIndexedChunks`,e?.indexedChunks||0),c(`advLastIndexedAt`,e?.lastIndexedAt||`-`),c(`advImportStatus`,e?.importStatus||`-`),c(`advCorruptedCount`,e?.corruptedCount||0),c(`advLastExpansion`,(e?.lastExpansion||[]).join(`, `)||`-`),c(`advLastError`,e?.lastError||`-`);let t=e?.importedCounts||{};c(`advImportStatus`,`${e?.importStatus||`-`} (core:${t.core||0} md:${t.markdown||0} kv:${t.kv||0} claude:${t.claude||0})`),c(`advProfileFresh`,e?.profileFresh===!1?`⚠ stale`:`✓ fresh`),c(`advLastReflectedAt`,e?.lastReflectedAt||`never`),c(`advFlushRunning`,e?.flushRunning?`running`:`idle`),c(`advMigrationLock`,e?.migrationLocked?`⚠ locked`:`none`);let n=e?.staleWarnings||[];c(`advWarnings`,n.length?n.join(`, `):`none`),c(`advSoulStatus`,e?.hasSoul?`✓ active`:`⚠ not created`)}function _(e){let t=s(`basicMemoryFiles`);if(t){if(!e?.length){t.innerHTML=`<p style="color:var(--text-dim);font-size:12px;text-align:center">No memory files yet</p>`;return}t.innerHTML=e.map(e=>`
|
|
4
4
|
<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"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{o as e,s as t}from"./message-history-H7G4apTo.js";export{e as historyReloadInFlight,t as loadMessages};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{t as e}from"./state-Dl-xxPoS.js";import{a as t,n,t as r}from"./api-CUtiCd2-.js";import{n as i,t as a}from"./bounded-api-DdpT93LB.js";import{E as o,O as s,P as c,_ as l,a as u,c as d,d as f,g as p,i as m,k as h,o as g,r as _,s as v,t as ee,v as y}from"./render-DUGqq9Mu.js";import{a as b}from"./mermaid-preprocess-D8xe5R2A.js";import{a as x,r as te,t as S}from"./icons-CVkqyECl.js";import{t as C}from"./copy-text-DjgetgoZ.js";import{C as w,D as T,E,M as D,N as O,S as k,T as A,_ as j,b as M,d as N,h as P,j as F,m as ne,o as re,s as ie,t as ae,v as oe,x as se,y as I}from"./iframe-renderer-C2gchtOj.js";import{a as ce,i as le,o as ue,s as de,t as fe}from"./idb-cache-BRpjf_a8.js";var pe=`agentAvatar`,me=`userAvatar`,he=S.shark,ge=S.user,_e={agent:{emoji:he,imageUrl:``,updatedAt:null},user:{emoji:ge,imageUrl:``,updatedAt:null}},ve=!1;function L(e){return _e[e]}function ye(e){return e===`agent`?`agentAvatarPreview`:`userAvatarPreview`}function be(e){return e===`agent`?`.agent-icon`:`.user-icon`}function xe(e){let t=document.getElementById(ye(e));if(t){t.innerHTML=Se(e);let n=L(e).imageUrl?`image`:`emoji`;t.setAttribute(`data-avatar-kind`,n)}}function Se(e){let t=L(e);return t.imageUrl?`<img class="avatar-image" src="${s(t.imageUrl)}" alt="" loading="lazy" decoding="async">`:t.emoji}function Ce(e){let t=Se(e),n=L(e).imageUrl?`image`:`emoji`;document.querySelectorAll(be(e)).forEach(e=>{e.innerHTML=t,e.setAttribute(`data-avatar-kind`,n)})}function we(e,t){t?.kind===`image`&&t.imageUrl?(L(e).imageUrl=t.imageUrl,L(e).updatedAt=t.updatedAt??Date.now()):(L(e).imageUrl=``,L(e).updatedAt=t?.updatedAt??null),xe(e),Ce(e)}async function Te(){let e=await n(`/api/avatar`);e&&(we(`agent`,e.agent),we(`user`,e.user))}async function Ee(e,n){let r=await t(),i=new Headers(n.headers||{});return r&&i.set(`Authorization`,`Bearer ${r}`),fetch(e,{...n,headers:i})}async function De(e,t){let n=await Ee(`/api/avatar/${e}/upload`,{method:`POST`,headers:{"Content-Type":t.type||`image/png`,"X-Filename":encodeURIComponent(t.name)},body:t}),r=await n.json().catch(()=>null);if(!n.ok)throw Error(r?.error||`avatar upload failed (${n.status})`);we(e,r?.data||r)}async function Oe(e){let t=await Ee(`/api/avatar/${e}/image`,{method:`DELETE`}),n=await t.json().catch(()=>null);if(!t.ok)throw Error(n?.error||`avatar reset failed (${t.status})`);we(e,n?.data||n)}function ke(e){let t=e===`agent`?`agentAvatarUploadBtn`:`userAvatarUploadBtn`,n=e===`agent`?`agentAvatarResetBtn`:`userAvatarResetBtn`,r=e===`agent`?`agentAvatarFile`:`userAvatarFile`;document.getElementById(t)?.addEventListener(`click`,()=>{document.getElementById(r)?.click()}),document.getElementById(n)?.addEventListener(`click`,async()=>{try{await Oe(e)}catch(e){console.warn(`[avatar:reset]`,e.message)}}),document.getElementById(r)?.addEventListener(`change`,async t=>{let n=t.target,r=n.files?.[0];if(r)try{await De(e,r)}catch(e){console.warn(`[avatar:upload]`,e.message)}finally{n.value=``}})}function Ae(){return Se(`agent`)}function je(){return Se(`user`)}async function Me(){L(`agent`).emoji=localStorage.getItem(pe)||he,L(`user`).emoji=localStorage.getItem(me)||ge,xe(`agent`),xe(`user`),ve||(ve=!0,ke(`agent`),ke(`user`)),await Te(),Ce(`agent`),Ce(`user`)}function Ne(e){e.dataset.toolItemBound!==`1`&&(e.addEventListener(`click`,e=>{let t=e.target;if(!t)return;let n=t.closest(`.tool-item-toggle`);if(!n)return;let r=n.closest(`.tool-item`),i=r?.querySelector(`.tool-item-details`),a=n.querySelector(`.tool-item-chevron`);if(!r||!i)return;let o=i.classList.contains(`collapsed`);i.classList.toggle(`collapsed`,!o),r.classList.toggle(`expanded`,o),n.setAttribute(`aria-expanded`,o?`true`:`false`),a&&(a.innerHTML=o?S.chevronDown:S.chevronRight)}),e.dataset.toolItemBound=`1`)}function Pe(){document.querySelectorAll(`.tool-activity-live`).forEach(e=>e.remove()),document.querySelectorAll(`.msg-system.tool-activity`).forEach(e=>e.remove())}function Fe(){let e=Number(window.location.port);if(Number.isFinite(e)&&e>0)return e;let t=window.location.pathname.match(/^\/i\/(\d+)/);return t?Number(t[1]):null}function Ie(e){let t=e.split(/\r?\n/).map(e=>e.trim()).find(Boolean);return t?t.length>96?`${t.slice(0,93)}...`:t:`Pinned reminder`}function Le(e){let t=e.querySelector(`.msg-content`);return t?.getAttribute(`data-raw`)||t?.innerText||t?.textContent||``}function Re(e){if(!e)return null;let t=Number(e);return Number.isFinite(t)&&t>=0?t:null}function ze(e,t){let n=Fe(),r=e.dataset.messageId||``;return{title:Ie(t),notes:t,priority:`normal`,instanceId:e.dataset.instanceId||(n?`port:${n}`:`browser`),messageId:r,turnIndex:Re(e.dataset.turnIndex),port:n,threadKey:window.location.pathname,sourceText:t}}function Be(e){e.classList.add(`copied`),e.innerHTML=S.checkSimple,setTimeout(()=>{e.classList.remove(`copied`),e.textContent=``},600)}async function Ve(e){let t=e.closest(`.msg`);t&&(await C(Le(t))).ok&&Be(e)}async function He(e,t){let r=e.closest(`.msg`);if(!r)return;let i=Le(r).trim();if(!i){t.onStatus?.(`Cannot pin an empty message as a reminder.`);return}e.setAttribute(`aria-busy`,`true`),e.classList.add(`is-pinning`);try{let a=await n(`/api/dashboard/reminders/from-message`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(ze(r,i))});if(!a?.ok)throw Error(a?.error||`Reminder pin failed`);e.classList.add(`is-pinned`),t.onStatus?.(`Pinned reminder: ${a.item?.title||Ie(i)}`)}catch(e){t.onStatus?.(`Reminder pin failed: ${e.message}`)}finally{e.classList.remove(`is-pinning`),e.removeAttribute(`aria-busy`)}}function Ue(e){let t=e.closest(`.tool-group-summary`);if(!t)return!1;let n=t.closest(`.tool-group`),r=t.nextElementSibling;if(n&&r){let e=!n.classList.contains(`expanded`);n.classList.toggle(`expanded`),r.classList.toggle(`collapsed`),t.setAttribute(`aria-expanded`,e?`true`:`false`)}return!0}function We(e){let t=[`data-message-role="${s(e.role)}"`,`data-message-id="${s(e.messageId)}"`];if(e.turnIndex!==null&&t.push(`data-turn-index="${e.turnIndex}"`),typeof window<`u`){let e=Fe();e&&t.push(`data-instance-id="port:${e}"`)}return t.join(` `)}function Ge(){return`<div class="msg-actions"><button class="msg-pin-reminder" type="button" title="Pin as reminder" aria-label="Pin as reminder"></button><button class="msg-copy" type="button" title="Copy" aria-label="Copy message"></button></div>`}function Ke(e={}){let t=document.getElementById(`chatMessages`);t&&(I(t),Ne(t),t.addEventListener(`click`,t=>{let n=t.target;if(Ue(n))return;let r=n.closest(`.msg-copy`);if(r){Ve(r).catch(t=>{e.onStatus?.(`Copy failed: ${t.message}`)});return}let i=n.closest(`.msg-pin-reminder`);i&&He(i,e)}))}var qe=`agentName`,Je=`CLI-JAW`,Ye=Je;function Xe(){return Ye}function Ze(e){Ye=(e||``).trim()||Je,localStorage.setItem(qe,Ye);let t=document.getElementById(`appNameInput`);t&&(t.value=Ye)}function Qe(){Ye=localStorage.getItem(qe)||Je;let e=document.getElementById(`appNameInput`);e&&(e.value=Ye),document.getElementById(`appNameSave`)?.addEventListener(`click`,()=>{let e=document.getElementById(`appNameInput`);e&&Ze(e.value)}),document.getElementById(`appNameInput`)?.addEventListener(`keydown`,e=>{let t=e;t.key===`Enter`&&(t.preventDefault(),Ze(t.target.value),t.target.blur())})}var $e=`:scope > .process-block, :scope > .tool-group, :scope > .msg-content > .process-block, :scope > .msg-content > .tool-group`;function et(e){return e.querySelector(`.agent-body`)}function tt(e){let t=et(e);return t?Array.from(t.querySelectorAll($e)):[]}function nt(e){let t=e.querySelector(`:scope > .msg-content`);return e.querySelector(`:scope > .process-block`)??e.querySelector(`:scope > .tool-group`)??t?.querySelector(`:scope > .process-block`)??t?.querySelector(`:scope > .tool-group`)??null}function rt(e){let t=et(e);if(!t)return;let n=t.querySelector(`.msg-content`),r=tt(e);if(r.length===0)return;let i=nt(t)??r[0];n&&i.parentElement!==t&&t.insertBefore(i,n);for(let e of r)e!==i&&(T(e),e.remove())}function it(e){return tt(e).length>0}function at(e){return e===`thinking`||e===`search`||e===`subagent`?e:`tool`}function ot(e){return e===`done`||e===`error`?e:`running`}function st(e){let t=e.dataset.stepId||``;if(!t)return null;let n=A(t),r=e.querySelector(`.process-step-label`)?.textContent?.trim()||``,i=e.querySelector(`.process-step-full`),a=i?.dataset.detailLazy===`true`?w(t)||n?.preview||``:i?.textContent||w(t)||n?.preview||``,o=e.querySelector(`.process-step-icon`)?.innerHTML||S.tool,s=Number(e.dataset.startTime||``);return{id:t,type:n?.type||at(e.dataset.type),icon:n?.icon||o,rawIcon:n?.rawIcon,label:n?.label||r,isEmployee:n?.isEmployee===!0||e.dataset.isEmployee===`true`,detail:a,detailPreview:n?.preview,detailLength:n?.detailLength,detailTruncated:n?.detailTruncated,stepRef:n?.stepRef||e.dataset.stepRef||``,traceRunId:n?.traceRunId||e.dataset.traceRunId||``,traceSeq:n?.traceSeq||Number(e.dataset.traceSeq||0)||void 0,detailAvailable:n?.detailAvailable,detailBytes:n?.detailBytes,rawRetentionStatus:n?.rawRetentionStatus,status:n?.status||ot(e.dataset.status),startTime:Number.isFinite(s)&&s>0?s:Date.now()}}function ct(e){let t=et(e)?.querySelector(`:scope > .process-block`);if(!t)return null;let n={element:t,steps:Array.from(t.querySelectorAll(`.process-step`)).map(st).filter(e=>!!e),collapsed:t.classList.contains(`collapsed`)};return E(n),n}function lt(e,t=!1){let n=w(e.id)||e.detail||e.detailPreview||``,r=t&&e.status===`running`?`done`:e.status;return{icon:e.rawIcon||e.icon||S.tool,rawIcon:e.rawIcon||e.icon||``,label:e.label||`tool`,isEmployee:e.isEmployee===!0,detail:n,toolType:e.type,stepRef:e.stepRef||``,status:r,traceRunId:e.traceRunId||``,traceSeq:e.traceSeq,detailAvailable:e.detailAvailable,detailBytes:e.detailBytes,rawRetentionStatus:e.rawRetentionStatus}}function ut(e,t=!1){let n=A(e);if(!n)return null;let r=t&&n.status===`running`?`done`:n.status;return{icon:n.rawIcon||n.icon||S.tool,rawIcon:n.rawIcon||n.icon||``,label:n.label||`tool`,isEmployee:n.isEmployee===!0,detail:w(e)||n.preview||``,toolType:n.type,stepRef:n.stepRef||``,status:r,traceRunId:n.traceRunId||``,traceSeq:n.traceSeq,detailAvailable:n.detailAvailable,detailBytes:n.detailBytes,rawRetentionStatus:n.rawRetentionStatus}}function dt(e,t=!1){if(!e)return[];if(`steps`in e)return e.steps.map(e=>lt(e,t));let n=new Set;e.querySelectorAll(`.process-block[data-process-step-ids]`).forEach(e=>{(e.dataset.processStepIds||``).split(/\s+/).filter(Boolean).forEach(e=>n.add(e))}),e.querySelectorAll(`.process-step[data-step-id]`).forEach(e=>{let t=e.dataset.stepId;t&&n.add(t)});let r=[];return n.forEach(n=>{let i=ut(n,t);if(i){r.push(i);return}let a=e.querySelector(`.process-step[data-step-id="${CSS.escape(n)}"]`),o=a?st(a):null;o&&r.push(lt(o,t))}),r}function ft(e){for(let t of tt(e))T(t),t.remove()}function pt(e){return Ae()}function mt(){let t=document.getElementById(`chatMessages`);if(!t||t.querySelector(`.skeleton-msg`)||e.currentAgentDiv&&e.currentAgentDiv.isConnected)return;gt();let n=document.createElement(`div`);n.className=`skeleton-msg`,n.innerHTML=`<div class="skeleton-line"></div><div class="skeleton-line"></div><div class="skeleton-line"></div>`,t.appendChild(n),ne()}function ht(){document.querySelectorAll(`.skeleton-msg`).forEach(e=>e.remove())}function gt(){document.getElementById(`emptyState`)?.classList.remove(`visible`)}function _t(){let e=document.getElementById(`chatMessages`);e&&e.children.length===0&&document.getElementById(`emptyState`)?.classList.add(`visible`)}function vt(e,t,n){let r=document.getElementById(`chatMessages`);if(!r)return;let i=j();gt();let a=document.createElement(`div`);a.className=`msg msg-system`+(n?` msg-type-${n}`:``)+(t?` `+t:``),a.innerHTML=b(e),i.active?i.appendLiveItem(a):r.appendChild(a),ne()}function yt(e){let t=e.match(/^\[(?:사용자가 파일 (\d+)개를 보냈습니다|User sent (\d+) files)\]/);if(t){let n=t[1]||t[2],r=e.match(/(?:사용자 메시지|User message): (.+)$/s);return`📎 [${n} files]${r?` `+r[1].trim():``}`}let n=e.match(/^\[(?:사용자가 파일을 보냈습니다|사용자가 이미지를 보냈습니다|사용자가 동영상을 보냈습니다|User sent a file|User sent an image|User sent a video|ユーザーがファイルを送信しました|ユーザーが画像を送信しました|ユーザーが動画を送信しました|用户发送了文件|用户发送了图片|用户发送了视频)[::]\s*([^\]]+)\]/);if(n){let t=n[1],i=t.split(`/`).pop()||t,a=e.match(/🎤\s*(.{0,80})/)?`${c(`chat.voice.label`)} `:``,o=e.match(/(?:사용자 메시지|User message): (.+)$/s),s=o?` `+o[1].trim():``,l=(i.split(`.`).pop()||``).toLowerCase(),u=`${r}/media/${encodeURIComponent(i)}`;return[`png`,`jpg`,`jpeg`,`gif`,`webp`,`svg`].includes(l)?`${a}<img src="${u}" alt="${i}" class="chat-inline-img" loading="lazy" />${s?`<br>${s}`:``}`:[`mp4`,`webm`,`mov`,`ogg`].includes(l)?`${a}<video src="${u}" controls class="chat-inline-video" preload="metadata"></video>${s?`<br>${s}`:``}`:`${a}📎 [${i}]${s}`}return e}function bt(t,n,r,i){let a=document.getElementById(`chatMessages`),l=j();gt(),ht();let f=t===`user`?yt(n):n,p=ee(f),b=s(t===`user`?c(`msg.you`):Xe()),x=document.createElement(`div`),te=a?a.querySelectorAll(`.msg`).length:null,S=O();x.setAttribute(`data-message-role`,t),x.setAttribute(`data-message-id`,S),te!==null&&x.setAttribute(`data-turn-index`,String(te));let C=Number(window.location.port);Number.isFinite(C)&&C>0&&x.setAttribute(`data-instance-id`,`port:${C}`);let w=Ge();t===`agent`?(x.className=`msg msg-agent`,i?.steered===!0&&(x.dataset.steered=`true`),x.innerHTML=`<div class="agent-icon" aria-hidden="true">${pt(r)}</div><div class="agent-body"><div class="msg-content">${p}</div>${w}</div>`):(x.className=`msg msg-${t}${t===`user`&&r===`goal_continuation`?` msg-goal-boundary`:``}`,x.innerHTML=`<div class="user-body"><div class="msg-label">${b}</div><div class="msg-content">${p}</div>${w}</div><div class="user-icon" aria-hidden="true">${je()}</div>`);let T=x.querySelector(`.msg-content`);T&&T.setAttribute(`data-raw`,h(n));let E=t===`agent`&&!n;if(l.active&&!E)x.classList.contains(`msg-agent`)&&rt(x),l.appendLiveItem(x);else if(a?.appendChild(x),ae(x),d(x),v(x),g(x),u(x),m(x),_(x),!l.active&&!E&&a&&a.querySelectorAll(`.msg`).length>=1){let t=e.currentAgentDiv?.parentElement===a?e.currentAgentDiv:null;t?.remove();try{a.querySelectorAll(`.msg`).forEach(e=>{e.classList.contains(`msg-agent`)&&rt(e),l.addItem(O(),e.outerHTML)})}finally{t&&a.appendChild(t)}l.onPostRender=e=>{ae(e),d(e),v(e),g(e),u(e),m(e),_(e),y(e),o(e,{immediate:!0})}}return ne(t===`user`),x}var xt=3e3,St=24e3,Ct=`⚠️`,wt=`Tool log truncated`,Tt=`Inline preview capped.`,Et=/^tr_[A-Za-z0-9_-]{16,80}$/;function R(e,t){if(e==null)return;let n=String(e);if(n)return n.length<=t?n:`${n.slice(0,Math.max(0,t-1))}…`}function Dt(e,t){return`[detail truncated: kept ${e} of ${t} chars]`}function Ot(e){return{icon:Ct,label:R(e>0?`${e} tool event${e===1?``:`s`} omitted`:wt,240)||wt,toolType:`tool`,status:`done`,detail:Tt}}function kt(e){if(!e||typeof e!=`object`)return 0;let t=e;if(t.icon!==Ct)return 0;let n=String(t.label??``);if(n===wt)return 1;let r=/^(\d+) tool events? omitted$/.exec(n);return r?Number(r[1]):0}function At(e,t){let n=Number(e);if(!(!Number.isFinite(n)||n<0))return Math.min(Math.floor(n),t)}function jt(e,t=xt){let n=e.detail==null?``:String(e.detail),r=Math.max(0,Math.min(xt,t)),i=R(n,r);if(i&&n.length>r){let e=Dt(i.length,n.length),t=Math.max(0,r-e.length-1);i=`${n.slice(0,t)}\n${e}`}let a={icon:R(e.icon,240)||`🔧`,label:R(e.label,240)||`tool`},o=R(e.rawIcon,240),s=R(e.toolType,240),c=R(e.stepRef,240),l=R(e.status,240),u=R(e.traceRunId,96),d=At(e.traceSeq,2**53-1),f=At(e.detailBytes,2**53-1),p=R(e.rawRetentionStatus,32);return o&&(a.rawIcon=o),i&&(a.detail=i),s&&(a.toolType=s),c&&(a.stepRef=c),l&&(a.status=l),e.isEmployee===!0&&(a.isEmployee=!0),u&&Et.test(u)&&(a.traceRunId=u),d!=null&&d>0&&(a.traceSeq=d),e.detailAvailable===!0&&(a.detailAvailable=!0),f!=null&&(a.detailBytes=f),p&&(a.rawRetentionStatus=p),a}function Mt(e,t={}){if(!Array.isArray(e))return[];let n=Number.isSafeInteger(t.knownOmitted)&&t.knownOmitted>=0?t.knownOmitted:0;if(e.length===0&&n===0)return[];let r=e,i=kt(e[0]);i>0&&(r=e.slice(1));let a=0;(i>0||n>0||r.length>160)&&(a=Math.max(0,r.length-159),a>0&&(r=r.slice(a)));let o=Math.max(i+a,n),s=r.map(e=>e&&typeof e==`object`?e:{label:e}),c=Array(s.length).fill(0),l=St;for(let e=s.length-1;e>=0;e--){let t=s[e].detail,n=t==null?0:String(t).length,r=Math.min(xt,l);c[e]=r,l=Math.max(0,l-Math.min(n,r))}let u=s.map((e,t)=>jt(e,c[t]));return o>0&&u.unshift(Ot(o)),Pt(u)}function Nt(e){let t={icon:R(e.icon,24)||`🔧`,label:R(e.label,80)||`tool`},n=R(e.toolType,48),r=R(e.stepRef,80),i=R(e.status,24),a=R(e.detail,180),o=R(e.traceRunId,96),s=At(e.traceSeq,2**53-1),c=At(e.detailBytes,2**53-1),l=R(e.rawRetentionStatus,32);return n&&(t.toolType=n),r&&(t.stepRef=r),i&&(t.status=i),a&&(t.detail=a),e.isEmployee===!0&&(t.isEmployee=!0),o&&Et.test(o)&&(t.traceRunId=o),s!=null&&s>0&&(t.traceSeq=s),e.detailAvailable===!0&&(t.detailAvailable=!0),c!=null&&(t.detailBytes=c),l&&(t.rawRetentionStatus=l),t}function Pt(e){if(JSON.stringify(e).length<=64e3)return e;let t=e.map(Nt),n=JSON.stringify(t);for(;n.length>64e3&&t.length>1;){let e=kt(t[0]);t.splice(+(e>0),1);let r=Ot(e+1);e>0?t[0]=r:t.unshift(r),n=JSON.stringify(t)}if(n.length<=64e3)return t;let r=[{icon:Ct,label:wt,toolType:`tool`,status:`done`,detail:Tt}];return JSON.stringify(r).length<=64e3?r:[]}function Ft(e){let t=Mt(e);if(t.length===0)return null;let n=JSON.stringify(t);return n.length<=64e3?n:JSON.stringify(Pt(t))}function It(e){if(!e)return[];if(e.length>18e4)return[Ot(1)];try{return Mt(JSON.parse(e))}catch{return[]}}function Lt(e){return e===`thinking`||e===`search`||e===`subagent`?e:`tool`}function Rt(e){return e===`running`||e===`done`||e===`error`?e:`done`}function zt(e){if(e.label)return e.label;let t=e;return typeof t.name==`string`&&t.name?t.name:`tool`}function Bt(e){let t=zt(e);return e.toolType===`tool`?F(t):t}function Vt(e){return It(e)}function Ht(e){return Ft(Vt(e))}function Ut(e){return e.role!==`assistant`||!e.tool_log?{...e,tool_log:null}:{...e,tool_log:Ht(e.tool_log)}}function Wt(e,t){let n=t&&t>0?t:Date.now();return e.map(e=>({id:O(),icon:e.icon?x(e.icon):S.tool,rawIcon:e.rawIcon||e.icon||``,label:Bt(e),isEmployee:e.isEmployee===!0,type:Lt(e.toolType),detail:e.toolType===`tool`?D(e.detail||``):e.detail||``,stepRef:e.stepRef||``,traceRunId:e.traceRunId||``,traceSeq:e.traceSeq,detailAvailable:e.detailAvailable,detailBytes:e.detailBytes,rawRetentionStatus:e.rawRetentionStatus,status:Rt(e.status),startTime:n}))}function Gt(e,t){let n=String(e.stepRef||``).trim();return n?`ref:${n}`:`ord:${e.toolType||`tool`}:${e.label||`tool`}:${t}`}function Kt(e,t){if(e.length===0)return t;let n=new Map,r=new Map,i=e=>{let t=`${e.toolType||`tool`}:${e.label||`tool`}`,n=(r.get(t)||0)+1;return r.set(t,n),Gt(e,n)};return t.forEach(e=>n.set(i(e),e)),r.clear(),e.forEach(e=>{let t=i(e),r=n.get(t),a=r?.detail||``,o=e.detail||``;n.set(t,{...r||{},...e,detail:o.length>=a.length?o:a,status:e.status||r?.status||`done`})}),Array.from(n.values())}function qt(e){return Mt(e)}function Jt(e){return Ft(e)}function Yt(e){return Ae()}function Xt(e,t){let n=e.role===`assistant`?`agent`:e.role,r=String(e.id??O()),i=We({role:n,messageId:r,turnIndex:t}),a=e.trace_run_id?` data-trace-run-id="${s(e.trace_run_id)}"`:``,o=e.session_id===void 0?``:` data-message-session-id="${s(e.session_id)}"`,l=e.server_message_id===void 0?``:` data-server-message-id="${s(String(e.server_message_id))}" data-activity-saved="true"`,u=h(n===`user`?yt(e.content):e.content),d=s(n===`user`?c(`msg.you`):Xe()),f=e.role===`assistant`&&e.tool_log?Ht(e.tool_log):null,p=f?s(f):``,m=p?` data-tool-log="${p}"`:``,g=`<div class="msg-content lazy-pending" data-raw="${s(u)}"></div>`,_=Ge(),v=n===`user`&&e.cli===`goal_continuation`?` msg-goal-boundary`:``,ee=n===`agent`?`<div class="msg msg-agent" ${i}${a}${o}${l}><div class="agent-icon" aria-hidden="true">${Yt(e.cli)}</div><div class="agent-body"${m}>${g}${_}</div></div>`:`<div class="msg msg-${n}${v}" ${i}${o}${l}><div class="user-body"><div class="msg-label">${d}</div>${g}${_}</div><div class="user-icon" aria-hidden="true">${je()}</div></div>`;return{id:O(),messageId:r,html:ee,height:80,rehydratesProcessDetails:!!p}}function Zt(e,t){if(t.onBeforeVirtualHistoryBootstrap?.(),t.registerCallbacks(),t.setItems(e,{autoActivate:!1}),t.shouldFollowBottom?.()??!0){t.activateIfNeeded(!0),t.scrollToBottom(),t.onAfterVirtualHistoryBottomed?.();return}let n=t.restoreIndex;n!=null&&n>=0?(t.activateIfNeeded(!1),t.scrollToIndex?.(n)):(t.activateIfNeeded(!0),t.scrollToBottom(),t.onAfterVirtualHistoryBottomed?.())}function Qt(t){let n=document.getElementById(`statusBadge`),r=document.getElementById(`btnSend`),i=document.getElementById(`typingIndicator`)?.querySelector(`.label`);e.agentBusy=t===`running`||t===`steering`,r&&(r.setAttribute(`aria-label`,e.agentBusy?c(`btn.stop`):`Send message`),e.agentBusy?r.setAttribute(`data-i18n-aria`,`btn.stop`):r.removeAttribute(`data-i18n-aria`)),document.getElementById(`typingIndicator`)?.classList.toggle(`active`,e.agentBusy),t===`running`?(n&&(n.className=`status-badge status-running`,n.textContent=`running`),r&&(r.innerHTML=S.stop,r.title=c(`btn.stop`),r.classList.add(`stop-mode`)),i&&(i.textContent=c(`status.responding`)),mt()):t===`steering`?(n&&(n.className=`status-badge status-steering`,n.textContent=`steering`),r&&(r.innerHTML=S.stop,r.title=`Steering...`,r.classList.add(`stop-mode`)),i&&(i.textContent=`Steering...`)):(n&&(n.className=`status-badge status-idle`,n.textContent=`idle`),r&&(r.innerHTML=S.send,r.title=`Send`,r.classList.remove(`stop-mode`)),i&&(i.textContent=c(`status.responding`)),ht())}function $t(e){let t=document.getElementById(`queueBadge`);if(!t){t=document.createElement(`span`),t.id=`queueBadge`,t.className=`queue-badge`;let e=document.getElementById(`btnSend`);e?.parentElement&&(e.parentElement.style.position=`relative`),e&&(e.style.position=`relative`,e.appendChild(t))}t.textContent=e>0?String(e):``,t.style.display=e>0?`flex`:`none`}function en(e){let t=document.getElementById(`statMsgs`);t&&(t.textContent=c(`stat.messages`,{count:e}))}async function tn(){let e=await n(p(`/api/messages/count`));e&&en(e.count)}var nn=4096,rn=32768;function z(e){return JSON.stringify([e.sessionId,e.scope,e.runId,e.turnId])}function an(e){return{identity:{runId:e.runId,sessionId:e.sessionId,scope:e.scope,turnId:e.turnId},seq:0,revision:0,entries:new Map,requests:new Map,end:null,usage:null,latestAction:``,omitted:{entries:0,textChars:0,requests:0,finalChars:0,throughSeq:0}}}var on=(e,t)=>Math.min(2**53-1,e+t);function sn(e){return e.kind===`tool`?[e.input,e.output,e.detail].filter(e=>e!==void 0&&e!==``).join(`
|
|
1
|
+
import{t as e}from"./state-Dl-xxPoS.js";import{a as t,n,t as r}from"./api-CUtiCd2-.js";import{n as i,t as a}from"./bounded-api-DdpT93LB.js";import{E as o,O as s,P as c,_ as l,a as u,c as d,d as f,g as p,i as m,k as h,o as g,r as _,s as v,t as ee,v as y}from"./render-OT0puqo3.js";import{a as b}from"./mermaid-preprocess-D8xe5R2A.js";import{a as x,r as te,t as S}from"./icons-CVkqyECl.js";import{t as C}from"./copy-text-DjgetgoZ.js";import{C as w,D as T,E,M as D,N as O,S as k,T as A,_ as j,b as M,d as N,h as P,j as F,m as ne,o as re,s as ie,t as ae,v as oe,x as se,y as I}from"./iframe-renderer-mBjdW5ZV.js";import{a as ce,i as le,o as ue,s as de,t as fe}from"./idb-cache-BRpjf_a8.js";var pe=`agentAvatar`,me=`userAvatar`,he=S.shark,ge=S.user,_e={agent:{emoji:he,imageUrl:``,updatedAt:null},user:{emoji:ge,imageUrl:``,updatedAt:null}},ve=!1;function L(e){return _e[e]}function ye(e){return e===`agent`?`agentAvatarPreview`:`userAvatarPreview`}function be(e){return e===`agent`?`.agent-icon`:`.user-icon`}function xe(e){let t=document.getElementById(ye(e));if(t){t.innerHTML=Se(e);let n=L(e).imageUrl?`image`:`emoji`;t.setAttribute(`data-avatar-kind`,n)}}function Se(e){let t=L(e);return t.imageUrl?`<img class="avatar-image" src="${s(t.imageUrl)}" alt="" loading="lazy" decoding="async">`:t.emoji}function Ce(e){let t=Se(e),n=L(e).imageUrl?`image`:`emoji`;document.querySelectorAll(be(e)).forEach(e=>{e.innerHTML=t,e.setAttribute(`data-avatar-kind`,n)})}function we(e,t){t?.kind===`image`&&t.imageUrl?(L(e).imageUrl=t.imageUrl,L(e).updatedAt=t.updatedAt??Date.now()):(L(e).imageUrl=``,L(e).updatedAt=t?.updatedAt??null),xe(e),Ce(e)}async function Te(){let e=await n(`/api/avatar`);e&&(we(`agent`,e.agent),we(`user`,e.user))}async function Ee(e,n){let r=await t(),i=new Headers(n.headers||{});return r&&i.set(`Authorization`,`Bearer ${r}`),fetch(e,{...n,headers:i})}async function De(e,t){let n=await Ee(`/api/avatar/${e}/upload`,{method:`POST`,headers:{"Content-Type":t.type||`image/png`,"X-Filename":encodeURIComponent(t.name)},body:t}),r=await n.json().catch(()=>null);if(!n.ok)throw Error(r?.error||`avatar upload failed (${n.status})`);we(e,r?.data||r)}async function Oe(e){let t=await Ee(`/api/avatar/${e}/image`,{method:`DELETE`}),n=await t.json().catch(()=>null);if(!t.ok)throw Error(n?.error||`avatar reset failed (${t.status})`);we(e,n?.data||n)}function ke(e){let t=e===`agent`?`agentAvatarUploadBtn`:`userAvatarUploadBtn`,n=e===`agent`?`agentAvatarResetBtn`:`userAvatarResetBtn`,r=e===`agent`?`agentAvatarFile`:`userAvatarFile`;document.getElementById(t)?.addEventListener(`click`,()=>{document.getElementById(r)?.click()}),document.getElementById(n)?.addEventListener(`click`,async()=>{try{await Oe(e)}catch(e){console.warn(`[avatar:reset]`,e.message)}}),document.getElementById(r)?.addEventListener(`change`,async t=>{let n=t.target,r=n.files?.[0];if(r)try{await De(e,r)}catch(e){console.warn(`[avatar:upload]`,e.message)}finally{n.value=``}})}function Ae(){return Se(`agent`)}function je(){return Se(`user`)}async function Me(){L(`agent`).emoji=localStorage.getItem(pe)||he,L(`user`).emoji=localStorage.getItem(me)||ge,xe(`agent`),xe(`user`),ve||(ve=!0,ke(`agent`),ke(`user`)),await Te(),Ce(`agent`),Ce(`user`)}function Ne(e){e.dataset.toolItemBound!==`1`&&(e.addEventListener(`click`,e=>{let t=e.target;if(!t)return;let n=t.closest(`.tool-item-toggle`);if(!n)return;let r=n.closest(`.tool-item`),i=r?.querySelector(`.tool-item-details`),a=n.querySelector(`.tool-item-chevron`);if(!r||!i)return;let o=i.classList.contains(`collapsed`);i.classList.toggle(`collapsed`,!o),r.classList.toggle(`expanded`,o),n.setAttribute(`aria-expanded`,o?`true`:`false`),a&&(a.innerHTML=o?S.chevronDown:S.chevronRight)}),e.dataset.toolItemBound=`1`)}function Pe(){document.querySelectorAll(`.tool-activity-live`).forEach(e=>e.remove()),document.querySelectorAll(`.msg-system.tool-activity`).forEach(e=>e.remove())}function Fe(){let e=Number(window.location.port);if(Number.isFinite(e)&&e>0)return e;let t=window.location.pathname.match(/^\/i\/(\d+)/);return t?Number(t[1]):null}function Ie(e){let t=e.split(/\r?\n/).map(e=>e.trim()).find(Boolean);return t?t.length>96?`${t.slice(0,93)}...`:t:`Pinned reminder`}function Le(e){let t=e.querySelector(`.msg-content`);return t?.getAttribute(`data-raw`)||t?.innerText||t?.textContent||``}function Re(e){if(!e)return null;let t=Number(e);return Number.isFinite(t)&&t>=0?t:null}function ze(e,t){let n=Fe(),r=e.dataset.messageId||``;return{title:Ie(t),notes:t,priority:`normal`,instanceId:e.dataset.instanceId||(n?`port:${n}`:`browser`),messageId:r,turnIndex:Re(e.dataset.turnIndex),port:n,threadKey:window.location.pathname,sourceText:t}}function Be(e){e.classList.add(`copied`),e.innerHTML=S.checkSimple,setTimeout(()=>{e.classList.remove(`copied`),e.textContent=``},600)}async function Ve(e){let t=e.closest(`.msg`);t&&(await C(Le(t))).ok&&Be(e)}async function He(e,t){let r=e.closest(`.msg`);if(!r)return;let i=Le(r).trim();if(!i){t.onStatus?.(`Cannot pin an empty message as a reminder.`);return}e.setAttribute(`aria-busy`,`true`),e.classList.add(`is-pinning`);try{let a=await n(`/api/dashboard/reminders/from-message`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(ze(r,i))});if(!a?.ok)throw Error(a?.error||`Reminder pin failed`);e.classList.add(`is-pinned`),t.onStatus?.(`Pinned reminder: ${a.item?.title||Ie(i)}`)}catch(e){t.onStatus?.(`Reminder pin failed: ${e.message}`)}finally{e.classList.remove(`is-pinning`),e.removeAttribute(`aria-busy`)}}function Ue(e){let t=e.closest(`.tool-group-summary`);if(!t)return!1;let n=t.closest(`.tool-group`),r=t.nextElementSibling;if(n&&r){let e=!n.classList.contains(`expanded`);n.classList.toggle(`expanded`),r.classList.toggle(`collapsed`),t.setAttribute(`aria-expanded`,e?`true`:`false`)}return!0}function We(e){let t=[`data-message-role="${s(e.role)}"`,`data-message-id="${s(e.messageId)}"`];if(e.turnIndex!==null&&t.push(`data-turn-index="${e.turnIndex}"`),typeof window<`u`){let e=Fe();e&&t.push(`data-instance-id="port:${e}"`)}return t.join(` `)}function Ge(){return`<div class="msg-actions"><button class="msg-pin-reminder" type="button" title="Pin as reminder" aria-label="Pin as reminder"></button><button class="msg-copy" type="button" title="Copy" aria-label="Copy message"></button></div>`}function Ke(e={}){let t=document.getElementById(`chatMessages`);t&&(I(t),Ne(t),t.addEventListener(`click`,t=>{let n=t.target;if(Ue(n))return;let r=n.closest(`.msg-copy`);if(r){Ve(r).catch(t=>{e.onStatus?.(`Copy failed: ${t.message}`)});return}let i=n.closest(`.msg-pin-reminder`);i&&He(i,e)}))}var qe=`agentName`,Je=`CLI-JAW`,Ye=Je;function Xe(){return Ye}function Ze(e){Ye=(e||``).trim()||Je,localStorage.setItem(qe,Ye);let t=document.getElementById(`appNameInput`);t&&(t.value=Ye)}function Qe(){Ye=localStorage.getItem(qe)||Je;let e=document.getElementById(`appNameInput`);e&&(e.value=Ye),document.getElementById(`appNameSave`)?.addEventListener(`click`,()=>{let e=document.getElementById(`appNameInput`);e&&Ze(e.value)}),document.getElementById(`appNameInput`)?.addEventListener(`keydown`,e=>{let t=e;t.key===`Enter`&&(t.preventDefault(),Ze(t.target.value),t.target.blur())})}var $e=`:scope > .process-block, :scope > .tool-group, :scope > .msg-content > .process-block, :scope > .msg-content > .tool-group`;function et(e){return e.querySelector(`.agent-body`)}function tt(e){let t=et(e);return t?Array.from(t.querySelectorAll($e)):[]}function nt(e){let t=e.querySelector(`:scope > .msg-content`);return e.querySelector(`:scope > .process-block`)??e.querySelector(`:scope > .tool-group`)??t?.querySelector(`:scope > .process-block`)??t?.querySelector(`:scope > .tool-group`)??null}function rt(e){let t=et(e);if(!t)return;let n=t.querySelector(`.msg-content`),r=tt(e);if(r.length===0)return;let i=nt(t)??r[0];n&&i.parentElement!==t&&t.insertBefore(i,n);for(let e of r)e!==i&&(T(e),e.remove())}function it(e){return tt(e).length>0}function at(e){return e===`thinking`||e===`search`||e===`subagent`?e:`tool`}function ot(e){return e===`done`||e===`error`?e:`running`}function st(e){let t=e.dataset.stepId||``;if(!t)return null;let n=A(t),r=e.querySelector(`.process-step-label`)?.textContent?.trim()||``,i=e.querySelector(`.process-step-full`),a=i?.dataset.detailLazy===`true`?w(t)||n?.preview||``:i?.textContent||w(t)||n?.preview||``,o=e.querySelector(`.process-step-icon`)?.innerHTML||S.tool,s=Number(e.dataset.startTime||``);return{id:t,type:n?.type||at(e.dataset.type),icon:n?.icon||o,rawIcon:n?.rawIcon,label:n?.label||r,isEmployee:n?.isEmployee===!0||e.dataset.isEmployee===`true`,detail:a,detailPreview:n?.preview,detailLength:n?.detailLength,detailTruncated:n?.detailTruncated,stepRef:n?.stepRef||e.dataset.stepRef||``,traceRunId:n?.traceRunId||e.dataset.traceRunId||``,traceSeq:n?.traceSeq||Number(e.dataset.traceSeq||0)||void 0,detailAvailable:n?.detailAvailable,detailBytes:n?.detailBytes,rawRetentionStatus:n?.rawRetentionStatus,status:n?.status||ot(e.dataset.status),startTime:Number.isFinite(s)&&s>0?s:Date.now()}}function ct(e){let t=et(e)?.querySelector(`:scope > .process-block`);if(!t)return null;let n={element:t,steps:Array.from(t.querySelectorAll(`.process-step`)).map(st).filter(e=>!!e),collapsed:t.classList.contains(`collapsed`)};return E(n),n}function lt(e,t=!1){let n=w(e.id)||e.detail||e.detailPreview||``,r=t&&e.status===`running`?`done`:e.status;return{icon:e.rawIcon||e.icon||S.tool,rawIcon:e.rawIcon||e.icon||``,label:e.label||`tool`,isEmployee:e.isEmployee===!0,detail:n,toolType:e.type,stepRef:e.stepRef||``,status:r,traceRunId:e.traceRunId||``,traceSeq:e.traceSeq,detailAvailable:e.detailAvailable,detailBytes:e.detailBytes,rawRetentionStatus:e.rawRetentionStatus}}function ut(e,t=!1){let n=A(e);if(!n)return null;let r=t&&n.status===`running`?`done`:n.status;return{icon:n.rawIcon||n.icon||S.tool,rawIcon:n.rawIcon||n.icon||``,label:n.label||`tool`,isEmployee:n.isEmployee===!0,detail:w(e)||n.preview||``,toolType:n.type,stepRef:n.stepRef||``,status:r,traceRunId:n.traceRunId||``,traceSeq:n.traceSeq,detailAvailable:n.detailAvailable,detailBytes:n.detailBytes,rawRetentionStatus:n.rawRetentionStatus}}function dt(e,t=!1){if(!e)return[];if(`steps`in e)return e.steps.map(e=>lt(e,t));let n=new Set;e.querySelectorAll(`.process-block[data-process-step-ids]`).forEach(e=>{(e.dataset.processStepIds||``).split(/\s+/).filter(Boolean).forEach(e=>n.add(e))}),e.querySelectorAll(`.process-step[data-step-id]`).forEach(e=>{let t=e.dataset.stepId;t&&n.add(t)});let r=[];return n.forEach(n=>{let i=ut(n,t);if(i){r.push(i);return}let a=e.querySelector(`.process-step[data-step-id="${CSS.escape(n)}"]`),o=a?st(a):null;o&&r.push(lt(o,t))}),r}function ft(e){for(let t of tt(e))T(t),t.remove()}function pt(e){return Ae()}function mt(){let t=document.getElementById(`chatMessages`);if(!t||t.querySelector(`.skeleton-msg`)||e.currentAgentDiv&&e.currentAgentDiv.isConnected)return;gt();let n=document.createElement(`div`);n.className=`skeleton-msg`,n.innerHTML=`<div class="skeleton-line"></div><div class="skeleton-line"></div><div class="skeleton-line"></div>`,t.appendChild(n),ne()}function ht(){document.querySelectorAll(`.skeleton-msg`).forEach(e=>e.remove())}function gt(){document.getElementById(`emptyState`)?.classList.remove(`visible`)}function _t(){let e=document.getElementById(`chatMessages`);e&&e.children.length===0&&document.getElementById(`emptyState`)?.classList.add(`visible`)}function vt(e,t,n){let r=document.getElementById(`chatMessages`);if(!r)return;let i=j();gt();let a=document.createElement(`div`);a.className=`msg msg-system`+(n?` msg-type-${n}`:``)+(t?` `+t:``),a.innerHTML=b(e),i.active?i.appendLiveItem(a):r.appendChild(a),ne()}function yt(e){let t=e.match(/^\[(?:사용자가 파일 (\d+)개를 보냈습니다|User sent (\d+) files)\]/);if(t){let n=t[1]||t[2],r=e.match(/(?:사용자 메시지|User message): (.+)$/s);return`📎 [${n} files]${r?` `+r[1].trim():``}`}let n=e.match(/^\[(?:사용자가 파일을 보냈습니다|사용자가 이미지를 보냈습니다|사용자가 동영상을 보냈습니다|User sent a file|User sent an image|User sent a video|ユーザーがファイルを送信しました|ユーザーが画像を送信しました|ユーザーが動画を送信しました|用户发送了文件|用户发送了图片|用户发送了视频)[::]\s*([^\]]+)\]/);if(n){let t=n[1],i=t.split(`/`).pop()||t,a=e.match(/🎤\s*(.{0,80})/)?`${c(`chat.voice.label`)} `:``,o=e.match(/(?:사용자 메시지|User message): (.+)$/s),s=o?` `+o[1].trim():``,l=(i.split(`.`).pop()||``).toLowerCase(),u=`${r}/media/${encodeURIComponent(i)}`;return[`png`,`jpg`,`jpeg`,`gif`,`webp`,`svg`].includes(l)?`${a}<img src="${u}" alt="${i}" class="chat-inline-img" loading="lazy" />${s?`<br>${s}`:``}`:[`mp4`,`webm`,`mov`,`ogg`].includes(l)?`${a}<video src="${u}" controls class="chat-inline-video" preload="metadata"></video>${s?`<br>${s}`:``}`:`${a}📎 [${i}]${s}`}return e}function bt(t,n,r,i){let a=document.getElementById(`chatMessages`),l=j();gt(),ht();let f=t===`user`?yt(n):n,p=ee(f),b=s(t===`user`?c(`msg.you`):Xe()),x=document.createElement(`div`),te=a?a.querySelectorAll(`.msg`).length:null,S=O();x.setAttribute(`data-message-role`,t),x.setAttribute(`data-message-id`,S),te!==null&&x.setAttribute(`data-turn-index`,String(te));let C=Number(window.location.port);Number.isFinite(C)&&C>0&&x.setAttribute(`data-instance-id`,`port:${C}`);let w=Ge();t===`agent`?(x.className=`msg msg-agent`,i?.steered===!0&&(x.dataset.steered=`true`),x.innerHTML=`<div class="agent-icon" aria-hidden="true">${pt(r)}</div><div class="agent-body"><div class="msg-content">${p}</div>${w}</div>`):(x.className=`msg msg-${t}${t===`user`&&r===`goal_continuation`?` msg-goal-boundary`:``}`,x.innerHTML=`<div class="user-body"><div class="msg-label">${b}</div><div class="msg-content">${p}</div>${w}</div><div class="user-icon" aria-hidden="true">${je()}</div>`);let T=x.querySelector(`.msg-content`);T&&T.setAttribute(`data-raw`,h(n));let E=t===`agent`&&!n;if(l.active&&!E)x.classList.contains(`msg-agent`)&&rt(x),l.appendLiveItem(x);else if(a?.appendChild(x),ae(x),d(x),v(x),g(x),u(x),m(x),_(x),!l.active&&!E&&a&&a.querySelectorAll(`.msg`).length>=1){let t=e.currentAgentDiv?.parentElement===a?e.currentAgentDiv:null;t?.remove();try{a.querySelectorAll(`.msg`).forEach(e=>{e.classList.contains(`msg-agent`)&&rt(e),l.addItem(O(),e.outerHTML)})}finally{t&&a.appendChild(t)}l.onPostRender=e=>{ae(e),d(e),v(e),g(e),u(e),m(e),_(e),y(e),o(e,{immediate:!0})}}return ne(t===`user`),x}var xt=3e3,St=24e3,Ct=`⚠️`,wt=`Tool log truncated`,Tt=`Inline preview capped.`,Et=/^tr_[A-Za-z0-9_-]{16,80}$/;function R(e,t){if(e==null)return;let n=String(e);if(n)return n.length<=t?n:`${n.slice(0,Math.max(0,t-1))}…`}function Dt(e,t){return`[detail truncated: kept ${e} of ${t} chars]`}function Ot(e){return{icon:Ct,label:R(e>0?`${e} tool event${e===1?``:`s`} omitted`:wt,240)||wt,toolType:`tool`,status:`done`,detail:Tt}}function kt(e){if(!e||typeof e!=`object`)return 0;let t=e;if(t.icon!==Ct)return 0;let n=String(t.label??``);if(n===wt)return 1;let r=/^(\d+) tool events? omitted$/.exec(n);return r?Number(r[1]):0}function At(e,t){let n=Number(e);if(!(!Number.isFinite(n)||n<0))return Math.min(Math.floor(n),t)}function jt(e,t=xt){let n=e.detail==null?``:String(e.detail),r=Math.max(0,Math.min(xt,t)),i=R(n,r);if(i&&n.length>r){let e=Dt(i.length,n.length),t=Math.max(0,r-e.length-1);i=`${n.slice(0,t)}\n${e}`}let a={icon:R(e.icon,240)||`🔧`,label:R(e.label,240)||`tool`},o=R(e.rawIcon,240),s=R(e.toolType,240),c=R(e.stepRef,240),l=R(e.status,240),u=R(e.traceRunId,96),d=At(e.traceSeq,2**53-1),f=At(e.detailBytes,2**53-1),p=R(e.rawRetentionStatus,32);return o&&(a.rawIcon=o),i&&(a.detail=i),s&&(a.toolType=s),c&&(a.stepRef=c),l&&(a.status=l),e.isEmployee===!0&&(a.isEmployee=!0),u&&Et.test(u)&&(a.traceRunId=u),d!=null&&d>0&&(a.traceSeq=d),e.detailAvailable===!0&&(a.detailAvailable=!0),f!=null&&(a.detailBytes=f),p&&(a.rawRetentionStatus=p),a}function Mt(e,t={}){if(!Array.isArray(e))return[];let n=Number.isSafeInteger(t.knownOmitted)&&t.knownOmitted>=0?t.knownOmitted:0;if(e.length===0&&n===0)return[];let r=e,i=kt(e[0]);i>0&&(r=e.slice(1));let a=0;(i>0||n>0||r.length>160)&&(a=Math.max(0,r.length-159),a>0&&(r=r.slice(a)));let o=Math.max(i+a,n),s=r.map(e=>e&&typeof e==`object`?e:{label:e}),c=Array(s.length).fill(0),l=St;for(let e=s.length-1;e>=0;e--){let t=s[e].detail,n=t==null?0:String(t).length,r=Math.min(xt,l);c[e]=r,l=Math.max(0,l-Math.min(n,r))}let u=s.map((e,t)=>jt(e,c[t]));return o>0&&u.unshift(Ot(o)),Pt(u)}function Nt(e){let t={icon:R(e.icon,24)||`🔧`,label:R(e.label,80)||`tool`},n=R(e.toolType,48),r=R(e.stepRef,80),i=R(e.status,24),a=R(e.detail,180),o=R(e.traceRunId,96),s=At(e.traceSeq,2**53-1),c=At(e.detailBytes,2**53-1),l=R(e.rawRetentionStatus,32);return n&&(t.toolType=n),r&&(t.stepRef=r),i&&(t.status=i),a&&(t.detail=a),e.isEmployee===!0&&(t.isEmployee=!0),o&&Et.test(o)&&(t.traceRunId=o),s!=null&&s>0&&(t.traceSeq=s),e.detailAvailable===!0&&(t.detailAvailable=!0),c!=null&&(t.detailBytes=c),l&&(t.rawRetentionStatus=l),t}function Pt(e){if(JSON.stringify(e).length<=64e3)return e;let t=e.map(Nt),n=JSON.stringify(t);for(;n.length>64e3&&t.length>1;){let e=kt(t[0]);t.splice(+(e>0),1);let r=Ot(e+1);e>0?t[0]=r:t.unshift(r),n=JSON.stringify(t)}if(n.length<=64e3)return t;let r=[{icon:Ct,label:wt,toolType:`tool`,status:`done`,detail:Tt}];return JSON.stringify(r).length<=64e3?r:[]}function Ft(e){let t=Mt(e);if(t.length===0)return null;let n=JSON.stringify(t);return n.length<=64e3?n:JSON.stringify(Pt(t))}function It(e){if(!e)return[];if(e.length>18e4)return[Ot(1)];try{return Mt(JSON.parse(e))}catch{return[]}}function Lt(e){return e===`thinking`||e===`search`||e===`subagent`?e:`tool`}function Rt(e){return e===`running`||e===`done`||e===`error`?e:`done`}function zt(e){if(e.label)return e.label;let t=e;return typeof t.name==`string`&&t.name?t.name:`tool`}function Bt(e){let t=zt(e);return e.toolType===`tool`?F(t):t}function Vt(e){return It(e)}function Ht(e){return Ft(Vt(e))}function Ut(e){return e.role!==`assistant`||!e.tool_log?{...e,tool_log:null}:{...e,tool_log:Ht(e.tool_log)}}function Wt(e,t){let n=t&&t>0?t:Date.now();return e.map(e=>({id:O(),icon:e.icon?x(e.icon):S.tool,rawIcon:e.rawIcon||e.icon||``,label:Bt(e),isEmployee:e.isEmployee===!0,type:Lt(e.toolType),detail:e.toolType===`tool`?D(e.detail||``):e.detail||``,stepRef:e.stepRef||``,traceRunId:e.traceRunId||``,traceSeq:e.traceSeq,detailAvailable:e.detailAvailable,detailBytes:e.detailBytes,rawRetentionStatus:e.rawRetentionStatus,status:Rt(e.status),startTime:n}))}function Gt(e,t){let n=String(e.stepRef||``).trim();return n?`ref:${n}`:`ord:${e.toolType||`tool`}:${e.label||`tool`}:${t}`}function Kt(e,t){if(e.length===0)return t;let n=new Map,r=new Map,i=e=>{let t=`${e.toolType||`tool`}:${e.label||`tool`}`,n=(r.get(t)||0)+1;return r.set(t,n),Gt(e,n)};return t.forEach(e=>n.set(i(e),e)),r.clear(),e.forEach(e=>{let t=i(e),r=n.get(t),a=r?.detail||``,o=e.detail||``;n.set(t,{...r||{},...e,detail:o.length>=a.length?o:a,status:e.status||r?.status||`done`})}),Array.from(n.values())}function qt(e){return Mt(e)}function Jt(e){return Ft(e)}function Yt(e){return Ae()}function Xt(e,t){let n=e.role===`assistant`?`agent`:e.role,r=String(e.id??O()),i=We({role:n,messageId:r,turnIndex:t}),a=e.trace_run_id?` data-trace-run-id="${s(e.trace_run_id)}"`:``,o=e.session_id===void 0?``:` data-message-session-id="${s(e.session_id)}"`,l=e.server_message_id===void 0?``:` data-server-message-id="${s(String(e.server_message_id))}" data-activity-saved="true"`,u=h(n===`user`?yt(e.content):e.content),d=s(n===`user`?c(`msg.you`):Xe()),f=e.role===`assistant`&&e.tool_log?Ht(e.tool_log):null,p=f?s(f):``,m=p?` data-tool-log="${p}"`:``,g=`<div class="msg-content lazy-pending" data-raw="${s(u)}"></div>`,_=Ge(),v=n===`user`&&e.cli===`goal_continuation`?` msg-goal-boundary`:``,ee=n===`agent`?`<div class="msg msg-agent" ${i}${a}${o}${l}><div class="agent-icon" aria-hidden="true">${Yt(e.cli)}</div><div class="agent-body"${m}>${g}${_}</div></div>`:`<div class="msg msg-${n}${v}" ${i}${o}${l}><div class="user-body"><div class="msg-label">${d}</div>${g}${_}</div><div class="user-icon" aria-hidden="true">${je()}</div></div>`;return{id:O(),messageId:r,html:ee,height:80,rehydratesProcessDetails:!!p}}function Zt(e,t){if(t.onBeforeVirtualHistoryBootstrap?.(),t.registerCallbacks(),t.setItems(e,{autoActivate:!1}),t.shouldFollowBottom?.()??!0){t.activateIfNeeded(!0),t.scrollToBottom(),t.onAfterVirtualHistoryBottomed?.();return}let n=t.restoreIndex;n!=null&&n>=0?(t.activateIfNeeded(!1),t.scrollToIndex?.(n)):(t.activateIfNeeded(!0),t.scrollToBottom(),t.onAfterVirtualHistoryBottomed?.())}function Qt(t){let n=document.getElementById(`statusBadge`),r=document.getElementById(`btnSend`),i=document.getElementById(`typingIndicator`)?.querySelector(`.label`);e.agentBusy=t===`running`||t===`steering`,r&&(r.setAttribute(`aria-label`,e.agentBusy?c(`btn.stop`):`Send message`),e.agentBusy?r.setAttribute(`data-i18n-aria`,`btn.stop`):r.removeAttribute(`data-i18n-aria`)),document.getElementById(`typingIndicator`)?.classList.toggle(`active`,e.agentBusy),t===`running`?(n&&(n.className=`status-badge status-running`,n.textContent=`running`),r&&(r.innerHTML=S.stop,r.title=c(`btn.stop`),r.classList.add(`stop-mode`)),i&&(i.textContent=c(`status.responding`)),mt()):t===`steering`?(n&&(n.className=`status-badge status-steering`,n.textContent=`steering`),r&&(r.innerHTML=S.stop,r.title=`Steering...`,r.classList.add(`stop-mode`)),i&&(i.textContent=`Steering...`)):(n&&(n.className=`status-badge status-idle`,n.textContent=`idle`),r&&(r.innerHTML=S.send,r.title=`Send`,r.classList.remove(`stop-mode`)),i&&(i.textContent=c(`status.responding`)),ht())}function $t(e){let t=document.getElementById(`queueBadge`);if(!t){t=document.createElement(`span`),t.id=`queueBadge`,t.className=`queue-badge`;let e=document.getElementById(`btnSend`);e?.parentElement&&(e.parentElement.style.position=`relative`),e&&(e.style.position=`relative`,e.appendChild(t))}t.textContent=e>0?String(e):``,t.style.display=e>0?`flex`:`none`}function en(e){let t=document.getElementById(`statMsgs`);t&&(t.textContent=c(`stat.messages`,{count:e}))}async function tn(){let e=await n(p(`/api/messages/count`));e&&en(e.count)}var nn=4096,rn=32768;function z(e){return JSON.stringify([e.sessionId,e.scope,e.runId,e.turnId])}function an(e){return{identity:{runId:e.runId,sessionId:e.sessionId,scope:e.scope,turnId:e.turnId},seq:0,revision:0,entries:new Map,requests:new Map,end:null,usage:null,latestAction:``,omitted:{entries:0,textChars:0,requests:0,finalChars:0,throughSeq:0}}}var on=(e,t)=>Math.min(2**53-1,e+t);function sn(e){return e.kind===`tool`?[e.input,e.output,e.detail].filter(e=>e!==void 0&&e!==``).join(`
|
|
2
2
|
`):e.text}function cn(e){return e.kind===`tool`?e.name.length+(e.input?.length??0)+(e.output?.length??0)+(e.detail?.length??0):e.text.length}function ln(e){let t=0;for(let n of e.entries.values())t+=cn(n);return t}function un(e,t){let n={...t},r=[`name`,`input`,`output`,`detail`].filter(e=>t[e]!==void 0).sort((e,n)=>t[e].length-t[n].length),i=nn;for(let a=0;a<r.length;a++){let o=r[a],s=t[o],c=Math.min(s.length,Math.floor(i/(r.length-a)));n[o]=s.slice(0,c),i-=c,e.omitted.textChars=on(e.omitted.textChars,s.length-c)}return n}function dn(e,t){let n=t.kind===`tool`?un(e,t):{...t,text:t.text.slice(0,nn)};for(t.kind!==`tool`&&(e.omitted.textChars=on(e.omitted.textChars,Math.max(0,t.text.length-nn))),e.entries.set(t.itemId,n);e.entries.size>128||ln(e)>65536;){let t=e.entries.entries().next().value;if(!t)break;e.entries.delete(t[0]),e.omitted.entries=on(e.omitted.entries,1),e.omitted.throughSeq=Math.max(e.omitted.throughSeq,t[1].seq)}}function fn(e,t){if(z(e.identity)!==z(t)||t.seq<=e.seq||e.end)return!1;switch(t.kind){case`turn-start`:break;case`message`:case`reasoning`:{let n=e.entries.get(t.itemId);if(n&&n.kind!==t.kind)throw Error(`runtime_item_kind_changed`);let r=t.operation===`append`&&n?n.text:``,i=Math.max(0,nn-r.length),a=r+t.text.slice(0,i);e.omitted.textChars=on(e.omitted.textChars,Math.max(0,t.text.length-i)),!n&&t.operation===`append`&&e.omitted.entries&&(e.omitted.throughSeq=Math.max(e.omitted.throughSeq,t.seq)),dn(e,{...t,text:a,operation:`replace`});break}case`tool`:{let n=e.entries.get(t.itemId);if(n&&n.kind!==`tool`)throw Error(`runtime_item_kind_changed`);dn(e,{...n,...t}),e.latestAction=(t.name+` (`+t.status+`)`).replace(/[\u0000-\u001f\u007f-\u009f]/g,` `).replace(/\s+/g,` `).slice(0,240);break}case`request`:e.requests.has(t.requestId)||e.requests.size<16?e.requests.set(t.requestId,{requestId:t.requestId,requestType:t.requestType,title:t.view.title.slice(0,256)}):e.omitted.requests=on(e.omitted.requests,1);break;case`request-settled`:e.requests.delete(t.requestId);break;case`usage`:e.usage={...e.usage,...t};break;case`turn-end`:e.omitted.finalChars=Math.max(0,(t.finalText?.length??0)-rn),e.end={...t,finalText:t.finalText===null?null:t.finalText.slice(0,rn),...t.error===void 0?{}:{error:t.error.slice(0,500)}},e.requests.clear();break;default:throw Error(String(t))}return e.seq=t.seq,e.revision=on(e.revision,1),!0}function pn(e){return e.end?.status??`running`}function mn(e){return e.kind===`tool`?e.name+` (`+e.status+`)`:e.kind===`reasoning`?`Reasoning`:e.phase===`commentary`?`Commentary`:e.phase===`final`?`Answer draft`:`Output (phase unknown)`}var hn=16,gn=256,_n=1048576;function vn(e,t,n,r){if(e.size<hn)return;let i,a=1/0;for(let[o,s]of e){if(!s.end&&!t.has(o)||!n(s))continue;let e=r(s);(i===void 0||e<a)&&(i=o,a=e)}if(i===void 0)throw Error(`activity_turn_capacity`);e.delete(i),t.delete(i)}var yn=class{changed;canEvict;evictionRank;turns=new Map;settled=new Set;pending=[];pendingBytes=0;controller=null;generation=0;scopeGeneration=0;drainingScope=null;targetRun=null;constructor(e,t=()=>!0,n=()=>0){this.changed=e,this.canEvict=t,this.evictionRank=n}markSettled(e){for(let e of this.settled)this.turns.has(e)||this.settled.delete(e);for(let[t,n]of this.turns)n.identity.runId===e&&this.settled.add(t)}live(e){if(!this.controller&&this.drainingScope!==this.scopeGeneration||this.controller&&this.targetRun&&e.runId!==this.targetRun&&!this.pending.some(t=>z(t)===z(e)))return this.apply(e);this.controller?.signal.throwIfAborted();let t=z(e),n=this.turns.get(t);if(n&&(n.end||e.seq<=n.seq))return!1;for(let n=this.pending.length-1;n>=0;n--){let r=this.pending[n];if(z(r)===t){if(r.kind===`turn-end`||e.seq<=r.seq)return!1;break}}let r=new TextEncoder().encode(JSON.stringify(e)).length;if(this.pending.length>=gn||this.pendingBytes+r>_n){let e=Error(`activity_live_buffer_overflow`);throw this.controller?.abort(e),e}return this.pending.push(e),this.pendingBytes+=r,!0}apply(e){let t=z(e),n=this.turns.get(t);if(n){if(!fn(n,e))return!1}else{if(n=an(e),!fn(n,e))return!1;vn(this.turns,this.settled,this.canEvict,this.evictionRank),this.settled.delete(t),this.turns.set(t,n)}return this.changed(n),!0}fold(e,t){let n=new Map,r=new Set(t);for(let t of e){let e=z(t),i=n.get(e);i||(i=an(t),vn(n,r,this.canEvict,this.evictionRank),n.set(e,i)),fn(i,t)}let i=new Map(this.turns);for(let[e,t]of n){let n=i.get(e);!n||t.seq<n.seq||n.end&&t.seq>n.seq||i.set(e,t)}for(let[e,r]of n)this.turns.has(e)||(vn(i,t,this.canEvict,this.evictionRank),i.set(e,r));return i}publish(e,t,n){let r=[];for(let[t,n]of e){let i=this.turns.get(t);if(i===n)continue;let a=i?Object.assign(i,n):n;e.set(t,a),r.push(a)}this.turns.clear();for(let[t,n]of e)this.turns.set(t,n);for(let n of t)e.has(n)||t.delete(n);this.settled=t;for(let e of r){if(n!==this.generation)break;this.changed(e)}}foldPending(e,t){for(let n of this.pending){let r=z(n),i=e.get(r);i&&(i.end||n.seq<=i.seq)||(i&&i===this.turns.get(r)&&(i=structuredClone(i)),i||(i=an(n),vn(e,t,this.canEvict,this.evictionRank)),fn(i,n),e.set(r,i))}}drain(){let e=this.scopeGeneration,t=[];if(this.drainingScope===e)return t;this.drainingScope=e;try{for(;this.pending.length&&e===this.scopeGeneration&&!this.controller;){let e=this.pending.shift();this.pendingBytes-=new TextEncoder().encode(JSON.stringify(e)).length;try{this.apply(e)}catch(e){t.push(e)}}}finally{this.drainingScope===e&&(this.drainingScope=null)}return t}async restore(e,t){let n=this.controller,r=new AbortController,i=++this.generation;this.controller=r,this.targetRun=t?.runId??null;let a,o=new Promise(e=>{a=()=>e(null),r.signal.addEventListener(`abort`,a,{once:!0})}),s=[],c=()=>r.abort(t?.signal?.reason);t?.signal?.aborted?c():t?.signal?.addEventListener(`abort`,c,{once:!0});try{if(n?.abort(),i!==this.generation)return;r.signal.throwIfAborted();let a=new Promise(t=>t(e(r.signal))),s=await Promise.race([o,a]);if(i!==this.generation)return;if(s===null||r.signal.aborted)throw r.signal.reason;if(t?.runId!==void 0&&s.some(e=>e.runId!==t.runId))throw Error(`activity_restore_target`);let c=new Set(this.settled),l=this.fold(s,c);this.foldPending(l,c),this.pending=[],this.pendingBytes=0,this.publish(l,c,i)}catch(e){if(i!==this.generation)return;s.push(e),r.abort(e)}finally{t?.signal?.removeEventListener(`abort`,c),r.signal.removeEventListener(`abort`,a),i===this.generation&&(this.controller=null,this.targetRun=null,s.push(...this.drain()))}if(s.length===1)throw s[0];if(s.length>1)throw AggregateError(s,`activity_replay_failed`)}reset(){++this.generation,++this.scopeGeneration;let e=this.controller;this.controller=null,this.targetRun=null,this.pending=[],this.pendingBytes=0,this.turns.clear(),this.settled.clear(),e?.abort()}};function bn(e){return e.replace(/([a-z0-9])([A-Z])/g,`$1_$2`).toLowerCase()}function xn(e){return/(^|[\s_.:/-])(write|edit|apply_patch|patch|create)(?=$|[\s_.:/-])/.test(bn(e))}function Sn(e){if(/__|mcp/i.test(e))return`mcp`;let t=bn(e);return/(^|[\s_.:/-])(bash|shell|exec|run|command|terminal)(?=$|[\s_.:/-])/.test(t)?`command`:/(^|[\s_.:/-])(read|view|cat|write|edit|apply_patch|patch|create)(?=$|[\s_.:/-])/.test(t)?`file`:/(^|[\s_.:/-])(grep|glob|rg|search|find|list)(?=$|[\s_.:/-])/.test(t)?`search`:`other`}function Cn(e){let t=[],n=[],r=`other`,i=()=>{let e=n[0];if(e){if(n.length===1)t.push({type:`row`,entry:e});else{let i=n.length,a=r===`file`?n.filter(e=>xn(e.name)).length:0,o=r===`command`?`Ran ${i} commands`:r===`file`?`${a===0?`Read`:a===i?`Edited`:`Worked on`} ${i} files`:r===`search`?`Searched ${i} times`:`Called ${i} tools`;t.push({type:`group`,key:JSON.stringify([r,e.itemId]),kind:r,label:o,entries:n})}n=[]}};for(let a of e){if(a.kind!==`tool`){i(),t.push({type:`row`,entry:a});continue}let e=Sn(a.name);n.length&&e!==r&&i(),r=e,n.push(a)}return i(),t}var wn={command:`terminal`,file:`file`,search:`search`,mcp:`plug`,other:`tool`};function B(e,t,n){let r=e.createElement(t);return r.className=n,r}function Tn(e,t){e.textContent!==t&&(e.textContent=t)}function En(e,t){e.dataset.icon!==t&&(e.dataset.icon=t,e.setAttribute(`aria-hidden`,`true`),te(e.parentElement))}function Dn(e,t){let n=B(e,`details`,`activity-item activity-row`);n.dataset.activityItemId=t;let r=B(e,`summary`,`activity-item-summary`);r.append(B(e,`span`,`activity-row-icon`),B(e,`span`,`activity-row-label`),B(e,`span`,`activity-row-status`),B(e,`span`,`activity-chevron-sm`));let i=B(e,`pre`,`activity-item-text`);return i.tabIndex=0,i.setAttribute(`aria-label`,`Activity preview`),n.append(r,i),En(r.lastElementChild,`chevronDown`),n}function On(e,t,n){let r=t.kind===`tool`?Sn(t.name):t.kind;e.className=`activity-item activity-row${t.kind===`tool`?``:` activity-row-${t.kind}`}`,e.dataset.kind=r,e.dataset.status=t.kind===`tool`?t.status:``;let i=e.querySelector(`summary`);i.setAttribute(`aria-label`,mn(t)),En(i.querySelector(`.activity-row-icon`),t.kind===`tool`?wn[Sn(t.name)]:t.kind===`reasoning`?`brain`:`thinking`);let a=mn(t),o=``;if(t.kind===`tool`){let e=r===`file`&&xn(t.name),n=r===`command`?`Ran`:r===`file`?e?`Edited`:`Read`:r===`search`?`Searched`:`Called`,i=r===`command`?`Running`:r===`file`?e?`Editing`:`Reading`:r===`search`?`Searching`:`Calling`;a=`${t.status===`done`?n:t.status===`running`?i:t.status===`error`?`Failed`:`Stopped`} ${(t.input??``).split(/\r?\n/,1)[0].trim()||t.name}`,o=t.status===`error`?`failed`:t.status===`done`?``:t.status}Tn(i.querySelector(`.activity-row-label`),a);let s=i.querySelector(`.activity-row-status`);Tn(s,o),s.setAttribute(`aria-label`,o===`failed`?`Tool call failed`:o);let c=sn(t);Tn(e.querySelector(`pre`),c.length>n?`${c.slice(0,n)}\n[Preview limited; some text is omitted]`:c)}function kn(e,t){let n=new Map;function r(e,t,n){e.children[n]!==t&&e.insertBefore(t,e.children[n]??null)}return{render(i,a){let o=new Set;i.forEach((i,s)=>{if(i.type===`row`){r(t,a(i.entry),s);return}o.add(i.key);let c=n.get(i.key);if(!c){let t=B(e,`div`,`activity-group`),r=B(e,`button`,`activity-group-summary`),a=B(e,`div`,`activity-group-body`);r.type=`button`,r.setAttribute(`aria-expanded`,`true`),r.append(B(e,`span`,`activity-row-icon`),B(e,`span`,`activity-row-label`),B(e,`span`,`activity-chevron-sm`)),a.tabIndex=0,a.setAttribute(`role`,`region`),a.setAttribute(`aria-label`,`Tool calls`),t.append(r,a),t.dataset.kind=i.kind,En(r.firstElementChild,wn[i.kind]),En(r.lastElementChild,`chevronDown`),r.onclick=()=>{a.hidden=!a.hidden,r.setAttribute(`aria-expanded`,String(!a.hidden))},c={root:t,head:r,body:a},n.set(i.key,c)}let l=[`error`,`stopped`,`running`].find(e=>i.entries.some(t=>t.status===e)),u=i.kind===`command`?`commands`:i.kind===`file`?`files`:i.kind===`search`?`searches`:`tools`;Tn(c.head.querySelector(`.activity-row-label`),l?`${i.entries.length} ${u} · ${l===`error`?`failed`:l}`:i.label),r(t,c.root,s),i.entries.forEach((e,t)=>r(c.body,a(e),t))});for(let[e,t]of n)o.has(e)||(t.head.onclick=null,t.root.remove(),n.delete(e))},dispose(){for(let e of n.values())e.head.onclick=null;n.clear()}}}var An=128,jn=40,Mn=3e3,Nn=()=>({open:!1,items:new Map,page:null});function Pn(e,t,n,r=!1){return!n&&!r?(e.items.delete(t),!0):!e.items.has(t)&&e.items.size>=An?!1:(e.items.set(t,n),!0)}function Fn(e,t,n){let r=e.ownerDocument;function i(e,t){let n=r.createElement(e);return n.className=t,n}function a(e,t){let n=i(`button`,t);return n.type=`button`,n.textContent=e,n}function o(e,t){e.textContent!==t&&(e.textContent=t)}let s=i(`section`,`activity-turn`);s.setAttribute(`aria-label`,`Turn activity`);let c=i(`p`,`activity-status sr-only`);c.setAttribute(`role`,`status`),c.setAttribute(`aria-live`,`polite`),c.setAttribute(`aria-atomic`,`true`);let l=i(`details`,`activity-disclosure`),u=i(`summary`,`activity-summary`),d=i(`span`,`activity-chevron`);d.dataset.icon=`chevronRight`,d.setAttribute(`aria-hidden`,`true`);let f=i(`span`,`activity-status-label`),p=i(`span`,`activity-summary-text`),m=i(`span`,`activity-steer-pill`);m.hidden=!0;let h=i(`span`,`pending-steer-arrow`);h.textContent=`↳`,h.setAttribute(`aria-hidden`,`true`);let g=i(`span`,`pending-steer-label`);g.textContent=`steered`,m.append(h,r.createTextNode(` `),g);let _=i(`span`,`activity-accessory`);u.append(d,f,p,m,_),te(u);let v=i(`div`,`activity-list`),ee=i(`p`,`activity-empty`);ee.textContent=`No activity recorded`;let y=i(`nav`,`activity-pages`);y.setAttribute(`aria-label`,`Activity pages`);let b=a(`Earlier activity`,`activity-previous`),x=a(`Later activity`,`activity-next`),S=i(`span`,`activity-page-position`);y.append(b,S,x),l.append(u,ee,v,y);let C=i(`p`,`activity-error`),w=i(`p`,`activity-degraded`),T=i(`p`,`activity-connection`);T.hidden=!0;let E=i(`p`,`activity-omitted`),D=i(`p`,`activity-choice-notice`);D.setAttribute(`role`,`status`);let O=i(`p`,`activity-requests`);for(let e of[C,w,E,D,O])e.hidden=!0;l.append(w,T,E,D,O),s.append(c,C,l);let k=n?a(`Open in Trace`,`activity-trace`):null;if(k){k.setAttribute(`aria-label`,`Inspect retained activity in Trace`);let e=i(`footer`,`activity-footer`);e.append(k),l.append(e)}e.insertBefore(s,e.querySelector(`:scope > .msg-content`));let A=null,j={},M=0,N=!1,P=!1,F=new Map,ne=kn(r,v),re=new WeakMap;function ie(){D.hidden=!P,o(D,P?`128 detail choices are remembered. Close a completed open item to free a choice; existing choices are preserved.`:``)}function ae(e,n){if(N||F.get(e)!==n||n.open===re.get(n))return;let r=n.dataset.status===`running`;Pn(t,e,n.open,r)?(P=!1,n.open&&t.page===null&&(t.page=M)):(n.open=re.get(n)??!1,P=!0),re.set(n,n.open),ie()}function oe(){t.open=l.open;for(let[e,t]of F)ae(e,t)}l.open=t.open,l.ontoggle=()=>{N||(t.open=l.open)},k&&(k.onclick=()=>{A&&!N&&n?.(A)});function se(e,n,r){if(!A||N)return;oe();let i=Math.max(0,Math.ceil(A.entries.size/jn)-1);t.page=Math.max(0,Math.min(i,M+e)),I(A,j),(y.hidden||!l.open?u:n.disabled?r.disabled?u:r:n).focus({preventScroll:!0})}b.onclick=()=>se(-1,b,x),x.onclick=()=>se(1,x,b);function I(e,n={}){if(N)return;oe(),A=e,j={...n};let i=j.status??pn(e);s.dataset.status=i,s.dataset.degraded=String(j.degraded===!0);let a=i===`running`?`Working`:i===`finished`?`Finished`:i===`done`?`Complete`:i===`stopped`?`Stopped`:`Failed`;o(c,a);let l=i===`error`&&e.end?.status===`error`?e.end.error??``:``;o(C,l),C.hidden=!l;let d=`${e.entries.size} step${e.entries.size===1?``:`s`}`;o(f,a),o(p,e.latestAction||d),o(_,String(e.entries.size)),_.dataset.unit=e.entries.size===1?` step`:` steps`,_.hidden=!e.latestAction,u.setAttribute(`aria-label`,`${a} · ${e.latestAction?`${e.latestAction} · `:``}${d}${j.steered?` · steered`:``}`),m.hidden=j.steered!==!0,o(w,j.degraded?`Activity is incomplete. Some runtime updates were not received.`:``),w.hidden=!j.degraded,o(T,j.connectionUnavailable?`Live activity updates are unavailable. Retained activity can be refreshed separately.`:``),T.hidden=!j.connectionUnavailable;let h=e.omitted,g=[...e.entries.values()],te=!!(h.entries||h.textChars||h.requests||h.finalChars)||g.some(e=>sn(e).length>Mn);o(E,te?`Preview is limited. Some activity, text or request notices are omitted.`:``),E.hidden=!te;let D=!!(e.requests.size||h.requests);o(O,D?`Request notices recorded; see live Requests controls for current requests.`:``),O.hidden=!D;let k=Math.max(0,Math.ceil(g.length/jn)-1);M=t.page===null?k:Math.max(0,Math.min(k,Math.floor(t.page)));let P=g.slice(M*jn,(M+1)*jn),se=new Set(P.map(e=>e.itemId)),I=r.activeElement,ce=I!==null&&v.contains(I),le=!1;for(let[e,t]of F)se.has(e)||(t.contains(I)&&(le=!0),t.ontoggle=null,t.remove(),F.delete(e));ne.render(Cn(P),e=>{let n=F.get(e.itemId);if(!n){n=Dn(r,e.itemId);let t=n;n.ontoggle=()=>ae(e.itemId,t),F.set(e.itemId,n)}On(n,e,Mn);let i=t.items.get(e.itemId)??(e.kind===`tool`&&e.status===`running`);return re.set(n,i),n.open!==i&&(n.open=i),n});let ue=I?.closest(`.activity-group-body[hidden]`);ce&&ue?ue.previousElementSibling.focus({preventScroll:!0}):ce&&I?.isConnected&&r.activeElement!==I?I.focus({preventScroll:!0}):ce&&!I?.isConnected&&(le=!0),ee.hidden=g.length!==0,b.disabled=M===0,x.disabled=M>=k,o(S,g.length?`${M+1} / ${k+1}`:`0 / 0`),y.hidden=g.length<=jn,ie(),le&&u.focus({preventScroll:!0})}function ce(){if(!N){oe(),N=!0,l.ontoggle=null,b.onclick=x.onclick=null,k&&(k.onclick=null);for(let e of F.values())e.ontoggle=null;ne.dispose(),F.clear(),A=null,s.remove()}}return{element:s,render:I,dispose:ce}}var V;function In(e){V=e}var Ln=class extends Error{constructor(){super(`activity_capacity`)}},Rn=16,H=new Map,zn=new Map,U=new Map,W=new yn(e=>{let t=H.get(z(e.identity));t&&(t.model=e,q(t))},Vn,Hn),G=null,Bn=!0;function Vn(e){let t=H.get(z(e.identity))?.message;return!t?.contains(t.ownerDocument.activeElement)}function Hn(e){return+!!H.get(z(e.identity))?.message.isConnected}function Un(e){Bn=e;for(let e of H.values())q(e)}function Wn(){V.closeTrace?.()}function Gn(e){return V.currentMessage()===e}function Kn(e,t){t.view.dispose(),delete t.message.dataset.activityKey,delete t.message.dataset.activityLive,H.delete(e),W.turns.delete(e),V.evicted?.(t.message)}function qn(){for(let e of H.values())e.view.dispose(),delete e.message.dataset.activityKey,delete e.message.dataset.activityLive;H.clear(),W.reset(),zn.clear(),U.clear(),G=null}function Jn(e){G&&e&&(G.sessionId!==e.sessionId||G.scope!==e.scope)&&qn(),e&&(G={...e})}function K(e){for(let t of H.values())if(t.model.identity.runId===e)return t}function q(e){let t=e.model.end?.status??e.terminalStatus;e.degraded=e.recordingGap||!e.model.end&&!e.canonicalTerminal&&!!e.terminalStatus,e.message.dataset.activityLive=t||e.message.dataset.activitySaved===`true`?`false`:`true`,e.view.render(e.model,{...t?{status:t}:{},degraded:e.degraded,connectionUnavailable:!t&&(!Bn||e.model.identity.scope!==G?.scope),steered:e.message.dataset.steered===`true`})}function Yn(e){let t=K(e.runId);return!t||G?.sessionId!==e.sessionId||t.model.identity.sessionId!==e.sessionId||t.model.identity.scope!==e.scope?!1:(t.message.dataset.steered=`true`,q(t),!0)}function Xn(){if(H.size<Rn)return!0;let e=[...H].filter(([,e])=>(e.model.end||e.terminalStatus)&&Vn(e.model)).sort(([,e],[,t])=>Hn(e.model)-Hn(t.model))[0];return e?(Kn(e[0],e[1]),!0):!1}function Zn(e){let t=zn.get(e);if(t)return t;if(zn.size>=64){let e=[...zn].find(([,e])=>!e.open&&e.items.size===0);if(!e)return null;zn.delete(e[0])}let n=Nn();return zn.set(e,n),n}function Qn(e,t){let n=z(e.identity);if(!H.has(n)&&!Xn())return null;let r=Zn(n);if(!r)return null;t.dataset.activityKey=n,t.dataset.traceRunId=e.identity.runId,t.dataset.activitySession=e.identity.sessionId,t.dataset.messageSessionId=e.identity.sessionId;let i=t.querySelector(`.agent-body`);if(!i)return null;t.querySelector(`.activity-turn`)?.remove();let a={model:e,choices:r,message:t,view:Fn(i,r,e=>{V.inspectTrace(e.identity.runId,e.identity.sessionId)}),degraded:!1,recordingGap:!1,canonicalTerminal:!!e.end,cacheScope:le()};return H.set(n,a),W.turns.set(n,e),q(a),a}function $n(e,t=!0){if(!G||G.sessionId!==e.sessionId||G.scope!==e.scope)return null;let n=z(e),r=K(e.runId);if(r&&z(r.model.identity)!==n)return null;let i=H.get(n);if(!i){let r=W.turns.get(n);if(r&&(r.end||e.seq<=r.seq))return null;if(!Zn(n)||!Xn())throw new Ln;let a=V.currentMessage(),o=t&&a?.isConnected&&(!a.dataset.activityKey||a.dataset.activityKey===n)?a:V.createMessage();if(i=Qn(W.turns.get(n)??an(e),o)??void 0,!i)return null;i.recordingGap=e.kind!==`turn-start`,V.useMessage(o)}try{if(!W.live(e))return null}catch(e){i.recordingGap||console.warn(`[activity] live replay unavailable`,e),i.recordingGap=!0}return e.kind===`turn-end`&&(i.canonicalTerminal=!0,i.terminalStatus=e.status),q(i),i}function er(e,t=`finished`){if(!e)return;W.markSettled(e);let n=K(e);n&&(n.model.end||(n.terminalStatus=t),q(n))}function tr(e){let t=e.message.dataset.messageId;t&&V.currentMessage()===e.message&&!K(e.runId)&&e.message.dataset.traceRunId===e.runId&&e.message.dataset.messageSessionId===e.sessionId&&(U.size>=64&&U.delete(U.keys().next().value),U.set(e.runId,{...e,messageId:t,corrected:!1}),e.message.dataset.activityAnswerPending=`true`)}function nr(e){return U.has(e)}function rr(e){let t=U.get(e.runId);if(!t||t.corrected||t.sessionId!==e.sessionId||t.scope!==e.scope)return!1;let n=!1,r=r=>{r.dataset.messageId===t.messageId&&r.dataset.traceRunId===e.runId&&r.dataset.messageSessionId===e.sessionId&&r.dataset.activityAnswerPending===`true`&&(V.replaceAnswer(r,e.text),delete r.dataset.activityAnswerPending,n=!0)};return!V.reconcileMessage(t.messageId,r)&&t.message.isConnected&&r(t.message),n?(t.corrected=!0,ue(e.runId,e.text,t.cacheScope,e.sessionId),!0):!1}function ir(e,t){let n=K(e);if(!n||n.answerSource!==`canonical`&&n.answerSource!==`unavailable`)return;let r=n.message.dataset.messageId,i=!1,a=r=>{r.dataset.traceRunId===e&&r.dataset.activityKey===z(n.model.identity)&&(sr(e,r),V.replaceAnswer(r,t),i=!0)};(!r||!V.reconcileMessage(r,a))&&a(n.message),i&&(n.answerSource=`compatibility`,ue(e,t,n.cacheScope,n.model.identity.sessionId))}function ar(e,t,n){if(V.currentMessage()===e)return!1;let r=t.trace_run_id,i=!1,a=e=>{if(e.dataset.traceRunId!==r||e.dataset.messageSessionId!==t.session_id||e.dataset.serverMessageId&&e.dataset.serverMessageId!==String(t.id))return;sr(r,e),V.replaceAnswer(e,t.content),e.dataset.serverMessageId=String(t.id),e.dataset.activitySaved=`true`,delete e.dataset.activityAnswerPending;let n=U.get(r);n&&n.messageId===e.dataset.messageId&&n.sessionId===t.session_id&&(n.corrected=!0);let a=K(r);a?.message===e&&(a.answerSource=`saved`,q(a)),i=!0},o=e.dataset.messageId;return(!o||!V.reconcileMessage(o,a))&&a(e),i&&ue(r,t.content,n,t.session_id,t.id),i}function or(e){let t=K(e);t&&(t.recordingGap=!0,q(t))}function sr(e,t){let n=K(e);if(!n||n.message===t&&t.contains(n.view.element))return;n.view.dispose(),t.querySelector(`.activity-turn`)?.remove();let r=t.querySelector(`.agent-body`);r&&(t.dataset.activityKey=z(n.model.identity),t.dataset.traceRunId=e,t.dataset.activitySession=n.model.identity.sessionId,t.dataset.messageSessionId=n.model.identity.sessionId,n.message.dataset.steered===`true`&&(t.dataset.steered=`true`),n.message=t,n.view=Fn(r,n.choices,t=>{V.inspectTrace(e,t.identity.sessionId)}),q(n))}async function cr(e,t){try{await W.restore(e,t)}finally{for(let[e,t]of H)W.turns.has(e)||Kn(e,t)}}function lr(e,t){let n=K(t);if(n)return sr(t,e),n;let r=[...W.turns.values()].find(e=>e.identity.runId===t);return r?Qn(r,e):null}function ur(e){let t=H.get(e.dataset.activityKey??``);t?.message===e&&t.view.dispose()}function dr(e,t){let n=K(e);n&&(n.recordingGap=t,q(n))}function fr(e){for(let t of e.querySelectorAll(`.msg-agent[data-activity-key]`)){if(t.parentElement?.closest(`.msg-agent`))continue;let e=H.get(t.dataset.activityKey);if(!e){t.querySelector(`.activity-turn`)?.remove(),delete t.dataset.activityKey,delete t.dataset.activityLive;continue}t.dataset.traceRunId===e.model.identity.runId&&t.dataset.messageSessionId===e.model.identity.sessionId&&t.dataset.messageId===e.message.dataset.messageId&&sr(e.model.identity.runId,t)}}var pr=e=>typeof e==`object`&&!!e&&!Array.isArray(e),J=e=>typeof e==`string`&&e.length>0&&e.length<=240,mr=e=>typeof e==`string`&&e.length<=2e5,hr=e=>e===`running`||e===`done`||e===`error`||e===`stopped`;function gr(e){if(!pr(e)||typeof e.title!=`string`||e.title.length>500||!Array.isArray(e.fields)||e.fields.length>8)return null;let t=[],n=new Set;for(let r of e.fields){if(!pr(r)||!J(r.id)||typeof r.label!=`string`||r.label.length>500||!Array.isArray(r.options)||r.options.length>20||typeof r.multiSelect!=`boolean`||typeof r.allowFreeform!=`boolean`||n.has(r.id))return null;n.add(r.id);let e=[],i=new Set;for(let t of r.options){if(!pr(t)||!J(t.id)||typeof t.label!=`string`||t.label.length>500||i.has(t.id))return null;i.add(t.id),e.push({id:t.id,label:t.label})}t.push({id:r.id,label:r.label,options:e,multiSelect:r.multiSelect,allowFreeform:r.allowFreeform})}return{title:e.title,fields:t}}function _r(e){if(!pr(e)||e.version!==1||!J(e.runId)||!J(e.sessionId)||!J(e.scope)||!J(e.turnId)||!Number.isSafeInteger(e.seq)||Number(e.seq)<=0)return null;let t={version:1,runId:e.runId,sessionId:e.sessionId,scope:e.scope,turnId:e.turnId,seq:Number(e.seq)};if(e.parentItemId!==void 0){if(!J(e.parentItemId))return null;t.parentItemId=e.parentItemId}let n=e.kind;if(n===`turn-start`&&J(e.provider))return{...t,kind:n,provider:e.provider};if((n===`message`||n===`reasoning`)&&J(e.itemId)&&mr(e.text)&&(e.operation===`append`||e.operation===`replace`)){let r={...t,itemId:e.itemId,text:e.text,operation:e.operation};if(n===`reasoning`)return{...r,kind:n};let i=e.phase;return i===`commentary`||i===`final`||i===`unknown`?{...r,kind:n,phase:i}:null}if(n===`tool`&&J(e.itemId)&&J(e.name)&&hr(e.status)){for(let t of[`input`,`output`,`detail`])if(e[t]!==void 0&&!mr(e[t]))return null;return{...t,kind:n,itemId:e.itemId,name:e.name,status:e.status,...typeof e.input==`string`?{input:e.input}:{},...typeof e.output==`string`?{output:e.output}:{},...typeof e.detail==`string`?{detail:e.detail}:{}}}if(n===`request`&&J(e.requestId)&&(e.requestType===`approval`||e.requestType===`question`)){let r=gr(e.view);return r?{...t,kind:n,requestId:e.requestId,requestType:e.requestType,view:r}:null}if(n===`request-settled`&&J(e.requestId))return{...t,kind:n,requestId:e.requestId};if(n===`turn-end`&&hr(e.status)&&e.status!==`running`&&(e.finalText===null||mr(e.finalText)))return e.error!==void 0&&!mr(e.error)?null:{...t,kind:n,status:e.status,finalText:e.finalText,...typeof e.error==`string`?{error:e.error}:{}};if(n===`usage`){let r={};for(let t of[`inputTokens`,`outputTokens`,`cachedTokens`]){let n=e[t];if(n!==void 0){if(typeof n!=`number`||!Number.isSafeInteger(n)||n<0)return null;r[t]=n}}return{...t,kind:n,...r}}return null}var vr=40,yr=27e4,br=4096,xr=4194304,Sr=4097,Cr=16777216,wr=new TextEncoder,Tr=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Er=e=>typeof e==`string`&&e.length>0&&e.length<=240,Dr=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>=0;async function Or(e,t,n=yr){e.signal.throwIfAborted();let r=await e.read(t,e.signal);e.signal.throwIfAborted();let i=JSON.stringify(r);if(i!==void 0&&wr.encode(i).length>n)throw Error(`activity_page_limit`);if(!Tr(r)||!Object.hasOwn(r,`ok`)&&!Object.hasOwn(r,`data`))return r;if(r.ok!==!0||!Tr(r.data))throw Error(`invalid_activity_envelope`);return r.data}async function kr(e){if(!Er(e.runId)||!Er(e.sessionId))throw Error(`invalid_activity_identity`);if(e.after!==void 0&&!Dr(e.after))throw Error(`invalid_activity_cursor`);let t=[],n=e.after??0,r,i,a,o=!1,s=null,c=0,l=`running`;for(let u=0;u<Sr;u++){let u=new URLSearchParams({session:e.sessionId,after:String(n),limit:String(vr)});r!==void 0&&u.set(`through`,String(r));let d=await Or(e,`/api/traces/${encodeURIComponent(e.runId)}/activity?${u}`);if(!Tr(d)||d.runId!==e.runId||d.sessionId!==e.sessionId||!Er(d.scope)||!Dr(d.through)||!Dr(d.nextAfter)||typeof d.hasMore!=`boolean`||typeof d.incomplete!=`boolean`||d.loss!==null&&typeof d.loss!=`string`||!Array.isArray(d.events)||d.events.length>vr)throw Error(`invalid_activity_page`);if(r!==void 0&&d.through!==r)throw Error(`activity_cursor_changed`);if(i!==void 0&&d.scope!==i)throw Error(`activity_scope_changed`);let f=d.status;if(f!==`running`&&f!==`done`&&f!==`error`&&f!==`interrupted`)throw Error(`invalid_activity_status`);l=f,r=d.through,i=d.scope;let p=d.nextAfter;if(p<n||p>r)throw Error(`invalid_activity_cursor`);for(let r of d.events){let o=_r(r);if(!o||o.runId!==e.runId||o.sessionId!==e.sessionId||o.scope!==i||o.seq<=n||o.seq>p)throw Error(`invalid_activity_identity`);if(a!==void 0&&o.turnId!==a)throw Error(`activity_turn_changed`);a=o.turnId;let s=t[t.length-1];if(s&&o.seq<=s.seq)throw Error(`unordered_activity_page`);if(c+=wr.encode(JSON.stringify(o)).length,t.length>=br||c>xr)throw Error(`activity_run_limit`);t.push(o)}if(o||=d.incomplete||d.loss!==null,s??=d.loss,!d.hasMore)return{events:t,through:r,scope:i,incomplete:o,loss:s,status:l};if(p<=n)throw Error(`activity_cursor_stalled`);n=p}throw Error(`activity_page_count_limit`)}async function Ar(e){if(!Er(e.runId)||!Er(e.sessionId))throw Error(`invalid_activity_identity`);let t=new URLSearchParams({session:e.sessionId}),n=await Or(e,`/api/messages/by-trace/${encodeURIComponent(e.runId)}?${t}`,Cr);if(!Tr(n))throw Error(`invalid_saved_activity_answer`);let r=n.message;if(r===null)return null;if(!Tr(r)||!Dr(r.id)||r.id===0||r.role!==`assistant`||typeof r.content!=`string`||r.trace_run_id!==e.runId||r.session_id!==e.sessionId)throw Error(`invalid_saved_activity_answer`);return{id:r.id,role:`assistant`,content:r.content,trace_run_id:e.runId,session_id:e.sessionId}}var jr=class extends Error{status;constructor(e){super(e===401||e===403?`Activity access is unavailable. Check this instance connection.`:e===404?`Activity is unavailable for this conversation.`:e===409?`More than one saved answer refers to this run. The existing transcript is unchanged.`:e===413?`The saved answer exceeds the inline recovery limit. The existing transcript is unchanged.`:`Activity could not be loaded. Retry when the connection is available.`),this.status=e}};async function Mr(e,t,n=27e4){try{return await i(e,{},t,n)}catch(e){throw e instanceof a?new jr(e.status):e}}var Nr=`.msg-agent[data-trace-run-id]`,Pr=64,Fr=16,Ir=3e4,Y=null,Lr=null,Rr=null,zr=new Set,Br=0,Vr=!1,Hr=!1,Ur=``,X=null,Wr=null,Gr=null,Z=new Map,Kr=new Map,qr=()=>document.documentElement.dataset.presentationMode!==`legacy`,Jr=()=>document.getElementById(`chatMessages`),Yr=()=>`${window.location.pathname}${window.location.search}`;function Xr(e){let t=Jr(),n=e.parentElement;return!!t&&(n===t||n?.classList.contains(`vs-inner`)===!0&&n.parentElement===t)}function Zr(e,t,n){return Xr(e)&&e.dataset.traceRunId===t&&e.dataset.messageSessionId===n&&(Rr===n&&zr.has(t)||K(t)?.message===e||e.dataset.activitySession===n||e.hasAttribute(`data-active-run-hydrated`))}function Qr(e,t,n,r){return Z.get(e.message)===e&&!e.controller.signal.aborted&&e.message.isConnected&&Br===n&&r===Yr()&&Y?.sessionId===t.sessionId&&Y.scope===t.scope&&Zr(e.message,e.runId,t.sessionId)}function $r(e,t){e.querySelectorAll(`.process-step-trace`).forEach(e=>{e.setAttribute(`aria-disabled`,String(!t)),e.tabIndex=t?0:-1,e instanceof window.HTMLButtonElement&&(e.disabled=!t)})}function ei(e){e.retry.disabled=!1,e.pending=!1,e.resolve?.(),e.resolve=null,e.promise=null}function Q(e,t){e.controller.abort(),t?X?.unobserve(e.message):(e.status.textContent=`Activity read cancelled. Retry to inspect.`,e.retry.textContent=`Retry activity`,e.retry.hidden=!1,e.box.hidden=!1),Kr.delete(e.message)&&ei(e),t&&(Z.delete(e.message),e.box.remove())}function ti(){for(let e of Z.values())e.message.isConnected||Q(e,!0);Z.size<Pr&&document.getElementById(`activityHistoryCapacity`)?.remove()}function ni(e,t){let n=Z.get(e);if(n?.runId===t)return n;if(n&&Q(n,!0),ti(),Z.size>=Pr){if(!document.getElementById(`activityHistoryCapacity`)){let e=document.createElement(`p`);e.id=`activityHistoryCapacity`,e.className=`activity-read-capacity`,e.setAttribute(`role`,`status`),e.textContent=`Activity inspection is at its display limit. Existing answers remain available; scroll unused records away before retrying.`,Jr()?.append(e)}return null}e.querySelector(`.activity-read-control`)?.remove();let r=document.createElement(`div`);r.className=`activity-read-control`;let i=document.createElement(`p`);i.setAttribute(`role`,`status`);let a=document.createElement(`button`);a.type=`button`,a.textContent=`Load activity`,r.append(i,a),e.querySelector(`.agent-body`)?.prepend(r);let o={message:e,runId:t,cacheScope:le(),controller:new AbortController,box:r,status:i,retry:a,pending:!1,loaded:!1,promise:null,resolve:null};return a.onclick=()=>{si(e,t,!0)},Z.set(e,o),qr()&&$r(e,!1),o}function ri(e){if(!Y||!Zr(e,e.dataset.traceRunId??``,Y.sessionId))return;let t=ni(e,e.dataset.traceRunId);t&&(t.loaded=!1,t.box.hidden=!1,t.retry.hidden=!1,t.status.textContent=`Activity preview is no longer retained in memory. Load it again to inspect.`)}function ii(e,t){if(e.scope!==t.scope)throw Error(`activity_scope_changed`);let n=[...e.events,...t.events];if(n.length>4096)throw Error(`activity_run_limit`);let r=0,i=new TextEncoder,a=n[0]?.turnId;for(let e of n){if(e.turnId!==a)throw Error(`activity_turn_changed`);if(r+=i.encode(JSON.stringify(e)).length,r>4194304)throw Error(`activity_run_limit`)}return n}async function ai(e){let t=Y;if(!t)return;let n=Br,r=Yr(),i=setTimeout(()=>e.controller.abort(new DOMException(`Activity read deadline`,`TimeoutError`)),Ir),a=e.retry===document.activeElement;Gn(e.message)&&e.message.dataset.activitySaved!==`true`&&(e.message.dataset.activityRecovering=`true`);let o,s;try{if(await cr(async i=>{if(o=await kr({runId:e.runId,sessionId:t.sessionId,signal:i,read:Mr}),!Qr(e,t,n,r)||(s=await kr({runId:e.runId,sessionId:t.sessionId,after:o.through,signal:i,read:Mr}),!Qr(e,t,n,r)))throw new DOMException(`History context changed`,`AbortError`);return ii(o,s)},{runId:e.runId,signal:e.controller.signal}),!Qr(e,t,n,r)||!o||!s)return;e.message.dataset.activitySession=t.sessionId;let i=s,c=K(e.runId),l=[...o.events,...i.events].find(e=>e.kind===`turn-end`),u=c?.model.end?.status??(l?.kind===`turn-end`?l.status:i.status===`interrupted`?`stopped`:i.status),d=o.incomplete||i.incomplete;$r(e.message,!0);let f={kind:`unavailable`},p;if(u!==`running`){try{let n=await Ar({runId:e.runId,sessionId:t.sessionId,signal:e.controller.signal,read:(e,t)=>Mr(e,t,Cr)});f=n?{kind:`saved`,message:n}:{kind:`absent`}}catch(e){p=e}if(!Qr(e,t,n,r))return}if(p instanceof jr&&p.status===409||(c=lr(e.message,e.runId)??c),u!==`running`&&er(e.runId,u),dr(e.runId,d),u!==`running`&&(Lr?.terminal({runId:e.runId,sessionId:t.sessionId,scope:i.scope,...c?{turnId:c.model.identity.turnId}:{},status:u,message:e.message,cacheScope:e.cacheScope,answer:f}),c=K(e.runId),f.kind===`saved`&&(ar(c?.message??e.message,f.message,e.cacheScope)||(p=Error(`saved_message_identity_changed`)))),!Qr(e,t,n,r))return;e.loaded=!0;let m=!c;e.status.textContent=p instanceof jr?p.message:p?`The saved answer could not be recovered. Retry; existing text is unchanged.`:d?`Some recorded activity is unavailable. Existing saved or live answers are unchanged.`:m?`No detailed Activity is retained. The saved transcript and authorized Trace remain available.`:u!==`running`&&f.kind===`absent`?`No saved answer is linked to this run. Inspect retained Activity in Trace.`:``,e.retry.textContent=`Refresh activity`,e.retry.hidden=!d&&!m&&!p&&u!==`running`&&f.kind===`saved`,e.box.hidden=e.retry.hidden,a&&e.box.hidden&&e.message.querySelector(`.activity-summary`)?.focus({preventScroll:!0})}catch(i){if(Z.get(e.message)!==e||Br!==n||r!==Yr()||e.controller.signal.aborted&&e.controller.signal.reason?.name!==`TimeoutError`)return;if(e.status.textContent=i instanceof jr?i.message:`Activity could not be restored. The transcript is unchanged; retry to inspect it.`,e.retry.hidden=!1,e.box.hidden=!1,e.retry.textContent=`Retry activity`,i instanceof jr&&i.status===404)try{await Mr(`/api/traces/${encodeURIComponent(e.runId)}?${new URLSearchParams({session:t.sessionId})}`,e.controller.signal),Qr(e,t,n,r)&&($r(e.message,!0),e.status.textContent=`Detailed Activity was not recorded for this turn. The saved transcript is shown.`,e.retry.hidden=!0)}catch{}}finally{clearTimeout(i),Z.get(e.message)===e&&(!e.controller.signal.aborted||e.controller.signal.reason?.name===`TimeoutError`)&&(e.loaded=!0)}}function oi(){if(Gr)return;let e=Kr.entries().next().value;if(!e)return;Kr.delete(e[0]);let t=e[1];if(!t.message.isConnected||t.controller.signal.aborted||Z.get(t.message)!==t){ei(t),queueMicrotask(oi);return}Gr=t,t.status.textContent=`Loading recorded activity.`,ai(t).catch(e=>console.warn(`[activity] history read failed`,e)).finally(()=>{ei(t),Gr===t&&(Gr=null),oi()})}function si(e,t,n=!1){if(!Y||!Zr(e,t,Y.sessionId)||!e.isConnected||Vr||!n&&(!qr()||!Hr))return Promise.resolve();let r=ni(e,t);if(!r)return Promise.resolve();if(r.pending)return r.promise;let i=K(t);if(!n&&r.loaded)return Promise.resolve();if(!n&&i?.message===e&&!i.degraded&&!e.dataset.activityRecovering)return r.box.hidden=!0,$r(e,!0),Promise.resolve();if(Kr.size>=Fr)return r.status.textContent=`Activity reads are at their limit. Use Load activity to retry.`,r.box.hidden=!1,r.retry.hidden=!1,Promise.resolve();r.controller=new AbortController,r.pending=!0,r.box.hidden=!1,r.status.textContent=`Activity read queued.`,r.retry.disabled=!0,r.promise=new Promise(e=>{r.resolve=e});let a=r.promise;return Kr.set(e,r),oi(),a}function ci(e){for(let t of e.querySelectorAll(`[data-activity-key]`))ur(t);e instanceof HTMLElement&&e.dataset.activityKey&&ur(e);for(let[t,n]of Z)(e===t||e.contains(t))&&(Q(n,!0),ur(t))}function li(e){if(Y&&!Vr){ti(),fr(e),!X&&typeof IntersectionObserver<`u`&&(X=new IntersectionObserver(e=>{for(let t of e){let e=t.target,n=Z.get(e);t.isIntersecting?si(e,e.dataset.traceRunId??``):n?.pending&&!e.contains(document.activeElement)&&Q(n,!1)}},{root:Jr()}));for(let t of e.querySelectorAll(Nr)){let e=t.dataset.traceRunId;if(!Zr(t,e,Y.sessionId))continue;let n=ni(t,e);if(n){if(!qr()){n.box.hidden=!0,$r(t,!0);continue}t.closest(`details:not([open])`)||(X?X.observe(t):si(t,e))}}}}function ui(){Vr=!0,++Br;for(let e of Z.values())e.pending&&Q(e,!1)}function di(e,t){if(Vr=!1,Rr=e,zr=new Set(t),Y&&e&&Y.sessionId!==e&&Lr){let t=`${Yr()}:${e}`;Ur!==t&&(Ur=t,Lr.refreshIdentity().catch(()=>{}))}let n=Jr();n&&li(n)}function fi(e,t){if(Lr=t,Y?.sessionId!==e?.sessionId||Y?.scope!==e?.scope){++Br;for(let e of Z.values())Q(e,!0);X?.disconnect(),X=null,Wn(),Ur=``}Y=e?{...e}:null,Wr||(Wr=new MutationObserver(()=>{if(!qr())for(let e of Z.values())e.pending&&Q(e,!1);let e=Jr();e&&li(e)}),Wr.observe(document.documentElement,{attributes:!0,attributeFilter:[`data-presentation-mode`]}))}function pi(e){if(Hr=e,e){let e=Jr();e&&li(e)}else for(let e of Z.values())e.pending&&Q(e,!1)}function mi(){++Br;for(let e of Z.values())Q(e,!0);X?.disconnect(),X=null,Wr?.disconnect(),Wr=null,Y=null,Rr=null,zr.clear(),Lr=null}var hi={postRender(e){fr(e),li(e)},recycle(e){ci(e),ur(e)}};function gi(e){e.addLifecycleHooks(hi)}function _i(e){return e.map((e,t)=>Xt(Ut(e),t))}var vi=3e3;function yi(){return p(`?limit=${vi}`)}function bi(e){return String(e||``).trim()||`unknown`}function xi(e){let t=bi(e.origin),n=bi(e.pathname||`/`);return`${t}${n.startsWith(`/`)?n:`/${n}`}`}function Si(e){return`${bi(e.locationKey)}::${bi(e.workingDir)}`}function Ci(){return xi(typeof window>`u`?{}:{origin:window.location.origin,pathname:window.location.pathname})}function wi(e){if(!e||e==="default")return null;let t=e.indexOf(`::`);return t>=0?e.slice(t+2):e}function Ti(e){e.onLazyRender??=e=>{for(let t of e){if(!t.classList.contains(`lazy-pending`))continue;let e=t.getAttribute(`data-raw`)||``,n=t.closest(`.msg-agent`),r=n?.querySelector(`.agent-body`),i=r?.dataset.toolLog||``;if(n&&r&&i&&!it(n)){let e=Vt(i);e.length>0&&t.insertAdjacentHTML(`beforebegin`,M(Wt(e),!0)),delete r.dataset.toolLog,rt(n)}t.innerHTML=e?ee(e):``,t.classList.remove(`lazy-pending`),ae(t),d(t),v(t),g(t),u(t),m(t),_(t),o(t,{immediate:!0})}},e.onPostRender??=e=>{ae(e),d(e),v(e),g(e),u(e),m(e),_(e),y(e),o(e,{immediate:!0})},gi(e)}function Ei(e,t={}){return{registerCallbacks:()=>Ti(e),setItems:(t,n)=>e.setItems(t,n),activateIfNeeded:t=>e.activateIfNeeded(t),scrollToBottom:()=>e.scrollToBottom(),scrollToIndex:t=>e.scrollToIndex(t),shouldFollowBottom:t.forceInitialBottom?()=>!0:re,restoreIndex:t.restoreIndex??null,onBeforeVirtualHistoryBootstrap:()=>{ie()},onAfterVirtualHistoryBottomed:()=>{N(),P()}}}function Di(e){e.forEach(e=>{let t=bt(e.role===`assistant`?`agent`:e.role,e.content,e.cli);if(e.id!==void 0&&(t.dataset.messageId=String(e.id)),e.trace_run_id&&(t.dataset.traceRunId=e.trace_run_id),e.session_id!==void 0&&(t.dataset.messageSessionId=e.session_id),e.server_message_id!==void 0&&(t.dataset.serverMessageId=String(e.server_message_id),t.dataset.activitySaved=`true`),e.role===`assistant`&&e.tool_log){let n=Vt(e.tool_log);if(n.length>0){let e=t.querySelector(`.agent-body`);if(e){let t=k(e);for(let e of Wt(n))oe(t,e);se(t)}}}})}function Oi(e){let t=e.message_id??e.id;return{...t===void 0?{}:{id:t},role:e.role,content:e.content,cli:e.cli??null,tool_log:e.tool_log??null,trace_run_id:e.trace_run_id??null,...e.session_id===void 0?{}:{session_id:e.session_id},...typeof e.message_id==`number`&&Number.isSafeInteger(e.message_id)&&e.message_id>0?{server_message_id:e.message_id}:{}}}var ki=``;function Ai(e,t){let n=t.length>0?t[t.length-1]:null;return`${e}|${t.length}|${n?JSON.stringify(n):``}`}var ji=null,Mi=``,Ni=0,Pi=null,Fi=``,$=null,Ii=new Set;async function Li(){let e=f(),t=`${Ci()}:${e??``}`;if(Mi===t&&ji)return ji;Pi?.abort();let n=new AbortController;Pi=n,Mi=t;let r=++Ni,i=`/api/messages${yi()}&withSession=1`;ui();let a=setTimeout(()=>n.abort(new DOMException(`Message history deadline`,`TimeoutError`)),3e4),o=()=>r===Ni&&t===`${Ci()}:${f()??``}`,s=Ui({requestedSession:e,key:t,path:i,signal:n.signal,current:()=>!n.signal.aborted&&o()}).catch(e=>{if(!n.signal.aborted)throw e}).finally(()=>{clearTimeout(a),ji===s&&(ji=null,Pi=null),n.signal.aborted&&o()&&di(Fi===t?$:null,Fi===t?Ii:new Set)});return ji=s,s}function Ri(){return ji!==null}async function zi(e,t){t.throwIfAborted();let n,r=new Promise((e,r)=>{n=()=>r(t.reason),t.addEventListener(`abort`,n,{once:!0})});try{return await Promise.race([e(),r])}finally{t.removeEventListener(`abort`,n)}}function Bi(e,t){let n=t,r;if(Array.isArray(e))r=e;else if(e&&typeof e==`object`&&!Array.isArray(e)){let i=e;if(typeof i.sessionId!=`string`||!i.sessionId||i.sessionId.length>240||t!==null&&i.sessionId!==t)throw Error(`message_session_mismatch`);n=i.sessionId,r=i.messages}if(!Array.isArray(r))throw Error(`invalid_message_snapshot`);let i=r.slice(-3e3).map(e=>{if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`invalid_message_snapshot`);let t=e;if(typeof t.role!=`string`||typeof t.content!=`string`||t.id!==void 0&&!(typeof t.id==`number`&&Number.isSafeInteger(t.id)&&t.id>0)&&!(typeof t.id==`string`&&t.id.length<=240)||t.trace_run_id!=null&&!(typeof t.trace_run_id==`string`&&t.trace_run_id.length<=240)||t.session_id!==void 0&&!(typeof t.session_id==`string`&&t.session_id.length>0&&t.session_id.length<=240)||n&&t.session_id!==void 0&&t.session_id!==n||t.cli!=null&&typeof t.cli!=`string`||t.tool_log!=null&&typeof t.tool_log!=`string`)throw Error(`invalid_message_snapshot`);let r=t,i={...r,...n===null?{}:{session_id:n}};return delete i.server_message_id,typeof r.id==`number`&&(i.server_message_id=r.id),Ut(i)});return{sessionId:n,messages:i}}function Vi(e){if(!e.length)return;let t=document.createElement(`details`);t.className=`activity-legacy-cache`;let n=document.createElement(`summary`);n.textContent=`Unverified legacy cache preview`;let r=document.createElement(`p`);r.textContent=`This limited cache preview has no verified conversation identity. Connect to refresh; it cannot load Activity history.`;let i=document.createElement(`pre`);i.textContent=e.slice(-40).map(e=>e.content.slice(0,1e3)).join(`
|
|
3
3
|
|
|
4
4
|
`),t.append(n,r,i),Hi()?.append(t)}var Hi=()=>document.getElementById(`chatMessages`);async function Ui(e){let t=j(),r=document.getElementById(`chatMessages`),i=le(),a=Ci(),o=wi(i);try{let t=await zi(()=>n(`/api/settings`,{signal:e.signal}),e.signal);t?.workingDir&&(o=t.workingDir)}catch{}if(!e.current())return;let s=Si({locationKey:a,workingDir:o});de(s);let u=s!==i,d=null;try{let t=await zi(()=>n(e.path,{signal:e.signal}),e.signal);t!==null&&(d=Bi(t,e.requestedSession))}catch(t){e.current()&&console.warn(`[history] message snapshot unavailable`,t)}if(!e.current())return;if(d){let n=d.messages;l(n);let i=!!r?.querySelector(`.msg`)||t.active,a=Ai(`${s}:${d.sessionId??``}`,n);if(Fi=e.key,$=d.sessionId,Ii=new Set(n.filter(e=>e.role===`assistant`&&e.trace_run_id).map(e=>e.trace_run_id)),i&&!u&&a===ki){en(n.length),di($,Ii);return}ki=a;let o=u||!i,c=!o&&t.active?t.firstVisibleIndex():null;r&&ci(r),t.clear(),r&&(r.innerHTML=``),n.length>=1?Zt(_i(n),Ei(t,{forceInitialBottom:o,restoreIndex:o?null:c})):(Di(n),o&&P()),fe(n.map(e=>({...e.id===void 0?{}:{message_id:e.id},role:e.role,content:e.content,cli:e.cli??null,tool_log:e.tool_log??null,timestamp:Date.now(),trace_run_id:e.trace_run_id??null,...e.session_id===void 0?{}:{session_id:e.session_id}})),s).catch(()=>{}),di($,Ii),en(n.length),_t();return}if(r&&r.children.length>0&&Fi===e.key){di($,Ii),_t();return}r&&Fi!==e.key&&(ci(r),t.clear(),r.replaceChildren());let f=await zi(()=>ce(s),e.signal);if(!e.current())return;let p=(e.requestedSession===null?f:f.filter(t=>t.session_id===e.requestedSession)).slice(-3e3);if(p.length>0){let e=p.map(Oi).map(Ut);l(e),e.length>=1?Zt(_i(e),Ei(t,{forceInitialBottom:!0})):(Di(e),P()),vt(`${S.warning} ${c(`ui.offline.banner`)}`),en(e.length)}e.requestedSession!==null&&Vi(f.filter(e=>e.session_id===void 0)),Fi=e.key,$=e.requestedSession,Ii=new Set(p.filter(e=>e.role===`assistant`&&e.trace_run_id).map(e=>e.trace_run_id)),di($,Ii),_t()}export{Me as $,Un as A,Jt as B,K as C,sr as D,Yn as E,Qt as F,ct as G,bt as H,$t as I,ft as J,it as K,Xt as L,er as M,tr as N,ir as O,tn as P,Pe as Q,Kt as R,or as S,$n as T,vt as U,Wt as V,ht as W,Qe as X,dt as Y,Ke as Z,_r as _,gi as a,qn as b,Ei as c,si as d,ri as f,di as g,pi as h,_i as i,Jn as j,rr as k,Ti as l,fi as m,xi as n,Ri as o,li as p,rt as q,Si as r,Li as s,yi as t,mi as u,gr as v,nr as w,In as x,Ln as y,qt as z};
|
|
@@ -39,4 +39,4 @@ var e=`<svg height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24" wid
|
|
|
39
39
|
</svg>
|
|
40
40
|
`,h=`<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="currentColor"><title>Discord</title><path d="M20.317 4.3698a19.7913 19.7913 0 00-4.8851-1.5152.0741.0741 0 00-.0785.0371c-.211.3753-.4447.8648-.6083 1.2495-1.8447-.2762-3.68-.2762-5.4868 0-.1636-.3933-.4058-.8742-.6177-1.2495a.077.077 0 00-.0785-.037 19.7363 19.7363 0 00-4.8852 1.515.0699.0699 0 00-.0321.0277C.5334 9.0458-.319 13.5799.0992 18.0578a.0824.0824 0 00.0312.0561c2.0528 1.5076 4.0413 2.4228 5.9929 3.0294a.0777.0777 0 00.0842-.0276c.4616-.6304.8731-1.2952 1.226-1.9942a.076.076 0 00-.0416-.1057c-.6528-.2476-1.2743-.5495-1.8722-.8923a.077.077 0 01-.0076-.1277c.1258-.0943.2517-.1923.3718-.2914a.0743.0743 0 01.0776-.0105c3.9278 1.7933 8.18 1.7933 12.0614 0a.0739.0739 0 01.0785.0095c.1202.099.246.1981.3728.2924a.077.077 0 01-.0066.1276 12.2986 12.2986 0 01-1.873.8914.0766.0766 0 00-.0407.1067c.3604.698.7719 1.3628 1.225 1.9932a.076.076 0 00.0842.0286c1.961-.6067 3.9495-1.5219 6.0023-3.0294a.077.077 0 00.0313-.0552c.5004-5.177-.8382-9.6739-3.5485-13.6604a.061.061 0 00-.0312-.0286zM8.02 15.3312c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9555-2.4189 2.157-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.9555 2.4189-2.1569 2.4189zm7.9748 0c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9554-2.4189 2.1569-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.946 2.4189-2.1568 2.4189Z"/></svg>`,g=`<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="currentColor"><title>Slack</title><path d="M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zM6.313 15.165a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zM8.834 6.313a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zM18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zM17.688 8.834a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zM15.165 18.956a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zM15.165 17.688a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z"/></svg>
|
|
41
41
|
`,_=`<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="currentColor"><title>Telegram</title><path d="M11.944 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0a12 12 0 0 0-.056 0zm4.962 7.224c.1-.002.321.023.465.14a.506.506 0 0 1 .171.325c.016.093.036.306.02.472-.18 1.898-.962 6.502-1.36 8.627-.168.9-.499 1.201-.82 1.23-.696.065-1.225-.46-1.9-.902-1.056-.693-1.653-1.124-2.678-1.8-1.185-.78-.417-1.21.258-1.91.177-.184 3.247-2.977 3.307-3.23.007-.032.014-.15-.056-.212s-.174-.041-.249-.024c-.106.024-1.793 1.14-5.061 3.345-.48.33-.913.49-1.302.48-.428-.008-1.252-.241-1.865-.44-.752-.245-1.349-.374-1.297-.789.027-.216.325-.437.893-.663 3.498-1.524 5.83-2.529 6.998-3.014 3.332-1.386 4.025-1.627 4.476-1.635z"/></svg>`,v=`<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="4 17 10 11 4 5"/><line x1="12" y1="19" x2="20" y2="19"/></svg>
|
|
42
|
-
`,y=t.replace(`fill="currentColor"`,`fill="#10A37F"`),b={
|
|
42
|
+
`,y=t.replace(`fill="currentColor"`,`fill="#10A37F"`),b={claude:{color:e,mono:c,label:`Claude`},openai:{color:y,mono:t,label:`OpenAI`},gemini:{color:n,mono:l,label:`Gemini`},antigravity:{color:r,mono:u,label:`Antigravity`},grok:{color:i,mono:d,label:`Grok`},copilot:{color:a,mono:f,label:`Copilot`},cursor:{color:o,mono:p,label:`Cursor`},"kiro-code":{color:s,mono:m,label:`Kiro`},codex:{color:t,mono:t,label:`Codex`},"codex-app":{color:y,mono:t,label:`Codex App`},opencode:{color:v,mono:v,label:`OpenCode`},discord:{color:h,mono:h,label:`Discord`},telegram:{color:_,mono:_,label:`Telegram`},slack:{color:g,mono:g,label:`Slack`}},x={"claude-e":`Claude E`,"ai-e":`AI-E`,"claude-exec":`Claude E`,"jaw-claude-i":`Claude E`,"claude-i":`Claude E`,agy:`Antigravity`,cursor:`Cursor`,"kiro-code":`Kiro`};function S(e){let t=e.toLowerCase().replace(/[-_\s]/g,``);return t===`claude`||t.startsWith(`claude`)?`claude`:t===`gemini`||t.startsWith(`gemini`)?`gemini`:t===`antigravity`||t===`agy`||t===`googleantigravity`?`antigravity`:t===`grok`||t.startsWith(`grok`)?`grok`:t.startsWith(`copilot`)||t===`githubcopilot`?`copilot`:t===`cursor`||t.startsWith(`cursor`)?`cursor`:t===`kirocode`||t===`kiro`?`kiro-code`:t===`codexapp`||t===`codexappserver`?`codex-app`:t===`codex`?`codex`:t===`opencode`?`opencode`:t===`openai`||t.startsWith(`gpt`)||t.startsWith(`o1`)||t.startsWith(`o3`)||t.startsWith(`o4`)?`openai`:t===`discord`?`discord`:t===`telegram`?`telegram`:t===`slack`?`slack`:null}function C(e,t=`color`){let n=S(e);if(!n)return``;let r=b[n];return t===`mono`?r.mono:r.color}function w(e=document.body){let t=e.querySelectorAll(`[data-provider]`);for(let e of t){let t=C(e.dataset.provider||``);t&&(e.innerHTML=t,e.classList.add(`cli-provider-icon`))}}function T(e){let t=x[e.toLowerCase()];if(t)return t;let n=S(e);return n?b[n].label:e}export{C as n,T as r,w as t};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-render-DSSkXCir.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{A as e,L as t,R as n,_ as r,a as i,b as a,c as o,d as s,f as c,g as l,h as u,i as d,l as f,m as p,o as ee,p as te,s as ne,u as re,v as ie,x as m,y as ae}from"./vendor-render-Cmfl_oW8.js";import{a as oe,i as se,n as ce,t as h}from"./api-CUtiCd2-.js";import{t as g}from"./preload-helper-CfbQpVni.js";import{a as le,i as ue,n as de,o as fe,r as pe,t as me}from"./mermaid-preprocess-D8xe5R2A.js";import{t as _}from"./icons-CVkqyECl.js";import{t as he}from"./copy-text-DjgetgoZ.js";var ge=[`en`,`ko`,`zh`,`ja`],v=`ko`,_e={},ve={};async function ye(){let e=null;try{e=localStorage.getItem(`claw_locale`)}catch{}if(!e){let t=(navigator.language||`ko`).split(/[-_]/)[0].toLowerCase();e=ge.includes(t)?t:`ko`}ve=await be(`ko`),_e=e===`ko`?ve:await be(e),v=e,document.documentElement.lang=v,xe()}async function be(e){try{let{api:t}=await g(async()=>{let{api:e}=await import(`./api-CLHen33W.js`);return{api:e}},[]);return await t(`/api/i18n/${e}`)||{}}catch{return{}}}function y(e,t={}){let n=_e[e]??ve[e]??e;for(let[e,r]of Object.entries(t))n=n.replaceAll(`{${e}}`,String(r));return n}function xe(){document.querySelectorAll(`[data-i18n]`).forEach(e=>{let t=e.getAttribute(`data-i18n`);t&&(e.textContent=y(t))}),document.querySelectorAll(`[data-i18n-placeholder]`).forEach(e=>{let t=e.getAttribute(`data-i18n-placeholder`);t&&(e.placeholder=y(t))}),document.querySelectorAll(`[data-i18n-title]`).forEach(e=>{let t=e.getAttribute(`data-i18n-title`);t&&(e.title=y(t))}),document.querySelectorAll(`[data-i18n-aria]`).forEach(e=>{let t=e.getAttribute(`data-i18n-aria`);t&&e.setAttribute(`aria-label`,y(t))})}async function Se(e){if(e!==v){ge.includes(e)||(e=`ko`),_e=e===`ko`?ve:await be(e),v=e,document.documentElement.lang=v;try{localStorage.setItem(`claw_locale`,e)}catch{}xe();try{let{loadEmployees:e}=await g(async()=>{let{loadEmployees:e}=await import(`./employees-
|
|
2
|
+
import{A as e,L as t,R as n,_ as r,a as i,b as a,c as o,d as s,f as c,g as l,h as u,i as d,l as f,m as p,o as ee,p as te,s as ne,u as re,v as ie,x as m,y as ae}from"./vendor-render-Cmfl_oW8.js";import{a as oe,i as se,n as ce,t as h}from"./api-CUtiCd2-.js";import{t as g}from"./preload-helper-CfbQpVni.js";import{a as le,i as ue,n as de,o as fe,r as pe,t as me}from"./mermaid-preprocess-D8xe5R2A.js";import{t as _}from"./icons-CVkqyECl.js";import{t as he}from"./copy-text-DjgetgoZ.js";var ge=[`en`,`ko`,`zh`,`ja`],v=`ko`,_e={},ve={};async function ye(){let e=null;try{e=localStorage.getItem(`claw_locale`)}catch{}if(!e){let t=(navigator.language||`ko`).split(/[-_]/)[0].toLowerCase();e=ge.includes(t)?t:`ko`}ve=await be(`ko`),_e=e===`ko`?ve:await be(e),v=e,document.documentElement.lang=v,xe()}async function be(e){try{let{api:t}=await g(async()=>{let{api:e}=await import(`./api-CLHen33W.js`);return{api:e}},[]);return await t(`/api/i18n/${e}`)||{}}catch{return{}}}function y(e,t={}){let n=_e[e]??ve[e]??e;for(let[e,r]of Object.entries(t))n=n.replaceAll(`{${e}}`,String(r));return n}function xe(){document.querySelectorAll(`[data-i18n]`).forEach(e=>{let t=e.getAttribute(`data-i18n`);t&&(e.textContent=y(t))}),document.querySelectorAll(`[data-i18n-placeholder]`).forEach(e=>{let t=e.getAttribute(`data-i18n-placeholder`);t&&(e.placeholder=y(t))}),document.querySelectorAll(`[data-i18n-title]`).forEach(e=>{let t=e.getAttribute(`data-i18n-title`);t&&(e.title=y(t))}),document.querySelectorAll(`[data-i18n-aria]`).forEach(e=>{let t=e.getAttribute(`data-i18n-aria`);t&&e.setAttribute(`aria-label`,y(t))})}async function Se(e){if(e!==v){ge.includes(e)||(e=`ko`),_e=e===`ko`?ve:await be(e),v=e,document.documentElement.lang=v;try{localStorage.setItem(`claw_locale`,e)}catch{}xe();try{let{loadEmployees:e}=await g(async()=>{let{loadEmployees:e}=await import(`./employees-DGoVBWQd.js`);return{loadEmployees:e}},__vite__mapDeps([0]));e()}catch{}try{let{loadSkills:e}=await g(async()=>{let{loadSkills:e}=await import(`./skills-NzM-geDj.js`);return{loadSkills:e}},[]);e()}catch{}try{let{loadCommands:e}=await g(async()=>{let{loadCommands:e}=await import(`./slash-commands-DUk5bLQ1.js`);return{loadCommands:e}},[]);e()}catch{}try{let{loadSettings:e}=await g(async()=>{let{loadSettings:e}=await import(`./settings-BW8q_Rnq.js`);return{loadSettings:e}},[]);e()}catch{}}}function Ce(){return v}function we(e,t={}){let n=new URL(e,location.origin);return n.searchParams.has(`locale`)||n.searchParams.set(`locale`,v),fetch(n.toString(),t)}function Te(e){let t=[],n=e.replace(/```[\s\S]*?```/g,e=>(t.push(e),`\x00P${t.length-1}\x00`)).replace(/`[^`]+`/g,e=>(t.push(e),`\x00P${t.length-1}\x00`));return n=n.replace(/([\p{P}])\*\*(?=[^\s\p{P}])/gu,(e,t)=>t===`*`?e:t+`**`),n=n.replace(/\x00P(\d+)\x00/g,(e,n)=>t[Number(n)]),n}var Ee=0;function De(e){let t=new Map;return{text:e.replace(/^ {0,3}(`{3,}|~{3,})[^\n]*\n[\s\S]*?\n {0,3}\1[ \t]*$/gm,e=>{let n=`\x00FENCE-${Ee++}\x00`;return t.set(n,e),n}),fences:t}}function Oe(e,t){for(let[n,r]of t)e=e.replace(n,()=>r);return e}function ke(e,t=!1){let n=[],r=``,i=0;for(;i<e.length;){let a=e.indexOf(`<svg`,i);if(a===-1){r+=e.slice(i);break}let o=e[a+4];if(o&&!/[\s\/>]/.test(o)){r+=e.slice(i,a+4),i=a+4;continue}r+=e.slice(i,a);let s=0,c=a,l=!1;for(;c<e.length;){let t=e.indexOf(`<svg`,c+1),o=e.indexOf(`</svg>`,c+(c===a?0:1));if(o===-1)break;if(t!==-1&&t<o){let n=e[t+4];n&&/[\s\/>]/.test(n)&&s++,c=t+4}else if(s===0){let t=o+6,s=e.slice(a,t),c=Ee++,u=`\n\n<div data-jaw-svg="${c}"></div>\n\n`;n.push({id:c,index:a,length:s.length,svg:s,kind:`complete`,placeholder:u}),r+=u,i=t,l=!0;break}else s--,c=o+6}if(!l){let o=Ee++;if(t){let t=e.slice(a),s=`\n\n<div data-jaw-svg="${o}" data-jaw-kind="partial"></div>\n\n`;n.push({id:o,index:a,length:t.length,svg:``,kind:`partial`,placeholder:s}),r+=s,i=e.length}else{let t=`\n\n<div data-jaw-svg="${o}" data-jaw-kind="error"></div>\n\n`,s=e.slice(a),c=s.search(/\n\s*\n/),l=c===-1?s.length:c;n.push({id:o,index:a,length:l,svg:``,kind:`error`,placeholder:t}),r+=t,i=a+l}}}return{text:r,blocks:n}}function b(e){return e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`)}var Ae=/["'](?:subtasks|employee_config|agent_phases|orchestration_plan)["']\s*:/,je=/(^|\n)(?:## Approved Plan \((?:authoritative|auto-injected by orchestrator)[^\n]*\)|\[PABCD — [A-Z]:[^\n]*\]|\[PLANNING MODE[^\n]*\]|\[PLAN AUDIT[^\n]*\]|The approved plan is already injected above)/m;function Me(e){let t=je.exec(e);return!t||t.index<0?e:e.slice(0,t.index).trim()}function Ne(e){let t=e.replace(/```json\n([\s\S]*?)\n```/g,(e,t)=>Ae.test(t)?``:e);return t=t.replace(/\{[^{}]*"subtasks"\s*:\s*\[[\s\S]*?\]\s*\}/g,``).trim(),Me(t)}function Pe(e){let t=[],n=[],r=e.replace(/```[\s\S]*?```/g,e=>(n.push(e),`\x00C${n.length-1}\x00`)).replace(/`[^`]+`/g,e=>(n.push(e),`\x00C${n.length-1}\x00`));return r=r.replace(/\$\$([\s\S]+?)\$\$/g,(e,n)=>(t.push({tex:n.trim(),displayMode:!0}),`\x00MATH-${t.length-1}\x00`)),r=r.replace(/\\\[([\s\S]+?)\\\]/g,(e,n)=>(t.push({tex:n.trim(),displayMode:!0}),`\x00MATH-${t.length-1}\x00`)),r=r.replace(/(?<!\$)\$(?!\$)([^\n$]+?)\$(?!\$)/g,(e,n)=>(t.push({tex:n.trim(),displayMode:!1}),`\x00MATH-${t.length-1}\x00`)),r=r.replace(/\\\((.+?)\\\)/g,(e,n)=>(t.push({tex:n.trim(),displayMode:!1}),`\x00MATH-${t.length-1}\x00`)),r=r.replace(/\x00C(\d+)\x00/g,(e,t)=>n[Number(t)]),{text:r,blocks:t}}function Fe(t,n,r=!1){return t.replace(/\x00MATH-(\d+)\x00/g,(t,i)=>{let a=n[Number(i)];if(!a)return`<code title="math placeholder error">[math error]</code>`;if(r)return a.displayMode?`<div class="math-placeholder">${b(a.tex)}</div>`:`<code class="math-placeholder">${b(a.tex)}</code>`;try{return e.renderToString(a.tex,{displayMode:a.displayMode,throwOnError:!1})}catch{return a.displayMode?`<pre><code>${b(a.tex)}</code></pre>`:`<code>${b(a.tex)}</code>`}})}function Ie(e){if(/\bwidth\s*=/i.test(e.slice(0,e.indexOf(`>`))))return e;let t=e.match(/viewBox=["']?\s*([\d.]+)\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)/);if(!t)return e;let n=Math.round(parseFloat(t[3])),r=Math.round(parseFloat(t[4]));return!n||!r?e:e.replace(/^<svg/,`<svg width="${n}" height="${r}"`)}function Le(e){e.querySelector(`.mermaid-zoom-btn`)?.remove(),e.querySelector(`.mermaid-copy-btn`)?.remove(),e.querySelector(`.mermaid-save-btn`)?.remove();let t=document.createElement(`button`);t.className=`mermaid-zoom-btn`,t.type=`button`,t.ariaLabel=`Expand diagram`,t.title=`Expand`,t.textContent=`⤢`,e.appendChild(t);let n=document.createElement(`button`);n.className=`mermaid-save-btn`,n.type=`button`,n.ariaLabel=`Save as image`,n.title=`Save`,n.innerHTML=_.download,e.appendChild(n);let r=document.createElement(`button`);r.className=`mermaid-copy-btn`,r.type=`button`,r.ariaLabel=`Copy source`,r.title=`Copy`,r.innerHTML=_.copy,e.appendChild(r)}var Re=!1;function ze(){Re||(Re=!0,document.addEventListener(`click`,e=>{let t=e.target,n=t?.closest(`.diagram-copy-btn`);if(n){let e=n.closest(`.diagram-container`);if(!e)return;let t=``;if(e.dataset.widgetHtml)try{t=decodeURIComponent(escape(atob(e.dataset.widgetHtml)))}catch{return}else{let n=e.querySelector(`svg`);n&&(t=n.outerHTML)}t&&x(n,t,`copy`);return}let r=t?.closest(`.mermaid-copy-btn`);if(r){let e=r.closest(`.mermaid-container`);if(!e)return;let t=e.dataset.mermaidCode||``;t&&x(r,t,`copy`);return}let i=t?.closest(`.diagram-save-btn`);if(i){let e=i.closest(`.diagram-container`);if(!e)return;if(e.dataset.widgetHtml){let t=e.querySelector(`iframe`);t?.contentWindow&&(t.contentWindow.postMessage({type:`jaw-request-screenshot`},`*`),x(i,``,`save`));return}let t=e.querySelector(`svg`);t&&Ve(t,i);return}let a=t?.closest(`.mermaid-save-btn`);if(a){let e=a.closest(`.mermaid-container`);if(!e)return;let t=e.querySelector(`svg`);t&&Ve(t,a);return}}))}function x(e,t,n){let r=()=>{let t=e.innerHTML;e.innerHTML=_.checkSimple,e.classList.add(`copied`),setTimeout(()=>{e.innerHTML=t,e.classList.remove(`copied`)},1500)};n===`copy`?he(t).then(e=>{e.ok&&r()}):r()}function Be(e,t){let n=e.children,r=t.children,i=[`fill`,`stroke`,`stroke-width`,`color`,`opacity`,`rx`,`ry`,`font-size`,`font-weight`,`font-family`,`text-anchor`,`dominant-baseline`];for(let e=0;e<n.length;e++){let t=n[e],a=r[e];if(!t||!a)continue;let o=getComputedStyle(t);for(let e of i){let t=o.getPropertyValue(e);t&&a.style.setProperty(e,t)}t.children.length&&Be(t,a)}}function Ve(e,t){let n=e.cloneNode(!0);Be(e,n);let r=e.getBoundingClientRect();n.getAttribute(`width`)||n.setAttribute(`width`,String(r.width)),n.getAttribute(`height`)||n.setAttribute(`height`,String(r.height));let i=new XMLSerializer().serializeToString(n),a=`data:image/svg+xml;charset=utf-8,`+encodeURIComponent(i),o=new Image;o.onload=()=>{let e=document.createElement(`canvas`);e.width=o.naturalWidth*2,e.height=o.naturalHeight*2;let n=e.getContext(`2d`);n.scale(2,2),n.drawImage(o,0,0),e.toBlob(e=>{e&&(He(e,`diagram-${Date.now()}.png`),x(t,``,`save`))},`image/png`)},o.onerror=()=>{He(new Blob([i],{type:`image/svg+xml;charset=utf-8`}),`diagram-${Date.now()}.svg`),x(t,``,`save`)},o.src=a}function He(e,t){let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=t,r.click(),setTimeout(()=>URL.revokeObjectURL(n),1e3)}function Ue(e){if(e.kind===`partial`)return`<div class="diagram-container diagram-loading" role="status"
|
|
3
3
|
aria-label="Diagram loading"><div class="diagram-spinner"></div></div>`;if(e.kind===`error`)return`<div class="diagram-container diagram-error" role="alert">
|
|
4
4
|
Malformed SVG: unclosed element</div>`;let t=le(e.svg);return t=Ie(t),`<div class="diagram-container diagram-svg" tabindex="0"
|
|
5
5
|
role="figure" aria-label="SVG diagram">
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as e,n as t}from"./settings-core-DiStY7KC.js";import"./settings-DjCtFSpd.js";export{t as loadSettings,e as updateSettings};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{t as e}from"./state-Dl-xxPoS.js";import{i as t,n}from"./api-CUtiCd2-.js";import{O as r,P as i,x as a}from"./render-
|
|
1
|
+
import{t as e}from"./state-Dl-xxPoS.js";import{i as t,n}from"./api-CUtiCd2-.js";import{O as r,P as i,x as a}from"./render-OT0puqo3.js";import{t as o}from"./icons-CVkqyECl.js";import{t as s}from"./copy-text-DjgetgoZ.js";import{r as c}from"./locale-B9w_kUtW.js";import"./settings-core-DiStY7KC.js";import"./constants-DmRtjRj3.js";import{i as l,r as u,t as d}from"./settings-types-D3cd6SWy.js";import{n as f,r as p}from"./provider-icons-Bge6teOj.js";import{a as ee,c as m,d as h,f as g,h as _,i as v,l as te,m as ne,n as y,o as b,p as x,r as re,s as S,t as ie,u as ae}from"./channel-onboarding-flow-D73Cze0v.js";function C(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.configured==`boolean`&&typeof t.activeInbound==`boolean`&&typeof t.sendCapable==`boolean`}function oe(e){return e===`telegram`||e===`discord`||e===`slack`}function se(e){if(!e||typeof e!=`object`)return null;let t=e.channels;if(!t||typeof t!=`object`)return null;let n=t,r=n.activeInboundChannels,i;if(r!==void 0)i=Array.isArray(r)&&r.every(oe)?[...new Set(r)]:null;else{let e=n.activeInbound;i=oe(e)?[e]:null}if(!i)return null;let a=n.activeInbound;if(!oe(a)||!C(n.telegram)||!C(n.discord))return null;let o=C(n.slack)?n.slack:{configured:!1,activeInbound:!1,sendCapable:!1,reason:`unavailable`};return{activeInbound:a,activeInboundChannels:i,telegram:n.telegram,discord:n.discord,slack:o}}function ce(e){let t=[];return t.push(e.configured?i(`settings.channel.configured`):i(`settings.channel.notConfigured`)),e.sendCapable&&t.push(i(`settings.channel.sendCapable`)),e.activeInbound&&t.push(i(`settings.channel.activeInbound`)),t}function le(e,t,n){let a=ce(t).map(e=>`<span class="transport-status-chip">${r(e)}</span>`).join(``),o=t.reason===`not_attach_instance`?`<p class="transport-status-hint">${r(i(`settings.channel.notAttachInstanceHint`))}</p>`:n&&t.configured&&t.sendCapable&&!t.activeInbound?`<p class="transport-status-hint">${r(i(`settings.channel.sendOnlyHint`))}</p>`:``;return`
|
|
2
2
|
<div class="transport-status-block">
|
|
3
3
|
<div class="transport-status-label">${r(e)}</div>
|
|
4
4
|
<div class="transport-status-chips">${a}</div>
|
|
@@ -150,7 +150,7 @@ URL: https://mcp.example.com/sse</pre>
|
|
|
150
150
|
${t?`<button type="button" class="btn-clear text-xs" style="color:var(--accent)" data-builtin-install="${r(e.id)}">+ Install standalone</button>`:``}
|
|
151
151
|
</div>
|
|
152
152
|
<p style="margin:2px 0;font-size:11px;opacity:.65">${r(e.description)}</p>
|
|
153
|
-
</div>`}).join(``),i+=`</div>`),R.innerHTML=i,R.querySelectorAll(`[data-registry-install]`).forEach(t=>{t.addEventListener(`click`,()=>{let n=t.dataset.registryInstall,r=e.entries.find(e=>e.id===n);r&&Ye(r,t)})}),R.querySelectorAll(`[data-builtin-install]`).forEach(t=>{t.addEventListener(`click`,()=>{let n=t.dataset.builtinInstall,r=e.builtins?.find(e=>e.id===n);r?.standalone_config&&Ye({id:r.id,name:r.name,description:r.description,category:`harness`,type:`remote`,config:r.standalone_config,tags:[],url:r.source},t)})})}catch(e){R.innerHTML=`<p style="color:var(--color-error)">${r(e.message)}</p>`}}}async function Ye(e,n){if(j){n.disabled=!0,n.textContent=`Installing...`;try{let r=e.config,i={...j,servers:{...j.servers,[e.id]:r}};await t(`/api/mcp`,`PUT`,i),await t(`/api/mcp/sync`,`POST`,{}),await M(),n.textContent=`Installed`,n.style.color=`var(--success)`}catch(e){n.textContent=`Error`,n.disabled=!1,console.error(`[mcp-registry] install failed:`,e.message)}}}function Xe(){Le(),N?.classList.add(`open`),N?.setAttribute(`aria-hidden`,`false`),B=!0,V(`active`)}function W(){B&&(N?.classList.remove(`open`),N?.setAttribute(`aria-hidden`,`true`),B=!1,Ue(),document.getElementById(`mcpHelpOverlay`)?.remove())}var Ze=!1;function Qe(){Ze||(Ze=!0,document.addEventListener(`keydown`,e=>{if(document.getElementById(`mcpHelpOverlay`)&&e.key===`Escape`){e.preventDefault(),document.getElementById(`mcpHelpOverlay`)?.remove();return}B&&e.key===`Escape`&&(e.preventDefault(),e.stopImmediatePropagation(),W())},!0))}var $e=new Set([`
|
|
153
|
+
</div>`}).join(``),i+=`</div>`),R.innerHTML=i,R.querySelectorAll(`[data-registry-install]`).forEach(t=>{t.addEventListener(`click`,()=>{let n=t.dataset.registryInstall,r=e.entries.find(e=>e.id===n);r&&Ye(r,t)})}),R.querySelectorAll(`[data-builtin-install]`).forEach(t=>{t.addEventListener(`click`,()=>{let n=t.dataset.builtinInstall,r=e.builtins?.find(e=>e.id===n);r?.standalone_config&&Ye({id:r.id,name:r.name,description:r.description,category:`harness`,type:`remote`,config:r.standalone_config,tags:[],url:r.source},t)})})}catch(e){R.innerHTML=`<p style="color:var(--color-error)">${r(e.message)}</p>`}}}async function Ye(e,n){if(j){n.disabled=!0,n.textContent=`Installing...`;try{let r=e.config,i={...j,servers:{...j.servers,[e.id]:r}};await t(`/api/mcp`,`PUT`,i),await t(`/api/mcp/sync`,`POST`,{}),await M(),n.textContent=`Installed`,n.style.color=`var(--success)`}catch(e){n.textContent=`Error`,n.disabled=!1,console.error(`[mcp-registry] install failed:`,e.message)}}}function Xe(){Le(),N?.classList.add(`open`),N?.setAttribute(`aria-hidden`,`false`),B=!0,V(`active`)}function W(){B&&(N?.classList.remove(`open`),N?.setAttribute(`aria-hidden`,`true`),B=!1,Ue(),document.getElementById(`mcpHelpOverlay`)?.remove())}var Ze=!1;function Qe(){Ze||(Ze=!0,document.addEventListener(`keydown`,e=>{if(document.getElementById(`mcpHelpOverlay`)&&e.key===`Escape`){e.preventDefault(),document.getElementById(`mcpHelpOverlay`)?.remove();return}B&&e.key===`Escape`&&(e.preventDefault(),e.stopImmediatePropagation(),W())},!0))}var $e=new Set([`codex-app`]),et=new Set([`pi`,`gemini`]),tt={},nt={cursor:{title:`Native quota access`,description:`Log in with cursor-agent to read quota from its selected account. An explicitly configured dashboard session is also supported.`,commands:[`cursor-agent login`,`export CURSOR_SESSION_TOKEN="<WorkosCursorSessionToken from cursor.com DevTools>"`,`echo "$CURSOR_SESSION_TOKEN" > ~/.cli-jaw/quota/cursor-session-token && chmod 600 ~/.cli-jaw/quota/cursor-session-token`]},agy:{title:`Enable Gem / Cla quota bars`,description:`Read Gem/Cla quota from the running Antigravity IDE or the selected antigravity-usage account. Use its login command if the stored account needs reauthentication.`,commands:[`npx antigravity-usage login`,`npx antigravity-usage --json`]},grok:{title:`Grok login`,description:`Log in with Grok to read weekly usage. Legacy billing credentials remain supported.`,commands:[`grok login`]},opencode:{title:`OpenCode Go quota (API key)`,description:`cli-jaw reads your sk- API key from ~/.local/share/opencode/auth.json (opencode-go) or OPENCODE_GO_API_KEY, then calls GET /zen/go/v1/usage. Rolling, weekly and monthly usage appear when available. Model access and quota availability are checked separately.`,commands:[`opencode providers login`,`export OPENCODE_GO_API_KEY=sk-...`,`curl -s -H "Authorization: Bearer $OPENCODE_GO_API_KEY" https://opencode.ai/zen/go/v1/usage`],note:`Not the opencode-quota plugin (cookie scrape). Built-in opencode stats = session tokens only.`,links:[{label:`OpenCode Go docs`,url:`https://opencode.ai/docs/go/`},{label:`Upstream usage API issue #16017`,url:`https://github.com/anomalyco/opencode/issues/16017`},{label:`Upstream usage API PR #16513`,url:`https://github.com/anomalyco/opencode/pull/16513`},{label:`slkiser/opencode-quota (cookie workaround)`,url:`https://github.com/slkiser/opencode-quota`},{label:`robinebers/openusage (local cost estimate)`,url:`https://github.com/robinebers/openusage`},{label:`Rodowen/oc-go-monitor (cookie + /usage)`,url:`https://github.com/Rodowen/oc-go-monitor`}]}};function rt(e,t){return e===`gemini`?t===`Pro`||t===`P`?`P`:t===`Flash`||t===`F`?`F`:t:e===`copilot`&&(t===`Premium`||t===`Prem`||t.includes(`plus monthly subscriber quota`))?`30d`:t.replace(`-hour`,`h`).replace(`-day`,`d`).replace(` Sonnet`,``).replace(` Opus`,``)}function it(e,t){if(t.delegatedProvider)return`Delegates quota/status to ${t.delegatedProvider}`;let n=t.quotaSource?.match(/^not-exposed-by-(.*?)-cli$/);return n?`Quota not exposed by ${n[1].toUpperCase()} CLI`:t.quotaSource?t.quotaSource:e===`opencode`?`Auth/status only`:`Usage data not exposed by this CLI`}function at(e){return e.toLowerCase().replace(/^cursor\s+/i,``).trim()}var ot=new Set([`auth/status only`,`google cloud code`,`runtime-checked`]),st=new Set([`cursor`,`antigravity.google`,`antigravity`,`max`,`copilot`,`gemini`]);function ct(e,t){let n=t.account;if(!n)return[];let r=[];n.email&&r.push(n.email);let i=new Set(r.map(at));for(let e of[n.plan,n.tier]){if(!e)continue;let t=at(e);if(t&&!ot.has(t)&&!st.has(t)&&!i.has(t)){i.add(t),r.push(e);break}}return r}function lt(e,t,n=[]){let i=nt[e],a=[...n,...i?i.commands:[],...i?.note?[i.note]:[]].filter(Boolean);return a.length?`<button type="button" class="help-trigger" style="margin-left:4px" data-cli-help="${r(a.join(`
|
|
154
154
|
`))}"${i?.description?` data-cli-help-desc="${r(i.description)}"`:``}${i?.links?.length?` data-cli-help-links="${r(JSON.stringify(i.links))}"`:``} aria-label="Setup help">?</button>`:``}function ut(e,t){let n=nt[e],i=t.sessionUsage,a=[];i?.primaryModelId&&a.push(`Model: ${i.primaryModelId}`),i?.contextTokensUsed&&i?.contextWindowTokens?a.push(`Session context: ${Math.round(i.contextTokensUsed).toLocaleString()} / ${Math.round(i.contextWindowTokens).toLocaleString()} tokens`):i?.turnCount&&a.push(`Session turns: ${Math.round(i.turnCount).toLocaleString()}`);let o=lt(e,t,a);if(n){let e=n.commands.map(e=>`
|
|
155
155
|
<div style="margin-top:3px"><code style="font-size:10px;background:var(--border);padding:1px 4px;border-radius:2px;word-break:break-all">${r(e)}</code></div>
|
|
156
156
|
`).join(``),t=n.description?`<div style="margin-top:3px;color:var(--text-dim);font-size:10px">${r(n.description)}</div>`:``,i=n.links?.length?`<ul style="margin:6px 0 0;padding-left:16px;font-size:10px">${n.links.map(e=>`<li><a href="${r(e.url)}" target="_blank" rel="noopener noreferrer">${r(e.label)}</a></li>`).join(``)}</ul>`:``;return`
|
|
@@ -166,7 +166,7 @@ URL: https://mcp.example.com/sse</pre>
|
|
|
166
166
|
<div style="color:var(--text);font-weight:600">${r(t.displayTier||p(e))}${o}</div>
|
|
167
167
|
<div style="margin-top:2px">${r(it(e,t))}</div>
|
|
168
168
|
</div>
|
|
169
|
-
`}var dt=new Set([0,600,1800]),G=0,ft=2e3,pt=4e3,K=null,mt=!1,q=0,J=null,Y=null,ht=`cliStatusCollapsed`;function X(){try{return window.parent!==window}catch{return!0}}function gt(){try{return localStorage.getItem(ht)===`true`}catch{return!1}}function _t(e){try{localStorage.setItem(ht,e?`true`:`false`)}catch{}}function vt(e){return`${String(e.getHours()).padStart(2,`0`)}:${String(e.getMinutes()).padStart(2,`0`)}:${String(e.getSeconds()).padStart(2,`0`)}`}function yt(){Y!=null&&(window.clearTimeout(Y),Y=null)}function bt(e,t=``){yt();let n=document.getElementById(`cliStatusRefreshBtn`),r=document.getElementById(`cliStatusRefreshState`),i=n?.querySelector(`.cli-refresh-label`);n&&(n.classList.remove(`is-refreshing`,`is-success`,`is-error`),n.disabled=e===`refreshing`,e===`idle`?n.removeAttribute(`aria-busy`):n.setAttribute(`aria-busy`,e===`refreshing`?`true`:`false`),e===`refreshing`&&n.classList.add(`is-refreshing`),e===`success`&&n.classList.add(`is-success`),e===`error`&&n.classList.add(`is-error`)),i&&(i.textContent=e===`refreshing`?`Refreshing...`:`Refresh`),r&&(r.textContent=t,r.dataset.state=e)}function xt(e,t){bt(e,t),Y=window.setTimeout(()=>{bt(`idle`)},pt)}var Z=!gt();function St(){return Z}function Ct(){Z=!0;let e=document.getElementById(`cliStatusList`),t=document.getElementById(`cliStatusHeader`);e&&(e.style.display=`block`),t&&t.classList.add(`expanded`),_t(!1),Q(!0)}function wt(){let e=document.getElementById(`cliStatusHeader`),t=document.getElementById(`cliStatusList`);e&&t&&(Z?(t.style.display=`block`,e.classList.add(`expanded`)):t.style.display=`none`,e.addEventListener(`click`,()=>{Z=!Z,t.style.display=Z?`block`:`none`,e.classList.toggle(`expanded`,Z),_t(!Z),Z&&Q(!0)}))}function Tt(){let e=Number(localStorage.getItem(`cliStatusInterval`)||G);return dt.has(e)?e:G}function Et(e=Tt()){let t=document.getElementById(`cliStatusInterval`);if(!t)return;let n=String(e);t.value=Array.from(t.options).some(e=>e.value===n)?n:String(G)}function Dt(){K!=null&&(window.clearInterval(K),K=null);let e=Tt();Et(e),!(e<=0)&&(K=window.setInterval(()=>{!document.hidden&&Z&&(X()||document.hasFocus())&&Q(!0)},e*1e3))}function Ot(){!mt&&X()&&(mt=!0,window.addEventListener(`message`,e=>{let t=e.data;t?.type===`jaw-preview-visibility`&&t.visible===!0&&Z&&Q(!1)}))}function kt(e){let t=Number(e),n=dt.has(t)?t:G;localStorage.setItem(`cliStatusInterval`,String(n)),Et(n),Dt()}function At(t,r,i){X()&&(async()=>{if(await new Promise(e=>window.setTimeout(e,600)),t!==q)return;let i=await n(`/api/quota`);t===q&&i&&(e.cliStatusCache={cliStatus:r,quota:i},e.cliStatusTs=Date.now(),Nt({cliStatus:r,quota:i}))})()}async function jt(t,r,i){let a=await n(`/api/quota`);if(t!==q)return!1;let o=a??i??null;return e.cliStatusCache={cliStatus:r,quota:o},a&&(e.cliStatusTs=Date.now()),Nt({cliStatus:r,quota:o}),a||At(t,r,i),!!a}function Mt(e,t,n,r){let i=()=>{jt(t,n,r).catch(()=>{})};if(e)return jt(t,n,r);window.setTimeout(i,ft)}async function Q(t=!1){if(Z){if(t&&bt(`refreshing`,`Refreshing quota...`),J){if(t)await J.catch(()=>{});else return}J=(async()=>{let r=++q,i=document.getElementById(`cliStatusList`);try{let a=Tt();if(!t&&e.cliStatusCache&&a>0&&Date.now()-e.cliStatusTs<a*1e3){Nt({cliStatus:e.cliStatusCache?.cliStatus,quota:e.cliStatusCache?.quota});return}let o=e.cliStatusCache?.quota;i&&!o&&(i.innerHTML=`<div style="color:var(--text-dim);font-size:11px">Loading...</div>`);let s=await n(`/api/cli-status`);if(r!==q)return;if(!s||typeof s!=`object`){i&&(i.innerHTML=`<div style="color:var(--text-dim);font-size:11px">Failed to load CLI status</div>`),t&&xt(`error`,`Refresh failed`);return}Nt({cliStatus:s,quota:o??null});let c=await Mt(t,r,s,o);t&&r===q&&xt(`success`,`${c?`Updated`:`Checked`} ${vt(new Date)}`)}catch{i&&(i.innerHTML=`<div style="color:var(--text-dim);font-size:11px">Failed to load CLI status</div>`),t&&xt(`error`,`Refresh failed`)}})().finally(()=>{J=null}),await J}}function Nt(e){let{cliStatus:t,quota:a}=e,s=document.getElementById(`cliStatusList`),c={agy:{install:`curl -fsSL https://antigravity.google/cli/install.sh | bash`,auth:`agy runtime auth, antigravity-usage login, or ~/.gemini oauth for quota`},
|
|
169
|
+
`}var dt=new Set([0,600,1800]),G=0,ft=2e3,pt=4e3,K=null,mt=!1,q=0,J=null,Y=null,ht=`cliStatusCollapsed`;function X(){try{return window.parent!==window}catch{return!0}}function gt(){try{return localStorage.getItem(ht)===`true`}catch{return!1}}function _t(e){try{localStorage.setItem(ht,e?`true`:`false`)}catch{}}function vt(e){return`${String(e.getHours()).padStart(2,`0`)}:${String(e.getMinutes()).padStart(2,`0`)}:${String(e.getSeconds()).padStart(2,`0`)}`}function yt(){Y!=null&&(window.clearTimeout(Y),Y=null)}function bt(e,t=``){yt();let n=document.getElementById(`cliStatusRefreshBtn`),r=document.getElementById(`cliStatusRefreshState`),i=n?.querySelector(`.cli-refresh-label`);n&&(n.classList.remove(`is-refreshing`,`is-success`,`is-error`),n.disabled=e===`refreshing`,e===`idle`?n.removeAttribute(`aria-busy`):n.setAttribute(`aria-busy`,e===`refreshing`?`true`:`false`),e===`refreshing`&&n.classList.add(`is-refreshing`),e===`success`&&n.classList.add(`is-success`),e===`error`&&n.classList.add(`is-error`)),i&&(i.textContent=e===`refreshing`?`Refreshing...`:`Refresh`),r&&(r.textContent=t,r.dataset.state=e)}function xt(e,t){bt(e,t),Y=window.setTimeout(()=>{bt(`idle`)},pt)}var Z=!gt();function St(){return Z}function Ct(){Z=!0;let e=document.getElementById(`cliStatusList`),t=document.getElementById(`cliStatusHeader`);e&&(e.style.display=`block`),t&&t.classList.add(`expanded`),_t(!1),Q(!0)}function wt(){let e=document.getElementById(`cliStatusHeader`),t=document.getElementById(`cliStatusList`);e&&t&&(Z?(t.style.display=`block`,e.classList.add(`expanded`)):t.style.display=`none`,e.addEventListener(`click`,()=>{Z=!Z,t.style.display=Z?`block`:`none`,e.classList.toggle(`expanded`,Z),_t(!Z),Z&&Q(!0)}))}function Tt(){let e=Number(localStorage.getItem(`cliStatusInterval`)||G);return dt.has(e)?e:G}function Et(e=Tt()){let t=document.getElementById(`cliStatusInterval`);if(!t)return;let n=String(e);t.value=Array.from(t.options).some(e=>e.value===n)?n:String(G)}function Dt(){K!=null&&(window.clearInterval(K),K=null);let e=Tt();Et(e),!(e<=0)&&(K=window.setInterval(()=>{!document.hidden&&Z&&(X()||document.hasFocus())&&Q(!0)},e*1e3))}function Ot(){!mt&&X()&&(mt=!0,window.addEventListener(`message`,e=>{let t=e.data;t?.type===`jaw-preview-visibility`&&t.visible===!0&&Z&&Q(!1)}))}function kt(e){let t=Number(e),n=dt.has(t)?t:G;localStorage.setItem(`cliStatusInterval`,String(n)),Et(n),Dt()}function At(t,r,i){X()&&(async()=>{if(await new Promise(e=>window.setTimeout(e,600)),t!==q)return;let i=await n(`/api/quota`);t===q&&i&&(e.cliStatusCache={cliStatus:r,quota:i},e.cliStatusTs=Date.now(),Nt({cliStatus:r,quota:i}))})()}async function jt(t,r,i){let a=await n(`/api/quota`);if(t!==q)return!1;let o=a??i??null;return e.cliStatusCache={cliStatus:r,quota:o},a&&(e.cliStatusTs=Date.now()),Nt({cliStatus:r,quota:o}),a||At(t,r,i),!!a}function Mt(e,t,n,r){let i=()=>{jt(t,n,r).catch(()=>{})};if(e)return jt(t,n,r);window.setTimeout(i,ft)}async function Q(t=!1){if(Z){if(t&&bt(`refreshing`,`Refreshing quota...`),J){if(t)await J.catch(()=>{});else return}J=(async()=>{let r=++q,i=document.getElementById(`cliStatusList`);try{let a=Tt();if(!t&&e.cliStatusCache&&a>0&&Date.now()-e.cliStatusTs<a*1e3){Nt({cliStatus:e.cliStatusCache?.cliStatus,quota:e.cliStatusCache?.quota});return}let o=e.cliStatusCache?.quota;i&&!o&&(i.innerHTML=`<div style="color:var(--text-dim);font-size:11px">Loading...</div>`);let s=await n(`/api/cli-status`);if(r!==q)return;if(!s||typeof s!=`object`){i&&(i.innerHTML=`<div style="color:var(--text-dim);font-size:11px">Failed to load CLI status</div>`),t&&xt(`error`,`Refresh failed`);return}Nt({cliStatus:s,quota:o??null});let c=await Mt(t,r,s,o);t&&r===q&&xt(`success`,`${c?`Updated`:`Checked`} ${vt(new Date)}`)}catch{i&&(i.innerHTML=`<div style="color:var(--text-dim);font-size:11px">Failed to load CLI status</div>`),t&&xt(`error`,`Refresh failed`)}})().finally(()=>{J=null}),await J}}function Nt(e){let{cliStatus:t,quota:a}=e,s=document.getElementById(`cliStatusList`),c={agy:{install:`curl -fsSL https://antigravity.google/cli/install.sh | bash`,auth:`agy runtime auth, antigravity-usage login, or ~/.gemini oauth for quota`},claude:{install:`npm i -g @anthropic-ai/claude-code`,auth:`claude auth`},codex:{install:`npm i -g @openai/codex`,auth:`codex login`},"codex-app":{install:`npm i -g @openai/codex`,auth:`codex login`},cursor:{install:`curl https://cursor.com/install -fsS | bash`,auth:`cursor-agent login, CURSOR_API_KEY, or CURSOR_SESSION_TOKEN for quota`},"kiro-code":{install:`Install Kiro CLI from https://kiro.dev/docs/cli`,auth:`kiro-cli login`},gemini:{install:`npm i -g @google/gemini-cli`,auth:`gemini (${i(`cli.gemini.auth`)})`},grok:{install:`curl -fsSL https://x.ai/cli/install.sh | bash`,auth:`grok login --oauth`},opencode:{install:`npm i -g opencode-ai`,auth:`opencode auth`},copilot:{install:`npm i -g copilot`,auth:i(`cli.copilot.authHint`)}},ee=``;if(!t||typeof t!=`object`){s&&(s.innerHTML=`<div style="color:var(--text-dim);font-size:11px">Failed to load CLI status</div>`);return}for(let[e,n]of Object.entries(t)){if(et.has(e))continue;let t=d(n),s=t===`checking`,m=t===`unknown`,h=t===`probe-failing`,g=t===`capability-failed`,_=s||m||h?void 0:a?.[e],v;v=s?`checking`:m||h?`warn`:!n.available||g?`missing`:!_||_.error?`ok`:_.authenticated===!1?`warn`:`ok`;let te=``,ne=_?.quotaCapable===!1&&_.authenticated!==!1&&n.available&&!tt[e]&&!$e.has(e);if(_?.account&&!ne){let t=ct(e,_);t.length&&(te=`<div style="font-size:10px;color:var(--text-dim);margin:2px 0 4px 16px">${r(t.join(` · `))}</div>`)}let y=``;if(!s&&!m&&!h&&(!n.available||v===`warn`)){let t=c[e];if(t){let e=!n.available,a=i(e?`cli.authRequired`:`cli.notAuthenticated`),o=e?`var(--error)`:`var(--warning)`;y=`
|
|
170
170
|
<div style="font-size:10px;margin:4px 0 2px 16px;padding:6px 8px;background:var(--surface);border-radius:4px;border-left:2px solid ${o}">
|
|
171
171
|
<div style="color:${o};margin-bottom:3px">${a}</div>
|
|
172
172
|
${e?`<div style="color:var(--text-dim)"><code style="font-size:10px;background:var(--border);padding:1px 4px;border-radius:2px">${r(t.install)}</code></div>`:``}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e}from"./api-CUtiCd2-.js";import{n as t,t as n}from"./settings-embedding-
|
|
1
|
+
import{a as e}from"./api-CUtiCd2-.js";import{n as t,t as n}from"./settings-embedding-DIqST-91.js";import{t as r}from"./jsx-runtime-NZYk81nU.js";import{n as i}from"./settings-client-CmwRsVd1.js";var a=t(),o=r(),s=location.pathname.match(/^\/i\/(\d+)\//),c=s?`/i/${s[1]}`:``,l=document.getElementById(`settings-root`);if(!l)throw Error(`Invalid settings host`);function u(e){if(typeof e!=`number`&&(typeof e!=`string`||!/^\d+$/.test(e)))return null;let t=Number(e);return Number.isInteger(t)&&t>0&&t<=65535?t:null}function d(e){(e===`dark`||e===`light`||e===`auto`)&&(document.documentElement.dataset.theme=e)}if(parent!==window)try{parent.location.origin===location.origin&&d(parent.document.documentElement.dataset.theme)}catch{}window.addEventListener(`message`,e=>{if(e.source===parent&&e.origin===location.origin&&(e.data?.type===`jaw-preview-theme-sync`&&d(e.data.theme),e.data?.type===`settings:request-back`)){let e=l.querySelector(`.settings-back`);e?e.click():parent.postMessage({type:`settings:back`},location.origin)}});var f=i(0,{base:c,getHeaders:async()=>{let t=await e();return t?{Authorization:`Bearer ${t}`}:{}}}),p=null;try{let e=await f.get(`/api/settings`);p=e.data??e}catch{}var m=u(p?.port)??u(location.port);if(m===null)throw l.setAttribute(`role`,`alert`),l.textContent=`Cannot resolve instance settings port`,Error(`Cannot resolve instance settings port`);var h=!1;window.addEventListener(`beforeunload`,e=>{h&&(e.preventDefault(),e.returnValue=``)});var g={scopes:[`instance`],client:f},_=(0,a.createRoot)(l),v=0,y=()=>{(!h||window.confirm(`Discard unsaved changes?`))&&(h&&(v++,b()),parent!==window&&parent.postMessage({type:`settings:back`},location.origin))};function b(){_.render((0,o.jsx)(n,{onBack:y,port:m,instanceUrl:location.origin+c,...g,onDirtyChange:e=>{h=e},onSaved:()=>{parent!==window&&parent.postMessage({type:`jaw-settings-saved`},location.origin)}},v))}b(),parent!==window&&parent.postMessage({type:`jaw-settings-ready`},location.origin);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e}from"./settings-core-DiStY7KC.js";export{e as refreshHeaderFromSettingsChange};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as e,i as t,n,t as r}from"./api-CUtiCd2-.js";import{O as i,P as a,S as o}from"./render-OT0puqo3.js";import{n as s}from"./locale-B9w_kUtW.js";import{n as c,t as l}from"./cli-engine-NdU0lzs_.js";import{a as u,i as d,n as f,o as p,t as m}from"./constants-DmRtjRj3.js";import{a as h}from"./settings-types-D3cd6SWy.js";import{s as g}from"./pi-settings-tRVfevu-.js";import{n as _,r as v}from"./provider-icons-Bge6teOj.js";import{n as ee,t as y}from"./presentation-preference-D9u6LD07.js";function b(e,t){if(!l(t))return;let n=Array.from(e.options).find(e=>e.value===t);n||(n=e.ownerDocument.createElement(`option`),n.value=t,e.prepend(n)),n.disabled=!0,n.textContent=c(t),e.value=t,e.title=`The saved runtime is retired and cannot execute.`}var te=/^\/(?:Users|home)\/[^/]+/,x=32;function S(e){return e.replace(te,`~`)}function C(e){if(e.length<=x)return e;let t=e.split(`/`);return t.length<=3?e:`${t.slice(0,2).join(`/`)}/…/${t[t.length-1]}`}function ne(e){let t=(e||[]).filter(e=>typeof e==`string`&&e.trim());return t.length===0?null:{text:`${C(S(t[0]))}${t.length>1?` +${t.length-1}`:``}`,title:t.join(`
|
|
2
|
+
`)}}function w(){return document.getElementById(`headerGitStatus`)}function re(){let e=w();e&&(e.hidden=!0,e.textContent=``,e.removeAttribute(`title`),e.removeAttribute(`aria-label`))}function ie(e){if(!e?.available)return null;let t=e.branch||e.head;if(!t)return null;let n=[`/`,`⑂ ${t}`];e.trackedChangedCount>0&&n.push(`*${e.trackedChangedCount}`),e.untrackedCount>0&&n.push(`?${e.untrackedCount}`);let r=[`Git: ${e.branch?`branch ${e.branch}`:`detached ${e.head}`}`];return e.trackedChangedCount>0&&r.push(`${e.trackedChangedCount} tracked changes`),e.untrackedCount>0&&r.push(`${e.untrackedCount} untracked files`),{text:n.join(` `),title:r.join(`, `)}}function ae(e){let t=w();if(!t)return;let n=ie(e);if(!n){re();return}t.hidden=!1,t.textContent=n.text,t.title=n.title,t.setAttribute(`aria-label`,n.title)}async function T(){ae(await n(`/api/project/git-summary`))}function E(e){(Array.isArray(e.changedKeys)?e.changedKeys:[]).includes(`projectDirs`)&&T()}var D=new Set,O,k=!1,A=0;function j(e){return!e||typeof e!=`object`?null:`settings`in e&&e.settings?e.settings:`data`in e&&e.data?e.data:e}async function oe(t){if(t.runtimeDefaultMigration?.state!==`pending`)return t;let n=window.confirm(`신규 설치의 기본 런타임이 Codex App으로 변경되었습니다. 지금 Codex App을 사용하시겠습니까?`)?`accept`:`keep`;try{let i=await e(),a=await fetch(`${r}/api/settings/runtime-default-migration`,{method:`POST`,headers:{"Content-Type":`application/json`,...i?{Authorization:`Bearer ${i}`}:{}},body:JSON.stringify({action:n})}),o=await a.json().catch(()=>null);if(h(a.status))return j(o)??t;window.alert(`런타임 선택을 저장하지 못했습니다 (${a.status}). 다음 설정 진입 때 다시 안내합니다.`)}catch{window.alert(`런타임 선택을 저장하지 못했습니다. 다음 설정 진입 때 다시 안내합니다.`)}return t}async function M(t){if(t.multiSessionDefaultMigration?.state!==`pending`)return t;let n=window.confirm(`이제 대화 세션을 여러 개 열 수 있습니다. 켜면 동시 실행도 2로 올라가서, 두 번째 세션이 첫 번째가 끝나기를 기다리지 않습니다. 지금 켤까요?`)?`accept`:`keep`;try{let i=await e(),a=await fetch(`${r}/api/settings/multi-session-default-migration`,{method:`POST`,headers:{"Content-Type":`application/json`,...i?{Authorization:`Bearer ${i}`}:{}},body:JSON.stringify({action:n})}),o=await a.json().catch(()=>null);if(h(a.status))return j(o)??t;window.alert(`세션 선택을 저장하지 못했습니다 (${a.status}). 다음 설정 진입 때 다시 안내합니다.`)}catch{window.alert(`세션 선택을 저장하지 못했습니다. 다음 설정 진입 때 다시 안내합니다.`)}return t}function N(e){let t=document.getElementById(`headerCli`);if(!t)return;let n=_(e),r=F(e);t.innerHTML=n?`${n} ${i(r)}`:i(r)}function P(e){let t=document.getElementById(`headerProject`);if(!t)return;se(t),t.hidden=!1;let n=ne(e);if(!n){t.classList.add(`is-empty`),t.textContent=`Project: not set`,t.title=`Click to choose the project root folder`;return}t.classList.remove(`is-empty`),t.textContent=`Project ${n.text}`,t.title=`${n.title}\n(click to change)`}function se(e){if(e.dataset.pickerBound)return;e.dataset.pickerBound=`1`,e.setAttribute(`role`,`button`),e.setAttribute(`tabindex`,`0`);let n=async()=>{if(e.classList.contains(`is-picking`))return;e.classList.add(`is-picking`);let n=e.textContent;e.textContent=`Choosing folder…`;try{let n=await t(`/api/project/pick`,`POST`,{});if(n&&!n.cancelled&&`projectDirs`in n){e.classList.remove(`is-picking`),P(n.projectDirs);return}}catch{}e.classList.remove(`is-picking`),e.textContent=n};e.addEventListener(`click`,()=>{n()}),e.addEventListener(`keydown`,e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),n())})}function ce(e){typeof e.cli==`string`&&e.cli&&N(e.cli),`projectDirs`in e&&P(e.projectDirs),E(e)}function F(e){return u(e)?.label||v(e)||e}function I(e){let t=e.finally(()=>{D.delete(t)});return D.add(t),t}async function le(){for(;D.size;)await Promise.all(D)}function L(e,t,{includeCustom:n=!1,includeDefault:r=!1,selected:o=``}={}){if(!e)return;let s=r?`<option value="default">default</option>`:``,c=n?`<option value="__custom__">${a(`model.customOption`)}</option>`:``;e.innerHTML=s+(t||[]).map(e=>`<option value="${i(e)}">${i(e)}</option>`).join(``)+c,o&&Array.from(e.options).some(e=>e.value===o)&&(e.value=o)}function R(e,t){if(!e||!t||Array.from(e.options).some(e=>e.value===t))return;let n=document.createElement(`option`);n.value=t,n.textContent=t;let r=e.querySelector(`option[value="__custom__"]`);r?e.insertBefore(n,r):e.appendChild(n)}function z(e=null){let t=d().filter(e=>!l(e)),n=document.getElementById(`selCli`);if(n){let r=e?.cli||n.value||t[0]||`claude`,o=e=>f.includes(e),s=!o(r)&&t.includes(r),c=n.dataset.expanded===`1`,d=t.filter(o),p=t.filter(e=>!o(e)),m=d.length===0||s||c,h=d.map(e=>{let t=u(e)?.label||e;return`<option value="${i(e)}">${i(t)}</option>`}).join(``);p.length>0&&(m?(h+=`<option disabled>──────</option>`,h+=p.map(e=>{let t=u(e)?.label||e;return`<option value="${i(e)}">${i(t)}</option>`}).join(``)):h+=`<option value="__show_more__">${a(`cli.showMore`)}</option>`),n.innerHTML=h,n.title=l(r)?`The saved runtime is retired and cannot execute.`:``,b(n,r),Array.from(n.options).some(e=>e.value===r)&&(n.value=r)}let r=document.getElementById(`flushCli`);if(r){let n=e?.memory?.cli||r.value||``;r.innerHTML=`<option value="">(active CLI)</option>`+t.map(e=>`<option value="${i(e)}">${i(F(e))}</option>`).join(``),b(r,n),Array.from(r.options).some(e=>e.value===n)&&(r.value=n)}}function B(e,t){return(t||``).trim()}function V(e,t,n,r){let i=(t||``).trim();if(r){let t=e?.effortsByModelByProvider?.[r]?.[i];if(t)return t}return e?.effortsByModel?.[i]||n||e?.efforts||[]}function H(e,t,n){let r=(t||``).trim();return(n?e?.defaultEffortByModelByProvider?.[n]?.[r]:void 0)??e?.defaultEffortByModel?.[r]??``}function U(){return document.getElementById(`selEffort`)?.value||``}function W(e,t=``,n){let r=document.getElementById(`selEffort`);if(!r)return;let a=u(e),o=e!==`pi`&&a?.providers?.length?G(e):``,s=o?a?.effortsByProvider?.[o]||[]:null,c=B(e,n??document.getElementById(`selModel`)?.value??``),l=V(a,c,s,o||void 0);if(l.length===0){let e=a?.effortNote||`— none`;r.innerHTML=`<option value="">${i(e)}</option>`,r.title=e,r.disabled=!0;return}let d=[``].concat(l);r.innerHTML=[...new Set(d)].map(e=>e?`<option value="${i(e)}">${i(e)}</option>`:`<option value="">— none</option>`).join(``),r.disabled=!1,r.title=a?.effortNote||``;let f=!t||l.includes(t)?t:H(a,c,o||void 0);Array.from(r.options).some(e=>e.value===f)&&(r.value=f)}function ue(e,t,n){return e?(e.innerHTML=n.map(e=>`<option value="${i(e)}">${i(v(e)||e)}</option>`).join(``),Array.from(e.options).some(e=>e.value===t)?e.value=t:e.options.length>0&&(e.value=e.options[0]?.value||t),e.value||t):t}function G(e){let t=document.getElementById(`selCliProvider`),n=u(e);return t?.value||n?.defaultProvider||``}function K(e,t){let n=document.getElementById(`cliProviderWrap`),r=document.getElementById(`selCliProvider`),i=document.getElementById(`cliProviderLabel`),a=u(t);if(!(t!==`pi`&&(a?.providers?.length??0)>0))return n&&(n.style.display=`none`),a?.defaultProvider||``;i&&(i.textContent=`Provider`);let o=ue(r,e?.perCli?.[t]?.provider||r?.value||a?.defaultProvider||``,a.providers);return n&&(n.style.display=``),o}async function q(){let e=A;await p();let t=ee(),r=await n(`/api/settings`);if(!r)return;y(r,t),r=await oe(r),r=await M(r),s(r.locale??``),z(r),g(r.pi),K(r,r.cli||``);let a=document.getElementById(`selCli`);a&&Array.from(a.options).some(e=>e.value===r.cli)&&(a.value=r.cli,a.dataset.prev=r.cli);let o=document.getElementById(`inpCwd`);o&&(o.textContent=r.workingDir);let c=document.getElementById(`headerCli`);if(c){let e=_(r.cli),t=F(r.cli);c.innerHTML=e?`${e} ${i(t)}`:i(t)}P(r.projectDirs),await T(),e===A&&!k&&X(r.permissions,!1),Z(!1);let l=r.activeOverrides?.[r.cli]||{},u=r.perCli?.[r.cli]||{},d=l.model||u.model,f=l.effort??u.effort??``,m=document.getElementById(`selModel`);if(d&&m){let e=B(r.cli,d);e&&!Array.from(m.options).some(t=>t.value===e)&&R(m,e),m.value=e}W(r.cli,f)}async function J(){let e=document.getElementById(`selCli`)?.value||`claude`,n={cli:e},r=u(e);return e!==`pi`&&r?.providers?.length&&(n.perCli={[e]:{provider:G(e)}}),I((async()=>{let r=await t(`/api/settings`,`PUT`,n);if(!r){await q();return}let i=r.cli||e,a=document.getElementById(`selCli`);a&&Array.from(a.options).some(e=>e.value===i)&&(a.value=i,a.dataset.prev=i),N(i),o([`instances`],`active-cli-changed`)})())}function de(e){return e===`auto`?`Auto (YOLO)`:e===`safe`?`Safe`:e==null?`Not provided`:Array.isArray(e)&&e.every(e=>typeof e==`string`)?`Custom (${e.length} ${e.length===1?`entry`:`entries`})`:`Unrecognized`}function Y(){let e=O,t=de(e),n=document.getElementById(`configuredPermText`);n&&(n.textContent=`Configured policy: ${t}`);let r=document.getElementById(`configuredPerm`);r?.classList.toggle(`active`,e===`auto`),r?.classList.toggle(`perm-auto`,e===`auto`);let i=document.getElementById(`selPerm`);i&&(i.options[0].textContent=`Configured policy: ${t}`,i.value=e===`auto`||e===`safe`?e:``,i.disabled=k,i.setAttribute(`aria-busy`,String(k)))}async function X(e,n=!0){if(!n){O=e,Y();return}if(e!==`auto`&&e!==`safe`||e===O||k)return;k=!0,A++,Y();let r=document.getElementById(`permSaveError`);return r&&(r.hidden=!0,r.textContent=``),I((async()=>{try{let n=await t(`/api/settings`,`PUT`,{permissions:e});if(!n)throw Error(`Permission settings save failed`);O=n.permissions}catch{r&&(r.textContent=`Could not save permissions. Please try again.`,r.hidden=!1)}finally{k=!1,A++,Y()}})())}function Z(e=!0){let t=document.getElementById(`selCli`);if(!t)return;if(t.value===`__show_more__`){let e=t.dataset.prev||d()[0]||`claude`;t.dataset.expanded=`1`,z(null),Array.from(t.options).some(t=>t.value===e)&&(t.value=e);try{t.showPicker()}catch{}return}t.dataset.prev=t.value;let r=t.value||`claude`;l(r)||(t.title=``);let o=K(null,r),s=u(r),c=o&&s?.modelsByProvider?.[o]?s.modelsByProvider[o]:m[r]||[],f=document.getElementById(`selModel`);if(l(r)){f&&(f.disabled=!0,f.title=`The saved runtime is retired and cannot execute.`),N(r),W(r);return}s?.modelNote&&f?(f.innerHTML=`<option value="">${i(s.modelNote)}</option>`,f.title=s.modelNote,f.disabled=!0):(L(f,c,{includeCustom:!0,includeDefault:!0}),f&&(f.disabled=!1,f.title=``)),N(r),W(r);let p=document.getElementById(`selModelCustom`);p&&p.remove();let h=document.createElement(`input`);if(h.type=`text`,h.id=`selModelCustom`,h.className=`custom-model-input`,h.placeholder=a(`model.placeholder`),h.style.display=`none`,h.onchange=function(){let e=this.value.trim();e&&f&&(R(f,e),f.value=e,this.style.display=`none`,W(r,U(),e),Q())},!f){e&&J();return}f.parentElement?.appendChild(h),f.onchange=function(){this.value===`__custom__`?(h.style.display=`block`,h.focus()):(h.style.display=`none`,W(r,U(),this.value),Q())},n(`/api/settings`).then(e=>{if(!e)return;let t=e.activeOverrides?.[r]||{},n=e.perCli?.[r]||{},i=t.model||n.model,a=t.effort??n.effort??``;if(i&&f){let t=u(r);if(r!==`pi`&&t?.providers?.length&&(e.perCli?.[r]?.provider||t.defaultProvider||``)!==G(r)){W(r,a);return}let n=B(r,i);R(f,n),f.value=n}W(r,a)}),e&&J()}async function Q(){let e=document.getElementById(`selCli`)?.value||`claude`,n=document.getElementById(`selModel`)?.value||`default`;n===`__custom__`&&(n=document.getElementById(`selModelCustom`)?.value?.trim()||`default`);let r=document.getElementById(`selEffort`),i={};i[e]={model:n},r&&!r.disabled&&(i[e].effort=r.value||``);let a={activeOverrides:i},s=u(e);e!==`pi`&&s?.providers?.length&&(a.perCli={[e]:{provider:G(e)}}),await t(`/api/settings`,`PUT`,a)&&o([`instances`],`active-cli-changed`)}function fe(){let e=document.getElementById(`flushCli`)?.value||document.getElementById(`selCli`)?.value||`claude`,t=m[e]||[];L(document.getElementById(`flushModel`),t,{includeDefault:!0}),$(),me()}async function pe(){let e=await n(`/api/memory-files`);if(!e)return;let t=document.getElementById(`flushCli`),r=document.getElementById(`flushModel`);t&&e.cli&&(t.value=e.cli);let i=e.cli||document.getElementById(`selCli`)?.value||`claude`;L(r,m[i]||[],{includeDefault:!0}),r&&e.model&&(R(r,e.model),r.value=e.model),$()}async function me(){let e=document.getElementById(`flushCli`)?.value||``,n=document.getElementById(`flushModel`)?.value||``;await t(`/api/memory-files/settings`,`PUT`,{cli:e,model:n})}function $(){let e=document.getElementById(`flushAgentBadge`);if(!e)return;let t=document.getElementById(`flushCli`)?.value||``,n=document.getElementById(`flushModel`)?.value||``,r=t||document.getElementById(`selCli`)?.value||``,i=[];r&&i.push(t?F(r):`${F(r)}*`),n&&n!=="default"&&i.push(n),e.textContent=i.length?`(${i.join(` / `)})`:``}export{ce as a,J as c,fe as i,le as l,q as n,Q as o,Z as r,X as s,pe as t};
|