LICENSE
MANIFEST.in
README.md
pyproject.toml
scripts/check_frontend_dist.py
sshler/__init__.py
sshler/artifacts.py
sshler/auth.py
sshler/claude_sessions.py
sshler/cli.py
sshler/config.py
sshler/config_cache.py
sshler/pdf.py
sshler/rate_limit.py
sshler/session.py
sshler/settings.py
sshler/snapshot.py
sshler/spa.py
sshler/ssh.py
sshler/ssh_config.py
sshler/ssh_pool.py
sshler/state.py
sshler/tmux.py
sshler/validation.py
sshler/webapp.py
sshler/win_terminal_registry.py
sshler/winpty_proc.py
sshler.egg-info/PKG-INFO
sshler.egg-info/SOURCES.txt
sshler.egg-info/dependency_links.txt
sshler.egg-info/entry_points.txt
sshler.egg-info/requires.txt
sshler.egg-info/top_level.txt
sshler/api/__init__.py
sshler/api/archive.py
sshler/api/artifacts.py
sshler/api/auth.py
sshler/api/batch.py
sshler/api/boxes.py
sshler/api/claude_sessions.py
sshler/api/config.py
sshler/api/dependencies.py
sshler/api/diff.py
sshler/api/excel.py
sshler/api/files.py
sshler/api/git.py
sshler/api/grep.py
sshler/api/helpers.py
sshler/api/models.py
sshler/api/pdf.py
sshler/api/ping.py
sshler/api/progress.py
sshler/api/rate_limiting.py
sshler/api/recovery.py
sshler/api/search.py
sshler/api/sessions.py
sshler/api/snippets.py
sshler/api/stats_stream.py
sshler/api/terminal.py
sshler/api/transfer.py
sshler/api/tunnels.py
sshler/scripts/install-sshler-task.ps1
sshler/scripts/remove-sshler-task.ps1
sshler/scripts/run-sshler.ps1
sshler/static/dist/favicon.png
sshler/static/dist/icon-192.png
sshler/static/dist/icon-512-maskable.png
sshler/static/dist/icon-512.png
sshler/static/dist/index.html
sshler/static/dist/logo.png
sshler/static/dist/manifest.webmanifest
sshler/static/dist/assets/Add-7ishajWp.js
sshler/static/dist/assets/Alert-BEFpRXXN.js
sshler/static/dist/assets/ArtifactsView-BTz2yI5O.js
sshler/static/dist/assets/ArtifactsView-DMnfzE9w.css
sshler/static/dist/assets/BoxesView-CTFAXFZS.js
sshler/static/dist/assets/BoxesView-Cw5NiFP6.css
sshler/static/dist/assets/ClaudeSessionsView-BId4dxhT.js
sshler/static/dist/assets/ClaudeSessionsView-BcS0-CLq.css
sshler/static/dist/assets/CommanderView-Bvzg3bq2.css
sshler/static/dist/assets/CommanderView-DDAlB9za.js
sshler/static/dist/assets/DiffView-9QDQycKp.css
sshler/static/dist/assets/DiffView-Cp_wf2aN.js
sshler/static/dist/assets/DiffViewer-DcBoOSHq.js
sshler/static/dist/assets/DiffViewer-Ds8qyy47.css
sshler/static/dist/assets/DirectoryPickerModal-B1GuKICB.css
sshler/static/dist/assets/DirectoryPickerModal-CFm5mhtT.js
sshler/static/dist/assets/FileEditorModal-D7TNr5fU.css
sshler/static/dist/assets/FileEditorModal-DlTADbFx.js
sshler/static/dist/assets/FilesView-B9vdgK9X.css
sshler/static/dist/assets/FilesView-DIILqN2k.js
sshler/static/dist/assets/GitBadge-YKCC5hhN.js
sshler/static/dist/assets/GitBadge-sLcMA5A6.css
sshler/static/dist/assets/Grid-Dc94lNab.js
sshler/static/dist/assets/InputNumber-Cr0522nD.js
sshler/static/dist/assets/LoginView-B8rFl-TN.js
sshler/static/dist/assets/LoginView-BLrnakeI.css
sshler/static/dist/assets/MultiTerminalView-Co_RmbGo.css
sshler/static/dist/assets/MultiTerminalView-DdmBQ4zi.js
sshler/static/dist/assets/NotFoundView-CvkmUlRN.js
sshler/static/dist/assets/NotFoundView-DYaoqkDb.css
sshler/static/dist/assets/OverviewView-CgWwBOTj.css
sshler/static/dist/assets/OverviewView-G23xwjPD.js
sshler/static/dist/assets/PhArrowsClockwise.vue-Bnf73duq.js
sshler/static/dist/assets/PhArrowsLeftRight.vue-Cc0p6Tcb.js
sshler/static/dist/assets/PhArrowsOut.vue-CajEeaAm.js
sshler/static/dist/assets/PhCheck.vue-9N5IJbuq.js
sshler/static/dist/assets/PhCircle.vue-B2o4g103.js
sshler/static/dist/assets/PhClockCounterClockwise.vue-D8CL-v9G.js
sshler/static/dist/assets/PhCopy.vue-f7Nbq0qE.js
sshler/static/dist/assets/PhFloppyDisk.vue-BZoj1mYq.js
sshler/static/dist/assets/PhFolderOpen.vue-CZi6RSIx.js
sshler/static/dist/assets/PhGitBranch.vue-BQ7VT_8f.js
sshler/static/dist/assets/PhList.vue-BvILwdE0.js
sshler/static/dist/assets/PhPencilSimple.vue-BO-v_vH4.js
sshler/static/dist/assets/PhPlay.vue-CQ9P9mkc.js
sshler/static/dist/assets/PhPushPinSimple.vue-DW95sRoY.js
sshler/static/dist/assets/PhQuestion.vue-n7SsA3hJ.js
sshler/static/dist/assets/PhTrash.vue-BmtI9lan.js
sshler/static/dist/assets/Popconfirm-BKhkqfQl.js
sshler/static/dist/assets/ProgressView-Bp8d9Q2f.js
sshler/static/dist/assets/ProgressView-D7O3-bB2.css
sshler/static/dist/assets/RadioGroup-C6nlDGIb.js
sshler/static/dist/assets/SettingsView-CUUQmyKw.js
sshler/static/dist/assets/SettingsView-yHE_fgSm.css
sshler/static/dist/assets/Spin-CoAzscbC.js
sshler/static/dist/assets/Switch-DAftDCaP.js
sshler/static/dist/assets/TerminalView-BqAcovL_.css
sshler/static/dist/assets/TerminalView-DLNGYZvp.js
sshler/static/dist/assets/arc-CErj3Lnn.js
sshler/static/dist/assets/architectureDiagram-3BPJPVTR-D_CeCdAb.js
sshler/static/dist/assets/blockDiagram-GPEHLZMM-PH39VmUv.js
sshler/static/dist/assets/c4Diagram-AAUBKEIU-DCd1Tju9.js
sshler/static/dist/assets/channel-CcZ127p3.js
sshler/static/dist/assets/chunk-2J33WTMH-Bm3zYdqV.js
sshler/static/dist/assets/chunk-4BX2VUAB-Ca2Yeljp.js
sshler/static/dist/assets/chunk-55IACEB6-BRPEdXmJ.js
sshler/static/dist/assets/chunk-727SXJPM-CfvJ_fzS.js
sshler/static/dist/assets/chunk-AQP2D5EJ-D8sSsoIv.js
sshler/static/dist/assets/chunk-FMBD7UC4-CRdWUuCB.js
sshler/static/dist/assets/chunk-ND2GUHAM-BQm4Wh7T.js
sshler/static/dist/assets/chunk-QZHKN3VN-C2XqKVRU.js
sshler/static/dist/assets/classDiagram-4FO5ZUOK-BQ9y1o3Z.js
sshler/static/dist/assets/classDiagram-v2-Q7XG4LA2-BQ9y1o3Z.js
sshler/static/dist/assets/composables-CHm4xsQx.js
sshler/static/dist/assets/cose-bilkent-S5V4N54A-ChoetsYb.js
sshler/static/dist/assets/cytoscape.esm-ChuFH5G7.js
sshler/static/dist/assets/dagre-BM42HDAG-BQ8GuBjY.js
sshler/static/dist/assets/defaultLocale-DX6XiGOO.js
sshler/static/dist/assets/diagram-2AECGRRQ-BjOrJsI1.js
sshler/static/dist/assets/diagram-5GNKFQAL-BvYMfHgT.js
sshler/static/dist/assets/diagram-KO2AKTUF-BZzxHlDH.js
sshler/static/dist/assets/diagram-LMA3HP47-jWRT2MAp.js
sshler/static/dist/assets/diagram-OG6HWLK6-B__bDIjw.js
sshler/static/dist/assets/erDiagram-TEJ5UH35-BC-njhki.js
sshler/static/dist/assets/favorites--3uuqVsS.js
sshler/static/dist/assets/flowDiagram-I6XJVG4X-6um4yyFN.js
sshler/static/dist/assets/ganttDiagram-6RSMTGT7-D5uBkAu_.js
sshler/static/dist/assets/gitGraphDiagram-PVQCEYII-CqzevUa1.js
sshler/static/dist/assets/graph-C0t5zfn0.js
sshler/static/dist/assets/index-DgzHEFf2.css
sshler/static/dist/assets/index-ns_CMe7O.js
sshler/static/dist/assets/infoDiagram-5YYISTIA-CQzowT10.js
sshler/static/dist/assets/init-Gi6I4Gst.js
sshler/static/dist/assets/ishikawaDiagram-YF4QCWOH-iKU8fM5N.js
sshler/static/dist/assets/journeyDiagram-JHISSGLW-C6GTMv4s.js
sshler/static/dist/assets/kanban-definition-UN3LZRKU-JVaFOXRH.js
sshler/static/dist/assets/katex-BbnesVCl.js
sshler/static/dist/assets/layout-Ps6ZhZBc.js
sshler/static/dist/assets/linear-Ditq_Nbq.js
sshler/static/dist/assets/mermaid.core-D6mU6Y_x.js
sshler/static/dist/assets/mindmap-definition-RKZ34NQL-Bp-2p-Zq.js
sshler/static/dist/assets/ordinal-Cboi1Yqb.js
sshler/static/dist/assets/pieDiagram-4H26LBE5-CtTy4ufr.js
sshler/static/dist/assets/quadrantDiagram-W4KKPZXB-C9ptMwbQ.js
sshler/static/dist/assets/requirementDiagram-4Y6WPE33-BYfEw_Jo.js
sshler/static/dist/assets/sankeyDiagram-5OEKKPKP-B5mhtWia.js
sshler/static/dist/assets/sequenceDiagram-3UESZ5HK-Bz8B9Vca.js
sshler/static/dist/assets/sessionName-CDrCe_qO.js
sshler/static/dist/assets/stateDiagram-AJRCARHV-DsYXZtCD.js
sshler/static/dist/assets/stateDiagram-v2-BHNVJYJU-DegVwMrL.js
sshler/static/dist/assets/timeline-definition-PNZ67QCA-CjcCBS1J.js
sshler/static/dist/assets/vennDiagram-CIIHVFJN-Bcpt4jlg.js
sshler/static/dist/assets/wardley-L42UT6IY-BgY4nRdk.js
sshler/static/dist/assets/wardleyDiagram-YWT4CUSO-DX8Rgphj.js
sshler/static/dist/assets/xychartDiagram-2RQKCTM6-pAiLUkHO.js
sshler/static/dist/fonts/MonaspaceNeon-Bold.woff2
sshler/static/dist/fonts/MonaspaceNeon-Regular.woff2
sshler/static/dist/fonts/MonaspaceNeon-Variable.woff2
tests/test_api_artifacts.py
tests/test_api_diff.py
tests/test_api_progress.py
tests/test_api_v1.py
tests/test_archive.py
tests/test_artifacts.py
tests/test_basic.py
tests/test_batch_ops.py
tests/test_claude_sessions.py
tests/test_cli_artifacts.py
tests/test_cli_progress.py
tests/test_client_address.py
tests/test_command_injection.py
tests/test_config.py
tests/test_database_indexes.py
tests/test_dev_workflow.py
tests/test_fake_tmux.py
tests/test_files_folder_zip_remote.py
tests/test_files_upload_local.py
tests/test_force_kill.py
tests/test_grep.py
tests/test_handshake_status.py
tests/test_httpx_ws.py
tests/test_origin_csrf.py
tests/test_path_validation.py
tests/test_platform_support.py
tests/test_progress_websocket.py
tests/test_rate_limit.py
tests/test_rate_limit_middleware.py
tests/test_recovery.py
tests/test_remote_git_info_quoting.py
tests/test_remote_tilde_routes.py
tests/test_search.py
tests/test_serve_token_cache.py
tests/test_session_auth.py
tests/test_session_name_parity.py
tests/test_snapshot_loop_settings.py
tests/test_snippets.py
tests/test_ssh.py
tests/test_ssh_connection_leaks.py
tests/test_ssh_pool_age.py
tests/test_stats_stream.py
tests/test_terminal_teardown.py
tests/test_tmux_subprocess.py
tests/test_tunnels.py
tests/test_websocket.py
tests/test_win_terminal_registry.py
tests/test_windows_terminal.py
tests/test_ws_term_auth.py