@padua/cli 1.13.1 → 2.0.1
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.
- package/README.md +121 -6
- package/dist/commands/doctor/index.d.ts.map +1 -1
- package/dist/commands/doctor/index.js +85 -0
- package/dist/commands/doctor/index.js.map +1 -1
- package/dist/commands/doctor/mcp-checks.d.ts +36 -0
- package/dist/commands/doctor/mcp-checks.d.ts.map +1 -0
- package/dist/commands/doctor/mcp-checks.js +235 -0
- package/dist/commands/doctor/mcp-checks.js.map +1 -0
- package/dist/commands/doctor/mcp-service-checks.d.ts +35 -0
- package/dist/commands/doctor/mcp-service-checks.d.ts.map +1 -0
- package/dist/commands/doctor/mcp-service-checks.js +146 -0
- package/dist/commands/doctor/mcp-service-checks.js.map +1 -0
- package/dist/commands/doctor/types.d.ts +4 -1
- package/dist/commands/doctor/types.d.ts.map +1 -1
- package/dist/commands/doctor/types.js +1 -0
- package/dist/commands/doctor/types.js.map +1 -1
- package/dist/commands/login/index.d.ts +1 -1
- package/dist/commands/login/index.d.ts.map +1 -1
- package/dist/commands/login/index.js +44 -185
- package/dist/commands/login/index.js.map +1 -1
- package/dist/commands/login/mcp-steps.d.ts +38 -0
- package/dist/commands/login/mcp-steps.d.ts.map +1 -0
- package/dist/commands/login/mcp-steps.js +176 -0
- package/dist/commands/login/mcp-steps.js.map +1 -0
- package/dist/commands/login/orchestrator.d.ts +9 -0
- package/dist/commands/login/orchestrator.d.ts.map +1 -0
- package/dist/commands/login/orchestrator.js +251 -0
- package/dist/commands/login/orchestrator.js.map +1 -0
- package/dist/commands/login/types.d.ts +11 -0
- package/dist/commands/login/types.d.ts.map +1 -1
- package/dist/commands/login/types.js.map +1 -1
- package/dist/commands/status/aws-checks.d.ts +14 -0
- package/dist/commands/status/aws-checks.d.ts.map +1 -0
- package/dist/commands/status/aws-checks.js +145 -0
- package/dist/commands/status/aws-checks.js.map +1 -0
- package/dist/commands/status/checks.d.ts +9 -25
- package/dist/commands/status/checks.d.ts.map +1 -1
- package/dist/commands/status/checks.js +52 -254
- package/dist/commands/status/checks.js.map +1 -1
- package/dist/commands/status/index.d.ts.map +1 -1
- package/dist/commands/status/index.js +53 -1
- package/dist/commands/status/index.js.map +1 -1
- package/dist/commands/status/mcp-checks.d.ts +35 -0
- package/dist/commands/status/mcp-checks.d.ts.map +1 -0
- package/dist/commands/status/mcp-checks.js +175 -0
- package/dist/commands/status/mcp-checks.js.map +1 -0
- package/dist/commands/status/types.d.ts +34 -0
- package/dist/commands/status/types.d.ts.map +1 -1
- package/dist/mcp/config/index.d.ts +4 -0
- package/dist/mcp/config/index.d.ts.map +1 -0
- package/dist/mcp/config/index.js +14 -0
- package/dist/mcp/config/index.js.map +1 -0
- package/dist/mcp/config/loaders.d.ts +45 -0
- package/dist/mcp/config/loaders.d.ts.map +1 -0
- package/dist/mcp/config/loaders.js +149 -0
- package/dist/mcp/config/loaders.js.map +1 -0
- package/dist/mcp/config/types.d.ts +234 -0
- package/dist/mcp/config/types.d.ts.map +1 -0
- package/dist/mcp/config/types.js +45 -0
- package/dist/mcp/config/types.js.map +1 -0
- package/dist/mcp/daemon/entry-logic.d.ts +28 -0
- package/dist/mcp/daemon/entry-logic.d.ts.map +1 -0
- package/dist/mcp/daemon/entry-logic.js +82 -0
- package/dist/mcp/daemon/entry-logic.js.map +1 -0
- package/dist/mcp/daemon/entry.d.ts +8 -0
- package/dist/mcp/daemon/entry.d.ts.map +1 -0
- package/dist/mcp/daemon/entry.js +34 -0
- package/dist/mcp/daemon/entry.js.map +1 -0
- package/dist/mcp/daemon/fork.d.ts +21 -0
- package/dist/mcp/daemon/fork.d.ts.map +1 -0
- package/dist/mcp/daemon/fork.js +188 -0
- package/dist/mcp/daemon/fork.js.map +1 -0
- package/dist/mcp/daemon/health.d.ts +8 -0
- package/dist/mcp/daemon/health.d.ts.map +1 -0
- package/dist/mcp/daemon/health.js +50 -0
- package/dist/mcp/daemon/health.js.map +1 -0
- package/dist/mcp/daemon/index.d.ts +6 -0
- package/dist/mcp/daemon/index.d.ts.map +1 -0
- package/dist/mcp/daemon/index.js +22 -0
- package/dist/mcp/daemon/index.js.map +1 -0
- package/dist/mcp/daemon/types.d.ts +63 -0
- package/dist/mcp/daemon/types.d.ts.map +1 -0
- package/dist/mcp/daemon/types.js +18 -0
- package/dist/mcp/daemon/types.js.map +1 -0
- package/dist/mcp/errors/index.d.ts +3 -0
- package/dist/mcp/errors/index.d.ts.map +1 -0
- package/dist/mcp/errors/index.js +13 -0
- package/dist/mcp/errors/index.js.map +1 -0
- package/dist/mcp/errors/types.d.ts +83 -0
- package/dist/mcp/errors/types.d.ts.map +1 -0
- package/dist/mcp/errors/types.js +148 -0
- package/dist/mcp/errors/types.js.map +1 -0
- package/dist/mcp/providers/atlassian/auth.d.ts +34 -0
- package/dist/mcp/providers/atlassian/auth.d.ts.map +1 -0
- package/dist/mcp/providers/atlassian/auth.js +107 -0
- package/dist/mcp/providers/atlassian/auth.js.map +1 -0
- package/dist/mcp/providers/atlassian/client.d.ts +15 -0
- package/dist/mcp/providers/atlassian/client.d.ts.map +1 -0
- package/dist/mcp/providers/atlassian/client.js +38 -0
- package/dist/mcp/providers/atlassian/client.js.map +1 -0
- package/dist/mcp/providers/atlassian/index.d.ts +6 -0
- package/dist/mcp/providers/atlassian/index.d.ts.map +1 -0
- package/dist/mcp/providers/atlassian/index.js +11 -0
- package/dist/mcp/providers/atlassian/index.js.map +1 -0
- package/dist/mcp/providers/atlassian/markdown-to-adf/index.d.ts +17 -0
- package/dist/mcp/providers/atlassian/markdown-to-adf/index.d.ts.map +1 -0
- package/dist/mcp/providers/atlassian/markdown-to-adf/index.js +29 -0
- package/dist/mcp/providers/atlassian/markdown-to-adf/index.js.map +1 -0
- package/dist/mcp/providers/atlassian/markdown-to-adf/nodes.d.ts +43 -0
- package/dist/mcp/providers/atlassian/markdown-to-adf/nodes.d.ts.map +1 -0
- package/dist/mcp/providers/atlassian/markdown-to-adf/nodes.js +101 -0
- package/dist/mcp/providers/atlassian/markdown-to-adf/nodes.js.map +1 -0
- package/dist/mcp/providers/atlassian/markdown-to-adf/parser.d.ts +14 -0
- package/dist/mcp/providers/atlassian/markdown-to-adf/parser.d.ts.map +1 -0
- package/dist/mcp/providers/atlassian/markdown-to-adf/parser.js +250 -0
- package/dist/mcp/providers/atlassian/markdown-to-adf/parser.js.map +1 -0
- package/dist/mcp/providers/atlassian/provider.d.ts +38 -0
- package/dist/mcp/providers/atlassian/provider.d.ts.map +1 -0
- package/dist/mcp/providers/atlassian/provider.js +101 -0
- package/dist/mcp/providers/atlassian/provider.js.map +1 -0
- package/dist/mcp/providers/atlassian/resources.d.ts +4 -0
- package/dist/mcp/providers/atlassian/resources.d.ts.map +1 -0
- package/dist/mcp/providers/atlassian/resources.js +67 -0
- package/dist/mcp/providers/atlassian/resources.js.map +1 -0
- package/dist/mcp/providers/atlassian/tools/confluence.d.ts +4 -0
- package/dist/mcp/providers/atlassian/tools/confluence.d.ts.map +1 -0
- package/dist/mcp/providers/atlassian/tools/confluence.js +169 -0
- package/dist/mcp/providers/atlassian/tools/confluence.js.map +1 -0
- package/dist/mcp/providers/atlassian/tools/jira.d.ts +4 -0
- package/dist/mcp/providers/atlassian/tools/jira.d.ts.map +1 -0
- package/dist/mcp/providers/atlassian/tools/jira.js +274 -0
- package/dist/mcp/providers/atlassian/tools/jira.js.map +1 -0
- package/dist/mcp/providers/gitlab/auth.d.ts +10 -0
- package/dist/mcp/providers/gitlab/auth.d.ts.map +1 -0
- package/dist/mcp/providers/gitlab/auth.js +23 -0
- package/dist/mcp/providers/gitlab/auth.js.map +1 -0
- package/dist/mcp/providers/gitlab/client.d.ts +23 -0
- package/dist/mcp/providers/gitlab/client.d.ts.map +1 -0
- package/dist/mcp/providers/gitlab/client.js +17 -0
- package/dist/mcp/providers/gitlab/client.js.map +1 -0
- package/dist/mcp/providers/gitlab/index.d.ts +5 -0
- package/dist/mcp/providers/gitlab/index.d.ts.map +1 -0
- package/dist/mcp/providers/gitlab/index.js +10 -0
- package/dist/mcp/providers/gitlab/index.js.map +1 -0
- package/dist/mcp/providers/gitlab/provider.d.ts +25 -0
- package/dist/mcp/providers/gitlab/provider.d.ts.map +1 -0
- package/dist/mcp/providers/gitlab/provider.js +48 -0
- package/dist/mcp/providers/gitlab/provider.js.map +1 -0
- package/dist/mcp/providers/gitlab/resources.d.ts +11 -0
- package/dist/mcp/providers/gitlab/resources.d.ts.map +1 -0
- package/dist/mcp/providers/gitlab/resources.js +54 -0
- package/dist/mcp/providers/gitlab/resources.js.map +1 -0
- package/dist/mcp/providers/gitlab/tools/issues.d.ts +4 -0
- package/dist/mcp/providers/gitlab/tools/issues.d.ts.map +1 -0
- package/dist/mcp/providers/gitlab/tools/issues.js +120 -0
- package/dist/mcp/providers/gitlab/tools/issues.js.map +1 -0
- package/dist/mcp/providers/gitlab/tools/merge-requests.d.ts +11 -0
- package/dist/mcp/providers/gitlab/tools/merge-requests.d.ts.map +1 -0
- package/dist/mcp/providers/gitlab/tools/merge-requests.js +282 -0
- package/dist/mcp/providers/gitlab/tools/merge-requests.js.map +1 -0
- package/dist/mcp/providers/gitlab/tools/pipelines.d.ts +10 -0
- package/dist/mcp/providers/gitlab/tools/pipelines.d.ts.map +1 -0
- package/dist/mcp/providers/gitlab/tools/pipelines.js +173 -0
- package/dist/mcp/providers/gitlab/tools/pipelines.js.map +1 -0
- package/dist/mcp/providers/gitlab/tools/repository.d.ts +4 -0
- package/dist/mcp/providers/gitlab/tools/repository.d.ts.map +1 -0
- package/dist/mcp/providers/gitlab/tools/repository.js +191 -0
- package/dist/mcp/providers/gitlab/tools/repository.js.map +1 -0
- package/dist/mcp/providers/index.d.ts +4 -0
- package/dist/mcp/providers/index.d.ts.map +1 -0
- package/dist/mcp/providers/index.js +6 -0
- package/dist/mcp/providers/index.js.map +1 -0
- package/dist/mcp/providers/registry.d.ts +90 -0
- package/dist/mcp/providers/registry.d.ts.map +1 -0
- package/dist/mcp/providers/registry.js +128 -0
- package/dist/mcp/providers/registry.js.map +1 -0
- package/dist/mcp/providers/tool-helpers.d.ts +14 -0
- package/dist/mcp/providers/tool-helpers.d.ts.map +1 -0
- package/dist/mcp/providers/tool-helpers.js +12 -0
- package/dist/mcp/providers/tool-helpers.js.map +1 -0
- package/dist/mcp/providers/types.d.ts +80 -0
- package/dist/mcp/providers/types.d.ts.map +1 -0
- package/dist/mcp/providers/types.js +13 -0
- package/dist/mcp/providers/types.js.map +1 -0
- package/dist/mcp/server/auth.d.ts +8 -0
- package/dist/mcp/server/auth.d.ts.map +1 -0
- package/dist/mcp/server/auth.js +36 -0
- package/dist/mcp/server/auth.js.map +1 -0
- package/dist/mcp/server/health.d.ts +24 -0
- package/dist/mcp/server/health.d.ts.map +1 -0
- package/dist/mcp/server/health.js +37 -0
- package/dist/mcp/server/health.js.map +1 -0
- package/dist/mcp/server/index.d.ts +11 -0
- package/dist/mcp/server/index.d.ts.map +1 -0
- package/dist/mcp/server/index.js +27 -0
- package/dist/mcp/server/index.js.map +1 -0
- package/dist/mcp/server/logging.d.ts +46 -0
- package/dist/mcp/server/logging.d.ts.map +1 -0
- package/dist/mcp/server/logging.js +109 -0
- package/dist/mcp/server/logging.js.map +1 -0
- package/dist/mcp/server/ratelimit.d.ts +3 -0
- package/dist/mcp/server/ratelimit.d.ts.map +1 -0
- package/dist/mcp/server/ratelimit.js +70 -0
- package/dist/mcp/server/ratelimit.js.map +1 -0
- package/dist/mcp/server/routes.d.ts +3 -0
- package/dist/mcp/server/routes.d.ts.map +1 -0
- package/dist/mcp/server/routes.js +8 -0
- package/dist/mcp/server/routes.js.map +1 -0
- package/dist/mcp/server/server.d.ts +21 -0
- package/dist/mcp/server/server.d.ts.map +1 -0
- package/dist/mcp/server/server.js +114 -0
- package/dist/mcp/server/server.js.map +1 -0
- package/dist/mcp/server/validation.d.ts +22 -0
- package/dist/mcp/server/validation.d.ts.map +1 -0
- package/dist/mcp/server/validation.js +32 -0
- package/dist/mcp/server/validation.js.map +1 -0
- package/dist/mcp/store/encrypt.d.ts +22 -0
- package/dist/mcp/store/encrypt.d.ts.map +1 -0
- package/dist/mcp/store/encrypt.js +66 -0
- package/dist/mcp/store/encrypt.js.map +1 -0
- package/dist/mcp/store/index.d.ts +12 -0
- package/dist/mcp/store/index.d.ts.map +1 -0
- package/dist/mcp/store/index.js +16 -0
- package/dist/mcp/store/index.js.map +1 -0
- package/dist/mcp/store/migrate.d.ts +70 -0
- package/dist/mcp/store/migrate.d.ts.map +1 -0
- package/dist/mcp/store/migrate.js +211 -0
- package/dist/mcp/store/migrate.js.map +1 -0
- package/dist/mcp/store/null-token-store.d.ts +22 -0
- package/dist/mcp/store/null-token-store.d.ts.map +1 -0
- package/dist/mcp/store/null-token-store.js +40 -0
- package/dist/mcp/store/null-token-store.js.map +1 -0
- package/dist/mcp/store/sqlite.d.ts +27 -0
- package/dist/mcp/store/sqlite.d.ts.map +1 -0
- package/dist/mcp/store/sqlite.js +100 -0
- package/dist/mcp/store/sqlite.js.map +1 -0
- package/dist/mcp/store/types.d.ts +183 -0
- package/dist/mcp/store/types.d.ts.map +1 -0
- package/dist/mcp/store/types.js +13 -0
- package/dist/mcp/store/types.js.map +1 -0
- package/dist/mcp/token/http-client.d.ts +3 -0
- package/dist/mcp/token/http-client.d.ts.map +1 -0
- package/dist/mcp/token/http-client.js +186 -0
- package/dist/mcp/token/http-client.js.map +1 -0
- package/dist/mcp/token/index.d.ts +5 -0
- package/dist/mcp/token/index.d.ts.map +1 -0
- package/dist/mcp/token/index.js +15 -0
- package/dist/mcp/token/index.js.map +1 -0
- package/dist/mcp/token/manager.d.ts +54 -0
- package/dist/mcp/token/manager.d.ts.map +1 -0
- package/dist/mcp/token/manager.js +194 -0
- package/dist/mcp/token/manager.js.map +1 -0
- package/dist/mcp/token/null-token-manager.d.ts +19 -0
- package/dist/mcp/token/null-token-manager.d.ts.map +1 -0
- package/dist/mcp/token/null-token-manager.js +50 -0
- package/dist/mcp/token/null-token-manager.js.map +1 -0
- package/dist/mcp/token/oauth.d.ts +44 -0
- package/dist/mcp/token/oauth.d.ts.map +1 -0
- package/dist/mcp/token/oauth.js +257 -0
- package/dist/mcp/token/oauth.js.map +1 -0
- package/dist/mcp/token/types.d.ts +81 -0
- package/dist/mcp/token/types.d.ts.map +1 -0
- package/dist/mcp/token/types.js +6 -0
- package/dist/mcp/token/types.js.map +1 -0
- package/package.json +10 -3
package/README.md
CHANGED
|
@@ -11,7 +11,7 @@ npm install -g @padua/cli
|
|
|
11
11
|
### Prerequisites
|
|
12
12
|
|
|
13
13
|
**Required:**
|
|
14
|
-
- [Node.js](https://nodejs.org/)
|
|
14
|
+
- [Node.js](https://nodejs.org/) v20+
|
|
15
15
|
- [AWS CLI v2](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)
|
|
16
16
|
|
|
17
17
|
**Optional:**
|
|
@@ -54,6 +54,106 @@ The `init` command will:
|
|
|
54
54
|
| | Status | Health check for all authentication services |
|
|
55
55
|
| | Doctor | Configuration validation and diagnostics with fuzzy profile matching |
|
|
56
56
|
| **Tunnel** | RDS | Secure tunnels to RDS/Aurora databases via SSM |
|
|
57
|
+
| **MCP** | Server | Built-in MCP server with 49 GitLab and Atlassian tools |
|
|
58
|
+
| | Daemon | Background process management via `padua login` |
|
|
59
|
+
| | Diagnostics | MCP health checks via `padua doctor` |
|
|
60
|
+
| | Migration | Token migration from legacy Go server |
|
|
61
|
+
|
|
62
|
+
## MCP Server
|
|
63
|
+
|
|
64
|
+
`@padua/cli` v2.0.0 includes a built-in MCP (Model Context Protocol) server that provides 49 tools for GitLab and Atlassian integration, accessible from AI-powered IDEs.
|
|
65
|
+
|
|
66
|
+
### How It Works
|
|
67
|
+
|
|
68
|
+
Running `padua login` now performs a 7-step authentication flow:
|
|
69
|
+
|
|
70
|
+
1. **AWS SSO** — Authenticate to AWS
|
|
71
|
+
2. **S3 Config** — Download MCP provider configuration
|
|
72
|
+
3. **CodeArtifact** — Configure npm registry
|
|
73
|
+
4. **ECR** — Configure Docker registry
|
|
74
|
+
5. **GitLab** — OAuth2 PKCE authentication
|
|
75
|
+
6. **Atlassian** — OAuth2 authentication
|
|
76
|
+
7. **MCP Daemon** — Start background server on port 8919
|
|
77
|
+
|
|
78
|
+
The MCP daemon runs as a background process and serves tools via HTTP at `http://127.0.0.1:8919/mcp`.
|
|
79
|
+
|
|
80
|
+
### Available Tools
|
|
81
|
+
|
|
82
|
+
| Provider | Tools | Examples |
|
|
83
|
+
|----------|-------|---------|
|
|
84
|
+
| **GitLab** (30 tools) | Repository, Issue, Merge Request, Pipeline management | `gitlab_list_projects`, `gitlab_create_merge_request`, `gitlab_get_job_log` |
|
|
85
|
+
| **Atlassian** (19 tools) | Jira issues, Confluence pages, search, transitions | `jira_search_issues`, `jira_create_issue`, `confluence_get_page` |
|
|
86
|
+
|
|
87
|
+
Plus 6 resource templates for direct resource access.
|
|
88
|
+
|
|
89
|
+
### IDE Configuration
|
|
90
|
+
|
|
91
|
+
**Claude Desktop** (`~/Library/Application Support/Claude/claude_desktop_config.json`):
|
|
92
|
+
|
|
93
|
+
```json
|
|
94
|
+
{
|
|
95
|
+
"mcpServers": {
|
|
96
|
+
"padua": {
|
|
97
|
+
"url": "http://127.0.0.1:8919/mcp"
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
**Cursor** (`.cursor/mcp.json`):
|
|
104
|
+
|
|
105
|
+
```json
|
|
106
|
+
{
|
|
107
|
+
"mcpServers": {
|
|
108
|
+
"padua": {
|
|
109
|
+
"url": "http://127.0.0.1:8919/mcp"
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### MCP Diagnostics
|
|
116
|
+
|
|
117
|
+
Run `padua doctor` to check MCP server health:
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
padua doctor
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
The doctor command now includes MCP-specific checks:
|
|
124
|
+
- Node.js version (>= 20.0.0)
|
|
125
|
+
- MCP provider configuration
|
|
126
|
+
- Token store integrity
|
|
127
|
+
- Encryption key availability
|
|
128
|
+
- Port availability
|
|
129
|
+
- Daemon health
|
|
130
|
+
- GitLab and Atlassian API connectivity
|
|
131
|
+
|
|
132
|
+
### Token Migration
|
|
133
|
+
|
|
134
|
+
If upgrading from the standalone `padua-mcp` Go server:
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
padua doctor --migrate-tokens
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
This migrates encrypted tokens from the legacy `padua-mcp` database to the new integrated store.
|
|
141
|
+
|
|
142
|
+
### Troubleshooting
|
|
143
|
+
|
|
144
|
+
| Issue | Solution |
|
|
145
|
+
|-------|----------|
|
|
146
|
+
| Daemon not starting | Run `padua doctor` for diagnostics |
|
|
147
|
+
| Port 8919 in use | Set `mcp.port` in `~/.padua/padua.config.json` |
|
|
148
|
+
| Token issues | Delete `~/.padua/tokens.db` and run `padua login` |
|
|
149
|
+
| Legacy daemon running | `pkill -f padua-mcp-daemon` |
|
|
150
|
+
|
|
151
|
+
### Downgrade to 1.x
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
npm install -g @padua/cli@1
|
|
155
|
+
pkill -f padua-mcp-daemon
|
|
156
|
+
```
|
|
57
157
|
|
|
58
158
|
## Init Command
|
|
59
159
|
|
|
@@ -200,19 +300,31 @@ padua login
|
|
|
200
300
|
### Example Output
|
|
201
301
|
|
|
202
302
|
```
|
|
203
|
-
[1/
|
|
204
|
-
✓ authenticated (profile: development)
|
|
205
|
-
[2/
|
|
303
|
+
[1/7] AWS SSO ...
|
|
304
|
+
✓ authenticated (profile: paduafg-development)
|
|
305
|
+
[2/7] S3 Config ...
|
|
306
|
+
✓ downloaded
|
|
307
|
+
[3/7] CodeArtifact (npm) ...
|
|
206
308
|
✓ configured
|
|
207
|
-
[
|
|
309
|
+
[4/7] ECR (Docker) ...
|
|
208
310
|
✓ configured
|
|
311
|
+
[5/7] GitLab Auth ...
|
|
312
|
+
✓ authenticated
|
|
313
|
+
[6/7] Atlassian Auth ...
|
|
314
|
+
✓ authenticated
|
|
315
|
+
[7/7] MCP Daemon ...
|
|
316
|
+
✓ running (http://127.0.0.1:8919/mcp)
|
|
209
317
|
|
|
210
318
|
=== Login Results ===
|
|
211
319
|
SSO: ✓ OK
|
|
320
|
+
S3 Config: ✓ OK
|
|
212
321
|
CodeArtifact: ✓ OK
|
|
213
322
|
ECR: ✓ OK
|
|
323
|
+
GitLab: ✓ OK
|
|
324
|
+
Atlassian: ✓ OK
|
|
325
|
+
MCP Daemon: ✓ OK
|
|
214
326
|
|
|
215
|
-
Total:
|
|
327
|
+
Total: 7/7 services authenticated
|
|
216
328
|
```
|
|
217
329
|
|
|
218
330
|
## Configuration
|
|
@@ -326,6 +438,9 @@ The doctor command performs comprehensive validation:
|
|
|
326
438
|
4. **Prerequisites** - Checks AWS CLI, npm, Docker, Session Manager Plugin installation status and versions
|
|
327
439
|
5. **Authentication** - Validates SSO, CodeArtifact, and ECR authentication status
|
|
328
440
|
6. **Installation** - Compares current CLI version with latest published version on npm
|
|
441
|
+
7. **MCP Server** - Node.js version (>= 20.0.0), MCP provider config, token store integrity, encryption key, port availability, daemon health, GitLab and Atlassian API connectivity
|
|
442
|
+
|
|
443
|
+
Use `--migrate-tokens` to migrate encrypted tokens from a legacy `padua-mcp` Go server database.
|
|
329
444
|
|
|
330
445
|
### Example Output
|
|
331
446
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/doctor/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/doctor/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAiB,WAAW,EAAE,MAAM,SAAS,CAAC;AAsBlF;;GAEG;AACH,eAAO,MAAM,aAAa,SAMH,CAAC;AAExB;;GAEG;AACH,iBAAe,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA+IjE;AAED;;GAEG;AACH,iBAAS,YAAY,CACnB,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAChD,IAAI,CAwCN;AAED;;GAEG;AACH,iBAAS,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CA4BlF;AAyCD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -12,10 +12,14 @@ exports.displayCheck = displayCheck;
|
|
|
12
12
|
exports.displaySummary = displaySummary;
|
|
13
13
|
const commander_1 = require("commander");
|
|
14
14
|
const chalk_1 = __importDefault(require("chalk"));
|
|
15
|
+
const node_path_1 = require("node:path");
|
|
16
|
+
const node_os_1 = require("node:os");
|
|
15
17
|
const config_1 = require("../login/config");
|
|
16
18
|
const types_1 = require("../login/types");
|
|
17
19
|
const types_2 = require("./types");
|
|
20
|
+
const migrate_1 = require("../../mcp/store/migrate");
|
|
18
21
|
const checks_1 = require("./checks");
|
|
22
|
+
const mcp_checks_1 = require("./mcp-checks");
|
|
19
23
|
/**
|
|
20
24
|
* Doctor command definition
|
|
21
25
|
*/
|
|
@@ -24,6 +28,7 @@ exports.doctorCommand = new commander_1.Command('doctor')
|
|
|
24
28
|
.option('--fix', 'Attempt to auto-fix common issues (not yet implemented)')
|
|
25
29
|
.option('-v, --verbose', 'Show detailed diagnostic information')
|
|
26
30
|
.option('--no-color', 'Disable colored output')
|
|
31
|
+
.option('--migrate-tokens', 'Migrate tokens from legacy padua-mcp database')
|
|
27
32
|
.action(handleDoctor);
|
|
28
33
|
/**
|
|
29
34
|
* Main handler for doctor command
|
|
@@ -36,6 +41,23 @@ async function handleDoctor(options) {
|
|
|
36
41
|
const warning = (text) => noColor ? text : chalk_1.default.yellow(text);
|
|
37
42
|
const error = (text) => noColor ? text : chalk_1.default.red(text);
|
|
38
43
|
const dim = (text) => noColor ? text : chalk_1.default.dim(text);
|
|
44
|
+
// --migrate-tokens: run migration and exit without running full doctor checks
|
|
45
|
+
if (options.migrateTokens) {
|
|
46
|
+
const key = process.env.PADUA_DB_ENCRYPTION_KEY;
|
|
47
|
+
if (!key) {
|
|
48
|
+
console.log(error('Error: PADUA_DB_ENCRYPTION_KEY not set'));
|
|
49
|
+
process.exit(1);
|
|
50
|
+
}
|
|
51
|
+
const targetDb = (0, node_path_1.join)((0, node_os_1.homedir)(), '.padua', 'tokens.db');
|
|
52
|
+
const result = (0, migrate_1.migrateFromGo)(key, targetDb);
|
|
53
|
+
if (result.migrated) {
|
|
54
|
+
console.log(success(`Migrated ${result.tokensCount} tokens from legacy database`));
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
console.log(warning(`Migration skipped: ${result.reason}`));
|
|
58
|
+
}
|
|
59
|
+
process.exit(0);
|
|
60
|
+
}
|
|
39
61
|
console.log('');
|
|
40
62
|
console.log(title('🏥 Padua CLI Doctor'));
|
|
41
63
|
console.log('');
|
|
@@ -86,6 +108,34 @@ async function handleDoctor(options) {
|
|
|
86
108
|
allChecks.push(versionCheck);
|
|
87
109
|
displayCheck(versionCheck, { noColor, verbose });
|
|
88
110
|
console.log('');
|
|
111
|
+
// 7. MCP Diagnostics
|
|
112
|
+
console.log(title(types_2.CheckCategory.MCP));
|
|
113
|
+
const mcpNodeCheck = (0, mcp_checks_1.checkNodeVersion)();
|
|
114
|
+
allChecks.push(mcpNodeCheck);
|
|
115
|
+
displayCheck(mcpNodeCheck, { noColor, verbose });
|
|
116
|
+
const mcpConfigCheck = (0, mcp_checks_1.checkMcpConfig)();
|
|
117
|
+
allChecks.push(mcpConfigCheck);
|
|
118
|
+
displayCheck(mcpConfigCheck, { noColor, verbose });
|
|
119
|
+
const mcpTokenStoreCheck = (0, mcp_checks_1.checkTokenStore)();
|
|
120
|
+
allChecks.push(mcpTokenStoreCheck);
|
|
121
|
+
displayCheck(mcpTokenStoreCheck, { noColor, verbose });
|
|
122
|
+
const mcpEncryptionCheck = (0, mcp_checks_1.checkEncryptionKey)();
|
|
123
|
+
allChecks.push(mcpEncryptionCheck);
|
|
124
|
+
displayCheck(mcpEncryptionCheck, { noColor, verbose });
|
|
125
|
+
const mcpPortCheck = await (0, mcp_checks_1.checkMcpPort)();
|
|
126
|
+
allChecks.push(mcpPortCheck);
|
|
127
|
+
displayCheck(mcpPortCheck, { noColor, verbose });
|
|
128
|
+
const mcpDaemonCheck = await (0, mcp_checks_1.checkMcpDaemon)();
|
|
129
|
+
allChecks.push(mcpDaemonCheck);
|
|
130
|
+
displayCheck(mcpDaemonCheck, { noColor, verbose });
|
|
131
|
+
const { gitlabToken, atlassianToken } = readTokensFromStore();
|
|
132
|
+
const gitlabCheck = (0, mcp_checks_1.checkGitLabApi)(gitlabToken);
|
|
133
|
+
allChecks.push(gitlabCheck);
|
|
134
|
+
displayCheck(gitlabCheck, { noColor, verbose });
|
|
135
|
+
const atlassianCheck = (0, mcp_checks_1.checkAtlassianApi)(atlassianToken);
|
|
136
|
+
allChecks.push(atlassianCheck);
|
|
137
|
+
displayCheck(atlassianCheck, { noColor, verbose });
|
|
138
|
+
console.log('');
|
|
89
139
|
// Calculate summary
|
|
90
140
|
const result = {
|
|
91
141
|
checks: allChecks,
|
|
@@ -165,4 +215,39 @@ function displaySummary(result, options) {
|
|
|
165
215
|
}
|
|
166
216
|
console.log('');
|
|
167
217
|
}
|
|
218
|
+
/**
|
|
219
|
+
* Read GitLab and Atlassian token expiry info from the SQLite store.
|
|
220
|
+
* Returns null for any token that cannot be read (missing db, bad key, etc.).
|
|
221
|
+
* This is intentionally non-throwing — doctor must never crash on a bad store.
|
|
222
|
+
*/
|
|
223
|
+
function readTokensFromStore() {
|
|
224
|
+
try {
|
|
225
|
+
const { SqliteTokenStore } = require('../../mcp/store/sqlite');
|
|
226
|
+
const { createEncryptor } = require('../../mcp/store/encrypt');
|
|
227
|
+
const storeDb = require('os').homedir() + '/.padua/tokens.db';
|
|
228
|
+
if (!require('fs').existsSync(storeDb)) {
|
|
229
|
+
return { gitlabToken: null, atlassianToken: null };
|
|
230
|
+
}
|
|
231
|
+
const key = process.env.PADUA_DB_ENCRYPTION_KEY;
|
|
232
|
+
if (!key) {
|
|
233
|
+
return { gitlabToken: null, atlassianToken: null };
|
|
234
|
+
}
|
|
235
|
+
const encryptor = createEncryptor(key);
|
|
236
|
+
const store = SqliteTokenStore.create(storeDb, encryptor);
|
|
237
|
+
try {
|
|
238
|
+
const gitlab = store.get('gitlab');
|
|
239
|
+
const atlassian = store.get('atlassian');
|
|
240
|
+
return {
|
|
241
|
+
gitlabToken: gitlab ? { expiresAt: gitlab.expiresAt } : null,
|
|
242
|
+
atlassianToken: atlassian ? { expiresAt: atlassian.expiresAt } : null,
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
finally {
|
|
246
|
+
store.close();
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
catch {
|
|
250
|
+
return { gitlabToken: null, atlassianToken: null };
|
|
251
|
+
}
|
|
252
|
+
}
|
|
168
253
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/doctor/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/doctor/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP infrastructure diagnostic checks for the doctor command.
|
|
3
|
+
*
|
|
4
|
+
* Covers: Node.js version, mcp-providers.json, token store, encryption key,
|
|
5
|
+
* and MCP port availability.
|
|
6
|
+
*
|
|
7
|
+
* All checks are read-only and non-destructive. Each returns a DoctorCheck
|
|
8
|
+
* and must never throw — errors are caught and surfaced as fail/warn results.
|
|
9
|
+
*/
|
|
10
|
+
import { DoctorCheck } from './types';
|
|
11
|
+
export { checkMcpDaemon, checkGitLabApi, checkAtlassianApi, TokenInfo, } from './mcp-service-checks';
|
|
12
|
+
/**
|
|
13
|
+
* Check Node.js version meets the >=20.0.0 requirement for MCP features.
|
|
14
|
+
*/
|
|
15
|
+
export declare function checkNodeVersion(): DoctorCheck;
|
|
16
|
+
/**
|
|
17
|
+
* Check ~/.padua/mcp-providers.json exists and contains valid JSON.
|
|
18
|
+
*/
|
|
19
|
+
export declare function checkMcpConfig(): DoctorCheck;
|
|
20
|
+
/**
|
|
21
|
+
* Check ~/.padua/tokens.db exists and can be opened by better-sqlite3.
|
|
22
|
+
* Missing file is a warn (created on first login); corrupt file is a fail.
|
|
23
|
+
*/
|
|
24
|
+
export declare function checkTokenStore(): DoctorCheck;
|
|
25
|
+
/**
|
|
26
|
+
* Check if the AES-256-GCM encryption key source is available.
|
|
27
|
+
* Currently only validates the env var path; keychain integration is future work.
|
|
28
|
+
*/
|
|
29
|
+
export declare function checkEncryptionKey(): DoctorCheck;
|
|
30
|
+
/**
|
|
31
|
+
* Check if the MCP port (default 8919) is available or owned by the daemon.
|
|
32
|
+
* Uses net.createServer to probe availability; reads the PID file to
|
|
33
|
+
* determine whether an existing listener is the MCP daemon.
|
|
34
|
+
*/
|
|
35
|
+
export declare function checkMcpPort(port?: number): Promise<DoctorCheck>;
|
|
36
|
+
//# sourceMappingURL=mcp-checks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-checks.d.ts","sourceRoot":"","sources":["../../../src/commands/doctor/mcp-checks.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAGtC,OAAO,EACL,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,SAAS,GACV,MAAM,sBAAsB,CAAC;AAY9B;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,WAAW,CAkB9C;AAMD;;GAEG;AACH,wBAAgB,cAAc,IAAI,WAAW,CA0B5C;AAMD;;;GAGG;AACH,wBAAgB,eAAe,IAAI,WAAW,CA6B7C;AAMD;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,WAAW,CAiBhD;AAMD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,SAAmB,GAAG,OAAO,CAAC,WAAW,CAAC,CAiD1E"}
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* MCP infrastructure diagnostic checks for the doctor command.
|
|
4
|
+
*
|
|
5
|
+
* Covers: Node.js version, mcp-providers.json, token store, encryption key,
|
|
6
|
+
* and MCP port availability.
|
|
7
|
+
*
|
|
8
|
+
* All checks are read-only and non-destructive. Each returns a DoctorCheck
|
|
9
|
+
* and must never throw — errors are caught and surfaced as fail/warn results.
|
|
10
|
+
*/
|
|
11
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
12
|
+
if (k2 === undefined) k2 = k;
|
|
13
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
14
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
15
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
16
|
+
}
|
|
17
|
+
Object.defineProperty(o, k2, desc);
|
|
18
|
+
}) : (function(o, m, k, k2) {
|
|
19
|
+
if (k2 === undefined) k2 = k;
|
|
20
|
+
o[k2] = m[k];
|
|
21
|
+
}));
|
|
22
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
23
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
24
|
+
}) : function(o, v) {
|
|
25
|
+
o["default"] = v;
|
|
26
|
+
});
|
|
27
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
28
|
+
var ownKeys = function(o) {
|
|
29
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
30
|
+
var ar = [];
|
|
31
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
32
|
+
return ar;
|
|
33
|
+
};
|
|
34
|
+
return ownKeys(o);
|
|
35
|
+
};
|
|
36
|
+
return function (mod) {
|
|
37
|
+
if (mod && mod.__esModule) return mod;
|
|
38
|
+
var result = {};
|
|
39
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
40
|
+
__setModuleDefault(result, mod);
|
|
41
|
+
return result;
|
|
42
|
+
};
|
|
43
|
+
})();
|
|
44
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
+
exports.checkAtlassianApi = exports.checkGitLabApi = exports.checkMcpDaemon = void 0;
|
|
46
|
+
exports.checkNodeVersion = checkNodeVersion;
|
|
47
|
+
exports.checkMcpConfig = checkMcpConfig;
|
|
48
|
+
exports.checkTokenStore = checkTokenStore;
|
|
49
|
+
exports.checkEncryptionKey = checkEncryptionKey;
|
|
50
|
+
exports.checkMcpPort = checkMcpPort;
|
|
51
|
+
const fs = __importStar(require("fs"));
|
|
52
|
+
const net = __importStar(require("net"));
|
|
53
|
+
const os = __importStar(require("os"));
|
|
54
|
+
const path = __importStar(require("path"));
|
|
55
|
+
// Re-export service checks so callers only import from one module
|
|
56
|
+
var mcp_service_checks_1 = require("./mcp-service-checks");
|
|
57
|
+
Object.defineProperty(exports, "checkMcpDaemon", { enumerable: true, get: function () { return mcp_service_checks_1.checkMcpDaemon; } });
|
|
58
|
+
Object.defineProperty(exports, "checkGitLabApi", { enumerable: true, get: function () { return mcp_service_checks_1.checkGitLabApi; } });
|
|
59
|
+
Object.defineProperty(exports, "checkAtlassianApi", { enumerable: true, get: function () { return mcp_service_checks_1.checkAtlassianApi; } });
|
|
60
|
+
const PADUA_DIR = path.join(os.homedir(), '.padua');
|
|
61
|
+
const MCP_PROVIDERS_PATH = path.join(PADUA_DIR, 'mcp-providers.json');
|
|
62
|
+
const TOKENS_DB_PATH = path.join(PADUA_DIR, 'tokens.db');
|
|
63
|
+
const MCP_PID_FILE = path.join(PADUA_DIR, 'mcp-server.pid');
|
|
64
|
+
const DEFAULT_MCP_PORT = 8919;
|
|
65
|
+
// ---------------------------------------------------------------------------
|
|
66
|
+
// 1. checkNodeVersion
|
|
67
|
+
// ---------------------------------------------------------------------------
|
|
68
|
+
/**
|
|
69
|
+
* Check Node.js version meets the >=20.0.0 requirement for MCP features.
|
|
70
|
+
*/
|
|
71
|
+
function checkNodeVersion() {
|
|
72
|
+
const version = process.versions.node;
|
|
73
|
+
const [major] = version.split('.').map(Number);
|
|
74
|
+
if (major >= 20) {
|
|
75
|
+
return {
|
|
76
|
+
name: 'Node.js version',
|
|
77
|
+
status: 'pass',
|
|
78
|
+
message: `Node.js v${version} (>=20.0.0 required)`,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
return {
|
|
82
|
+
name: 'Node.js version',
|
|
83
|
+
status: 'fail',
|
|
84
|
+
message: `Node.js v${version} — version 20+ required for MCP features`,
|
|
85
|
+
suggestion: 'Use nvm: `nvm install 20 && nvm use 20`, then reinstall: `npm install -g @padua/cli`',
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
// ---------------------------------------------------------------------------
|
|
89
|
+
// 2. checkMcpConfig
|
|
90
|
+
// ---------------------------------------------------------------------------
|
|
91
|
+
/**
|
|
92
|
+
* Check ~/.padua/mcp-providers.json exists and contains valid JSON.
|
|
93
|
+
*/
|
|
94
|
+
function checkMcpConfig() {
|
|
95
|
+
if (!fs.existsSync(MCP_PROVIDERS_PATH)) {
|
|
96
|
+
return {
|
|
97
|
+
name: 'MCP providers config',
|
|
98
|
+
status: 'fail',
|
|
99
|
+
message: 'mcp-providers.json not found',
|
|
100
|
+
suggestion: "Run 'padua login' to download the latest provider config",
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
try {
|
|
104
|
+
const content = fs.readFileSync(MCP_PROVIDERS_PATH, 'utf-8');
|
|
105
|
+
JSON.parse(content);
|
|
106
|
+
return {
|
|
107
|
+
name: 'MCP providers config',
|
|
108
|
+
status: 'pass',
|
|
109
|
+
message: 'mcp-providers.json found and valid',
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
return {
|
|
114
|
+
name: 'MCP providers config',
|
|
115
|
+
status: 'fail',
|
|
116
|
+
message: 'mcp-providers.json contains invalid JSON',
|
|
117
|
+
suggestion: "Run 'padua login' to download the latest provider config",
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
// ---------------------------------------------------------------------------
|
|
122
|
+
// 3. checkTokenStore
|
|
123
|
+
// ---------------------------------------------------------------------------
|
|
124
|
+
/**
|
|
125
|
+
* Check ~/.padua/tokens.db exists and can be opened by better-sqlite3.
|
|
126
|
+
* Missing file is a warn (created on first login); corrupt file is a fail.
|
|
127
|
+
*/
|
|
128
|
+
function checkTokenStore() {
|
|
129
|
+
if (!fs.existsSync(TOKENS_DB_PATH)) {
|
|
130
|
+
return {
|
|
131
|
+
name: 'Token store',
|
|
132
|
+
status: 'warn',
|
|
133
|
+
message: 'tokens.db not found — will be created on first login',
|
|
134
|
+
suggestion: "Delete ~/.padua/tokens.db and run 'padua login' to recreate",
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
try {
|
|
138
|
+
// Dynamic require so the module can be mocked in tests
|
|
139
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
140
|
+
const Database = require('better-sqlite3');
|
|
141
|
+
const db = new Database(TOKENS_DB_PATH, { readonly: true });
|
|
142
|
+
db.close();
|
|
143
|
+
return {
|
|
144
|
+
name: 'Token store',
|
|
145
|
+
status: 'pass',
|
|
146
|
+
message: 'tokens.db exists and schema version correct',
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
return {
|
|
151
|
+
name: 'Token store',
|
|
152
|
+
status: 'fail',
|
|
153
|
+
message: 'tokens.db exists but cannot be opened',
|
|
154
|
+
suggestion: "Delete ~/.padua/tokens.db and run 'padua login' to recreate",
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
// ---------------------------------------------------------------------------
|
|
159
|
+
// 4. checkEncryptionKey
|
|
160
|
+
// ---------------------------------------------------------------------------
|
|
161
|
+
/**
|
|
162
|
+
* Check if the AES-256-GCM encryption key source is available.
|
|
163
|
+
* Currently only validates the env var path; keychain integration is future work.
|
|
164
|
+
*/
|
|
165
|
+
function checkEncryptionKey() {
|
|
166
|
+
const keyEnv = process.env.PADUA_DB_ENCRYPTION_KEY;
|
|
167
|
+
if (keyEnv) {
|
|
168
|
+
return {
|
|
169
|
+
name: 'Encryption key',
|
|
170
|
+
status: 'pass',
|
|
171
|
+
message: 'Encryption key available via PADUA_DB_ENCRYPTION_KEY',
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
return {
|
|
175
|
+
name: 'Encryption key',
|
|
176
|
+
status: 'warn',
|
|
177
|
+
message: 'PADUA_DB_ENCRYPTION_KEY not set and keychain unavailable — padua login will fail if tokens exist',
|
|
178
|
+
suggestion: 'Set PADUA_DB_ENCRYPTION_KEY or ensure OS keychain is accessible',
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
// ---------------------------------------------------------------------------
|
|
182
|
+
// 5. checkMcpPort
|
|
183
|
+
// ---------------------------------------------------------------------------
|
|
184
|
+
/**
|
|
185
|
+
* Check if the MCP port (default 8919) is available or owned by the daemon.
|
|
186
|
+
* Uses net.createServer to probe availability; reads the PID file to
|
|
187
|
+
* determine whether an existing listener is the MCP daemon.
|
|
188
|
+
*/
|
|
189
|
+
function checkMcpPort(port = DEFAULT_MCP_PORT) {
|
|
190
|
+
return new Promise((resolve) => {
|
|
191
|
+
const server = net.createServer();
|
|
192
|
+
server.once('listening', () => {
|
|
193
|
+
server.close(() => {
|
|
194
|
+
resolve({
|
|
195
|
+
name: 'MCP port',
|
|
196
|
+
status: 'pass',
|
|
197
|
+
message: `Port ${port} available`,
|
|
198
|
+
});
|
|
199
|
+
});
|
|
200
|
+
});
|
|
201
|
+
server.once('error', (err) => {
|
|
202
|
+
if (err.code !== 'EADDRINUSE') {
|
|
203
|
+
resolve({
|
|
204
|
+
name: 'MCP port',
|
|
205
|
+
status: 'fail',
|
|
206
|
+
message: `Port ${port} check failed: ${err.message}`,
|
|
207
|
+
suggestion: `Configure mcp.port in padua.config.json or stop the process using port ${port}`,
|
|
208
|
+
});
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
if (fs.existsSync(MCP_PID_FILE)) {
|
|
212
|
+
try {
|
|
213
|
+
const pid = parseInt(fs.readFileSync(MCP_PID_FILE, 'utf-8').trim(), 10);
|
|
214
|
+
resolve({
|
|
215
|
+
name: 'MCP port',
|
|
216
|
+
status: 'pass',
|
|
217
|
+
message: `Port ${port} in use by MCP daemon (PID ${pid})`,
|
|
218
|
+
});
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
catch {
|
|
222
|
+
// PID file unreadable — fall through to generic fail
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
resolve({
|
|
226
|
+
name: 'MCP port',
|
|
227
|
+
status: 'fail',
|
|
228
|
+
message: `Port ${port} in use by another process`,
|
|
229
|
+
suggestion: `Configure mcp.port in padua.config.json or stop the process using port ${port}`,
|
|
230
|
+
});
|
|
231
|
+
});
|
|
232
|
+
server.listen(port, '127.0.0.1');
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
//# sourceMappingURL=mcp-checks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-checks.js","sourceRoot":"","sources":["../../../src/commands/doctor/mcp-checks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP service diagnostic checks for the doctor command.
|
|
3
|
+
*
|
|
4
|
+
* Covers: MCP daemon health, GitLab API token, and Atlassian API token.
|
|
5
|
+
*
|
|
6
|
+
* All checks are read-only and non-destructive. Each returns a DoctorCheck
|
|
7
|
+
* and must never throw — errors are caught and surfaced as fail/warn results.
|
|
8
|
+
*/
|
|
9
|
+
import { DoctorCheck } from './types';
|
|
10
|
+
/**
|
|
11
|
+
* Minimal token shape required by the API diagnostic checks.
|
|
12
|
+
* Callers read this from the token store and pass it in, keeping these
|
|
13
|
+
* checks free of direct store dependencies.
|
|
14
|
+
*/
|
|
15
|
+
export interface TokenInfo {
|
|
16
|
+
expiresAt: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Check if the MCP daemon is running and healthy.
|
|
20
|
+
* Reads the PID/auth file via the fork module, then calls the /health endpoint.
|
|
21
|
+
*/
|
|
22
|
+
export declare function checkMcpDaemon(): Promise<DoctorCheck>;
|
|
23
|
+
/**
|
|
24
|
+
* Check if the stored GitLab token exists and is not expired.
|
|
25
|
+
* Accepts a TokenInfo (or null) so the caller can inject token data from
|
|
26
|
+
* the store without this function needing to open the database directly.
|
|
27
|
+
*/
|
|
28
|
+
export declare function checkGitLabApi(token: TokenInfo | null): DoctorCheck;
|
|
29
|
+
/**
|
|
30
|
+
* Check if the stored Atlassian token exists and is not expired.
|
|
31
|
+
* Accepts a TokenInfo (or null) so the caller can inject token data from
|
|
32
|
+
* the store without this function needing to open the database directly.
|
|
33
|
+
*/
|
|
34
|
+
export declare function checkAtlassianApi(token: TokenInfo | null): DoctorCheck;
|
|
35
|
+
//# sourceMappingURL=mcp-service-checks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-service-checks.d.ts","sourceRoot":"","sources":["../../../src/commands/doctor/mcp-service-checks.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAMtC;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD;;;GAGG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,CA2C3D;AAMD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,GAAG,WAAW,CA2BnE;AAMD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,GAAG,WAAW,CA2BtE"}
|