cli-jaw 2.17.72 → 2.17.73

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. package/README.md +16 -0
  2. package/dist/src/agent/aside-catalog.js +339 -0
  3. package/dist/src/agent/aside-catalog.js.map +1 -0
  4. package/dist/src/agent/aside-cli.js +208 -0
  5. package/dist/src/agent/aside-cli.js.map +1 -0
  6. package/dist/src/agent/aside-replay.js +120 -0
  7. package/dist/src/agent/aside-replay.js.map +1 -0
  8. package/dist/src/agent/aside-runtime.js +175 -0
  9. package/dist/src/agent/aside-runtime.js.map +1 -0
  10. package/dist/src/agent/lifecycle-handler.js +26 -18
  11. package/dist/src/agent/lifecycle-handler.js.map +1 -1
  12. package/dist/src/agent/memory-flush-controller.js +3 -0
  13. package/dist/src/agent/memory-flush-controller.js.map +1 -1
  14. package/dist/src/agent/prompt-context.js +2 -2
  15. package/dist/src/agent/prompt-context.js.map +1 -1
  16. package/dist/src/agent/session-persistence.js +2 -0
  17. package/dist/src/agent/session-persistence.js.map +1 -1
  18. package/dist/src/agent/spawn/backend-aside.js +314 -0
  19. package/dist/src/agent/spawn/backend-aside.js.map +1 -0
  20. package/dist/src/agent/spawn/resume.js +3 -0
  21. package/dist/src/agent/spawn/resume.js.map +1 -1
  22. package/dist/src/agent/spawn-env.js +5 -0
  23. package/dist/src/agent/spawn-env.js.map +1 -1
  24. package/dist/src/agent/spawn.js +60 -6
  25. package/dist/src/agent/spawn.js.map +1 -1
  26. package/dist/src/cli/cli-status-worker.js +2 -1
  27. package/dist/src/cli/cli-status-worker.js.map +1 -1
  28. package/dist/src/cli/employee-handler.js +2 -0
  29. package/dist/src/cli/employee-handler.js.map +1 -1
  30. package/dist/src/cli/handlers-completions.js +20 -8
  31. package/dist/src/cli/handlers-completions.js.map +1 -1
  32. package/dist/src/cli/handlers-runtime.js +2 -0
  33. package/dist/src/cli/handlers-runtime.js.map +1 -1
  34. package/dist/src/cli/readiness.js +7 -3
  35. package/dist/src/cli/readiness.js.map +1 -1
  36. package/dist/src/cli/registry-live.js +47 -0
  37. package/dist/src/cli/registry-live.js.map +1 -1
  38. package/dist/src/cli/registry.js +5 -0
  39. package/dist/src/cli/registry.js.map +1 -1
  40. package/dist/src/core/config.js +10 -3
  41. package/dist/src/core/config.js.map +1 -1
  42. package/dist/src/core/employees.js +5 -3
  43. package/dist/src/core/employees.js.map +1 -1
  44. package/dist/src/core/settings-merge.js +35 -0
  45. package/dist/src/core/settings-merge.js.map +1 -1
  46. package/dist/src/core/settings-watch.js +10 -1
  47. package/dist/src/core/settings-watch.js.map +1 -1
  48. package/dist/src/orchestrator/gateway.js +2 -0
  49. package/dist/src/orchestrator/gateway.js.map +1 -1
  50. package/dist/src/routes/employees.js +8 -0
  51. package/dist/src/routes/employees.js.map +1 -1
  52. package/dist/src/routes/jaw-memory.js +4 -0
  53. package/dist/src/routes/jaw-memory.js.map +1 -1
  54. package/dist/src/routes/orchestrate.js +22 -3
  55. package/dist/src/routes/orchestrate.js.map +1 -1
  56. package/dist/src/routes/settings.js +23 -0
  57. package/dist/src/routes/settings.js.map +1 -1
  58. package/dist/src/shared/aside-contract.js +2 -0
  59. package/dist/src/shared/aside-contract.js.map +1 -0
  60. package/dist/src/types/cli-engine.js +1 -0
  61. package/dist/src/types/cli-engine.js.map +1 -1
  62. package/package.json +1 -1
  63. package/public/dist/.vite/manifest.json +186 -175
  64. package/public/dist/assets/{Activity-DPLlOJ46.js → Activity-DsBgOkCP.js} +1 -1
  65. package/public/dist/assets/{AdvancedExport-BgOgGvc5.js → AdvancedExport-COGQ7vbK.js} +1 -1
  66. package/public/dist/assets/Agent-6qGQN7lY.js +1 -0
  67. package/public/dist/assets/AsideSelectionFields-DvU5xWAP.js +1 -0
  68. package/public/dist/assets/{Browser-m6VynQXV.js → Browser-r09vOsR1.js} +1 -1
  69. package/public/dist/assets/ChannelEnablementControl-ooOkdd-Q.js +85 -0
  70. package/public/dist/assets/{ChannelSetupEntry-DHLoZEzJ.js → ChannelSetupEntry-B0b4TdhH.js} +1 -1
  71. package/public/dist/assets/{ChannelsDiscord-B-G8vsYy.js → ChannelsDiscord-9EMLt5b3.js} +1 -1
  72. package/public/dist/assets/{ChannelsSlack-oPuh922z.js → ChannelsSlack-B8ETzWFt.js} +1 -1
  73. package/public/dist/assets/{ChannelsTelegram-PmTv43KQ.js → ChannelsTelegram-CflLUsQw.js} +1 -1
  74. package/public/dist/assets/{DashboardMeta-BqEiJrvr.js → DashboardMeta-wjEuh9-E.js} +1 -1
  75. package/public/dist/assets/{Developer-CbySB7_Z.js → Developer-B3cDkldo.js} +1 -1
  76. package/public/dist/assets/{Display-DU4_76cS.js → Display-BXQxpv6-.js} +1 -1
  77. package/public/dist/assets/{Display-C0Zdamcb.js → Display-Cl4DD334.js} +1 -1
  78. package/public/dist/assets/{Embedding-CCFMOB_2.js → Embedding-D-T92-En.js} +1 -1
  79. package/public/dist/assets/{Employees-BanvF58d.js → Employees-Cf4IeF0N.js} +1 -1
  80. package/public/dist/assets/{Heartbeat-uyi_MpUd.js → Heartbeat-Bj8V_bUM.js} +1 -1
  81. package/public/dist/assets/{Mcp-rjPoL_Zo.js → Mcp-jAcut_fw.js} +1 -1
  82. package/public/dist/assets/Memory-BOXkBFKg.js +1 -0
  83. package/public/dist/assets/ModelProvider-DIDQ37z-.js +1 -0
  84. package/public/dist/assets/{Network-CuqFrOvR.js → Network-I5eOe2hf.js} +1 -1
  85. package/public/dist/assets/{Permissions-BltXiZnz.js → Permissions-B7PthH01.js} +1 -1
  86. package/public/dist/assets/{Permissions-DcCbFMIq.js → Permissions-BCYUfJg1.js} +1 -1
  87. package/public/dist/assets/Profile-CYPMVhQM.js +1 -0
  88. package/public/dist/assets/{Prompts-C9vY8ivQ.js → Prompts-BRAgZLNQ.js} +1 -1
  89. package/public/dist/assets/{SpeechKeys-BJ8V7U5E.js → SpeechKeys-UlXNSFoe.js} +1 -1
  90. package/public/dist/assets/{TelegramHub-DtyjLGFR.js → TelegramHub-BhUFhIcv.js} +1 -1
  91. package/public/dist/assets/agent-meta-v4jNRAbX.js +1 -0
  92. package/public/dist/assets/app-SVIyP1TT.js +59 -0
  93. package/public/dist/assets/bgtask-badge-HIrvpcr_.js +1 -0
  94. package/public/dist/assets/{bgtask-badge-oPvZyylH.js → bgtask-badge-tYRnplEV.js} +1 -1
  95. package/public/dist/assets/constants-_iw-lnKY.js +1 -0
  96. package/public/dist/assets/{employees-BchFBkDz.js → employees-DNTPcxtZ.js} +2 -2
  97. package/public/dist/assets/{error-normalize-clOi-AAA.js → error-normalize-jnjrKZDu.js} +1 -1
  98. package/public/dist/assets/{iframe-renderer-CcGzEi0v.js → iframe-renderer--lHbKTDh.js} +2 -2
  99. package/public/dist/assets/iframe-renderer-DigNC5FU.js +1 -0
  100. package/public/dist/assets/{manager-nquYZ7_x.js → manager-qGH-xUZ7.js} +1 -1
  101. package/public/dist/assets/{memory-DTpD4see.js → memory-BAdRkBdk.js} +1 -1
  102. package/public/dist/assets/memory-DA8x5314.js +1 -0
  103. package/public/dist/assets/message-history-CGOgZH4l.js +1 -0
  104. package/public/dist/assets/{message-history-DSvflaZ9.js → message-history-PAYeKmia.js} +1 -1
  105. package/public/dist/assets/page-shell-Cz2ylri8.js +1 -0
  106. package/public/dist/assets/{render-D8dVQ_bm.js → render-F6xF6w6c.js} +1 -1
  107. package/public/dist/assets/settings-DMbNzuTm.js +1 -0
  108. package/public/dist/assets/{settings-DMiQe469.js → settings-DZ2-ca8T.js} +1 -1
  109. package/public/dist/assets/{settings-Bp0sgQ2a.js → settings-W0WFhBf2.js} +1 -1
  110. package/public/dist/assets/settings-core-2vZXNf6n.js +2 -0
  111. package/public/dist/assets/settings-core-BofMyzL9.js +1 -0
  112. package/public/dist/assets/{settings-embedding-BRW0WZvh.js → settings-embedding-Bjwpe8xu.js} +2 -2
  113. package/public/dist/assets/{shared-D1begqvi.js → shared-CftvKNY9.js} +1 -1
  114. package/public/dist/assets/{sidebar-CrpBbYFg.js → sidebar-Clkqd78q.js} +3 -3
  115. package/public/dist/assets/{skills-Bx8U-gJa.js → skills-0aA-RuN9.js} +1 -1
  116. package/public/dist/assets/skills-SqmQXndw.js +1 -0
  117. package/public/dist/assets/{slash-commands-DkrGUOnC.js → slash-commands-4zHHXEeU.js} +1 -1
  118. package/public/dist/assets/slash-commands-D5LqONzL.js +1 -0
  119. package/public/dist/assets/{trace-drawer-Dbe5pTbf.js → trace-drawer-B4O0Tl1M.js} +1 -1
  120. package/public/dist/assets/{ui-rnVAM91F.js → ui-CVtGpivr.js} +1 -1
  121. package/public/dist/assets/ui-_cqgseFX.js +1 -0
  122. package/public/dist/index.html +1 -1
  123. package/public/dist/manager/index.html +1 -1
  124. package/public/dist/settings/index.html +1 -1
  125. package/public/js/constants.ts +5 -0
  126. package/public/js/features/employees.ts +3 -3
  127. package/public/js/features/heartbeat.ts +14 -1
  128. package/public/js/features/settings-core.ts +39 -13
  129. package/public/js/features/settings-types.ts +1 -1
  130. package/public/locales/en.json +2 -0
  131. package/public/locales/ja.json +2 -0
  132. package/public/locales/ko.json +2 -0
  133. package/public/locales/zh.json +2 -0
  134. package/public/manager/src/settings/SettingsShell.tsx +1 -1
  135. package/public/manager/src/settings/pages/Agent.tsx +137 -52
  136. package/public/manager/src/settings/pages/Heartbeat.tsx +6 -0
  137. package/public/manager/src/settings/pages/Memory.tsx +8 -6
  138. package/public/manager/src/settings/pages/ModelProvider.tsx +31 -6
  139. package/public/manager/src/settings/pages/Profile.tsx +2 -2
  140. package/public/manager/src/settings/pages/components/AsideSelectionFields.tsx +33 -0
  141. package/public/manager/src/settings/pages/components/AvatarCard.tsx +22 -34
  142. package/public/manager/src/settings/pages/components/PerCliRow.tsx +29 -1
  143. package/public/manager/src/settings/pages/components/agent/FlushAgentSection.tsx +7 -6
  144. package/public/manager/src/settings/pages/components/agent/RuntimeEmployeeRow.tsx +4 -4
  145. package/public/manager/src/settings/pages/components/agent/RuntimeHeader.tsx +5 -0
  146. package/public/manager/src/settings/pages/components/agent/agent-meta.ts +7 -0
  147. package/public/manager/src/settings/pages/components/agent/runtime-employees-helpers.ts +3 -2
  148. package/public/manager/src/settings/pages/components/aside-models.ts +104 -0
  149. package/public/manager/src/settings/settings-client.ts +3 -1
  150. package/public/manager/src/settings/types.ts +1 -0
  151. package/public/dist/assets/Agent-O_U8ny90.js +0 -1
  152. package/public/dist/assets/ChannelEnablementControl-BSuKQhTW.js +0 -85
  153. package/public/dist/assets/Memory-C9I33pIi.js +0 -1
  154. package/public/dist/assets/ModelProvider-fiUktMaO.js +0 -1
  155. package/public/dist/assets/Profile-DUL7-RE_.js +0 -1
  156. package/public/dist/assets/agent-meta-94LMwZZK.js +0 -1
  157. package/public/dist/assets/app-Iu76iEiU.js +0 -59
  158. package/public/dist/assets/bgtask-badge-DHo2mkMI.js +0 -1
  159. package/public/dist/assets/constants-DmZ9Rjym.js +0 -1
  160. package/public/dist/assets/iframe-renderer-DSLsfZq8.js +0 -1
  161. package/public/dist/assets/memory-BgUF3M9l.js +0 -1
  162. package/public/dist/assets/message-history-DkB768L3.js +0 -1
  163. package/public/dist/assets/page-shell-DfinU3mb.js +0 -1
  164. package/public/dist/assets/settings-DxjoyiIM.js +0 -1
  165. package/public/dist/assets/settings-core-CXWmPKUE.js +0 -1
  166. package/public/dist/assets/settings-core-D4zGy72z.js +0 -2
  167. package/public/dist/assets/skills-BY-hQnqM.js +0 -1
  168. package/public/dist/assets/slash-commands-C53T9J3g.js +0 -1
  169. package/public/dist/assets/ui-C0o427q6.js +0 -1
@@ -1 +1 @@
1
- import{t as e}from"./jsx-runtime-CkEUZM6i.js";import{a as t,l as n,o as r}from"./page-shell-DfinU3mb.js";var i=e(),a=[{value:`ko`,label:`한국어 (ko)`},{value:`en`,label:`English (en)`},{value:`zh`,label:`中文 (zh)`},{value:`ja`,label:`日本語 (ja)`}];function o(e){return a.find(t=>t.value===e)?.value??`ko`}var s={ko:{ariaLabel:`대시보드 설정`,eyebrow:`매니저 환경설정`,title:`대시보드 설정`,displayTitle:`인스턴스 목록 표시`,displayDescription:`이 설정은 왼쪽 인스턴스 목록과 저장된 매니저 UI 환경설정에만 적용됩니다.`,activityTitle:`미리보기와 활동`,activityDescription:`최근 작업 제목은 각 인스턴스 서버의 endpoint 버전에 따라 달라집니다.`,embeddingTitle:`임베딩 검색`,embeddingDescription:`벡터 임베딩 provider를 설정하고 메모리 인덱스를 관리합니다.`,fields:{activity:{label:`최근 작업 미리보기`,scope:`왼쪽 인스턴스 목록`,description:`요약 endpoint를 지원하는 인스턴스에서 최신 user 또는 assistant 메시지를 정리한 한 줄을 표시합니다.`},rename:{label:`이름 변경 컨트롤`,scope:`왼쪽 인스턴스 목록`,description:`대시보드 전용 인스턴스 이름을 편집하는 연필 버튼을 표시합니다.`},runtime:{label:`런타임 줄`,scope:`왼쪽 인스턴스 목록`,description:`각 인스턴스 이름 아래에 codex / gpt-5.5 같은 CLI와 모델 정보를 표시합니다.`},actions:{label:`확장 행 액션`,scope:`선택된 인스턴스 행`,description:`선택된 인스턴스 행에 Preview, Open, Start, Stop, Restart 버튼을 표시합니다.`},language:{label:`언어`,scope:`전체 Jaw UI`,description:`i18n을 지원하는 매니저 대시보드 화면에 사용할 언어를 저장합니다.`},shortcuts:{label:`전역 단축키`,scope:`Manager dashboard`,description:`입력창과 에디터 바깥에서만 작동하는 Manager 이동 단축키를 켭니다. Meta는 macOS에서 ⌘, Windows·Linux에서 Ctrl이고, Windows 키는 Win으로 적습니다.`},shortcutFocusInstances:{label:`인스턴스 목록`,scope:`단축키`,description:`Instances workspace로 이동합니다.`},shortcutFocusActiveSession:{label:`활성 세션`,scope:`단축키`,description:`선택된 인스턴스의 Preview 탭으로 이동합니다.`},shortcutFocusNotes:{label:`노트`,scope:`단축키`,description:`Notes workspace로 이동합니다.`},shortcutPreviousInstance:{label:`이전 인스턴스`,scope:`단축키`,description:`현재 필터 목록에서 이전 인스턴스를 선택합니다.`},shortcutToggleInstanceSettings:{label:`인스턴스 설정`,scope:`단축키`,description:`설정 패널을 열거나 닫습니다. 미리보기 iframe 안에서는 작동하지 않습니다.`},shortcutNextInstance:{label:`다음 인스턴스`,scope:`단축키`,description:`현재 필터 목록에서 다음 인스턴스를 선택합니다.`},shortcutResetSidebarWidth:{label:`사이드바 폭 리셋`,scope:`단축키`,description:`기본 300으로 되돌리고 'jaw.sidebarWidth' 키를 지운다.`},shortcutJumpInstance:{label:`인스턴스 점프`,scope:`단축키`,description:`렌더된 사이드바 행 1–9로 이동합니다. Meta+1–3는 탭 전환에 남아 있어 Alt를 씁니다.`},shortcutToggleBottomPanel:{label:`하단 패널`,scope:`단축키`,description:`하단 패널(터미널·활동)을 열거나 닫습니다.`},shortcutToggleRightPanel:{label:`오른쪽 사이드바`,scope:`단축키`,description:`오른쪽 패널을 열거나 닫고, 비어 있으면 파일 패널을 만듭니다.`},shortcutToggleLeftSidebar:{label:`왼쪽 사이드바`,scope:`단축키`,description:`왼쪽 인스턴스 사이드바를 접거나 펼칩니다.`},shortcutFocusTerminal:{label:`터미널 표시`,scope:`단축키`,description:`하단 터미널 탭을 열고 활성 터미널에 포커스합니다.`},shortcutNewTerminalSession:{label:`새 터미널 세션`,scope:`단축키`,description:`터미널 탭을 열고 새 셸 세션을 시작합니다.`},shortcutNewCodeSession:{label:`새 Code 세션`,scope:`단축키`,description:`Code 모드 사이드바에서 새 세션 초안을 시작합니다.`},shortcutTerminalNewTab:{label:`새 터미널 탭`,scope:`단축키`,description:`새 터미널 세션을 엽니다.`},shortcutTerminalClear:{label:`터미널 지우기`,scope:`단축키`,description:`포커스된 터미널 버퍼를 지웁니다.`},shortcutOpenDiff:{label:`Diff 패널`,scope:`단축키`,description:`오른쪽 diff 패널을 열거나 포커스합니다.`},shortcutOpenFolderTree:{label:`폴더 패널`,scope:`단축키`,description:`오른쪽 파일 트리 패널을 열거나 포커스합니다.`},shortcutCloseFocusedTab:{label:`포커스된 탭 닫기`,scope:`단축키`,description:`브라우저, 터미널, 패널 중 포커스된 탭을 닫습니다.`},shortcutSwitchTab1:{label:`Overview 탭`,scope:`단축키`,description:`인스턴스 Overview 탭으로 전환합니다.`},shortcutSwitchTab2:{label:`Preview 탭`,scope:`단축키`,description:`인스턴스 Preview 탭으로 전환합니다.`},shortcutSwitchTab3:{label:`Logs 탭`,scope:`단축키`,description:`인스턴스 Logs 탭으로 전환합니다.`},shortcutPreviousTab:{label:`이전 탭`,scope:`단축키`,description:`이전 인스턴스 상세 탭으로 전환합니다.`},shortcutNextTab:{label:`다음 탭`,scope:`단축키`,description:`다음 인스턴스 상세 탭으로 전환합니다.`},shortcutBrowserReload:{label:`새로고침`,scope:`단축키`,description:`포커스 위치에 따라 브라우저, 프리뷰, 앱 창을 새로고침합니다.`},shortcutBrowserHardReload:{label:`강력 새로고침`,scope:`단축키`,description:`캐시를 무시하고 다시 로드합니다.`},shortcutBrowserFocusUrl:{label:`URL 바 포커스`,scope:`단축키`,description:`브라우저 패널의 주소창에 포커스합니다.`},shortcutBrowserBack:{label:`브라우저 뒤로`,scope:`단축키`,description:`브라우저 패널에서 이전 페이지로 이동합니다.`},shortcutBrowserForward:{label:`브라우저 앞으로`,scope:`단축키`,description:`브라우저 패널에서 다음 페이지로 이동합니다.`}},support:{ariaLabel:`작업 제목 출처 준비 상태`,ready:`준비됨`,legacy:`레거시 endpoint`,offline:`오프라인`,empty:`현재 표시할 인스턴스가 없습니다.`,restart:`최근 작업 제목을 사용하려면 레거시 인스턴스를 재시작하세요.`}},en:{ariaLabel:`Dashboard settings`,eyebrow:`Manager preferences`,title:`Dashboard settings`,displayTitle:`Instance list display`,displayDescription:`These controls only affect the left instance list and saved manager UI preferences.`,activityTitle:`Preview & activity`,activityDescription:`Latest activity titles depend on each instance server endpoint version.`,embeddingTitle:`Embedding search`,embeddingDescription:`Configure a vector embedding provider and manage the memory index.`,fields:{activity:{label:`Recent activity preview`,scope:`Left instance list`,description:`Show one cleaned line from the latest user or assistant message when the instance supports the summary endpoint.`},rename:{label:`Rename control`,scope:`Left instance list`,description:`Show the pencil button for editing the dashboard-only instance label.`},runtime:{label:`Runtime line`,scope:`Left instance list`,description:`Show CLI and model text, for example codex / gpt-5.5, under each instance label.`},actions:{label:`Expanded row actions`,scope:`Selected instance row`,description:`Show Preview, Open, Start, Stop, and Restart buttons on the selected instance row.`},language:{label:`Language`,scope:`Global Jaw UI`,description:`Sets the saved manager dashboard locale for i18n-aware surfaces.`},shortcuts:{label:`Global shortcuts`,scope:`Manager dashboard`,description:`Enable Manager navigation shortcuts outside inputs and editors. Meta means ⌘ on macOS and Ctrl on Windows/Linux; write Win for the Windows key.`},shortcutFocusInstances:{label:`Instance list`,scope:`Shortcut`,description:`Move to the Instances workspace.`},shortcutFocusActiveSession:{label:`Active session`,scope:`Shortcut`,description:`Move to the selected instance Preview tab.`},shortcutFocusNotes:{label:`Notes`,scope:`Shortcut`,description:`Move to the Notes workspace.`},shortcutPreviousInstance:{label:`Previous instance`,scope:`Shortcut`,description:`Select the previous instance in the current filtered list.`},shortcutToggleInstanceSettings:{label:`Instance settings`,scope:`Shortcut`,description:`Open or close the settings panel in the Manager document; unavailable inside the preview iframe.`},shortcutNextInstance:{label:`Next instance`,scope:`Shortcut`,description:`Select the next instance in the current filtered list.`},shortcutResetSidebarWidth:{label:`Reset sidebar width`,scope:`Shortcut`,description:`Restore the default 300px width and delete the 'jaw.sidebarWidth' key.`},shortcutJumpInstance:{label:`Jump to instance`,scope:`Shortcut`,description:`Jump to rendered sidebar rows 1–9. Meta+1–3 stay on tab switching, so these use Alt.`},shortcutToggleBottomPanel:{label:`Bottom panel`,scope:`Shortcut`,description:`Open or close the bottom panel (terminal and activity).`},shortcutToggleRightPanel:{label:`Right sidebar`,scope:`Shortcut`,description:`Open or close the right panel; creates a files panel when empty.`},shortcutToggleLeftSidebar:{label:`Left sidebar`,scope:`Shortcut`,description:`Collapse or expand the left instance sidebar.`},shortcutFocusTerminal:{label:`Reveal terminal`,scope:`Shortcut`,description:`Open the bottom terminal tab and focus the active terminal.`},shortcutNewTerminalSession:{label:`New terminal session`,scope:`Shortcut`,description:`Open the terminal tab and start a new shell session.`},shortcutNewCodeSession:{label:`New Code session`,scope:`Shortcut`,description:`Start a new session draft in Code mode.`},shortcutTerminalNewTab:{label:`New terminal tab`,scope:`Shortcut`,description:`Open a new terminal session.`},shortcutTerminalClear:{label:`Clear terminal`,scope:`Shortcut`,description:`Clear the focused terminal buffer.`},shortcutOpenDiff:{label:`Diff panel`,scope:`Shortcut`,description:`Open or focus the right diff panel.`},shortcutOpenFolderTree:{label:`Folder panel`,scope:`Shortcut`,description:`Open or focus the right file tree panel.`},shortcutCloseFocusedTab:{label:`Close focused tab`,scope:`Shortcut`,description:`Close the focused browser, terminal, or panel tab.`},shortcutSwitchTab1:{label:`Overview tab`,scope:`Shortcut`,description:`Switch to the instance Overview tab.`},shortcutSwitchTab2:{label:`Preview tab`,scope:`Shortcut`,description:`Switch to the instance Preview tab.`},shortcutSwitchTab3:{label:`Logs tab`,scope:`Shortcut`,description:`Switch to the instance Logs tab.`},shortcutPreviousTab:{label:`Previous tab`,scope:`Shortcut`,description:`Switch to the previous instance detail tab.`},shortcutNextTab:{label:`Next tab`,scope:`Shortcut`,description:`Switch to the next instance detail tab.`},shortcutBrowserReload:{label:`Reload`,scope:`Shortcut`,description:`Reload the browser, preview, or app window depending on focus.`},shortcutBrowserHardReload:{label:`Hard reload`,scope:`Shortcut`,description:`Reload bypassing the cache.`},shortcutBrowserFocusUrl:{label:`Focus URL bar`,scope:`Shortcut`,description:`Focus the address field in the browser panel.`},shortcutBrowserBack:{label:`Browser back`,scope:`Shortcut`,description:`Navigate back in the browser panel.`},shortcutBrowserForward:{label:`Browser forward`,scope:`Shortcut`,description:`Navigate forward in the browser panel.`}},support:{ariaLabel:`Activity title source readiness`,ready:`Ready`,legacy:`Legacy endpoint`,offline:`Offline`,empty:`No instances are currently visible.`,restart:`Restart legacy instances to enable latest activity titles.`}},zh:{ariaLabel:`仪表盘设置`,eyebrow:`管理器偏好`,title:`仪表盘设置`,displayTitle:`实例列表显示`,displayDescription:`这些设置只影响左侧实例列表与已保存的管理器界面偏好。`,activityTitle:`预览与活动`,activityDescription:`最近活动标题取决于各实例服务器的 endpoint 版本。`,embeddingTitle:`嵌入搜索`,embeddingDescription:`向量嵌入 Provider 设置与内存索引管理。`,fields:{activity:{label:`最近活动预览`,scope:`左侧实例列表`,description:`当实例支持摘要 endpoint 时,显示最近一条 user 或 assistant 消息整理后的单行内容。`},rename:{label:`重命名控件`,scope:`左侧实例列表`,description:`显示用于编辑仪表盘内实例标签的铅笔按钮。`},runtime:{label:`运行时信息行`,scope:`左侧实例列表`,description:`在每个实例标签下方显示 CLI 与模型信息,例如 codex / gpt-5.5。`},actions:{label:`展开行操作`,scope:`已选中的实例行`,description:`在已选中的实例行上显示 Preview、Open、Start、Stop、Restart 按钮。`},language:{label:`语言`,scope:`整个 Jaw 界面`,description:`为支持 i18n 的管理器仪表盘界面设置已保存的语言。`},shortcuts:{label:`全局快捷键`,scope:`Manager dashboard`,description:`在输入框和编辑器外启用 Manager 导航快捷键。Meta 在 macOS 上是 ⌘,在 Windows/Linux 上是 Ctrl;Windows 键请写作 Win。`},shortcutFocusInstances:{label:`实例列表`,scope:`快捷键`,description:`切换到 Instances 工作区。`},shortcutFocusActiveSession:{label:`活动会话`,scope:`快捷键`,description:`切换到已选实例的 Preview 标签。`},shortcutFocusNotes:{label:`Notes`,scope:`快捷键`,description:`切换到 Notes 工作区。`},shortcutPreviousInstance:{label:`上一个实例`,scope:`快捷键`,description:`选择当前筛选列表中的上一个实例。`},shortcutToggleInstanceSettings:{label:`实例设置`,scope:`快捷键`,description:`打开或关闭设置面板;在预览 iframe 内不可用。`},shortcutNextInstance:{label:`下一个实例`,scope:`快捷键`,description:`选择当前筛选列表中的下一个实例。`},shortcutResetSidebarWidth:{label:`重置侧边栏宽度`,scope:`快捷键`,description:`恢复默认 300px 宽度并删除 'jaw.sidebarWidth' 键。`},shortcutJumpInstance:{label:`跳转到实例`,scope:`快捷键`,description:`跳转到已渲染的侧边栏第 1–9 行。Meta+1–3 仍用于切换标签,因此这里使用 Alt。`},shortcutToggleBottomPanel:{label:`底部面板`,scope:`快捷键`,description:`打开或关闭底部面板(终端与活动)。`},shortcutToggleRightPanel:{label:`右侧栏`,scope:`快捷键`,description:`打开或关闭右侧面板;为空时创建文件面板。`},shortcutToggleLeftSidebar:{label:`左侧栏`,scope:`快捷键`,description:`折叠或展开左侧实例侧栏。`},shortcutFocusTerminal:{label:`显示终端`,scope:`快捷键`,description:`打开底部终端标签并聚焦活动终端。`},shortcutNewTerminalSession:{label:`新终端会话`,scope:`快捷键`,description:`打开终端标签并启动新的 Shell 会话。`},shortcutNewCodeSession:{label:`新 Code 会话`,scope:`快捷键`,description:`在 Code 模式侧边栏中开始新的会话草稿。`},shortcutTerminalNewTab:{label:`新终端标签`,scope:`快捷键`,description:`打开新的终端会话。`},shortcutTerminalClear:{label:`清空终端`,scope:`快捷键`,description:`清空当前聚焦的终端缓冲区。`},shortcutOpenDiff:{label:`Diff 面板`,scope:`快捷键`,description:`打开或聚焦右侧 diff 面板。`},shortcutOpenFolderTree:{label:`文件夹面板`,scope:`快捷键`,description:`打开或聚焦右侧文件树面板。`},shortcutCloseFocusedTab:{label:`关闭焦点标签`,scope:`快捷键`,description:`关闭当前聚焦的浏览器、终端或面板标签。`},shortcutSwitchTab1:{label:`Overview 标签`,scope:`快捷键`,description:`切换到实例 Overview 标签。`},shortcutSwitchTab2:{label:`Preview 标签`,scope:`快捷键`,description:`切换到实例 Preview 标签。`},shortcutSwitchTab3:{label:`Logs 标签`,scope:`快捷键`,description:`切换到实例 Logs 标签。`},shortcutPreviousTab:{label:`上一个标签`,scope:`快捷键`,description:`切换到上一个实例详情标签。`},shortcutNextTab:{label:`下一个标签`,scope:`快捷键`,description:`切换到下一个实例详情标签。`},shortcutBrowserReload:{label:`重新加载`,scope:`快捷键`,description:`根据焦点位置重新加载浏览器、预览或应用窗口。`},shortcutBrowserHardReload:{label:`强制重新加载`,scope:`快捷键`,description:`忽略缓存重新加载。`},shortcutBrowserFocusUrl:{label:`聚焦 URL 栏`,scope:`快捷键`,description:`聚焦浏览器面板的地址栏。`},shortcutBrowserBack:{label:`浏览器后退`,scope:`快捷键`,description:`在浏览器面板中后退一页。`},shortcutBrowserForward:{label:`浏览器前进`,scope:`快捷键`,description:`在浏览器面板中前进一页。`}},support:{ariaLabel:`活动标题来源就绪状态`,ready:`就绪`,legacy:`旧版 endpoint`,offline:`离线`,empty:`当前没有可显示的实例。`,restart:`请重启旧版实例以启用最近活动标题。`}},ja:{ariaLabel:`ダッシュボード設定`,eyebrow:`マネージャー環境設定`,title:`ダッシュボード設定`,displayTitle:`インスタンス一覧の表示`,displayDescription:`これらの設定は左側のインスタンス一覧と保存済みのマネージャー UI 設定にのみ反映されます。`,activityTitle:`プレビューとアクティビティ`,activityDescription:`最近のアクティビティタイトルは各インスタンスサーバーの endpoint バージョンによって変わります。`,embeddingTitle:`エンベディング検索`,embeddingDescription:`ベクトルエンベディング Provider の設定とメモリインデックスの管理。`,fields:{activity:{label:`最近のアクティビティのプレビュー`,scope:`左側のインスタンス一覧`,description:`サマリ endpoint をサポートするインスタンスでは、直近の user または assistant メッセージを整形した 1 行を表示します。`},rename:{label:`名前変更コントロール`,scope:`左側のインスタンス一覧`,description:`ダッシュボード専用のインスタンス表示名を編集する鉛筆ボタンを表示します。`},runtime:{label:`ランタイム行`,scope:`左側のインスタンス一覧`,description:`各インスタンス名の下に codex / gpt-5.5 のような CLI とモデル情報を表示します。`},actions:{label:`展開行アクション`,scope:`選択中のインスタンス行`,description:`選択中のインスタンス行に Preview、Open、Start、Stop、Restart のボタンを表示します。`},language:{label:`言語`,scope:`Jaw UI 全体`,description:`i18n 対応のマネージャーダッシュボード画面で使用する言語を保存します。`},shortcuts:{label:`グローバルショートカット`,scope:`Manager dashboard`,description:`入力欄とエディタ外で Manager ナビゲーションショートカットを有効にします。Meta は macOS では ⌘、Windows/Linux では Ctrl です。Windows キーは Win と書きます。`},shortcutFocusInstances:{label:`インスタンス一覧`,scope:`ショートカット`,description:`Instances ワークスペースへ移動します。`},shortcutFocusActiveSession:{label:`アクティブセッション`,scope:`ショートカット`,description:`選択中インスタンスの Preview タブへ移動します。`},shortcutFocusNotes:{label:`Notes`,scope:`ショートカット`,description:`Notes ワークスペースへ移動します。`},shortcutPreviousInstance:{label:`前のインスタンス`,scope:`ショートカット`,description:`現在のフィルタ一覧で前のインスタンスを選択します。`},shortcutToggleInstanceSettings:{label:`インスタンス設定`,scope:`ショートカット`,description:`設定パネルを開閉します。プレビュー iframe 内では使えません。`},shortcutNextInstance:{label:`次のインスタンス`,scope:`ショートカット`,description:`現在のフィルタ一覧で次のインスタンスを選択します。`},shortcutResetSidebarWidth:{label:`サイドバー幅をリセット`,scope:`ショートカット`,description:`既定の 300px に戻し、'jaw.sidebarWidth' キーを削除します。`},shortcutJumpInstance:{label:`インスタンスへジャンプ`,scope:`ショートカット`,description:`描画済みサイドバー行 1–9 へ移動します。Meta+1–3 はタブ切替のままなので Alt を使います。`},shortcutToggleBottomPanel:{label:`ボトムパネル`,scope:`ショートカット`,description:`ボトムパネル(ターミナル・アクティビティ)を開閉します。`},shortcutToggleRightPanel:{label:`右サイドバー`,scope:`ショートカット`,description:`右パネルを開閉し、空の場合はファイルパネルを作成します。`},shortcutToggleLeftSidebar:{label:`左サイドバー`,scope:`ショートカット`,description:`左のインスタンスサイドバーを折りたたみ/展開します。`},shortcutFocusTerminal:{label:`ターミナルを表示`,scope:`ショートカット`,description:`ボトムのターミナルタブを開き、アクティブなターミナルにフォーカスします。`},shortcutNewTerminalSession:{label:`新しいターミナルセッション`,scope:`ショートカット`,description:`ターミナルタブを開き、新しいシェルセッションを開始します。`},shortcutNewCodeSession:{label:`新しい Code セッション`,scope:`ショートカット`,description:`Code モードのサイドバーで新しいセッションの下書きを開始します。`},shortcutTerminalNewTab:{label:`新しいターミナルタブ`,scope:`ショートカット`,description:`新しいターミナルセッションを開きます。`},shortcutTerminalClear:{label:`ターミナルをクリア`,scope:`ショートカット`,description:`フォーカス中のターミナルバッファをクリアします。`},shortcutOpenDiff:{label:`Diff パネル`,scope:`ショートカット`,description:`右の diff パネルを開くかフォーカスします。`},shortcutOpenFolderTree:{label:`フォルダーパネル`,scope:`ショートカット`,description:`右のファイルツリーパネルを開くかフォーカスします。`},shortcutCloseFocusedTab:{label:`フォーカス中のタブを閉じる`,scope:`ショートカット`,description:`フォーカスされているブラウザ、ターミナル、パネルのタブを閉じます。`},shortcutSwitchTab1:{label:`Overview タブ`,scope:`ショートカット`,description:`インスタンスの Overview タブに切り替えます。`},shortcutSwitchTab2:{label:`Preview タブ`,scope:`ショートカット`,description:`インスタンスの Preview タブに切り替えます。`},shortcutSwitchTab3:{label:`Logs タブ`,scope:`ショートカット`,description:`インスタンスの Logs タブに切り替えます。`},shortcutPreviousTab:{label:`前のタブ`,scope:`ショートカット`,description:`前のインスタンス詳細タブに切り替えます。`},shortcutNextTab:{label:`次のタブ`,scope:`ショートカット`,description:`次のインスタンス詳細タブに切り替えます。`},shortcutBrowserReload:{label:`再読み込み`,scope:`ショートカット`,description:`フォーカス位置に応じてブラウザ、プレビュー、アプリウィンドウを再読み込みします。`},shortcutBrowserHardReload:{label:`強制再読み込み`,scope:`ショートカット`,description:`キャッシュを無視して再読み込みします。`},shortcutBrowserFocusUrl:{label:`URL バーにフォーカス`,scope:`ショートカット`,description:`ブラウザパネルのアドレスバーにフォーカスします。`},shortcutBrowserBack:{label:`ブラウザの戻る`,scope:`ショートカット`,description:`ブラウザパネルで前のページに戻ります。`},shortcutBrowserForward:{label:`ブラウザの進む`,scope:`ショートカット`,description:`ブラウザパネルで次のページに進みます。`}},support:{ariaLabel:`アクティビティタイトル取得元の準備状態`,ready:`準備完了`,legacy:`旧 endpoint`,offline:`オフライン`,empty:`現在表示できるインスタンスはありません。`,restart:`最新のアクティビティタイトルを使うには、旧バージョンのインスタンスを再起動してください。`}}};function c(e){return(0,i.jsxs)(`label`,{className:`settings-field`,htmlFor:e.id,children:[(0,i.jsx)(`span`,{className:`settings-field-label`,children:e.label}),e.children,(0,i.jsxs)(`span`,{className:`settings-field-description`,children:[(0,i.jsx)(`span`,{className:`dashboard-settings-row-scope`,children:e.scope}),` `,e.description]})]})}function l(e){return(0,i.jsx)(c,{id:e.id,label:e.label,scope:e.scope,description:e.description,children:(0,i.jsx)(`input`,{id:e.id,type:`checkbox`,checked:e.value,onChange:t=>e.onChange(t.currentTarget.checked)})})}function u(e){return(0,i.jsx)(c,{id:e.id,label:e.label,scope:e.scope,description:e.description,children:(0,i.jsx)(`select`,{id:e.id,value:e.value,onChange:t=>e.onChange(o(t.currentTarget.value)),children:e.options.map(e=>(0,i.jsx)(`option`,{value:e.value,children:e.label},e.value))})})}function d(e){return(0,i.jsx)(c,{id:`dashboard-shortcut-${e.action}`,label:e.label,scope:e.scope,description:e.description,children:(0,i.jsx)(`input`,{id:`dashboard-shortcut-${e.action}`,type:`text`,className:`dashboard-settings-shortcut-input`,value:e.value,"aria-label":`${e.label} shortcut`,placeholder:`Alt+I`,onChange:t=>e.onChange(e.action,t.currentTarget.value)})})}var f={toggleInstanceSettings:`shortcutToggleInstanceSettings`,focusInstances:`shortcutFocusInstances`,focusActiveSession:`shortcutFocusActiveSession`,focusNotes:`shortcutFocusNotes`,previousInstance:`shortcutPreviousInstance`,nextInstance:`shortcutNextInstance`,toggleBottomPanel:`shortcutToggleBottomPanel`,toggleRightPanel:`shortcutToggleRightPanel`,toggleLeftSidebar:`shortcutToggleLeftSidebar`,focusTerminal:`shortcutFocusTerminal`,newTerminalSession:`shortcutNewTerminalSession`,newCodeSession:`shortcutNewCodeSession`,terminalNewTab:`shortcutTerminalNewTab`,terminalClear:`shortcutTerminalClear`,openDiff:`shortcutOpenDiff`,openFolderTree:`shortcutOpenFolderTree`,closeFocusedTab:`shortcutCloseFocusedTab`,switchTab1:`shortcutSwitchTab1`,switchTab2:`shortcutSwitchTab2`,switchTab3:`shortcutSwitchTab3`,previousTab:`shortcutPreviousTab`,nextTab:`shortcutNextTab`,browserReload:`shortcutBrowserReload`,browserHardReload:`shortcutBrowserHardReload`,browserFocusUrl:`shortcutBrowserFocusUrl`,browserBack:`shortcutBrowserBack`,browserForward:`shortcutBrowserForward`,resetSidebarWidth:`shortcutResetSidebarWidth`,jumpInstance1:`shortcutJumpInstance`,jumpInstance2:`shortcutJumpInstance`,jumpInstance3:`shortcutJumpInstance`,jumpInstance4:`shortcutJumpInstance`,jumpInstance5:`shortcutJumpInstance`,jumpInstance6:`shortcutJumpInstance`,jumpInstance7:`shortcutJumpInstance`,jumpInstance8:`shortcutJumpInstance`,jumpInstance9:`shortcutJumpInstance`};function p(e){return f[e]}function m({support:e,locale:a}){let o=e.ready+e.legacy+e.offline,c=s[a].support;return(0,i.jsxs)(`div`,{role:`group`,"aria-label":c.ariaLabel,children:[(0,i.jsx)(t,{items:[{label:c.ready,value:(0,i.jsx)(n,{tone:`ok`,children:e.ready})},{label:c.legacy,value:(0,i.jsx)(n,{tone:`warn`,children:e.legacy})},{label:c.offline,value:(0,i.jsx)(n,{tone:`neutral`,children:e.offline})}]}),(0,i.jsx)(r,{children:o===0?c.empty:c.restart})]})}export{a,p as c,d as i,u as n,m as o,l as r,o as s,s as t};
1
+ import{t as e}from"./jsx-runtime-CkEUZM6i.js";import{a as t,l as n,o as r}from"./page-shell-Cz2ylri8.js";var i=e(),a=[{value:`ko`,label:`한국어 (ko)`},{value:`en`,label:`English (en)`},{value:`zh`,label:`中文 (zh)`},{value:`ja`,label:`日本語 (ja)`}];function o(e){return a.find(t=>t.value===e)?.value??`ko`}var s={ko:{ariaLabel:`대시보드 설정`,eyebrow:`매니저 환경설정`,title:`대시보드 설정`,displayTitle:`인스턴스 목록 표시`,displayDescription:`이 설정은 왼쪽 인스턴스 목록과 저장된 매니저 UI 환경설정에만 적용됩니다.`,activityTitle:`미리보기와 활동`,activityDescription:`최근 작업 제목은 각 인스턴스 서버의 endpoint 버전에 따라 달라집니다.`,embeddingTitle:`임베딩 검색`,embeddingDescription:`벡터 임베딩 provider를 설정하고 메모리 인덱스를 관리합니다.`,fields:{activity:{label:`최근 작업 미리보기`,scope:`왼쪽 인스턴스 목록`,description:`요약 endpoint를 지원하는 인스턴스에서 최신 user 또는 assistant 메시지를 정리한 한 줄을 표시합니다.`},rename:{label:`이름 변경 컨트롤`,scope:`왼쪽 인스턴스 목록`,description:`대시보드 전용 인스턴스 이름을 편집하는 연필 버튼을 표시합니다.`},runtime:{label:`런타임 줄`,scope:`왼쪽 인스턴스 목록`,description:`각 인스턴스 이름 아래에 codex / gpt-5.5 같은 CLI와 모델 정보를 표시합니다.`},actions:{label:`확장 행 액션`,scope:`선택된 인스턴스 행`,description:`선택된 인스턴스 행에 Preview, Open, Start, Stop, Restart 버튼을 표시합니다.`},language:{label:`언어`,scope:`전체 Jaw UI`,description:`i18n을 지원하는 매니저 대시보드 화면에 사용할 언어를 저장합니다.`},shortcuts:{label:`전역 단축키`,scope:`Manager dashboard`,description:`입력창과 에디터 바깥에서만 작동하는 Manager 이동 단축키를 켭니다. Meta는 macOS에서 ⌘, Windows·Linux에서 Ctrl이고, Windows 키는 Win으로 적습니다.`},shortcutFocusInstances:{label:`인스턴스 목록`,scope:`단축키`,description:`Instances workspace로 이동합니다.`},shortcutFocusActiveSession:{label:`활성 세션`,scope:`단축키`,description:`선택된 인스턴스의 Preview 탭으로 이동합니다.`},shortcutFocusNotes:{label:`노트`,scope:`단축키`,description:`Notes workspace로 이동합니다.`},shortcutPreviousInstance:{label:`이전 인스턴스`,scope:`단축키`,description:`현재 필터 목록에서 이전 인스턴스를 선택합니다.`},shortcutToggleInstanceSettings:{label:`인스턴스 설정`,scope:`단축키`,description:`설정 패널을 열거나 닫습니다. 미리보기 iframe 안에서는 작동하지 않습니다.`},shortcutNextInstance:{label:`다음 인스턴스`,scope:`단축키`,description:`현재 필터 목록에서 다음 인스턴스를 선택합니다.`},shortcutResetSidebarWidth:{label:`사이드바 폭 리셋`,scope:`단축키`,description:`기본 300으로 되돌리고 'jaw.sidebarWidth' 키를 지운다.`},shortcutJumpInstance:{label:`인스턴스 점프`,scope:`단축키`,description:`렌더된 사이드바 행 1–9로 이동합니다. Meta+1–3는 탭 전환에 남아 있어 Alt를 씁니다.`},shortcutToggleBottomPanel:{label:`하단 패널`,scope:`단축키`,description:`하단 패널(터미널·활동)을 열거나 닫습니다.`},shortcutToggleRightPanel:{label:`오른쪽 사이드바`,scope:`단축키`,description:`오른쪽 패널을 열거나 닫고, 비어 있으면 파일 패널을 만듭니다.`},shortcutToggleLeftSidebar:{label:`왼쪽 사이드바`,scope:`단축키`,description:`왼쪽 인스턴스 사이드바를 접거나 펼칩니다.`},shortcutFocusTerminal:{label:`터미널 표시`,scope:`단축키`,description:`하단 터미널 탭을 열고 활성 터미널에 포커스합니다.`},shortcutNewTerminalSession:{label:`새 터미널 세션`,scope:`단축키`,description:`터미널 탭을 열고 새 셸 세션을 시작합니다.`},shortcutNewCodeSession:{label:`새 Code 세션`,scope:`단축키`,description:`Code 모드 사이드바에서 새 세션 초안을 시작합니다.`},shortcutTerminalNewTab:{label:`새 터미널 탭`,scope:`단축키`,description:`새 터미널 세션을 엽니다.`},shortcutTerminalClear:{label:`터미널 지우기`,scope:`단축키`,description:`포커스된 터미널 버퍼를 지웁니다.`},shortcutOpenDiff:{label:`Diff 패널`,scope:`단축키`,description:`오른쪽 diff 패널을 열거나 포커스합니다.`},shortcutOpenFolderTree:{label:`폴더 패널`,scope:`단축키`,description:`오른쪽 파일 트리 패널을 열거나 포커스합니다.`},shortcutCloseFocusedTab:{label:`포커스된 탭 닫기`,scope:`단축키`,description:`브라우저, 터미널, 패널 중 포커스된 탭을 닫습니다.`},shortcutSwitchTab1:{label:`Overview 탭`,scope:`단축키`,description:`인스턴스 Overview 탭으로 전환합니다.`},shortcutSwitchTab2:{label:`Preview 탭`,scope:`단축키`,description:`인스턴스 Preview 탭으로 전환합니다.`},shortcutSwitchTab3:{label:`Logs 탭`,scope:`단축키`,description:`인스턴스 Logs 탭으로 전환합니다.`},shortcutPreviousTab:{label:`이전 탭`,scope:`단축키`,description:`이전 인스턴스 상세 탭으로 전환합니다.`},shortcutNextTab:{label:`다음 탭`,scope:`단축키`,description:`다음 인스턴스 상세 탭으로 전환합니다.`},shortcutBrowserReload:{label:`새로고침`,scope:`단축키`,description:`포커스 위치에 따라 브라우저, 프리뷰, 앱 창을 새로고침합니다.`},shortcutBrowserHardReload:{label:`강력 새로고침`,scope:`단축키`,description:`캐시를 무시하고 다시 로드합니다.`},shortcutBrowserFocusUrl:{label:`URL 바 포커스`,scope:`단축키`,description:`브라우저 패널의 주소창에 포커스합니다.`},shortcutBrowserBack:{label:`브라우저 뒤로`,scope:`단축키`,description:`브라우저 패널에서 이전 페이지로 이동합니다.`},shortcutBrowserForward:{label:`브라우저 앞으로`,scope:`단축키`,description:`브라우저 패널에서 다음 페이지로 이동합니다.`}},support:{ariaLabel:`작업 제목 출처 준비 상태`,ready:`준비됨`,legacy:`레거시 endpoint`,offline:`오프라인`,empty:`현재 표시할 인스턴스가 없습니다.`,restart:`최근 작업 제목을 사용하려면 레거시 인스턴스를 재시작하세요.`}},en:{ariaLabel:`Dashboard settings`,eyebrow:`Manager preferences`,title:`Dashboard settings`,displayTitle:`Instance list display`,displayDescription:`These controls only affect the left instance list and saved manager UI preferences.`,activityTitle:`Preview & activity`,activityDescription:`Latest activity titles depend on each instance server endpoint version.`,embeddingTitle:`Embedding search`,embeddingDescription:`Configure a vector embedding provider and manage the memory index.`,fields:{activity:{label:`Recent activity preview`,scope:`Left instance list`,description:`Show one cleaned line from the latest user or assistant message when the instance supports the summary endpoint.`},rename:{label:`Rename control`,scope:`Left instance list`,description:`Show the pencil button for editing the dashboard-only instance label.`},runtime:{label:`Runtime line`,scope:`Left instance list`,description:`Show CLI and model text, for example codex / gpt-5.5, under each instance label.`},actions:{label:`Expanded row actions`,scope:`Selected instance row`,description:`Show Preview, Open, Start, Stop, and Restart buttons on the selected instance row.`},language:{label:`Language`,scope:`Global Jaw UI`,description:`Sets the saved manager dashboard locale for i18n-aware surfaces.`},shortcuts:{label:`Global shortcuts`,scope:`Manager dashboard`,description:`Enable Manager navigation shortcuts outside inputs and editors. Meta means ⌘ on macOS and Ctrl on Windows/Linux; write Win for the Windows key.`},shortcutFocusInstances:{label:`Instance list`,scope:`Shortcut`,description:`Move to the Instances workspace.`},shortcutFocusActiveSession:{label:`Active session`,scope:`Shortcut`,description:`Move to the selected instance Preview tab.`},shortcutFocusNotes:{label:`Notes`,scope:`Shortcut`,description:`Move to the Notes workspace.`},shortcutPreviousInstance:{label:`Previous instance`,scope:`Shortcut`,description:`Select the previous instance in the current filtered list.`},shortcutToggleInstanceSettings:{label:`Instance settings`,scope:`Shortcut`,description:`Open or close the settings panel in the Manager document; unavailable inside the preview iframe.`},shortcutNextInstance:{label:`Next instance`,scope:`Shortcut`,description:`Select the next instance in the current filtered list.`},shortcutResetSidebarWidth:{label:`Reset sidebar width`,scope:`Shortcut`,description:`Restore the default 300px width and delete the 'jaw.sidebarWidth' key.`},shortcutJumpInstance:{label:`Jump to instance`,scope:`Shortcut`,description:`Jump to rendered sidebar rows 1–9. Meta+1–3 stay on tab switching, so these use Alt.`},shortcutToggleBottomPanel:{label:`Bottom panel`,scope:`Shortcut`,description:`Open or close the bottom panel (terminal and activity).`},shortcutToggleRightPanel:{label:`Right sidebar`,scope:`Shortcut`,description:`Open or close the right panel; creates a files panel when empty.`},shortcutToggleLeftSidebar:{label:`Left sidebar`,scope:`Shortcut`,description:`Collapse or expand the left instance sidebar.`},shortcutFocusTerminal:{label:`Reveal terminal`,scope:`Shortcut`,description:`Open the bottom terminal tab and focus the active terminal.`},shortcutNewTerminalSession:{label:`New terminal session`,scope:`Shortcut`,description:`Open the terminal tab and start a new shell session.`},shortcutNewCodeSession:{label:`New Code session`,scope:`Shortcut`,description:`Start a new session draft in Code mode.`},shortcutTerminalNewTab:{label:`New terminal tab`,scope:`Shortcut`,description:`Open a new terminal session.`},shortcutTerminalClear:{label:`Clear terminal`,scope:`Shortcut`,description:`Clear the focused terminal buffer.`},shortcutOpenDiff:{label:`Diff panel`,scope:`Shortcut`,description:`Open or focus the right diff panel.`},shortcutOpenFolderTree:{label:`Folder panel`,scope:`Shortcut`,description:`Open or focus the right file tree panel.`},shortcutCloseFocusedTab:{label:`Close focused tab`,scope:`Shortcut`,description:`Close the focused browser, terminal, or panel tab.`},shortcutSwitchTab1:{label:`Overview tab`,scope:`Shortcut`,description:`Switch to the instance Overview tab.`},shortcutSwitchTab2:{label:`Preview tab`,scope:`Shortcut`,description:`Switch to the instance Preview tab.`},shortcutSwitchTab3:{label:`Logs tab`,scope:`Shortcut`,description:`Switch to the instance Logs tab.`},shortcutPreviousTab:{label:`Previous tab`,scope:`Shortcut`,description:`Switch to the previous instance detail tab.`},shortcutNextTab:{label:`Next tab`,scope:`Shortcut`,description:`Switch to the next instance detail tab.`},shortcutBrowserReload:{label:`Reload`,scope:`Shortcut`,description:`Reload the browser, preview, or app window depending on focus.`},shortcutBrowserHardReload:{label:`Hard reload`,scope:`Shortcut`,description:`Reload bypassing the cache.`},shortcutBrowserFocusUrl:{label:`Focus URL bar`,scope:`Shortcut`,description:`Focus the address field in the browser panel.`},shortcutBrowserBack:{label:`Browser back`,scope:`Shortcut`,description:`Navigate back in the browser panel.`},shortcutBrowserForward:{label:`Browser forward`,scope:`Shortcut`,description:`Navigate forward in the browser panel.`}},support:{ariaLabel:`Activity title source readiness`,ready:`Ready`,legacy:`Legacy endpoint`,offline:`Offline`,empty:`No instances are currently visible.`,restart:`Restart legacy instances to enable latest activity titles.`}},zh:{ariaLabel:`仪表盘设置`,eyebrow:`管理器偏好`,title:`仪表盘设置`,displayTitle:`实例列表显示`,displayDescription:`这些设置只影响左侧实例列表与已保存的管理器界面偏好。`,activityTitle:`预览与活动`,activityDescription:`最近活动标题取决于各实例服务器的 endpoint 版本。`,embeddingTitle:`嵌入搜索`,embeddingDescription:`向量嵌入 Provider 设置与内存索引管理。`,fields:{activity:{label:`最近活动预览`,scope:`左侧实例列表`,description:`当实例支持摘要 endpoint 时,显示最近一条 user 或 assistant 消息整理后的单行内容。`},rename:{label:`重命名控件`,scope:`左侧实例列表`,description:`显示用于编辑仪表盘内实例标签的铅笔按钮。`},runtime:{label:`运行时信息行`,scope:`左侧实例列表`,description:`在每个实例标签下方显示 CLI 与模型信息,例如 codex / gpt-5.5。`},actions:{label:`展开行操作`,scope:`已选中的实例行`,description:`在已选中的实例行上显示 Preview、Open、Start、Stop、Restart 按钮。`},language:{label:`语言`,scope:`整个 Jaw 界面`,description:`为支持 i18n 的管理器仪表盘界面设置已保存的语言。`},shortcuts:{label:`全局快捷键`,scope:`Manager dashboard`,description:`在输入框和编辑器外启用 Manager 导航快捷键。Meta 在 macOS 上是 ⌘,在 Windows/Linux 上是 Ctrl;Windows 键请写作 Win。`},shortcutFocusInstances:{label:`实例列表`,scope:`快捷键`,description:`切换到 Instances 工作区。`},shortcutFocusActiveSession:{label:`活动会话`,scope:`快捷键`,description:`切换到已选实例的 Preview 标签。`},shortcutFocusNotes:{label:`Notes`,scope:`快捷键`,description:`切换到 Notes 工作区。`},shortcutPreviousInstance:{label:`上一个实例`,scope:`快捷键`,description:`选择当前筛选列表中的上一个实例。`},shortcutToggleInstanceSettings:{label:`实例设置`,scope:`快捷键`,description:`打开或关闭设置面板;在预览 iframe 内不可用。`},shortcutNextInstance:{label:`下一个实例`,scope:`快捷键`,description:`选择当前筛选列表中的下一个实例。`},shortcutResetSidebarWidth:{label:`重置侧边栏宽度`,scope:`快捷键`,description:`恢复默认 300px 宽度并删除 'jaw.sidebarWidth' 键。`},shortcutJumpInstance:{label:`跳转到实例`,scope:`快捷键`,description:`跳转到已渲染的侧边栏第 1–9 行。Meta+1–3 仍用于切换标签,因此这里使用 Alt。`},shortcutToggleBottomPanel:{label:`底部面板`,scope:`快捷键`,description:`打开或关闭底部面板(终端与活动)。`},shortcutToggleRightPanel:{label:`右侧栏`,scope:`快捷键`,description:`打开或关闭右侧面板;为空时创建文件面板。`},shortcutToggleLeftSidebar:{label:`左侧栏`,scope:`快捷键`,description:`折叠或展开左侧实例侧栏。`},shortcutFocusTerminal:{label:`显示终端`,scope:`快捷键`,description:`打开底部终端标签并聚焦活动终端。`},shortcutNewTerminalSession:{label:`新终端会话`,scope:`快捷键`,description:`打开终端标签并启动新的 Shell 会话。`},shortcutNewCodeSession:{label:`新 Code 会话`,scope:`快捷键`,description:`在 Code 模式侧边栏中开始新的会话草稿。`},shortcutTerminalNewTab:{label:`新终端标签`,scope:`快捷键`,description:`打开新的终端会话。`},shortcutTerminalClear:{label:`清空终端`,scope:`快捷键`,description:`清空当前聚焦的终端缓冲区。`},shortcutOpenDiff:{label:`Diff 面板`,scope:`快捷键`,description:`打开或聚焦右侧 diff 面板。`},shortcutOpenFolderTree:{label:`文件夹面板`,scope:`快捷键`,description:`打开或聚焦右侧文件树面板。`},shortcutCloseFocusedTab:{label:`关闭焦点标签`,scope:`快捷键`,description:`关闭当前聚焦的浏览器、终端或面板标签。`},shortcutSwitchTab1:{label:`Overview 标签`,scope:`快捷键`,description:`切换到实例 Overview 标签。`},shortcutSwitchTab2:{label:`Preview 标签`,scope:`快捷键`,description:`切换到实例 Preview 标签。`},shortcutSwitchTab3:{label:`Logs 标签`,scope:`快捷键`,description:`切换到实例 Logs 标签。`},shortcutPreviousTab:{label:`上一个标签`,scope:`快捷键`,description:`切换到上一个实例详情标签。`},shortcutNextTab:{label:`下一个标签`,scope:`快捷键`,description:`切换到下一个实例详情标签。`},shortcutBrowserReload:{label:`重新加载`,scope:`快捷键`,description:`根据焦点位置重新加载浏览器、预览或应用窗口。`},shortcutBrowserHardReload:{label:`强制重新加载`,scope:`快捷键`,description:`忽略缓存重新加载。`},shortcutBrowserFocusUrl:{label:`聚焦 URL 栏`,scope:`快捷键`,description:`聚焦浏览器面板的地址栏。`},shortcutBrowserBack:{label:`浏览器后退`,scope:`快捷键`,description:`在浏览器面板中后退一页。`},shortcutBrowserForward:{label:`浏览器前进`,scope:`快捷键`,description:`在浏览器面板中前进一页。`}},support:{ariaLabel:`活动标题来源就绪状态`,ready:`就绪`,legacy:`旧版 endpoint`,offline:`离线`,empty:`当前没有可显示的实例。`,restart:`请重启旧版实例以启用最近活动标题。`}},ja:{ariaLabel:`ダッシュボード設定`,eyebrow:`マネージャー環境設定`,title:`ダッシュボード設定`,displayTitle:`インスタンス一覧の表示`,displayDescription:`これらの設定は左側のインスタンス一覧と保存済みのマネージャー UI 設定にのみ反映されます。`,activityTitle:`プレビューとアクティビティ`,activityDescription:`最近のアクティビティタイトルは各インスタンスサーバーの endpoint バージョンによって変わります。`,embeddingTitle:`エンベディング検索`,embeddingDescription:`ベクトルエンベディング Provider の設定とメモリインデックスの管理。`,fields:{activity:{label:`最近のアクティビティのプレビュー`,scope:`左側のインスタンス一覧`,description:`サマリ endpoint をサポートするインスタンスでは、直近の user または assistant メッセージを整形した 1 行を表示します。`},rename:{label:`名前変更コントロール`,scope:`左側のインスタンス一覧`,description:`ダッシュボード専用のインスタンス表示名を編集する鉛筆ボタンを表示します。`},runtime:{label:`ランタイム行`,scope:`左側のインスタンス一覧`,description:`各インスタンス名の下に codex / gpt-5.5 のような CLI とモデル情報を表示します。`},actions:{label:`展開行アクション`,scope:`選択中のインスタンス行`,description:`選択中のインスタンス行に Preview、Open、Start、Stop、Restart のボタンを表示します。`},language:{label:`言語`,scope:`Jaw UI 全体`,description:`i18n 対応のマネージャーダッシュボード画面で使用する言語を保存します。`},shortcuts:{label:`グローバルショートカット`,scope:`Manager dashboard`,description:`入力欄とエディタ外で Manager ナビゲーションショートカットを有効にします。Meta は macOS では ⌘、Windows/Linux では Ctrl です。Windows キーは Win と書きます。`},shortcutFocusInstances:{label:`インスタンス一覧`,scope:`ショートカット`,description:`Instances ワークスペースへ移動します。`},shortcutFocusActiveSession:{label:`アクティブセッション`,scope:`ショートカット`,description:`選択中インスタンスの Preview タブへ移動します。`},shortcutFocusNotes:{label:`Notes`,scope:`ショートカット`,description:`Notes ワークスペースへ移動します。`},shortcutPreviousInstance:{label:`前のインスタンス`,scope:`ショートカット`,description:`現在のフィルタ一覧で前のインスタンスを選択します。`},shortcutToggleInstanceSettings:{label:`インスタンス設定`,scope:`ショートカット`,description:`設定パネルを開閉します。プレビュー iframe 内では使えません。`},shortcutNextInstance:{label:`次のインスタンス`,scope:`ショートカット`,description:`現在のフィルタ一覧で次のインスタンスを選択します。`},shortcutResetSidebarWidth:{label:`サイドバー幅をリセット`,scope:`ショートカット`,description:`既定の 300px に戻し、'jaw.sidebarWidth' キーを削除します。`},shortcutJumpInstance:{label:`インスタンスへジャンプ`,scope:`ショートカット`,description:`描画済みサイドバー行 1–9 へ移動します。Meta+1–3 はタブ切替のままなので Alt を使います。`},shortcutToggleBottomPanel:{label:`ボトムパネル`,scope:`ショートカット`,description:`ボトムパネル(ターミナル・アクティビティ)を開閉します。`},shortcutToggleRightPanel:{label:`右サイドバー`,scope:`ショートカット`,description:`右パネルを開閉し、空の場合はファイルパネルを作成します。`},shortcutToggleLeftSidebar:{label:`左サイドバー`,scope:`ショートカット`,description:`左のインスタンスサイドバーを折りたたみ/展開します。`},shortcutFocusTerminal:{label:`ターミナルを表示`,scope:`ショートカット`,description:`ボトムのターミナルタブを開き、アクティブなターミナルにフォーカスします。`},shortcutNewTerminalSession:{label:`新しいターミナルセッション`,scope:`ショートカット`,description:`ターミナルタブを開き、新しいシェルセッションを開始します。`},shortcutNewCodeSession:{label:`新しい Code セッション`,scope:`ショートカット`,description:`Code モードのサイドバーで新しいセッションの下書きを開始します。`},shortcutTerminalNewTab:{label:`新しいターミナルタブ`,scope:`ショートカット`,description:`新しいターミナルセッションを開きます。`},shortcutTerminalClear:{label:`ターミナルをクリア`,scope:`ショートカット`,description:`フォーカス中のターミナルバッファをクリアします。`},shortcutOpenDiff:{label:`Diff パネル`,scope:`ショートカット`,description:`右の diff パネルを開くかフォーカスします。`},shortcutOpenFolderTree:{label:`フォルダーパネル`,scope:`ショートカット`,description:`右のファイルツリーパネルを開くかフォーカスします。`},shortcutCloseFocusedTab:{label:`フォーカス中のタブを閉じる`,scope:`ショートカット`,description:`フォーカスされているブラウザ、ターミナル、パネルのタブを閉じます。`},shortcutSwitchTab1:{label:`Overview タブ`,scope:`ショートカット`,description:`インスタンスの Overview タブに切り替えます。`},shortcutSwitchTab2:{label:`Preview タブ`,scope:`ショートカット`,description:`インスタンスの Preview タブに切り替えます。`},shortcutSwitchTab3:{label:`Logs タブ`,scope:`ショートカット`,description:`インスタンスの Logs タブに切り替えます。`},shortcutPreviousTab:{label:`前のタブ`,scope:`ショートカット`,description:`前のインスタンス詳細タブに切り替えます。`},shortcutNextTab:{label:`次のタブ`,scope:`ショートカット`,description:`次のインスタンス詳細タブに切り替えます。`},shortcutBrowserReload:{label:`再読み込み`,scope:`ショートカット`,description:`フォーカス位置に応じてブラウザ、プレビュー、アプリウィンドウを再読み込みします。`},shortcutBrowserHardReload:{label:`強制再読み込み`,scope:`ショートカット`,description:`キャッシュを無視して再読み込みします。`},shortcutBrowserFocusUrl:{label:`URL バーにフォーカス`,scope:`ショートカット`,description:`ブラウザパネルのアドレスバーにフォーカスします。`},shortcutBrowserBack:{label:`ブラウザの戻る`,scope:`ショートカット`,description:`ブラウザパネルで前のページに戻ります。`},shortcutBrowserForward:{label:`ブラウザの進む`,scope:`ショートカット`,description:`ブラウザパネルで次のページに進みます。`}},support:{ariaLabel:`アクティビティタイトル取得元の準備状態`,ready:`準備完了`,legacy:`旧 endpoint`,offline:`オフライン`,empty:`現在表示できるインスタンスはありません。`,restart:`最新のアクティビティタイトルを使うには、旧バージョンのインスタンスを再起動してください。`}}};function c(e){return(0,i.jsxs)(`label`,{className:`settings-field`,htmlFor:e.id,children:[(0,i.jsx)(`span`,{className:`settings-field-label`,children:e.label}),e.children,(0,i.jsxs)(`span`,{className:`settings-field-description`,children:[(0,i.jsx)(`span`,{className:`dashboard-settings-row-scope`,children:e.scope}),` `,e.description]})]})}function l(e){return(0,i.jsx)(c,{id:e.id,label:e.label,scope:e.scope,description:e.description,children:(0,i.jsx)(`input`,{id:e.id,type:`checkbox`,checked:e.value,onChange:t=>e.onChange(t.currentTarget.checked)})})}function u(e){return(0,i.jsx)(c,{id:e.id,label:e.label,scope:e.scope,description:e.description,children:(0,i.jsx)(`select`,{id:e.id,value:e.value,onChange:t=>e.onChange(o(t.currentTarget.value)),children:e.options.map(e=>(0,i.jsx)(`option`,{value:e.value,children:e.label},e.value))})})}function d(e){return(0,i.jsx)(c,{id:`dashboard-shortcut-${e.action}`,label:e.label,scope:e.scope,description:e.description,children:(0,i.jsx)(`input`,{id:`dashboard-shortcut-${e.action}`,type:`text`,className:`dashboard-settings-shortcut-input`,value:e.value,"aria-label":`${e.label} shortcut`,placeholder:`Alt+I`,onChange:t=>e.onChange(e.action,t.currentTarget.value)})})}var f={toggleInstanceSettings:`shortcutToggleInstanceSettings`,focusInstances:`shortcutFocusInstances`,focusActiveSession:`shortcutFocusActiveSession`,focusNotes:`shortcutFocusNotes`,previousInstance:`shortcutPreviousInstance`,nextInstance:`shortcutNextInstance`,toggleBottomPanel:`shortcutToggleBottomPanel`,toggleRightPanel:`shortcutToggleRightPanel`,toggleLeftSidebar:`shortcutToggleLeftSidebar`,focusTerminal:`shortcutFocusTerminal`,newTerminalSession:`shortcutNewTerminalSession`,newCodeSession:`shortcutNewCodeSession`,terminalNewTab:`shortcutTerminalNewTab`,terminalClear:`shortcutTerminalClear`,openDiff:`shortcutOpenDiff`,openFolderTree:`shortcutOpenFolderTree`,closeFocusedTab:`shortcutCloseFocusedTab`,switchTab1:`shortcutSwitchTab1`,switchTab2:`shortcutSwitchTab2`,switchTab3:`shortcutSwitchTab3`,previousTab:`shortcutPreviousTab`,nextTab:`shortcutNextTab`,browserReload:`shortcutBrowserReload`,browserHardReload:`shortcutBrowserHardReload`,browserFocusUrl:`shortcutBrowserFocusUrl`,browserBack:`shortcutBrowserBack`,browserForward:`shortcutBrowserForward`,resetSidebarWidth:`shortcutResetSidebarWidth`,jumpInstance1:`shortcutJumpInstance`,jumpInstance2:`shortcutJumpInstance`,jumpInstance3:`shortcutJumpInstance`,jumpInstance4:`shortcutJumpInstance`,jumpInstance5:`shortcutJumpInstance`,jumpInstance6:`shortcutJumpInstance`,jumpInstance7:`shortcutJumpInstance`,jumpInstance8:`shortcutJumpInstance`,jumpInstance9:`shortcutJumpInstance`};function p(e){return f[e]}function m({support:e,locale:a}){let o=e.ready+e.legacy+e.offline,c=s[a].support;return(0,i.jsxs)(`div`,{role:`group`,"aria-label":c.ariaLabel,children:[(0,i.jsx)(t,{items:[{label:c.ready,value:(0,i.jsx)(n,{tone:`ok`,children:e.ready})},{label:c.legacy,value:(0,i.jsx)(n,{tone:`warn`,children:e.legacy})},{label:c.offline,value:(0,i.jsx)(n,{tone:`neutral`,children:e.offline})}]}),(0,i.jsx)(r,{children:o===0?c.empty:c.restart})]})}export{a,p as c,d as i,u as n,m as o,l as r,o as s,s 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{t as e}from"./state-Dl-xxPoS.js";import{i as t,t as n}from"./api-CUtiCd2-.js";import{n as r,t as i}from"./bounded-api-DdpT93LB.js";import{t as a}from"./preload-helper-CfbQpVni.js";import{O as o,P as s,f as c,g as l,j as u,n as d}from"./render-D8dVQ_bm.js";import{t as f}from"./icons-CVkqyECl.js";import{t as p}from"./copy-text-DjgetgoZ.js";import{_ as m,g as h,p as g}from"./iframe-renderer-CcGzEi0v.js";import{A as _,C as v,D as y,E as b,F as x,H as S,I as C,M as w,N as T,O as ee,S as te,T as ne,U as E,_ as re,b as ie,d as D,f as ae,g as O,h as k,j as oe,k as se,m as ce,p as le,u as ue,v as de,w as A,x as j,y as M}from"./message-history-DSvflaZ9.js";import{n as N}from"./presentation-DWHWElFr.js";import{a as P,d as fe,f as F,i as pe,l as I,n as me,r as he,s as ge,t as _e,u as ve}from"./ui-rnVAM91F.js";var L=null,ye=0,be=[],xe=2e3,Se=3e4,Ce=1.5,we=null,Te=4e4,Ee=1e4,De=0,Oe=!1,ke=null,Ae=null;function je(e){Ae=e}function Me(){let e=null;try{e=Ae?.()??null}catch{e=null}return e?`&scope=${encodeURIComponent(e)}`:``}function Ne(){ke||=setInterval(()=>{L&&Fe&&Oe&&(Date.now()-De<=Te||(console.warn(`[sse] stalled channel (no ping in`,Te,`ms) — forcing reconnect`),L.close(),L=null,Fe=!1,Ve?.(),Ye(Pe)))},Ee)}var Pe=``,Fe=!1,Ie=!1,Le=!1,Re=!1,ze=!1,Be=null,Ve=null,He=null;function Ue(e){Be=e}function We(e){Ve=e}function Ge(e){He=e}function Ke(e,t,n){let r={topic:e,event:t,handler:n};return be.push(r),()=>{let e=be.indexOf(r);e>=0&&be.splice(e,1)}}function qe(e,t,n){for(let r of be)if((r.topic===`*`||r.topic===e)&&(r.event===null||r.event===t))try{r.handler(n)}catch(e){console.warn(`[sse] handler error:`,e.message)}}function Je(){Ie||we||(we=setTimeout(()=>{we=null,Ye(Pe)},xe),xe=Math.min(xe*Ce,Se))}function Ye(e){Pe=e,Ie=!1,we&&=(clearTimeout(we),null),L&&L.close();let t=`${n}/api/events?lang=${encodeURIComponent(e)}`+Me()+(ye?`&lastEventId=${ye}`:``);Re=!1,ze=!1,L=new EventSource(t),Ne(),L.onopen=()=>{xe=2e3,Fe=!0,Le=!0,Re=!0,De=Date.now(),Be?.()},L.onerror=()=>{if(L?.close(),L=null,!Re&&!Le&&He){ze||(ze=!0,He());return}Fe&&(Fe=!1,Ve?.()),Je()},L.onmessage=e=>{ye=parseInt(e.lastEventId||`0`,10)||ye;let t;try{t=JSON.parse(e.data)}catch{console.warn(`[sse] malformed message:`,e.data);return}if(!t||typeof t!=`object`||typeof t.topic!=`string`||typeof t.event!=`string`){console.warn(`[sse] invalid message shape:`,t);return}if(De=Date.now(),t.topic===`system`&&t.event===`ping`){Oe=!0;return}qe(t.topic,t.event,t)}}var Xe=3e3,R=new Map,z=[],Ze=(e,t)=>`${e}:${t}`;function Qe(e=[]){let t=document.getElementById(`pendingQueue`);if(t){if(z=e.slice(),!e.length){it(new Set),t.classList.remove(`visible`),t.innerHTML=``;return}t.classList.add(`visible`),t.innerHTML=`
2
+ import{t as e}from"./state-Dl-xxPoS.js";import{i as t,t as n}from"./api-CUtiCd2-.js";import{n as r,t as i}from"./bounded-api-DdpT93LB.js";import{t as a}from"./preload-helper-CfbQpVni.js";import{O as o,P as s,f as c,g as l,j as u,n as d}from"./render-F6xF6w6c.js";import{t as f}from"./icons-CVkqyECl.js";import{t as p}from"./copy-text-DjgetgoZ.js";import{_ as m,g as h,p as g}from"./iframe-renderer--lHbKTDh.js";import{A as _,C as v,D as y,E as b,F as x,H as S,I as C,M as w,N as T,O as ee,S as te,T as ne,U as E,_ as re,b as ie,d as D,f as ae,g as O,h as k,j as oe,k as se,m as ce,p as le,u as ue,v as de,w as A,x as j,y as M}from"./message-history-PAYeKmia.js";import{n as N}from"./presentation-DWHWElFr.js";import{a as P,d as fe,f as F,i as pe,l as I,n as me,r as he,s as ge,t as _e,u as ve}from"./ui-CVtGpivr.js";var L=null,ye=0,be=[],xe=2e3,Se=3e4,Ce=1.5,we=null,Te=4e4,Ee=1e4,De=0,Oe=!1,ke=null,Ae=null;function je(e){Ae=e}function Me(){let e=null;try{e=Ae?.()??null}catch{e=null}return e?`&scope=${encodeURIComponent(e)}`:``}function Ne(){ke||=setInterval(()=>{L&&Fe&&Oe&&(Date.now()-De<=Te||(console.warn(`[sse] stalled channel (no ping in`,Te,`ms) — forcing reconnect`),L.close(),L=null,Fe=!1,Ve?.(),Ye(Pe)))},Ee)}var Pe=``,Fe=!1,Ie=!1,Le=!1,Re=!1,ze=!1,Be=null,Ve=null,He=null;function Ue(e){Be=e}function We(e){Ve=e}function Ge(e){He=e}function Ke(e,t,n){let r={topic:e,event:t,handler:n};return be.push(r),()=>{let e=be.indexOf(r);e>=0&&be.splice(e,1)}}function qe(e,t,n){for(let r of be)if((r.topic===`*`||r.topic===e)&&(r.event===null||r.event===t))try{r.handler(n)}catch(e){console.warn(`[sse] handler error:`,e.message)}}function Je(){Ie||we||(we=setTimeout(()=>{we=null,Ye(Pe)},xe),xe=Math.min(xe*Ce,Se))}function Ye(e){Pe=e,Ie=!1,we&&=(clearTimeout(we),null),L&&L.close();let t=`${n}/api/events?lang=${encodeURIComponent(e)}`+Me()+(ye?`&lastEventId=${ye}`:``);Re=!1,ze=!1,L=new EventSource(t),Ne(),L.onopen=()=>{xe=2e3,Fe=!0,Le=!0,Re=!0,De=Date.now(),Be?.()},L.onerror=()=>{if(L?.close(),L=null,!Re&&!Le&&He){ze||(ze=!0,He());return}Fe&&(Fe=!1,Ve?.()),Je()},L.onmessage=e=>{ye=parseInt(e.lastEventId||`0`,10)||ye;let t;try{t=JSON.parse(e.data)}catch{console.warn(`[sse] malformed message:`,e.data);return}if(!t||typeof t!=`object`||typeof t.topic!=`string`||typeof t.event!=`string`){console.warn(`[sse] invalid message shape:`,t);return}if(De=Date.now(),t.topic===`system`&&t.event===`ping`){Oe=!0;return}qe(t.topic,t.event,t)}}var Xe=3e3,R=new Map,z=[],Ze=(e,t)=>`${e}:${t}`;function Qe(e=[]){let t=document.getElementById(`pendingQueue`);if(t){if(z=e.slice(),!e.length){it(new Set),t.classList.remove(`visible`),t.innerHTML=``;return}t.classList.add(`visible`),t.innerHTML=`
3
3
  <div class="pending-queue-header">
4
4
  <span class="pending-queue-title">${f.hourglass} <span data-i18n="queue.pendingTitle">${o(s(`queue.pendingTitle`))}</span> <span class="pending-queue-count">${e.length}</span></span>
5
5
  </div>
@@ -12,7 +12,7 @@ import{t as e}from"./state-Dl-xxPoS.js";import{i as t,t as n}from"./api-CUtiCd2-
12
12
  <button class="pending-row-btn pending-row-copy" data-pending-action="copy" title="${i}" aria-label="${i}"><span class="pending-btn-content">${f.copy}</span></button>
13
13
  <button class="pending-row-btn pending-row-steer" data-pending-action="steer" data-i18n-title="queue.steer" title="${a}" aria-label="${a}"><span class="pending-arm-fill" aria-hidden="true"></span><span class="pending-btn-content"><span class="pending-steer-arrow" aria-hidden="true">↳</span><span class="pending-steer-label">${a}</span></span></button>
14
14
  <button class="pending-row-btn pending-row-delete" data-pending-action="delete" data-i18n-title="queue.delete" title="${c}" aria-label="${c}"><span class="pending-arm-fill" aria-hidden="true"></span><span class="pending-btn-content">${f.trash}</span></button>
15
- </div>`}function et(e,t){let n=document.querySelector(`.pending-row[data-pending-id="${CSS.escape(e)}"]`);return n?n.querySelector(`[data-pending-action="${t}"]`):null}function tt(e,t){let n=et(e,t);if(!n)return;n.classList.add(`armed`),n.setAttribute(`title`,s(`queue.cancelArm`));let r=n.querySelector(`.pending-arm-fill`);r&&(r.style.animation=`none`,r.offsetWidth,r.style.animation=``)}function nt(e,t){let n=et(e,t);n&&(n.classList.remove(`armed`),n.setAttribute(`title`,s(t===`steer`?`queue.steer`:`queue.delete`)))}function rt(){for(let e of R.values()){let t=et(e.id,e.action);t&&(t.classList.add(`armed`),t.setAttribute(`title`,s(`queue.cancelArm`)))}}function it(e){for(let[t,n]of R)e.has(n.id)||(clearTimeout(n.timerId),R.delete(t))}function at(e,n){let r=Ze(e,n),i=setTimeout(()=>st(e,n),Xe);R.set(r,{id:e,action:n,timerId:i}),tt(e,n),n===`steer`&&t(`/api/orchestrate/queue/${encodeURIComponent(e)}/hold`,`POST`,{}).catch(()=>{})}function ot(e,n){let r=Ze(e,n),i=R.get(r);i&&(clearTimeout(i.timerId),R.delete(r),nt(e,n),n===`steer`&&t(`/api/orchestrate/queue/${encodeURIComponent(e)}/hold`,`DELETE`,{}).catch(()=>{}))}async function st(e,n){R.delete(Ze(e,n));let r=n===`steer`?`/api/orchestrate/queue/${encodeURIComponent(e)}/steer`:`/api/orchestrate/queue/${encodeURIComponent(e)}`,i=n===`steer`?`POST`:`DELETE`;if(n===`steer`&&x(`running`),await t(r,i,{})==null){z=z.filter(t=>t.id!==e),Qe(z),n===`steer`&&Z(`steer-fire-miss`).catch(()=>{});return}z=z.filter(t=>t.id!==e),Qe(z)}function ct(e,t){if(R.has(Ze(e,t))){ot(e,t);return}at(e,t)}function lt(){let e=document.getElementById(`pendingQueue`);e&&e.addEventListener(`click`,async e=>{let t=e.target?.closest(`[data-pending-action]`);if(!t)return;let n=t.closest(`.pending-row`)?.dataset.pendingId;if(!n)return;let r=t.dataset.pendingAction;if(r===`copy`){let e=z.find(e=>e.id===n);if(e?.prompt&&(await p(e.prompt)).ok){let e=t.querySelector(`.pending-btn-content`);e&&(e.innerHTML=f.checkSimple,setTimeout(()=>{e.innerHTML=f.copy},600))}return}ct(n,r===`steer`?`steer`:`delete`)})}var ut=800,dt=64,ft=`CLI-JAW`,pt=`/icons/favicon-32.png`,mt=`#22d3ee`,ht=!1,B=0,gt=ft,V=null,_t=``,vt=!1,yt=0,bt=null;function xt(){return navigator}function St(){return document.visibilityState!==`visible`||!document.hasFocus()}function Ct(e){return e-yt<ut}function wt(){if(V)return V;let e=document.querySelector(`link[rel~="icon"]`);if(e)return V=e,_t=e.href||e.getAttribute(`href`)||``,e;let t=document.createElement(`link`);return t.rel=`icon`,document.head.appendChild(t),V=t,vt=!0,t}function Tt(){if(bt)return;let e=new Image;e.addEventListener(`load`,()=>{B>0&&kt()}),e.src=pt,bt=e}function Et(e){let t=document.createElement(`canvas`);t.width=dt,t.height=dt;let n=t.getContext(`2d`);return n?(n.clearRect(0,0,dt,dt),bt&&bt.complete&&bt.naturalWidth>0?n.drawImage(bt,2,6,52,52):(n.beginPath(),n.arc(28,32,26,0,Math.PI*2),n.fillStyle=mt,n.fill()),n.beginPath(),n.arc(50,15,e>1?12:9,0,Math.PI*2),n.fillStyle=`#ff335f`,n.fill(),n.lineWidth=4,n.strokeStyle=`#ffffff`,n.stroke(),e>1&&(n.fillStyle=`#ffffff`,n.font=`bold 15px sans-serif`,n.textAlign=`center`,n.textBaseline=`middle`,n.fillText(String(Math.min(e,9)),50,16)),t.toDataURL(`image/png`)):_t}async function Dt(e){let t=xt();if(typeof t.setAppBadge==`function`)try{await t.setAppBadge(e)}catch{}}async function Ot(){let e=xt();if(typeof e.clearAppBadge==`function`)try{await e.clearAppBadge()}catch{}}function kt(){document.title=`(${B}) ${gt}`;let e=wt();e&&(e.href=Et(B)),Dt(B)}function At(){document.title=gt}function jt(){if(V){if(vt){V.remove(),V=null,vt=!1;return}V.href=_t}}function Mt(){ht||(ht=!0,gt=document.title||ft,wt(),Tt(),document.addEventListener(`visibilitychange`,()=>{document.visibilityState===`visible`&&Pt()}),window.addEventListener(`focus`,()=>Pt()))}function Nt(){if(!ht||!St())return;let e=Date.now();Ct(e)||(yt=e,B+=1,kt())}function Pt(){ht&&B!==0&&(B=0,yt=0,At(),jt(),Ot())}function Ft(e,t){return!e||!t||e===`all`||e===t}function It(e){let t=N(e);return!t||e.version!==1?null:{version:1,...t}}var Lt=6291456,Rt=e=>typeof e==`object`&&!!e&&!Array.isArray(e),H=e=>typeof e==`string`&&e.length>0&&e.length<=240;function zt(e){let{runId:t,sessionId:n,scope:r,turnId:i,requestId:a,requestType:o,expiresAt:s}=e;if(!H(t)||!H(n)||!H(r)||!H(i)||!H(a)||o!==`approval`&&o!==`question`||typeof s!=`number`||!Number.isSafeInteger(s))return null;let c=de(e.view);return c?{runId:t,sessionId:n,scope:r,turnId:i,requestId:a,requestType:o,expiresAt:s,view:c}:null}function Bt(e){return JSON.stringify([e.runId,e.sessionId,e.scope,e.turnId,e.requestId,e.requestType,e.view])}function Vt(e){let t=e.view.fields;return t.length>0&&(e.requestType===`approval`?t.length===1&&!t[0].multiSelect&&!t[0].allowFreeform&&t[0].options.length>0:t.every(e=>e.options.length>0||e.allowFreeform))}function Ht(e,t,n={}){let a={...t},o=e.ownerDocument,s=o.createElement(`section`);s.className=`native-requests`,s.hidden=!0,s.setAttribute(`aria-label`,`Live runtime requests`);let c=o.createElement(`p`);c.className=`native-request-status`;let l=o.createElement(`p`);l.className=`native-request-announcer`,l.setAttribute(`role`,`status`),l.setAttribute(`aria-live`,`polite`),l.setAttribute(`aria-atomic`,`true`);let u=o.createElement(`h2`);u.className=`native-request-title`;let d=o.createElement(`p`);d.className=`native-request-context`;let f=o.createElement(`div`);f.className=`native-request-controls`;let p=de(`Refresh requests`,()=>{n.onRefresh?n.onRefresh():F()});s.append(u,d,c,f,p);let m=[...e.children].find(e=>e.classList.contains(`chat-input-area`));e.insertBefore(l,m??null),e.insertBefore(s,m??null);let h=null,g=null,_=null,v,y=0,b=0,x=!1,S=!1,C=!1,w=!1,T=n.health??`healthy`,ee=0,te=!1,ne=!1,E=()=>!x&&(n.isCurrent?.()??!0),re=0,ie=null,D=null,ae=!1,O=null,k=o.defaultView,oe=()=>{ae=!0,++re,D=null},se=()=>{ae=!1},ce=e=>{s.contains(e.target)||(++re,D=null)};o.addEventListener(`focusin`,ce),k?.addEventListener(`blur`,oe),k?.addEventListener(`focus`,se);function le(){return ae?null:s.contains(o.activeElement)?re:C&&o.activeElement===o.body?ie:null}function ue(t=!0){if(D===null)return;if(ae||D!==re){D=null;return}let n=s.isConnected&&!s.hidden?f.querySelector(`input:not(:disabled), textarea:not(:disabled), button:not(:disabled)[aria-disabled="false"]`)??p:e.querySelector(`#chatInput`)??o.getElementById(`chatInput`);n?.isConnected&&!n.hasAttribute(`disabled`)&&n.focus({preventScroll:!0}),t&&!C&&(D=null)}function de(e,t){let n=o.createElement(`button`);return n.type=`button`,n.textContent=e,n.addEventListener(`click`,t),n}function A(e,t=!1){t&&(O=e);let n=(T===`healthy`?``:T===`unknown`?`Live request updates not connected. `:`Connection lost. Live request updates unavailable. `)+(te&&T!==`healthy`?`Manually refreshed; updates remain unavailable. `:``)+e;c.textContent!==n&&(c.textContent=n);let r=T===`healthy`&&e===`No pending runtime requests.`?O??e:n;l.textContent!==r&&(l.textContent=r)}function j(){f.querySelectorAll(`button`).forEach(e=>{let t=w||C||!S;e.disabled=w||C||!S&&o.activeElement!==e,e.setAttribute(`aria-disabled`,String(t))}),f.querySelectorAll(`input, textarea`).forEach(e=>{e.disabled=C}),s.setAttribute(`aria-busy`,String(C))}function M(e=le()){D=e,clearTimeout(v),v=void 0,h=null,S=!1,b++,u.textContent=``,d.textContent=``,f.replaceChildren(),ue(!1)}function N(){clearTimeout(v),h&&!w&&(v=setTimeout(()=>{if(E()){if(h&&h.expiresAt>Date.now()){N();return}M(),A(T===`healthy`?`Request expired. Checking pending requests.`:`Request expired. Refresh requests to check what is pending.`,!0),F(`auto`)}},Math.min(2147483647,Math.max(0,h.expiresAt-Date.now()))))}function P(e){u.textContent=e.view.title,d.textContent=`Execution scope: ${e.scope} · Run: ${e.runId}`;let t=e.view.fields;if(!Vt(e))return;let n=b,r=e=>{b===n&&fe(e)},i=o.createElement(`form`);i.noValidate=!0;let a=[];for(let[n,s]of t.entries()){let t=o.createElement(`fieldset`),c=o.createElement(`legend`);c.textContent=s.label,t.append(c);let l=[];for(let i of s.options)if(e.requestType===`approval`)t.append(de(i.label,()=>r({optionId:i.id})));else{let e=o.createElement(`label`),r=o.createElement(`input`);r.type=s.multiSelect?`checkbox`:`radio`,r.name=`native-question-${n}`,r.value=i.id,e.append(r,o.createTextNode(i.label)),t.append(e),l.push({id:i.id,input:r})}let u=null;if(e.requestType===`question`&&s.allowFreeform){!s.multiSelect&&l.length&&t.append(de(`Clear selection`,()=>{l.forEach(e=>{e.input.checked=!1})}));let e=o.createElement(`label`);e.append(o.createTextNode(`Other answer`)),u=o.createElement(`textarea`),u.maxLength=2e3,e.append(u),t.append(e)}if(e.requestType===`question`){let e=o.createElement(`p`);e.textContent=s.multiSelect?`Choose at least one answer.`:`Choose exactly one answer.`,t.append(e)}a.push({field:s,choices:l,text:u}),i.append(t)}if(e.requestType===`question`){let e=o.createElement(`button`);e.type=`submit`,e.textContent=`Submit answers`,i.append(e)}i.addEventListener(`submit`,t=>{if(t.preventDefault(),e.requestType!==`question`||!E()||w||C||!S||b!==n)return;let i=0,o=[];for(let{field:e,choices:t,text:n}of a){let r=t.filter(e=>e.input.checked).map(e=>e.id),a=n?.value??``,s=a.length>0,c=r.length+(s&&a.trim()?1:0);if(s&&(!e.allowFreeform||!a.trim()||a.length>2e3)||(e.multiSelect?c<1||r.length>e.options.length:c!==1)){A(`Answer every question. Choose one answer for single-choice questions; other answers must be nonblank and at most 2,000 characters.`);return}i+=a.length,o.push([e.id,{selected:r,...s?{text:a}:{}}])}if(i>8e3){A(`Keep all other answers within 8,000 characters in total.`);return}r({answers:Object.fromEntries(o)})}),i.append(de(`Cancel request`,()=>r({optionId:null}))),f.append(i)}async function fe(e){let t=h;if(!E()||w||C||!S||!t)return;if(t.expiresAt<=Date.now()){M(),A(`Request expired.`,!0),await F(`auto`);return}ie=le();let n=ie;C=!0,S=!1;let a=b,o=ee;++y,g?.abort();let s=new AbortController;_=s,O=null,j(),A(`Sending response.`);let c=`optionId`in e&&e.optionId===null?`Request cancelled.`:`Response accepted.`,l=!1;try{let n=await r(`/api/runtime/requests/`+encodeURIComponent(t.requestId),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({runId:t.runId,sessionId:t.sessionId,scope:t.scope,turnId:t.turnId,response:e})},s.signal,65536);if(!Rt(n)||n.ok!==!0||!Rt(n.data)||n.data.accepted!==!0)throw Error(`unconfirmed`);l=!0}catch(e){c=e instanceof i&&e.status===409?`Request expired or was already answered. Pending requests refreshed.`:`Response could not be confirmed. Check pending requests before trying again.`}finally{_===s&&(_=null),C=!1}if(!E())return;if(w||o!==ee){j();return}if(b!==a){j(),ue();return}l?M(n):S=!1,j(),A(c,!0);let u=y+1;await F(`auto`),!x&&!w&&S&&y===u&&!l&&h&&Bt(h)===Bt(t)&&A(c)}async function F(e=`manual`){if(!E()||e===`auto`&&T!==`healthy`)return;let t=++y;g?.abort();let n=new AbortController;g=n,S=!1,j(),!h&&!ne&&(s.hidden=!1,A(`Loading pending requests.`));try{if(!H(a.sessionId)||!H(a.scope))throw Error(`invalid_identity`);let i=await r(`/api/runtime/requests?sessionId=`+encodeURIComponent(a.sessionId),{method:`GET`},n.signal,Lt);if(!E()||t!==y||n.signal.aborted)return;if(!Rt(i)||i.ok!==!0||!Rt(i.data))throw Error(`invalid_list`);let o=i.data.requests;if(!Array.isArray(o)||o.length>128)throw Error(`invalid_list`);let c=new Set,l=null,u=null,d=!1;for(let e of o){if(!Rt(e)){d=!0;continue}if(H(e.requestId)){if(c.has(e.requestId))throw Error(`duplicate_request`);c.add(e.requestId)}if(e.sessionId!==a.sessionId)continue;let t=zt(e);if(!t){d=!0;continue}t.expiresAt<=Date.now()||(l??=t,h&&Bt(h)===Bt(t)&&(u=t))}let f=u??l;h&&!u&&A(h.expiresAt<=Date.now()?`Request expired.`:`Request is no longer pending.`,!0),u||M(),h=f,S=!0,w=!1,ne=!0,te=e===`manual`,s.hidden=!h&&!d&&T===`healthy`,h?(u||(O=null),A(Vt(h)?(O?O+` `:``)+`Runtime is waiting for your response.`:`This request cannot be answered here. Refresh requests or use Stop.`),u||P(h),N()):A(d?`This request cannot be displayed safely. Refresh requests or use Stop.`:`No pending runtime requests.`),j(),ue()}catch{if(!E()||t!==y||n.signal.aborted)return;s.hidden=!1,j(),A(`Pending requests could not be loaded. Refresh requests to retry.`)}finally{g===n&&(g=null)}}function pe(e){x||(T=e,te=!1,++ee,w=!0,S=!1,++y,g?.abort(),g=null,clearTimeout(v),v=void 0,s.hidden=!1,j(),A(`Your draft is kept. Refresh requests to check what is pending.`))}return T!==`healthy`&&pe(T),n.autoStart!==!1&&F(`auto`),{refresh:F,setStreamHealth:pe,suspend(){pe(`unavailable`)},dispose(){x||(x=!0,++y,g?.abort(),_?.abort(),M(),s.remove(),l.remove(),ue(),o.removeEventListener(`focusin`,ce),k?.removeEventListener(`blur`,oe),k?.removeEventListener(`focus`,se))}}}function Ut(t){let n=`unknown`,r=0,i=0,a=null,o=``,s=null,c=null,u=!1,d=null,f=()=>l(`/api/orchestrate/snapshot`),p=e=>a?.sessionId===e.sessionId&&a.scope===e.scope;function m(e){let n=t.host();if(n&&!s){if(!c){let e=n.ownerDocument;c=e.createElement(`section`),c.className=`native-requests`,c.setAttribute(`aria-label`,`Live runtime requests`);let t=e.createElement(`p`);t.className=`native-request-status`,t.setAttribute(`role`,`status`);let r=e.createElement(`button`);r.type=`button`,r.textContent=`Refresh requests`,r.addEventListener(`click`,()=>{_()}),c.append(t,r);let i=[...n.children].find(e=>e.classList.contains(`chat-input-area`));n.insertBefore(c,i??null)}c.querySelector(`p`).textContent=e}}function h(){s?.dispose(),s=null,a=null,e.activityIdentity=null}function g(){if(u||n!==`healthy`||!s||d?.epoch===r&&d.path===o&&(!d.panel||d.panel===s))return;u=!0;let e=r;queueMicrotask(()=>{u=!1,e===r&&n===`healthy`&&o===f()&&s?.refresh(`auto`)})}async function _(){if(d?.epoch===r&&d.path===f()&&d.panel===s)return;let e={epoch:r,path:f(),panel:s};d=e;try{(!s||o!==f())&&await t.refreshSnapshot(),e.epoch===r&&e.path===f()&&o===e.path&&(!e.panel||e.panel===s)&&await s?.refresh(`manual`)}catch{m(`Request identity could not be loaded. Refresh requests to retry.`)}finally{d===e&&(d=null)}}function v(e){n=e,++r,s?.setStreamHealth(e),m(e===`healthy`?`Loading request identity.`:`Live request updates unavailable. Refresh requests to check pending requests manually.`)}return{channelChanged(){v(`unknown`)},unavailable(){v(`unavailable`)},sseOpened(){v(`healthy`)},invalidateIdentity(){++r,++i,h(),m(`Request identity changed. Refresh requests to check this conversation.`)},beginSnapshot(){let l=f();o&&o!==l&&h();let u=r,d=++i,v=()=>u===r&&d===i&&l===f();return{path:l,isCurrent:v,accept(r){if(!v())return;let i=N(r);if(!i){h(),m(`Request identity unavailable. Refresh requests to retry.`);return}if(!p(i)){h(),a=i,o=l;let e=t.host();e&&(c?.remove(),c=null,s=Ht(e,i,{health:n,autoStart:!1,onRefresh:()=>{_()},isCurrent:()=>a===i&&o===f()}))}e.activityIdentity=i,g()},fail(){v()&&(h(),m(`Request identity could not be loaded. Refresh requests to retry.`))}}},event(e,t){if(n!==`healthy`||!a||o!==f())return;let r=e===`agent_runtime_requests_changed`?It(t):null,i=e===`agent_runtime`?re(t):null,s=typeof t==`object`&&!!t&&t.sseReplay===!0;(r&&p(r)||i&&p(i)&&(i.kind===`request`||i.kind===`request-settled`||i.kind===`turn-end`&&!s))&&g()},dispose(){++r,++i,h(),c?.remove(),c=null}}}j({currentMessage:()=>e.currentAgentDiv,useMessage:t=>{e.currentAgentDiv=t},createMessage:Wt,reconcileMessage:(e,t)=>m().reconcileMessage(e,t),replaceAnswer:fe,evicted:ae,closeTrace:()=>{a(()=>import(`./trace-drawer-Dbe5pTbf.js`).then(e=>e.closeTraceDrawer()),__vite__mapDeps([0])).catch(e=>console.warn(`[activity] trace close unavailable`,e))},inspectTrace:(e,t)=>{a(()=>import(`./trace-drawer-Dbe5pTbf.js`).then(n=>n.openTraceDrawer(e,void 0,t)),__vite__mapDeps([0])).catch(e=>console.warn(`[activity] trace unavailable`,e))}});function Wt(){return he(),S(`agent`,``)}var U=Ut({host:()=>document.querySelector(`.chat-area`),refreshSnapshot:()=>Z(`native-request-retry`,{hydrateRun:!0})}),W=[`I`,`P`,`A`,`B`,`C`],G=null;function Gt(e,t,n){let r=W.indexOf(n);if(r<0)return;let i=e.getBoundingClientRect(),a=t.offsetWidth||36,o=document.getElementById(`dot-${n}`);if(!o)return;let s=W[r+1],c=s?document.getElementById(`dot-${s}`):null;if(c){let e=o.getBoundingClientRect(),n=c.getBoundingClientRect(),r=(e.right+n.left)/2;t.style.transform=`translateX(${r-i.left-a/2}px)`}else{let e=o.getBoundingClientRect();t.style.transform=`translateX(${e.left-i.left+e.width/2-a/2}px)`}}var Kt={},qt=8,Jt=64,K=null,q=0,Yt=[],Xt=new Map;function Zt(e){return e!==null&&(Yt.includes(e)||A(e)||!!v(e)?.answerSource)}function Qt(e){let t=Number(e);return Number.isFinite(t)&&t>0?Math.floor(t):null}function $t(e,t){if(e&&t!=null)for(t>(Xt.get(e)||0)&&Xt.set(e,t);Xt.size>Jt;){let e=null;for(let t of Xt.keys())if(t!==K){e=t;break}if(!e)break;Xt.delete(e)}}function en(e){let t=new Map;for(let n of e?.toolLog||[]){let e=typeof n?.traceRunId==`string`&&n.traceRunId?n.traceRunId:null,r=Qt(n?.traceSeq);e&&r!=null&&r>(t.get(e)||0)&&t.set(e,r)}return t}function tn(e,t,n){return!n||!e||t==null?!1:t<=(Xt.get(e)||0)}function nn(e){++J;let t=e??K;K=null,q=0,t&&!Yt.includes(t)&&(Yt.push(t),Yt.length>qt&&Yt.shift())}function rn(e){e&&e!==K&&(++J,K=e,q=0)}function an(e){if(e?.running){typeof e.traceRunId==`string`&&e.traceRunId&&(K=e.traceRunId),q=typeof e.textLen==`number`?e.textLen:(e.text||``).length;for(let[t,n]of en(e))$t(t,n)}}var on=``,J=0,Y=!1,sn=!1,cn=0,ln=[],un=!1;function X(){Y=!1,_(!1),k(!1),K&&te(K)}function dn(){ie(),ln=[],cn=0,un=!1}function fn(t,n=`Activity preview is unavailable at its retention limit. The final answer will still appear here.`){let r=e.currentAgentDiv;if((!r||r.dataset.traceRunId!==t)&&(r=Wt(),e.currentAgentDiv=r,r.dataset.traceRunId=t),!r.querySelector(`.activity-unavailable`)){let e=r.ownerDocument.createElement(`p`);e.className=`activity-unavailable`,e.setAttribute(`role`,`status`),e.textContent=n,r.querySelector(`.agent-body`)?.prepend(e)}rn(t)}function pn(e){let t=new TextEncoder().encode(JSON.stringify(e)).length;if(ln.length>=256||cn+t>1048576){ln=[],cn=0,un=!0;return}ln.push(e),cn+=t}function mn(t){let n=e.activityIdentity;if(!Y||!n){pn({gap:t});return}t.sessionId===n.sessionId&&t.scope===n.scope&&(v(t.runId)?te(t.runId):K===t.runId&&e.currentAgentDiv&&fn(t.runId,`Activity is incomplete. Runtime updates were not recorded; the final answer remains available separately.`))}function hn(t,n=!1){let r=e.activityIdentity;if(!Y||!r){pn({event:t,replay:n});return}if(t.sessionId!==r.sessionId||t.scope!==r.scope)return;let i=v(t.runId);if(i&&i.model.identity.turnId!==t.turnId)return;let a=Zt(t.runId);if(a&&!i||!i&&K&&K!==t.runId&&(t.kind!==`turn-start`||n))return;let o;try{o=ne(t,!K||K===t.runId)??(t.kind===`turn-end`&&i?.model.end?.seq===t.seq?i:null)}catch(e){if(!(e instanceof M))throw e;!n&&(!K||K===t.runId||t.kind===`turn-start`)&&fn(t.runId);return}if(o){if(++J,un&&te(t.runId),t.kind!==`turn-end`){!a&&!n&&rn(t.runId);return}a||K&&K!==t.runId||e.currentAgentDiv!==o.message||(o.answerSource=`canonical`,nn(t.runId),P(t.finalText,void 0,t.finalText===null?`absent`:`present`,t.runId,o.cacheScope,t.sessionId),Nt())}}function gn(t){if(t.isEmployee===!0)return;let n=typeof t.traceRunId==`string`&&t.traceRunId?t.traceRunId:null,r=t.runtimeFinality===`present`||t.runtimeFinality===`absent`?t.runtimeFinality:void 0;if(!n&&!r&&(t.error===!0||K&&v(K))){typeof t.text==`string`&&t.text&&E(o(t.text),`tool-activity`);return}let i=n?v(n):void 0,a=!!i&&r!==`absent`&&typeof t.text==`string`;if(Zt(n)){if(a&&n)ee(n,t.text);else if(!i&&n&&r!==`absent`&&typeof t.text==`string`){let r=N(t);r&&r.sessionId===e.activityIdentity?.sessionId&&se({...r,runId:n,text:t.text})}return}if(n&&K&&n!==K)return;w(n,t.runtimeStatus??(t.error===!0?`error`:void 0)),i&&(i.answerSource=`compatibility`),nn(n);let s=t.type===`agent_done`?t.toolLog:void 0;i&&n?(P(r===`absent`?null:t.text||``,s,r??(a?`present`:void 0),n,i.cacheScope,i.model.identity.sessionId),r===`absent`&&typeof t.text==`string`&&t.text&&E(o(t.text.slice(0,500)),`activity-diagnostic`)):P(t.text||``,s,r),Nt()}function _n(t){let n=e.currentAgentDiv,r=v(t.runId);if(n&&K===t.runId&&e.activityIdentity?.sessionId===t.sessionId&&n===t.message&&n.dataset.traceRunId===t.runId&&!Zt(t.runId)&&!(r&&(r.model.identity.sessionId!==t.sessionId||r.model.identity.scope!==t.scope||t.turnId!==void 0&&r.model.identity.turnId!==t.turnId))){if(w(t.runId,t.status),nn(t.runId),n.dataset.activitySaved===`true`){r&&(r.answerSource=`saved`),delete n.dataset.activityRecovering,he(),x(`idle`);return}r?r.answerSource=t.answer.kind===`saved`?`saved`:`unavailable`:t.answer.kind!==`saved`&&e.activityIdentity&&T({runId:t.runId,sessionId:t.sessionId,scope:e.activityIdentity.scope,message:n,cacheScope:t.cacheScope}),P(t.answer.kind===`saved`?t.answer.message.content:null,void 0,t.answer.kind===`saved`?`present`:`absent`,t.runId,t.cacheScope,t.sessionId),Nt()}}function vn(){ce(e.activityIdentity,{terminal:_n,refreshIdentity:()=>Z(`history-identity`,{hydrateRun:!0})}),k(Y)}function yn(){let t=ln;ln=[],cn=0;for(let e of t)`event`in e?hn(e.event,e.replay):mn(e.gap);un&&K&&e.currentAgentDiv&&!v(K)&&fn(K,`Activity is incomplete. Updates were dropped while reconnecting; the final answer remains available separately.`),un=!1}var bn=0,xn=null,Sn=0,Cn=!1,wn=0,Tn=750,En=750;async function Dn(t={}){let n=U.beginSnapshot(),i=J,o;try{o=await r(n.path,{method:`GET`},new AbortController().signal,16777216)}catch(e){throw n.isCurrent()&&X(),n.fail(),e}if(!n.isCurrent())return;n.accept(o?.activityIdentity),Y=sn&&e.activityIdentity!==null,oe(e.activityIdentity),_(Y),vn(),on=String(o.orc.scope||``),Hn(o.orc.state),Pn(o.orc.ctx||null),Nn(o.heartbeat||{pending:0,deferredPending:0}),Mn(o.workers),C(o.runtime.queuePending),me(o.queued||[]),Qe(o.queued||[]);let s=Zt(o.activeRun?.traceRunId??null),c=i===J;t.hydrateRun&&c&&!s&&(ge(o.activeRun),an(o.activeRun),o.activeRun?.running&&o.activeRun.traceRunId&&e.currentAgentDiv&&(e.currentAgentDiv.dataset.traceRunId=o.activeRun.traceRunId,e.activityIdentity&&(e.currentAgentDiv.dataset.messageSessionId=e.activityIdentity.sessionId),y(o.activeRun.traceRunId,e.currentAgentDiv))),Bn(),c&&(o.runtime.busy&&!s?x(`running`):I()||x(`idle`)),Y&&yn();let l=document.getElementById(`chatMessages`);l&&le(l),Y&&t.hydrateRun&&e.currentAgentDiv&&K&&(c||v(K)?.degraded)&&D(e.currentAgentDiv,K,!0),a(()=>import(`./employees-BchFBkDz.js`).then(e=>{typeof e.renderEmployees==`function`&&e.renderEmployees()}),__vite__mapDeps([0]))}function Z(e=`manual`,t={}){let n=Date.now();return t.hydrateRun?Dn(t):xn||(n-Sn<Tn?Promise.resolve():(Sn=n,xn=Dn(t).catch(t=>{throw console.warn(`[ws] orchestrate snapshot sync failed (${e})`,t),t}).finally(()=>{xn=null}),xn))}function On(e){return e===`iframe-visible`||e===`pageshow`||e===`discard`||e===`visibilitychange`}function kn(e){h(e),a(()=>import(`./ui-C0o427q6.js`).then(async t=>{if(On(e)&&bn>0)try{await t.loadMessages(),bn=Date.now()}catch(t){console.warn(`[ws] restore loadMessages failed (${e})`,t)}await Z(e,{hydrateRun:!0})}),__vite__mapDeps([0])).catch(()=>{}).finally(()=>{g(e)})}function Q(e){let t=Date.now();!On(e)&&t-wn<En||(wn=t,kn(e))}function An(e){let t=Array.isArray(e.changedKeys)?e.changedKeys:[];if(t.includes(`presentation`)&&a(()=>import(`./presentation-preference-BYEPPRPg.js`).then(e=>e.refreshPresentationSettings()),[]).catch(e=>console.warn(`[ws] presentation refresh failed`,e)),t.includes(`multiSession`)){window.location.reload();return}t.includes(`workingDir`)||t.includes(`projectDirs`)?a(()=>import(`./ui-C0o427q6.js`).then(async e=>{try{await e.loadMessages(),bn=Date.now()}catch(e){console.warn(`[ws] settings scope loadMessages failed`,e)}await Z(`settings_change`).catch(()=>{}).finally(()=>e.reconcileChatBottomAfterRestore(`settings_change`))}),__vite__mapDeps([0])):Z(`settings_change`).catch(()=>{}),a(()=>import(`./settings-core-CXWmPKUE.js`).then(t=>t.refreshHeaderFromSettingsChange(e)),__vite__mapDeps([0])).catch(()=>{})}function jn(){Cn||(Cn=!0,window.addEventListener(`focus`,()=>{Q(`focus`)}),window.addEventListener(`pageshow`,e=>{e.persisted&&Q(`pageshow`)}),document.addEventListener(`visibilitychange`,()=>{document.visibilityState===`visible`&&Q(`visibilitychange`)}),document.addEventListener(`resume`,()=>{Q(`resume`)}),`wasDiscarded`in document&&document.wasDiscarded&&Q(`discard`),window.addEventListener(`message`,e=>{e.data?.type===`jaw-preview-visibility`&&e.data.visible&&Q(`iframe-visible`)}))}function Mn(e){for(let e of Object.keys(Kt))delete Kt[e];for(let t of e)t.state===`running`&&t.phase&&(Kt[t.agentId]={phase:t.phase,phaseLabel:t.phaseLabel||``})}function Nn(t){let n={pending:Number(t?.pending||0),deferredPending:Number(t?.deferredPending||0),...t?.reason?{reason:t.reason}:{},...t?.policy?{policy:t.policy}:{},...t?.jobId?{jobId:t.jobId}:{},...t?.jobName?{jobName:t.jobName}:{}};e.heartbeatRuntime=n;let r=document.getElementById(`pabcHeartbeatStatus`);if(r){if(n.reason===`pabcd_active`&&n.deferredPending>0){let e=n.jobName?`: ${n.jobName}`:``;r.textContent=`heartbeat deferred (${n.deferredPending})${e}`,r.hidden=!1}else r.textContent=``,r.hidden=!0}}function Pn(t){e.orcTaskAnchor=String(t?.taskAnchor||``).trim(),e.orcResolvedSelection=t?.resolvedSelection||null;let n=document.getElementById(`pabcTaskAnchor`);n&&(e.orcTaskAnchor?(n.textContent=`anchor: ${e.orcResolvedSelection?.index?`${e.orcResolvedSelection.index}. `:``}${e.orcTaskAnchor}`,n.hidden=!1):(n.textContent=``,n.hidden=!0),Rn(t?.interview||null))}var Fn=(()=>{try{return localStorage.getItem(`jaw:interviewCollapsed`)===`1`}catch{return!1}})();function In(e){Fn=e;try{localStorage.setItem(`jaw:interviewCollapsed`,e?`1`:`0`)}catch{}let t=document.getElementById(`interviewPanel`);if(!t)return;t.classList.toggle(`collapsed`,e);let n=t.querySelector(`.iv-toggle`);n&&n.setAttribute(`aria-expanded`,String(!e))}function Ln(e){let t=e=>{switch(e){case`max`:return 1;case`xhigh`:return .8;case`high`:return .6;case`medium`:return .4;default:return .2}},n=e=>{switch(e){case`max`:return`#2196f3`;case`xhigh`:return`#4caf50`;case`high`:return`#8bc34a`;case`medium`:return`#ff9800`;default:return`#f44336`}},r=[t(e.goal),t(e.constraint),t(e.success),t(e.ontology)],i=1-r.reduce((e,t)=>e+t,0)/r.length,a=Object.values(e).every(e=>e===`max`)||i<=.2?`🟢 Ready`:i<=.4?`🟡 Almost`:`🔴 Needs work`,o=(e,r)=>{let i=t(r);return`<div style="display:flex;align-items:center;gap:6px;font-size:12px">
15
+ </div>`}function et(e,t){let n=document.querySelector(`.pending-row[data-pending-id="${CSS.escape(e)}"]`);return n?n.querySelector(`[data-pending-action="${t}"]`):null}function tt(e,t){let n=et(e,t);if(!n)return;n.classList.add(`armed`),n.setAttribute(`title`,s(`queue.cancelArm`));let r=n.querySelector(`.pending-arm-fill`);r&&(r.style.animation=`none`,r.offsetWidth,r.style.animation=``)}function nt(e,t){let n=et(e,t);n&&(n.classList.remove(`armed`),n.setAttribute(`title`,s(t===`steer`?`queue.steer`:`queue.delete`)))}function rt(){for(let e of R.values()){let t=et(e.id,e.action);t&&(t.classList.add(`armed`),t.setAttribute(`title`,s(`queue.cancelArm`)))}}function it(e){for(let[t,n]of R)e.has(n.id)||(clearTimeout(n.timerId),R.delete(t))}function at(e,n){let r=Ze(e,n),i=setTimeout(()=>st(e,n),Xe);R.set(r,{id:e,action:n,timerId:i}),tt(e,n),n===`steer`&&t(`/api/orchestrate/queue/${encodeURIComponent(e)}/hold`,`POST`,{}).catch(()=>{})}function ot(e,n){let r=Ze(e,n),i=R.get(r);i&&(clearTimeout(i.timerId),R.delete(r),nt(e,n),n===`steer`&&t(`/api/orchestrate/queue/${encodeURIComponent(e)}/hold`,`DELETE`,{}).catch(()=>{}))}async function st(e,n){R.delete(Ze(e,n));let r=n===`steer`?`/api/orchestrate/queue/${encodeURIComponent(e)}/steer`:`/api/orchestrate/queue/${encodeURIComponent(e)}`,i=n===`steer`?`POST`:`DELETE`;if(n===`steer`&&x(`running`),await t(r,i,{})==null){z=z.filter(t=>t.id!==e),Qe(z),n===`steer`&&Z(`steer-fire-miss`).catch(()=>{});return}z=z.filter(t=>t.id!==e),Qe(z)}function ct(e,t){if(R.has(Ze(e,t))){ot(e,t);return}at(e,t)}function lt(){let e=document.getElementById(`pendingQueue`);e&&e.addEventListener(`click`,async e=>{let t=e.target?.closest(`[data-pending-action]`);if(!t)return;let n=t.closest(`.pending-row`)?.dataset.pendingId;if(!n)return;let r=t.dataset.pendingAction;if(r===`copy`){let e=z.find(e=>e.id===n);if(e?.prompt&&(await p(e.prompt)).ok){let e=t.querySelector(`.pending-btn-content`);e&&(e.innerHTML=f.checkSimple,setTimeout(()=>{e.innerHTML=f.copy},600))}return}ct(n,r===`steer`?`steer`:`delete`)})}var ut=800,dt=64,ft=`CLI-JAW`,pt=`/icons/favicon-32.png`,mt=`#22d3ee`,ht=!1,B=0,gt=ft,V=null,_t=``,vt=!1,yt=0,bt=null;function xt(){return navigator}function St(){return document.visibilityState!==`visible`||!document.hasFocus()}function Ct(e){return e-yt<ut}function wt(){if(V)return V;let e=document.querySelector(`link[rel~="icon"]`);if(e)return V=e,_t=e.href||e.getAttribute(`href`)||``,e;let t=document.createElement(`link`);return t.rel=`icon`,document.head.appendChild(t),V=t,vt=!0,t}function Tt(){if(bt)return;let e=new Image;e.addEventListener(`load`,()=>{B>0&&kt()}),e.src=pt,bt=e}function Et(e){let t=document.createElement(`canvas`);t.width=dt,t.height=dt;let n=t.getContext(`2d`);return n?(n.clearRect(0,0,dt,dt),bt&&bt.complete&&bt.naturalWidth>0?n.drawImage(bt,2,6,52,52):(n.beginPath(),n.arc(28,32,26,0,Math.PI*2),n.fillStyle=mt,n.fill()),n.beginPath(),n.arc(50,15,e>1?12:9,0,Math.PI*2),n.fillStyle=`#ff335f`,n.fill(),n.lineWidth=4,n.strokeStyle=`#ffffff`,n.stroke(),e>1&&(n.fillStyle=`#ffffff`,n.font=`bold 15px sans-serif`,n.textAlign=`center`,n.textBaseline=`middle`,n.fillText(String(Math.min(e,9)),50,16)),t.toDataURL(`image/png`)):_t}async function Dt(e){let t=xt();if(typeof t.setAppBadge==`function`)try{await t.setAppBadge(e)}catch{}}async function Ot(){let e=xt();if(typeof e.clearAppBadge==`function`)try{await e.clearAppBadge()}catch{}}function kt(){document.title=`(${B}) ${gt}`;let e=wt();e&&(e.href=Et(B)),Dt(B)}function At(){document.title=gt}function jt(){if(V){if(vt){V.remove(),V=null,vt=!1;return}V.href=_t}}function Mt(){ht||(ht=!0,gt=document.title||ft,wt(),Tt(),document.addEventListener(`visibilitychange`,()=>{document.visibilityState===`visible`&&Pt()}),window.addEventListener(`focus`,()=>Pt()))}function Nt(){if(!ht||!St())return;let e=Date.now();Ct(e)||(yt=e,B+=1,kt())}function Pt(){ht&&B!==0&&(B=0,yt=0,At(),jt(),Ot())}function Ft(e,t){return!e||!t||e===`all`||e===t}function It(e){let t=N(e);return!t||e.version!==1?null:{version:1,...t}}var Lt=6291456,Rt=e=>typeof e==`object`&&!!e&&!Array.isArray(e),H=e=>typeof e==`string`&&e.length>0&&e.length<=240;function zt(e){let{runId:t,sessionId:n,scope:r,turnId:i,requestId:a,requestType:o,expiresAt:s}=e;if(!H(t)||!H(n)||!H(r)||!H(i)||!H(a)||o!==`approval`&&o!==`question`||typeof s!=`number`||!Number.isSafeInteger(s))return null;let c=de(e.view);return c?{runId:t,sessionId:n,scope:r,turnId:i,requestId:a,requestType:o,expiresAt:s,view:c}:null}function Bt(e){return JSON.stringify([e.runId,e.sessionId,e.scope,e.turnId,e.requestId,e.requestType,e.view])}function Vt(e){let t=e.view.fields;return t.length>0&&(e.requestType===`approval`?t.length===1&&!t[0].multiSelect&&!t[0].allowFreeform&&t[0].options.length>0:t.every(e=>e.options.length>0||e.allowFreeform))}function Ht(e,t,n={}){let a={...t},o=e.ownerDocument,s=o.createElement(`section`);s.className=`native-requests`,s.hidden=!0,s.setAttribute(`aria-label`,`Live runtime requests`);let c=o.createElement(`p`);c.className=`native-request-status`;let l=o.createElement(`p`);l.className=`native-request-announcer`,l.setAttribute(`role`,`status`),l.setAttribute(`aria-live`,`polite`),l.setAttribute(`aria-atomic`,`true`);let u=o.createElement(`h2`);u.className=`native-request-title`;let d=o.createElement(`p`);d.className=`native-request-context`;let f=o.createElement(`div`);f.className=`native-request-controls`;let p=de(`Refresh requests`,()=>{n.onRefresh?n.onRefresh():F()});s.append(u,d,c,f,p);let m=[...e.children].find(e=>e.classList.contains(`chat-input-area`));e.insertBefore(l,m??null),e.insertBefore(s,m??null);let h=null,g=null,_=null,v,y=0,b=0,x=!1,S=!1,C=!1,w=!1,T=n.health??`healthy`,ee=0,te=!1,ne=!1,E=()=>!x&&(n.isCurrent?.()??!0),re=0,ie=null,D=null,ae=!1,O=null,k=o.defaultView,oe=()=>{ae=!0,++re,D=null},se=()=>{ae=!1},ce=e=>{s.contains(e.target)||(++re,D=null)};o.addEventListener(`focusin`,ce),k?.addEventListener(`blur`,oe),k?.addEventListener(`focus`,se);function le(){return ae?null:s.contains(o.activeElement)?re:C&&o.activeElement===o.body?ie:null}function ue(t=!0){if(D===null)return;if(ae||D!==re){D=null;return}let n=s.isConnected&&!s.hidden?f.querySelector(`input:not(:disabled), textarea:not(:disabled), button:not(:disabled)[aria-disabled="false"]`)??p:e.querySelector(`#chatInput`)??o.getElementById(`chatInput`);n?.isConnected&&!n.hasAttribute(`disabled`)&&n.focus({preventScroll:!0}),t&&!C&&(D=null)}function de(e,t){let n=o.createElement(`button`);return n.type=`button`,n.textContent=e,n.addEventListener(`click`,t),n}function A(e,t=!1){t&&(O=e);let n=(T===`healthy`?``:T===`unknown`?`Live request updates not connected. `:`Connection lost. Live request updates unavailable. `)+(te&&T!==`healthy`?`Manually refreshed; updates remain unavailable. `:``)+e;c.textContent!==n&&(c.textContent=n);let r=T===`healthy`&&e===`No pending runtime requests.`?O??e:n;l.textContent!==r&&(l.textContent=r)}function j(){f.querySelectorAll(`button`).forEach(e=>{let t=w||C||!S;e.disabled=w||C||!S&&o.activeElement!==e,e.setAttribute(`aria-disabled`,String(t))}),f.querySelectorAll(`input, textarea`).forEach(e=>{e.disabled=C}),s.setAttribute(`aria-busy`,String(C))}function M(e=le()){D=e,clearTimeout(v),v=void 0,h=null,S=!1,b++,u.textContent=``,d.textContent=``,f.replaceChildren(),ue(!1)}function N(){clearTimeout(v),h&&!w&&(v=setTimeout(()=>{if(E()){if(h&&h.expiresAt>Date.now()){N();return}M(),A(T===`healthy`?`Request expired. Checking pending requests.`:`Request expired. Refresh requests to check what is pending.`,!0),F(`auto`)}},Math.min(2147483647,Math.max(0,h.expiresAt-Date.now()))))}function P(e){u.textContent=e.view.title,d.textContent=`Execution scope: ${e.scope} · Run: ${e.runId}`;let t=e.view.fields;if(!Vt(e))return;let n=b,r=e=>{b===n&&fe(e)},i=o.createElement(`form`);i.noValidate=!0;let a=[];for(let[n,s]of t.entries()){let t=o.createElement(`fieldset`),c=o.createElement(`legend`);c.textContent=s.label,t.append(c);let l=[];for(let i of s.options)if(e.requestType===`approval`)t.append(de(i.label,()=>r({optionId:i.id})));else{let e=o.createElement(`label`),r=o.createElement(`input`);r.type=s.multiSelect?`checkbox`:`radio`,r.name=`native-question-${n}`,r.value=i.id,e.append(r,o.createTextNode(i.label)),t.append(e),l.push({id:i.id,input:r})}let u=null;if(e.requestType===`question`&&s.allowFreeform){!s.multiSelect&&l.length&&t.append(de(`Clear selection`,()=>{l.forEach(e=>{e.input.checked=!1})}));let e=o.createElement(`label`);e.append(o.createTextNode(`Other answer`)),u=o.createElement(`textarea`),u.maxLength=2e3,e.append(u),t.append(e)}if(e.requestType===`question`){let e=o.createElement(`p`);e.textContent=s.multiSelect?`Choose at least one answer.`:`Choose exactly one answer.`,t.append(e)}a.push({field:s,choices:l,text:u}),i.append(t)}if(e.requestType===`question`){let e=o.createElement(`button`);e.type=`submit`,e.textContent=`Submit answers`,i.append(e)}i.addEventListener(`submit`,t=>{if(t.preventDefault(),e.requestType!==`question`||!E()||w||C||!S||b!==n)return;let i=0,o=[];for(let{field:e,choices:t,text:n}of a){let r=t.filter(e=>e.input.checked).map(e=>e.id),a=n?.value??``,s=a.length>0,c=r.length+(s&&a.trim()?1:0);if(s&&(!e.allowFreeform||!a.trim()||a.length>2e3)||(e.multiSelect?c<1||r.length>e.options.length:c!==1)){A(`Answer every question. Choose one answer for single-choice questions; other answers must be nonblank and at most 2,000 characters.`);return}i+=a.length,o.push([e.id,{selected:r,...s?{text:a}:{}}])}if(i>8e3){A(`Keep all other answers within 8,000 characters in total.`);return}r({answers:Object.fromEntries(o)})}),i.append(de(`Cancel request`,()=>r({optionId:null}))),f.append(i)}async function fe(e){let t=h;if(!E()||w||C||!S||!t)return;if(t.expiresAt<=Date.now()){M(),A(`Request expired.`,!0),await F(`auto`);return}ie=le();let n=ie;C=!0,S=!1;let a=b,o=ee;++y,g?.abort();let s=new AbortController;_=s,O=null,j(),A(`Sending response.`);let c=`optionId`in e&&e.optionId===null?`Request cancelled.`:`Response accepted.`,l=!1;try{let n=await r(`/api/runtime/requests/`+encodeURIComponent(t.requestId),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({runId:t.runId,sessionId:t.sessionId,scope:t.scope,turnId:t.turnId,response:e})},s.signal,65536);if(!Rt(n)||n.ok!==!0||!Rt(n.data)||n.data.accepted!==!0)throw Error(`unconfirmed`);l=!0}catch(e){c=e instanceof i&&e.status===409?`Request expired or was already answered. Pending requests refreshed.`:`Response could not be confirmed. Check pending requests before trying again.`}finally{_===s&&(_=null),C=!1}if(!E())return;if(w||o!==ee){j();return}if(b!==a){j(),ue();return}l?M(n):S=!1,j(),A(c,!0);let u=y+1;await F(`auto`),!x&&!w&&S&&y===u&&!l&&h&&Bt(h)===Bt(t)&&A(c)}async function F(e=`manual`){if(!E()||e===`auto`&&T!==`healthy`)return;let t=++y;g?.abort();let n=new AbortController;g=n,S=!1,j(),!h&&!ne&&(s.hidden=!1,A(`Loading pending requests.`));try{if(!H(a.sessionId)||!H(a.scope))throw Error(`invalid_identity`);let i=await r(`/api/runtime/requests?sessionId=`+encodeURIComponent(a.sessionId),{method:`GET`},n.signal,Lt);if(!E()||t!==y||n.signal.aborted)return;if(!Rt(i)||i.ok!==!0||!Rt(i.data))throw Error(`invalid_list`);let o=i.data.requests;if(!Array.isArray(o)||o.length>128)throw Error(`invalid_list`);let c=new Set,l=null,u=null,d=!1;for(let e of o){if(!Rt(e)){d=!0;continue}if(H(e.requestId)){if(c.has(e.requestId))throw Error(`duplicate_request`);c.add(e.requestId)}if(e.sessionId!==a.sessionId)continue;let t=zt(e);if(!t){d=!0;continue}t.expiresAt<=Date.now()||(l??=t,h&&Bt(h)===Bt(t)&&(u=t))}let f=u??l;h&&!u&&A(h.expiresAt<=Date.now()?`Request expired.`:`Request is no longer pending.`,!0),u||M(),h=f,S=!0,w=!1,ne=!0,te=e===`manual`,s.hidden=!h&&!d&&T===`healthy`,h?(u||(O=null),A(Vt(h)?(O?O+` `:``)+`Runtime is waiting for your response.`:`This request cannot be answered here. Refresh requests or use Stop.`),u||P(h),N()):A(d?`This request cannot be displayed safely. Refresh requests or use Stop.`:`No pending runtime requests.`),j(),ue()}catch{if(!E()||t!==y||n.signal.aborted)return;s.hidden=!1,j(),A(`Pending requests could not be loaded. Refresh requests to retry.`)}finally{g===n&&(g=null)}}function pe(e){x||(T=e,te=!1,++ee,w=!0,S=!1,++y,g?.abort(),g=null,clearTimeout(v),v=void 0,s.hidden=!1,j(),A(`Your draft is kept. Refresh requests to check what is pending.`))}return T!==`healthy`&&pe(T),n.autoStart!==!1&&F(`auto`),{refresh:F,setStreamHealth:pe,suspend(){pe(`unavailable`)},dispose(){x||(x=!0,++y,g?.abort(),_?.abort(),M(),s.remove(),l.remove(),ue(),o.removeEventListener(`focusin`,ce),k?.removeEventListener(`blur`,oe),k?.removeEventListener(`focus`,se))}}}function Ut(t){let n=`unknown`,r=0,i=0,a=null,o=``,s=null,c=null,u=!1,d=null,f=()=>l(`/api/orchestrate/snapshot`),p=e=>a?.sessionId===e.sessionId&&a.scope===e.scope;function m(e){let n=t.host();if(n&&!s){if(!c){let e=n.ownerDocument;c=e.createElement(`section`),c.className=`native-requests`,c.setAttribute(`aria-label`,`Live runtime requests`);let t=e.createElement(`p`);t.className=`native-request-status`,t.setAttribute(`role`,`status`);let r=e.createElement(`button`);r.type=`button`,r.textContent=`Refresh requests`,r.addEventListener(`click`,()=>{_()}),c.append(t,r);let i=[...n.children].find(e=>e.classList.contains(`chat-input-area`));n.insertBefore(c,i??null)}c.querySelector(`p`).textContent=e}}function h(){s?.dispose(),s=null,a=null,e.activityIdentity=null}function g(){if(u||n!==`healthy`||!s||d?.epoch===r&&d.path===o&&(!d.panel||d.panel===s))return;u=!0;let e=r;queueMicrotask(()=>{u=!1,e===r&&n===`healthy`&&o===f()&&s?.refresh(`auto`)})}async function _(){if(d?.epoch===r&&d.path===f()&&d.panel===s)return;let e={epoch:r,path:f(),panel:s};d=e;try{(!s||o!==f())&&await t.refreshSnapshot(),e.epoch===r&&e.path===f()&&o===e.path&&(!e.panel||e.panel===s)&&await s?.refresh(`manual`)}catch{m(`Request identity could not be loaded. Refresh requests to retry.`)}finally{d===e&&(d=null)}}function v(e){n=e,++r,s?.setStreamHealth(e),m(e===`healthy`?`Loading request identity.`:`Live request updates unavailable. Refresh requests to check pending requests manually.`)}return{channelChanged(){v(`unknown`)},unavailable(){v(`unavailable`)},sseOpened(){v(`healthy`)},invalidateIdentity(){++r,++i,h(),m(`Request identity changed. Refresh requests to check this conversation.`)},beginSnapshot(){let l=f();o&&o!==l&&h();let u=r,d=++i,v=()=>u===r&&d===i&&l===f();return{path:l,isCurrent:v,accept(r){if(!v())return;let i=N(r);if(!i){h(),m(`Request identity unavailable. Refresh requests to retry.`);return}if(!p(i)){h(),a=i,o=l;let e=t.host();e&&(c?.remove(),c=null,s=Ht(e,i,{health:n,autoStart:!1,onRefresh:()=>{_()},isCurrent:()=>a===i&&o===f()}))}e.activityIdentity=i,g()},fail(){v()&&(h(),m(`Request identity could not be loaded. Refresh requests to retry.`))}}},event(e,t){if(n!==`healthy`||!a||o!==f())return;let r=e===`agent_runtime_requests_changed`?It(t):null,i=e===`agent_runtime`?re(t):null,s=typeof t==`object`&&!!t&&t.sseReplay===!0;(r&&p(r)||i&&p(i)&&(i.kind===`request`||i.kind===`request-settled`||i.kind===`turn-end`&&!s))&&g()},dispose(){++r,++i,h(),c?.remove(),c=null}}}j({currentMessage:()=>e.currentAgentDiv,useMessage:t=>{e.currentAgentDiv=t},createMessage:Wt,reconcileMessage:(e,t)=>m().reconcileMessage(e,t),replaceAnswer:fe,evicted:ae,closeTrace:()=>{a(()=>import(`./trace-drawer-B4O0Tl1M.js`).then(e=>e.closeTraceDrawer()),__vite__mapDeps([0])).catch(e=>console.warn(`[activity] trace close unavailable`,e))},inspectTrace:(e,t)=>{a(()=>import(`./trace-drawer-B4O0Tl1M.js`).then(n=>n.openTraceDrawer(e,void 0,t)),__vite__mapDeps([0])).catch(e=>console.warn(`[activity] trace unavailable`,e))}});function Wt(){return he(),S(`agent`,``)}var U=Ut({host:()=>document.querySelector(`.chat-area`),refreshSnapshot:()=>Z(`native-request-retry`,{hydrateRun:!0})}),W=[`I`,`P`,`A`,`B`,`C`],G=null;function Gt(e,t,n){let r=W.indexOf(n);if(r<0)return;let i=e.getBoundingClientRect(),a=t.offsetWidth||36,o=document.getElementById(`dot-${n}`);if(!o)return;let s=W[r+1],c=s?document.getElementById(`dot-${s}`):null;if(c){let e=o.getBoundingClientRect(),n=c.getBoundingClientRect(),r=(e.right+n.left)/2;t.style.transform=`translateX(${r-i.left-a/2}px)`}else{let e=o.getBoundingClientRect();t.style.transform=`translateX(${e.left-i.left+e.width/2-a/2}px)`}}var Kt={},qt=8,Jt=64,K=null,q=0,Yt=[],Xt=new Map;function Zt(e){return e!==null&&(Yt.includes(e)||A(e)||!!v(e)?.answerSource)}function Qt(e){let t=Number(e);return Number.isFinite(t)&&t>0?Math.floor(t):null}function $t(e,t){if(e&&t!=null)for(t>(Xt.get(e)||0)&&Xt.set(e,t);Xt.size>Jt;){let e=null;for(let t of Xt.keys())if(t!==K){e=t;break}if(!e)break;Xt.delete(e)}}function en(e){let t=new Map;for(let n of e?.toolLog||[]){let e=typeof n?.traceRunId==`string`&&n.traceRunId?n.traceRunId:null,r=Qt(n?.traceSeq);e&&r!=null&&r>(t.get(e)||0)&&t.set(e,r)}return t}function tn(e,t,n){return!n||!e||t==null?!1:t<=(Xt.get(e)||0)}function nn(e){++J;let t=e??K;K=null,q=0,t&&!Yt.includes(t)&&(Yt.push(t),Yt.length>qt&&Yt.shift())}function rn(e){e&&e!==K&&(++J,K=e,q=0)}function an(e){if(e?.running){typeof e.traceRunId==`string`&&e.traceRunId&&(K=e.traceRunId),q=typeof e.textLen==`number`?e.textLen:(e.text||``).length;for(let[t,n]of en(e))$t(t,n)}}var on=``,J=0,Y=!1,sn=!1,cn=0,ln=[],un=!1;function X(){Y=!1,_(!1),k(!1),K&&te(K)}function dn(){ie(),ln=[],cn=0,un=!1}function fn(t,n=`Activity preview is unavailable at its retention limit. The final answer will still appear here.`){let r=e.currentAgentDiv;if((!r||r.dataset.traceRunId!==t)&&(r=Wt(),e.currentAgentDiv=r,r.dataset.traceRunId=t),!r.querySelector(`.activity-unavailable`)){let e=r.ownerDocument.createElement(`p`);e.className=`activity-unavailable`,e.setAttribute(`role`,`status`),e.textContent=n,r.querySelector(`.agent-body`)?.prepend(e)}rn(t)}function pn(e){let t=new TextEncoder().encode(JSON.stringify(e)).length;if(ln.length>=256||cn+t>1048576){ln=[],cn=0,un=!0;return}ln.push(e),cn+=t}function mn(t){let n=e.activityIdentity;if(!Y||!n){pn({gap:t});return}t.sessionId===n.sessionId&&t.scope===n.scope&&(v(t.runId)?te(t.runId):K===t.runId&&e.currentAgentDiv&&fn(t.runId,`Activity is incomplete. Runtime updates were not recorded; the final answer remains available separately.`))}function hn(t,n=!1){let r=e.activityIdentity;if(!Y||!r){pn({event:t,replay:n});return}if(t.sessionId!==r.sessionId||t.scope!==r.scope)return;let i=v(t.runId);if(i&&i.model.identity.turnId!==t.turnId)return;let a=Zt(t.runId);if(a&&!i||!i&&K&&K!==t.runId&&(t.kind!==`turn-start`||n))return;let o;try{o=ne(t,!K||K===t.runId)??(t.kind===`turn-end`&&i?.model.end?.seq===t.seq?i:null)}catch(e){if(!(e instanceof M))throw e;!n&&(!K||K===t.runId||t.kind===`turn-start`)&&fn(t.runId);return}if(o){if(++J,un&&te(t.runId),t.kind!==`turn-end`){!a&&!n&&rn(t.runId);return}a||K&&K!==t.runId||e.currentAgentDiv!==o.message||(o.answerSource=`canonical`,nn(t.runId),P(t.finalText,void 0,t.finalText===null?`absent`:`present`,t.runId,o.cacheScope,t.sessionId),Nt())}}function gn(t){if(t.isEmployee===!0)return;let n=typeof t.traceRunId==`string`&&t.traceRunId?t.traceRunId:null,r=t.runtimeFinality===`present`||t.runtimeFinality===`absent`?t.runtimeFinality:void 0;if(!n&&!r&&(t.error===!0||K&&v(K))){typeof t.text==`string`&&t.text&&E(o(t.text),`tool-activity`);return}let i=n?v(n):void 0,a=!!i&&r!==`absent`&&typeof t.text==`string`;if(Zt(n)){if(a&&n)ee(n,t.text);else if(!i&&n&&r!==`absent`&&typeof t.text==`string`){let r=N(t);r&&r.sessionId===e.activityIdentity?.sessionId&&se({...r,runId:n,text:t.text})}return}if(n&&K&&n!==K)return;w(n,t.runtimeStatus??(t.error===!0?`error`:void 0)),i&&(i.answerSource=`compatibility`),nn(n);let s=t.type===`agent_done`?t.toolLog:void 0;i&&n?(P(r===`absent`?null:t.text||``,s,r??(a?`present`:void 0),n,i.cacheScope,i.model.identity.sessionId),r===`absent`&&typeof t.text==`string`&&t.text&&E(o(t.text.slice(0,500)),`activity-diagnostic`)):P(t.text||``,s,r),Nt()}function _n(t){let n=e.currentAgentDiv,r=v(t.runId);if(n&&K===t.runId&&e.activityIdentity?.sessionId===t.sessionId&&n===t.message&&n.dataset.traceRunId===t.runId&&!Zt(t.runId)&&!(r&&(r.model.identity.sessionId!==t.sessionId||r.model.identity.scope!==t.scope||t.turnId!==void 0&&r.model.identity.turnId!==t.turnId))){if(w(t.runId,t.status),nn(t.runId),n.dataset.activitySaved===`true`){r&&(r.answerSource=`saved`),delete n.dataset.activityRecovering,he(),x(`idle`);return}r?r.answerSource=t.answer.kind===`saved`?`saved`:`unavailable`:t.answer.kind!==`saved`&&e.activityIdentity&&T({runId:t.runId,sessionId:t.sessionId,scope:e.activityIdentity.scope,message:n,cacheScope:t.cacheScope}),P(t.answer.kind===`saved`?t.answer.message.content:null,void 0,t.answer.kind===`saved`?`present`:`absent`,t.runId,t.cacheScope,t.sessionId),Nt()}}function vn(){ce(e.activityIdentity,{terminal:_n,refreshIdentity:()=>Z(`history-identity`,{hydrateRun:!0})}),k(Y)}function yn(){let t=ln;ln=[],cn=0;for(let e of t)`event`in e?hn(e.event,e.replay):mn(e.gap);un&&K&&e.currentAgentDiv&&!v(K)&&fn(K,`Activity is incomplete. Updates were dropped while reconnecting; the final answer remains available separately.`),un=!1}var bn=0,xn=null,Sn=0,Cn=!1,wn=0,Tn=750,En=750;async function Dn(t={}){let n=U.beginSnapshot(),i=J,o;try{o=await r(n.path,{method:`GET`},new AbortController().signal,16777216)}catch(e){throw n.isCurrent()&&X(),n.fail(),e}if(!n.isCurrent())return;n.accept(o?.activityIdentity),Y=sn&&e.activityIdentity!==null,oe(e.activityIdentity),_(Y),vn(),on=String(o.orc.scope||``),Hn(o.orc.state),Pn(o.orc.ctx||null),Nn(o.heartbeat||{pending:0,deferredPending:0}),Mn(o.workers),C(o.runtime.queuePending),me(o.queued||[]),Qe(o.queued||[]);let s=Zt(o.activeRun?.traceRunId??null),c=i===J;t.hydrateRun&&c&&!s&&(ge(o.activeRun),an(o.activeRun),o.activeRun?.running&&o.activeRun.traceRunId&&e.currentAgentDiv&&(e.currentAgentDiv.dataset.traceRunId=o.activeRun.traceRunId,e.activityIdentity&&(e.currentAgentDiv.dataset.messageSessionId=e.activityIdentity.sessionId),y(o.activeRun.traceRunId,e.currentAgentDiv))),Bn(),c&&(o.runtime.busy&&!s?x(`running`):I()||x(`idle`)),Y&&yn();let l=document.getElementById(`chatMessages`);l&&le(l),Y&&t.hydrateRun&&e.currentAgentDiv&&K&&(c||v(K)?.degraded)&&D(e.currentAgentDiv,K,!0),a(()=>import(`./employees-DNTPcxtZ.js`).then(e=>{typeof e.renderEmployees==`function`&&e.renderEmployees()}),__vite__mapDeps([0]))}function Z(e=`manual`,t={}){let n=Date.now();return t.hydrateRun?Dn(t):xn||(n-Sn<Tn?Promise.resolve():(Sn=n,xn=Dn(t).catch(t=>{throw console.warn(`[ws] orchestrate snapshot sync failed (${e})`,t),t}).finally(()=>{xn=null}),xn))}function On(e){return e===`iframe-visible`||e===`pageshow`||e===`discard`||e===`visibilitychange`}function kn(e){h(e),a(()=>import(`./ui-_cqgseFX.js`).then(async t=>{if(On(e)&&bn>0)try{await t.loadMessages(),bn=Date.now()}catch(t){console.warn(`[ws] restore loadMessages failed (${e})`,t)}await Z(e,{hydrateRun:!0})}),__vite__mapDeps([0])).catch(()=>{}).finally(()=>{g(e)})}function Q(e){let t=Date.now();!On(e)&&t-wn<En||(wn=t,kn(e))}function An(e){let t=Array.isArray(e.changedKeys)?e.changedKeys:[];if(t.includes(`presentation`)&&a(()=>import(`./presentation-preference-BYEPPRPg.js`).then(e=>e.refreshPresentationSettings()),[]).catch(e=>console.warn(`[ws] presentation refresh failed`,e)),t.includes(`multiSession`)){window.location.reload();return}t.includes(`workingDir`)||t.includes(`projectDirs`)?a(()=>import(`./ui-_cqgseFX.js`).then(async e=>{try{await e.loadMessages(),bn=Date.now()}catch(e){console.warn(`[ws] settings scope loadMessages failed`,e)}await Z(`settings_change`).catch(()=>{}).finally(()=>e.reconcileChatBottomAfterRestore(`settings_change`))}),__vite__mapDeps([0])):Z(`settings_change`).catch(()=>{}),a(()=>import(`./settings-core-BofMyzL9.js`).then(t=>t.refreshHeaderFromSettingsChange(e)),__vite__mapDeps([0])).catch(()=>{})}function jn(){Cn||(Cn=!0,window.addEventListener(`focus`,()=>{Q(`focus`)}),window.addEventListener(`pageshow`,e=>{e.persisted&&Q(`pageshow`)}),document.addEventListener(`visibilitychange`,()=>{document.visibilityState===`visible`&&Q(`visibilitychange`)}),document.addEventListener(`resume`,()=>{Q(`resume`)}),`wasDiscarded`in document&&document.wasDiscarded&&Q(`discard`),window.addEventListener(`message`,e=>{e.data?.type===`jaw-preview-visibility`&&e.data.visible&&Q(`iframe-visible`)}))}function Mn(e){for(let e of Object.keys(Kt))delete Kt[e];for(let t of e)t.state===`running`&&t.phase&&(Kt[t.agentId]={phase:t.phase,phaseLabel:t.phaseLabel||``})}function Nn(t){let n={pending:Number(t?.pending||0),deferredPending:Number(t?.deferredPending||0),...t?.reason?{reason:t.reason}:{},...t?.policy?{policy:t.policy}:{},...t?.jobId?{jobId:t.jobId}:{},...t?.jobName?{jobName:t.jobName}:{}};e.heartbeatRuntime=n;let r=document.getElementById(`pabcHeartbeatStatus`);if(r){if(n.reason===`pabcd_active`&&n.deferredPending>0){let e=n.jobName?`: ${n.jobName}`:``;r.textContent=`heartbeat deferred (${n.deferredPending})${e}`,r.hidden=!1}else r.textContent=``,r.hidden=!0}}function Pn(t){e.orcTaskAnchor=String(t?.taskAnchor||``).trim(),e.orcResolvedSelection=t?.resolvedSelection||null;let n=document.getElementById(`pabcTaskAnchor`);n&&(e.orcTaskAnchor?(n.textContent=`anchor: ${e.orcResolvedSelection?.index?`${e.orcResolvedSelection.index}. `:``}${e.orcTaskAnchor}`,n.hidden=!1):(n.textContent=``,n.hidden=!0),Rn(t?.interview||null))}var Fn=(()=>{try{return localStorage.getItem(`jaw:interviewCollapsed`)===`1`}catch{return!1}})();function In(e){Fn=e;try{localStorage.setItem(`jaw:interviewCollapsed`,e?`1`:`0`)}catch{}let t=document.getElementById(`interviewPanel`);if(!t)return;t.classList.toggle(`collapsed`,e);let n=t.querySelector(`.iv-toggle`);n&&n.setAttribute(`aria-expanded`,String(!e))}function Ln(e){let t=e=>{switch(e){case`max`:return 1;case`xhigh`:return .8;case`high`:return .6;case`medium`:return .4;default:return .2}},n=e=>{switch(e){case`max`:return`#2196f3`;case`xhigh`:return`#4caf50`;case`high`:return`#8bc34a`;case`medium`:return`#ff9800`;default:return`#f44336`}},r=[t(e.goal),t(e.constraint),t(e.success),t(e.ontology)],i=1-r.reduce((e,t)=>e+t,0)/r.length,a=Object.values(e).every(e=>e===`max`)||i<=.2?`🟢 Ready`:i<=.4?`🟡 Almost`:`🔴 Needs work`,o=(e,r)=>{let i=t(r);return`<div style="display:flex;align-items:center;gap:6px;font-size:12px">
16
16
  <span style="width:70px;color:var(--text-secondary)">${e}</span>
17
17
  <div style="flex:1;height:5px;background:var(--bg-tertiary);border-radius:3px">
18
18
  <div style="width:${i*100}%;height:100%;background:${n(r)};border-radius:3px;transition:width .3s"></div>
@@ -46,4 +46,4 @@ import{t as e}from"./state-Dl-xxPoS.js";import{i as t,t as n}from"./api-CUtiCd2-
46
46
  </div>`};n.innerHTML=`<div style="font-size:11px;font-weight:600;margin-bottom:4px;color:var(--text-secondary)">Build Budget</div>
47
47
  ${r(`Workers`,e.spent.workerDispatches,e.maxWorkerDispatches)}
48
48
  ${r(`Self-heal`,e.spent.selfHealRetries,e.maxSelfHealRetries)}
49
- ${r(`Verify`,e.spent.verificationRounds,e.maxVerificationRounds)}`}async function Bn(){try{let t=await fetch(`${n}/api/goal`);if(!t.ok)return;let r=await t.json();r.goal?e.activeGoal={id:r.goal.id,objective:r.goal.objective,status:r.goal.status,createdAt:r.goal.createdAt,updatedAt:r.goal.updatedAt,lastCheckpointSummary:r.goal.lastCheckpoint?.summary,nextAction:r.goal.lastCheckpoint?.nextAction}:e.activeGoal=null,Vn()}catch{}}function Vn(){let t=document.getElementById(`goalCockpit`);if(!t)return;let n=e.activeGoal;if(!n||n.status===`complete`||n.status===`cancelled`){t.hidden=!0,t.innerHTML=``;return}t.hidden=!1,t.replaceChildren();let r=n.status===`paused`?`paused`:n.status===`blocked`?`blocked`:`active`,i=document.createElement(`span`);i.className=`goal-objective`,i.title=n.objective,i.textContent=n.objective;let a=document.createElement(`span`);if(a.className=`goal-status goal-status--${r}`,a.textContent=n.status,t.append(i,a),n.nextAction){let e=document.createElement(`span`);e.className=`goal-next`,e.textContent=n.nextAction,t.append(e)}}function Hn(t,n){let r=new Set([`IDLE`,`I`,`P`,`A`,`B`,`C`,`D`]).has(t)?t:`IDLE`;if(e.orcState=r,r===`IDLE`||r===`D`)document.body.removeAttribute(`data-orc-state`),document.body.style.removeProperty(`--orc-glow`);else{document.body.setAttribute(`data-orc-state`,r);let e=`--orc-glow-${r}`,t=getComputedStyle(document.documentElement).getPropertyValue(e).trim();document.body.style.setProperty(`--orc-glow`,t)}document.body.classList.add(`orc-pulse`),setTimeout(()=>document.body.classList.remove(`orc-pulse`),700);let i=document.getElementById(`orcStateBadge`);i&&(i.textContent={IDLE:``,I:`INTERVIEW`,P:`PLAN`,A:`AUDIT`,B:`BUILD`,C:`CHECK`,D:`DONE`}[r],i.style.display=r===`IDLE`?`none`:`inline-block`);let a=document.getElementById(`pabcRoadmap`),o=document.getElementById(`sharkRunner`),s=document.getElementById(`pabcBrand`);if(a&&o){if(!a.dataset.resizeObserved){a.dataset.resizeObserved=`1`,new ResizeObserver(()=>{G&&o.classList.contains(`running`)&&Gt(a,o,G)}).observe(a);let e=0;window.addEventListener(`resize`,()=>{cancelAnimationFrame(e),e=requestAnimationFrame(()=>{G&&o.classList.contains(`running`)&&Gt(a,o,G)})})}if(r===`IDLE`)a.classList.remove(`visible`,`shimmer-out`),o.classList.remove(`running`),G=null;else if(r===`D`){W.forEach(e=>{let t=document.getElementById(`dot-${e}`);t&&(t.className=`pabc-dot done`,t.setAttribute(`data-phase`,e))});for(let e=0;e<W.length;e++){let t=document.getElementById(`pabc-conn-${e}`);t&&(t.className=`pabc-connector done`)}o.classList.remove(`running`),G=null,a.classList.add(`shimmer-out`),setTimeout(()=>a.classList.remove(`visible`,`shimmer-out`),1e3)}else{a.classList.remove(`shimmer-out`),a.classList.add(`visible`),o.classList.add(`running`);let e=W.indexOf(r);W.forEach((t,n)=>{let r=document.getElementById(`dot-${t}`);r&&(r.className=`pabc-dot ${n<e?`done`:n===e?`active`:`future`}`,r.setAttribute(`data-phase`,t))});for(let t=0;t<W.length;t++){let n=document.getElementById(`pabc-conn-${t}`);n&&(n.className=`pabc-connector ${t<e?`done`:``}`)}G=r,requestAnimationFrame(()=>Gt(a,o,r))}s&&n&&(s.textContent=n)}}var Un=!1,Wn=Promise.resolve(),Gn=0;function Kn(){sn=!1,X(),U.channelChanged(),jn(),Un||(Un=!0,ar()),rr(),Ye(u())}var qn=Kn;function Jn(e){sn=e===`sse`,X(),e===`sse`&&U.sseOpened(),console.log(`[${e}] connected`),tr=2e3,Qn();let t=Date.now()-bn<1e4;Wn=a(()=>import(`./ui-C0o427q6.js`).then(async n=>{if(n.cleanupToolActivity(),!t)try{await n.loadMessages(),bn=Date.now()}catch(t){console.error(`[${e}] loadMessages failed`,t)}await Z(`reconnect`,{hydrateRun:!0}).catch(()=>{}).finally(()=>n.reconcileChatBottomAfterRestore(`reconnect`)),a(()=>import(`./memory-BgUF3M9l.js`).then(e=>e.refreshMemorySidebar()),__vite__mapDeps([0])).catch(()=>{}),a(()=>import(`./bgtask-badge-DHo2mkMI.js`).then(e=>e.refreshBgtaskBadge()),__vite__mapDeps([0])).catch(()=>{})}),__vite__mapDeps([0]))}function Yn(){X(),un=!0,h(`replay_gap`),Wn=a(()=>import(`./ui-C0o427q6.js`).then(async e=>{try{await e.loadMessages(),bn=Date.now()}catch(e){console.error(`[sse] replay gap loadMessages failed`,e)}await Z(`replay_gap`,{hydrateRun:!0}).catch(()=>{}).finally(()=>e.reconcileChatBottomAfterRestore(`replay_gap`))}),__vite__mapDeps([0]))}var Xn=8e3,Zn=null;function Qn(){Zn!==null&&(window.clearTimeout(Zn),Zn=null)}function $n(){sn=!1,X(),U.unavailable(),console.log(`[channel] disconnected`),he(),Zn===null&&(Zn=window.setTimeout(()=>{Zn=null,x(`idle`),E(`${f.exec} ${s(`ws.disconnected`)}`,`tool-activity`)},Xn))}var $=null,er=!1,tr=2e3,nr=3e4;function rr(){if($){er=!0;try{$.close()}catch{}$=null}}function ir(){if($)return;console.warn(`[channel] /api/events unavailable — falling back to legacy WebSocket`);let e=`ws://${location.host}`,t=new WebSocket(`${e}${n}/?lang=${u()}`);$=t,er=!1,t.onmessage=e=>{let t;try{t=JSON.parse(e.data)}catch{console.warn(`[ws] malformed message:`,e.data);return}if(!t||typeof t!=`object`||typeof t.type!=`string`){console.warn(`[ws] invalid message shape:`,t);return}or(t)};let r=!1;t.onopen=()=>{r=!0,tr=2e3,Jn(`ws`)},t.onclose=()=>{if($===t&&($=null),er){er=!1;return}if(r){$n(),setTimeout(Kn,2e3);return}tr=Math.min(tr*2,nr),setTimeout(Kn,tr)}}function ar(){Ke(`widget`,`widget_updated`,e=>{let t=e.chatId,n=e.widgetId;typeof t==`string`&&typeof n==`string`&&a(()=>import(`./iframe-renderer-DSLsfZq8.js`).then(e=>e.refreshFileWidget(t,n)),__vite__mapDeps([0])).catch(e=>console.warn(`[widget] refresh failed:`,e.message))}),Ke(`*`,null,e=>{U.event(String(e.event),e),or({...e,type:e.event})}),Ue(()=>Jn(`sse`)),We(()=>$n()),Ge(()=>{sn=!1,X(),U.unavailable(),ir()})}function or(t){if(t.type===`agent_runtime`){let e=re(t);e&&hn(e,t.sseReplay===!0);return}if(t.type===`agent_runtime_gap`){let e=t,n=N(e);n&&typeof e.runId==`string`&&e.runId.length>0&&e.runId.length<=240&&mn({...n,runId:e.runId});return}if(t.type===`agent_tool`){if(I())return;let e=typeof t.traceRunId==`string`&&t.traceRunId?t.traceRunId:null,n=Qt(t.traceSeq);if(Zt(e)||tn(e,n,t.sseReplay===!0))return;++J,t.isEmployee!==!0&&rn(e);let r=t.toolType===`thinking`?`thinking`:t.toolType===`search`?`search`:t.toolType===`subagent`?`subagent`:`tool`;F({id:`step-${Date.now()}-${Math.random().toString(36).slice(2,6)}`,type:r,icon:t.icon||f.tool,rawIcon:t.rawIcon||t.icon||``,label:t.label||``,isEmployee:t.isEmployee===!0,detail:t.detail||``,stepRef:t.stepRef||``,traceRunId:t.traceRunId||``,traceSeq:t.traceSeq,detailAvailable:t.detailAvailable,detailBytes:t.detailBytes,rawRetentionStatus:t.rawRetentionStatus,status:t.status||`running`,startTime:typeof t.startedAt==`number`&&t.startedAt>0?t.startedAt:Date.now()},typeof t.startedAt==`number`&&t.startedAt>0?t.startedAt:void 0),$t(e,n)}else if(t.type===`agent_output`||t.type===`agent_chunk`){if(I())return;let e=typeof t.traceRunId==`string`&&t.traceRunId?t.traceRunId:null;if(Zt(e))return;rn(e);let n=t.text||``;if(e&&typeof t.textLen==`number`){if(t.textLen<=q){t.sseReplay!==!0&&t.textLen<q&&(console.warn(`[ws] live agent_output behind applied cursor — resync (${t.textLen} < ${q})`),q=t.textLen);return}let e=t.textLen-q;e<n.length&&(n=n.slice(-e)),q=t.textLen}++J,_e(n)}else if(t.type===`agent_status`){if(!t.running&&I())return;t.running&&I()&&pe(),++J,t.running===void 0?x(t.status||`idle`):x(t.running?`running`:`idle`),t.agentId&&t.phase&&(Kt[t.agentId]={phase:t.phase,phaseLabel:t.phaseLabel||``},a(()=>import(`./employees-BchFBkDz.js`).then(e=>e.loadEmployees()),__vite__mapDeps([0])))}else if(t.type===`bgtask_update`)a(()=>import(`./bgtask-badge-DHo2mkMI.js`).then(e=>e.applyBgtaskUpdate(t)),__vite__mapDeps([0])).catch(()=>{});else if(t.type===`queue_update`)C(t.pending||0),Array.isArray(t.queued)&&Qe(t.queued),Z(`queue_update`).catch(()=>{});else if(t.type===`agent_retry`){let e=Number(t.delay??0),n=t.reason,r=o(String(n||`429`));E(s(e>0?`ws.retry`:`ws.retryNow`,{cli:o(t.cli||``),reason:r,delay:e}),`tool-activity`)}else if(t.type===`agent_fallback`)E(s(`ws.fallback`,{from:o(t.from||``),to:o(t.to||``)}),`tool-activity`);else if(t.type===`agent_smoke`)E(`${f.warning} ${o(t.cli||`agent`)}: smoke response detected — auto-continuing`,`tool-activity`);else if(t.type===`goal_done`)e.activeGoal=null,Vn(),E(`🎯 Goal completed${t.source===`ai_output`?` (detected from AI output)`:``}`,`tool-activity`);else if(t.type===`goal_cancel`)e.activeGoal=null,Vn(),E(`🎯 Goal cancelled`,`tool-activity`);else if(t.type===`schedule_wakeup`)E(`⏰ Wakeup scheduled in ${t.delaySeconds}s — ${o(String(t.reason||``))}`,`tool-activity`);else if(t.type===`goal_continuation_limit`)E(`⚠️ Goal continuation limit reached (${t.attempts} attempts)`,`tool-activity`);else if(t.type===`goal_continuation`)E(`🎯 Active goal — auto-continuing`,`tool-activity`);else if(t.type===`agent_done`){if(t.steered===!0){let e=N(t);e&&t.traceRunId&&b({...e,runId:t.traceRunId})}t.steered||I()||gn(t)}else if(t.type===`orchestrate_done`)gn(t);else if(t.type===`clear`){++J,ue(),dn(),oe(e.activityIdentity),d(),he(),m().clear();let t=document.getElementById(`chatMessages`);t&&(t.innerHTML=``),vn(),O(e.activityIdentity?.sessionId??null,new Set),a(()=>import(`./idb-cache-CFBnPfHz.js`).then(e=>e.clearScopedCache()),[]).catch(()=>{})}else if(t.type===`session_reset`)E(`${f.refresh} Session reset — history preserved`,`tool-activity`);else if(t.type===`agent_added`||t.type===`agent_updated`||t.type===`agent_deleted`)a(()=>import(`./employees-BchFBkDz.js`).then(e=>e.loadEmployees()),__vite__mapDeps([0]));else if(t.type===`heartbeat_pending`){let e={pending:t.pending||0,deferredPending:t.deferredPending||0};t.reason!==void 0&&(e.reason=t.reason),t.policy!==void 0&&(e.policy=t.policy),t.jobId!==void 0&&(e.jobId=t.jobId),t.jobName!==void 0&&(e.jobName=t.jobName),Nn(e)}else if(t.type===`orc_state`)sr(t);else if(t.type===`memory_status`)a(()=>import(`./memory-BgUF3M9l.js`).then(e=>e.refreshMemorySidebar()),__vite__mapDeps([0]));else if(t.type===`steer_started`){let e=N(t);if(e&&t.traceRunId&&b({...e,runId:t.traceRunId}),t.mode===`native-input`||t.mode===`cancel-reprompt`||K&&v(K))return;ve(),nn(null),P(``),x(`steering`)}else if(t.type===`new_message`&&(t.source===`telegram`||t.source===`discord`||t.source===`slack`||t.source===`bgtask`||t.source===`cli`||t.source===`goal`||t.external===!0||t.fromQueue===!0)){let e=t.role===`assistant`?`agent`:t.role||`user`,n=t.content||``,r=t.cli;a(()=>import(`./message-history-DkB768L3.js`).then(i=>{if(i.historyReloadInFlight()){i.loadMessages().then(()=>i.loadMessages()).catch(e=>console.warn(`[ws] new_message reload after in-flight failed`,e));return}S(e,n,r,{...t.steered===void 0?{}:{steered:t.steered}})}),__vite__mapDeps([0]))}else t.type===`system_notice`?E(`ℹ️ ${o(t.text||``)}`,`tool-activity`):t.type===`replay_gap`?Yn():t.type===`worker_stalled`?E(`⚠️ Worker stalled: ${o(t.employeeName||t.agentId||``)}`,`tool-activity`):t.type===`steer_context_lost`?E(`⚠️ 이전 턴의 진행 내용을 살리지 못했습니다 — 새 턴은 그 맥락 없이 시작합니다.`,`tool-activity`):t.type===`worker_disconnected`?E(`🔌 Worker disconnected: ${o(t.agentId||``)} (exit ${o(String(t.exitCode??`?`))})`,`tool-activity`):t.type===`worker_timeout`?E(`⏱️ Worker timed out: ${o(t.employeeName||t.agentId||``)}`,`tool-activity`):t.type===`alert_escalation`?E(o(t.message||``),`tool-activity`):t.type===`schedule_wakeup_failed`?E(`⚠️ Wakeup failed — ${o(String(t.reason||``))}: ${o(String(t.error||``))}`,`tool-activity`):t.type===`goal_continuation_failed`?E(`⚠️ Goal continuation failed: ${o(String(t.error||``))}`,`tool-activity`):t.type===`settings_change`?An(t):t.type===`session_list`?c(t):(t.type===`session_switched`||t.type===`session_created`)&&(ue(),X(),dn(),U.invalidateIdentity(),window.location.reload())}function sr(e){let t=++Gn;Wn.then(()=>{t===Gn&&Ft(e.scope,on)&&(Hn(typeof e.state==`string`?e.state:`IDLE`,e.title),Pn({taskAnchor:e.taskAnchor||null,resolvedSelection:e.resolvedSelection||null,interview:e.interview||null}),zn(e.buildBudget||null,typeof e.state==`string`?e.state:`IDLE`))})}function cr(e){return Kt[e]||null}var lr=`sidebarState`,ur=900,dr=768;function fr(){return window.innerWidth<=dr}function pr(){document.body.classList.remove(`left-expanded`,`right-expanded`)}function mr(e){let t=`${e}-expanded`,n=e===`left`?`right-expanded`:`left-expanded`,r=!document.body.classList.contains(t);document.body.classList.remove(n),document.body.classList.toggle(t,r)}function hr(){let e={};try{e=JSON.parse(localStorage.getItem(lr)||`{}`)}catch{}e.left&&document.body.classList.add(`left-collapsed`),e.right&&document.body.classList.add(`right-collapsed`);let t=fr();document.getElementById(`toggleLeft`)?.addEventListener(`click`,_r),document.getElementById(`toggleRight`)?.addEventListener(`click`,vr),window.addEventListener(`resize`,()=>{let e=fr();if(window.innerWidth>ur){pr();let e={};try{e=JSON.parse(localStorage.getItem(lr)||`{}`)}catch{}document.body.classList.toggle(`left-collapsed`,!!e.left),document.body.classList.toggle(`right-collapsed`,!!e.right)}else document.body.classList.remove(`left-collapsed`,`right-collapsed`),e!==t&&pr();t=e,xr()}),window.innerWidth<=ur&&(document.body.classList.remove(`left-collapsed`,`right-collapsed`),fr()&&pr()),xr()}function gr(){return window.innerWidth<=ur}function _r(){gr()?mr(`left`):document.body.classList.toggle(`left-collapsed`),Sr(),xr()}function vr(){gr()?mr(`right`):document.body.classList.toggle(`right-collapsed`),br()&&document.getElementById(`tabAgents`)?.classList.contains(`active`)&&a(()=>import(`./employees-BchFBkDz.js`).then(e=>e.loadEmployees(!0)),__vite__mapDeps([0])),Sr(),xr()}function yr(){return gr()?document.body.classList.contains(`left-expanded`):!document.body.classList.contains(`left-collapsed`)}function br(){return gr()?document.body.classList.contains(`right-expanded`):!document.body.classList.contains(`right-collapsed`)}function xr(){let e=document.getElementById(`toggleLeft`),t=document.getElementById(`toggleRight`);e&&(e.innerHTML=yr()?f.chevronLeft:f.chevronRight),t&&(t.innerHTML=br()?f.chevronRight:f.chevronLeft)}function Sr(){localStorage.setItem(lr,JSON.stringify({left:document.body.classList.contains(`left-collapsed`),right:document.body.classList.contains(`right-collapsed`)}))}export{Kn as a,Z as c,lt as d,je as f,vr as i,Pt as l,br as n,cr as o,_r as r,qn as s,hr as t,Mt as u};
49
+ ${r(`Verify`,e.spent.verificationRounds,e.maxVerificationRounds)}`}async function Bn(){try{let t=await fetch(`${n}/api/goal`);if(!t.ok)return;let r=await t.json();r.goal?e.activeGoal={id:r.goal.id,objective:r.goal.objective,status:r.goal.status,createdAt:r.goal.createdAt,updatedAt:r.goal.updatedAt,lastCheckpointSummary:r.goal.lastCheckpoint?.summary,nextAction:r.goal.lastCheckpoint?.nextAction}:e.activeGoal=null,Vn()}catch{}}function Vn(){let t=document.getElementById(`goalCockpit`);if(!t)return;let n=e.activeGoal;if(!n||n.status===`complete`||n.status===`cancelled`){t.hidden=!0,t.innerHTML=``;return}t.hidden=!1,t.replaceChildren();let r=n.status===`paused`?`paused`:n.status===`blocked`?`blocked`:`active`,i=document.createElement(`span`);i.className=`goal-objective`,i.title=n.objective,i.textContent=n.objective;let a=document.createElement(`span`);if(a.className=`goal-status goal-status--${r}`,a.textContent=n.status,t.append(i,a),n.nextAction){let e=document.createElement(`span`);e.className=`goal-next`,e.textContent=n.nextAction,t.append(e)}}function Hn(t,n){let r=new Set([`IDLE`,`I`,`P`,`A`,`B`,`C`,`D`]).has(t)?t:`IDLE`;if(e.orcState=r,r===`IDLE`||r===`D`)document.body.removeAttribute(`data-orc-state`),document.body.style.removeProperty(`--orc-glow`);else{document.body.setAttribute(`data-orc-state`,r);let e=`--orc-glow-${r}`,t=getComputedStyle(document.documentElement).getPropertyValue(e).trim();document.body.style.setProperty(`--orc-glow`,t)}document.body.classList.add(`orc-pulse`),setTimeout(()=>document.body.classList.remove(`orc-pulse`),700);let i=document.getElementById(`orcStateBadge`);i&&(i.textContent={IDLE:``,I:`INTERVIEW`,P:`PLAN`,A:`AUDIT`,B:`BUILD`,C:`CHECK`,D:`DONE`}[r],i.style.display=r===`IDLE`?`none`:`inline-block`);let a=document.getElementById(`pabcRoadmap`),o=document.getElementById(`sharkRunner`),s=document.getElementById(`pabcBrand`);if(a&&o){if(!a.dataset.resizeObserved){a.dataset.resizeObserved=`1`,new ResizeObserver(()=>{G&&o.classList.contains(`running`)&&Gt(a,o,G)}).observe(a);let e=0;window.addEventListener(`resize`,()=>{cancelAnimationFrame(e),e=requestAnimationFrame(()=>{G&&o.classList.contains(`running`)&&Gt(a,o,G)})})}if(r===`IDLE`)a.classList.remove(`visible`,`shimmer-out`),o.classList.remove(`running`),G=null;else if(r===`D`){W.forEach(e=>{let t=document.getElementById(`dot-${e}`);t&&(t.className=`pabc-dot done`,t.setAttribute(`data-phase`,e))});for(let e=0;e<W.length;e++){let t=document.getElementById(`pabc-conn-${e}`);t&&(t.className=`pabc-connector done`)}o.classList.remove(`running`),G=null,a.classList.add(`shimmer-out`),setTimeout(()=>a.classList.remove(`visible`,`shimmer-out`),1e3)}else{a.classList.remove(`shimmer-out`),a.classList.add(`visible`),o.classList.add(`running`);let e=W.indexOf(r);W.forEach((t,n)=>{let r=document.getElementById(`dot-${t}`);r&&(r.className=`pabc-dot ${n<e?`done`:n===e?`active`:`future`}`,r.setAttribute(`data-phase`,t))});for(let t=0;t<W.length;t++){let n=document.getElementById(`pabc-conn-${t}`);n&&(n.className=`pabc-connector ${t<e?`done`:``}`)}G=r,requestAnimationFrame(()=>Gt(a,o,r))}s&&n&&(s.textContent=n)}}var Un=!1,Wn=Promise.resolve(),Gn=0;function Kn(){sn=!1,X(),U.channelChanged(),jn(),Un||(Un=!0,ar()),rr(),Ye(u())}var qn=Kn;function Jn(e){sn=e===`sse`,X(),e===`sse`&&U.sseOpened(),console.log(`[${e}] connected`),tr=2e3,Qn();let t=Date.now()-bn<1e4;Wn=a(()=>import(`./ui-_cqgseFX.js`).then(async n=>{if(n.cleanupToolActivity(),!t)try{await n.loadMessages(),bn=Date.now()}catch(t){console.error(`[${e}] loadMessages failed`,t)}await Z(`reconnect`,{hydrateRun:!0}).catch(()=>{}).finally(()=>n.reconcileChatBottomAfterRestore(`reconnect`)),a(()=>import(`./memory-DA8x5314.js`).then(e=>e.refreshMemorySidebar()),__vite__mapDeps([0])).catch(()=>{}),a(()=>import(`./bgtask-badge-HIrvpcr_.js`).then(e=>e.refreshBgtaskBadge()),__vite__mapDeps([0])).catch(()=>{})}),__vite__mapDeps([0]))}function Yn(){X(),un=!0,h(`replay_gap`),Wn=a(()=>import(`./ui-_cqgseFX.js`).then(async e=>{try{await e.loadMessages(),bn=Date.now()}catch(e){console.error(`[sse] replay gap loadMessages failed`,e)}await Z(`replay_gap`,{hydrateRun:!0}).catch(()=>{}).finally(()=>e.reconcileChatBottomAfterRestore(`replay_gap`))}),__vite__mapDeps([0]))}var Xn=8e3,Zn=null;function Qn(){Zn!==null&&(window.clearTimeout(Zn),Zn=null)}function $n(){sn=!1,X(),U.unavailable(),console.log(`[channel] disconnected`),he(),Zn===null&&(Zn=window.setTimeout(()=>{Zn=null,x(`idle`),E(`${f.exec} ${s(`ws.disconnected`)}`,`tool-activity`)},Xn))}var $=null,er=!1,tr=2e3,nr=3e4;function rr(){if($){er=!0;try{$.close()}catch{}$=null}}function ir(){if($)return;console.warn(`[channel] /api/events unavailable — falling back to legacy WebSocket`);let e=`ws://${location.host}`,t=new WebSocket(`${e}${n}/?lang=${u()}`);$=t,er=!1,t.onmessage=e=>{let t;try{t=JSON.parse(e.data)}catch{console.warn(`[ws] malformed message:`,e.data);return}if(!t||typeof t!=`object`||typeof t.type!=`string`){console.warn(`[ws] invalid message shape:`,t);return}or(t)};let r=!1;t.onopen=()=>{r=!0,tr=2e3,Jn(`ws`)},t.onclose=()=>{if($===t&&($=null),er){er=!1;return}if(r){$n(),setTimeout(Kn,2e3);return}tr=Math.min(tr*2,nr),setTimeout(Kn,tr)}}function ar(){Ke(`widget`,`widget_updated`,e=>{let t=e.chatId,n=e.widgetId;typeof t==`string`&&typeof n==`string`&&a(()=>import(`./iframe-renderer-DigNC5FU.js`).then(e=>e.refreshFileWidget(t,n)),__vite__mapDeps([0])).catch(e=>console.warn(`[widget] refresh failed:`,e.message))}),Ke(`*`,null,e=>{U.event(String(e.event),e),or({...e,type:e.event})}),Ue(()=>Jn(`sse`)),We(()=>$n()),Ge(()=>{sn=!1,X(),U.unavailable(),ir()})}function or(t){if(t.type===`agent_runtime`){let e=re(t);e&&hn(e,t.sseReplay===!0);return}if(t.type===`agent_runtime_gap`){let e=t,n=N(e);n&&typeof e.runId==`string`&&e.runId.length>0&&e.runId.length<=240&&mn({...n,runId:e.runId});return}if(t.type===`agent_tool`){if(I())return;let e=typeof t.traceRunId==`string`&&t.traceRunId?t.traceRunId:null,n=Qt(t.traceSeq);if(Zt(e)||tn(e,n,t.sseReplay===!0))return;++J,t.isEmployee!==!0&&rn(e);let r=t.toolType===`thinking`?`thinking`:t.toolType===`search`?`search`:t.toolType===`subagent`?`subagent`:`tool`;F({id:`step-${Date.now()}-${Math.random().toString(36).slice(2,6)}`,type:r,icon:t.icon||f.tool,rawIcon:t.rawIcon||t.icon||``,label:t.label||``,isEmployee:t.isEmployee===!0,detail:t.detail||``,stepRef:t.stepRef||``,traceRunId:t.traceRunId||``,traceSeq:t.traceSeq,detailAvailable:t.detailAvailable,detailBytes:t.detailBytes,rawRetentionStatus:t.rawRetentionStatus,status:t.status||`running`,startTime:typeof t.startedAt==`number`&&t.startedAt>0?t.startedAt:Date.now()},typeof t.startedAt==`number`&&t.startedAt>0?t.startedAt:void 0),$t(e,n)}else if(t.type===`agent_output`||t.type===`agent_chunk`){if(I())return;let e=typeof t.traceRunId==`string`&&t.traceRunId?t.traceRunId:null;if(Zt(e))return;rn(e);let n=t.text||``;if(e&&typeof t.textLen==`number`){if(t.textLen<=q){t.sseReplay!==!0&&t.textLen<q&&(console.warn(`[ws] live agent_output behind applied cursor — resync (${t.textLen} < ${q})`),q=t.textLen);return}let e=t.textLen-q;e<n.length&&(n=n.slice(-e)),q=t.textLen}++J,_e(n)}else if(t.type===`agent_status`){if(!t.running&&I())return;t.running&&I()&&pe(),++J,t.running===void 0?x(t.status||`idle`):x(t.running?`running`:`idle`),t.agentId&&t.phase&&(Kt[t.agentId]={phase:t.phase,phaseLabel:t.phaseLabel||``},a(()=>import(`./employees-DNTPcxtZ.js`).then(e=>e.loadEmployees()),__vite__mapDeps([0])))}else if(t.type===`bgtask_update`)a(()=>import(`./bgtask-badge-HIrvpcr_.js`).then(e=>e.applyBgtaskUpdate(t)),__vite__mapDeps([0])).catch(()=>{});else if(t.type===`queue_update`)C(t.pending||0),Array.isArray(t.queued)&&Qe(t.queued),Z(`queue_update`).catch(()=>{});else if(t.type===`agent_retry`){let e=Number(t.delay??0),n=t.reason,r=o(String(n||`429`));E(s(e>0?`ws.retry`:`ws.retryNow`,{cli:o(t.cli||``),reason:r,delay:e}),`tool-activity`)}else if(t.type===`agent_fallback`)E(s(`ws.fallback`,{from:o(t.from||``),to:o(t.to||``)}),`tool-activity`);else if(t.type===`agent_smoke`)E(`${f.warning} ${o(t.cli||`agent`)}: smoke response detected — auto-continuing`,`tool-activity`);else if(t.type===`goal_done`)e.activeGoal=null,Vn(),E(`🎯 Goal completed${t.source===`ai_output`?` (detected from AI output)`:``}`,`tool-activity`);else if(t.type===`goal_cancel`)e.activeGoal=null,Vn(),E(`🎯 Goal cancelled`,`tool-activity`);else if(t.type===`schedule_wakeup`)E(`⏰ Wakeup scheduled in ${t.delaySeconds}s — ${o(String(t.reason||``))}`,`tool-activity`);else if(t.type===`goal_continuation_limit`)E(`⚠️ Goal continuation limit reached (${t.attempts} attempts)`,`tool-activity`);else if(t.type===`goal_continuation`)E(`🎯 Active goal — auto-continuing`,`tool-activity`);else if(t.type===`agent_done`){if(t.steered===!0){let e=N(t);e&&t.traceRunId&&b({...e,runId:t.traceRunId})}t.steered||I()||gn(t)}else if(t.type===`orchestrate_done`)gn(t);else if(t.type===`clear`){++J,ue(),dn(),oe(e.activityIdentity),d(),he(),m().clear();let t=document.getElementById(`chatMessages`);t&&(t.innerHTML=``),vn(),O(e.activityIdentity?.sessionId??null,new Set),a(()=>import(`./idb-cache-CFBnPfHz.js`).then(e=>e.clearScopedCache()),[]).catch(()=>{})}else if(t.type===`session_reset`)E(`${f.refresh} Session reset — history preserved`,`tool-activity`);else if(t.type===`agent_added`||t.type===`agent_updated`||t.type===`agent_deleted`)a(()=>import(`./employees-DNTPcxtZ.js`).then(e=>e.loadEmployees()),__vite__mapDeps([0]));else if(t.type===`heartbeat_pending`){let e={pending:t.pending||0,deferredPending:t.deferredPending||0};t.reason!==void 0&&(e.reason=t.reason),t.policy!==void 0&&(e.policy=t.policy),t.jobId!==void 0&&(e.jobId=t.jobId),t.jobName!==void 0&&(e.jobName=t.jobName),Nn(e)}else if(t.type===`orc_state`)sr(t);else if(t.type===`memory_status`)a(()=>import(`./memory-DA8x5314.js`).then(e=>e.refreshMemorySidebar()),__vite__mapDeps([0]));else if(t.type===`steer_started`){let e=N(t);if(e&&t.traceRunId&&b({...e,runId:t.traceRunId}),t.mode===`native-input`||t.mode===`cancel-reprompt`||K&&v(K))return;ve(),nn(null),P(``),x(`steering`)}else if(t.type===`new_message`&&(t.source===`telegram`||t.source===`discord`||t.source===`slack`||t.source===`bgtask`||t.source===`cli`||t.source===`goal`||t.external===!0||t.fromQueue===!0)){let e=t.role===`assistant`?`agent`:t.role||`user`,n=t.content||``,r=t.cli;a(()=>import(`./message-history-CGOgZH4l.js`).then(i=>{if(i.historyReloadInFlight()){i.loadMessages().then(()=>i.loadMessages()).catch(e=>console.warn(`[ws] new_message reload after in-flight failed`,e));return}S(e,n,r,{...t.steered===void 0?{}:{steered:t.steered}})}),__vite__mapDeps([0]))}else t.type===`system_notice`?E(`ℹ️ ${o(t.text||``)}`,`tool-activity`):t.type===`replay_gap`?Yn():t.type===`worker_stalled`?E(`⚠️ Worker stalled: ${o(t.employeeName||t.agentId||``)}`,`tool-activity`):t.type===`steer_context_lost`?E(`⚠️ 이전 턴의 진행 내용을 살리지 못했습니다 — 새 턴은 그 맥락 없이 시작합니다.`,`tool-activity`):t.type===`worker_disconnected`?E(`🔌 Worker disconnected: ${o(t.agentId||``)} (exit ${o(String(t.exitCode??`?`))})`,`tool-activity`):t.type===`worker_timeout`?E(`⏱️ Worker timed out: ${o(t.employeeName||t.agentId||``)}`,`tool-activity`):t.type===`alert_escalation`?E(o(t.message||``),`tool-activity`):t.type===`schedule_wakeup_failed`?E(`⚠️ Wakeup failed — ${o(String(t.reason||``))}: ${o(String(t.error||``))}`,`tool-activity`):t.type===`goal_continuation_failed`?E(`⚠️ Goal continuation failed: ${o(String(t.error||``))}`,`tool-activity`):t.type===`settings_change`?An(t):t.type===`session_list`?c(t):(t.type===`session_switched`||t.type===`session_created`)&&(ue(),X(),dn(),U.invalidateIdentity(),window.location.reload())}function sr(e){let t=++Gn;Wn.then(()=>{t===Gn&&Ft(e.scope,on)&&(Hn(typeof e.state==`string`?e.state:`IDLE`,e.title),Pn({taskAnchor:e.taskAnchor||null,resolvedSelection:e.resolvedSelection||null,interview:e.interview||null}),zn(e.buildBudget||null,typeof e.state==`string`?e.state:`IDLE`))})}function cr(e){return Kt[e]||null}var lr=`sidebarState`,ur=900,dr=768;function fr(){return window.innerWidth<=dr}function pr(){document.body.classList.remove(`left-expanded`,`right-expanded`)}function mr(e){let t=`${e}-expanded`,n=e===`left`?`right-expanded`:`left-expanded`,r=!document.body.classList.contains(t);document.body.classList.remove(n),document.body.classList.toggle(t,r)}function hr(){let e={};try{e=JSON.parse(localStorage.getItem(lr)||`{}`)}catch{}e.left&&document.body.classList.add(`left-collapsed`),e.right&&document.body.classList.add(`right-collapsed`);let t=fr();document.getElementById(`toggleLeft`)?.addEventListener(`click`,_r),document.getElementById(`toggleRight`)?.addEventListener(`click`,vr),window.addEventListener(`resize`,()=>{let e=fr();if(window.innerWidth>ur){pr();let e={};try{e=JSON.parse(localStorage.getItem(lr)||`{}`)}catch{}document.body.classList.toggle(`left-collapsed`,!!e.left),document.body.classList.toggle(`right-collapsed`,!!e.right)}else document.body.classList.remove(`left-collapsed`,`right-collapsed`),e!==t&&pr();t=e,xr()}),window.innerWidth<=ur&&(document.body.classList.remove(`left-collapsed`,`right-collapsed`),fr()&&pr()),xr()}function gr(){return window.innerWidth<=ur}function _r(){gr()?mr(`left`):document.body.classList.toggle(`left-collapsed`),Sr(),xr()}function vr(){gr()?mr(`right`):document.body.classList.toggle(`right-collapsed`),br()&&document.getElementById(`tabAgents`)?.classList.contains(`active`)&&a(()=>import(`./employees-DNTPcxtZ.js`).then(e=>e.loadEmployees(!0)),__vite__mapDeps([0])),Sr(),xr()}function yr(){return gr()?document.body.classList.contains(`left-expanded`):!document.body.classList.contains(`left-collapsed`)}function br(){return gr()?document.body.classList.contains(`right-expanded`):!document.body.classList.contains(`right-collapsed`)}function xr(){let e=document.getElementById(`toggleLeft`),t=document.getElementById(`toggleRight`);e&&(e.innerHTML=yr()?f.chevronLeft:f.chevronRight),t&&(t.innerHTML=br()?f.chevronRight:f.chevronLeft)}function Sr(){localStorage.setItem(lr,JSON.stringify({left:document.body.classList.contains(`left-collapsed`),right:document.body.classList.contains(`right-collapsed`)}))}export{Kn as a,Z as c,lt as d,je as f,vr as i,Pt as l,br as n,cr as o,_r as r,qn as s,hr as t,Mt as u};
@@ -1,4 +1,4 @@
1
- import{t as e}from"./state-Dl-xxPoS.js";import{i as t}from"./api-CUtiCd2-.js";import{A as n,O as r,P as i}from"./render-D8dVQ_bm.js";import{a,t as o}from"./icons-CVkqyECl.js";var s=[`productivity`,`communication`,`devtools`,`ai-media`,`utility`,`smarthome`,`automation`];function c(e,t){return!t||[e.id,e.name,e.description,e.category,e.requires?.env?.join(` `),e.requires?.bins?.join(` `),e.install].filter(Boolean).join(` `).toLowerCase().includes(t)}async function l(){try{let t=await n(`/api/skills`);e.allSkills=await t.json(),u()}catch{let e=document.getElementById(`skillsList`);e&&(e.innerHTML=`<div style="color:var(--text-dim);font-size:11px">${i(`skill.loadFail`)}</div>`)}}function u(){let t=document.getElementById(`skillsList`),n=document.getElementById(`skillsCount`);if(!t||!n)return;let l=e.allSkills,u=l;e.currentSkillFilter===`installed`?u=l.filter(e=>e.enabled):e.currentSkillFilter===`other`?u=l.filter(e=>!s.includes(e.category||``)):e.currentSkillFilter!==`all`&&(u=l.filter(t=>t.category===e.currentSkillFilter));let d=e.currentSkillSearch.trim().toLowerCase();u=u.filter(e=>c(e,d));let f=l.filter(e=>e.enabled).length;if(n.textContent=d?i(`skill.countFiltered`,{shown:u.length,active:f,total:l.length}):i(`skill.count`,{active:f,total:l.length}),!u.length){t.innerHTML=`<div class="skill-empty">${r(i(`skill.search.empty`))}</div>`;return}t.innerHTML=u.map(e=>{let t=[];return e.requires?.env&&t.push(`${o.key} `+e.requires.env.map(e=>r(e)).join(`, `)),e.requires?.bins&&t.push(`${o.settings} `+e.requires.bins.map(e=>r(e)).join(`, `)),e.install&&t.push(r(e.install)),`
1
+ import{t as e}from"./state-Dl-xxPoS.js";import{i as t}from"./api-CUtiCd2-.js";import{A as n,O as r,P as i}from"./render-F6xF6w6c.js";import{a,t as o}from"./icons-CVkqyECl.js";var s=[`productivity`,`communication`,`devtools`,`ai-media`,`utility`,`smarthome`,`automation`];function c(e,t){return!t||[e.id,e.name,e.description,e.category,e.requires?.env?.join(` `),e.requires?.bins?.join(` `),e.install].filter(Boolean).join(` `).toLowerCase().includes(t)}async function l(){try{let t=await n(`/api/skills`);e.allSkills=await t.json(),u()}catch{let e=document.getElementById(`skillsList`);e&&(e.innerHTML=`<div style="color:var(--text-dim);font-size:11px">${i(`skill.loadFail`)}</div>`)}}function u(){let t=document.getElementById(`skillsList`),n=document.getElementById(`skillsCount`);if(!t||!n)return;let l=e.allSkills,u=l;e.currentSkillFilter===`installed`?u=l.filter(e=>e.enabled):e.currentSkillFilter===`other`?u=l.filter(e=>!s.includes(e.category||``)):e.currentSkillFilter!==`all`&&(u=l.filter(t=>t.category===e.currentSkillFilter));let d=e.currentSkillSearch.trim().toLowerCase();u=u.filter(e=>c(e,d));let f=l.filter(e=>e.enabled).length;if(n.textContent=d?i(`skill.countFiltered`,{shown:u.length,active:f,total:l.length}):i(`skill.count`,{active:f,total:l.length}),!u.length){t.innerHTML=`<div class="skill-empty">${r(i(`skill.search.empty`))}</div>`;return}t.innerHTML=u.map(e=>{let t=[];return e.requires?.env&&t.push(`${o.key} `+e.requires.env.map(e=>r(e)).join(`, `)),e.requires?.bins&&t.push(`${o.settings} `+e.requires.bins.map(e=>r(e)).join(`, `)),e.install&&t.push(r(e.install)),`
2
2
  <div class="skill-card ${e.enabled?`enabled`:``}">
3
3
  <div class="skill-card-header">
4
4
  <span class="skill-emoji">${e.emoji?a(e.emoji):o.tool}</span>
@@ -0,0 +1 @@
1
+ import{n as e}from"./skills-0aA-RuN9.js";export{e as loadSkills};
@@ -1,4 +1,4 @@
1
- import{n as e}from"./api-CUtiCd2-.js";import{O as t,P as n}from"./render-D8dVQ_bm.js";import{t as r}from"./locale-B9w_kUtW.js";var i={activeCli:o(`activeCli`,2,1,2,2,1,3),model:o(`model`,2,1,1,2,1,2),effort:o(`effort`,2,1,1),permissions:o(`permissions`,2,1,1),flushAgent:o(`flushAgent`,2,1,1,2,1,3),employees:o(`employees`,3,3,2,4,1,2),skills:o(`skills`,2,1,1,4,1,3),activeChannel:o(`activeChannel`,2,1,1),telegram:{...o(`telegram`,2,1,2,8),docLinks:[{url:`https://t.me/BotFather`,labelKey:`help.telegram.link.botfather`},{url:`https://core.telegram.org/bots/tutorial`,labelKey:`help.telegram.link.docs`}]},discord:{...o(`discord`,2,1,2,9),docLinks:[{url:`https://discord.com/developers/applications`,labelKey:`help.discord.link.portal`},{url:`https://discord.com/developers/docs/getting-started`,labelKey:`help.discord.link.docs`}]},slack:{...o(`slack`,2,1,2,9),docLinks:[{url:`https://api.slack.com/apps`,labelKey:`help.slack.link.portal`},{url:`https://docs.slack.dev/apis/events-api/using-socket-mode/`,labelKey:`help.slack.link.docs`}]},fallbackOrder:o(`fallbackOrder`,2,1,1,2,1,3),mcp:o(`mcp`,2,1,1,4,1,5),memory:o(`memory`,2,1,2,4,1,2),stt:o(`stt`,2,1,1),promptTemplates:o(`promptTemplates`,2,1,1),chatInput:o(`chatInput`,3,2,2),orchestration:o(`orchestration`,3,2,2,8,1,8),attachments:o(`attachments`,3,2,2),diagrams:o(`diagrams`,3,2,2),keyboardShortcuts:o(`keyboardShortcuts`,3,2,2,3,2,3),session:o(`session`,3,1,2,8,1,9),cliTools:o(`cliTools`,3,1,2,6,1,9),agentControl:o(`agentControl`,3,1,2,6,1,6),goals:o(`goals`,3,1,2,10,1,25)};function a(e){return typeof e==`string`&&Object.prototype.hasOwnProperty.call(i,e)}function o(e,t,n,r,i=2,a=1,o=0){return{titleKey:`help.${e}.title`,introKey:`help.${e}.intro`,effectKey:`help.${e}.effect`,useWhenKeys:s(`help.${e}.use`,t),howToKeys:s(`help.${e}.howTo`,i),exampleKeys:s(`help.${e}.example`,a),avoidWhenKeys:s(`help.${e}.avoid`,n),relatedKeys:s(`help.${e}.related`,r),...o>0?{subcmdKeys:s(`help.${e}.subcmd`,o)}:{}}}function s(e,t){return Array.from({length:t},(t,n)=>`${e}.${n+1}`)}var c=!1,l=null,u=null,d=null,f=null,p=null,m=!1;function h(){c||(c=!0,document.addEventListener(`click`,v),document.addEventListener(`keydown`,y,!0))}function g(e,t=null,n=[e]){if(!i[e]){console.warn(`[help-dialog] unknown topic:`,e);return}b(),p=t,x(e,T(n,e)),l?.classList.add(`open`),l?.setAttribute(`aria-hidden`,`false`),m=!0,requestAnimationFrame(()=>f?.focus())}function _(){if(!m)return;l?.classList.remove(`open`),l?.setAttribute(`aria-hidden`,`true`),m=!1;let e=p;p=null,e?.focus()}function v(e){let t=e.target?.closest(`[data-help-topic]`);if(!t)return;let n=t.getAttribute(`data-help-topic`);if(!a(n)){console.warn(`[help-dialog] invalid topic:`,n);return}e.preventDefault(),g(n,t,w(t.getAttribute(`data-help-topics`),n))}function y(e){m&&e.key===`Escape`&&(e.preventDefault(),e.stopImmediatePropagation(),_())}function b(){if(l&&u&&d&&f)return;l=document.createElement(`div`),l.id=`helpDialog`,l.className=`modal-overlay help-dialog-overlay`,l.setAttribute(`role`,`presentation`),l.setAttribute(`aria-hidden`,`true`),l.addEventListener(`click`,e=>{e.target===l&&_()});let e=document.createElement(`div`);e.className=`modal-box help-dialog-box`,e.setAttribute(`role`,`dialog`),e.setAttribute(`aria-modal`,`true`),e.setAttribute(`aria-labelledby`,`helpDialogTitle`),e.addEventListener(`click`,e=>e.stopPropagation());let t=document.createElement(`div`);t.className=`modal-header help-dialog-header`,u=document.createElement(`span`),u.id=`helpDialogTitle`,f=document.createElement(`button`),f.type=`button`,f.className=`btn-modal-close help-dialog-close`,f.setAttribute(`aria-label`,n(`help.close`)),f.textContent=`x`,f.addEventListener(`click`,()=>_()),d=document.createElement(`div`),d.className=`help-dialog-body`;let r=document.createElement(`div`);r.className=`modal-footer help-dialog-footer`;let i=document.createElement(`button`);i.type=`button`,i.className=`btn-save help-dialog-done`,i.textContent=n(`help.close`),i.addEventListener(`click`,()=>_()),t.append(u,f),r.append(i),e.append(t,d,r),l.append(e),document.body.append(l)}function x(e,t=[e]){if(!u||!d||!f)return;let r=i[e];u.textContent=n(r.titleKey),f.setAttribute(`aria-label`,n(`help.close`)),d.replaceChildren();let a=document.createElement(`div`);if(a.className=`help-dialog-content`,S(a,r),t.length<=1){d.append(a);return}let o=document.createElement(`div`);o.className=`help-dialog-layout`,o.append(C(t,e),a),d.append(o)}function S(e,t){t.docLinks?.length&&E(e,t.docLinks),D(e,n(`help.section.what`),n(t.introKey)),D(e,n(`help.section.effect`),n(t.effectKey),`help-effect-text`),O(e,n(`help.section.useWhen`),t.useWhenKeys),A(e,n(`help.section.howTo`),t.howToKeys),O(e,n(`help.section.example`),t.exampleKeys,!1,`help-example-list`),t.avoidWhenKeys?.length&&O(e,n(`help.section.avoidWhen`),t.avoidWhenKeys),t.subcmdKeys?.length&&j(e,n(`help.section.commands`),t.subcmdKeys),t.relatedKeys?.length&&O(e,n(`help.section.related`),t.relatedKeys,!0)}function C(e,t){let r=document.createElement(`nav`);r.className=`help-dialog-nav`,r.setAttribute(`aria-label`,n(`help.section.related`));for(let a of e){let o=i[a],s=document.createElement(`button`);s.type=`button`,s.className=`help-dialog-nav-item`,s.textContent=n(o.titleKey),a===t&&(s.classList.add(`active`),s.setAttribute(`aria-current`,`page`)),s.addEventListener(`click`,()=>x(a,e)),r.append(s)}return r}function w(e,t){return T(e?.split(/[\s,]+/).filter(Boolean)??[],t)}function T(e,t){let n=[];for(let t of e)a(t)&&!n.includes(t)&&n.push(t);return n.includes(t)||n.unshift(t),n}function E(e,t){let r=document.createElement(`section`);r.className=`help-dialog-section help-doc-links`;let i=document.createElement(`nav`);i.className=`help-doc-links-nav`;for(let e of t){let t=document.createElement(`a`);t.href=e.url,t.target=`_blank`,t.rel=`noopener noreferrer`,t.className=`help-doc-link`,t.textContent=n(e.labelKey);let r=document.createElement(`span`);r.className=`help-doc-link-icon`,r.textContent=`↗`,t.append(r),i.append(t)}r.append(i),e.append(r)}function D(e,t,n,r){let i=k(t),a=document.createElement(`p`);r&&(a.className=r),a.textContent=n,i.append(a),e.append(i)}function O(e,t,r,i=!1,a){let o=k(t),s=document.createElement(`ul`);s.className=a??(i?`help-related-list`:`help-dialog-list`);for(let e of r){let t=document.createElement(`li`);t.textContent=n(e),s.append(t)}o.append(s),e.append(o)}function k(e){let t=document.createElement(`section`);t.className=`help-dialog-section`;let n=document.createElement(`h3`);return n.textContent=e,t.append(n),t}function A(e,t,r){let i=k(t),a=document.createElement(`ol`);a.className=`help-dialog-list help-howto-list`;for(let e of r){let t=document.createElement(`li`);t.textContent=n(e),a.append(t)}i.append(a),e.append(i)}function j(e,t,r){let i=k(t),a=document.createElement(`dl`);a.className=`help-subcmd-list`;for(let e of r){let t=n(e),r=t.indexOf(` — `),i=r>=0?t.slice(0,r):t,o=r>=0?t.slice(r+3):``,s=document.createElement(`dt`);s.className=`help-subcmd-cmd`;let c=document.createElement(`code`);c.textContent=i,s.append(c);let l=document.createElement(`dd`);l.className=`help-subcmd-desc`,l.textContent=o,a.append(s,l)}i.append(a),e.append(i)}var M={mcp:`mcp`,memory:`memory`,model:`model`,effort:`effort`,cli:`activeCli`,skill:`skills`,employee:`employees`,orchestrate:`orchestration`,pabcd:`orchestration`,flush:`flushAgent`,fallback:`fallbackOrder`,prompt:`promptTemplates`,browser:`mcp`,status:`activeCli`,steer:`chatInput`,clear:`session`,compact:`session`,reset:`session`,purge:`session`,new:`session`,switch:`session`,sw:`session`,sessions:`session`,ss:`session`,version:`cliTools`,project:`cliTools`,proj:`cliTools`,ide:`cliTools`,file:`cliTools`,forward:`agentControl`,thought:`agentControl`,goal:`goals`,goalplan:`goals`,gd:`goals`,plan:`goals`,interview:`goals`,deliberate:`goals`,planaudit:`goals`,review:`goals`,search:`mcp`,team:`goals`,task:`goals`,help:`keyboardShortcuts`,h:`keyboardShortcuts`,commands:`keyboardShortcuts`,cmd:`keyboardShortcuts`,fork:`session`,quit:`session`,q:`session`,exit:`session`,telegram:`telegram`,discord:`discord`,slack:`slack`,stt:`stt`,attachments:`attachments`,diagrams:`diagrams`};function N(e){let t=e.replace(/^\//,``).trim().split(/\s+/);if(t.length<2||t[t.length-1].toLowerCase()!==`info`)return!1;let n=M[t[0].toLowerCase()];return n?(g(n),!0):!1}var P=[],F=[],I=-1,L=!1,R=null;function z(e){let t=String(e||``).slice(1).trim().split(/\s+/)[0]||``;return t.includes(`/`)||t.includes(`\\`)}var B=()=>document.getElementById(`cmdDropdown`),V=()=>document.getElementById(`chatInput`);function H(e){let t=String(e||``).toLowerCase();return P.filter(e=>`/${e.name}`.startsWith(t))}function U(e){let t=e.workflow?.workflowArgs||[];return t.length?t.map(e=>e.required?`<${e.name}>`:`[${e.name}]`).join(` `):e.args||``}function W(e){let n=e.workflow;return n?`<span class="cmd-meta">
1
+ import{n as e}from"./api-CUtiCd2-.js";import{O as t,P as n}from"./render-F6xF6w6c.js";import{t as r}from"./locale-B9w_kUtW.js";var i={activeCli:o(`activeCli`,2,1,2,2,1,3),model:o(`model`,2,1,1,2,1,2),effort:o(`effort`,2,1,1),permissions:o(`permissions`,2,1,1),flushAgent:o(`flushAgent`,2,1,1,2,1,3),employees:o(`employees`,3,3,2,4,1,2),skills:o(`skills`,2,1,1,4,1,3),activeChannel:o(`activeChannel`,2,1,1),telegram:{...o(`telegram`,2,1,2,8),docLinks:[{url:`https://t.me/BotFather`,labelKey:`help.telegram.link.botfather`},{url:`https://core.telegram.org/bots/tutorial`,labelKey:`help.telegram.link.docs`}]},discord:{...o(`discord`,2,1,2,9),docLinks:[{url:`https://discord.com/developers/applications`,labelKey:`help.discord.link.portal`},{url:`https://discord.com/developers/docs/getting-started`,labelKey:`help.discord.link.docs`}]},slack:{...o(`slack`,2,1,2,9),docLinks:[{url:`https://api.slack.com/apps`,labelKey:`help.slack.link.portal`},{url:`https://docs.slack.dev/apis/events-api/using-socket-mode/`,labelKey:`help.slack.link.docs`}]},fallbackOrder:o(`fallbackOrder`,2,1,1,2,1,3),mcp:o(`mcp`,2,1,1,4,1,5),memory:o(`memory`,2,1,2,4,1,2),stt:o(`stt`,2,1,1),promptTemplates:o(`promptTemplates`,2,1,1),chatInput:o(`chatInput`,3,2,2),orchestration:o(`orchestration`,3,2,2,8,1,8),attachments:o(`attachments`,3,2,2),diagrams:o(`diagrams`,3,2,2),keyboardShortcuts:o(`keyboardShortcuts`,3,2,2,3,2,3),session:o(`session`,3,1,2,8,1,9),cliTools:o(`cliTools`,3,1,2,6,1,9),agentControl:o(`agentControl`,3,1,2,6,1,6),goals:o(`goals`,3,1,2,10,1,25)};function a(e){return typeof e==`string`&&Object.prototype.hasOwnProperty.call(i,e)}function o(e,t,n,r,i=2,a=1,o=0){return{titleKey:`help.${e}.title`,introKey:`help.${e}.intro`,effectKey:`help.${e}.effect`,useWhenKeys:s(`help.${e}.use`,t),howToKeys:s(`help.${e}.howTo`,i),exampleKeys:s(`help.${e}.example`,a),avoidWhenKeys:s(`help.${e}.avoid`,n),relatedKeys:s(`help.${e}.related`,r),...o>0?{subcmdKeys:s(`help.${e}.subcmd`,o)}:{}}}function s(e,t){return Array.from({length:t},(t,n)=>`${e}.${n+1}`)}var c=!1,l=null,u=null,d=null,f=null,p=null,m=!1;function h(){c||(c=!0,document.addEventListener(`click`,v),document.addEventListener(`keydown`,y,!0))}function g(e,t=null,n=[e]){if(!i[e]){console.warn(`[help-dialog] unknown topic:`,e);return}b(),p=t,x(e,T(n,e)),l?.classList.add(`open`),l?.setAttribute(`aria-hidden`,`false`),m=!0,requestAnimationFrame(()=>f?.focus())}function _(){if(!m)return;l?.classList.remove(`open`),l?.setAttribute(`aria-hidden`,`true`),m=!1;let e=p;p=null,e?.focus()}function v(e){let t=e.target?.closest(`[data-help-topic]`);if(!t)return;let n=t.getAttribute(`data-help-topic`);if(!a(n)){console.warn(`[help-dialog] invalid topic:`,n);return}e.preventDefault(),g(n,t,w(t.getAttribute(`data-help-topics`),n))}function y(e){m&&e.key===`Escape`&&(e.preventDefault(),e.stopImmediatePropagation(),_())}function b(){if(l&&u&&d&&f)return;l=document.createElement(`div`),l.id=`helpDialog`,l.className=`modal-overlay help-dialog-overlay`,l.setAttribute(`role`,`presentation`),l.setAttribute(`aria-hidden`,`true`),l.addEventListener(`click`,e=>{e.target===l&&_()});let e=document.createElement(`div`);e.className=`modal-box help-dialog-box`,e.setAttribute(`role`,`dialog`),e.setAttribute(`aria-modal`,`true`),e.setAttribute(`aria-labelledby`,`helpDialogTitle`),e.addEventListener(`click`,e=>e.stopPropagation());let t=document.createElement(`div`);t.className=`modal-header help-dialog-header`,u=document.createElement(`span`),u.id=`helpDialogTitle`,f=document.createElement(`button`),f.type=`button`,f.className=`btn-modal-close help-dialog-close`,f.setAttribute(`aria-label`,n(`help.close`)),f.textContent=`x`,f.addEventListener(`click`,()=>_()),d=document.createElement(`div`),d.className=`help-dialog-body`;let r=document.createElement(`div`);r.className=`modal-footer help-dialog-footer`;let i=document.createElement(`button`);i.type=`button`,i.className=`btn-save help-dialog-done`,i.textContent=n(`help.close`),i.addEventListener(`click`,()=>_()),t.append(u,f),r.append(i),e.append(t,d,r),l.append(e),document.body.append(l)}function x(e,t=[e]){if(!u||!d||!f)return;let r=i[e];u.textContent=n(r.titleKey),f.setAttribute(`aria-label`,n(`help.close`)),d.replaceChildren();let a=document.createElement(`div`);if(a.className=`help-dialog-content`,S(a,r),t.length<=1){d.append(a);return}let o=document.createElement(`div`);o.className=`help-dialog-layout`,o.append(C(t,e),a),d.append(o)}function S(e,t){t.docLinks?.length&&E(e,t.docLinks),D(e,n(`help.section.what`),n(t.introKey)),D(e,n(`help.section.effect`),n(t.effectKey),`help-effect-text`),O(e,n(`help.section.useWhen`),t.useWhenKeys),A(e,n(`help.section.howTo`),t.howToKeys),O(e,n(`help.section.example`),t.exampleKeys,!1,`help-example-list`),t.avoidWhenKeys?.length&&O(e,n(`help.section.avoidWhen`),t.avoidWhenKeys),t.subcmdKeys?.length&&j(e,n(`help.section.commands`),t.subcmdKeys),t.relatedKeys?.length&&O(e,n(`help.section.related`),t.relatedKeys,!0)}function C(e,t){let r=document.createElement(`nav`);r.className=`help-dialog-nav`,r.setAttribute(`aria-label`,n(`help.section.related`));for(let a of e){let o=i[a],s=document.createElement(`button`);s.type=`button`,s.className=`help-dialog-nav-item`,s.textContent=n(o.titleKey),a===t&&(s.classList.add(`active`),s.setAttribute(`aria-current`,`page`)),s.addEventListener(`click`,()=>x(a,e)),r.append(s)}return r}function w(e,t){return T(e?.split(/[\s,]+/).filter(Boolean)??[],t)}function T(e,t){let n=[];for(let t of e)a(t)&&!n.includes(t)&&n.push(t);return n.includes(t)||n.unshift(t),n}function E(e,t){let r=document.createElement(`section`);r.className=`help-dialog-section help-doc-links`;let i=document.createElement(`nav`);i.className=`help-doc-links-nav`;for(let e of t){let t=document.createElement(`a`);t.href=e.url,t.target=`_blank`,t.rel=`noopener noreferrer`,t.className=`help-doc-link`,t.textContent=n(e.labelKey);let r=document.createElement(`span`);r.className=`help-doc-link-icon`,r.textContent=`↗`,t.append(r),i.append(t)}r.append(i),e.append(r)}function D(e,t,n,r){let i=k(t),a=document.createElement(`p`);r&&(a.className=r),a.textContent=n,i.append(a),e.append(i)}function O(e,t,r,i=!1,a){let o=k(t),s=document.createElement(`ul`);s.className=a??(i?`help-related-list`:`help-dialog-list`);for(let e of r){let t=document.createElement(`li`);t.textContent=n(e),s.append(t)}o.append(s),e.append(o)}function k(e){let t=document.createElement(`section`);t.className=`help-dialog-section`;let n=document.createElement(`h3`);return n.textContent=e,t.append(n),t}function A(e,t,r){let i=k(t),a=document.createElement(`ol`);a.className=`help-dialog-list help-howto-list`;for(let e of r){let t=document.createElement(`li`);t.textContent=n(e),a.append(t)}i.append(a),e.append(i)}function j(e,t,r){let i=k(t),a=document.createElement(`dl`);a.className=`help-subcmd-list`;for(let e of r){let t=n(e),r=t.indexOf(` — `),i=r>=0?t.slice(0,r):t,o=r>=0?t.slice(r+3):``,s=document.createElement(`dt`);s.className=`help-subcmd-cmd`;let c=document.createElement(`code`);c.textContent=i,s.append(c);let l=document.createElement(`dd`);l.className=`help-subcmd-desc`,l.textContent=o,a.append(s,l)}i.append(a),e.append(i)}var M={mcp:`mcp`,memory:`memory`,model:`model`,effort:`effort`,cli:`activeCli`,skill:`skills`,employee:`employees`,orchestrate:`orchestration`,pabcd:`orchestration`,flush:`flushAgent`,fallback:`fallbackOrder`,prompt:`promptTemplates`,browser:`mcp`,status:`activeCli`,steer:`chatInput`,clear:`session`,compact:`session`,reset:`session`,purge:`session`,new:`session`,switch:`session`,sw:`session`,sessions:`session`,ss:`session`,version:`cliTools`,project:`cliTools`,proj:`cliTools`,ide:`cliTools`,file:`cliTools`,forward:`agentControl`,thought:`agentControl`,goal:`goals`,goalplan:`goals`,gd:`goals`,plan:`goals`,interview:`goals`,deliberate:`goals`,planaudit:`goals`,review:`goals`,search:`mcp`,team:`goals`,task:`goals`,help:`keyboardShortcuts`,h:`keyboardShortcuts`,commands:`keyboardShortcuts`,cmd:`keyboardShortcuts`,fork:`session`,quit:`session`,q:`session`,exit:`session`,telegram:`telegram`,discord:`discord`,slack:`slack`,stt:`stt`,attachments:`attachments`,diagrams:`diagrams`};function N(e){let t=e.replace(/^\//,``).trim().split(/\s+/);if(t.length<2||t[t.length-1].toLowerCase()!==`info`)return!1;let n=M[t[0].toLowerCase()];return n?(g(n),!0):!1}var P=[],F=[],I=-1,L=!1,R=null;function z(e){let t=String(e||``).slice(1).trim().split(/\s+/)[0]||``;return t.includes(`/`)||t.includes(`\\`)}var B=()=>document.getElementById(`cmdDropdown`),V=()=>document.getElementById(`chatInput`);function H(e){let t=String(e||``).toLowerCase();return P.filter(e=>`/${e.name}`.startsWith(t))}function U(e){let t=e.workflow?.workflowArgs||[];return t.length?t.map(e=>e.required?`<${e.name}>`:`[${e.name}]`).join(` `):e.args||``}function W(e){let n=e.workflow;return n?`<span class="cmd-meta">
2
2
  <span class="cmd-chip">${t(n.phase)}</span>
3
3
  <span class="cmd-chip cmd-risk-${t(n.risk)}">${t(n.risk)}</span>
4
4
  <span class="cmd-chip">${t(n.output)}</span>
@@ -0,0 +1 @@
1
+ import{o as e}from"./slash-commands-4zHHXEeU.js";export{e as loadCommands};
@@ -1,4 +1,4 @@
1
- import{n as e}from"./bounded-api-DdpT93LB.js";import{O as t}from"./render-D8dVQ_bm.js";import{r as n}from"./provider-icons-Bge6teOj.js";var r=80,i=16777216,a=``,o=0,s=0,c=!1,l=null,u=0,d=!1,f=0,p=null,m=null,h=null,g=null,_=null;function v(e){return e.eventType||e.event_type||`event`}function y(e,t=a){return e===f&&t===a}function b(e){return m?e+(e.includes(`?`)?`&`:`?`)+new URLSearchParams({session:m}):e}async function x(t,n){let r=await e(t,{method:`GET`},n,i);if(r&&typeof r==`object`&&`ok`in r){if(r.ok!==!0||!(`data`in r))throw Error(`trace_unavailable`);return r.data}if(!r||typeof r!=`object`)throw Error(`trace_unavailable`);return r}function S(){let e=document.getElementById(`traceDrawerOverlay`);return e||(e=document.createElement(`div`),e.id=`traceDrawerOverlay`,e.className=`trace-drawer-overlay`,e.innerHTML=`<aside class="trace-drawer" role="dialog" aria-modal="true" aria-labelledby="traceDrawerTitle">
1
+ import{n as e}from"./bounded-api-DdpT93LB.js";import{O as t}from"./render-F6xF6w6c.js";import{r as n}from"./provider-icons-Bge6teOj.js";var r=80,i=16777216,a=``,o=0,s=0,c=!1,l=null,u=0,d=!1,f=0,p=null,m=null,h=null,g=null,_=null;function v(e){return e.eventType||e.event_type||`event`}function y(e,t=a){return e===f&&t===a}function b(e){return m?e+(e.includes(`?`)?`&`:`?`)+new URLSearchParams({session:m}):e}async function x(t,n){let r=await e(t,{method:`GET`},n,i);if(r&&typeof r==`object`&&`ok`in r){if(r.ok!==!0||!(`data`in r))throw Error(`trace_unavailable`);return r.data}if(!r||typeof r!=`object`)throw Error(`trace_unavailable`);return r}function S(){let e=document.getElementById(`traceDrawerOverlay`);return e||(e=document.createElement(`div`),e.id=`traceDrawerOverlay`,e.className=`trace-drawer-overlay`,e.innerHTML=`<aside class="trace-drawer" role="dialog" aria-modal="true" aria-labelledby="traceDrawerTitle">
2
2
  <header class="trace-drawer-header">
3
3
  <div><p class="trace-drawer-kicker">Raw trace</p><h2 id="traceDrawerTitle">Trace</h2></div>
4
4
  <button class="trace-drawer-close" type="button" aria-label="Close trace drawer">×</button>
@@ -1,2 +1,2 @@
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{t as e}from"./state-Dl-xxPoS.js";import{t}from"./preload-helper-CfbQpVni.js";import{E as n,T as r,k as i,t as a}from"./render-D8dVQ_bm.js";import{a as o,n as s}from"./icons-CVkqyECl.js";import{A as c,C as l,D as u,N as d,O as f,S as p,_ as ee,b as m,k as h,m as g,t as _,v,w as y,x as b}from"./iframe-renderer-CcGzEi0v.js";import{B as x,F as S,G as C,H as w,J as T,K as E,L as te,P as ne,Q as D,R as re,U as ie,V as O,W as k,Y as A,Z as j,a as ae,l as oe,q as M,z as N}from"./message-history-DSvflaZ9.js";import{c as se}from"./idb-cache-BRpjf_a8.js";var P=2e3,F=80,ce=400;function le(e){if(e<=P)return F;let t=e/P*F;return Math.min(ce,Math.round(t))}function I(e){return{chunks:[],fullText:``,textDirty:!1,element:e,pendingRAF:null,isFinalized:!1,lastRenderTime:0}}function ue(e,t=``){let n=I(e);return t?(n.chunks=[t],n.fullText=t,n.textDirty=!1,n.element.innerHTML=a(t,!0)+`<span class="stream-cursor" aria-hidden="true"></span>`):n.element.innerHTML=`<span class="stream-cursor" aria-hidden="true"></span>`,n}function L(e){return e.textDirty&&=(e.fullText=e.chunks.join(``),!1),e.fullText}function R(e,t){e.chunks.push(t),e.textDirty=!0,!e.pendingRAF&&!e.isFinalized&&(e.pendingRAF=requestAnimationFrame(()=>{if(e.pendingRAF=null,e.isFinalized)return;let t=performance.now(),n=L(e);n.length<P||t-e.lastRenderTime>le(n.length)?(e.element.innerHTML=a(n,!0)+`<span class="stream-cursor" aria-hidden="true"></span>`,e.lastRenderTime=t):e.pendingRAF=requestAnimationFrame(()=>{e.pendingRAF=null,!e.isFinalized&&(e.element.innerHTML=a(L(e),!0)+`<span class="stream-cursor" aria-hidden="true"></span>`,e.lastRenderTime=performance.now())})}))}function z(e,t=!1){e.isFinalized=!0,e.pendingRAF&&=(cancelAnimationFrame(e.pendingRAF),null);let n=L(e);return t||(e.element.innerHTML=a(n)),n}function B(e){return typeof e.traceSeq==`number`&&Number.isFinite(e.traceSeq)&&e.traceSeq>0}function V(e,t){return!!t.traceRunId&&!!e.traceRunId&&t.traceRunId===e.traceRunId&&B(t)&&B(e)&&t.traceSeq===e.traceSeq&&t.type===e.type&&t.label===e.label&&!!t.isEmployee==!!e.isEmployee}function H(e,t){return t.stepRef&&e.stepRef===t.stepRef?!0:V(e,t)}function U(e,t,n={}){return[...e].reverse().filter(e=>n.includeDone||e.status===`running`).find(e=>H(e,t))??null}function de(e,t){let n=e.filter(e=>e.status===`running`&&!e.stepRef&&e.label===t.label&&e.type===t.type&&!!e.isEmployee==!!t.isEmployee);return n.length===1?n[0]:null}function fe(e,t){let n=[...e].reverse().filter(e=>e.status===`running`);return U(n,t)||de(n,t)}function pe(){e.currentProcessBlock&&u(e.currentProcessBlock),e.currentAgentDiv instanceof HTMLElement&&u(e.currentAgentDiv),D(),c(),e.currentAgentDiv=null,e.currentProcessBlock=null,q=null}var W=0;function me(){W=Date.now()}function he(){W=0}function ge(){return Date.now()-W<8e3}function G(e){for(let t of document.querySelectorAll(`.msg-user`))if(e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING)return!0;return!1}function K(){let t=e.currentAgentDiv&&e.currentAgentDiv.isConnected?e.currentAgentDiv:null;return t?G(t)?(e.currentAgentDiv=null,e.currentProcessBlock=null,q=null,null):t:null}function _e(){let e=Array.from(document.querySelectorAll(`.msg-agent`)).at(-1)??null;return!e||G(e)?null:e}function ve(t,n){k();let r=K();if(r||(r=w(`agent`,``),e.currentAgentDiv=r,e.currentProcessBlock=null),M(r),!e.currentProcessBlock){let t=r.querySelector(`.agent-body`);t&&(e.currentProcessBlock=C(r)),!e.currentProcessBlock&&t&&(T(r),e.currentProcessBlock=p(t))}if(n&&e.currentProcessBlock&&!e.currentProcessBlock.startedAt&&(e.currentProcessBlock.startedAt=n),e.currentProcessBlock){let n=t.rawIcon||t.icon,r=t.status||s(t.icon)||`running`;if(r===`done`||r===`error`){let i=fe(e.currentProcessBlock.steps,t);if(i){t.icon=o(t.icon);let a=t.type===`thinking`?h(i.id,t.detail):y(i.id,t.detail);f(e.currentProcessBlock,i.id,{...i,...t,id:i.id,rawIcon:n,detail:a,detailPreview:a,label:t.label||i.label,status:r,startTime:i.startTime}),g();return}if(t.stepRef&&(r===`done`||r===`error`)){let i=[...e.currentProcessBlock.steps].reverse().find(e=>e.stepRef===t.stepRef&&(e.status===`done`||e.status===`error`));if(i){t.icon=o(t.icon);let a=t.type===`thinking`?h(i.id,t.detail):y(i.id,t.detail);f(e.currentProcessBlock,i.id,{...i,...t,id:i.id,rawIcon:n,status:r,detail:a,detailPreview:a,startTime:i.startTime}),g();return}}}if(t.stepRef&&r===`running`){let r=[...e.currentProcessBlock.steps].reverse().find(e=>e.stepRef===t.stepRef&&e.status===`running`);if(r){t.rawIcon=n,t.icon=o(t.icon);let i=h(r.id,t.detail);f(e.currentProcessBlock,r.id,{...r,...t,id:r.id,rawIcon:n,status:`running`,detail:i,detailPreview:i,label:t.label||r.label,startTime:r.startTime}),g();return}}let i=U(e.currentProcessBlock.steps,t,{includeDone:!0});if(i){t.rawIcon=n,t.icon=o(t.icon);let a=t.detail||``,s=l(i.id)||i.detail||i.detailPreview||``,c=a.length>=s.length?a:s,u=h(i.id,c),d=(i.status===`done`||i.status===`error`)&&r===`running`?i.status:r;f(e.currentProcessBlock,i.id,{...i,...t,id:i.id,rawIcon:n,status:d,detail:u,detailPreview:u,label:t.label||i.label,startTime:i.startTime}),g();return}if(t.detail){let n=[...e.currentProcessBlock.steps].reverse().find(e=>e.status===`running`&&e.label===t.label&&e.type===t.type&&!!e.isEmployee==!!t.isEmployee&&!e.detail);if(n){f(e.currentProcessBlock,n.id,t),g();return}}t.rawIcon=n,t.icon=o(t.icon),v(e.currentProcessBlock,t)}g()}var q=null,J=`data-active-run-hydrated`;function Y(e){document.querySelectorAll(`[${J}="true"]`).forEach(t=>{e&&t===e||t.remove()})}function ye(e){let t=K()??_e();Y(t);let n=t||w(`agent`,``,e||null);return n.setAttribute(J,`true`),n}function be(e,t){let n=l(e.id)||e.detail||e.detailPreview||``,r=t.detail||t.detailPreview||``;return r.length>=n.length?r:n}function X(e){return e.stepRef?!0:!!e.traceRunId&&typeof e.traceSeq==`number`&&Number.isFinite(e.traceSeq)&&e.traceSeq>0}function xe(e,t){let n=e.steps.filter(e=>!X(e)),r=0,i=!0;for(let a of t){let t=e.steps.find(e=>H(e,a))??null;if(!t&&!X(a)&&i){let e=n[r]??null;e?e.type===a.type&&!!e.isEmployee==!!a.isEmployee?(t=e,r++):i=!1:r++}if(!t){let n=e.steps.filter(e=>e.label===a.label&&e.type===a.type&&!!e.isEmployee==!!a.isEmployee);t=n.length===1?n[0]:null}if(!t){if(v(e,a),!X(a)&&i){let t=e.steps[e.steps.length-1];t&&n.push(t)}continue}let o=h(t.id,be(t,a));f(e,t.id,{...t,...a,id:t.id,detail:o,detailPreview:o,label:a.label||t.label})}}function Se(e=[]){document.querySelectorAll(`[data-queued-overlay="true"]`).forEach(e=>e.remove())}var Z=``;function Ce(e){let t=Array.isArray(e.toolLog)?e.toolLog:[],n=t.map(e=>`${e.stepRef||``}~${e.traceRunId||``}~${e.traceSeq??``}~${e.status||``}~${e.label||``}~${(e.detail||``).length}`).join(`|`);return`${e.traceRunId||``}:${e.cli||``}:${(e.text||``).length}:${t.length}:${n}`}function we(t){if(!t?.running){Z=``,Y();return}let n=Ce(t);if(n===Z&&K())return;D(),k(),e.currentAgentDiv=ye(t.cli||null);let r=e.currentAgentDiv.querySelector(`.agent-body`),i=N(t.toolLog||[]);M(e.currentAgentDiv),e.currentProcessBlock=C(e.currentAgentDiv),r&&i.length?(e.currentProcessBlock||(T(e.currentAgentDiv),e.currentProcessBlock=p(r)),t.startedAt&&(e.currentProcessBlock.startedAt=t.startedAt),xe(e.currentProcessBlock,O(i,t.startedAt))):e.currentProcessBlock=C(e.currentAgentDiv);let a=e.currentAgentDiv.querySelector(`.msg-content`);a&&(q=ue(a,t.text||``)),Z=n}function Q(t){if(!t)return;k(),K()||(e.currentAgentDiv=w(`agent`,``),q=null);let n=e.currentAgentDiv?.querySelector(`.msg-content`);n&&(q||=I(n),R(q,t)),g()}var $=0;function Te(e){e.querySelectorAll(`.mermaid-pending`).forEach(e=>{delete e.dataset.mermaidQueued,delete e.dataset.mermaidQueuedAt})}function Ee(e,t){let o=e.querySelector(`.msg-content`);if(!o)return;let s=i(t);(o.getAttribute(`data-raw`)!==s||!s&&o.childNodes.length!==0)&&(r(o),o.innerHTML=s?a(t):``,o.setAttribute(`data-raw`,s),o.classList.remove(`lazy-pending`),_(o),n(o,{immediate:!0}))}function De(t,r,o,s,c,l){let f=o===`present`||o===`absent`,p=Date.now();if(!e.currentAgentDiv&&p-$<500)return;Z=``,D(),k(),e.currentAgentDiv&&M(e.currentAgentDiv);let h=A(e.currentProcessBlock??e.currentAgentDiv,!0),g=N(re(Array.isArray(r)?r:[],h)),v=x(g),y=!!e.currentProcessBlock||!!(e.currentAgentDiv&&E(e.currentAgentDiv));e.currentProcessBlock&&(b(e.currentProcessBlock),e.currentProcessBlock=null);let C=g.length>0;if(t||C||f){(!e.currentAgentDiv||!e.currentAgentDiv.isConnected)&&(e.currentAgentDiv=w(`agent`,``));let r=!!(e.currentAgentDiv.dataset.activityKey||e.currentAgentDiv.dataset.activityAnswerPending||s&&l&&e.currentAgentDiv.dataset.traceRunId===s&&e.currentAgentDiv.dataset.messageSessionId===l);s&&(e.currentAgentDiv.dataset.traceRunId=s),delete e.currentAgentDiv.dataset.activityRecovering,e.currentAgentDiv.removeAttribute(J);let o=e.currentAgentDiv?.querySelector(`.msg-content`),p=q?z(q,!0):``,h=f?t??``:t||p;if(q=null,o&&(o.innerHTML=f&&!h?``:a(h)),C&&e.currentAgentDiv&&!y&&!E(e.currentAgentDiv)){let t=e.currentAgentDiv.querySelector(`.msg-content`);t&&t.insertAdjacentHTML(`beforebegin`,m(O(g),!0))}e.currentAgentDiv&&M(e.currentAgentDiv),o&&o.setAttribute(`data-raw`,i(h)),o&&_(o);let b=ee(),x=!!(b.active&&e.currentAgentDiv&&e.currentAgentDiv.isConnected);if(o&&!x&&n(o,{immediate:!0}),x){let t=e.currentAgentDiv;Te(t),t.querySelectorAll(`.diagram-widget`).forEach(e=>{let t=e,n=t.dataset.widgetHtml,r=t.dataset.widgetId;if(!n&&!r)return;let i=document.createElement(`div`);i.className=`diagram-widget-pending`,r?i.dataset.widgetId=r:n&&(i.dataset.diagramHtml=n),e.replaceWith(i)}),v&&!r?(b.onLazyRender||oe(b),b.appendItem(te({role:`assistant`,content:h,cli:null,tool_log:v,trace_run_id:t.dataset.traceRunId??null},b.count)),u(t),b.scrollToBottom()):(t.dataset.turnIndex=String(b.count),t.dataset.messageId||(t.dataset.messageId=d()),r&&ae(b),b.appendLiveItem(t)),t.remove()}(h||s&&r)&&se({role:`assistant`,content:h,tool_log:v,trace_run_id:e.currentAgentDiv?.dataset.traceRunId??null,timestamp:Date.now(),...c===void 0?{}:{scope:c},...l===void 0?{}:{session_id:l}}).catch(()=>{})}q=null,e.currentAgentDiv=null,$=Date.now(),S(`idle`),ne()}function Oe(e,n){document.querySelectorAll(`.tab-btn`).forEach(e=>{e.classList.remove(`active`),e.setAttribute(`aria-selected`,`false`)}),document.querySelectorAll(`.tab-content`).forEach(e=>e.classList.remove(`active`)),document.getElementById({agents:`tabAgents`,settings:`tabSettings`,skills:`tabSkills`}[e])?.classList.add(`active`),n&&(n.classList.add(`active`),n.setAttribute(`aria-selected`,`true`)),e===`agents`&&t(()=>import(`./employees-BchFBkDz.js`).then(e=>e.loadEmployees()),__vite__mapDeps([0])),e===`skills`&&t(()=>import(`./skills-BY-hQnqM.js`).then(e=>e.loadSkills()),__vite__mapDeps([0]))}function ke(){document.getElementById(`tabSettings`)?.classList.contains(`active`)||t(()=>import(`./settings-DxjoyiIM.js`).then(e=>e.updateSettings()),__vite__mapDeps([0]))}function Ae(){j({onStatus:ie})}export{De as a,Ae as c,Ee as d,ve as f,he as i,ge as l,Se as n,ke as o,Oe as p,pe as r,we as s,Q as t,me as u};
2
+ import{t as e}from"./state-Dl-xxPoS.js";import{t}from"./preload-helper-CfbQpVni.js";import{E as n,T as r,k as i,t as a}from"./render-F6xF6w6c.js";import{a as o,n as s}from"./icons-CVkqyECl.js";import{A as c,C as l,D as u,N as d,O as f,S as p,_ as ee,b as m,k as h,m as g,t as _,v,w as y,x as b}from"./iframe-renderer--lHbKTDh.js";import{B as x,F as S,G as C,H as w,J as T,K as E,L as te,P as ne,Q as D,R as re,U as ie,V as O,W as k,Y as A,Z as j,a as ae,l as oe,q as M,z as N}from"./message-history-PAYeKmia.js";import{c as se}from"./idb-cache-BRpjf_a8.js";var P=2e3,F=80,ce=400;function le(e){if(e<=P)return F;let t=e/P*F;return Math.min(ce,Math.round(t))}function I(e){return{chunks:[],fullText:``,textDirty:!1,element:e,pendingRAF:null,isFinalized:!1,lastRenderTime:0}}function ue(e,t=``){let n=I(e);return t?(n.chunks=[t],n.fullText=t,n.textDirty=!1,n.element.innerHTML=a(t,!0)+`<span class="stream-cursor" aria-hidden="true"></span>`):n.element.innerHTML=`<span class="stream-cursor" aria-hidden="true"></span>`,n}function L(e){return e.textDirty&&=(e.fullText=e.chunks.join(``),!1),e.fullText}function R(e,t){e.chunks.push(t),e.textDirty=!0,!e.pendingRAF&&!e.isFinalized&&(e.pendingRAF=requestAnimationFrame(()=>{if(e.pendingRAF=null,e.isFinalized)return;let t=performance.now(),n=L(e);n.length<P||t-e.lastRenderTime>le(n.length)?(e.element.innerHTML=a(n,!0)+`<span class="stream-cursor" aria-hidden="true"></span>`,e.lastRenderTime=t):e.pendingRAF=requestAnimationFrame(()=>{e.pendingRAF=null,!e.isFinalized&&(e.element.innerHTML=a(L(e),!0)+`<span class="stream-cursor" aria-hidden="true"></span>`,e.lastRenderTime=performance.now())})}))}function z(e,t=!1){e.isFinalized=!0,e.pendingRAF&&=(cancelAnimationFrame(e.pendingRAF),null);let n=L(e);return t||(e.element.innerHTML=a(n)),n}function B(e){return typeof e.traceSeq==`number`&&Number.isFinite(e.traceSeq)&&e.traceSeq>0}function V(e,t){return!!t.traceRunId&&!!e.traceRunId&&t.traceRunId===e.traceRunId&&B(t)&&B(e)&&t.traceSeq===e.traceSeq&&t.type===e.type&&t.label===e.label&&!!t.isEmployee==!!e.isEmployee}function H(e,t){return t.stepRef&&e.stepRef===t.stepRef?!0:V(e,t)}function U(e,t,n={}){return[...e].reverse().filter(e=>n.includeDone||e.status===`running`).find(e=>H(e,t))??null}function de(e,t){let n=e.filter(e=>e.status===`running`&&!e.stepRef&&e.label===t.label&&e.type===t.type&&!!e.isEmployee==!!t.isEmployee);return n.length===1?n[0]:null}function fe(e,t){let n=[...e].reverse().filter(e=>e.status===`running`);return U(n,t)||de(n,t)}function pe(){e.currentProcessBlock&&u(e.currentProcessBlock),e.currentAgentDiv instanceof HTMLElement&&u(e.currentAgentDiv),D(),c(),e.currentAgentDiv=null,e.currentProcessBlock=null,q=null}var W=0;function me(){W=Date.now()}function he(){W=0}function ge(){return Date.now()-W<8e3}function G(e){for(let t of document.querySelectorAll(`.msg-user`))if(e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING)return!0;return!1}function K(){let t=e.currentAgentDiv&&e.currentAgentDiv.isConnected?e.currentAgentDiv:null;return t?G(t)?(e.currentAgentDiv=null,e.currentProcessBlock=null,q=null,null):t:null}function _e(){let e=Array.from(document.querySelectorAll(`.msg-agent`)).at(-1)??null;return!e||G(e)?null:e}function ve(t,n){k();let r=K();if(r||(r=w(`agent`,``),e.currentAgentDiv=r,e.currentProcessBlock=null),M(r),!e.currentProcessBlock){let t=r.querySelector(`.agent-body`);t&&(e.currentProcessBlock=C(r)),!e.currentProcessBlock&&t&&(T(r),e.currentProcessBlock=p(t))}if(n&&e.currentProcessBlock&&!e.currentProcessBlock.startedAt&&(e.currentProcessBlock.startedAt=n),e.currentProcessBlock){let n=t.rawIcon||t.icon,r=t.status||s(t.icon)||`running`;if(r===`done`||r===`error`){let i=fe(e.currentProcessBlock.steps,t);if(i){t.icon=o(t.icon);let a=t.type===`thinking`?h(i.id,t.detail):y(i.id,t.detail);f(e.currentProcessBlock,i.id,{...i,...t,id:i.id,rawIcon:n,detail:a,detailPreview:a,label:t.label||i.label,status:r,startTime:i.startTime}),g();return}if(t.stepRef&&(r===`done`||r===`error`)){let i=[...e.currentProcessBlock.steps].reverse().find(e=>e.stepRef===t.stepRef&&(e.status===`done`||e.status===`error`));if(i){t.icon=o(t.icon);let a=t.type===`thinking`?h(i.id,t.detail):y(i.id,t.detail);f(e.currentProcessBlock,i.id,{...i,...t,id:i.id,rawIcon:n,status:r,detail:a,detailPreview:a,startTime:i.startTime}),g();return}}}if(t.stepRef&&r===`running`){let r=[...e.currentProcessBlock.steps].reverse().find(e=>e.stepRef===t.stepRef&&e.status===`running`);if(r){t.rawIcon=n,t.icon=o(t.icon);let i=h(r.id,t.detail);f(e.currentProcessBlock,r.id,{...r,...t,id:r.id,rawIcon:n,status:`running`,detail:i,detailPreview:i,label:t.label||r.label,startTime:r.startTime}),g();return}}let i=U(e.currentProcessBlock.steps,t,{includeDone:!0});if(i){t.rawIcon=n,t.icon=o(t.icon);let a=t.detail||``,s=l(i.id)||i.detail||i.detailPreview||``,c=a.length>=s.length?a:s,u=h(i.id,c),d=(i.status===`done`||i.status===`error`)&&r===`running`?i.status:r;f(e.currentProcessBlock,i.id,{...i,...t,id:i.id,rawIcon:n,status:d,detail:u,detailPreview:u,label:t.label||i.label,startTime:i.startTime}),g();return}if(t.detail){let n=[...e.currentProcessBlock.steps].reverse().find(e=>e.status===`running`&&e.label===t.label&&e.type===t.type&&!!e.isEmployee==!!t.isEmployee&&!e.detail);if(n){f(e.currentProcessBlock,n.id,t),g();return}}t.rawIcon=n,t.icon=o(t.icon),v(e.currentProcessBlock,t)}g()}var q=null,J=`data-active-run-hydrated`;function Y(e){document.querySelectorAll(`[${J}="true"]`).forEach(t=>{e&&t===e||t.remove()})}function ye(e){let t=K()??_e();Y(t);let n=t||w(`agent`,``,e||null);return n.setAttribute(J,`true`),n}function be(e,t){let n=l(e.id)||e.detail||e.detailPreview||``,r=t.detail||t.detailPreview||``;return r.length>=n.length?r:n}function X(e){return e.stepRef?!0:!!e.traceRunId&&typeof e.traceSeq==`number`&&Number.isFinite(e.traceSeq)&&e.traceSeq>0}function xe(e,t){let n=e.steps.filter(e=>!X(e)),r=0,i=!0;for(let a of t){let t=e.steps.find(e=>H(e,a))??null;if(!t&&!X(a)&&i){let e=n[r]??null;e?e.type===a.type&&!!e.isEmployee==!!a.isEmployee?(t=e,r++):i=!1:r++}if(!t){let n=e.steps.filter(e=>e.label===a.label&&e.type===a.type&&!!e.isEmployee==!!a.isEmployee);t=n.length===1?n[0]:null}if(!t){if(v(e,a),!X(a)&&i){let t=e.steps[e.steps.length-1];t&&n.push(t)}continue}let o=h(t.id,be(t,a));f(e,t.id,{...t,...a,id:t.id,detail:o,detailPreview:o,label:a.label||t.label})}}function Se(e=[]){document.querySelectorAll(`[data-queued-overlay="true"]`).forEach(e=>e.remove())}var Z=``;function Ce(e){let t=Array.isArray(e.toolLog)?e.toolLog:[],n=t.map(e=>`${e.stepRef||``}~${e.traceRunId||``}~${e.traceSeq??``}~${e.status||``}~${e.label||``}~${(e.detail||``).length}`).join(`|`);return`${e.traceRunId||``}:${e.cli||``}:${(e.text||``).length}:${t.length}:${n}`}function we(t){if(!t?.running){Z=``,Y();return}let n=Ce(t);if(n===Z&&K())return;D(),k(),e.currentAgentDiv=ye(t.cli||null);let r=e.currentAgentDiv.querySelector(`.agent-body`),i=N(t.toolLog||[]);M(e.currentAgentDiv),e.currentProcessBlock=C(e.currentAgentDiv),r&&i.length?(e.currentProcessBlock||(T(e.currentAgentDiv),e.currentProcessBlock=p(r)),t.startedAt&&(e.currentProcessBlock.startedAt=t.startedAt),xe(e.currentProcessBlock,O(i,t.startedAt))):e.currentProcessBlock=C(e.currentAgentDiv);let a=e.currentAgentDiv.querySelector(`.msg-content`);a&&(q=ue(a,t.text||``)),Z=n}function Q(t){if(!t)return;k(),K()||(e.currentAgentDiv=w(`agent`,``),q=null);let n=e.currentAgentDiv?.querySelector(`.msg-content`);n&&(q||=I(n),R(q,t)),g()}var $=0;function Te(e){e.querySelectorAll(`.mermaid-pending`).forEach(e=>{delete e.dataset.mermaidQueued,delete e.dataset.mermaidQueuedAt})}function Ee(e,t){let o=e.querySelector(`.msg-content`);if(!o)return;let s=i(t);(o.getAttribute(`data-raw`)!==s||!s&&o.childNodes.length!==0)&&(r(o),o.innerHTML=s?a(t):``,o.setAttribute(`data-raw`,s),o.classList.remove(`lazy-pending`),_(o),n(o,{immediate:!0}))}function De(t,r,o,s,c,l){let f=o===`present`||o===`absent`,p=Date.now();if(!e.currentAgentDiv&&p-$<500)return;Z=``,D(),k(),e.currentAgentDiv&&M(e.currentAgentDiv);let h=A(e.currentProcessBlock??e.currentAgentDiv,!0),g=N(re(Array.isArray(r)?r:[],h)),v=x(g),y=!!e.currentProcessBlock||!!(e.currentAgentDiv&&E(e.currentAgentDiv));e.currentProcessBlock&&(b(e.currentProcessBlock),e.currentProcessBlock=null);let C=g.length>0;if(t||C||f){(!e.currentAgentDiv||!e.currentAgentDiv.isConnected)&&(e.currentAgentDiv=w(`agent`,``));let r=!!(e.currentAgentDiv.dataset.activityKey||e.currentAgentDiv.dataset.activityAnswerPending||s&&l&&e.currentAgentDiv.dataset.traceRunId===s&&e.currentAgentDiv.dataset.messageSessionId===l);s&&(e.currentAgentDiv.dataset.traceRunId=s),delete e.currentAgentDiv.dataset.activityRecovering,e.currentAgentDiv.removeAttribute(J);let o=e.currentAgentDiv?.querySelector(`.msg-content`),p=q?z(q,!0):``,h=f?t??``:t||p;if(q=null,o&&(o.innerHTML=f&&!h?``:a(h)),C&&e.currentAgentDiv&&!y&&!E(e.currentAgentDiv)){let t=e.currentAgentDiv.querySelector(`.msg-content`);t&&t.insertAdjacentHTML(`beforebegin`,m(O(g),!0))}e.currentAgentDiv&&M(e.currentAgentDiv),o&&o.setAttribute(`data-raw`,i(h)),o&&_(o);let b=ee(),x=!!(b.active&&e.currentAgentDiv&&e.currentAgentDiv.isConnected);if(o&&!x&&n(o,{immediate:!0}),x){let t=e.currentAgentDiv;Te(t),t.querySelectorAll(`.diagram-widget`).forEach(e=>{let t=e,n=t.dataset.widgetHtml,r=t.dataset.widgetId;if(!n&&!r)return;let i=document.createElement(`div`);i.className=`diagram-widget-pending`,r?i.dataset.widgetId=r:n&&(i.dataset.diagramHtml=n),e.replaceWith(i)}),v&&!r?(b.onLazyRender||oe(b),b.appendItem(te({role:`assistant`,content:h,cli:null,tool_log:v,trace_run_id:t.dataset.traceRunId??null},b.count)),u(t),b.scrollToBottom()):(t.dataset.turnIndex=String(b.count),t.dataset.messageId||(t.dataset.messageId=d()),r&&ae(b),b.appendLiveItem(t)),t.remove()}(h||s&&r)&&se({role:`assistant`,content:h,tool_log:v,trace_run_id:e.currentAgentDiv?.dataset.traceRunId??null,timestamp:Date.now(),...c===void 0?{}:{scope:c},...l===void 0?{}:{session_id:l}}).catch(()=>{})}q=null,e.currentAgentDiv=null,$=Date.now(),S(`idle`),ne()}function Oe(e,n){document.querySelectorAll(`.tab-btn`).forEach(e=>{e.classList.remove(`active`),e.setAttribute(`aria-selected`,`false`)}),document.querySelectorAll(`.tab-content`).forEach(e=>e.classList.remove(`active`)),document.getElementById({agents:`tabAgents`,settings:`tabSettings`,skills:`tabSkills`}[e])?.classList.add(`active`),n&&(n.classList.add(`active`),n.setAttribute(`aria-selected`,`true`)),e===`agents`&&t(()=>import(`./employees-DNTPcxtZ.js`).then(e=>e.loadEmployees()),__vite__mapDeps([0])),e===`skills`&&t(()=>import(`./skills-SqmQXndw.js`).then(e=>e.loadSkills()),__vite__mapDeps([0]))}function ke(){document.getElementById(`tabSettings`)?.classList.contains(`active`)||t(()=>import(`./settings-DMbNzuTm.js`).then(e=>e.updateSettings()),__vite__mapDeps([0]))}function Ae(){j({onStatus:ie})}export{De as a,Ae as c,Ee as d,ve as f,he as i,ge as l,Se as n,ke as o,Oe as p,pe as r,we as s,Q as t,me as u};
@@ -0,0 +1 @@
1
+ import{p as e}from"./iframe-renderer--lHbKTDh.js";import{I as t,s as n}from"./message-history-PAYeKmia.js";import{r}from"./ui-CVtGpivr.js";export{r as cleanupToolActivity,n as loadMessages,e as reconcileChatBottomAfterRestore,t as updateQueueBadge};
@@ -37,7 +37,7 @@
37
37
  href="https://fonts.googleapis.com/css2?family=Chakra+Petch:wght@400;500;600;700&family=Outfit:wght@400;500;600;700&display=swap"
38
38
  rel="stylesheet">
39
39
  <!-- Vite handles module bundling in dev (HMR) and production (build) -->
40
- <script type="module" crossorigin src="/dist/assets/app-Iu76iEiU.js"></script>
40
+ <script type="module" crossorigin src="/dist/assets/app-SVIyP1TT.js"></script>
41
41
  <link rel="stylesheet" crossorigin href="/dist/assets/vendor-render-DSSkXCir.css">
42
42
  <link rel="stylesheet" crossorigin href="/dist/assets/app-BjKzqXCv.css">
43
43
  </head>
@@ -6,7 +6,7 @@
6
6
  <link rel="icon" type="image/png" href="/dist/assets/icon-192-CADbZUeU.png">
7
7
  <title>Jaw Manager</title>
8
8
  <script src="/manager/theme-boot.js"></script>
9
- <script type="module" crossorigin src="/dist/assets/manager-nquYZ7_x.js"></script>
9
+ <script type="module" crossorigin src="/dist/assets/manager-qGH-xUZ7.js"></script>
10
10
  <link rel="stylesheet" crossorigin href="/dist/assets/vendor-render-DSSkXCir.css">
11
11
  <link rel="stylesheet" crossorigin href="/dist/assets/settings-embedding-CUQ8Is3y.css">
12
12
  <link rel="stylesheet" crossorigin href="/dist/assets/manager-B9imHVqw.css">
@@ -5,7 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>Settings</title>
7
7
  <script src="/manager/theme-boot.js"></script>
8
- <script type="module" crossorigin src="/dist/assets/settings-DMiQe469.js"></script>
8
+ <script type="module" crossorigin src="/dist/assets/settings-DZ2-ca8T.js"></script>
9
9
  <link rel="stylesheet" crossorigin href="/dist/assets/settings-embedding-CUQ8Is3y.css">
10
10
  </head>
11
11
  <body>
@@ -4,6 +4,8 @@ import { api } from './api.js';
4
4
 
5
5
  export interface CliEntry {
6
6
  label: string;
7
+ observedDefaultModel?: string;
8
+ catalogStatus?: string;
7
9
  efforts: string[];
8
10
  models: string[];
9
11
  defaultProvider?: string;
@@ -31,6 +33,7 @@ export interface CliEntry {
31
33
  export type CliRegistry = Record<string, CliEntry>;
32
34
 
33
35
  const FALLBACK_CLI_REGISTRY: CliRegistry = {
36
+ aside: { label: 'Aside (experimental)', models: [], efforts: [] },
34
37
  agy: {
35
38
  label: 'Antigravity',
36
39
  efforts: [],
@@ -233,6 +236,8 @@ function normalizeRegistry(input: Record<string, unknown>): CliRegistry {
233
236
  if (typeof v['modelNote'] === 'string' && v['modelNote'].trim()) {
234
237
  normalized['modelNote'] = v['modelNote'];
235
238
  }
239
+ if (typeof v['observedDefaultModel'] === 'string') normalized.observedDefaultModel = v['observedDefaultModel'];
240
+ if (typeof v['catalogStatus'] === 'string') normalized.catalogStatus = v['catalogStatus'];
236
241
  if (typeof v['defaultProvider'] === 'string') normalized.defaultProvider = v['defaultProvider'];
237
242
  if (Array.isArray(v['providers'])) normalized.providers = [...v['providers']] as string[];
238
243
  if (v['modelsByProvider'] && typeof v['modelsByProvider'] === 'object') {