@robinmordasiewicz/f5xc-auth 1.1.0 → 1.2.0

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 (2) hide show
  1. package/README.md +89 -111
  2. package/package.json +2 -2
package/README.md CHANGED
@@ -1,153 +1,131 @@
1
- # @robinmordasiewicz/f5xc-auth
1
+ # F5 Distributed Cloud Monorepo
2
2
 
3
- Shared authentication library for F5 Distributed Cloud MCP servers. Provides XDG-compliant profile management and credential handling.
3
+ Unified monorepo combining F5 Distributed Cloud authentication, Terraform provider, and API MCP server.
4
4
 
5
- ## Installation
5
+ ## Packages
6
6
 
7
- ```bash
8
- npm install @robinmordasiewicz/f5xc-auth
9
- ```
7
+ This monorepo contains three main packages:
10
8
 
11
- ## Features
9
+ ### 1. [@robinmordasiewicz/f5xc-auth](./packages/f5xc-auth/)
12
10
 
13
- - **XDG-compliant profile storage** - Profiles stored in `~/.config/f5xc/profiles/`
14
- - **Multiple authentication methods** - API token, P12 certificate, or cert/key pair
15
- - **Environment variable priority** - Override profile settings with environment variables
16
- - **URL normalization** - Handles various F5XC tenant URL formats
17
- - **TLS configuration** - Custom CA bundles and insecure mode for staging
11
+ Shared authentication library for F5 Distributed Cloud MCP servers. Provides XDG-compliant profile management and credential handling.
18
12
 
19
- ## Usage
13
+ - **NPM**: `@robinmordasiewicz/f5xc-auth`
14
+ - **Features**: API token, P12 certificate, cert/key authentication, profile management, URL normalization
15
+ - **Directory**: `packages/f5xc-auth/`
20
16
 
21
- ### Basic Authentication
17
+ ### 2. [@robinmordasiewicz/f5xc-api-mcp](./packages/f5xc-api-mcp/)
22
18
 
23
- ```typescript
24
- import { CredentialManager } from '@robinmordasiewicz/f5xc-auth';
19
+ MCP (Model Context Protocol) server that exposes F5 Distributed Cloud APIs to AI assistants. Enables natural language interaction with F5XC infrastructure through Claude, VS Code, and other MCP-compatible tools.
25
20
 
26
- const credentialManager = new CredentialManager();
27
- await credentialManager.initialize();
21
+ - **NPM**: `@robinmordasiewicz/f5xc-api-mcp`
22
+ - **Features**: 1500+ API tools, domain-based documentation, dual-mode operation (docs + execution), curl examples
23
+ - **Directory**: `packages/f5xc-api-mcp/`
28
24
 
29
- if (credentialManager.isAuthenticated()) {
30
- console.log(`Authenticated as: ${credentialManager.getTenant()}`);
31
- console.log(`API URL: ${credentialManager.getApiUrl()}`);
32
- console.log(`Namespace: ${credentialManager.getNamespace()}`);
33
- }
34
- ```
25
+ ### 3. [Terraform Provider for F5 Distributed Cloud](./packages/terraform-provider/)
26
+
27
+ Community Terraform provider for F5 Distributed Cloud (version 3.0.0 - clean break release).
35
28
 
36
- ### Profile Management
29
+ - **Registry**: `robinmordasiewicz/f5xc`
30
+ - **Features**: API v2 based, 98+ resources available, import support, pre-release clean break
31
+ - **Directory**: `packages/terraform-provider/`
32
+ - **Language**: Go
37
33
 
38
- ```typescript
39
- import { getProfileManager } from '@robinmordasiewicz/f5xc-auth';
34
+ ## Getting Started
40
35
 
41
- const profileManager = getProfileManager();
36
+ ### Prerequisites
42
37
 
43
- // List all profiles
44
- const profiles = await profileManager.list();
38
+ - Node.js >= 18.0.0
39
+ - npm >= 7.0.0 (for workspace support)
40
+ - Go >= 1.22 (for Terraform provider development)
45
41
 
46
- // Get active profile
47
- const active = await profileManager.getActiveProfile();
42
+ ### Installation
48
43
 
49
- // Save a new profile
50
- await profileManager.save({
51
- name: 'production',
52
- apiUrl: 'https://mytenant.console.ves.volterra.io',
53
- apiToken: 'my-api-token',
54
- defaultNamespace: 'my-namespace'
55
- });
44
+ Clone the repository:
56
45
 
57
- // Switch profiles
58
- await profileManager.setActive('production');
46
+ ```bash
47
+ git clone https://github.com/robinmordasiewicz/f5xc.git
48
+ cd f5xc
59
49
  ```
60
50
 
61
- ### HTTP Client
51
+ Install dependencies for all packages:
62
52
 
63
- ```typescript
64
- import { CredentialManager, createHttpClient } from '@robinmordasiewicz/f5xc-auth';
53
+ ```bash
54
+ npm install
55
+ ```
65
56
 
66
- const credentialManager = new CredentialManager();
67
- await credentialManager.initialize();
57
+ ### Development
68
58
 
69
- const httpClient = createHttpClient(credentialManager, {
70
- timeout: 30000,
71
- debug: true
72
- });
59
+ Run tests across all packages:
73
60
 
74
- if (httpClient.isAvailable()) {
75
- const response = await httpClient.get('/web/namespaces');
76
- console.log(response.data);
77
- }
61
+ ```bash
62
+ npm test
78
63
  ```
79
64
 
80
- ## Environment Variables
65
+ Build all packages:
81
66
 
82
- | Variable | Description |
83
- |----------|-------------|
84
- | `F5XC_API_URL` | F5 XC tenant URL |
85
- | `F5XC_API_TOKEN` | API token for authentication |
86
- | `F5XC_P12_BUNDLE` | Path to P12 certificate bundle |
87
- | `F5XC_CERT` | Path to certificate file |
88
- | `F5XC_KEY` | Path to private key file |
89
- | `F5XC_NAMESPACE` | Default namespace |
90
- | `F5XC_TLS_INSECURE` | Disable TLS verification (staging only) |
91
- | `F5XC_CA_BUNDLE` | Path to custom CA bundle |
92
-
93
- Environment variables take priority over profile settings.
67
+ ```bash
68
+ npm run build
69
+ ```
94
70
 
95
- ## Credential Priority
71
+ Lint all packages:
96
72
 
97
- 1. **Environment variables** (highest priority)
98
- 2. **Active profile** from `~/.config/f5xc/`
99
- 3. **Documentation mode** (no credentials - lowest priority)
73
+ ```bash
74
+ npm run lint
75
+ ```
100
76
 
101
- ## Profile Format
77
+ ### Working with Individual Packages
102
78
 
103
- Profiles are stored as JSON files in `~/.config/f5xc/profiles/`:
79
+ Change into a package directory and work as normal:
104
80
 
105
- ```json
106
- {
107
- "name": "production",
108
- "apiUrl": "https://mytenant.console.ves.volterra.io",
109
- "apiToken": "your-api-token",
110
- "defaultNamespace": "my-namespace"
111
- }
81
+ ```bash
82
+ cd packages/f5xc-auth
83
+ npm install
84
+ npm run build
85
+ npm test
112
86
  ```
113
87
 
114
- ### Authentication Methods
88
+ ## Architecture
115
89
 
116
- **API Token:**
117
- ```json
118
- {
119
- "name": "token-auth",
120
- "apiUrl": "https://mytenant.console.ves.volterra.io",
121
- "apiToken": "your-api-token"
122
- }
123
- ```
90
+ The monorepo structure uses npm workspaces to manage three interdependent components:
124
91
 
125
- **P12 Certificate:**
126
- ```json
127
- {
128
- "name": "p12-auth",
129
- "apiUrl": "https://mytenant.console.ves.volterra.io",
130
- "p12Bundle": "/path/to/certificate.p12"
131
- }
132
92
  ```
133
-
134
- **Cert + Key:**
135
- ```json
136
- {
137
- "name": "cert-auth",
138
- "apiUrl": "https://mytenant.console.ves.volterra.io",
139
- "cert": "/path/to/certificate.pem",
140
- "key": "/path/to/private-key.pem"
141
- }
93
+ f5xc/
94
+ ├── packages/
95
+ │ ├── f5xc-auth/ # Core authentication library (TypeScript)
96
+ │ ├── f5xc-api-mcp/ # MCP server wrapper (TypeScript)
97
+ │ └── terraform-provider/ # Terraform provider (Go)
98
+ ├── package.json # Workspace root configuration
99
+ ├── README.md # This file
100
+ └── .github/ # GitHub workflows
142
101
  ```
143
102
 
144
- ## Security
103
+ ## Authentication Flow
104
+
105
+ 1. **f5xc-auth**: Handles credential management and profile storage
106
+ 2. **f5xc-api-mcp**: Uses f5xc-auth for API authentication
107
+ 3. **terraform-provider**: Can use f5xc-auth patterns for credential handling
108
+
109
+ ## Documentation
145
110
 
146
- - Profile files are created with `0o600` permissions (owner read/write only)
147
- - Config directory uses `0o700` permissions
148
- - Tokens are masked when displayed (showing only last 4 characters)
149
- - TLS insecure mode requires explicit opt-in
111
+ - [f5xc-auth Documentation](./packages/f5xc-auth/docs/)
112
+ - [f5xc-api-mcp Documentation](./packages/f5xc-api-mcp/)
113
+ - [Terraform Provider Documentation](./packages/terraform-provider/)
150
114
 
151
115
  ## License
152
116
 
153
- MIT
117
+ MIT - See individual package LICENSE files for details.
118
+
119
+ ## Contributing
120
+
121
+ See [Contributing Guidelines](./packages/f5xc-auth/docs/contributing.md) in the f5xc-auth package.
122
+
123
+ ## Support
124
+
125
+ - **Issues**: [GitHub Issues](https://github.com/robinmordasiewicz/f5xc/issues)
126
+ - **F5 Distributed Cloud Docs**: https://docs.cloud.f5.com/
127
+ - **Terraform Registry**: https://registry.terraform.io/providers/robinmordasiewicz/f5xc/
128
+
129
+ ## Author
130
+
131
+ Robin Mordasiewicz
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@robinmordasiewicz/f5xc-auth",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "Shared authentication library for F5 Distributed Cloud MCP servers - XDG-compliant profile management",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -38,7 +38,7 @@
38
38
  "bugs": {
39
39
  "url": "https://github.com/robinmordasiewicz/f5xc-auth/issues"
40
40
  },
41
- "homepage": "https://github.com/robinmordasiewicz/f5xc-auth#readme",
41
+ "homepage": "https://robinmordasiewicz.github.io/f5xc-auth/",
42
42
  "engines": {
43
43
  "node": ">=18"
44
44
  },