cloudx-proxy 0.6.0__tar.gz → 0.6.1__tar.gz

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 (26) hide show
  1. {cloudx_proxy-0.6.0 → cloudx_proxy-0.6.1}/.github/workflows/release.yml +2 -2
  2. {cloudx_proxy-0.6.0 → cloudx_proxy-0.6.1}/CHANGELOG.md +7 -0
  3. cloudx_proxy-0.6.1/CLAUDE.md +122 -0
  4. {cloudx_proxy-0.6.0 → cloudx_proxy-0.6.1}/CONTRIBUTING.md +3 -1
  5. {cloudx_proxy-0.6.0 → cloudx_proxy-0.6.1}/PKG-INFO +1 -1
  6. {cloudx_proxy-0.6.0 → cloudx_proxy-0.6.1}/cloudx_proxy/_version.py +2 -2
  7. {cloudx_proxy-0.6.0 → cloudx_proxy-0.6.1}/cloudx_proxy.egg-info/PKG-INFO +1 -1
  8. {cloudx_proxy-0.6.0 → cloudx_proxy-0.6.1}/cloudx_proxy.egg-info/SOURCES.txt +1 -1
  9. cloudx_proxy-0.6.0/package.json +0 -20
  10. {cloudx_proxy-0.6.0 → cloudx_proxy-0.6.1}/.clinerules +0 -0
  11. {cloudx_proxy-0.6.0 → cloudx_proxy-0.6.1}/.github/dependabot.yml +0 -0
  12. {cloudx_proxy-0.6.0 → cloudx_proxy-0.6.1}/.gitignore +0 -0
  13. {cloudx_proxy-0.6.0 → cloudx_proxy-0.6.1}/.releaserc +0 -0
  14. {cloudx_proxy-0.6.0 → cloudx_proxy-0.6.1}/LICENSE +0 -0
  15. {cloudx_proxy-0.6.0 → cloudx_proxy-0.6.1}/README.md +0 -0
  16. {cloudx_proxy-0.6.0 → cloudx_proxy-0.6.1}/cloudx_proxy/_1password.py +0 -0
  17. {cloudx_proxy-0.6.0 → cloudx_proxy-0.6.1}/cloudx_proxy/__init__.py +0 -0
  18. {cloudx_proxy-0.6.0 → cloudx_proxy-0.6.1}/cloudx_proxy/cli.py +0 -0
  19. {cloudx_proxy-0.6.0 → cloudx_proxy-0.6.1}/cloudx_proxy/core.py +0 -0
  20. {cloudx_proxy-0.6.0 → cloudx_proxy-0.6.1}/cloudx_proxy/setup.py +0 -0
  21. {cloudx_proxy-0.6.0 → cloudx_proxy-0.6.1}/cloudx_proxy.egg-info/dependency_links.txt +0 -0
  22. {cloudx_proxy-0.6.0 → cloudx_proxy-0.6.1}/cloudx_proxy.egg-info/entry_points.txt +0 -0
  23. {cloudx_proxy-0.6.0 → cloudx_proxy-0.6.1}/cloudx_proxy.egg-info/requires.txt +0 -0
  24. {cloudx_proxy-0.6.0 → cloudx_proxy-0.6.1}/cloudx_proxy.egg-info/top_level.txt +0 -0
  25. {cloudx_proxy-0.6.0 → cloudx_proxy-0.6.1}/pyproject.toml +0 -0
  26. {cloudx_proxy-0.6.0 → cloudx_proxy-0.6.1}/setup.cfg +0 -0
@@ -38,7 +38,7 @@ jobs:
38
38
  env:
39
39
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
40
40
  run: |
41
- version=$(npx semantic-release --dry-run --initial-version 2025.1.0 | grep -oP 'The next release version is \K[0-9]+\.[0-9]+\.[0-9]+' || echo "")
41
+ version=$(npx semantic-release --dry-run | grep -oP 'The next release version is \K[0-9]+\.[0-9]+\.[0-9]+' || echo "")
42
42
  if [ -n "$version" ]; then
43
43
  echo "new_release_version=$version" >> $GITHUB_OUTPUT
44
44
  echo "Version to be released: $version"
@@ -51,7 +51,7 @@ jobs:
51
51
  if: steps.semantic.outputs.new_release_version != ''
52
52
  env:
53
53
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
54
- run: npx semantic-release --initial-version 2025.1.0
54
+ run: npx semantic-release
55
55
 
56
56
  - name: Build package
57
57
  if: steps.semantic.outputs.new_release_version != ''
@@ -1,3 +1,10 @@
1
+ ## [0.6.1](https://github.com/easytocloud/cloudX-proxy/compare/v0.6.0...v0.6.1) (2025-08-22)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * clean up versioning configuration and remove unnecessary package.json ([62af606](https://github.com/easytocloud/cloudX-proxy/commit/62af606f57367948845fc16863e196207b92645d))
7
+
1
8
  # [0.6.0](https://github.com/easytocloud/cloudX-proxy/compare/v0.5.3...v0.6.0) (2025-08-22)
2
9
 
3
10
 
@@ -0,0 +1,122 @@
1
+ # CLAUDE.md
2
+
3
+ This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
+
5
+ ## Project Overview
6
+
7
+ cloudX-proxy is a Python CLI tool that enables SSH connections from VSCode to EC2 instances using AWS Systems Manager Session Manager. It eliminates the need for direct SSH access or public IP addresses by creating secure tunnels through AWS SSM.
8
+
9
+ ### Core Architecture
10
+
11
+ The application consists of three main modules:
12
+
13
+ - **`cli.py`**: Click-based command-line interface with three main commands:
14
+ - `setup`: Configure AWS profiles, SSH keys, and SSH configuration
15
+ - `connect`: Establish connection to EC2 instance via SSM (used internally by SSH)
16
+ - `list`: Display configured SSH hosts
17
+
18
+ - **`core.py`**: `CloudXProxy` class that handles the connection workflow:
19
+ 1. Check instance status via SSM
20
+ 2. Start instance if needed and wait for online status
21
+ 3. Push SSH public key via EC2 Instance Connect
22
+ 4. Start SSM session with SSH port forwarding
23
+
24
+ - **`setup.py`**: `CloudXSetup` class that implements a comprehensive setup wizard with three-tier SSH configuration
25
+
26
+ ### SSH Configuration Architecture
27
+
28
+ The setup creates a hierarchical three-tier SSH configuration:
29
+
30
+ 1. **Generic (cloudx-*)**: Common settings for all environments (user, keepalive, multiplexing)
31
+ 2. **Environment (cloudx-{env}-*)**: Environment-specific settings (authentication, ProxyCommand)
32
+ 3. **Host (cloudx-{env}-hostname)**: Instance-specific settings (HostName = instance ID)
33
+
34
+ This approach minimizes duplication and creates clear inheritance patterns.
35
+
36
+ ### Security Model
37
+
38
+ Primary security is enforced through AWS IAM/SSM rather than SSH:
39
+ - AWS Systems Manager controls access via IAM permissions
40
+ - EC2 Instance Connect temporarily injects SSH public keys per session
41
+ - No inbound SSH ports needed - all traffic flows through SSM tunneling
42
+ - CloudTrail logs all connection attempts and key pushes
43
+
44
+ ## Development Commands
45
+
46
+ ### Building and Installing
47
+
48
+ ```bash
49
+ # Install in development mode
50
+ pip install -e .
51
+
52
+ # Build package
53
+ python -m build
54
+
55
+ # Install from built package
56
+ pip install dist/cloudx_proxy-*.whl
57
+ ```
58
+
59
+ ### Running the Application
60
+
61
+ The application is designed to be run via `uvx` (from the `uv` package manager):
62
+
63
+ ```bash
64
+ # Setup (interactive)
65
+ uvx cloudx-proxy setup
66
+
67
+ # Setup (non-interactive with parameters)
68
+ uvx cloudx-proxy setup --profile myprofile --ssh-key mykey --instance i-123456789 --hostname myserver --yes
69
+
70
+ # Connect (typically called by SSH ProxyCommand, not directly)
71
+ uvx cloudx-proxy connect i-123456789 22 --profile myprofile
72
+
73
+ # List configured hosts
74
+ uvx cloudx-proxy list
75
+ ```
76
+
77
+ ### Release Process
78
+
79
+ The project uses semantic-release with GitHub Actions:
80
+
81
+ - **Automatic versioning**: Based on conventional commit messages
82
+ - **Release triggers**: Pushes to `main` branch
83
+ - **Artifacts**: GitHub releases, PyPI packages, CHANGELOG.md updates
84
+
85
+ Commit message format affects version bumps:
86
+ - `feat:` → minor version
87
+ - `fix:`, `docs:`, `style:`, etc. → patch version
88
+
89
+ ### 1Password Integration
90
+
91
+ When `--1password` is used:
92
+ - Checks for existing SSH keys in any 1Password vault
93
+ - Creates new keys in user-selected vault if needed
94
+ - Configures SSH to use 1Password SSH agent (`IdentityAgent ~/.1password/agent.sock`)
95
+ - Uses public key file to limit SSH agent key search (`IdentitiesOnly yes`)
96
+
97
+ ### AWS Environment Support
98
+
99
+ The `--aws-env` parameter enables AWS profile organization:
100
+ - Looks for credentials in `~/.aws/aws-envs/{env}/` instead of `~/.aws/`
101
+ - Sets `AWS_CONFIG_FILE` and `AWS_SHARED_CREDENTIALS_FILE` environment variables
102
+ - Supports multiple isolated AWS environments
103
+
104
+ ## Key Configuration Files
105
+
106
+ - **`pyproject.toml`**: Python packaging configuration with semantic versioning via setuptools_scm
107
+ - **`.releaserc`**: Semantic-release configuration with conventional commits and changelog generation
108
+ - **`.github/workflows/release.yml`**: CI/CD pipeline for automated releases to PyPI
109
+ - **`.clinerules`**: Detailed project documentation including architecture and operating modes
110
+
111
+ ## Code Quality Notes
112
+
113
+ - Uses modern Python features (pathlib, type hints, f-strings)
114
+ - Supports Python 3.9+ (recently updated from 3.8+)
115
+ - No test suite currently exists
116
+ - Uses Click for CLI with proper help text and option validation
117
+ - Implements comprehensive error handling with user-friendly messages
118
+ - Cross-platform support (Windows, macOS, Linux) with platform-specific adjustments
119
+
120
+ ## Known Issues
121
+
122
+ - No automated testing framework configured
@@ -18,9 +18,11 @@ The package is automatically published to PyPI via GitHub Actions when a new rel
18
18
 
19
19
  ## Versioning
20
20
 
21
- The project uses semantic-release for versioning, starting at version 2025.1.0. Version numbers are automatically determined based on commit messages following the conventional commits specification.
21
+ The project uses semantic-release for versioning.
22
+ Version numbers are automatically determined based on commit messages following the conventional commits specification.
22
23
 
23
24
  The GitHub Actions workflow will:
25
+
24
26
  1. Determine next version based on commits
25
27
  2. Update CHANGELOG.md
26
28
  3. Create GitHub release
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cloudx-proxy
3
- Version: 0.6.0
3
+ Version: 0.6.1
4
4
  Summary: SSH proxy command to connect VSCode with Cloud9/CloudX instance using AWS Systems Manager
5
5
  Author-email: easytocloud <info@easytocloud.com>
6
6
  License: MIT License
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '0.6.0'
32
- __version_tuple__ = version_tuple = (0, 6, 0)
31
+ __version__ = version = '0.6.1'
32
+ __version_tuple__ = version_tuple = (0, 6, 1)
33
33
 
34
34
  __commit_id__ = commit_id = None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cloudx-proxy
3
- Version: 0.6.0
3
+ Version: 0.6.1
4
4
  Summary: SSH proxy command to connect VSCode with Cloud9/CloudX instance using AWS Systems Manager
5
5
  Author-email: easytocloud <info@easytocloud.com>
6
6
  License: MIT License
@@ -2,10 +2,10 @@
2
2
  .gitignore
3
3
  .releaserc
4
4
  CHANGELOG.md
5
+ CLAUDE.md
5
6
  CONTRIBUTING.md
6
7
  LICENSE
7
8
  README.md
8
- package.json
9
9
  pyproject.toml
10
10
  .github/dependabot.yml
11
11
  .github/workflows/release.yml
@@ -1,20 +0,0 @@
1
- {
2
- "name": "cloudx-client",
3
- "version": "1.0.0",
4
- "description": "Client to connect VSCode with Cloud9/CloudX instance over ssh using Session Manager plugin",
5
- "main": "index.js",
6
- "scripts": {
7
- "test": "echo \"Error: no test specified\" && exit 1"
8
- },
9
- "repository": {
10
- "type": "git",
11
- "url": "git+https://github.com/easytocloud/cloudX-client.git"
12
- },
13
- "keywords": [],
14
- "author": "",
15
- "license": "ISC",
16
- "bugs": {
17
- "url": "https://github.com/easytocloud/cloudX-client/issues"
18
- },
19
- "homepage": "https://github.com/easytocloud/cloudX-client#readme"
20
- }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes