@co0ontty/wand 4.45.0 → 4.45.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/dist/build-info.json +3 -3
  2. package/dist/config.d.ts +1 -8
  3. package/dist/config.js +2 -2
  4. package/dist/distribution-manager.d.ts +5 -0
  5. package/dist/distribution-manager.js +13 -0
  6. package/dist/message-truncator.d.ts +0 -15
  7. package/dist/message-truncator.js +2 -2
  8. package/dist/middleware/rate-limit.d.ts +0 -1
  9. package/dist/middleware/rate-limit.js +1 -1
  10. package/dist/mission-types.d.ts +2 -1
  11. package/dist/models.d.ts +6 -5
  12. package/dist/npm-update-utils.d.ts +0 -17
  13. package/dist/npm-update-utils.js +5 -5
  14. package/dist/password-manager.d.ts +2 -5
  15. package/dist/password-manager.js +4 -4
  16. package/dist/pidfile.d.ts +0 -1
  17. package/dist/pidfile.js +1 -1
  18. package/dist/server-session-routes.d.ts +1 -2
  19. package/dist/server-session-routes.js +1 -1
  20. package/dist/server-update-routes.d.ts +2 -0
  21. package/dist/server-update-routes.js +7 -0
  22. package/dist/server.d.ts +2 -1
  23. package/dist/session-transport.d.ts +2 -1
  24. package/dist/storage.d.ts +2 -2
  25. package/dist/storage.js +1 -1
  26. package/dist/structured-claude-adapter.d.ts +2 -1
  27. package/dist/structured-claude-protocol.d.ts +0 -1
  28. package/dist/structured-claude-protocol.js +1 -1
  29. package/dist/structured-codex-protocol.d.ts +1 -1
  30. package/dist/structured-opencode-adapter.d.ts +0 -1
  31. package/dist/structured-opencode-adapter.js +1 -1
  32. package/dist/structured-session-manager.d.ts +1 -1
  33. package/dist/structured-session-manager.js +0 -1
  34. package/dist/system-ai.d.ts +0 -4
  35. package/dist/system-ai.js +1 -1
  36. package/dist/terminal-daemon-protocol.d.ts +0 -1
  37. package/dist/terminal-daemon-protocol.js +0 -4
  38. package/dist/tui/commands.d.ts +0 -1
  39. package/dist/tui/commands.js +1 -1
  40. package/dist/tui/index.d.ts +2 -1
  41. package/dist/tui/layout.d.ts +4 -3
  42. package/dist/tui/session-formatter.d.ts +0 -2
  43. package/dist/tui/session-formatter.js +1 -1
  44. package/dist/types.d.ts +17 -20
  45. package/dist/version-utils.d.ts +0 -2
  46. package/dist/version-utils.js +1 -1
  47. package/dist/web-ui/content/scripts.js +1 -1
  48. package/dist/web-ui/embedded-assets.d.ts +1 -1
  49. package/dist/web-ui/embedded-assets.js +2 -2
  50. package/dist/web-ui/index.d.ts +0 -2
  51. package/dist/web-ui/index.js +1 -1
  52. package/dist/workspace-binding.d.ts +0 -1
  53. package/dist/workspace-binding.js +1 -1
  54. package/package.json +1 -6
@@ -20,8 +20,8 @@ export interface HeaderInfo {
20
20
  /** 是否已注册系统服务(systemd / launchd),用于在 header 显示标签。 */
21
21
  serviceInstalled: boolean;
22
22
  }
23
- export type ToastLevel = "info" | "warn" | "error" | "success";
24
- export interface ConfirmOptions {
23
+ type ToastLevel = "info" | "warn" | "error" | "success";
24
+ interface ConfirmOptions {
25
25
  title: string;
26
26
  body: string;
27
27
  yes?: string;
@@ -37,7 +37,7 @@ export interface ServicePanelView {
37
37
  /** 用于"上次操作"提示行,可为空。 */
38
38
  lastAction?: string;
39
39
  }
40
- export interface ServicePanelHandlers {
40
+ interface ServicePanelHandlers {
41
41
  onStart: () => void | Promise<void>;
42
42
  onStop: () => void | Promise<void>;
43
43
  onRestart: () => void | Promise<void>;
@@ -67,3 +67,4 @@ export interface LayoutHandle {
67
67
  destroy(): void;
68
68
  }
69
69
  export declare function buildLayout(): LayoutHandle;
70
+ export {};
@@ -9,8 +9,6 @@ export interface SessionRow {
9
9
  /** 用于上色的语义级别(blessed tag 由调用方决定)。 */
10
10
  tone: "running" | "idle" | "exited" | "failed" | "stopped";
11
11
  }
12
- /** 把绝对路径压缩为友好显示:`~/foo` 或者长路径只保留尾部。 */
13
- export declare function shortenCwd(cwd: string, max?: number): string;
14
12
  /** 从 SessionSnapshot 推导出一行表格数据。状态规则见 plan。 */
15
13
  export declare function formatSession(snap: SessionSnapshot, now?: number): SessionRow;
16
14
  /** 单一会话列表按开始时间倒序展示,不再按归档状态分组。 */
@@ -2,7 +2,7 @@ import path from "node:path";
2
2
  import os from "node:os";
3
3
  import { durationBetween, relativeAge } from "./relative-time.js";
4
4
  /** 把绝对路径压缩为友好显示:`~/foo` 或者长路径只保留尾部。 */
5
- export function shortenCwd(cwd, max = 28) {
5
+ function shortenCwd(cwd, max = 28) {
6
6
  const home = os.homedir();
7
7
  let out = cwd;
8
8
  if (home && cwd.startsWith(home))
package/dist/types.d.ts CHANGED
@@ -1,15 +1,15 @@
1
1
  export type SessionKind = "pty" | "structured";
2
2
  export type SessionProvider = "claude" | "codex" | "opencode" | "grok" | "qoder" | "pi";
3
- export type CommitAiSource = "cli" | "api";
3
+ type CommitAiSource = "cli" | "api";
4
4
  export type SessionRunner = "claude-cli" | "claude-cli-print" | "claude-sdk" | "codex-cli-exec" | "opencode-cli-run" | "grok-cli-headless" | "qoder-cli-print" | "pi-cli-json" | "pty";
5
5
  export type SessionSource = "interactive" | "automation" | "startup";
6
6
  export type ExecutionMode = "assist" | "agent" | "agent-max" | "default" | "auto-edit" | "full-access" | "native" | "managed";
7
7
  export type AutonomyPolicy = "assist" | "agent" | "agent-max";
8
8
  export type ApprovalPolicy = "ask-every-time" | "approve-once" | "remember-this-turn";
9
9
  export type EscalationScope = "write_file" | "run_command" | "network" | "outside_workspace" | "dangerous_shell" | "unknown";
10
- export type EscalationRunner = "json" | "pty";
11
- export type EscalationResolution = "approve_once" | "approve_turn" | "deny" | "fallback_manual";
12
- export type EscalationSource = "tool_permission_request" | "sandbox_hard_block" | "workspace_policy_limit" | "cli_capability_limit" | "unknown";
10
+ type EscalationRunner = "json" | "pty";
11
+ type EscalationResolution = "approve_once" | "approve_turn" | "deny" | "fallback_manual";
12
+ type EscalationSource = "tool_permission_request" | "sandbox_hard_block" | "workspace_policy_limit" | "cli_capability_limit" | "unknown";
13
13
  /** WebSocket / ProcessManager event envelope used throughout the app. */
14
14
  export interface ProcessEvent {
15
15
  type: "output" | "status" | "started" | "ended" | "usage" | "task" | "notification";
@@ -29,18 +29,18 @@ export interface EscalationRequest {
29
29
  target?: string;
30
30
  reason: string;
31
31
  }
32
- export interface TurnRequest {
32
+ interface TurnRequest {
33
33
  message: string;
34
34
  autonomyPolicy?: AutonomyPolicy;
35
35
  approvalPolicy?: ApprovalPolicy;
36
36
  allowedScopes?: EscalationScope[];
37
37
  }
38
- export interface CommandPreset {
38
+ interface CommandPreset {
39
39
  label: string;
40
40
  command: string;
41
41
  mode?: ExecutionMode;
42
42
  }
43
- export interface StructuredChatPersonaRoleConfig {
43
+ interface StructuredChatPersonaRoleConfig {
44
44
  name?: string;
45
45
  avatar?: string;
46
46
  }
@@ -144,7 +144,7 @@ export interface WandConfig {
144
144
  inheritEnv?: boolean;
145
145
  }
146
146
  export type SystemAiProtocol = "openai" | "anthropic";
147
- export type SystemAiAuthHeader = "bearer" | "x-api-key";
147
+ type SystemAiAuthHeader = "bearer" | "x-api-key";
148
148
  export interface SystemAiConfig {
149
149
  /** 设置页路由的稳定标识,用于重排后安全地关联已保存密钥。 */
150
150
  id?: string;
@@ -186,7 +186,7 @@ export interface ClaudeModelInfo {
186
186
  /** Codex 模型的默认推理档位。 */
187
187
  defaultReasoningEffort?: string;
188
188
  }
189
- export interface ReasoningEffortInfo {
189
+ interface ReasoningEffortInfo {
190
190
  effort: string;
191
191
  description?: string;
192
192
  }
@@ -211,7 +211,7 @@ export interface WorktreeMergeInfo {
211
211
  lastError?: string;
212
212
  conflict?: boolean;
213
213
  }
214
- export interface WorktreeMergeCommit {
214
+ interface WorktreeMergeCommit {
215
215
  hash: string;
216
216
  shortHash: string;
217
217
  subject: string;
@@ -420,17 +420,17 @@ export interface SubagentMeta {
420
420
  agentType?: string;
421
421
  taskDescription?: string;
422
422
  }
423
- export interface TextBlock {
423
+ interface TextBlock {
424
424
  type: "text";
425
425
  text: string;
426
426
  __subagent?: SubagentMeta;
427
427
  }
428
- export interface ThinkingBlock {
428
+ interface ThinkingBlock {
429
429
  type: "thinking";
430
430
  thinking: string;
431
431
  __subagent?: SubagentMeta;
432
432
  }
433
- export interface StructuredQuestionOption {
433
+ interface StructuredQuestionOption {
434
434
  label: string;
435
435
  description?: string;
436
436
  }
@@ -450,7 +450,7 @@ export interface StructuredTaskItem {
450
450
  * Wand-owned semantic projection of provider-specific tools. Clients should
451
451
  * render this field and treat `name` / `input` as a legacy fallback only.
452
452
  */
453
- export type ToolUseSemantic = {
453
+ type ToolUseSemantic = {
454
454
  kind: "question_request";
455
455
  questions: StructuredQuestion[];
456
456
  } | {
@@ -628,7 +628,7 @@ export type LayoutNode = {
628
628
  children: [LayoutNode, LayoutNode];
629
629
  };
630
630
  /** 顶部一个工作窗口 Tab;内部可以包含一棵终端分屏树。 */
631
- export interface WorkWindowLayout {
631
+ interface WorkWindowLayout {
632
632
  id: string;
633
633
  layout: LayoutNode;
634
634
  activeTabId?: string;
@@ -672,7 +672,7 @@ export interface WorkspaceTask {
672
672
  lastOpenedAt: string | null;
673
673
  }
674
674
  /** Unified event type emitted by ClaudePtyBridge for WebSocket broadcast */
675
- export type SessionEventType = "output.raw" | "output.chat" | "chat.turn" | "permission.prompt" | "permission.resolved" | "session.id" | "task" | "ended";
675
+ type SessionEventType = "output.raw" | "output.chat" | "chat.turn" | "permission.prompt" | "permission.resolved" | "session.id" | "task" | "ended";
676
676
  export interface SessionEvent {
677
677
  type: SessionEventType;
678
678
  sessionId: string;
@@ -710,10 +710,7 @@ export interface SessionIdData {
710
710
  /** Claude CLI session UUID */
711
711
  claudeSessionId: string;
712
712
  }
713
- export interface TaskData {
714
- title: string;
715
- tool?: string;
716
- }
717
713
  export interface SessionEndData {
718
714
  exitCode: number | null;
719
715
  }
716
+ export {};
@@ -2,8 +2,6 @@
2
2
  * 语义化版本工具:单一真源,供 server / tui / path-repair / models 共用,
3
3
  * 避免各处各写一份比较/提取逻辑导致 debug.MMDDHHMM 后缀排序不一致。
4
4
  */
5
- /** 从任意文本中提取 X.Y.Z[-prerelease][+build] 形式的版本号(带捕获组)。 */
6
- export declare const SEMVER_PATTERN: RegExp;
7
5
  /** 提取文本中的第一个语义化版本号,没有则返回 null。 */
8
6
  export declare function extractSemver(text: string): string | null;
9
7
  /**
@@ -3,7 +3,7 @@
3
3
  * 避免各处各写一份比较/提取逻辑导致 debug.MMDDHHMM 后缀排序不一致。
4
4
  */
5
5
  /** 从任意文本中提取 X.Y.Z[-prerelease][+build] 形式的版本号(带捕获组)。 */
6
- export const SEMVER_PATTERN = /(\d+\.\d+\.\d+(?:-[A-Za-z0-9.-]+)?(?:\+[A-Za-z0-9.-]+)?)/;
6
+ const SEMVER_PATTERN = /(\d+\.\d+\.\d+(?:-[A-Za-z0-9.-]+)?(?:\+[A-Za-z0-9.-]+)?)/;
7
7
  /** 提取文本中的第一个语义化版本号,没有则返回 null。 */
8
8
  export function extractSemver(text) {
9
9
  const match = text.match(SEMVER_PATTERN);
@@ -4381,7 +4381,7 @@ html:not(.is-wand-app) .input-composer .wand-composer-select-trigger {
4381
4381
  `))+'"':"";return'<span class="session-kind-badge worktree"'+n+">Worktree</span>"+kR(e)}var B2="wand-non-wand-sessions-expanded",Mg="wand-automation-sessions-expanded";function jR(e){return e.classList.contains("automation-session-group")?Mg:e.classList.contains("non-wand-session-group")?B2:""}document.addEventListener("toggle",function(e){var t=e.target;if(!(!t||!t.classList)){var n=jR(t);if(n){if(o.sessionsManageMode){t.open||(t.open=!0);return}Pt(n,t.open)}}},!0),document.addEventListener("click",function(e){if(!jt()){var t=e.target;if(!(!t||typeof t.closest!="function")){if(t.closest(".non-wand-session-group.manage-mode > summary, .automation-session-group.manage-mode > summary")){e.preventDefault();return}var n=t.closest("[data-expand-session-group]");if(n){var i=n.dataset.expandSessionGroup,u=i==="automation"?Mg:i==="non-wand"?B2:"";if(u){Pt(u,!0);var l=document.getElementById("sidebar-collapse-btn");l&&l.click()}}}}});function TR(e){var t=String(e&&e.sessionSource||"").toLowerCase();return t==="automation"||t==="startup"}function j2(e){return e.sort(function(t,n){return n.t-t.t})}function T2(){var e=[],t=[];return o.sessions.forEach(function(n){var i=n.startedAt?new Date(n.startedAt).getTime():0,u={kind:"session",ref:n,t:isFinite(i)?i:0};(TR(n)?t:e).push(u)}),{wand:j2(e),automation:j2(t)}}function MR(){var e=[];e.push(M2());var t=T2();return t.wand.length+t.automation.length===0?M2()+'<div class="empty-state"><strong>\u8FD8\u6CA1\u6709\u4F1A\u8BDD\u8BB0\u5F55</strong><br>\u70B9\u51FB\u4E0A\u65B9\u300C\u65B0\u5BF9\u8BDD\u300D\u5F00\u59CB\u4F60\u7684\u7B2C\u4E00\u6B21\u5BF9\u8BDD\u3002</div>':(t.wand.length>0&&e.push(N2(t.wand)),t.automation.length>0&&e.push(IR(t.automation)),e.join(""))}function NR(){return!!o.sidebarPinned&&!!o.sidebarCollapsed}function OR(){var e=T2(),t=e.wand.map(function(d,f){var m=f+1,g=d.ref,h=g.id===o.selectedId?" active":"",w=g.title||g.description||g.summary||g.command||"\u4F1A\u8BDD "+m,y=g.provider||Dv(g.command)||"terminal",E=hu(y)||"generic",b=w+" \xB7 "+ip(y);return'<button class="sidebar-collapsed-tile provider-'+E+h+'" type="button" data-collapsed-session-id="'+W(g.id)+'" title="'+W(w)+'" aria-label="'+W(b)+'"><span class="sidebar-collapsed-provider-mark" aria-hidden="true">'+up(y)+"</span></button>"}).join(""),n=e.automation.length,i=e.automation.some(function(d){return d.ref.id===o.selectedId}),u=n>0?'<button class="sidebar-collapsed-tile automation-count-tile'+(i?" active-group":"")+'" type="button" data-expand-session-group="automation" title="\u5C55\u5F00\u67E5\u770B '+n+' \u4E2A\u81EA\u52A8\u5316\u4F1A\u8BDD" aria-label="\u5C55\u5F00\u67E5\u770B '+n+' \u4E2A\u81EA\u52A8\u5316\u4F1A\u8BDD"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 2v4"/><path d="M12 18v4"/><path d="M4.93 4.93l2.83 2.83"/><path d="M16.24 16.24l2.83 2.83"/><path d="M2 12h4"/><path d="M18 12h4"/><path d="M4.93 19.07l2.83-2.83"/><path d="M16.24 7.76l2.83-2.83"/><circle cx="12" cy="12" r="3"/></svg><span class="non-wand-count-badge">'+(n>99?"99+":n)+"</span></button>":"",l='<button class="sidebar-collapsed-tile add" type="button" data-collapsed-new-session="1" title="\u65B0\u5EFA\u4F1A\u8BDD" aria-label="\u65B0\u5EFA\u4F1A\u8BDD"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><line x1="12" y1="5" x2="12" y2="19"/><line x1="5" y1="12" x2="19" y2="12"/></svg></button>';return'<div class="sidebar-collapsed-tiles">'+t+u+l+"</div>"}function Ng(){return NR()?OR():MR()}function M2(){if(!o.sessionsManageMode)return'<div class="session-manage-bar"><span class="sidebar-intro">Wand \u4F1A\u8BDD</span><button class="btn btn-ghost btn-xs session-manage-toggle" data-action="toggle-manage-mode" type="button"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M9 11l3 3L22 4"/><path d="M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11"/></svg><span>\u7BA1\u7406</span></button></div>';var e=I2().length,t=e,n=t>0,i=RR(),u=i>0&&t>=i,l=u?"\u53D6\u6D88\u5168\u9009":"\u5168\u9009",d=u?"clear-selection":"select-all-visible",f=i===0?" disabled":"",m='<button class="session-manage-exit" data-action="toggle-manage-mode" type="button" aria-label="\u9000\u51FA\u7BA1\u7406\u6A21\u5F0F" title="\u9000\u51FA\u7BA1\u7406\u6A21\u5F0F"><svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" aria-hidden="true"><line x1="6" y1="6" x2="18" y2="18"/><line x1="18" y1="6" x2="6" y2="18"/></svg></button>',g=n?'<span class="session-manage-count">'+t+'</span><span class="session-manage-summary-label">\u5DF2\u9009\u62E9</span>':'<span class="session-manage-summary-label muted">\u9009\u62E9\u8981\u7BA1\u7406\u7684\u9879\u76EE</span>';return'<div class="session-manage-bar active">'+m+'<div class="session-manage-summary">'+g+'</div><div class="session-manage-actions"><button class="btn btn-ghost btn-xs" data-action="'+d+'" type="button"'+f+">"+l+'</button><button class="btn btn-danger btn-xs" data-action="delete-selected" type="button"'+(n?"":" disabled")+">\u5220\u9664"+(n?" "+t:"")+"</button></div></div>"}function N2(e,t){var n='<section class="session-group'+(t?" "+t:"")+'">';return n+=e.map(function(i){return i.kind==="session"?AR(i.ref,"sessions"):LR(i.ref,i.kind)}).join(""),n+="</section>",n}function IR(e){var t=o.sessionsManageMode||lo(Mg,!1);return'<details class="automation-session-group'+(o.sessionsManageMode?" manage-mode":"")+'"'+(t?" open":"")+'><summary class="automation-session-summary" title="\u7531\u81EA\u52A8\u5316\u6216\u542F\u52A8\u4EFB\u52A1\u521B\u5EFA\uFF0C\u4E0D\u53C2\u4E0E\u666E\u901A Wand \u4F1A\u8BDD\u6392\u5E8F"><span class="automation-session-icon" aria-hidden="true"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v4"/><path d="M12 18v4"/><path d="M4.93 4.93l2.83 2.83"/><path d="M16.24 16.24l2.83 2.83"/><path d="M2 12h4"/><path d="M18 12h4"/><path d="M4.93 19.07l2.83-2.83"/><path d="M16.24 7.76l2.83-2.83"/><circle cx="12" cy="12" r="3"/></svg></span><span class="automation-session-title">\u81EA\u52A8\u5316</span><span class="automation-session-count" aria-label="'+e.length+' \u4E2A\u4F1A\u8BDD">'+e.length+'</span><svg class="automation-session-chevron" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="6 9 12 15 18 9"/></svg></summary>'+N2(e,"automation-session-list")+"</details>"}function O2(){var e=new Set;return o.sessions.forEach(function(t){t.claudeSessionId&&e.add(t.claudeSessionId)}),o.claudeHistory.filter(function(t){return t.hasConversation&&!t.managedByWand&&!e.has(t.claudeSessionId)})}function I2(){return Object.keys(o.selectedSessionIds).filter(function(e){return!!o.selectedSessionIds[e]})}function $p(){o.selectedSessionIds={},o.selectedClaudeHistoryIds={},o.selectedCodexHistoryIds={}}function R2(e){o.sessionsManageMode=typeof e=="boolean"?e:!o.sessionsManageMode,o.sessionsManageMode||($p(),id()),Ot()}function _2(){return o.sessions.slice()}function RR(){return _2().length}function L2(){var e={};_2().forEach(function(t){e[t.id]=!0}),o.selectedSessionIds=e,o.selectedClaudeHistoryIds={},o.selectedCodexHistoryIds={},Ot()}function z2(){$p(),Ot()}function Xo(e,t){if(!(!o.sessionsManageMode||!t)){var n=e==="history"?o.selectedClaudeHistoryIds:e==="codex"?o.selectedCodexHistoryIds:o.selectedSessionIds;n[t]?delete n[t]:n[t]=!0,Ot()}}function P2(e,t,n){if(!o.sessionsManageMode)return"";var i=e==="history"?!!o.selectedClaudeHistoryIds[t]:e==="codex"?!!o.selectedCodexHistoryIds[t]:!!o.selectedSessionIds[t];return'<label class="session-manage-check"><input type="checkbox" data-action="toggle-selection" data-kind="'+W(e)+'" data-id="'+W(t)+'"'+(i?" checked":"")+' aria-label="'+W(n)+'"><span></span></label>'}function Fi(e,t){return Xg(e,Object.assign({type:"danger",danger:!0,okLabel:"\u5220\u9664"},t||{}))}function H2(){var e=I2(),t=e.length;t&&Fi("\u786E\u8BA4\u5220\u9664\u6240\u9009 "+t+" \u9879\u5417\uFF1F\u6B64\u64CD\u4F5C\u65E0\u6CD5\u64A4\u9500\u3002",{title:"\u5220\u9664\u6240\u9009 "+t+" \u9879"}).then(function(n){n&&fetch("/api/sessions/batch-delete",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({sessionIds:e})}).then(function(i){return i.json()}).then(function(){return e.indexOf(o.selectedId)!==-1&&(o.selectedId=null,$t()),$p(),nr()}).catch(function(){var i=document.getElementById("action-error");Or(i,"\u65E0\u6CD5\u6279\u91CF\u5220\u9664\u6240\u9009\u9879\u76EE\u3002")})})}function _R(){var e=Date.now()-864e5,t=O2().filter(function(n){return!n.timestamp||new Date(n.timestamp).getTime()<=e});if(t.length)return Fi("\u786E\u8BA4\u6E05\u7A7A\u5F53\u524D\u663E\u793A\u7684 "+t.length+" \u6761 Claude \u5386\u53F2\u5417\uFF1F",{title:"\u6E05\u7A7A Claude \u5386\u53F2",okLabel:"\u6E05\u7A7A"}).then(function(n){if(n){var i=t.map(function(u){return u.claudeSessionId});return fetch("/api/claude-history/batch-delete",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({claudeSessionIds:i})}).then(function(u){return u.json()}).then(function(u){if(u&&u.error)throw new Error(u.error);o.claudeHistory=o.claudeHistory.filter(function(l){return i.indexOf(l.claudeSessionId)===-1}),$p(),Ot()}).catch(function(){var u=document.getElementById("action-error");Or(u,"\u65E0\u6CD5\u6E05\u7A7A\u5386\u53F2\u4F1A\u8BDD\u3002")})}})}function LR(e,t){var n=t==="codex",i=n?"resume-codex-history":"resume-history",u=n?"delete-codex-history":"delete-history",l=n?o.selectedCodexHistoryIds:o.selectedClaudeHistoryIds,d=e.claudeSessionId.slice(0,8),f=e.firstUserMessage||"(\u7A7A\u4F1A\u8BDD)",m=zR(e.timestamp),g=P2(t,e.claudeSessionId,"\u9009\u62E9\u4F1A\u8BDD "+f),h=o.sessionsManageMode?"":'<button class="session-action-btn delete-btn" data-action="'+u+'" data-claude-session-id="'+e.claudeSessionId+'" type="button" aria-label="\u5220\u9664\u4F1A\u8BDD" title="\u5220\u9664\u4F1A\u8BDD"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 6h18"/><path d="M8 6V4a2 2 0 012-2h4a2 2 0 012 2v2"/><path d="M19 6l-1 14a2 2 0 01-2 2H8a2 2 0 01-2-2L5 6"/></svg></button>',w=o.sessionsManageMode?"":'<button class="session-action-btn" data-action="'+i+'" data-claude-session-id="'+e.claudeSessionId+'" data-cwd="'+W(e.cwd)+'" type="button" aria-label="\u6062\u590D\u4F1A\u8BDD" title="'+(n?"\u6062\u590D\u6B64 Codex \u4F1A\u8BDD":"\u6062\u590D\u6B64 Claude \u4F1A\u8BDD")+'"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M1 4v6h6"/><path d="M3.51 15a9 9 0 105.64-11.36L3 10"/></svg></button>';return'<div class="session-item non-wand-session'+(o.sessionsManageMode?" session-managing":"")+(o.sessionsManageMode&&l[e.claudeSessionId]?" selected":"")+'" data-claude-history-id="'+e.claudeSessionId+'" data-provider="'+(n?"codex":"claude")+'" data-cwd="'+W(e.cwd)+'" role="button" tabindex="0"><div class="session-item-content"><div class="session-item-row">'+g+'<div class="session-main"><div class="session-command claude-history-preview">'+W(f)+'</div><div class="session-meta"><span class="session-id" title="'+W(e.claudeSessionId)+'">'+W(d)+"</span><span>"+W(m)+'</span></div></div><span class="session-actions">'+w+h+"</span></div></div></div>"}function zR(e){if(!e)return"";try{var t=new Date(e),n=new Date,i=n-t,u=Math.floor(i/6e4);if(u<1)return"\u521A\u521A";if(u<60)return u+" \u5206\u949F\u524D";var l=Math.floor(u/60);if(l<24)return l+" \u5C0F\u65F6\u524D";var d=Math.floor(l/24);return d<30?d+" \u5929\u524D":t.toLocaleDateString()}catch{return""}}function PR(){return fetch("/api/claude-history",{credentials:"same-origin"}).then(function(e){return e.ok?e.json():[]}).then(function(e){o.claudeHistory=e||[],o.claudeHistoryLoaded=!0,Ot()}).catch(function(){o.claudeHistoryLoaded=!0,o.claudeHistory=[],Ot()})}var _c=null;function HR(){var e=UR();!o.claudeHistoryLoaded&&!_c&&(_c=PR().then(function(){_c=null},function(){_c=null}));var t=_c||Promise.resolve();return Promise.all([t,e]).then(function(){})}function qR(){return fetch("/api/codex-history",{credentials:"same-origin"}).then(function(e){return e.ok?e.json():[]}).then(function(e){o.codexHistory=e||[],o.codexHistoryLoaded=!0,Ot()}).catch(function(){o.codexHistoryLoaded=!0,o.codexHistory=[],Ot()})}var Zo=null;function UR(){return o.codexHistoryLoaded?Promise.resolve():Zo||(Zo=qR().then(function(){Zo=null},function(){Zo=null}),Zo)}function q2(e,t,n){return Math.min(Math.max(e,t),Math.max(t,n))}function VR(e,t,n,i,u=10,l=8){const d=t.left+l,f=t.right-l-n,m=q2(e.right-n,d,f),g=e.top-u-i,h=e.bottom+u,w=e.top-u-(t.top+l),y=t.bottom-l-(e.bottom+u),E=w>=i||w>=y?"above":"below",b=E==="above"?g:h,x=t.top+l,F=t.bottom-l-i;return{left:m,top:q2(b,x,F),placement:E}}function WR(e,t){const i=o.sessions.find(u=>u.id===e);i&&(i.output=em((i.output||"")+t))}function U2(e,t){const i=o.sessions.find(u=>u.id===e);i&&(i.output=em(t))}var Ja=new Map,V2=new Map;function W2(e){return Math.round(Math.max(.5,Math.min(2,e))*4)/4}function GR(){return o.ws&&o.ws.readyState===WebSocket.OPEN?o.ws:null}function Ts(e){const t=GR();t&&t.send(JSON.stringify(e))}function YR(){return(typeof getComputedStyle=="function"?getComputedStyle(document.documentElement).getPropertyValue("--term-font-family").trim():"")||"ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace"}function G2(e=Number(o.terminalScale||1)){const t=document.documentElement.classList.contains("is-wand-embed-terminal")?10:o.terminalBaseFontSize||13;return Math.max(8,Math.round(t*e))}function Y2(e,t){Ts({type:"pty_input",sessionId:e,data:t,userInput:o.terminalInteractive===!0})}function $2(e,t,n){const i=Math.max(20,Math.min(Math.floor(t),1e3)),u=Math.max(5,Math.min(Math.floor(n),500));Ts({type:"pty_resize",sessionId:e,cols:i,rows:u})}function Lc(e){if(e.disposed)return;try{e.fitAddon.fit()}catch{}const t=Number(e.terminal.cols),n=Number(e.terminal.rows);t>0&&n>0&&$2(e.sessionId,t,n)}function Og(e){requestAnimationFrame(()=>{Lc(e),requestAnimationFrame(()=>Lc(e))}),window.setTimeout(()=>Lc(e),120)}function K2(e){return V2.get(e)??W2(Number(o.terminalScale||1))}function $R(e,t){const n=W2(t);V2.set(e,n);const i=Ja.get(e);return!i||i.disposed||(i.terminal.options.fontSize=G2(n),Og(i)),n}function zc(e){return Ja.has(e)}function Kp(e,t){return!t||e.disposed?Promise.resolve():new Promise(n=>{try{e.terminal.write(t,()=>n())}catch{n()}})}function KR(e,t){if(!e||!t)return!1;const n=Ja.get(e);if(n&&!n.disposed){if(n.container!==t){try{n.resizeObserver.disconnect()}catch{}t.appendChild(n.wrap),n.container=t,n.resizeObserver.observe(t)}return Og(n),!0}const i=globalThis.XTermLib;if(!i||!i.Terminal||!i.FitAddon)return!1;const u=document.createElement("div");u.className="terminal-scroll-wrap pooled-terminal-wrap",t.appendChild(u);const l=new i.Terminal({cols:120,rows:36,allowProposedApi:!0,convertEol:!1,cursorBlink:!1,disableStdin:!1,fontFamily:YR(),fontSize:G2(K2(e)),lineHeight:1.25,scrollback:5e3,theme:{background:"#1f1b17",foreground:"#f4eee6",cursor:"#d88d60",selectionBackground:"rgba(216, 141, 96, 0.3)"}}),d=new i.FitAddon;let f=null;try{i.Unicode11Addon&&(f=new i.Unicode11Addon,l.loadAddon(f),l.unicode.activeVersion="11")}catch{}l.loadAddon(d),l.open(u);try{d.fit()}catch{}l.onData(y=>Y2(e,y)),l.onBinary(y=>{o.terminalInteractive&&Y2(e,y)}),l.onResize(y=>$2(e,y.cols,y.rows));const m=new ResizeObserver(()=>{const y=Ja.get(e);y&&Lc(y)});m.observe(t);const g={sessionId:e,terminal:l,fitAddon:d,wrap:u,container:t,resizeObserver:m,writeQueue:Promise.resolve(),restoreGeneration:0,disposed:!1};Ja.set(e,g);const h=o.sessions.find(y=>y.id===e),w=o.terminalStatesBySession?.[e];return Ig(e,h?.terminalState??w,h?.output||"")||Qp(e,h?.output||""),Ts({type:"subscribe",mode:"add",sessionId:e,capabilities:{ptyAck:!0}}),Og(g),!0}function QR(){for(const e of Ja.keys())Ts({type:"subscribe",mode:"add",sessionId:e,capabilities:{ptyAck:!0}})}function XR(e,t,n){WR(e,t);const i=Ja.get(e);if(!i||i.disposed){n&&e&&Ts({type:"pty_ack",sessionId:e,bytes:n});return}i.writeQueue=i.writeQueue.catch(()=>{}).then(async()=>{if(await Kp(i,t),!i.disposed)try{i.terminal.scrollToBottom()}catch{}n&&e&&Ts({type:"pty_ack",sessionId:e,bytes:n})})}function Qp(e,t){U2(e,t);const n=Ja.get(e);if(!n||n.disposed)return;const i=++n.restoreGeneration;n.writeQueue=n.writeQueue.catch(()=>{}).then(async()=>{if(!(n.disposed||i!==n.restoreGeneration)){try{n.terminal.reset(),n.terminal.clear()}catch{}if(await Kp(n,t),!(n.disposed||i!==n.restoreGeneration))try{n.terminal.scrollToBottom()}catch{}}})}function Ig(e,t,n=""){if(!t||t.version!==1)return!1;e&&(o.terminalStatesBySession[e]=t),U2(e,n);const i=Ja.get(e);if(!i||i.disposed)return!0;const u=++i.restoreGeneration;return i.writeQueue=i.writeQueue.catch(()=>{}).then(async()=>{if(i.disposed||u!==i.restoreGeneration)return;try{i.terminal.reset(),i.terminal.clear(),t.cols>0&&t.rows>0&&i.terminal.resize(t.cols,t.rows)}catch{}await Kp(i,String(t.data||""));const l=Array.isArray(t.pending)?t.pending:[];for(const d of l){if(i.disposed||u!==i.restoreGeneration)return;if(d?.type==="resize"&&d.cols>0&&d.rows>0)try{i.terminal.resize(d.cols,d.rows)}catch{}else d?.type==="data"&&await Kp(i,String(d.data||""))}if(!(i.disposed||u!==i.restoreGeneration))try{Lc(i),i.terminal.scrollToBottom()}catch{}}),!0}function Rg(e){const t=Ja.get(e);if(t){t.disposed=!0;try{t.resizeObserver.disconnect()}catch{}try{t.terminal.dispose()}catch{}t.wrap.parentNode&&t.wrap.parentNode.removeChild(t.wrap),Ja.delete(e),Ts({type:"unsubscribe",sessionId:e})}}function Q2(){for(const e of[...Ja.keys()])Rg(e)}function X2(){a8(),!Xp()&&(o.pollTimer=setInterval(nr,1600))}setInterval(function(){var e=document.querySelectorAll(".session-time");e.length>0&&vd()},3e4);function _g(){o.wsReconnectTimer&&(clearTimeout(o.wsReconnectTimer),o.wsReconnectTimer=null)}var ZR=1e4,JR=4e4;function e_(){Z2(),o.wsHeartbeatCheckTimer=setInterval(J2,ZR)}function Z2(){o.wsHeartbeatCheckTimer&&(clearInterval(o.wsHeartbeatCheckTimer),o.wsHeartbeatCheckTimer=null)}function J2(){if(!(!o.ws||o.ws.readyState!==WebSocket.OPEN)&&o.lastWsMessageAt){var e=Date.now()-o.lastWsMessageAt;e>JR&&Lg("heartbeat-stale-"+Math.round(e/1e3)+"s")}}function Lg(e){if(_g(),o.ws){var t=o.ws;try{t.onclose=null}catch{}try{t.onerror=null}catch{}try{t.onmessage=null}catch{}try{t.close()}catch{}o.ws=null}o.wsConnected=!1,o.wsReconnectAttempts=0,Xp(e)}function e8(){if(!o.wsReconnectTimer&&!document.hidden){var e=o.wsReconnectAttempts||0,t=[500,1e3,2e3,4e3,8e3],n=t[e<t.length?e:t.length-1];o.wsReconnectAttempts=e+1,o.wsReconnectTimer=setTimeout(function(){o.wsReconnectTimer=null,o.config&&!o.ws&&!document.hidden&&Xp("backoff")},n)}}function Xp(e){if(!window.WebSocket)return!1;if(o.ws){try{o.ws.close()}catch{}o.ws=null}var t=window.location.protocol==="https:"?"wss:":"ws:",n=t+"//"+window.location.host+"/ws";try{var i=new WebSocket(n);return i.onopen=function(){o.ws=i;try{window.__wandWs=i}catch{}o.wsConnected=!0,o.lastWsMessageAt=Date.now(),o.wsReconnectAttempts=0,_g(),o.lastSeqBySession={},e_(),Mu(o.selectedId),QR(),jz(),Wc("ws-reconnect")},i.onmessage=function(u){o.lastWsMessageAt=Date.now();try{var l=JSON.parse(u.data);if(l&&l.type==="ping"){if(o.ws&&o.ws.readyState===WebSocket.OPEN)try{o.ws.send(JSON.stringify({type:"pong",t:l.t}))}catch{}return}if(l&&l.type==="pty_error"){Fe(l.error||"\u7EC8\u7AEF\u8F93\u5165\u5931\u8D25","error");return}if(l&&l.type==="resync_required"&&l.sessionId){if(o.ws&&o.ws.readyState===WebSocket.OPEN)try{o.ws.send(JSON.stringify({type:"resync",sessionId:l.sessionId}))}catch{}o.lastSeqBySession||(o.lastSeqBySession={}),o.lastSeqBySession[l.sessionId]=0;return}if(l&&(l.type==="init"||l.type==="output")&&l.sessionId&&typeof l.seq=="number"){o.lastSeqBySession||(o.lastSeqBySession={});var d=o.lastSeqBySession[l.sessionId]||0;if(l.type==="init")o.lastSeqBySession[l.sessionId]=l.seq;else if(l.seq===d+1)o.lastSeqBySession[l.sessionId]=l.seq;else if(l.seq>d+1&&d>0){if(o.ws&&o.ws.readyState===WebSocket.OPEN)try{o.ws.send(JSON.stringify({type:"resync",sessionId:l.sessionId}))}catch{}o.lastSeqBySession[l.sessionId]=0;return}else{if(l.seq<d)return;o.lastSeqBySession[l.sessionId]=l.seq}}t_(l)}catch{}},i.onclose=function(){o.ws=null,o.wsConnected=!1,Z2(),e8()},i.onerror=function(){i.close()},!0}catch{return e8(),!1}}function t_(e){switch(e.type){case"output":if(e.data&&e.sessionId&&Object.prototype.hasOwnProperty.call(e.data,"isResponding")&&(o._lastIsResponding||(o._lastIsResponding={}),o._lastIsResponding[e.sessionId]=!!e.data.isResponding),e.data&&e.sessionId){var t=!!e.data.incremental,n={id:e.sessionId},i=!1;if(!t&&e.data.output!==void 0&&(n.output=e.data.output),Object.prototype.hasOwnProperty.call(e.data,"permissionBlocked")&&(n.permissionBlocked=!!e.data.permissionBlocked),Object.prototype.hasOwnProperty.call(e.data,"queuedMessages")&&(n.queuedMessages=e.data.queuedMessages||[],o.queueEpoch++),e.data.structuredState&&(n.structuredState=e.data.structuredState),e.data.sessionKind&&(n.sessionKind=e.data.sessionKind),Object.prototype.hasOwnProperty.call(e.data,"title")&&(n.title=e.data.title,i=!0),Object.prototype.hasOwnProperty.call(e.data,"description")&&(n.description=e.data.description,i=!0),Object.prototype.hasOwnProperty.call(e.data,"titleGenerating")&&(n.titleGenerating=!!e.data.titleGenerating,i=!0),Object.prototype.hasOwnProperty.call(e.data,"summary")&&(n.summary=e.data.summary),e.data.messages)n.messages=e.data.messages,typeof e.data.messageOffset=="number"&&(n.messageOffset=e.data.messageOffset),typeof e.data.messageTotal=="number"&&(n.messageTotal=e.data.messageTotal);else if(t&&e.data.lastMessage){var u=o.sessions.find(function(I){return I.id===e.sessionId});if(u){var l=Array.isArray(u.messages)?u.messages.slice():[],d=e.data.messageCount||0,f=typeof u.messageOffset=="number"?u.messageOffset:0,m=l.length>0?l[l.length-1]:null,g=e.data.lastMessage;m&&g.role&&m.role===g.role?l[l.length-1]=fb(m,g):f+l.length<d&&l.push(g),n.messages=l,d>0&&(n.messageTotal=d)}}var h=t&&e.data.chunk&&!e.data.lastMessage&&!n.messages&&n.output===void 0&&!e.data.structuredState&&!e.data.sessionKind;if(h){if(e.data.permissionBlocked!==void 0){var w=o.sessions.find(function(I){return I.id===e.sessionId});w&&!!w.permissionBlocked!=!!e.data.permissionBlocked&&(tt(n),e.sessionId===o.selectedId&&Ci())}}else if((n.output!==void 0||n.messages||t||e.data.permissionBlocked!==void 0||n.title||n.description||n.titleGenerating!==void 0)&&(tt(n),i&&vd(),e.sessionId===o.selectedId)){var y=o.sessions.find(function(I){return I.id===e.sessionId})||n;o.currentMessages=Wn(y,wa(y,y.output,!1)),Ci(),y.sessionKind==="structured"||e.data.sessionKind==="structured"?Pc():zg()}}e.sessionId===o.selectedId&&o.terminal&&e.data&&!zc(e.sessionId)?e.data.chunk&&oz(e.sessionId)?(o.lastChunkAt=Date.now(),o.terminalLiveStreamSessions[e.sessionId]=!0,nm(o.terminal,e.data.chunk,e.ptyBytes,e.sessionId),o.terminalSessionId=e.sessionId,e.data.output?o.terminalOutput=em(String(e.data.output)):o.terminalOutput=em((o.terminalOutput||"")+String(e.data.chunk)),ei("output"),Jr()):!e.data.incremental&&Object.prototype.hasOwnProperty.call(e.data,"output")&&am(e.sessionId,e.data.output||"",{mode:"append"}):e.data&&zc(e.sessionId)?e.data.chunk?XR(e.sessionId,String(e.data.chunk),e.ptyBytes):!e.data.incremental&&Object.prototype.hasOwnProperty.call(e.data,"output")?(Qp(e.sessionId,String(e.data.output||"")),e.ptyBytes&&o.ws.send(JSON.stringify({type:"pty_ack",sessionId:e.sessionId,bytes:e.ptyBytes}))):e.ptyBytes&&o.ws.send(JSON.stringify({type:"pty_ack",sessionId:e.sessionId,bytes:e.ptyBytes})):e.ptyBytes&&o.ws&&o.ws.readyState===WebSocket.OPEN&&o.ws.send(JSON.stringify({type:"pty_ack",sessionId:e.sessionId,bytes:e.ptyBytes}));break;case"started":e.data&&e.data.id?tt(e.data):tt({id:e.sessionId,status:"running"}),vd();break;case"ended":{var E=e.data&&e.data.status?e.data.status:"exited",b=e.data&&Object.prototype.hasOwnProperty.call(e.data,"permissionBlocked")?!!e.data.permissionBlocked:!1,x={id:e.sessionId,status:E,permissionBlocked:b};e.data&&e.data.messages&&(x.messages=e.data.messages,typeof e.data.messageOffset=="number"&&(x.messageOffset=e.data.messageOffset),typeof e.data.messageTotal=="number"&&(x.messageTotal=e.data.messageTotal)),e.data&&e.data.structuredState&&(x.structuredState=e.data.structuredState),e.data&&e.data.queuedMessages&&(x.queuedMessages=e.data.queuedMessages),tt(x),e.sessionId===o.selectedId&&(_s("Enter \u53D1\u9001 \xB7 Shift+Enter \u6362\u884C"),zg(!0));var F=o.sessions.find(function(I){return I.id===e.sessionId}),C=e.data&&e.data.exitCode,A=C!=null&&C!==0,S=F&&F.summary||"",T=F?DR(F):"",k=A?"\u4EFB\u52A1\u5F02\u5E38\u7ED3\u675F":"\u4EFB\u52A1\u5DF2\u5B8C\u6210",B="";S?(B=S,T&&!A&&(B+=`
4382
4382
  `+T)):B=F&&F.command||e.sessionId,Zc(A?"error":"success"),wL(e.sessionId,k,B),R8(e.sessionId),n5(),(e.sessionId!==o.selectedId||document.hidden)&&Zg({title:k,body:B,type:A?"warning":"success",icon:A?"!":"\u2713",duration:6e3,actionLabel:"\u67E5\u770B",action:function(){Gn(e.sessionId)}}),o.messageQueue=[],o.pendingMessages=[];var R=o.sessions.find(function(I){return I.id===e.sessionId}),z=e.sessionId===o.selectedId?o.sessions.find(function(I){return I.id===o.selectedId}):null,$=!!(R&&R.sessionKind==="structured"||z&&z.sessionKind==="structured");$&&e.sessionId===o.selectedId?(X8(),gb(e.sessionId)):$||(o.structuredInputQueue=[],gb(o.selectedId),Au()),e.sessionId===o.selectedId&&($||zs(!1),o.currentTask=null,Ci()),e.sessionId===o.selectedId&&gd(),vd(),sm(),e.sessionId===o.selectedId&&($||ji(e.sessionId));break}case"init":if(e.sessionId===o.selectedId&&e.data){o.chatRenderTimer&&(clearTimeout(o.chatRenderTimer),o.chatRenderTimer=null),tt(e.data);var K=o.sessions.find(function(I){return I.id===e.sessionId});o.currentMessages=Wn(K||e.data,wa(K||e.data,e.data.output,!1)),Pc(!0),Ci(),t8();var G=e.data.output||"";zc(e.sessionId)?Ig(e.sessionId,e.data.terminalState,G)||Qp(e.sessionId,G):D8(e.sessionId,e.data.terminalState,G)||(i_(G,e.sessionId,"replace"),Wc("init"))}else if(e.data&&zc(e.sessionId)){tt(e.data);var fe=e.data.output||"";Ig(e.sessionId,e.data.terminalState,fe)||Qp(e.sessionId,fe)}break;case"usage":break;case"task":e.sessionId===o.selectedId&&(o.currentTask=e.data||null,Ci()),vL(e.sessionId,e.data||null),a5(e.sessionId),vd();break;case"status":if(e.sessionId&&e.data){var le={id:e.sessionId};if(Object.prototype.hasOwnProperty.call(e.data,"status")&&(le.status=e.data.status),Object.prototype.hasOwnProperty.call(e.data,"exitCode")&&(le.exitCode=e.data.exitCode),Object.prototype.hasOwnProperty.call(e.data,"providerCliActive")&&(le.providerCliActive=!!e.data.providerCliActive),Object.prototype.hasOwnProperty.call(e.data,"providerCliExitCode")&&(le.providerCliExitCode=e.data.providerCliExitCode),e.data.structuredState)le.structuredState=e.data.structuredState;else if(Object.prototype.hasOwnProperty.call(e.data,"status")){var u=o.sessions.find(function(re){return re.id===e.sessionId});u&&u.sessionKind==="structured"&&(le.structuredState=Object.assign({},u.structuredState||{},{inFlight:e.data.status==="running"}))}if(Object.prototype.hasOwnProperty.call(e.data,"queuedMessages")&&(le.queuedMessages=e.data.queuedMessages||[],o.queueEpoch++),Object.prototype.hasOwnProperty.call(e.data,"permissionBlocked")&&(le.permissionBlocked=!!e.data.permissionBlocked),e.data.permissionRequest){le.pendingEscalation={scope:e.data.permissionRequest.scope,target:e.data.permissionRequest.target,reason:e.data.permissionRequest.prompt};var P=o.sessions.find(function(I){return I.id===e.sessionId}),ue=P&&(P.summary||P.command)||e.sessionId,U=e.data.permissionRequest.prompt||"\u9700\u8981\u6743\u9650\u5BA1\u6279",V=e.data.permissionRequest.target,N=ue;V?N+=`
4383
4383
  `+U+" \xB7 "+V:N+=`
4384
- `+U,Zc("medium"),gL(e.sessionId,N),e.sessionId!==o.selectedId&&Zg({title:"\u9700\u8981\u4F60\u7684\u6388\u6743",body:N,type:"warning",icon:"!",duration:0,actionLabel:"\u53BB\u5904\u7406",action:function(){Gn(e.sessionId)}})}e.data.permissionBlocked===!1&&(le.pendingEscalation=null),e.data.approvalStats&&(le.approvalStats=e.data.approvalStats),tt(le),a5(e.sessionId),n5(),e.sessionId===o.selectedId&&(Ci(),e.data.approvalStats&&t8(),le.structuredState&&(le.structuredState.inFlight||(_s("Enter \u53D1\u9001 \xB7 Shift+Enter \u6362\u884C"),X8()),zg()))}break;case"notification":e.data&&(e.data.kind==="update"?O8(e.data.current||"-",e.data.latest||"-"):e.data.kind==="auto-update-start"?CL(e.data.current||"-",e.data.latest||"-",e.data.previousInstanceId||null):e.data.kind==="auto-update-restart"?Jc(e.data.previousInstanceId||null,e.data.latest||null):e.data.kind==="restart"&&Jc());break}}function Ci(){var e=jt(),t=document.getElementById("current-task"),n=document.getElementById("permission-actions"),i=document.getElementById("permission-actions-label");if(!(!t&&!e)){Jn("task:update");var u=o.sessions.find(function(E){return E.id===o.selectedId});u&&u.provider==="codex"&&(n&&n.classList.add("hidden"),!e&&t&&t.classList.remove("permission-blocked"));var l=u&&u.pendingEscalation?u.pendingEscalation:null,d=u&&u.provider!=="codex"?l||u.permissionBlocked:!1;if(d){var f=u&&u.autoApprovePermissions;if(i)if(f)i.textContent="\u81EA\u52A8\u6279\u51C6\u4E2D...";else if(l){var m=l.reason||"\u7B49\u5F85\u6388\u6743",g=l.target?" \xB7 "+l.target:"";i.textContent=m+g}else i.textContent="\u7B49\u5F85\u6388\u6743";if(n){n.classList.remove("hidden");var h=document.getElementById("approve-permission-btn"),w=document.getElementById("deny-permission-btn");h&&h.classList.toggle("hidden",!!f),w&&w.classList.toggle("hidden",!!f)}!e&&t&&(t.textContent="",t.classList.add("hidden"),t.classList.remove("permission-blocked"));return}!e&&t&&t.classList.remove("permission-blocked"),n&&n.classList.add("hidden");var y=o.currentTask;!e&&t&&y&&y.title?(t.textContent=y.title,t.classList.remove("hidden")):!e&&t&&(t.textContent="",t.classList.add("hidden"))}}function t8(){var e=document.getElementById("approval-stats");if(e){var t=o.sessions.find(function(u){return u.id===o.selectedId}),n=t&&t.approvalStats;if(!n||n.total===0){e.className="approval-stats hidden",e.innerHTML="";return}e.className="approval-stats",e.innerHTML='<span class="approval-stats-divider"></span><span class="approval-stats-badge" id="approval-stats-badge" title="\u672C\u6B21\u4F1A\u8BDD\u81EA\u52A8\u6279\u51C6\u7EDF\u8BA1"><svg class="approval-stats-icon" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg><span class="approval-stats-total">'+n.total+'</span></span><span class="approval-stats-popup" id="approval-stats-popup"><span class="approval-stats-popup-title">\u81EA\u52A8\u6279\u51C6\u7EDF\u8BA1</span>'+(n.command>0?'<span class="approval-stats-row"><span class="approval-stats-row-icon">'+mt("terminal",{size:12,strokeWidth:1.8})+'</span><span class="approval-stats-row-label">\u547D\u4EE4\u6267\u884C</span><span class="approval-stats-row-count">'+n.command+"</span></span>":"")+(n.file>0?'<span class="approval-stats-row"><span class="approval-stats-row-icon">'+mt("edit",{size:12,strokeWidth:1.8})+'</span><span class="approval-stats-row-label">\u6587\u4EF6\u5199\u5165</span><span class="approval-stats-row-count">'+n.file+"</span></span>":"")+(n.tool>0?'<span class="approval-stats-row"><span class="approval-stats-row-icon">'+mt("wrench",{size:12,strokeWidth:1.8})+'</span><span class="approval-stats-row-label">\u5176\u4ED6\u5DE5\u5177</span><span class="approval-stats-row-count">'+n.tool+"</span></span>":"")+'<span class="approval-stats-row approval-stats-row-total"><span class="approval-stats-row-icon">'+mt("sigma",{size:12,strokeWidth:1.8})+'</span><span class="approval-stats-row-label">\u5408\u8BA1</span><span class="approval-stats-row-count">'+n.total+"</span></span></span>";var i=e.querySelector(".approval-stats-badge");i&&(i.classList.remove("approval-stats-pulse"),i.offsetWidth,i.classList.add("approval-stats-pulse"))}}function n_(){if(Zc("light"),!!o.selectedId){var e=document.getElementById("approve-permission-btn"),t=document.getElementById("deny-permission-btn");e&&(e.disabled=!0),t&&(t.disabled=!0),fetch("/api/sessions/"+encodeURIComponent(o.selectedId)+"/approve-permission",{method:"POST",credentials:"same-origin"}).then(function(n){return n.json()}).then(function(n){if(n&&n.error){Fe(n.error,"error");return}tt(n),Ci()}).catch(function(n){Fe(n&&n.message||"\u65E0\u6CD5\u6279\u51C6\u6388\u6743\u3002","error")}).finally(function(){e&&(e.disabled=!1),t&&(t.disabled=!1)})}}function a_(){if(Zc("light"),!!o.selectedId){var e=document.getElementById("approve-permission-btn"),t=document.getElementById("deny-permission-btn");e&&(e.disabled=!0),t&&(t.disabled=!0),fetch("/api/sessions/"+encodeURIComponent(o.selectedId)+"/deny-permission",{method:"POST",credentials:"same-origin"}).then(function(n){return n.json()}).then(function(n){if(n&&n.error){Fe(n.error,"error");return}tt(n),Ci()}).catch(function(n){Fe(n&&n.message||"\u65E0\u6CD5\u62D2\u7EDD\u6388\u6743\u3002","error")}).finally(function(){e&&(e.disabled=!1),t&&(t.disabled=!1)})}}function r_(){if(o.selectedId){var e=o.sessions.find(function(n){return n.id===o.selectedId});if(e&&e.provider==="codex"){Fe("Codex \u4F1A\u8BDD\u56FA\u5B9A\u4EE5 full-access PTY \u542F\u52A8\uFF0C\u4E0D\u652F\u6301\u5207\u6362\u81EA\u52A8\u6279\u51C6\u3002","info");return}var t=document.getElementById("auto-approve-toggle");t&&(t.style.opacity="0.5"),fetch("/api/sessions/"+encodeURIComponent(o.selectedId)+"/toggle-auto-approve",{method:"POST",credentials:"same-origin"}).then(function(n){return n.json()}).then(function(n){if(n&&n.error){Fe(n.error,"error");return}tt(n),n8();var i=n.autoApprovePermissions;Fe(i?"\u81EA\u52A8\u6279\u51C6\u5DF2\u5F00\u542F":"\u81EA\u52A8\u6279\u51C6\u5DF2\u5173\u95ED","info")}).catch(function(n){Fe(n&&n.message||"\u65E0\u6CD5\u5207\u6362\u81EA\u52A8\u6279\u51C6\u3002","error")}).finally(function(){t&&(t.style.opacity="")})}}function n8(){var e=document.getElementById("auto-approve-toggle"),t=o.sessions.find(function(u){return u.id===o.selectedId});if(l4(t)){e&&e.parentNode&&e.parentNode.removeChild(e);return}if(e){var n="composer-pill composer-pill-chip auto-approve-indicator",i=t&&t.autoApprovePermissions;i?(e.className=n+" active",e.title="\u81EA\u52A8\u6279\u51C6\u5DF2\u542F\u7528 \u2014 \u70B9\u51FB\u5173\u95ED",e.setAttribute("aria-pressed","true"),e.setAttribute("aria-label","\u81EA\u52A8\u6279\u51C6\u5DF2\u542F\u7528\uFF0C\u70B9\u51FB\u5173\u95ED"),e.innerHTML=mt("shieldCheck",{size:12,strokeWidth:1.7,cls:"composer-pill-icon"})+'<span class="composer-pill-label">\u81EA\u52A8</span>'):(e.className=n,e.title="\u81EA\u52A8\u6279\u51C6\u5DF2\u5173\u95ED \u2014 \u70B9\u51FB\u5F00\u542F",e.setAttribute("aria-pressed","false"),e.setAttribute("aria-label","\u81EA\u52A8\u6279\u51C6\u5DF2\u5173\u95ED\uFF0C\u70B9\u51FB\u5F00\u542F"),e.innerHTML=mt("shield",{size:12,strokeWidth:1.7,cls:"composer-pill-icon"})+'<span class="composer-pill-label">\u624B\u52A8</span>')}}function i_(e,t,n){return o.terminal?am(t||o.selectedId,e,{mode:n||"append"}):!1}function a8(){o.pollTimer&&(clearInterval(o.pollTimer),o.pollTimer=null)}function Pc(e){o.renderPending&&!e||(o.renderPending=!0,e?(Em(!0),o.renderPending=!1):requestAnimationFrame(function(){Em(!1),o.renderPending=!1}))}o.chatRenderTimer=null;function zg(e){if(!(o.chatRenderTimer&&!e)){if(o.chatRenderTimer&&clearTimeout(o.chatRenderTimer),e){o.chatRenderTimer=null,Pc();return}var t=o.sessions.find(function(u){return u.id===o.selectedId}),n=t&&t.status==="running"&&t.sessionKind!=="structured",i=n?y8:x8;o.chatRenderTimer=setTimeout(function(){o.chatRenderTimer=null;var u=o.sessions.find(function(l){return l.id===o.selectedId});u&&(o.currentMessages=Wn(u,wa(u,u.output,!0))),Pc()},i)}}var Pg=0,Zp=0,r8=0,Hc=0;function Hg(){return window.__wandIosNative===!0}function i8(e){r8=Math.max(r8,Date.now()+(e||1800))}function u8(e,t){setTimeout(function(){var n=document.activeElement;Jp(n)&&n!==t||i8(e)},30)}function u_(e){return Math.max(window.innerHeight||0,e&&e.height||0,document.documentElement&&document.documentElement.clientHeight||0,document.body&&document.body.clientHeight||0)}function s_(e){var t=document.documentElement,n=Math.max(window.innerWidth||0,e&&e.width||0,t&&t.clientWidth||0),i=u_(e);return!Pg||Math.abs(n-Pg)>8?(Pg=n,Zp=i):i>Zp&&(Zp=i),Math.max(1,Math.round(Zp||i||1))}function o_(e,t,n,i){return e||!Hg()?!1:t>0||i>n+1}function Jo(e){var t=window.visualViewport;if(t){var n=document.documentElement;if(n.classList.toggle("is-keyboard-open",!!e),window.__wandImeNative){n.style.setProperty("--app-viewport-top","0px"),n.style.setProperty("--app-viewport-height",Math.round(t.height)+"px");return}var i=s_(t),u=Math.max(0,Math.round(t.offsetTop||0)),l=Math.max(1,Math.round(t.height));(!e&&Hg()||o_(e,u,l,i))&&(u=0,l=Math.max(l,i)),n.style.setProperty("--app-viewport-top",u+"px"),n.style.setProperty("--app-viewport-height",l+"px"),(e||(window.scrollY||0)>0)&&h5()}}function Jp(e){if(!e)return!1;var t=e.tagName;if(t==="TEXTAREA"||t==="SELECT")return!0;if(t==="INPUT"){var n=(e.getAttribute("type")||"text").toLowerCase();return!/^(button|checkbox|color|file|hidden|image|radio|range|reset|submit)$/i.test(n)}return!!e.isContentEditable}function l_(){if(!("visualViewport"in window)||window.__wandViewportHandlersBound)return;window.__wandViewportHandlersBound=!0;var e=window.visualViewport,t=e.height,n=!1,i=Math.max(window.innerWidth||0,e.width||0),u=Math.max(window.innerHeight||0,e.height||0),l=[];function d(){return Math.max(window.innerHeight||0,e.height||0)}function f(){var b=Math.max(window.innerWidth||0,e.width||0),x=d();if(Math.abs(b-i)>8){i=b,u=x;return}x>u&&(u=x)}function m(b,x){var F=document.activeElement,C=F===b||Jp(F),A=u-e.height,S=u-(window.innerHeight||e.height||0),T=Date.now()<Hc;return T?!!(C&&(A>120||S>120)):!!(x>80||C&&(A>120||S>120)||n&&(A>80||x>32))}function g(){l.forEach(function(b){clearTimeout(b)}),l=[60,180,360,620,900].map(function(b){return setTimeout(function(){Jo(n)},b)})}function h(){[0,50,120,220,360,560].forEach(function(b){setTimeout(function(){w();var x=document.getElementById("input-box");x&&document.activeElement===x&&xm(x)},b)})}function w(){if(e){var b=document.getElementById("input-box"),x=window.innerHeight-e.height-e.offsetTop;f();var F=m(b,x),C=Math.abs(e.height-t)>8;if(Jo(F),F&&(!n||C)&&Gz(e,b)&&xm(b),!n&&F){var A=o.terminalAutoFollow||Vg();va("keyboard-open",{forceReplay:!0}),window.__wandImeNative||setTimeout(function(){Jo(!0)},220),g(),A&&setTimeout(function(){o.terminal&&ei("force")},220)}if(n&&!F){var S=!!window.__wandImeNative;S||(i8(2200),Hc=Date.now()+1200,Jo(!1),h5()),g(),setTimeout(function(){S||(Jo(!1),h5()),va("keyboard-close",{forceReplay:!0}),ei("keyboard")},200)}C&&n===F&&va("viewport"),n=F,t=e.height}}var y=null;function E(){y!==null&&cancelAnimationFrame(y),y=requestAnimationFrame(function(){y=null,w()})}e.addEventListener("resize",E),e.addEventListener("scroll",E),document.addEventListener("visibilitychange",function(){document.visibilityState==="visible"&&(E(),setTimeout(E,240),setTimeout(E,720))}),window.addEventListener("pageshow",function(b){b&&b.persisted&&(E(),setTimeout(E,240))}),document.addEventListener("focusout",function(b){!b||!b.target||Jp(b.target)&&(u8(1600,b.target),Hg()&&(Hc=Math.max(Hc,Date.now()+1200)),setTimeout(E,80),setTimeout(E,420))}),document.addEventListener("focusin",function(b){!b||!b.target||!Jp(b.target)||h()}),window.addEventListener("wand-ios-ime-state",function(b){var x=b&&b.detail&&b.detail.state;x==="hidden"&&(Hc=Date.now()+900),h(),g()}),w()}function c_(){var e=document.getElementById("output");if(e){var t=document.createElement("div");t.className="terminal-resize-handle",t.innerHTML="&#8942;",e.appendChild(t);var n=!1,i=0,u=0;t.addEventListener("mousedown",function(l){n=!0,i=l.clientY,u=e.getBoundingClientRect().height,document.body.style.cursor="ns-resize",document.body.style.userSelect="none",l.preventDefault()}),o.resizeMouseMove=function(l){if(n){var d=l.clientY-i,f=Math.max(200,Math.min(u+d,window.innerHeight-200));e.style.height=f+"px",e.style.flex="none",Di()}},document.addEventListener("mousemove",o.resizeMouseMove),o.resizeMouseUp=function(){n&&(n=!1,document.body.style.cursor="",document.body.style.userSelect="",Di())},document.addEventListener("mouseup",o.resizeMouseUp),t.addEventListener("touchstart",function(l){n=!0,i=l.touches[0].clientY,u=e.getBoundingClientRect().height,l.preventDefault()},{passive:!1}),o.resizeTouchMove=function(l){if(n){var d=l.touches[0].clientY-i,f=Math.max(200,Math.min(u+d,window.innerHeight-200));e.style.height=f+"px",e.style.flex="none",Di(),l.preventDefault()}},document.addEventListener("touchmove",o.resizeTouchMove,{passive:!1}),o.resizeTouchEnd=function(){n&&(n=!1,Di())},document.addEventListener("touchend",o.resizeTouchEnd)}}function s8(){var e=Su();return!!e&&!ft(e)}function qg(e){var t=Math.max(Ls,window.innerWidth-dm-Ls),n=Math.max(Ls,window.innerHeight-dm-Ls);return{right:Math.min(Math.max(Ls,e.right),t),bottom:Math.min(Math.max(Ls,e.bottom),n)}}function o8(){if(o.joystickBallEl){var e=qg(o.joystickPos||{right:18,bottom:96});o.joystickBallEl.style.right=e.right+"px",o.joystickBallEl.style.bottom=e.bottom+"px"}}function d_(e,t){var n=qg({right:e,bottom:t});o.joystickPos=n;try{localStorage.setItem("wand-ball-pos",JSON.stringify(n))}catch{}}function l8(){if(!(!o.joystickPanelEl||!o.joystickBallEl)){var e=window.visualViewport,t={left:e?e.offsetLeft:0,top:e?e.offsetTop:0,right:e?e.offsetLeft+e.width:window.innerWidth,bottom:e?e.offsetTop+e.height:window.innerHeight},n=o.joystickBallEl.getBoundingClientRect(),i=o.joystickPanelEl.offsetWidth,u=o.joystickPanelEl.offsetHeight;if(!(!i||!u)){var l=VR(n,t,i,u,10,Ls);o.joystickPanelEl.style.right="auto",o.joystickPanelEl.style.bottom="auto",o.joystickPanelEl.style.left=l.left+"px",o.joystickPanelEl.style.top=l.top+"px",o.joystickPanelEl.style.transformOrigin=l.placement==="above"?"bottom right":"top right"}}}function f_(){function e(l,d,f){return'<button type="button" class="wjp-key'+(f?" "+f:"")+'" data-key="'+l+'">'+d+"</button>"}var t='<div class="wjp-dpad"><div class="wjp-dpad-row">'+e("up","\u2191","wjp-dir")+'</div><div class="wjp-dpad-row">'+e("left","\u2190","wjp-dir")+e("down","\u2193","wjp-dir")+e("right","\u2192","wjp-dir")+"</div></div>",n="",i;for(i=0;i<s5.length;i++)n+=e(s5[i].key,s5[i].label,"");var u='<div class="wjp-header"><span class="wjp-title">'+mt("paw",{size:13,strokeWidth:1.6,cls:"wjp-title-icon"})+'<span>\u9065\u63A7\u9762\u677F</span></span><button type="button" class="wjp-close" aria-label="\u5173\u95ED\u9065\u63A7\u9762\u677F">'+mt("x",{size:13,strokeWidth:2})+"</button></div>"+t+'<div class="wjp-grid wjp-fnkeys">'+n+"</div>";return u}function p_(){if(!o.joystickRootEl){var e=document.createElement("div");e.className="wand-joystick-root",["pointerdown","pointerup","touchstart","touchend","click"].forEach(function(u){e.addEventListener(u,c8,!0)});var t=document.createElement("div");t.className="wand-joystick-backdrop",e.appendChild(t);var n=document.createElement("div");n.className="wand-joystick-panel",n.innerHTML=f_(),n.addEventListener("click",x_),e.appendChild(n);var i=document.createElement("div");i.className="wand-joystick-ball",i.setAttribute("role","button"),i.setAttribute("aria-label","Wand \u9065\u63A7\u9762\u677F"),i.setAttribute("title","\u70B9\u51FB\u6253\u5F00\u9065\u63A7\u9762\u677F\uFF0C\u62D6\u52A8\u53EF\u79FB\u52A8\u4F4D\u7F6E"),i.innerHTML=mt("paw",{size:25,strokeWidth:1.6,cls:"wand-joystick-logo"}),e.appendChild(i),document.body.appendChild(e),o.joystickRootEl=e,o.joystickBackdropEl=t,o.joystickPanelEl=n,o.joystickBallEl=i,o8(),i.addEventListener("pointerdown",m_),i.addEventListener("click",function(u){u.preventDefault(),u.stopPropagation()}),t.addEventListener("pointerdown",function(u){o.joystickPinnedOpen&&o.joystickGesture==null&&(u.preventDefault(),qc())}),t.addEventListener("click",function(u){u.preventDefault(),u.stopPropagation()}),o.joystickResizeHandler=function(){o8(),o.joystickPinnedOpen&&l8()},window.addEventListener("resize",o.joystickResizeHandler),window.addEventListener("orientationchange",o.joystickResizeHandler),window.visualViewport&&(window.visualViewport.addEventListener("resize",o.joystickResizeHandler),window.visualViewport.addEventListener("scroll",o.joystickResizeHandler)),m8()}}function c8(){if(document.documentElement.classList.contains("is-wand-native-input")){var e=document.activeElement;if(e&&typeof e.blur=="function")try{e.blur()}catch{}setTimeout(function(){var t=document.activeElement;if(t&&typeof t.blur=="function")try{t.blur()}catch{}},0)}}function m_(e){if(s8()&&!((e.pointerType==="mouse"||e.pointerType==="pen")&&e.button!==0)&&o.joystickPointerId===null){c8(),e.preventDefault(),e.stopPropagation();var t=e.pointerType==="mouse"||e.pointerType==="pen";o.joystickPointerId=e.pointerId,o.joystickPressStart={x:e.clientX,y:e.clientY,t:Date.now()},o.joystickGesture="pending";try{o.joystickBallEl.setPointerCapture(e.pointerId)}catch{}t||(o.joystickLongPressTimer=setTimeout(function(){o.joystickGesture==="pending"&&d8()},dz)),o.joystickMoveHandler=h_,o.joystickUpHandler=v_,document.addEventListener("pointermove",o.joystickMoveHandler),document.addEventListener("pointerup",o.joystickUpHandler),document.addEventListener("pointercancel",o.joystickUpHandler)}}function d8(){o.joystickGesture="move",o.joystickPinnedOpen&&qc(),o.joystickBallEl&&o.joystickBallEl.classList.add("dragging"),o.joystickBackdropEl&&o.joystickBackdropEl.classList.add("active")}function f8(e,t){if(o.joystickBallEl){var n=qg({right:window.innerWidth-e-dm/2,bottom:window.innerHeight-t-dm/2});o.joystickBallEl.style.right=n.right+"px",o.joystickBallEl.style.bottom=n.bottom+"px"}}function h_(e){if(!(e.pointerId!==o.joystickPointerId||!o.joystickBallEl)){if(e.preventDefault(),o.joystickGesture==="move"){f8(e.clientX,e.clientY);return}if(o.joystickGesture==="pending"){var t=e.clientX-o.joystickPressStart.x,n=e.clientY-o.joystickPressStart.y;Math.sqrt(t*t+n*n)<=fz||(e.pointerType==="mouse"||e.pointerType==="pen"?(d8(),f8(e.clientX,e.clientY)):(o.joystickLongPressTimer&&(clearTimeout(o.joystickLongPressTimer),o.joystickLongPressTimer=null),o.joystickGesture="cancelled"))}}}function v_(e){if(e.pointerId===o.joystickPointerId){o.joystickLongPressTimer&&(clearTimeout(o.joystickLongPressTimer),o.joystickLongPressTimer=null);var t=o.joystickGesture;if(t==="pending"){var n=e.clientX-o.joystickPressStart.x,i=e.clientY-o.joystickPressStart.y;Math.sqrt(n*n+i*i)<=pz&&b_()}else if(t==="move"){var u=o.joystickBallEl?o.joystickBallEl.getBoundingClientRect():null;u&&d_(window.innerWidth-u.right,window.innerHeight-u.bottom)}p8()}}function p8(){if(o.joystickLongPressTimer&&(clearTimeout(o.joystickLongPressTimer),o.joystickLongPressTimer=null),o.joystickBallEl&&o.joystickPointerId!==null)try{o.joystickBallEl.releasePointerCapture(o.joystickPointerId)}catch{}o.joystickMoveHandler&&(document.removeEventListener("pointermove",o.joystickMoveHandler),o.joystickMoveHandler=null),o.joystickUpHandler&&(document.removeEventListener("pointerup",o.joystickUpHandler),document.removeEventListener("pointercancel",o.joystickUpHandler),o.joystickUpHandler=null),o.joystickBallEl&&o.joystickBallEl.classList.remove("dragging"),o.joystickBackdropEl&&!o.joystickPinnedOpen&&o.joystickBackdropEl.classList.remove("active"),o.joystickPointerId=null,o.joystickGesture=null,o.joystickPressStart=null}function g_(e){if(e==="ctrl"||e==="alt"||e==="shift"){o.modifiers[e]=!o.modifiers[e],Uc();return}var t=Su();if(t&&ft(t)){(e==="ctrl_c"||e==="escape")&&w_(t,e),hm(),Uc();return}var n=l7(e,{ctrl:o.modifiers.ctrl,alt:o.modifiers.alt,shift:o.modifiers.shift});n&&i7(n,e),hm(),Uc(),Cz()}function w_(e,t){!e||!e.id||fetch("/api/structured-sessions/"+e.id+"/messages",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({input:"",interrupt:!0,preserveQueue:!0})}).then(function(n){return n.ok?n.json():n.json().catch(function(){return{}}).then(function(i){throw new Error(i&&i.error||"\u4E2D\u65AD\u5931\u8D25 (key="+t+")")})}).then(function(n){if(n&&n.id&&(tt(n),n.id===o.selectedId)){var i=o.sessions.find(function(u){return u.id===n.id})||n;o.currentMessages=Wn(i,wa(i,n.output,!1)),Pc(!0),typeof ta=="function"&&ta()}}).catch(function(n){n&&n.message&&console.debug("[wand] joystick interrupt no-op:",n.message)})}function b_(){o.joystickPinnedOpen?qc():y_()}function y_(){!o.joystickPanelEl||!o.joystickBallEl||(o.joystickPinnedOpen=!0,l8(),o.joystickPanelEl.classList.add("active"),o.joystickBallEl.classList.add("panel-open"),o.joystickBackdropEl&&o.joystickBackdropEl.classList.add("active"),Uc())}function qc(){o.joystickPinnedOpen=!1,o.joystickPanelEl&&o.joystickPanelEl.classList.remove("active"),o.joystickBallEl&&o.joystickBallEl.classList.remove("panel-open"),o.joystickBackdropEl&&o.joystickGesture==null&&o.joystickBackdropEl.classList.remove("active")}function Uc(){o.joystickPanelEl&&["ctrl","alt"].forEach(function(e){var t=o.joystickPanelEl.querySelector('.wjp-mod[data-key="'+e+'"]');t&&t.classList.toggle("active",!!o.modifiers[e])})}function x_(e){var t=e.target&&e.target.closest?e.target.closest(".wjp-close"):null;if(t){e.preventDefault(),e.stopPropagation(),qc();return}var n=e.target&&e.target.closest?e.target.closest(".wjp-key"):null;if(n){e.preventDefault(),e.stopPropagation();var i=n.getAttribute("data-key");i&&g_(i)}}function m8(){var e=o.joystickRootEl;if(e){var t=s8();e.classList.toggle("visible",t),t||((o.joystickPointerId!==null||o.joystickGesture)&&p8(),o.joystickPinnedOpen&&qc(),o.joystickBackdropEl&&o.joystickBackdropEl.classList.remove("active"))}}function E_(){o.joystickLongPressTimer&&(clearTimeout(o.joystickLongPressTimer),o.joystickLongPressTimer=null),o.joystickMoveHandler&&(document.removeEventListener("pointermove",o.joystickMoveHandler),o.joystickMoveHandler=null),o.joystickUpHandler&&(document.removeEventListener("pointerup",o.joystickUpHandler),document.removeEventListener("pointercancel",o.joystickUpHandler),o.joystickUpHandler=null),o.joystickResizeHandler&&(window.removeEventListener("resize",o.joystickResizeHandler),window.removeEventListener("orientationchange",o.joystickResizeHandler),window.visualViewport&&(window.visualViewport.removeEventListener("resize",o.joystickResizeHandler),window.visualViewport.removeEventListener("scroll",o.joystickResizeHandler)),o.joystickResizeHandler=null),o.joystickRootEl&&o.joystickRootEl.parentNode&&o.joystickRootEl.parentNode.removeChild(o.joystickRootEl),o.joystickRootEl=null,o.joystickPanelEl=null,o.joystickBackdropEl=null,o.joystickBallEl=null,o.joystickPointerId=null,o.joystickGesture=null,o.joystickPressStart=null,o.joystickPinnedOpen=!1}function F_(){var e=document.getElementById("output");if(e){var t=!In();o.resizeHandler=function(){Di(!0);var n=!In();t!==n&&(t=n,!n&&o.sidebarPinned&&o.sessionsDrawerOpen?(o.sessionsDrawerOpen=!1,Pt("wand-sidebar-open",!1),wd()):n&&o.sidebarPinned&&!o.sessionsDrawerOpen&&(o.sessionsDrawerOpen=!0,Pt("wand-sidebar-open",!0),wd()))},window.addEventListener("resize",o.resizeHandler),window.visualViewport&&(o.visualViewportHandler=function(){Di(!0)},window.visualViewport.addEventListener("resize",o.visualViewportHandler)),o.visibilityHandler=function(){document.hidden||va("visibility",{forceReplay:!0})},document.addEventListener("visibilitychange",o.visibilityHandler),o.orientationHandler=function(){va("orientation",{forceReplay:!0})},window.addEventListener("orientationchange",o.orientationHandler),requestAnimationFrame(function(){Di(!0)})}}function C_(){o.terminalHealthTimer||(o.terminalHealthTimer=setInterval(function(){if(!(!o.terminal||o.currentView!=="terminal"||document.hidden)){var e=o.sessions.find(function(t){return t.id===o.selectedId});!e||e.sessionKind==="structured"||va("health")}},5e3))}function D_(){o.terminalHealthTimer&&(clearInterval(o.terminalHealthTimer),o.terminalHealthTimer=null)}function Ms(){D_(),o.resizeTimer&&(clearTimeout(o.resizeTimer),o.resizeTimer=null),o.resizeObserver&&(o.resizeObserver.disconnect(),o.resizeObserver=null),o.resizeHandler&&(window.removeEventListener("resize",o.resizeHandler),o.resizeHandler=null),o.visualViewportHandler&&window.visualViewport&&(window.visualViewport.removeEventListener("resize",o.visualViewportHandler),o.visualViewportHandler=null),o.visibilityHandler&&(document.removeEventListener("visibilitychange",o.visibilityHandler),o.visibilityHandler=null),o.orientationHandler&&(window.removeEventListener("orientationchange",o.orientationHandler),o.orientationHandler=null),[["mousemove","resizeMouseMove"],["mouseup","resizeMouseUp"],["touchmove","resizeTouchMove"],["touchend","resizeTouchEnd"]].forEach(function(u){o[u[1]]&&(document.removeEventListener(u[0],o[u[1]]),o[u[1]]=null)}),Gc();var e=document.getElementById("output");if(o.terminalViewportEl&&(o.terminalViewportScrollHandler&&o.terminalViewportEl.removeEventListener("scroll",o.terminalViewportScrollHandler),o.terminalViewportTouchHandler&&o.terminalViewportEl.removeEventListener("touchmove",o.terminalViewportTouchHandler),o.terminalViewportTouchStartHandler&&o.terminalViewportEl.removeEventListener("touchstart",o.terminalViewportTouchStartHandler)),e&&(o.terminalWheelHandler&&e.removeEventListener("wheel",o.terminalWheelHandler),o.terminalClickHandler&&e.removeEventListener("click",o.terminalClickHandler)),o.terminalViewportEl=null,o.terminalViewportScrollHandler=null,o.terminalViewportTouchHandler=null,o.terminalViewportTouchStartHandler=null,o.terminalWheelHandler=null,o.terminalClickHandler=null,o.terminalScrollbarHideTimer&&(clearTimeout(o.terminalScrollbarHideTimer),o.terminalScrollbarHideTimer=null),o.terminalScrollbarEl&&o.terminalScrollbarEl.parentNode&&o.terminalScrollbarEl.parentNode.removeChild(o.terminalScrollbarEl),o.terminalScrollbarEl=null,o.terminalScrollbarThumbEl=null,o.terminalScrollbarDragging=!1,o.terminalScrollbarRafPending=!1,o.terminal&&(typeof o.terminal.dispose=="function"?o.terminal.dispose():typeof o.terminal.destroy=="function"&&o.terminal.destroy(),o.terminal=null),e)for(var t=e.querySelectorAll(".terminal-scroll-wrap"),n=0;n<t.length;n++){var i=t[n];i.parentNode===e&&e.removeChild(i)}o.terminalSessionId=null,o.terminalFitAddon=null,o.terminalWriteQueue=Promise.resolve(),o.terminalRestoreGeneration=(o.terminalRestoreGeneration||0)+1,o.terminalOutput="",o.terminalAutoFollow=!0,o.showTerminalJumpToBottom=!1,Jr(),o.softResyncTimer&&(clearTimeout(o.softResyncTimer),o.softResyncTimer=null),o.lastResize={cols:0,rows:0},E_()}function Vc(e,t){if(o.selectedId){var n=o.sessions.find(function(u){return u.id===o.selectedId});if(!(!n||n.status!=="running")&&!ft(n)){e=Math.max(20,Math.min(Math.floor(e),1e3)),t=Math.max(5,Math.min(Math.floor(t),500));var i={cols:e,rows:t};(o.lastResize.cols!==i.cols||o.lastResize.rows!==i.rows)&&(o.lastResize=i,o.ws&&o.ws.readyState===WebSocket.OPEN?o.ws.send(JSON.stringify({type:"pty_resize",sessionId:o.selectedId,cols:i.cols,rows:i.rows})):fetch("/api/sessions/"+o.selectedId+"/resize",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(i)}).catch(function(){}))}}}function va(e,t){if(!o.terminal)return!1;var n=document.getElementById("output");if(!n||n.offsetWidth===0||n.offsetHeight===0)return Wc(e||"fit-retry"),!1;var i=o.terminalAutoFollow||Vg(),u=o.terminal.cols,l=o.terminal.rows;return requestAnimationFrame(function(){requestAnimationFrame(function(){o.terminal&&(o.terminalFitAddon&&typeof o.terminalFitAddon.fit=="function"&&o.terminalFitAddon.fit(),Vc(o.terminal.cols,o.terminal.rows),i&&ei("force"))})}),!0}function Wc(e,t){if(!o.terminal)return;var n=0,i=8;function u(){if(o.terminal){var l=document.getElementById("output");if(l&&l.offsetHeight,l&&l.offsetWidth>0&&l.offsetHeight>0){va(e);return}++n>=i||(n<=4?requestAnimationFrame(u):setTimeout(u,32))}}u()}function Di(e){o.resizeTimer&&(clearTimeout(o.resizeTimer),o.resizeTimer=null);var t=e?0:100;o.resizeTimer=setTimeout(function(){o.resizeTimer=null,requestAnimationFrame(A_)},t)}function A_(){if(o.terminal){var e=o.terminalAutoFollow||Vg();e&&ei("force"),Vc(o.terminal.cols,o.terminal.rows)}}var h8=80,S_=80,k_=180;function B_(e,t,n,i=Date.now()){if(!Number.isFinite(e.deltaY)||e.deltaY===0)return 0;var u=e.deltaY<0?-1:1,l=Math.abs(M_(e,n));return l===0||((t.direction!==u||i-t.lastEventAt>k_)&&(t.accumulatedPixels=0),t.direction=u,t.lastEventAt=i,t.accumulatedPixels+=l,t.accumulatedPixels<h8)||i-t.lastPageAt<S_?0:(t.accumulatedPixels%=h8,t.lastPageAt=i,u)}var v8=60,j_=80;function T_(e,t,n=Date.now()){if(!Number.isFinite(e)||e===0||(t.accumulatedPixels+=e,Math.abs(t.accumulatedPixels)<v8)||n-t.lastPageAt<j_)return 0;var i=t.accumulatedPixels>0?1:-1;return t.accumulatedPixels-=i*v8,t.lastPageAt=n,i}function g8(e){return e<0?"\x1B[5~":e>0?"\x1B[6~":""}function M_(e,t){return e.deltaMode===1?e.deltaY*16:e.deltaMode===2?e.deltaY*Math.max(1,t):e.deltaY}function w8(e){o.workingDir=e;try{localStorage.setItem("wand-working-dir",e)}catch{}N_(e)}function N_(e){return fetch("/api/recent-paths",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({path:e})}).catch(function(){})}function Ug(e){var t=o.sessions.find(function(n){return n.id===e});t&&t.status!=="running"&&!ft(t)?p5(e):Gn(e),Yn()}function O_(e){var t=e.target;if(!(!t||!(t instanceof Element))){var n=t.closest(".sidebar-collapsed-tile");if(n&&n instanceof HTMLElement){if(n.dataset.collapsedNewSession){e.preventDefault(),e.stopPropagation(),Nm();return}if(n.dataset.collapsedSessionId){e.preventDefault(),e.stopPropagation(),Ug(n.dataset.collapsedSessionId);return}if(n.dataset.collapsedHistoryId){e.preventDefault(),e.stopPropagation();var i=n.dataset.collapsedHistoryId,u=n.dataset.cwd||"",l=n.dataset.provider==="codex"?wm:bm;l(i,u).then(function(b){b&&b.id&&(o.selectedId=b.id,$t(),o.drafts[b.id]="",Bi().then(function(){Gn(b.id)}))});return}}var d=t.closest("#claude-history-toggle");if(d){e.preventDefault(),e.stopPropagation(),o.claudeHistoryExpanded=!o.claudeHistoryExpanded,o.claudeHistoryExpanded&&!o.claudeHistoryLoaded&&HR(),Ot();return}var f=t.closest("[data-action]");if(f&&f instanceof HTMLElement){if(e.preventDefault(),e.stopPropagation(),f.dataset.action==="toggle-manage-mode")R2();else if(f.dataset.action==="select-all-visible")L2();else if(f.dataset.action==="clear-selection")z2();else if(f.dataset.action==="delete-selected")H2();else if(f.dataset.action==="toggle-selection")Xo(f.dataset.kind,f.dataset.id);else if(f.dataset.action==="swipe-delete-session"&&f.dataset.sessionId)vm(f.dataset.sessionId);else if(f.dataset.action==="delete-session"&&f.dataset.sessionId)(function(b){Fi("\u786E\u8BA4\u5220\u9664\u8FD9\u4E2A\u4F1A\u8BDD\u5417\uFF1F\u6B64\u64CD\u4F5C\u65E0\u6CD5\u64A4\u9500\u3002",{title:"\u5220\u9664\u4F1A\u8BDD"}).then(function(x){x&&vm(b)})})(f.dataset.sessionId);else if(f.dataset.action==="delete-history"&&f.dataset.claudeSessionId)(function(b,x){Fi("\u786E\u8BA4\u5220\u9664\u8FD9\u6761 Claude \u4F1A\u8BDD\u5417\uFF1F",{title:"\u5220\u9664\u4F1A\u8BDD"}).then(function(F){F&&c7(b,x)})})(f.dataset.claudeSessionId,f.closest(".session-item"));else if(f.dataset.action==="toggle-history-directory"&&f.dataset.cwd){var m=f.dataset.cwd;o.claudeHistoryExpandedDirs[m]=!o.claudeHistoryExpandedDirs[m],Ot()}else if(f.dataset.action==="delete-history-directory"&&f.dataset.cwd)(function(b,x){var F=Oz(b),C=O2().filter(function(A){return A.cwd===b}).length;Fi("\u786E\u8BA4\u6E05\u7A7A\u6B64\u76EE\u5F55\u4E0B\u7684 "+C+" \u6761 Claude \u5386\u53F2\u5417\uFF1F",{title:"\u6E05\u7A7A\u76EE\u5F55\u5386\u53F2",okLabel:"\u6E05\u7A7A"}).then(function(A){A&&(d7(F,!0),Nz(b,x,F))})})(f.dataset.cwd,f);else if(f.dataset.action==="clear-all-history")_R();else if(f.dataset.action==="toggle-archived-group")o.archivedExpanded=!o.archivedExpanded,Ot();else if(f.dataset.action==="resume"&&f.dataset.sessionId)Rz(f);else if(f.dataset.action==="resume-history"&&f.dataset.claudeSessionId)zz(f);else if(f.dataset.action==="resume-codex-history"&&f.dataset.claudeSessionId)_z(f);else if(f.dataset.action==="delete-codex-history"&&f.dataset.claudeSessionId)Lz(f);else if(f.dataset.action==="toggle-codex-history-directory"&&f.dataset.cwd){var g=f.dataset.cwd;o.codexHistoryExpandedDirs[g]=!o.codexHistoryExpandedDirs[g],Ot()}else f.dataset.action==="worktree-merge"&&f.dataset.sessionId?V5(f.dataset.sessionId):f.dataset.action==="worktree-cleanup"&&f.dataset.sessionId&&W5(f.dataset.sessionId);return}var h=t.closest(".session-item");if(h){if(o.sessionsManageMode){h.dataset.sessionId?Xo("sessions",h.dataset.sessionId):h.dataset.claudeHistoryId&&Xo(h.dataset.provider==="codex"?"codex":"history",h.dataset.claudeHistoryId);return}if(h.classList.contains("swiped")){id();return}if(f7)return;if(h.dataset.sessionId)Ug(h.dataset.sessionId);else if(h.dataset.claudeHistoryId){var w=h.dataset.claudeHistoryId,y=h.dataset.cwd,E=h.dataset.provider==="codex"?wm:bm;E(w,y).then(function(b){b&&b.id&&(o.selectedId=b.id,$t(),o.drafts[b.id]="",Bi().then(function(){Gn(b.id),Yn()}))})}}}}function I_(e){if(!(e.key!=="Enter"&&e.key!==" ")){var t=e.target.closest(".session-item");if(t){if(e.preventDefault(),o.sessionsManageMode){t.dataset.sessionId?Xo("sessions",t.dataset.sessionId):t.dataset.claudeHistoryId&&Xo(t.dataset.provider==="codex"?"codex":"history",t.dataset.claudeHistoryId);return}if(t.dataset.sessionId)Ug(t.dataset.sessionId);else if(t.dataset.claudeHistoryId){var n=t.dataset.claudeHistoryId,i=t.dataset.cwd,u=t.dataset.provider==="codex"?wm:bm;u(n,i).then(function(l){l&&l.id&&(o.selectedId=l.id,$t(),o.drafts[l.id]="",Bi().then(function(){Gn(l.id),Yn()}))})}}}}function el(e,t){var n=o.sessions.find(function(u){return u.id===o.selectedId});if(n){var i=n[e];if(!i){Fe("\u5F53\u524D\u4F1A\u8BDD\u6CA1\u6709\u53EF\u590D\u5236\u7684\u5185\u5BB9\u3002","error");return}Om(String(i),null,function(){Fe(t||"\u5DF2\u590D\u5236","info")})}}function er(){return!o.terminal||!o.terminal.element?null:(o.terminalViewportEl=o.terminal.element.querySelector(".xterm-viewport"),o.terminalViewportEl)}function Gc(){o.terminalScrollIdleTimer&&(clearTimeout(o.terminalScrollIdleTimer),o.terminalScrollIdleTimer=null)}function Jr(){var e=document.getElementById("terminal-jump-bottom"),t=!!o.selectedId&&o.currentView==="terminal"&&!o.terminalAutoFollow&&!b8();o.showTerminalJumpToBottom=t,e&&e.classList.toggle("visible",t);var n=document.getElementById("output");n&&n.classList.toggle("has-jump-btn",t)}function Vg(){var e=er();if(!e)return!0;var t=e.scrollHeight-e.clientHeight-e.scrollTop;return t<=o.terminalScrollThreshold}function b8(){var e=er();if(!e)return!0;var t=e.scrollHeight-e.clientHeight-e.scrollTop;return t<=2}function Wg(e){if(o.terminal){var t=er();if(t){var n=e?500:120;o.terminalProgrammaticScrollUntil=Math.max(o.terminalProgrammaticScrollUntil,Date.now()+n),e?t.scrollTo({top:t.scrollHeight,behavior:"smooth"}):o.terminal.scrollToBottom()}}}function Gg(){o.terminalAutoFollow=!1,Gc(),o.terminalProgrammaticScrollUntil=0,Jr()}function ei(e){if(o.terminal){var t=e==="force";if(t){o.terminalAutoFollow=!0,Gc(),Wg(!1),Jr();return}if(!o.terminalAutoFollow){Jr();return}Wg(!1),Jr()}}function R_(e,t){var n=null,i=0,u=16,l=0,d=0,f={accumulatedPixels:0,lastPageAt:0};function m(){try{var y=e.querySelector(".xterm-screen");if(y&&t.rows>0){var E=y.clientHeight/t.rows;if(E>4)return E}}catch{}var b=getComputedStyle(e).getPropertyValue("--term-row-height").trim(),x=parseFloat(b);return x>0?x:16}function g(){try{return!!t.element&&t.element.classList.contains("enable-mouse-events")}catch{return!1}}function h(y,E){var b=t.cols||80,x=t.rows||24,F=1,C=1;try{var A=e.querySelector(".xterm-screen");if(A){var S=A.getBoundingClientRect();S.width>0&&S.height>0&&(F=Math.min(b,Math.max(1,Math.floor((E.clientX-S.left)/(S.width/b))+1)),C=Math.min(x,Math.max(1,Math.floor((E.clientY-S.top)/(S.height/x))+1)))}}catch{}var T=y>0?65:64;return"\x1B[<"+T+";"+F+";"+C+"M"}e.addEventListener("touchstart",function(y){if(y.touches.length!==1){n=null;return}var E=y.touches[0];n=E.identifier,i=E.clientY,u=m(),l=0,d=0,f.accumulatedPixels=0,f.lastPageAt=0},{passive:!0}),e.addEventListener("touchmove",function(y){if(n!==null){for(var E=null,b=0;b<y.touches.length;b++)if(y.touches[b].identifier===n){E=y.touches[b];break}if(E){y.cancelable&&y.preventDefault();var x=E.clientY-i;if(i=E.clientY,x!==0){d+=Math.abs(x);var F=t.buffer.active.type==="alternate";if(F){var C=T_(-x,f,Date.now());if(C!==0){var A=g()?h(C,E):g8(C);A&&tm(A)}return}l+=x;var S=Math.trunc(l/u);S!==0&&(l-=S*u,t.scrollLines(S)),d>8&&Gg()}}}},{passive:!1});function w(){n=null}e.addEventListener("touchend",w,{passive:!0}),e.addEventListener("touchcancel",w,{passive:!0})}function __(e){var t=document.createElement("div");t.className="terminal-scrollbar";var n=document.createElement("div");n.className="terminal-scrollbar-track";var i=document.createElement("div");i.className="terminal-scrollbar-thumb",n.appendChild(i),t.appendChild(n),e.appendChild(t),o.terminalScrollbarEl=t,o.terminalScrollbarThumbEl=i,o.terminalScrollbarHideTimer=null,o.terminalScrollbarDragging=!1,o.terminalScrollbarRafPending=!1;function u(){o.terminalScrollbarHideTimer&&(clearTimeout(o.terminalScrollbarHideTimer),o.terminalScrollbarHideTimer=null),t.classList.add("visible")}function l(){o.terminalScrollbarDragging||(o.terminalScrollbarHideTimer&&clearTimeout(o.terminalScrollbarHideTimer),o.terminalScrollbarHideTimer=setTimeout(function(){o.terminalScrollbarHideTimer=null,o.terminalScrollbarDragging||t.classList.remove("visible")},1500))}function d(){o.terminalScrollbarRafPending=!1;var x=er();if(x){var F=x.scrollHeight,C=x.clientHeight;if(F<=C){t.classList.remove("visible");return}var A=n.clientHeight,S=Math.max(28,C/F*A),T=F-C,k=x.scrollTop/T,B=k*(A-S);i.style.height=S+"px",i.style.top=B+"px"}}function f(){o.terminalScrollbarRafPending||(o.terminalScrollbarRafPending=!0,requestAnimationFrame(d))}var m=er();m&&m.addEventListener("scroll",function(){u(),f(),l()},{passive:!0}),n.addEventListener("mousedown",function(x){if(x.target!==i){x.preventDefault();var F=er();if(F){var C=n.getBoundingClientRect(),A=(x.clientY-C.top)/C.height,S=F.scrollHeight-F.clientHeight;F.scrollTop=A*S}}});var g=0,h=0;i.addEventListener("mousedown",function(x){x.preventDefault(),x.stopPropagation(),o.terminalScrollbarDragging=!0,i.classList.add("dragging"),g=x.clientY;var F=er();h=F?F.scrollTop:0,document.addEventListener("mousemove",w),document.addEventListener("mouseup",y)});function w(x){x.preventDefault();var F=er();if(F){var C=n.clientHeight,A=F.scrollHeight,S=F.clientHeight,T=A-S;if(!(T<=0)){var k=Math.max(28,S/A*C),B=C-k;if(!(B<=0)){var R=x.clientY-g,z=R/B*T;F.scrollTop=h+z}}}}function y(){o.terminalScrollbarDragging=!1,i.classList.remove("dragging"),document.removeEventListener("mousemove",w),document.removeEventListener("mouseup",y),l()}i.addEventListener("touchstart",function(x){if(x.touches.length===1){x.stopPropagation(),o.terminalScrollbarDragging=!0,i.classList.add("dragging"),g=x.touches[0].clientY;var F=er();h=F?F.scrollTop:0,document.addEventListener("touchmove",E,{passive:!1}),document.addEventListener("touchend",b),document.addEventListener("touchcancel",b)}},{passive:!1});function E(x){if(x.touches.length===1){x.preventDefault();var F=er();if(F){var C=n.clientHeight,A=F.scrollHeight,S=F.clientHeight,T=A-S;if(!(T<=0)){var k=Math.max(28,S/A*C),B=C-k;if(!(B<=0)){var R=x.touches[0].clientY-g,z=R/B*T;F.scrollTop=h+z}}}}}function b(){o.terminalScrollbarDragging=!1,i.classList.remove("dragging"),document.removeEventListener("touchmove",E),document.removeEventListener("touchend",b),document.removeEventListener("touchcancel",b),l()}t.addEventListener("mouseenter",function(){u()}),t.addEventListener("mouseleave",function(){o.terminalScrollbarDragging||l()}),f()}var y8=150,x8=30,L_=160*1024,z_=192*1024;function E8(e){return o.terminal?(o.terminal.refresh(0,Math.max(0,o.terminal.rows-1)),!0):!1}function P_(e){o.softResyncTimer&&clearTimeout(o.softResyncTimer),o.softResyncTimer=setTimeout(function(){o.softResyncTimer=null,E8()},typeof e=="number"?e:0)}function em(e){return!e||e.length<=z_?e:e.slice(-L_)}function F8(e){return!o.ws||o.ws.readyState!==WebSocket.OPEN?!1:(o.ws.send(JSON.stringify(e)),!0)}function tm(e){return!o.selectedId||!e?!1:F8({type:"pty_input",sessionId:o.selectedId,data:e,userInput:o.terminalInteractive===!0})}function Yg(e,t){!e||!(t>0)||F8({type:"pty_ack",sessionId:e,bytes:t})}function nm(e,t,n,i){if(!e||t==null||t==="")return n&&i&&Yg(i,n),Promise.resolve();var u=String(t),l=o.terminalWriteQueue||Promise.resolve();return o.terminalWriteQueue=l.catch(function(){}).then(function(){return new Promise(function(d){if(!o.terminal||e!==o.terminal){n&&i&&Yg(i,n),d(null);return}e.write(u,function(){e===o.terminal&&o.terminalAutoFollow!==!1&&Wg(!1),n&&i&&Yg(i,n),d(null)})})}),o.terminalWriteQueue}function H_(){o.terminal&&(o.terminal.reset(),o.terminal.clear())}function C8(e,t){return new Promise(function(n){if(!t){n(null);return}e.write(t,function(){n(null)})})}function D8(e,t,n){if(!t||t.version!==1)return!1;if(e&&(o.terminalStatesBySession[e]=t),!o.terminal)return!0;var i=o.terminal,u=(o.terminalRestoreGeneration||0)+1;o.terminalRestoreGeneration=u;var l=o.terminalWriteQueue||Promise.resolve();return o.terminalWriteQueue=l.catch(function(){}).then(async function(){if(!(i!==o.terminal||u!==o.terminalRestoreGeneration)){i.reset(),i.clear(),t.cols>0&&t.rows>0&&i.resize(t.cols,t.rows),await C8(i,String(t.data||""));for(var d=Array.isArray(t.pending)?t.pending:[],f=0;f<d.length;f++){var m=d[f]||{};m.type==="resize"&&m.cols>0&&m.rows>0?i.resize(m.cols,m.rows):m.type==="data"&&await C8(i,String(m.data||""))}o.terminalSessionId=e||null,o.terminalOutput=String(n||""),o.terminalAutoFollow=!0,o.terminalFitAddon&&typeof o.terminalFitAddon.fit=="function"&&(o.terminalFitAddon.fit(),Vc(i.cols,i.rows)),i.scrollToBottom(),Jr()}}),!0}function am(e,t,n){if(!o.terminal)return!1;var i=String(t||""),u=e||null,l=n||{},d=l.mode==="replace",f=o.terminalSessionId!==u,m=String(o.terminalOutput||""),g=!1;if(f||d)H_(),i&&nm(o.terminal,i),g=!!i||f;else if(i.startsWith(m)){var h=i.slice(m.length);h&&(nm(o.terminal,h),g=!0)}else return!1;return o.terminalSessionId=u,o.terminalOutput=i,l.scroll!==!1&&g&&ei("output"),f&&Vc(o.terminal.cols,o.terminal.rows),g}function tl(){var e=document.getElementById("output");if(!(!e||o.terminal||o.terminalInitializing)){if(typeof XTermLib>"u"||!XTermLib.Terminal){o.terminalInitRetries=(o.terminalInitRetries||0)+1,o.terminalInitRetries<10&&setTimeout(tl,200);return}o.terminalInitRetries=0,o.terminalInitializing=!0;var t=o.sessions.find(function(x){return x.id===o.selectedId}),n=!!t&&!ft(t)&&o.currentView==="terminal";n&&(e.classList.remove("hidden"),e.classList.add("active"));for(var i=e.querySelectorAll(".terminal-scroll-wrap"),u=0;u<i.length;u++){var l=i[u];l.parentNode===e&&e.removeChild(l)}var d=document.createElement("div");d.className="terminal-scroll-wrap",e.appendChild(d);var f=getComputedStyle(d),m=f.getPropertyValue("--term-font-family").trim()||"ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace",g=document.documentElement.classList.contains("is-wand-embed-terminal")?10:o.terminalBaseFontSize,h=Math.max(8,Math.round(g*Number(o.terminalScale||1))),w=new XTermLib.Terminal({cols:120,rows:36,allowProposedApi:!0,convertEol:!1,cursorBlink:!1,disableStdin:!1,fontFamily:m,fontSize:h,lineHeight:1.25,scrollback:5e3,theme:{background:"#1f1b17",foreground:"#f4eee6",cursor:"#d88d60",selectionBackground:"rgba(216, 141, 96, 0.3)"}}),y=new XTermLib.FitAddon,E=new XTermLib.Unicode11Addon;w.loadAddon(y),w.loadAddon(E),w.unicode.activeVersion="11";var b=document.fonts&&typeof document.fonts.ready=="object"?Promise.race([document.fonts.ready,new Promise(function(x){setTimeout(x,800)})]):Promise.resolve();b.then(function(){w.open(d),w.attachCustomKeyEventHandler(function(){return o.terminalInteractive===!0});var x={direction:0,accumulatedPixels:0,lastEventAt:0,lastPageAt:0};w.attachCustomWheelEventHandler(function(k){if(w.buffer.active.type!=="alternate"||k.ctrlKey||k.metaKey||Math.abs(k.deltaY)<=Math.abs(k.deltaX))return!0;k.preventDefault(),k.stopPropagation();var B=er(),R=B_(k,x,B?B.clientHeight:w.rows*h*1.25),z=g8(R);return z&&tm(z),!1});var F=d.querySelector(".xterm-helper-textarea");F&&(F.readOnly=ku()?!0:!o.terminalInteractive),Fz(),fm(),o.terminal=w;try{window.__wandTerminal=w}catch{}o.terminalFitAddon=y,o.terminalWriteQueue=Promise.resolve(),o.terminalInitializing=!1,y.fit(),w.onData(function(k){tm(k)}),w.onBinary(function(k){o.terminalInteractive&&tm(k)}),w.onResize(function(k){Vc(k.cols,k.rows)}),o.terminalAutoFollow=!0,Gc();var C=er();if(C&&(o.terminalViewportScrollHandler=function(){if(Date.now()<o.terminalProgrammaticScrollUntil){Jr();return}b8()?(o.terminalAutoFollow=!0,Gc()):Gg(),Jr()},C.addEventListener("scroll",o.terminalViewportScrollHandler,{passive:!0})),o.terminalWheelHandler=function(k){k.deltaY<0&&Gg(),k.stopPropagation()},e.addEventListener("wheel",o.terminalWheelHandler,{passive:!0}),__(e),R_(d,w),o.selectedId){var A=o.sessions.find(function(k){return k.id===o.selectedId}),S=A&&o.terminalStatesBySession[A.id],T=A&&(A.terminalState||S);A&&!D8(A.id,T,A.output||"")&&am(A.id,A.output||"",{mode:"replace",scroll:!1})}else nm(w,`\u70B9\u51FB\u4E0A\u65B9\u300C\u65B0\u5BF9\u8BDD\u300D\u5F00\u59CB\u4F60\u7684\u7B2C\u4E00\u6B21\u5BF9\u8BDD\u3002\r
4384
+ `+U,Zc("medium"),gL(e.sessionId,N),e.sessionId!==o.selectedId&&Zg({title:"\u9700\u8981\u4F60\u7684\u6388\u6743",body:N,type:"warning",icon:"!",duration:0,actionLabel:"\u53BB\u5904\u7406",action:function(){Gn(e.sessionId)}})}e.data.permissionBlocked===!1&&(le.pendingEscalation=null),e.data.approvalStats&&(le.approvalStats=e.data.approvalStats),tt(le),a5(e.sessionId),n5(),e.sessionId===o.selectedId&&(Ci(),e.data.approvalStats&&t8(),le.structuredState&&(le.structuredState.inFlight||(_s("Enter \u53D1\u9001 \xB7 Shift+Enter \u6362\u884C"),X8()),zg()))}break;case"notification":e.data&&(e.data.kind==="update"?O8(e.data.current||"-",e.data.latest||"-"):e.data.kind==="auto-update-start"?CL(e.data.current||"-",e.data.latest||"-",e.data.previousInstanceId||null):e.data.kind==="auto-update-restart"?Jc(e.data.previousInstanceId||null,e.data.latest||null):e.data.kind==="restart"&&Jc());break}}function Ci(){var e=jt(),t=document.getElementById("current-task"),n=document.getElementById("permission-actions"),i=document.getElementById("permission-actions-label");if(!(!t&&!e)){Jn("task:update");var u=o.sessions.find(function(E){return E.id===o.selectedId});u&&u.provider==="codex"&&(n&&n.classList.add("hidden"),!e&&t&&t.classList.remove("permission-blocked"));var l=u&&u.pendingEscalation?u.pendingEscalation:null,d=u&&u.provider!=="codex"?l||u.permissionBlocked:!1;if(d){var f=u&&u.autoApprovePermissions;if(i)if(f)i.textContent="\u81EA\u52A8\u6279\u51C6\u4E2D...";else if(l){var m=l.reason||"\u7B49\u5F85\u6388\u6743",g=l.target?" \xB7 "+l.target:"";i.textContent=m+g}else i.textContent="\u7B49\u5F85\u6388\u6743";if(n){n.classList.remove("hidden");var h=document.getElementById("approve-permission-btn"),w=document.getElementById("deny-permission-btn");h&&h.classList.toggle("hidden",!!f),w&&w.classList.toggle("hidden",!!f)}!e&&t&&(t.textContent="",t.classList.add("hidden"),t.classList.remove("permission-blocked"));return}!e&&t&&t.classList.remove("permission-blocked"),n&&n.classList.add("hidden");var y=o.currentTask;!e&&t&&y&&y.title?(t.textContent=y.title,t.classList.remove("hidden")):!e&&t&&(t.textContent="",t.classList.add("hidden"))}}function t8(){var e=document.getElementById("approval-stats");if(e){var t=o.sessions.find(function(u){return u.id===o.selectedId}),n=t&&t.approvalStats;if(!n||n.total===0){e.className="approval-stats hidden",e.innerHTML="";return}e.className="approval-stats",e.innerHTML='<span class="approval-stats-divider"></span><span class="approval-stats-badge" id="approval-stats-badge" title="\u672C\u6B21\u4F1A\u8BDD\u81EA\u52A8\u6279\u51C6\u7EDF\u8BA1"><svg class="approval-stats-icon" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg><span class="approval-stats-total">'+n.total+'</span></span><span class="approval-stats-popup" id="approval-stats-popup"><span class="approval-stats-popup-title">\u81EA\u52A8\u6279\u51C6\u7EDF\u8BA1</span>'+(n.command>0?'<span class="approval-stats-row"><span class="approval-stats-row-icon">'+mt("terminal",{size:12,strokeWidth:1.8})+'</span><span class="approval-stats-row-label">\u547D\u4EE4\u6267\u884C</span><span class="approval-stats-row-count">'+n.command+"</span></span>":"")+(n.file>0?'<span class="approval-stats-row"><span class="approval-stats-row-icon">'+mt("edit",{size:12,strokeWidth:1.8})+'</span><span class="approval-stats-row-label">\u6587\u4EF6\u5199\u5165</span><span class="approval-stats-row-count">'+n.file+"</span></span>":"")+(n.tool>0?'<span class="approval-stats-row"><span class="approval-stats-row-icon">'+mt("wrench",{size:12,strokeWidth:1.8})+'</span><span class="approval-stats-row-label">\u5176\u4ED6\u5DE5\u5177</span><span class="approval-stats-row-count">'+n.tool+"</span></span>":"")+'<span class="approval-stats-row approval-stats-row-total"><span class="approval-stats-row-icon">'+mt("sigma",{size:12,strokeWidth:1.8})+'</span><span class="approval-stats-row-label">\u5408\u8BA1</span><span class="approval-stats-row-count">'+n.total+"</span></span></span>";var i=e.querySelector(".approval-stats-badge");i&&(i.classList.remove("approval-stats-pulse"),i.offsetWidth,i.classList.add("approval-stats-pulse"))}}function n_(){if(Zc("light"),!!o.selectedId){var e=document.getElementById("approve-permission-btn"),t=document.getElementById("deny-permission-btn");e&&(e.disabled=!0),t&&(t.disabled=!0),fetch("/api/sessions/"+encodeURIComponent(o.selectedId)+"/approve-permission",{method:"POST",credentials:"same-origin"}).then(function(n){return n.json()}).then(function(n){if(n&&n.error){Fe(n.error,"error");return}tt(n),Ci()}).catch(function(n){Fe(n&&n.message||"\u65E0\u6CD5\u6279\u51C6\u6388\u6743\u3002","error")}).finally(function(){e&&(e.disabled=!1),t&&(t.disabled=!1)})}}function a_(){if(Zc("light"),!!o.selectedId){var e=document.getElementById("approve-permission-btn"),t=document.getElementById("deny-permission-btn");e&&(e.disabled=!0),t&&(t.disabled=!0),fetch("/api/sessions/"+encodeURIComponent(o.selectedId)+"/deny-permission",{method:"POST",credentials:"same-origin"}).then(function(n){return n.json()}).then(function(n){if(n&&n.error){Fe(n.error,"error");return}tt(n),Ci()}).catch(function(n){Fe(n&&n.message||"\u65E0\u6CD5\u62D2\u7EDD\u6388\u6743\u3002","error")}).finally(function(){e&&(e.disabled=!1),t&&(t.disabled=!1)})}}function r_(){if(o.selectedId){var e=o.sessions.find(function(n){return n.id===o.selectedId});if(e&&e.provider==="codex"){Fe("Codex \u4F1A\u8BDD\u56FA\u5B9A\u4EE5 full-access PTY \u542F\u52A8\uFF0C\u4E0D\u652F\u6301\u5207\u6362\u81EA\u52A8\u6279\u51C6\u3002","info");return}var t=document.getElementById("auto-approve-toggle");t&&(t.style.opacity="0.5"),fetch("/api/sessions/"+encodeURIComponent(o.selectedId)+"/toggle-auto-approve",{method:"POST",credentials:"same-origin"}).then(function(n){return n.json()}).then(function(n){if(n&&n.error){Fe(n.error,"error");return}tt(n),n8();var i=n.autoApprovePermissions;Fe(i?"\u81EA\u52A8\u6279\u51C6\u5DF2\u5F00\u542F":"\u81EA\u52A8\u6279\u51C6\u5DF2\u5173\u95ED","info")}).catch(function(n){Fe(n&&n.message||"\u65E0\u6CD5\u5207\u6362\u81EA\u52A8\u6279\u51C6\u3002","error")}).finally(function(){t&&(t.style.opacity="")})}}function n8(){var e=document.getElementById("auto-approve-toggle"),t=o.sessions.find(function(u){return u.id===o.selectedId});if(l4(t)){e&&e.parentNode&&e.parentNode.removeChild(e);return}if(e){var n="composer-pill composer-pill-chip auto-approve-indicator",i=t&&t.autoApprovePermissions;i?(e.className=n+" active",e.title="\u81EA\u52A8\u6279\u51C6\u5DF2\u542F\u7528 \u2014 \u70B9\u51FB\u5173\u95ED",e.setAttribute("aria-pressed","true"),e.setAttribute("aria-label","\u81EA\u52A8\u6279\u51C6\u5DF2\u542F\u7528\uFF0C\u70B9\u51FB\u5173\u95ED"),e.innerHTML=mt("shieldCheck",{size:12,strokeWidth:1.7,cls:"composer-pill-icon"})+'<span class="composer-pill-label">\u81EA\u52A8</span>'):(e.className=n,e.title="\u81EA\u52A8\u6279\u51C6\u5DF2\u5173\u95ED \u2014 \u70B9\u51FB\u5F00\u542F",e.setAttribute("aria-pressed","false"),e.setAttribute("aria-label","\u81EA\u52A8\u6279\u51C6\u5DF2\u5173\u95ED\uFF0C\u70B9\u51FB\u5F00\u542F"),e.innerHTML=mt("shield",{size:12,strokeWidth:1.7,cls:"composer-pill-icon"})+'<span class="composer-pill-label">\u624B\u52A8</span>')}}function i_(e,t,n){return o.terminal?am(t||o.selectedId,e,{mode:n||"append"}):!1}function a8(){o.pollTimer&&(clearInterval(o.pollTimer),o.pollTimer=null)}function Pc(e){o.renderPending&&!e||(o.renderPending=!0,e?(Em(!0),o.renderPending=!1):requestAnimationFrame(function(){Em(!1),o.renderPending=!1}))}o.chatRenderTimer=null;function zg(e){if(!(o.chatRenderTimer&&!e)){if(o.chatRenderTimer&&clearTimeout(o.chatRenderTimer),e){o.chatRenderTimer=null,Pc();return}var t=o.sessions.find(function(u){return u.id===o.selectedId}),n=t&&t.status==="running"&&t.sessionKind!=="structured",i=n?y8:x8;o.chatRenderTimer=setTimeout(function(){o.chatRenderTimer=null;var u=o.sessions.find(function(l){return l.id===o.selectedId});u&&(o.currentMessages=Wn(u,wa(u,u.output,!0))),Pc()},i)}}var Pg=0,Zp=0,r8=0,Hc=0;function Hg(){return window.__wandIosNative===!0}function i8(e){r8=Math.max(r8,Date.now()+(e||1800))}function u8(e,t){setTimeout(function(){var n=document.activeElement;Jp(n)&&n!==t||i8(e)},30)}function u_(e){return Math.max(window.innerHeight||0,e&&e.height||0,document.documentElement&&document.documentElement.clientHeight||0,document.body&&document.body.clientHeight||0)}function s_(e){var t=document.documentElement,n=Math.max(window.innerWidth||0,e&&e.width||0,t&&t.clientWidth||0),i=u_(e);return!Pg||Math.abs(n-Pg)>8?(Pg=n,Zp=i):i>Zp&&(Zp=i),Math.max(1,Math.round(Zp||i||1))}function o_(e,t,n,i){return e||!Hg()?!1:t>0||i>n+1}function Jo(e){var t=window.visualViewport;if(t){var n=document.documentElement;if(n.classList.toggle("is-keyboard-open",!!e),window.__wandImeNative){n.style.setProperty("--app-viewport-top","0px"),n.style.setProperty("--app-viewport-height",Math.round(t.height)+"px");return}var i=s_(t),u=Math.max(0,Math.round(t.offsetTop||0)),l=Math.max(1,Math.round(t.height));(!e&&Hg()||o_(e,u,l,i))&&(u=0,l=Math.max(l,i)),n.style.setProperty("--app-viewport-top",u+"px"),n.style.setProperty("--app-viewport-height",l+"px"),(e||(window.scrollY||0)>0)&&h5()}}function Jp(e){if(!e)return!1;var t=e.tagName;if(t==="TEXTAREA"||t==="SELECT")return!0;if(t==="INPUT"){var n=(e.getAttribute("type")||"text").toLowerCase();return!/^(button|checkbox|color|file|hidden|image|radio|range|reset|submit)$/i.test(n)}return!!e.isContentEditable}function l_(){if(!("visualViewport"in window)||window.__wandViewportHandlersBound)return;window.__wandViewportHandlersBound=!0;var e=window.visualViewport,t=e.height,n=!1,i=Math.max(window.innerWidth||0,e.width||0),u=Math.max(window.innerHeight||0,e.height||0),l=[];function d(){return Math.max(window.innerHeight||0,e.height||0)}function f(){var b=Math.max(window.innerWidth||0,e.width||0),x=d();if(Math.abs(b-i)>8){i=b,u=x;return}x>u&&(u=x)}function m(b,x){var F=document.activeElement,C=F===b||Jp(F),A=u-e.height,S=u-(window.innerHeight||e.height||0),T=Date.now()<Hc;return T?!!(C&&(A>120||S>120)):!!(x>80||C&&(A>120||S>120)||n&&(A>80||x>32))}function g(){l.forEach(function(b){clearTimeout(b)}),l=[60,180,360,620,900].map(function(b){return setTimeout(function(){Jo(n)},b)})}function h(){[0,50,120,220,360,560].forEach(function(b){setTimeout(function(){w();var x=document.getElementById("input-box");x&&document.activeElement===x&&xm(x)},b)})}function w(){if(e){var b=document.getElementById("input-box"),x=window.innerHeight-e.height-e.offsetTop;f();var F=m(b,x),C=Math.abs(e.height-t)>8;if(Jo(F),F&&(!n||C)&&Gz(e,b)&&xm(b),!n&&F){var A=o.terminalAutoFollow||Vg();va("keyboard-open",{forceReplay:!0}),window.__wandImeNative||setTimeout(function(){Jo(!0)},220),g(),A&&setTimeout(function(){o.terminal&&ei("force")},220)}if(n&&!F){var S=!!window.__wandImeNative;S||(i8(2200),Hc=Date.now()+1200,Jo(!1),h5()),g(),setTimeout(function(){S||(Jo(!1),h5()),va("keyboard-close",{forceReplay:!0}),ei("keyboard")},200)}C&&n===F&&va("viewport"),n=F,t=e.height}}var y=null;function E(){y!==null&&cancelAnimationFrame(y),y=requestAnimationFrame(function(){y=null,w()})}e.addEventListener("resize",E),e.addEventListener("scroll",E),document.addEventListener("visibilitychange",function(){document.visibilityState==="visible"&&(E(),setTimeout(E,240),setTimeout(E,720))}),window.addEventListener("pageshow",function(b){b&&b.persisted&&(E(),setTimeout(E,240))}),document.addEventListener("focusout",function(b){!b||!b.target||Jp(b.target)&&(u8(1600,b.target),Hg()&&(Hc=Math.max(Hc,Date.now()+1200)),setTimeout(E,80),setTimeout(E,420))}),document.addEventListener("focusin",function(b){!b||!b.target||!Jp(b.target)||h()}),window.addEventListener("wand-ios-ime-state",function(b){var x=b&&b.detail&&b.detail.state;x==="hidden"&&(Hc=Date.now()+900),h(),g()}),w()}function c_(){var e=document.getElementById("output");if(e){var t=document.createElement("div");t.className="terminal-resize-handle",t.innerHTML="&#8942;",e.appendChild(t);var n=!1,i=0,u=0;t.addEventListener("mousedown",function(l){n=!0,i=l.clientY,u=e.getBoundingClientRect().height,document.body.style.cursor="ns-resize",document.body.style.userSelect="none",l.preventDefault()}),o.resizeMouseMove=function(l){if(n){var d=l.clientY-i,f=Math.max(200,Math.min(u+d,window.innerHeight-200));e.style.height=f+"px",e.style.flex="none",Di()}},document.addEventListener("mousemove",o.resizeMouseMove),o.resizeMouseUp=function(){n&&(n=!1,document.body.style.cursor="",document.body.style.userSelect="",Di())},document.addEventListener("mouseup",o.resizeMouseUp),t.addEventListener("touchstart",function(l){n=!0,i=l.touches[0].clientY,u=e.getBoundingClientRect().height,l.preventDefault()},{passive:!1}),o.resizeTouchMove=function(l){if(n){var d=l.touches[0].clientY-i,f=Math.max(200,Math.min(u+d,window.innerHeight-200));e.style.height=f+"px",e.style.flex="none",Di(),l.preventDefault()}},document.addEventListener("touchmove",o.resizeTouchMove,{passive:!1}),o.resizeTouchEnd=function(){n&&(n=!1,Di())},document.addEventListener("touchend",o.resizeTouchEnd)}}function s8(){var e=Su();return!!e&&!ft(e)}function qg(e){var t=Math.max(Ls,window.innerWidth-dm-Ls),n=Math.max(Ls,window.innerHeight-dm-Ls);return{right:Math.min(Math.max(Ls,e.right),t),bottom:Math.min(Math.max(Ls,e.bottom),n)}}function o8(){if(o.joystickBallEl){var e=qg(o.joystickPos||{right:18,bottom:96});o.joystickBallEl.style.right=e.right+"px",o.joystickBallEl.style.bottom=e.bottom+"px"}}function d_(e,t){var n=qg({right:e,bottom:t});o.joystickPos=n;try{localStorage.setItem("wand-ball-pos",JSON.stringify(n))}catch{}}function l8(){if(!(!o.joystickPanelEl||!o.joystickBallEl)){var e=window.visualViewport,t={left:e?e.offsetLeft:0,top:e?e.offsetTop:0,right:e?e.offsetLeft+e.width:window.innerWidth,bottom:e?e.offsetTop+e.height:window.innerHeight},n=o.joystickBallEl.getBoundingClientRect(),i=o.joystickPanelEl.offsetWidth,u=o.joystickPanelEl.offsetHeight;if(!(!i||!u)){var l=VR(n,t,i,u,10,Ls);o.joystickPanelEl.style.right="auto",o.joystickPanelEl.style.bottom="auto",o.joystickPanelEl.style.left=l.left+"px",o.joystickPanelEl.style.top=l.top+"px",o.joystickPanelEl.style.transformOrigin=l.placement==="above"?"bottom right":"top right"}}}function f_(){function e(l,d,f){return'<button type="button" class="wjp-key'+(f?" "+f:"")+'" data-key="'+l+'">'+d+"</button>"}var t='<div class="wjp-dpad"><div class="wjp-dpad-row">'+e("up","\u2191","wjp-dir")+'</div><div class="wjp-dpad-row">'+e("left","\u2190","wjp-dir")+e("down","\u2193","wjp-dir")+e("right","\u2192","wjp-dir")+"</div></div>",n="",i;for(i=0;i<s5.length;i++)n+=e(s5[i].key,s5[i].label,"");var u='<div class="wjp-header"><span class="wjp-title">'+mt("paw",{size:13,strokeWidth:1.6,cls:"wjp-title-icon"})+'<span>\u9065\u63A7\u9762\u677F</span></span><button type="button" class="wjp-close" aria-label="\u5173\u95ED\u9065\u63A7\u9762\u677F">'+mt("x",{size:13,strokeWidth:2})+"</button></div>"+t+'<div class="wjp-grid wjp-fnkeys">'+n+"</div>";return u}function p_(){if(!o.joystickRootEl){var e=document.createElement("div");e.className="wand-joystick-root",["pointerdown","pointerup","touchstart","touchend","click"].forEach(function(u){e.addEventListener(u,c8,!0)});var t=document.createElement("div");t.className="wand-joystick-backdrop",e.appendChild(t);var n=document.createElement("div");n.className="wand-joystick-panel",n.innerHTML=f_(),n.addEventListener("click",x_),e.appendChild(n);var i=document.createElement("div");i.className="wand-joystick-ball",i.setAttribute("role","button"),i.setAttribute("aria-label","Wand \u9065\u63A7\u9762\u677F"),i.setAttribute("title","\u70B9\u51FB\u6253\u5F00\u9065\u63A7\u9762\u677F\uFF0C\u62D6\u52A8\u53EF\u79FB\u52A8\u4F4D\u7F6E"),i.innerHTML=mt("paw",{size:25,strokeWidth:1.6,cls:"wand-joystick-logo"}),e.appendChild(i),document.body.appendChild(e),o.joystickRootEl=e,o.joystickBackdropEl=t,o.joystickPanelEl=n,o.joystickBallEl=i,o8(),i.addEventListener("pointerdown",m_),i.addEventListener("click",function(u){u.preventDefault(),u.stopPropagation()}),t.addEventListener("pointerdown",function(u){o.joystickPinnedOpen&&o.joystickGesture==null&&(u.preventDefault(),qc())}),t.addEventListener("click",function(u){u.preventDefault(),u.stopPropagation()}),o.joystickResizeHandler=function(){o8(),o.joystickPinnedOpen&&l8()},window.addEventListener("resize",o.joystickResizeHandler),window.addEventListener("orientationchange",o.joystickResizeHandler),window.visualViewport&&(window.visualViewport.addEventListener("resize",o.joystickResizeHandler),window.visualViewport.addEventListener("scroll",o.joystickResizeHandler)),m8()}}function c8(){if(document.documentElement.classList.contains("is-wand-native-input")){var e=document.activeElement;if(e&&typeof e.blur=="function")try{e.blur()}catch{}setTimeout(function(){var t=document.activeElement;if(t&&typeof t.blur=="function")try{t.blur()}catch{}},0)}}function m_(e){if(s8()&&!((e.pointerType==="mouse"||e.pointerType==="pen")&&e.button!==0)&&o.joystickPointerId===null){c8(),e.preventDefault(),e.stopPropagation();var t=e.pointerType==="mouse"||e.pointerType==="pen";o.joystickPointerId=e.pointerId,o.joystickPressStart={x:e.clientX,y:e.clientY,t:Date.now()},o.joystickGesture="pending";try{o.joystickBallEl.setPointerCapture(e.pointerId)}catch{}t||(o.joystickLongPressTimer=setTimeout(function(){o.joystickGesture==="pending"&&d8()},dz)),o.joystickMoveHandler=h_,o.joystickUpHandler=v_,document.addEventListener("pointermove",o.joystickMoveHandler),document.addEventListener("pointerup",o.joystickUpHandler),document.addEventListener("pointercancel",o.joystickUpHandler)}}function d8(){o.joystickGesture="move",o.joystickPinnedOpen&&qc(),o.joystickBallEl&&o.joystickBallEl.classList.add("dragging"),o.joystickBackdropEl&&o.joystickBackdropEl.classList.add("active")}function f8(e,t){if(o.joystickBallEl){var n=qg({right:window.innerWidth-e-dm/2,bottom:window.innerHeight-t-dm/2});o.joystickBallEl.style.right=n.right+"px",o.joystickBallEl.style.bottom=n.bottom+"px"}}function h_(e){if(!(e.pointerId!==o.joystickPointerId||!o.joystickBallEl)){if(e.preventDefault(),o.joystickGesture==="move"){f8(e.clientX,e.clientY);return}if(o.joystickGesture==="pending"){var t=e.clientX-o.joystickPressStart.x,n=e.clientY-o.joystickPressStart.y;Math.sqrt(t*t+n*n)<=fz||(e.pointerType==="mouse"||e.pointerType==="pen"?(d8(),f8(e.clientX,e.clientY)):(o.joystickLongPressTimer&&(clearTimeout(o.joystickLongPressTimer),o.joystickLongPressTimer=null),o.joystickGesture="cancelled"))}}}function v_(e){if(e.pointerId===o.joystickPointerId){o.joystickLongPressTimer&&(clearTimeout(o.joystickLongPressTimer),o.joystickLongPressTimer=null);var t=o.joystickGesture;if(t==="pending"){var n=e.clientX-o.joystickPressStart.x,i=e.clientY-o.joystickPressStart.y;Math.sqrt(n*n+i*i)<=pz&&b_()}else if(t==="move"){var u=o.joystickBallEl?o.joystickBallEl.getBoundingClientRect():null;u&&d_(window.innerWidth-u.right,window.innerHeight-u.bottom)}p8()}}function p8(){if(o.joystickLongPressTimer&&(clearTimeout(o.joystickLongPressTimer),o.joystickLongPressTimer=null),o.joystickBallEl&&o.joystickPointerId!==null)try{o.joystickBallEl.releasePointerCapture(o.joystickPointerId)}catch{}o.joystickMoveHandler&&(document.removeEventListener("pointermove",o.joystickMoveHandler),o.joystickMoveHandler=null),o.joystickUpHandler&&(document.removeEventListener("pointerup",o.joystickUpHandler),document.removeEventListener("pointercancel",o.joystickUpHandler),o.joystickUpHandler=null),o.joystickBallEl&&o.joystickBallEl.classList.remove("dragging"),o.joystickBackdropEl&&!o.joystickPinnedOpen&&o.joystickBackdropEl.classList.remove("active"),o.joystickPointerId=null,o.joystickGesture=null,o.joystickPressStart=null}function g_(e){if(e==="ctrl"||e==="alt"||e==="shift"){o.modifiers[e]=!o.modifiers[e],Uc();return}var t=Su();if(t&&ft(t)){(e==="ctrl_c"||e==="escape")&&w_(t,e),hm(),Uc();return}var n=l7(e,{ctrl:o.modifiers.ctrl,alt:o.modifiers.alt,shift:o.modifiers.shift});n&&i7(n,e),hm(),Uc(),Cz()}function w_(e,t){!e||!e.id||fetch("/api/structured-sessions/"+e.id+"/messages",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({input:"",interrupt:!0,preserveQueue:!0})}).then(function(n){return n.ok?n.json():n.json().catch(function(){return{}}).then(function(i){throw new Error(i&&i.error||"\u4E2D\u65AD\u5931\u8D25 (key="+t+")")})}).then(function(n){if(n&&n.id&&(tt(n),n.id===o.selectedId)){var i=o.sessions.find(function(u){return u.id===n.id})||n;o.currentMessages=Wn(i,wa(i,n.output,!1)),Pc(!0),typeof ta=="function"&&ta()}}).catch(function(n){n&&n.message&&console.debug("[wand] joystick interrupt no-op:",n.message)})}function b_(){o.joystickPinnedOpen?qc():y_()}function y_(){!o.joystickPanelEl||!o.joystickBallEl||(o.joystickPinnedOpen=!0,l8(),o.joystickPanelEl.classList.add("active"),o.joystickBallEl.classList.add("panel-open"),o.joystickBackdropEl&&o.joystickBackdropEl.classList.add("active"),Uc())}function qc(){o.joystickPinnedOpen=!1,o.joystickPanelEl&&o.joystickPanelEl.classList.remove("active"),o.joystickBallEl&&o.joystickBallEl.classList.remove("panel-open"),o.joystickBackdropEl&&o.joystickGesture==null&&o.joystickBackdropEl.classList.remove("active")}function Uc(){o.joystickPanelEl&&["ctrl","alt"].forEach(function(e){var t=o.joystickPanelEl.querySelector('.wjp-mod[data-key="'+e+'"]');t&&t.classList.toggle("active",!!o.modifiers[e])})}function x_(e){var t=e.target&&e.target.closest?e.target.closest(".wjp-close"):null;if(t){e.preventDefault(),e.stopPropagation(),qc();return}var n=e.target&&e.target.closest?e.target.closest(".wjp-key"):null;if(n){e.preventDefault(),e.stopPropagation();var i=n.getAttribute("data-key");i&&g_(i)}}function m8(){var e=o.joystickRootEl;if(e){var t=s8();e.classList.toggle("visible",t),t||((o.joystickPointerId!==null||o.joystickGesture)&&p8(),o.joystickPinnedOpen&&qc(),o.joystickBackdropEl&&o.joystickBackdropEl.classList.remove("active"))}}function E_(){o.joystickLongPressTimer&&(clearTimeout(o.joystickLongPressTimer),o.joystickLongPressTimer=null),o.joystickMoveHandler&&(document.removeEventListener("pointermove",o.joystickMoveHandler),o.joystickMoveHandler=null),o.joystickUpHandler&&(document.removeEventListener("pointerup",o.joystickUpHandler),document.removeEventListener("pointercancel",o.joystickUpHandler),o.joystickUpHandler=null),o.joystickResizeHandler&&(window.removeEventListener("resize",o.joystickResizeHandler),window.removeEventListener("orientationchange",o.joystickResizeHandler),window.visualViewport&&(window.visualViewport.removeEventListener("resize",o.joystickResizeHandler),window.visualViewport.removeEventListener("scroll",o.joystickResizeHandler)),o.joystickResizeHandler=null),o.joystickRootEl&&o.joystickRootEl.parentNode&&o.joystickRootEl.parentNode.removeChild(o.joystickRootEl),o.joystickRootEl=null,o.joystickPanelEl=null,o.joystickBackdropEl=null,o.joystickBallEl=null,o.joystickPointerId=null,o.joystickGesture=null,o.joystickPressStart=null,o.joystickPinnedOpen=!1}function F_(){var e=document.getElementById("output");if(e){var t=!In();o.resizeHandler=function(){Di(!0);var n=!In();t!==n&&(t=n,!n&&o.sidebarPinned&&o.sessionsDrawerOpen?(o.sessionsDrawerOpen=!1,Pt("wand-sidebar-open",!1),wd()):n&&o.sidebarPinned&&!o.sessionsDrawerOpen&&(o.sessionsDrawerOpen=!0,Pt("wand-sidebar-open",!0),wd()))},window.addEventListener("resize",o.resizeHandler),window.visualViewport&&(o.visualViewportHandler=function(){Di(!0)},window.visualViewport.addEventListener("resize",o.visualViewportHandler)),o.visibilityHandler=function(){document.hidden||va("visibility",{forceReplay:!0})},document.addEventListener("visibilitychange",o.visibilityHandler),o.orientationHandler=function(){va("orientation",{forceReplay:!0})},window.addEventListener("orientationchange",o.orientationHandler),requestAnimationFrame(function(){Di(!0)})}}function C_(){o.terminalHealthTimer||(o.terminalHealthTimer=setInterval(function(){if(!(!o.terminal||o.currentView!=="terminal"||document.hidden)){var e=o.sessions.find(function(t){return t.id===o.selectedId});!e||e.sessionKind==="structured"||va("health")}},5e3))}function D_(){o.terminalHealthTimer&&(clearInterval(o.terminalHealthTimer),o.terminalHealthTimer=null)}function Ms(){D_(),o.resizeTimer&&(clearTimeout(o.resizeTimer),o.resizeTimer=null),o.resizeObserver&&(o.resizeObserver.disconnect(),o.resizeObserver=null),o.resizeHandler&&(window.removeEventListener("resize",o.resizeHandler),o.resizeHandler=null),o.visualViewportHandler&&window.visualViewport&&(window.visualViewport.removeEventListener("resize",o.visualViewportHandler),o.visualViewportHandler=null),o.visibilityHandler&&(document.removeEventListener("visibilitychange",o.visibilityHandler),o.visibilityHandler=null),o.orientationHandler&&(window.removeEventListener("orientationchange",o.orientationHandler),o.orientationHandler=null),[["mousemove","resizeMouseMove"],["mouseup","resizeMouseUp"],["touchmove","resizeTouchMove"],["touchend","resizeTouchEnd"]].forEach(function(u){o[u[1]]&&(document.removeEventListener(u[0],o[u[1]]),o[u[1]]=null)}),Gc();var e=document.getElementById("output");if(o.terminalViewportEl&&(o.terminalViewportScrollHandler&&o.terminalViewportEl.removeEventListener("scroll",o.terminalViewportScrollHandler),o.terminalViewportTouchHandler&&o.terminalViewportEl.removeEventListener("touchmove",o.terminalViewportTouchHandler),o.terminalViewportTouchStartHandler&&o.terminalViewportEl.removeEventListener("touchstart",o.terminalViewportTouchStartHandler)),e&&(o.terminalWheelHandler&&e.removeEventListener("wheel",o.terminalWheelHandler),o.terminalClickHandler&&e.removeEventListener("click",o.terminalClickHandler)),o.terminalViewportEl=null,o.terminalViewportScrollHandler=null,o.terminalViewportTouchHandler=null,o.terminalViewportTouchStartHandler=null,o.terminalWheelHandler=null,o.terminalClickHandler=null,o.terminalScrollbarHideTimer&&(clearTimeout(o.terminalScrollbarHideTimer),o.terminalScrollbarHideTimer=null),o.terminalScrollbarEl&&o.terminalScrollbarEl.parentNode&&o.terminalScrollbarEl.parentNode.removeChild(o.terminalScrollbarEl),o.terminalScrollbarEl=null,o.terminalScrollbarThumbEl=null,o.terminalScrollbarDragging=!1,o.terminalScrollbarRafPending=!1,o.terminal&&(typeof o.terminal.dispose=="function"?o.terminal.dispose():typeof o.terminal.destroy=="function"&&o.terminal.destroy(),o.terminal=null),e)for(var t=e.querySelectorAll(".terminal-scroll-wrap"),n=0;n<t.length;n++){var i=t[n];i.parentNode===e&&e.removeChild(i)}o.terminalSessionId=null,o.terminalFitAddon=null,o.terminalWriteQueue=Promise.resolve(),o.terminalRestoreGeneration=(o.terminalRestoreGeneration||0)+1,o.terminalOutput="",o.terminalAutoFollow=!0,o.showTerminalJumpToBottom=!1,Jr(),o.softResyncTimer&&(clearTimeout(o.softResyncTimer),o.softResyncTimer=null),o.lastResize={cols:0,rows:0},E_()}function Vc(e,t){if(o.selectedId){var n=o.sessions.find(function(u){return u.id===o.selectedId});if(!(!n||n.status!=="running")&&!ft(n)){e=Math.max(20,Math.min(Math.floor(e),1e3)),t=Math.max(5,Math.min(Math.floor(t),500));var i={cols:e,rows:t};(o.lastResize.cols!==i.cols||o.lastResize.rows!==i.rows)&&(o.lastResize=i,o.ws&&o.ws.readyState===WebSocket.OPEN?o.ws.send(JSON.stringify({type:"pty_resize",sessionId:o.selectedId,cols:i.cols,rows:i.rows})):fetch("/api/sessions/"+o.selectedId+"/resize",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(i)}).catch(function(){}))}}}function va(e,t){if(!o.terminal)return!1;var n=document.getElementById("output");if(!n||n.offsetWidth===0||n.offsetHeight===0)return Wc(e||"fit-retry"),!1;var i=o.terminalAutoFollow||Vg(),u=o.terminal.cols,l=o.terminal.rows;return requestAnimationFrame(function(){requestAnimationFrame(function(){o.terminal&&(o.terminalFitAddon&&typeof o.terminalFitAddon.fit=="function"&&o.terminalFitAddon.fit(),Vc(o.terminal.cols,o.terminal.rows),i&&ei("force"))})}),!0}function Wc(e,t){if(!o.terminal)return;var n=0,i=8;function u(){if(o.terminal){var l=document.getElementById("output");if(l&&l.offsetHeight,l&&l.offsetWidth>0&&l.offsetHeight>0){va(e);return}++n>=i||(n<=4?requestAnimationFrame(u):setTimeout(u,32))}}u()}function Di(e){o.resizeTimer&&(clearTimeout(o.resizeTimer),o.resizeTimer=null);var t=e?0:100;o.resizeTimer=setTimeout(function(){o.resizeTimer=null,requestAnimationFrame(A_)},t)}function A_(){if(o.terminal){var e=o.terminalAutoFollow||Vg();e&&ei("force"),Vc(o.terminal.cols,o.terminal.rows)}}var h8=80,S_=80,k_=180;function B_(e,t,n,i=Date.now()){if(!Number.isFinite(e.deltaY)||e.deltaY===0)return 0;var u=e.deltaY<0?-1:1,l=Math.abs(M_(e,n));return l===0||((t.direction!==u||i-t.lastEventAt>k_)&&(t.accumulatedPixels=0),t.direction=u,t.lastEventAt=i,t.accumulatedPixels+=l,t.accumulatedPixels<h8)||i-t.lastPageAt<S_?0:(t.accumulatedPixels%=h8,t.lastPageAt=i,u)}var v8=60,j_=80;function T_(e,t,n=Date.now()){if(!Number.isFinite(e)||e===0||(t.accumulatedPixels+=e,Math.abs(t.accumulatedPixels)<v8)||n-t.lastPageAt<j_)return 0;var i=t.accumulatedPixels>0?1:-1;return t.accumulatedPixels-=i*v8,t.lastPageAt=n,i}function g8(e){return e<0?"\x1B[5~":e>0?"\x1B[6~":""}function M_(e,t){return e.deltaMode===1?e.deltaY*16:e.deltaMode===2?e.deltaY*Math.max(1,t):e.deltaY}function w8(e){o.workingDir=e;try{localStorage.setItem("wand-working-dir",e)}catch{}N_(e)}function N_(e){return fetch("/api/recent-paths",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({path:e})}).catch(function(){})}function Ug(e){var t=o.sessions.find(function(n){return n.id===e});t&&t.status!=="running"&&!ft(t)?p5(e):Gn(e),Yn()}function O_(e){var t=e.target;if(!(!t||!(t instanceof Element))){var n=t.closest(".sidebar-collapsed-tile");if(n&&n instanceof HTMLElement){if(n.dataset.collapsedNewSession){e.preventDefault(),e.stopPropagation(),Nm();return}if(n.dataset.collapsedSessionId){e.preventDefault(),e.stopPropagation(),Ug(n.dataset.collapsedSessionId);return}if(n.dataset.collapsedHistoryId){e.preventDefault(),e.stopPropagation();var i=n.dataset.collapsedHistoryId,u=n.dataset.cwd||"",l=n.dataset.provider==="codex"?wm:bm;l(i,u).then(function(b){b&&b.id&&(o.selectedId=b.id,$t(),o.drafts[b.id]="",Bi().then(function(){Gn(b.id)}))});return}}var d=t.closest("#claude-history-toggle");if(d){e.preventDefault(),e.stopPropagation(),o.claudeHistoryExpanded=!o.claudeHistoryExpanded,o.claudeHistoryExpanded&&!o.claudeHistoryLoaded&&HR(),Ot();return}var f=t.closest("[data-action]");if(f&&f instanceof HTMLElement){if(e.preventDefault(),e.stopPropagation(),f.dataset.action==="toggle-manage-mode")R2();else if(f.dataset.action==="select-all-visible")L2();else if(f.dataset.action==="clear-selection")z2();else if(f.dataset.action==="delete-selected")H2();else if(f.dataset.action==="toggle-selection")Xo(f.dataset.kind,f.dataset.id);else if(f.dataset.action==="swipe-delete-session"&&f.dataset.sessionId)vm(f.dataset.sessionId);else if(f.dataset.action==="delete-session"&&f.dataset.sessionId)(function(b){Fi("\u786E\u8BA4\u5220\u9664\u8FD9\u4E2A\u4F1A\u8BDD\u5417\uFF1F\u6B64\u64CD\u4F5C\u65E0\u6CD5\u64A4\u9500\u3002",{title:"\u5220\u9664\u4F1A\u8BDD"}).then(function(x){x&&vm(b)})})(f.dataset.sessionId);else if(f.dataset.action==="delete-history"&&f.dataset.claudeSessionId)(function(b,x){Fi("\u786E\u8BA4\u5220\u9664\u8FD9\u6761 Claude \u4F1A\u8BDD\u5417\uFF1F",{title:"\u5220\u9664\u4F1A\u8BDD"}).then(function(F){F&&c7(b,x)})})(f.dataset.claudeSessionId,f.closest(".session-item"));else if(f.dataset.action==="toggle-history-directory"&&f.dataset.cwd){var m=f.dataset.cwd;o.claudeHistoryExpandedDirs[m]=!o.claudeHistoryExpandedDirs[m],Ot()}else if(f.dataset.action==="delete-history-directory"&&f.dataset.cwd)(function(b,x){var F=Oz(b),C=O2().filter(function(A){return A.cwd===b}).length;Fi("\u786E\u8BA4\u6E05\u7A7A\u6B64\u76EE\u5F55\u4E0B\u7684 "+C+" \u6761 Claude \u5386\u53F2\u5417\uFF1F",{title:"\u6E05\u7A7A\u76EE\u5F55\u5386\u53F2",okLabel:"\u6E05\u7A7A"}).then(function(A){A&&(d7(F,!0),Nz(b,x,F))})})(f.dataset.cwd,f);else if(f.dataset.action==="clear-all-history")_R();else if(f.dataset.action==="toggle-archived-group")o.archivedExpanded=!o.archivedExpanded,Ot();else if(f.dataset.action==="resume"&&f.dataset.sessionId)Rz(f);else if(f.dataset.action==="resume-history"&&f.dataset.claudeSessionId)zz(f);else if(f.dataset.action==="resume-codex-history"&&f.dataset.claudeSessionId)_z(f);else if(f.dataset.action==="delete-codex-history"&&f.dataset.claudeSessionId)Lz(f);else if(f.dataset.action==="toggle-codex-history-directory"&&f.dataset.cwd){var g=f.dataset.cwd;o.codexHistoryExpandedDirs[g]=!o.codexHistoryExpandedDirs[g],Ot()}else f.dataset.action==="worktree-merge"&&f.dataset.sessionId?V5(f.dataset.sessionId):f.dataset.action==="worktree-cleanup"&&f.dataset.sessionId&&W5(f.dataset.sessionId);return}var h=t.closest(".session-item");if(h){if(o.sessionsManageMode){h.dataset.sessionId?Xo("sessions",h.dataset.sessionId):h.dataset.claudeHistoryId&&Xo(h.dataset.provider==="codex"?"codex":"history",h.dataset.claudeHistoryId);return}if(h.classList.contains("swiped")){id();return}if(f7)return;if(h.dataset.sessionId)Ug(h.dataset.sessionId);else if(h.dataset.claudeHistoryId){var w=h.dataset.claudeHistoryId,y=h.dataset.cwd,E=h.dataset.provider==="codex"?wm:bm;E(w,y).then(function(b){b&&b.id&&(o.selectedId=b.id,$t(),o.drafts[b.id]="",Bi().then(function(){Gn(b.id),Yn()}))})}}}}function I_(e){if(!(e.key!=="Enter"&&e.key!==" ")){var t=e.target.closest(".session-item");if(t){if(e.preventDefault(),o.sessionsManageMode){t.dataset.sessionId?Xo("sessions",t.dataset.sessionId):t.dataset.claudeHistoryId&&Xo(t.dataset.provider==="codex"?"codex":"history",t.dataset.claudeHistoryId);return}if(t.dataset.sessionId)Ug(t.dataset.sessionId);else if(t.dataset.claudeHistoryId){var n=t.dataset.claudeHistoryId,i=t.dataset.cwd,u=t.dataset.provider==="codex"?wm:bm;u(n,i).then(function(l){l&&l.id&&(o.selectedId=l.id,$t(),o.drafts[l.id]="",Bi().then(function(){Gn(l.id),Yn()}))})}}}}function el(e,t){var n=o.sessions.find(function(u){return u.id===o.selectedId});if(n){var i=n[e];if(!i){Fe("\u5F53\u524D\u4F1A\u8BDD\u6CA1\u6709\u53EF\u590D\u5236\u7684\u5185\u5BB9\u3002","error");return}Om(String(i),null,function(){Fe(t||"\u5DF2\u590D\u5236","info")})}}function er(){return!o.terminal||!o.terminal.element?null:(o.terminalViewportEl=o.terminal.element.querySelector(".xterm-viewport"),o.terminalViewportEl)}function Gc(){o.terminalScrollIdleTimer&&(clearTimeout(o.terminalScrollIdleTimer),o.terminalScrollIdleTimer=null)}function Jr(){var e=document.getElementById("terminal-jump-bottom"),t=!!o.selectedId&&o.currentView==="terminal"&&!o.terminalAutoFollow&&!b8();o.showTerminalJumpToBottom=t,e&&e.classList.toggle("visible",t);var n=document.getElementById("output");n&&n.classList.toggle("has-jump-btn",t)}function Vg(){var e=er();if(!e)return!0;var t=e.scrollHeight-e.clientHeight-e.scrollTop;return t<=o.terminalScrollThreshold}function b8(){var e=er();if(!e)return!0;var t=e.scrollHeight-e.clientHeight-e.scrollTop;return t<=2}function Wg(e){if(o.terminal){var t=er();if(t){var n=e?500:120;o.terminalProgrammaticScrollUntil=Math.max(o.terminalProgrammaticScrollUntil,Date.now()+n),e?t.scrollTo({top:t.scrollHeight,behavior:"smooth"}):o.terminal.scrollToBottom()}}}function Gg(){o.terminalAutoFollow=!1,Gc(),o.terminalProgrammaticScrollUntil=0,Jr()}function ei(e){if(o.terminal){var t=e==="force";if(t){o.terminalAutoFollow=!0,Gc(),Wg(!1),Jr();return}if(!o.terminalAutoFollow){Jr();return}Wg(!1),Jr()}}function R_(e,t){var n=null,i=0,u=16,l=0,d=0,f={accumulatedPixels:0,lastPageAt:0};function m(){try{var y=e.querySelector(".xterm-screen");if(y&&t.rows>0){var E=y.clientHeight/t.rows;if(E>4)return E}}catch{}var b=getComputedStyle(e).getPropertyValue("--term-row-height").trim(),x=parseFloat(b);return x>0?x:16}function g(){try{return!!t.element&&t.element.classList.contains("enable-mouse-events")}catch{return!1}}function h(y,E){var b=t.cols||80,x=t.rows||24,F=1,C=1;try{var A=e.querySelector(".xterm-screen");if(A){var S=A.getBoundingClientRect();S.width>0&&S.height>0&&(F=Math.min(b,Math.max(1,Math.floor((E.clientX-S.left)/(S.width/b))+1)),C=Math.min(x,Math.max(1,Math.floor((E.clientY-S.top)/(S.height/x))+1)))}}catch{}var T=y>0?65:64;return"\x1B[<"+T+";"+F+";"+C+"M"}e.addEventListener("touchstart",function(y){if(y.touches.length!==1){n=null;return}var E=y.touches[0];n=E.identifier,i=E.clientY,u=m(),l=0,d=0,f.accumulatedPixels=0,f.lastPageAt=0},{passive:!0}),e.addEventListener("touchmove",function(y){if(n!==null){for(var E=null,b=0;b<y.touches.length;b++)if(y.touches[b].identifier===n){E=y.touches[b];break}if(E){y.cancelable&&y.preventDefault();var x=E.clientY-i;if(i=E.clientY,x!==0){d+=Math.abs(x);var F=t.buffer.active.type==="alternate";if(F){var C=T_(-x,f,Date.now());if(C!==0){var A=g()?h(C,E):g8(C);A&&tm(A)}return}l-=x;var S=Math.trunc(l/u);S!==0&&(l-=S*u,t.scrollLines(S)),d>8&&Gg()}}}},{passive:!1});function w(){n=null}e.addEventListener("touchend",w,{passive:!0}),e.addEventListener("touchcancel",w,{passive:!0})}function __(e){var t=document.createElement("div");t.className="terminal-scrollbar";var n=document.createElement("div");n.className="terminal-scrollbar-track";var i=document.createElement("div");i.className="terminal-scrollbar-thumb",n.appendChild(i),t.appendChild(n),e.appendChild(t),o.terminalScrollbarEl=t,o.terminalScrollbarThumbEl=i,o.terminalScrollbarHideTimer=null,o.terminalScrollbarDragging=!1,o.terminalScrollbarRafPending=!1;function u(){o.terminalScrollbarHideTimer&&(clearTimeout(o.terminalScrollbarHideTimer),o.terminalScrollbarHideTimer=null),t.classList.add("visible")}function l(){o.terminalScrollbarDragging||(o.terminalScrollbarHideTimer&&clearTimeout(o.terminalScrollbarHideTimer),o.terminalScrollbarHideTimer=setTimeout(function(){o.terminalScrollbarHideTimer=null,o.terminalScrollbarDragging||t.classList.remove("visible")},1500))}function d(){o.terminalScrollbarRafPending=!1;var x=er();if(x){var F=x.scrollHeight,C=x.clientHeight;if(F<=C){t.classList.remove("visible");return}var A=n.clientHeight,S=Math.max(28,C/F*A),T=F-C,k=x.scrollTop/T,B=k*(A-S);i.style.height=S+"px",i.style.top=B+"px"}}function f(){o.terminalScrollbarRafPending||(o.terminalScrollbarRafPending=!0,requestAnimationFrame(d))}var m=er();m&&m.addEventListener("scroll",function(){u(),f(),l()},{passive:!0}),n.addEventListener("mousedown",function(x){if(x.target!==i){x.preventDefault();var F=er();if(F){var C=n.getBoundingClientRect(),A=(x.clientY-C.top)/C.height,S=F.scrollHeight-F.clientHeight;F.scrollTop=A*S}}});var g=0,h=0;i.addEventListener("mousedown",function(x){x.preventDefault(),x.stopPropagation(),o.terminalScrollbarDragging=!0,i.classList.add("dragging"),g=x.clientY;var F=er();h=F?F.scrollTop:0,document.addEventListener("mousemove",w),document.addEventListener("mouseup",y)});function w(x){x.preventDefault();var F=er();if(F){var C=n.clientHeight,A=F.scrollHeight,S=F.clientHeight,T=A-S;if(!(T<=0)){var k=Math.max(28,S/A*C),B=C-k;if(!(B<=0)){var R=x.clientY-g,z=R/B*T;F.scrollTop=h+z}}}}function y(){o.terminalScrollbarDragging=!1,i.classList.remove("dragging"),document.removeEventListener("mousemove",w),document.removeEventListener("mouseup",y),l()}i.addEventListener("touchstart",function(x){if(x.touches.length===1){x.stopPropagation(),o.terminalScrollbarDragging=!0,i.classList.add("dragging"),g=x.touches[0].clientY;var F=er();h=F?F.scrollTop:0,document.addEventListener("touchmove",E,{passive:!1}),document.addEventListener("touchend",b),document.addEventListener("touchcancel",b)}},{passive:!1});function E(x){if(x.touches.length===1){x.preventDefault();var F=er();if(F){var C=n.clientHeight,A=F.scrollHeight,S=F.clientHeight,T=A-S;if(!(T<=0)){var k=Math.max(28,S/A*C),B=C-k;if(!(B<=0)){var R=x.touches[0].clientY-g,z=R/B*T;F.scrollTop=h+z}}}}}function b(){o.terminalScrollbarDragging=!1,i.classList.remove("dragging"),document.removeEventListener("touchmove",E),document.removeEventListener("touchend",b),document.removeEventListener("touchcancel",b),l()}t.addEventListener("mouseenter",function(){u()}),t.addEventListener("mouseleave",function(){o.terminalScrollbarDragging||l()}),f()}var y8=150,x8=30,L_=160*1024,z_=192*1024;function E8(e){return o.terminal?(o.terminal.refresh(0,Math.max(0,o.terminal.rows-1)),!0):!1}function P_(e){o.softResyncTimer&&clearTimeout(o.softResyncTimer),o.softResyncTimer=setTimeout(function(){o.softResyncTimer=null,E8()},typeof e=="number"?e:0)}function em(e){return!e||e.length<=z_?e:e.slice(-L_)}function F8(e){return!o.ws||o.ws.readyState!==WebSocket.OPEN?!1:(o.ws.send(JSON.stringify(e)),!0)}function tm(e){return!o.selectedId||!e?!1:F8({type:"pty_input",sessionId:o.selectedId,data:e,userInput:o.terminalInteractive===!0})}function Yg(e,t){!e||!(t>0)||F8({type:"pty_ack",sessionId:e,bytes:t})}function nm(e,t,n,i){if(!e||t==null||t==="")return n&&i&&Yg(i,n),Promise.resolve();var u=String(t),l=o.terminalWriteQueue||Promise.resolve();return o.terminalWriteQueue=l.catch(function(){}).then(function(){return new Promise(function(d){if(!o.terminal||e!==o.terminal){n&&i&&Yg(i,n),d(null);return}e.write(u,function(){e===o.terminal&&o.terminalAutoFollow!==!1&&Wg(!1),n&&i&&Yg(i,n),d(null)})})}),o.terminalWriteQueue}function H_(){o.terminal&&(o.terminal.reset(),o.terminal.clear())}function C8(e,t){return new Promise(function(n){if(!t){n(null);return}e.write(t,function(){n(null)})})}function D8(e,t,n){if(!t||t.version!==1)return!1;if(e&&(o.terminalStatesBySession[e]=t),!o.terminal)return!0;var i=o.terminal,u=(o.terminalRestoreGeneration||0)+1;o.terminalRestoreGeneration=u;var l=o.terminalWriteQueue||Promise.resolve();return o.terminalWriteQueue=l.catch(function(){}).then(async function(){if(!(i!==o.terminal||u!==o.terminalRestoreGeneration)){i.reset(),i.clear(),t.cols>0&&t.rows>0&&i.resize(t.cols,t.rows),await C8(i,String(t.data||""));for(var d=Array.isArray(t.pending)?t.pending:[],f=0;f<d.length;f++){var m=d[f]||{};m.type==="resize"&&m.cols>0&&m.rows>0?i.resize(m.cols,m.rows):m.type==="data"&&await C8(i,String(m.data||""))}o.terminalSessionId=e||null,o.terminalOutput=String(n||""),o.terminalAutoFollow=!0,o.terminalFitAddon&&typeof o.terminalFitAddon.fit=="function"&&(o.terminalFitAddon.fit(),Vc(i.cols,i.rows)),i.scrollToBottom(),Jr()}}),!0}function am(e,t,n){if(!o.terminal)return!1;var i=String(t||""),u=e||null,l=n||{},d=l.mode==="replace",f=o.terminalSessionId!==u,m=String(o.terminalOutput||""),g=!1;if(f||d)H_(),i&&nm(o.terminal,i),g=!!i||f;else if(i.startsWith(m)){var h=i.slice(m.length);h&&(nm(o.terminal,h),g=!0)}else return!1;return o.terminalSessionId=u,o.terminalOutput=i,l.scroll!==!1&&g&&ei("output"),f&&Vc(o.terminal.cols,o.terminal.rows),g}function tl(){var e=document.getElementById("output");if(!(!e||o.terminal||o.terminalInitializing)){if(typeof XTermLib>"u"||!XTermLib.Terminal){o.terminalInitRetries=(o.terminalInitRetries||0)+1,o.terminalInitRetries<10&&setTimeout(tl,200);return}o.terminalInitRetries=0,o.terminalInitializing=!0;var t=o.sessions.find(function(x){return x.id===o.selectedId}),n=!!t&&!ft(t)&&o.currentView==="terminal";n&&(e.classList.remove("hidden"),e.classList.add("active"));for(var i=e.querySelectorAll(".terminal-scroll-wrap"),u=0;u<i.length;u++){var l=i[u];l.parentNode===e&&e.removeChild(l)}var d=document.createElement("div");d.className="terminal-scroll-wrap",e.appendChild(d);var f=getComputedStyle(d),m=f.getPropertyValue("--term-font-family").trim()||"ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace",g=document.documentElement.classList.contains("is-wand-embed-terminal")?10:o.terminalBaseFontSize,h=Math.max(8,Math.round(g*Number(o.terminalScale||1))),w=new XTermLib.Terminal({cols:120,rows:36,allowProposedApi:!0,convertEol:!1,cursorBlink:!1,disableStdin:!1,fontFamily:m,fontSize:h,lineHeight:1.25,scrollback:5e3,theme:{background:"#1f1b17",foreground:"#f4eee6",cursor:"#d88d60",selectionBackground:"rgba(216, 141, 96, 0.3)"}}),y=new XTermLib.FitAddon,E=new XTermLib.Unicode11Addon;w.loadAddon(y),w.loadAddon(E),w.unicode.activeVersion="11";var b=document.fonts&&typeof document.fonts.ready=="object"?Promise.race([document.fonts.ready,new Promise(function(x){setTimeout(x,800)})]):Promise.resolve();b.then(function(){w.open(d),w.attachCustomKeyEventHandler(function(){return o.terminalInteractive===!0});var x={direction:0,accumulatedPixels:0,lastEventAt:0,lastPageAt:0};w.attachCustomWheelEventHandler(function(k){if(w.buffer.active.type!=="alternate"||k.ctrlKey||k.metaKey||Math.abs(k.deltaY)<=Math.abs(k.deltaX))return!0;k.preventDefault(),k.stopPropagation();var B=er(),R=B_(k,x,B?B.clientHeight:w.rows*h*1.25),z=g8(R);return z&&tm(z),!1});var F=d.querySelector(".xterm-helper-textarea");F&&(F.readOnly=ku()?!0:!o.terminalInteractive),Fz(),fm(),o.terminal=w;try{window.__wandTerminal=w}catch{}o.terminalFitAddon=y,o.terminalWriteQueue=Promise.resolve(),o.terminalInitializing=!1,y.fit(),w.onData(function(k){tm(k)}),w.onBinary(function(k){o.terminalInteractive&&tm(k)}),w.onResize(function(k){Vc(k.cols,k.rows)}),o.terminalAutoFollow=!0,Gc();var C=er();if(C&&(o.terminalViewportScrollHandler=function(){if(Date.now()<o.terminalProgrammaticScrollUntil){Jr();return}b8()?(o.terminalAutoFollow=!0,Gc()):Gg(),Jr()},C.addEventListener("scroll",o.terminalViewportScrollHandler,{passive:!0})),o.terminalWheelHandler=function(k){k.deltaY<0&&Gg(),k.stopPropagation()},e.addEventListener("wheel",o.terminalWheelHandler,{passive:!0}),__(e),R_(d,w),o.selectedId){var A=o.sessions.find(function(k){return k.id===o.selectedId}),S=A&&o.terminalStatesBySession[A.id],T=A&&(A.terminalState||S);A&&!D8(A.id,T,A.output||"")&&am(A.id,A.output||"",{mode:"replace",scroll:!1})}else nm(w,`\u70B9\u51FB\u4E0A\u65B9\u300C\u65B0\u5BF9\u8BDD\u300D\u5F00\u59CB\u4F60\u7684\u7B2C\u4E00\u6B21\u5BF9\u8BDD\u3002\r
4385
4385
  `);o.terminalClickHandler=function(k){if(!mm()){if(ku()){fm();return}o.terminalInteractive?w.focus():Rr(k)}},e.addEventListener("click",o.terminalClickHandler),Jr(),c_(),p_(),F_(),C_(),va("mount"),document.documentElement.classList.contains("is-wand-embed-terminal")&&[120,350,700].forEach(function(k){setTimeout(function(){o.terminal&&va("embed-settle")},k)})}).catch(function(x){o.terminalInitializing=!1;try{w.dispose()}catch{}console.error("[wand] xterm init failed:",x)})}}function q_(e,t){if(!(!o.selectedId||!e)){var n=o.selectedId+":"+e;if(o.toolContentCache[n]){t(null,o.toolContentCache[n]);return}fetch("/api/sessions/"+encodeURIComponent(o.selectedId)+"/tool-content/"+encodeURIComponent(e),{credentials:"same-origin"}).then(function(i){return i.json()}).then(function(i){i.error?t(i.error,null):(o.toolContentCache[n]=i,t(null,i))}).catch(function(){t("\u52A0\u8F7D\u5931\u8D25",null)})}}function Ns(e){return!!(o.config&&o.config.cardDefaults&&o.config.cardDefaults[e])}function $g(e,t,n,i){if(!(!e||e.dataset.truncated!=="true"||e.dataset.loaded==="true")){var u=e.dataset.toolUseId;u&&(t&&(t.innerHTML='<div class="tool-content-loading">\u52A0\u8F7D\u4E2D\u2026</div>'),e.dataset.loaded="loading",q_(u,function(l,d){if(l){t&&(t.innerHTML=i||'<div class="tool-content-error">\u52A0\u8F7D\u5931\u8D25\uFF0C\u70B9\u51FB\u91CD\u8BD5</div>'),e.dataset.loaded="";return}e.dataset.truncated="false",e.dataset.loaded="true";var f=typeof d.content=="string"?d.content:JSON.stringify(d.content);n(f,d)}))}}window.__tcToggle=function(e,t){var n=t.closest(".tool-use-card")||t.closest(".inline-diff");if(n){var i=n.classList.contains("collapsed");n.classList.toggle("collapsed");var u=i;t.setAttribute("aria-expanded",u?"true":"false");var l=n.querySelector(".tool-use-body, .diff-body");l&&l.setAttribute("aria-hidden",u?"false":"true");var d=n.dataset.expandKind||"tool-card";if(co(n,d),i){var f=n.querySelector(".tool-use-result");$g(n,f,function(m){f&&(f.innerHTML='<pre class="tool-use-result-content">'+W(m)+"</pre>")},`<div class="tool-content-error" onclick="__tcToggle(null, this.closest('.tool-use-card,.inline-diff').querySelector('.tool-use-header,.diff-header'))">\u52A0\u8F7D\u5931\u8D25\uFF0C\u70B9\u51FB\u91CD\u8BD5</div>`)}}e&&(e.preventDefault(),e.stopPropagation())},window.__thinkingToggle=function(e){var t=e.classList.contains("collapsed");if(t){e.classList.remove("collapsed"),e.classList.add("expanded"),e.querySelector(".thinking-inline-preview").textContent=e.dataset.thinking||"";var n=e.querySelector(".thinking-inline-action");n&&(n.textContent="\u6536\u8D77")}else{e.classList.remove("expanded"),e.classList.add("collapsed");var i=(e.dataset.thinking||"").slice(0,57)+((e.dataset.thinking||"").length>60?"\u2026":"");e.querySelector(".thinking-inline-preview").textContent=i;var n=e.querySelector(".thinking-inline-action");n&&(n.textContent="\u5C55\u5F00")}co(e,"thinking")},window.__subagentReplyToggle=function(e,t){e&&(e.preventDefault(),e.stopPropagation());var n=t&&t.closest?t.closest(".subagent-reply"):null;if(n){var i=n.getAttribute("data-expanded")==="true";yb(n,"subagent-reply",!i),co(n,"subagent-reply")}},window.__subagentPanelToggle=function(e,t){e&&(e.preventDefault(),e.stopPropagation());var n=t&&t.closest?t.closest(".subagent-panel"):null;n&&n.setAttribute("data-expanded","true")};function U_(e){if(e)for(var t=e.querySelectorAll('.subagent-panel[data-follow-tail="true"]'),n=0;n<t.length;n++){var i=t[n].querySelector(".subagent-panel-body");i&&(i.scrollTop=i.scrollHeight)}}window.__openFilePreview=function(e){e&&Bg(e)},window.__inlineToolToggle=function(e){var t=e.classList.toggle("inline-tool-open"),n=e.querySelector(".inline-tool-expanded");n&&(n.style.display=t?"block":"none");var i=e.querySelector(".inline-tool-status");i&&(e.dataset.status==="error"?i.textContent="\u2717":e.dataset.status==="done"&&(i.textContent="\u2713")),t&&$g(e,n,function(u){e.dataset.result=u,n&&(n.innerHTML='<div class="inline-tool-result">'+q7(u,"")+"</div>")}),co(e,"inline-tool")},window.__terminalExpand=function(e){var t=e.closest(".inline-terminal");if(t){var n=t.querySelector(".term-body");if(n){var i=n.style.display==="none";n.style.display=i?"block":"none",t.dataset.expanded=i?"true":"false",e.setAttribute("aria-expanded",i?"true":"false"),n.setAttribute("aria-hidden",i?"false":"true");var u=e.querySelector(".term-toggle-icon");if(u&&(u.textContent=i?"\u25BC":"\u25B6"),co(t,"terminal"),i){var l=n.querySelector(".term-output");$g(t,l,function(d){if(l){for(var f=d.split(`
4386
4386
  `),m="",g=0;g<f.length;g++)!f[g]&&g===f.length-1||(m+='<div class="term-line">'+W(f[g])+"</div>");l.innerHTML=m}})}}}},window.__askSelect=function(e,t,n,i){var u=o.askUserSelections[e];if(u||(u={submitted:!1},o.askUserSelections[e]=u),!u.submitted){var l=u[t]||[];if(i){var d=l.indexOf(n);d===-1?l.push(n):l.splice(d,1)}else l=l[0]===n?[]:[n];u[t]=l,window.__askRender(e)}},window.__askRender=function(e){var t=document.querySelector('[data-tool-use-id="'+e+'"]');if(t){var n=o.askUserSelections[e]||{};t.querySelectorAll(".ask-user-option").forEach(function(d){var f=parseInt(d.dataset.questionIndex,10),m=parseInt(d.dataset.optionIndex,10),g=(n[f]||[]).indexOf(m)!==-1;d.classList.toggle("selected",g)});var i=t.querySelector(".ask-user-submit");if(i){var u=t.querySelectorAll(".ask-user-question-group"),l=!0;u.forEach(function(d,f){(!n[f]||n[f].length===0)&&(l=!1)}),i.disabled=!l||!!n.submitted,n.submitted&&(i.textContent="\u5DF2\u63D0\u4EA4...",i.classList.add("ask-user-submitted"))}}},window.__askSubmit=function(e){var t=o.askUserSelections[e];if(!(!t||t.submitted||!o.selectedId)){var n=document.querySelector('[data-tool-use-id="'+e+'"]');if(n){var i=n.querySelectorAll(".ask-user-question-group"),u=[],l=!0;if(i.forEach(function(f,m){var g=t[m]||[];if(g.length===0){l=!1;return}var h=[];g.forEach(function(w){var y=f.querySelector('[data-option-index="'+w+'"]');y&&h.push(y.dataset.optionLabel)}),u.push(h.join(", "))}),!!l){t.submitted=!0,window.__askRender(e);var d=u.join(`
4387
4387
  `);fetch("/api/sessions/"+o.selectedId+"/input",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({input:d+`
@@ -1,4 +1,4 @@
1
- export declare const EMBEDDED_WEB_ASSET_VERSION = "d1360a47c639";
1
+ export declare const EMBEDDED_WEB_ASSET_VERSION = "277051630635";
2
2
  export declare const EMBEDDED_WEB_ASSETS: {
3
3
  readonly scriptsJs: string;
4
4
  readonly stylesCss: string;