@robinmordasiewicz/f5xc-xcsh 2.0.4-2601050253 → 2.0.8-2601051356

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 (3) hide show
  1. package/README.md +34 -114
  2. package/dist/index.js +3 -3
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -35,15 +35,15 @@ xcsh <domain> <operation> <resource-type> [resource-name] [flags]
35
35
 
36
36
  Common domains include:
37
37
 
38
- | Domain | Alias | Purpose |
39
- |--------|-------|---------|
40
- | `load_balancer` | `lb` | Load balancing and origin pools |
41
- | `infrastructure` | `infra` | Core infrastructure resources |
42
- | `security` | `sec` | WAF, DDoS, bot defense |
43
- | `networking` | `net` | Network routing and configuration |
44
- | `observability` | `obs`, `o11y` | Monitoring and observability |
45
- | `api_security` | `apisec` | API protection and security |
46
- | `identity` | `iam` | Identity and access management |
38
+ | Domain | Purpose |
39
+ |--------|---------|
40
+ | `virtual` | HTTP, TCP, UDP load balancers and origin pools |
41
+ | `cloud_infrastructure` | AWS, Azure, GCP cloud sites and credentials |
42
+ | `waf` | Web application firewalls and security policies |
43
+ | `dns` | DNS zones and load balancing |
44
+ | `sites` | Site management and virtual sites |
45
+ | `tenant_and_identity` | User profiles and sessions |
46
+ | `ai_services` | AI assistant for natural language queries |
47
47
 
48
48
  ### Examples
49
49
 
@@ -51,50 +51,41 @@ Common domains include:
51
51
 
52
52
  ```bash
53
53
  # List HTTP load balancers in default namespace
54
- xcsh load_balancer list http_loadbalancer
55
-
56
- # Using alias for shorter command
57
- xcsh lb list http_loadbalancer
54
+ xcsh virtual list http_loadbalancer
58
55
 
59
56
  # List in specific namespace
60
- xcsh lb list http_loadbalancer -n production
57
+ xcsh virtual list http_loadbalancer -ns production
61
58
  ```
62
59
 
63
60
  #### Get a Specific Resource
64
61
 
65
62
  ```bash
66
63
  # Get a load balancer configuration
67
- xcsh load_balancer get http_loadbalancer example-lb
64
+ xcsh virtual get http_loadbalancer example-lb
68
65
 
69
- # Get from specific namespace
70
- xcsh lb get http_loadbalancer example-lb -n production
66
+ # Get from specific namespace as YAML
67
+ xcsh virtual get http_loadbalancer example-lb -ns production -o yaml
71
68
  ```
72
69
 
73
70
  #### Create a Resource
74
71
 
75
72
  ```bash
76
73
  # Create from YAML file
77
- xcsh load_balancer create http_loadbalancer -i lb-config.yaml
78
-
79
- # Create from inline JSON
80
- xcsh lb create origin_pool --json-data '{"metadata":{"name":"example-pool"},...}'
74
+ xcsh virtual create http_loadbalancer -f lb-config.yaml
81
75
  ```
82
76
 
83
77
  #### Delete a Resource
84
78
 
85
79
  ```bash
86
- # Delete with confirmation
87
- xcsh load_balancer delete http_loadbalancer example-lb
88
-
89
- # Delete without confirmation (for scripts)
90
- xcsh lb delete http_loadbalancer example-lb --yes
80
+ # Delete a resource
81
+ xcsh virtual delete http_loadbalancer example-lb -ns production
91
82
  ```
92
83
 
93
84
  #### Apply (Create or Update)
94
85
 
95
86
  ```bash
96
87
  # Apply from YAML (creates if not exists, updates if does)
97
- xcsh load_balancer apply http_loadbalancer -i lb-config.yaml
88
+ xcsh virtual apply http_loadbalancer -f lb-config.yaml
98
89
  ```
99
90
 
100
91
  #### Get Help
@@ -104,102 +95,31 @@ xcsh load_balancer apply http_loadbalancer -i lb-config.yaml
104
95
  xcsh --help
105
96
 
106
97
  # Show domain-specific operations
107
- xcsh load_balancer --help
108
-
109
- # Show operation-specific help
110
- xcsh load_balancer list --help
111
-
112
- # Show resource-type help
113
- xcsh load_balancer list http_loadbalancer --help
114
- ```
115
-
116
- ## Development & Domain System
117
-
118
- ### Automated Domain Synchronization
119
-
120
- xcsh uses an **automated CI/CD-driven system** to keep domain definitions synchronized with upstream F5 Distributed Cloud API changes. This ensures the CLI always reflects the latest API structure without manual intervention.
121
-
122
- #### How It Works
123
-
124
- 1. **Daily Checks**: GitHub Actions workflow (`sync-upstream-specs.yml`) checks for new upstream spec versions daily at 6 AM UTC
125
- 2. **Automatic Regeneration**: When updates are detected, the system:
126
- - Downloads latest enriched API specifications
127
- - Regenerates domain and resource registries
128
- - Validates code quality and tests pass
129
- - Creates a pull request with all changes
130
- 3. **Idempotent Generation**: Code generation is deterministic - running it twice with identical inputs produces byte-for-byte identical output
131
- 4. **CI/CD Validation**: Every commit validates that generated files match upstream specs and are reproducible
132
-
133
- #### Domain Registry
134
-
135
- The domain registry (`pkg/types/domains_generated.go`) is **automatically generated** from upstream API specifications (``.specs/index.json`). It currently contains **40 domains** organized by functional area:
136
-
137
- - **Infrastructure**: cloud_infrastructure, site, site_management, container_services
138
- - **Security**: waf, bot_and_threat_defense, network_security
139
- - **Networking**: network, dns, network_connectivity, vpn
140
- - **Observability**: observability_and_analytics, telemetry_and_insights, statistics
141
- - **Identity**: identity, user_and_account_management, users
142
- - **And 24 more...**
143
-
144
- #### Manual Domain Configuration
145
-
146
- Team-specific domain customization is managed in `.specs/domain_config.yaml`:
147
-
148
- ```yaml
149
- # Domain aliases (short command shortcuts)
150
- aliases:
151
- load_balancer: [lb]
152
- security: [sec]
153
- networking: [net]
154
- infrastructure: [infra]
155
-
156
- # Deprecated domains with migration guidance
157
- deprecated_domains:
158
- config:
159
- maps_to: system
160
- reason: "Configuration management merged into system domain"
161
- deprecated_since: "v1.0.25"
162
-
163
- # Missing metadata requiring upstream attention
164
- missing_metadata:
165
- - domain: api_security
166
- missing_field: "is_preview"
167
- reason: "Need to mark preview/beta domains"
98
+ xcsh virtual --help
168
99
  ```
169
100
 
170
- This file is **version-controlled** and survives automated spec updates, allowing teams to maintain consistent domain aliases across releases.
171
-
172
- #### For Developers
101
+ ## Development
173
102
 
174
- To regenerate domain definitions:
103
+ ### Build from Source
175
104
 
176
105
  ```bash
177
- # Full generation pipeline
178
- make generate
179
-
180
- # Just regenerate domains
181
- make generate-domains
182
-
183
- # Verify idempotency (CI safety check)
184
- make ci-generate
106
+ git clone https://github.com/robinmordasiewicz/f5xc-xcsh.git
107
+ cd f5xc-xcsh
108
+ npm install
109
+ npm run build
110
+ ./dist/index.js version
185
111
  ```
186
112
 
187
- The generation pipeline:
188
-
189
- 1. Downloads latest specs via `scripts/download-specs.sh`
190
- 2. Runs `scripts/generate-domains.go` to create domain registry
191
- 3. Runs `scripts/generate-schemas.go` to create resource schemas
192
- 4. Validates against `scripts/validate-specs.go`
193
-
194
- #### Upstream Spec Quality
113
+ ### Domain Registry
195
114
 
196
- When spec organization issues are detected, the system can automatically report them to the upstream repository. Use the GitHub issue template to report specification problems:
115
+ xcsh contains **38 domains** organized by functional area and automatically synchronized with F5 Distributed Cloud API specifications:
197
116
 
198
- - Missing metadata fields
199
- - Resource classification issues
200
- - Domain organization concerns
201
-
202
- See `.github/ISSUE_TEMPLATE/upstream-spec-quality.md` for the standardized reporting format.
117
+ - **Load Balancing**: virtual (HTTP, TCP, UDP load balancers and origin pools)
118
+ - **Infrastructure**: cloud_infrastructure, sites, ce_management
119
+ - **Security**: waf, bot_and_threat_defense, network_security
120
+ - **Networking**: network, dns
121
+ - **Observability**: observability, statistics, telemetry_and_insights
122
+ - **Identity**: tenant_and_identity, users, authentication
203
123
 
204
124
  ## License
205
125
 
package/dist/index.js CHANGED
@@ -46994,8 +46994,8 @@ function getLogoModeFromEnv(envPrefix) {
46994
46994
  var CLI_NAME = "xcsh";
46995
46995
  var CLI_FULL_NAME = "F5 Distributed Cloud Shell";
46996
46996
  function getVersion() {
46997
- if ("v2.0.4-2601050253") {
46998
- return "v2.0.4-2601050253";
46997
+ if ("v2.0.8-2601051356") {
46998
+ return "v2.0.8-2601051356";
46999
46999
  }
47000
47000
  if (process.env.XCSH_VERSION) {
47001
47001
  return process.env.XCSH_VERSION;
@@ -154320,7 +154320,7 @@ program2.name(CLI_NAME).description("F5 Distributed Cloud Shell - Interactive CL
154320
154320
  }
154321
154321
  process.stdin.resume();
154322
154322
  const appProps = { initialSession: session };
154323
- render_default(/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(App2, { ...appProps }));
154323
+ render_default(/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(App2, { ...appProps }), { exitOnCtrlC: false });
154324
154324
  return;
154325
154325
  }
154326
154326
  await executeNonInteractive(commandArgs);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@robinmordasiewicz/f5xc-xcsh",
3
- "version": "2.0.4-2601050253",
3
+ "version": "2.0.8-2601051356",
4
4
  "description": "F5 Distributed Cloud Shell - Interactive CLI for F5 XC",
5
5
  "type": "module",
6
6
  "bin": {