LICENSE
MANIFEST.in
README.md
pyproject.toml
scripts/check_frontend_dist.py
sshler/__init__.py
sshler/auth.py
sshler/cli.py
sshler/config.py
sshler/config_cache.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.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/auth.py
sshler/api/batch.py
sshler/api/boxes.py
sshler/api/config.py
sshler/api/dependencies.py
sshler/api/files.py
sshler/api/git.py
sshler/api/grep.py
sshler/api/helpers.py
sshler/api/models.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/base.js
sshler/static/command-palette.js
sshler/static/favicon-terminal-local.svg
sshler/static/favicon-terminal.svg
sshler/static/favicon.png
sshler/static/favicon.svg
sshler/static/file-browser.js
sshler/static/file-edit.js
sshler/static/file-view.js
sshler/static/logo.png
sshler/static/manifest.json
sshler/static/multi-session.js
sshler/static/style.css
sshler/static/sw.js
sshler/static/term.js
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-CvxXq3h-.js
sshler/static/dist/assets/Alert-BDFCZhPm.js
sshler/static/dist/assets/BoxesView-Cw5NiFP6.css
sshler/static/dist/assets/BoxesView-YmUOgxNf.js
sshler/static/dist/assets/CommanderView-Cjpr6BqR.js
sshler/static/dist/assets/CommanderView-DWT0Nvkn.css
sshler/static/dist/assets/DiffViewer-BvLOEmCp.js
sshler/static/dist/assets/DiffViewer-CI36ts_S.css
sshler/static/dist/assets/DirectoryPickerModal-CsXnRDbA.js
sshler/static/dist/assets/DirectoryPickerModal-DVBGvuef.css
sshler/static/dist/assets/FilesView-5H24u5ck.js
sshler/static/dist/assets/FilesView-NWlCu62i.css
sshler/static/dist/assets/GitBadge-DT9i-DZA.js
sshler/static/dist/assets/GitBadge-sLcMA5A6.css
sshler/static/dist/assets/Grid-CMcNpSPK.js
sshler/static/dist/assets/InputNumber-CPOxHkQI.js
sshler/static/dist/assets/LoginView-BLrnakeI.css
sshler/static/dist/assets/LoginView-BZ7NNJxM.js
sshler/static/dist/assets/MultiTerminalView-DGzT4S3v.js
sshler/static/dist/assets/MultiTerminalView-DPOIcw8c.css
sshler/static/dist/assets/NotFoundView-C4QZaEX9.js
sshler/static/dist/assets/NotFoundView-DYaoqkDb.css
sshler/static/dist/assets/OverviewView-BRztepWu.css
sshler/static/dist/assets/OverviewView-qwsvbuCe.js
sshler/static/dist/assets/PhCheck.vue-8y3P0q3Q.js
sshler/static/dist/assets/PhCircle.vue-C6HnmZbP.js
sshler/static/dist/assets/PhList.vue-DFv24gRM.js
sshler/static/dist/assets/PhPlus.vue-DXHq1eE2.js
sshler/static/dist/assets/PhPushPinSimple.vue-CXQZy34f.js
sshler/static/dist/assets/PhTrash.vue-BH8AyGUc.js
sshler/static/dist/assets/SettingsView-Bm0gqb74.css
sshler/static/dist/assets/SettingsView-G-L3XXjN.js
sshler/static/dist/assets/Spin-CA3aTL98.js
sshler/static/dist/assets/Switch-DI1WpYig.js
sshler/static/dist/assets/TerminalView-DTNo_1HP.css
sshler/static/dist/assets/TerminalView-Dj6ipmUG.js
sshler/static/dist/assets/arc-wgrnT_Lz.js
sshler/static/dist/assets/architectureDiagram-3BPJPVTR-CgQxDJFu.js
sshler/static/dist/assets/blockDiagram-GPEHLZMM-djk3NHVB.js
sshler/static/dist/assets/c4Diagram-AAUBKEIU-NmBeP25I.js
sshler/static/dist/assets/channel-RWyGuX_V.js
sshler/static/dist/assets/chunk-2J33WTMH-Bf4iWiLl.js
sshler/static/dist/assets/chunk-4BX2VUAB-B3tlrJQT.js
sshler/static/dist/assets/chunk-55IACEB6-JL2Ds4ib.js
sshler/static/dist/assets/chunk-727SXJPM-DQBbvuNs.js
sshler/static/dist/assets/chunk-AQP2D5EJ-BkRNtVDn.js
sshler/static/dist/assets/chunk-FMBD7UC4-BCJCvjnz.js
sshler/static/dist/assets/chunk-ND2GUHAM-QOCtcPqV.js
sshler/static/dist/assets/chunk-QZHKN3VN-BB1-f9KC.js
sshler/static/dist/assets/classDiagram-4FO5ZUOK-IA2RtGjD.js
sshler/static/dist/assets/classDiagram-v2-Q7XG4LA2-IA2RtGjD.js
sshler/static/dist/assets/cose-bilkent-S5V4N54A-cHQi4PCf.js
sshler/static/dist/assets/cytoscape.esm-ChuFH5G7.js
sshler/static/dist/assets/dagre-BM42HDAG-_NfeL9oZ.js
sshler/static/dist/assets/defaultLocale-DX6XiGOO.js
sshler/static/dist/assets/diagram-2AECGRRQ-BtLpo-p8.js
sshler/static/dist/assets/diagram-5GNKFQAL-COI3pbJ8.js
sshler/static/dist/assets/diagram-KO2AKTUF-Bz1s1AaP.js
sshler/static/dist/assets/diagram-LMA3HP47-C_u1Dzk-.js
sshler/static/dist/assets/diagram-OG6HWLK6-DYUgseB3.js
sshler/static/dist/assets/erDiagram-TEJ5UH35-CKNnwHYF.js
sshler/static/dist/assets/favorites-C_F-x2jx.js
sshler/static/dist/assets/flowDiagram-I6XJVG4X-Bo4YFr92.js
sshler/static/dist/assets/ganttDiagram-6RSMTGT7-CT8nvXuo.js
sshler/static/dist/assets/gitGraphDiagram-PVQCEYII-oPU2bZqT.js
sshler/static/dist/assets/graph-D8XSyAG0.js
sshler/static/dist/assets/index-D2GNDaxk.js
sshler/static/dist/assets/index-D4jakuJT.css
sshler/static/dist/assets/infoDiagram-5YYISTIA-CbEcRN0S.js
sshler/static/dist/assets/init-Gi6I4Gst.js
sshler/static/dist/assets/ishikawaDiagram-YF4QCWOH-oe2N-tUW.js
sshler/static/dist/assets/journeyDiagram-JHISSGLW-Csurowws.js
sshler/static/dist/assets/kanban-definition-UN3LZRKU-fmcTrtCF.js
sshler/static/dist/assets/katex-BbnesVCl.js
sshler/static/dist/assets/layout-C9jEum91.js
sshler/static/dist/assets/linear-mD1wgrXF.js
sshler/static/dist/assets/mermaid.core-iXqXxKm_.js
sshler/static/dist/assets/mindmap-definition-RKZ34NQL-B6bXIEJ4.js
sshler/static/dist/assets/ordinal-Cboi1Yqb.js
sshler/static/dist/assets/pieDiagram-4H26LBE5-Yr7HC41o.js
sshler/static/dist/assets/quadrantDiagram-W4KKPZXB-Cb19Vxop.js
sshler/static/dist/assets/requirementDiagram-4Y6WPE33-BRCo3480.js
sshler/static/dist/assets/sankeyDiagram-5OEKKPKP-3_AyutS5.js
sshler/static/dist/assets/sequenceDiagram-3UESZ5HK-BTfvg8sX.js
sshler/static/dist/assets/stateDiagram-AJRCARHV-CkaCyQcz.js
sshler/static/dist/assets/stateDiagram-v2-BHNVJYJU-D_E0vOt8.js
sshler/static/dist/assets/timeline-definition-PNZ67QCA-C_02tyid.js
sshler/static/dist/assets/toNumber-CwnKWaER.js
sshler/static/dist/assets/vennDiagram-CIIHVFJN-Bu_u1exW.js
sshler/static/dist/assets/wardley-L42UT6IY-CU59yY_x.js
sshler/static/dist/assets/wardleyDiagram-YWT4CUSO-CnylUC3y.js
sshler/static/dist/assets/xychartDiagram-2RQKCTM6-DvBK0kvv.js
sshler/static/dist/fonts/MonaspaceNeon-Bold.woff2
sshler/static/dist/fonts/MonaspaceNeon-Regular.woff2
sshler/static/dist/fonts/MonaspaceNeon-Variable.woff2
sshler/static/vendor/xterm/xterm-addon-fit.js
sshler/static/vendor/xterm/xterm-addon-search.js
sshler/static/vendor/xterm/xterm.css
sshler/static/vendor/xterm/xterm.js
tests/test_api_v1.py
tests/test_archive.py
tests/test_basic.py
tests/test_batch_ops.py
tests/test_command_injection.py
tests/test_config.py
tests/test_database_indexes.py
tests/test_dev_workflow.py
tests/test_grep.py
tests/test_handshake_status.py
tests/test_httpx_ws.py
tests/test_path_validation.py
tests/test_rate_limit.py
tests/test_recovery.py
tests/test_search.py
tests/test_session_auth.py
tests/test_snippets.py
tests/test_ssh.py
tests/test_stats_stream.py
tests/test_tunnels.py
tests/test_websocket.py