PWSH_SCRIPT

Constant PWSH_SCRIPT 

Source
const PWSH_SCRIPT: &str = "# AgentMux shell integration for PowerShell (pwsh / powershell.exe)\n# Deployed to: ~/.agentmux/shell/pwsh/wavepwsh.ps1\n# Loaded via: pwsh -ExecutionPolicy Bypass -NoExit -File <this-file>\n\n# wsh has been retired \u{2014} AGENTMUX is now a plain \"1\" sentinel.\n# See specs/SPEC_RETIRE_WSH_2026_04_12.md.\n\n# \u{2500}\u{2500}\u{2500} Shell Integration \u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\n\n# PS5 (Windows PowerShell 5.1) does not support `e as ESC \u{2014} use [char]0x1B instead\nif ($PSVersionTable.PSVersion.Major -ge 7) { $ESC = \"`e\" } else { $ESC = [char]0x1B }\n\nfunction Global:_agentmux_si_blocked {\n    return ($env:TMUX -or $env:STY -or $env:TERM -like \"tmux*\" -or $env:TERM -like \"screen*\")\n}\n\nfunction Global:_agentmux_si_osc7 {\n    if (_agentmux_si_blocked) { return }\n    $hostname = if ($env:COMPUTERNAME) { $env:COMPUTERNAME } else { $env:HOSTNAME }\n    $encoded = [System.Uri]::EscapeDataString($PWD.Path)\n    Write-Host -NoNewline \"${ESC}]7;file://$hostname/$encoded`a\"\n}\n\nfunction Global:_agentmux_si_json_escape {\n    param([string]$s)\n    $s = $s.Replace(\'\\\', \'\\\\\')\n    $s = $s.Replace(\'\"\', \'\\\"\')\n    return $s\n}\n\n$Global:_AGENTMUX_SI_LAST_AGENT = \"\"\n\n# Send AGENTMUX_AGENT_ID via OSC 16162;E on every prompt (only when changed)\nfunction Global:_agentmux_si_agent_env {\n    if (_agentmux_si_blocked) { return }\n    $current_agent = \"\"\n    if ($env:AGENTMUX_AGENT_ID) {\n        $current_agent = \"AGENTMUX_AGENT_ID:$($env:AGENTMUX_AGENT_ID):COLOR:$($env:AGENTMUX_AGENT_COLOR)\"\n    }\n    if ($current_agent -ne $Global:_AGENTMUX_SI_LAST_AGENT) {\n        $Global:_AGENTMUX_SI_LAST_AGENT = $current_agent\n        if ($env:AGENTMUX_AGENT_ID) {\n            $escaped = _agentmux_si_json_escape $env:AGENTMUX_AGENT_ID\n            $payload = \"{`\"AGENTMUX_AGENT_ID`\":`\"$escaped`\"\"\n            if ($env:AGENTMUX_AGENT_COLOR) {\n                $colorEscaped = _agentmux_si_json_escape $env:AGENTMUX_AGENT_COLOR\n                $payload += \",`\"AGENTMUX_AGENT_COLOR`\":`\"$colorEscaped`\"\"\n            }\n            $payload += \"}\"\n            Write-Host -NoNewline \"${ESC}]16162;E;${payload}`a\"\n        } else {\n            Write-Host -NoNewline \"${ESC}]16162;E;{}`a\"\n        }\n    }\n}\n\nfunction Global:_agentmux_si_prompt {\n    _agentmux_si_osc7\n    _agentmux_si_agent_env\n}\n\n# \u{2500}\u{2500}\u{2500} muxlog helper \u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\nfunction Global:muxlog {\n    param([string]$Target = \"host\", [string]$Action = \"tail\")\n    if (-not $env:AGENTMUX_LOG_DIR) {\n        Write-Error \"AGENTMUX_LOG_DIR not set - run inside an AgentMux terminal\"\n        return\n    }\n    $ptr = Join-Path $env:AGENTMUX_LOG_DIR \"current-$Target-v$($env:AGENTMUX_VERSION).path\"\n    if (-not (Test-Path $ptr)) {\n        Write-Error \"Unknown log target \'$Target\'. Check $env:AGENTMUX_LOG_DIR for current-*.path files.\"\n        return\n    }\n    $logfile = Join-Path $env:AGENTMUX_LOG_DIR (Get-Content $ptr)\n    switch ($Action) {\n        \"tail\" { Get-Content $logfile -Wait -Tail 50 }\n        \"cat\"  { Get-Content $logfile }\n        default { Select-String $Action $logfile }\n    }\n}\n\n# Hook into the prompt function\nif (Test-Path Function:\\prompt) {\n    $global:_agentmux_original_prompt = $function:prompt\n    function Global:prompt {\n        _agentmux_si_prompt\n        & $global:_agentmux_original_prompt\n    }\n} else {\n    function Global:prompt {\n        _agentmux_si_prompt\n        \"PS $($executionContext.SessionState.Path.CurrentLocation)$(\'>\' * ($nestedPromptLevel + 1)) \"\n    }\n}\n";