@padua/cli 1.13.1 → 2.0.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.
- 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
|
@@ -44,11 +44,15 @@ async function handleStatus(options) {
|
|
|
44
44
|
ecr: (0, types_1.hasEcrConfig)(config)
|
|
45
45
|
? await (0, checks_1.checkECRStatus)(config.ecr)
|
|
46
46
|
: null,
|
|
47
|
+
gitlab: await (0, checks_1.checkGitLabToken)(),
|
|
48
|
+
atlassian: await (0, checks_1.checkAtlassianToken)(),
|
|
49
|
+
mcpServer: await (0, checks_1.checkMcpServer)(),
|
|
47
50
|
};
|
|
48
51
|
// Determine if all services are healthy
|
|
49
52
|
const allHealthy = result.sso.authenticated
|
|
50
53
|
&& (result.codeartifact === null || result.codeartifact.authenticated)
|
|
51
|
-
&& (result.ecr === null || result.ecr.authenticated)
|
|
54
|
+
&& (result.ecr === null || result.ecr.authenticated)
|
|
55
|
+
&& result.mcpServer.running;
|
|
52
56
|
// In quiet mode, only output if there are issues
|
|
53
57
|
if (options.quiet && allHealthy) {
|
|
54
58
|
process.exit(0);
|
|
@@ -142,6 +146,54 @@ function displayStatus(result, profile, options) {
|
|
|
142
146
|
}
|
|
143
147
|
}
|
|
144
148
|
}
|
|
149
|
+
// GitLab Token Status
|
|
150
|
+
console.log('');
|
|
151
|
+
console.log(bold('GitLab'));
|
|
152
|
+
if (result.gitlab.authenticated) {
|
|
153
|
+
console.log(` Status: ${success('Authenticated')}`);
|
|
154
|
+
if (result.gitlab.expiresIn) {
|
|
155
|
+
console.log(` Expires: ${cyan(`in ${result.gitlab.expiresIn}`)}`);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
console.log(` Status: ${error('Not authenticated')}`);
|
|
160
|
+
if (result.gitlab.error) {
|
|
161
|
+
console.log(` Error: ${dim(result.gitlab.error)}`);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
// Atlassian Token Status
|
|
165
|
+
console.log('');
|
|
166
|
+
console.log(bold('Atlassian'));
|
|
167
|
+
if (result.atlassian.authenticated) {
|
|
168
|
+
console.log(` Status: ${success('Authenticated')}`);
|
|
169
|
+
if (result.atlassian.expiresIn) {
|
|
170
|
+
console.log(` Expires: ${cyan(`in ${result.atlassian.expiresIn}`)}`);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
console.log(` Status: ${error('Not authenticated')}`);
|
|
175
|
+
if (result.atlassian.error) {
|
|
176
|
+
console.log(` Error: ${dim(result.atlassian.error)}`);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
// MCP Server Status
|
|
180
|
+
console.log('');
|
|
181
|
+
console.log(bold('MCP Server'));
|
|
182
|
+
if (result.mcpServer.running) {
|
|
183
|
+
console.log(` Status: ${success('Running')}`);
|
|
184
|
+
if (result.mcpServer.url) {
|
|
185
|
+
console.log(` URL: ${cyan(result.mcpServer.url)}`);
|
|
186
|
+
}
|
|
187
|
+
if (result.mcpServer.health) {
|
|
188
|
+
console.log(` Health: ${result.mcpServer.health === 'ok' ? success(result.mcpServer.health) : error(result.mcpServer.health)}`);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
console.log(` Status: ${error('Not running')}`);
|
|
193
|
+
if (result.mcpServer.error) {
|
|
194
|
+
console.log(` Error: ${dim(result.mcpServer.error)}`);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
145
197
|
console.log('');
|
|
146
198
|
}
|
|
147
199
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/status/index.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/status/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Status checks for MCP-related services: GitLab token, Atlassian token,
|
|
3
|
+
* and the MCP background daemon.
|
|
4
|
+
*
|
|
5
|
+
* All functions accept an optional TokenStore injection so tests can drive
|
|
6
|
+
* them with NullTokenStore without touching disk or network.
|
|
7
|
+
*/
|
|
8
|
+
import type { TokenStore } from '../../mcp/store/types';
|
|
9
|
+
import type { ProviderTokenStatus, McpServerStatus } from './types';
|
|
10
|
+
/**
|
|
11
|
+
* Format a Unix seconds timestamp as a human-readable time-until-expiry string.
|
|
12
|
+
*
|
|
13
|
+
* Returns "Xh Ym" when the remainder exceeds one hour, "Ym" otherwise.
|
|
14
|
+
* Returns "expired" when the timestamp is in the past or at the present moment.
|
|
15
|
+
*/
|
|
16
|
+
export declare function formatExpiresIn(expiresAtSec: number): string;
|
|
17
|
+
/**
|
|
18
|
+
* Check GitLab OAuth token status.
|
|
19
|
+
*
|
|
20
|
+
* When a store is supplied (tests), it is used directly. Otherwise the
|
|
21
|
+
* on-disk SQLite store is opened via PADUA_MCP_ENCRYPTION_KEY.
|
|
22
|
+
*/
|
|
23
|
+
export declare function checkGitLabToken(store?: TokenStore): Promise<ProviderTokenStatus>;
|
|
24
|
+
/**
|
|
25
|
+
* Check Atlassian OAuth token status.
|
|
26
|
+
*
|
|
27
|
+
* When a store is supplied (tests), it is used directly. Otherwise the
|
|
28
|
+
* on-disk SQLite store is opened via PADUA_MCP_ENCRYPTION_KEY.
|
|
29
|
+
*/
|
|
30
|
+
export declare function checkAtlassianToken(store?: TokenStore): Promise<ProviderTokenStatus>;
|
|
31
|
+
/**
|
|
32
|
+
* Check whether the MCP background daemon is running and healthy.
|
|
33
|
+
*/
|
|
34
|
+
export declare function checkMcpServer(): Promise<McpServerStatus>;
|
|
35
|
+
//# sourceMappingURL=mcp-checks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-checks.d.ts","sourceRoot":"","sources":["../../../src/commands/status/mcp-checks.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,uBAAuB,CAAC;AAGrE,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAMpE;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAY5D;AAkED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAGvF;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAG1F;AAED;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,eAAe,CAAC,CAkB/D"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Status checks for MCP-related services: GitLab token, Atlassian token,
|
|
4
|
+
* and the MCP background daemon.
|
|
5
|
+
*
|
|
6
|
+
* All functions accept an optional TokenStore injection so tests can drive
|
|
7
|
+
* them with NullTokenStore without touching disk or network.
|
|
8
|
+
*/
|
|
9
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
12
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
13
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
14
|
+
}
|
|
15
|
+
Object.defineProperty(o, k2, desc);
|
|
16
|
+
}) : (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
o[k2] = m[k];
|
|
19
|
+
}));
|
|
20
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
21
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
22
|
+
}) : function(o, v) {
|
|
23
|
+
o["default"] = v;
|
|
24
|
+
});
|
|
25
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
26
|
+
var ownKeys = function(o) {
|
|
27
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
28
|
+
var ar = [];
|
|
29
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
30
|
+
return ar;
|
|
31
|
+
};
|
|
32
|
+
return ownKeys(o);
|
|
33
|
+
};
|
|
34
|
+
return function (mod) {
|
|
35
|
+
if (mod && mod.__esModule) return mod;
|
|
36
|
+
var result = {};
|
|
37
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
38
|
+
__setModuleDefault(result, mod);
|
|
39
|
+
return result;
|
|
40
|
+
};
|
|
41
|
+
})();
|
|
42
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
+
exports.formatExpiresIn = formatExpiresIn;
|
|
44
|
+
exports.checkGitLabToken = checkGitLabToken;
|
|
45
|
+
exports.checkAtlassianToken = checkAtlassianToken;
|
|
46
|
+
exports.checkMcpServer = checkMcpServer;
|
|
47
|
+
const fs = __importStar(require("fs"));
|
|
48
|
+
const path = __importStar(require("path"));
|
|
49
|
+
const os = __importStar(require("os"));
|
|
50
|
+
const fork_1 = require("../../mcp/daemon/fork");
|
|
51
|
+
const health_1 = require("../../mcp/daemon/health");
|
|
52
|
+
// ---------------------------------------------------------------------------
|
|
53
|
+
// formatExpiresIn
|
|
54
|
+
// ---------------------------------------------------------------------------
|
|
55
|
+
/**
|
|
56
|
+
* Format a Unix seconds timestamp as a human-readable time-until-expiry string.
|
|
57
|
+
*
|
|
58
|
+
* Returns "Xh Ym" when the remainder exceeds one hour, "Ym" otherwise.
|
|
59
|
+
* Returns "expired" when the timestamp is in the past or at the present moment.
|
|
60
|
+
*/
|
|
61
|
+
function formatExpiresIn(expiresAtSec) {
|
|
62
|
+
const diffMs = expiresAtSec * 1000 - Date.now();
|
|
63
|
+
if (diffMs <= 0)
|
|
64
|
+
return 'expired';
|
|
65
|
+
// Ceil to avoid rounding down partial minutes (e.g. 59.9s → 1m not 0m)
|
|
66
|
+
const totalMinutes = Math.ceil(diffMs / 60000);
|
|
67
|
+
const hours = Math.floor(totalMinutes / 60);
|
|
68
|
+
const minutes = totalMinutes % 60;
|
|
69
|
+
if (hours > 0)
|
|
70
|
+
return `${hours}h ${minutes}m`;
|
|
71
|
+
return `${totalMinutes}m`;
|
|
72
|
+
}
|
|
73
|
+
// ---------------------------------------------------------------------------
|
|
74
|
+
// Internal helpers
|
|
75
|
+
// ---------------------------------------------------------------------------
|
|
76
|
+
function evaluateToken(token) {
|
|
77
|
+
const nowSec = Math.floor(Date.now() / 1000);
|
|
78
|
+
if (token.expiresAt <= nowSec) {
|
|
79
|
+
return { authenticated: false, error: 'Token expired' };
|
|
80
|
+
}
|
|
81
|
+
return {
|
|
82
|
+
authenticated: true,
|
|
83
|
+
expiresAt: token.expiresAt,
|
|
84
|
+
expiresIn: formatExpiresIn(token.expiresAt),
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
function readTokenFromStore(store, service) {
|
|
88
|
+
try {
|
|
89
|
+
const token = store.get(service);
|
|
90
|
+
if (!token)
|
|
91
|
+
return { authenticated: false };
|
|
92
|
+
return evaluateToken(token);
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
return { authenticated: false, error: 'Unable to check token store' };
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Open the on-disk SQLite store and read a token.
|
|
100
|
+
* Requires PADUA_MCP_ENCRYPTION_KEY env var to be set.
|
|
101
|
+
* Returns not-authenticated gracefully when the store is unavailable.
|
|
102
|
+
*/
|
|
103
|
+
function readTokenFromDisk(service) {
|
|
104
|
+
try {
|
|
105
|
+
const hexKey = process.env['PADUA_DB_ENCRYPTION_KEY'];
|
|
106
|
+
if (!hexKey)
|
|
107
|
+
return { authenticated: false, error: 'Unable to check token store' };
|
|
108
|
+
const dbPath = path.join(os.homedir(), '.padua', 'tokens.db');
|
|
109
|
+
if (!fs.existsSync(dbPath))
|
|
110
|
+
return { authenticated: false };
|
|
111
|
+
// Dynamic require avoids pulling better-sqlite3 into the common import path.
|
|
112
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
113
|
+
const { SqliteTokenStore } = require('../../mcp/store/sqlite');
|
|
114
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
115
|
+
const { createEncryptor } = require('../../mcp/store/encrypt');
|
|
116
|
+
const encryptor = createEncryptor(hexKey);
|
|
117
|
+
const store = SqliteTokenStore.create(dbPath, encryptor);
|
|
118
|
+
try {
|
|
119
|
+
return readTokenFromStore(store, service);
|
|
120
|
+
}
|
|
121
|
+
finally {
|
|
122
|
+
store.close();
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
return { authenticated: false, error: 'Unable to check token store' };
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
// ---------------------------------------------------------------------------
|
|
130
|
+
// Public API
|
|
131
|
+
// ---------------------------------------------------------------------------
|
|
132
|
+
/**
|
|
133
|
+
* Check GitLab OAuth token status.
|
|
134
|
+
*
|
|
135
|
+
* When a store is supplied (tests), it is used directly. Otherwise the
|
|
136
|
+
* on-disk SQLite store is opened via PADUA_MCP_ENCRYPTION_KEY.
|
|
137
|
+
*/
|
|
138
|
+
async function checkGitLabToken(store) {
|
|
139
|
+
if (store)
|
|
140
|
+
return readTokenFromStore(store, 'gitlab');
|
|
141
|
+
return readTokenFromDisk('gitlab');
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Check Atlassian OAuth token status.
|
|
145
|
+
*
|
|
146
|
+
* When a store is supplied (tests), it is used directly. Otherwise the
|
|
147
|
+
* on-disk SQLite store is opened via PADUA_MCP_ENCRYPTION_KEY.
|
|
148
|
+
*/
|
|
149
|
+
async function checkAtlassianToken(store) {
|
|
150
|
+
if (store)
|
|
151
|
+
return readTokenFromStore(store, 'atlassian');
|
|
152
|
+
return readTokenFromDisk('atlassian');
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Check whether the MCP background daemon is running and healthy.
|
|
156
|
+
*/
|
|
157
|
+
async function checkMcpServer() {
|
|
158
|
+
try {
|
|
159
|
+
const daemon = (0, fork_1.readExistingDaemon)();
|
|
160
|
+
if (!daemon || !(0, fork_1.isProcessAlive)(daemon.pid)) {
|
|
161
|
+
return { running: false };
|
|
162
|
+
}
|
|
163
|
+
const health = await (0, health_1.checkHealth)(daemon.port);
|
|
164
|
+
return {
|
|
165
|
+
running: true,
|
|
166
|
+
url: `http://127.0.0.1:${daemon.port}/mcp`,
|
|
167
|
+
pid: daemon.pid,
|
|
168
|
+
health: health.status,
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
catch (err) {
|
|
172
|
+
return { running: false, error: err.message };
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=mcp-checks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-checks.js","sourceRoot":"","sources":["../../../src/commands/status/mcp-checks.ts"],"names":[],"mappings":"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"}
|
|
@@ -54,6 +54,34 @@ export interface ECRStatus extends ServiceStatus {
|
|
|
54
54
|
/** Registry URL if configured */
|
|
55
55
|
registry?: string;
|
|
56
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* GitLab or Atlassian OAuth token status
|
|
59
|
+
*/
|
|
60
|
+
export interface ProviderTokenStatus {
|
|
61
|
+
/** Whether a valid, non-expired token is present */
|
|
62
|
+
authenticated: boolean;
|
|
63
|
+
/** Token expiry as Unix timestamp in seconds */
|
|
64
|
+
expiresAt?: number;
|
|
65
|
+
/** Human-readable expiry string, e.g. "1h 40m" or "52m" */
|
|
66
|
+
expiresIn?: string;
|
|
67
|
+
/** Error message when the check itself failed */
|
|
68
|
+
error?: string;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* MCP background server status
|
|
72
|
+
*/
|
|
73
|
+
export interface McpServerStatus {
|
|
74
|
+
/** Whether the daemon process is running and reachable */
|
|
75
|
+
running: boolean;
|
|
76
|
+
/** Full MCP endpoint URL, e.g. "http://127.0.0.1:8919/mcp" */
|
|
77
|
+
url?: string;
|
|
78
|
+
/** Daemon PID */
|
|
79
|
+
pid?: number;
|
|
80
|
+
/** Health check result from the /health endpoint */
|
|
81
|
+
health?: 'ok' | 'degraded' | 'error';
|
|
82
|
+
/** Error message when the check itself failed */
|
|
83
|
+
error?: string;
|
|
84
|
+
}
|
|
57
85
|
/**
|
|
58
86
|
* Complete status result for all services
|
|
59
87
|
*/
|
|
@@ -64,6 +92,12 @@ export interface StatusResult {
|
|
|
64
92
|
codeartifact: CodeArtifactStatus | null;
|
|
65
93
|
/** ECR authentication status (null if not configured) */
|
|
66
94
|
ecr: ECRStatus | null;
|
|
95
|
+
/** GitLab OAuth token status */
|
|
96
|
+
gitlab: ProviderTokenStatus;
|
|
97
|
+
/** Atlassian OAuth token status */
|
|
98
|
+
atlassian: ProviderTokenStatus;
|
|
99
|
+
/** MCP background server status */
|
|
100
|
+
mcpServer: McpServerStatus;
|
|
67
101
|
}
|
|
68
102
|
/**
|
|
69
103
|
* Command-line options for `padua status`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/commands/status/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc;IACd,MAAM,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,qDAAqD;IACrD,aAAa,EAAE,OAAO,CAAC;IACvB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,aAAa;IAC9C,wCAAwC;IACxC,QAAQ,CAAC,EAAE,WAAW,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IACvD,iCAAiC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,aAAa;IAC9C,iCAAiC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,gCAAgC;IAChC,GAAG,EAAE,SAAS,CAAC;IACf,kEAAkE;IAClE,YAAY,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACxC,yDAAyD;IACzD,GAAG,EAAE,SAAS,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/commands/status/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc;IACd,MAAM,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,qDAAqD;IACrD,aAAa,EAAE,OAAO,CAAC;IACvB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,aAAa;IAC9C,wCAAwC;IACxC,QAAQ,CAAC,EAAE,WAAW,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IACvD,iCAAiC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,aAAa;IAC9C,iCAAiC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,oDAAoD;IACpD,aAAa,EAAE,OAAO,CAAC;IACvB,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,0DAA0D;IAC1D,OAAO,EAAE,OAAO,CAAC;IACjB,8DAA8D;IAC9D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iBAAiB;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,MAAM,CAAC,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC;IACrC,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,gCAAgC;IAChC,GAAG,EAAE,SAAS,CAAC;IACf,kEAAkE;IAClE,YAAY,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACxC,yDAAyD;IACzD,GAAG,EAAE,SAAS,GAAG,IAAI,CAAC;IACtB,gCAAgC;IAChC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,mCAAmC;IACnC,SAAS,EAAE,mBAAmB,CAAC;IAC/B,mCAAmC;IACnC,SAAS,EAAE,eAAe,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6BAA6B;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sCAAsC;IACtC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { McpLocalConfigSchema, GitLabProviderConfigSchema, AtlassianProviderConfigSchema, McpProvidersConfigSchema, } from './types';
|
|
2
|
+
export type { McpLocalConfig, GitLabProviderConfig, AtlassianProviderConfig, McpProvidersConfig, } from './types';
|
|
3
|
+
export { getDefaultMcpConfig, loadMcpConfig, loadProvidersConfig, downloadProvidersConfig, } from './loaders';
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,6BAA6B,EAC7B,wBAAwB,GACzB,MAAM,SAAS,CAAC;AAEjB,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.downloadProvidersConfig = exports.loadProvidersConfig = exports.loadMcpConfig = exports.getDefaultMcpConfig = exports.McpProvidersConfigSchema = exports.AtlassianProviderConfigSchema = exports.GitLabProviderConfigSchema = exports.McpLocalConfigSchema = void 0;
|
|
4
|
+
var types_1 = require("./types");
|
|
5
|
+
Object.defineProperty(exports, "McpLocalConfigSchema", { enumerable: true, get: function () { return types_1.McpLocalConfigSchema; } });
|
|
6
|
+
Object.defineProperty(exports, "GitLabProviderConfigSchema", { enumerable: true, get: function () { return types_1.GitLabProviderConfigSchema; } });
|
|
7
|
+
Object.defineProperty(exports, "AtlassianProviderConfigSchema", { enumerable: true, get: function () { return types_1.AtlassianProviderConfigSchema; } });
|
|
8
|
+
Object.defineProperty(exports, "McpProvidersConfigSchema", { enumerable: true, get: function () { return types_1.McpProvidersConfigSchema; } });
|
|
9
|
+
var loaders_1 = require("./loaders");
|
|
10
|
+
Object.defineProperty(exports, "getDefaultMcpConfig", { enumerable: true, get: function () { return loaders_1.getDefaultMcpConfig; } });
|
|
11
|
+
Object.defineProperty(exports, "loadMcpConfig", { enumerable: true, get: function () { return loaders_1.loadMcpConfig; } });
|
|
12
|
+
Object.defineProperty(exports, "loadProvidersConfig", { enumerable: true, get: function () { return loaders_1.loadProvidersConfig; } });
|
|
13
|
+
Object.defineProperty(exports, "downloadProvidersConfig", { enumerable: true, get: function () { return loaders_1.downloadProvidersConfig; } });
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/config/index.ts"],"names":[],"mappings":";;;AAAA,iCAKiB;AAJf,6GAAA,oBAAoB,OAAA;AACpB,mHAAA,0BAA0B,OAAA;AAC1B,sHAAA,6BAA6B,OAAA;AAC7B,iHAAA,wBAAwB,OAAA;AAU1B,qCAKmB;AAJjB,8GAAA,mBAAmB,OAAA;AACnB,wGAAA,aAAa,OAAA;AACb,8GAAA,mBAAmB,OAAA;AACnB,kHAAA,uBAAuB,OAAA"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP config loader functions.
|
|
3
|
+
*
|
|
4
|
+
* Reads padua.config.json (mcp key) and mcp-providers.json,
|
|
5
|
+
* validates with Zod schemas from types.ts, and returns typed defaults.
|
|
6
|
+
*/
|
|
7
|
+
import { McpLocalConfig, McpProvidersConfig } from './types';
|
|
8
|
+
/**
|
|
9
|
+
* Returns a fresh McpLocalConfig object containing all default values.
|
|
10
|
+
* All fields are populated so callers can rely on the result being complete.
|
|
11
|
+
*/
|
|
12
|
+
export declare function getDefaultMcpConfig(): McpLocalConfig;
|
|
13
|
+
/**
|
|
14
|
+
* Reads the `mcp` key from `~/.padua/padua.config.json` (or `configPath`) and
|
|
15
|
+
* returns a validated McpLocalConfig merged over the defaults.
|
|
16
|
+
*
|
|
17
|
+
* Returns defaults when:
|
|
18
|
+
* - The file does not exist.
|
|
19
|
+
* - The file exists but has no `mcp` key.
|
|
20
|
+
*
|
|
21
|
+
* Throws ValidationError (code INVALID_CONFIG) when:
|
|
22
|
+
* - The `mcp` key is present but fails Zod validation.
|
|
23
|
+
* - The file contains invalid JSON.
|
|
24
|
+
*/
|
|
25
|
+
export declare function loadMcpConfig(configPath?: string): McpLocalConfig;
|
|
26
|
+
/**
|
|
27
|
+
* Reads `~/.padua/mcp-providers.json` (or `configPath`) and returns a validated
|
|
28
|
+
* McpProvidersConfig.
|
|
29
|
+
*
|
|
30
|
+
* Returns null when the file does not exist (not an error condition — the user
|
|
31
|
+
* simply has not downloaded the provider config yet).
|
|
32
|
+
*
|
|
33
|
+
* Throws ValidationError (code INVALID_CONFIG) when:
|
|
34
|
+
* - The file exists but fails Zod validation.
|
|
35
|
+
* - The file contains invalid JSON.
|
|
36
|
+
*/
|
|
37
|
+
export declare function loadProvidersConfig(configPath?: string): McpProvidersConfig | null;
|
|
38
|
+
/**
|
|
39
|
+
* Downloads the provider config from S3 using the active SSO profile and writes
|
|
40
|
+
* it to `~/.padua/mcp-providers.json` with permissions 0o600.
|
|
41
|
+
*
|
|
42
|
+
* Throws an Error when the aws CLI exits with a non-zero status code.
|
|
43
|
+
*/
|
|
44
|
+
export declare function downloadProvidersConfig(profile: string): Promise<void>;
|
|
45
|
+
//# sourceMappingURL=loaders.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loaders.d.ts","sourceRoot":"","sources":["../../../src/mcp/config/loaders.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,EACL,cAAc,EACd,kBAAkB,EAGnB,MAAM,SAAS,CAAC;AAgBjB;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,cAAc,CAWpD;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,cAAc,CAmBjE;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAkBlF;AAMD;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAa5E"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* MCP config loader functions.
|
|
4
|
+
*
|
|
5
|
+
* Reads padua.config.json (mcp key) and mcp-providers.json,
|
|
6
|
+
* validates with Zod schemas from types.ts, and returns typed defaults.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.getDefaultMcpConfig = getDefaultMcpConfig;
|
|
10
|
+
exports.loadMcpConfig = loadMcpConfig;
|
|
11
|
+
exports.loadProvidersConfig = loadProvidersConfig;
|
|
12
|
+
exports.downloadProvidersConfig = downloadProvidersConfig;
|
|
13
|
+
const child_process_1 = require("child_process");
|
|
14
|
+
const fs_1 = require("fs");
|
|
15
|
+
const os_1 = require("os");
|
|
16
|
+
const path_1 = require("path");
|
|
17
|
+
const types_1 = require("./types");
|
|
18
|
+
const errors_1 = require("../errors");
|
|
19
|
+
// ---------------------------------------------------------------------------
|
|
20
|
+
// Path constants
|
|
21
|
+
// ---------------------------------------------------------------------------
|
|
22
|
+
const PADUA_DIR = (0, path_1.join)((0, os_1.homedir)(), '.padua');
|
|
23
|
+
const LOCAL_CONFIG_PATH = (0, path_1.join)(PADUA_DIR, 'padua.config.json');
|
|
24
|
+
const PROVIDERS_CONFIG_PATH = (0, path_1.join)(PADUA_DIR, 'mcp-providers.json');
|
|
25
|
+
const S3_PROVIDERS_URI = 's3://paduafg-developers/mcp-config.json';
|
|
26
|
+
// ---------------------------------------------------------------------------
|
|
27
|
+
// Defaults
|
|
28
|
+
// ---------------------------------------------------------------------------
|
|
29
|
+
/**
|
|
30
|
+
* Returns a fresh McpLocalConfig object containing all default values.
|
|
31
|
+
* All fields are populated so callers can rely on the result being complete.
|
|
32
|
+
*/
|
|
33
|
+
function getDefaultMcpConfig() {
|
|
34
|
+
return {
|
|
35
|
+
port: 8919,
|
|
36
|
+
store: {
|
|
37
|
+
path: (0, path_1.join)(PADUA_DIR, 'tokens.db'),
|
|
38
|
+
encryptionKeySource: 'keychain',
|
|
39
|
+
},
|
|
40
|
+
logging: {
|
|
41
|
+
level: 'info',
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
// ---------------------------------------------------------------------------
|
|
46
|
+
// loadMcpConfig
|
|
47
|
+
// ---------------------------------------------------------------------------
|
|
48
|
+
/**
|
|
49
|
+
* Reads the `mcp` key from `~/.padua/padua.config.json` (or `configPath`) and
|
|
50
|
+
* returns a validated McpLocalConfig merged over the defaults.
|
|
51
|
+
*
|
|
52
|
+
* Returns defaults when:
|
|
53
|
+
* - The file does not exist.
|
|
54
|
+
* - The file exists but has no `mcp` key.
|
|
55
|
+
*
|
|
56
|
+
* Throws ValidationError (code INVALID_CONFIG) when:
|
|
57
|
+
* - The `mcp` key is present but fails Zod validation.
|
|
58
|
+
* - The file contains invalid JSON.
|
|
59
|
+
*/
|
|
60
|
+
function loadMcpConfig(configPath) {
|
|
61
|
+
const filePath = configPath ?? LOCAL_CONFIG_PATH;
|
|
62
|
+
if (!(0, fs_1.existsSync)(filePath)) {
|
|
63
|
+
return getDefaultMcpConfig();
|
|
64
|
+
}
|
|
65
|
+
const raw = parseJsonFile(filePath);
|
|
66
|
+
const mcpRaw = raw.mcp ?? {};
|
|
67
|
+
const result = types_1.McpLocalConfigSchema.safeParse(mcpRaw);
|
|
68
|
+
if (!result.success) {
|
|
69
|
+
throw new errors_1.ValidationError(`Invalid mcp config: ${result.error.message}`, errors_1.ErrorCodes.INVALID_CONFIG);
|
|
70
|
+
}
|
|
71
|
+
return mergeWithDefaults(result.data);
|
|
72
|
+
}
|
|
73
|
+
// ---------------------------------------------------------------------------
|
|
74
|
+
// loadProvidersConfig
|
|
75
|
+
// ---------------------------------------------------------------------------
|
|
76
|
+
/**
|
|
77
|
+
* Reads `~/.padua/mcp-providers.json` (or `configPath`) and returns a validated
|
|
78
|
+
* McpProvidersConfig.
|
|
79
|
+
*
|
|
80
|
+
* Returns null when the file does not exist (not an error condition — the user
|
|
81
|
+
* simply has not downloaded the provider config yet).
|
|
82
|
+
*
|
|
83
|
+
* Throws ValidationError (code INVALID_CONFIG) when:
|
|
84
|
+
* - The file exists but fails Zod validation.
|
|
85
|
+
* - The file contains invalid JSON.
|
|
86
|
+
*/
|
|
87
|
+
function loadProvidersConfig(configPath) {
|
|
88
|
+
const filePath = configPath ?? PROVIDERS_CONFIG_PATH;
|
|
89
|
+
if (!(0, fs_1.existsSync)(filePath)) {
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
const raw = parseJsonFile(filePath);
|
|
93
|
+
const result = types_1.McpProvidersConfigSchema.safeParse(raw);
|
|
94
|
+
if (!result.success) {
|
|
95
|
+
throw new errors_1.ValidationError(`Invalid mcp-providers.json: ${result.error.message}`, errors_1.ErrorCodes.INVALID_CONFIG);
|
|
96
|
+
}
|
|
97
|
+
return result.data;
|
|
98
|
+
}
|
|
99
|
+
// ---------------------------------------------------------------------------
|
|
100
|
+
// downloadProvidersConfig
|
|
101
|
+
// ---------------------------------------------------------------------------
|
|
102
|
+
/**
|
|
103
|
+
* Downloads the provider config from S3 using the active SSO profile and writes
|
|
104
|
+
* it to `~/.padua/mcp-providers.json` with permissions 0o600.
|
|
105
|
+
*
|
|
106
|
+
* Throws an Error when the aws CLI exits with a non-zero status code.
|
|
107
|
+
*/
|
|
108
|
+
async function downloadProvidersConfig(profile) {
|
|
109
|
+
const result = (0, child_process_1.spawnSync)('aws', ['s3', 'cp', S3_PROVIDERS_URI, PROVIDERS_CONFIG_PATH, '--profile', profile], { stdio: 'pipe' });
|
|
110
|
+
if (result.status !== 0) {
|
|
111
|
+
const stderr = result.stderr?.toString() ?? '';
|
|
112
|
+
throw new Error(`Failed to download mcp-providers.json: ${stderr}`);
|
|
113
|
+
}
|
|
114
|
+
(0, fs_1.chmodSync)(PROVIDERS_CONFIG_PATH, 0o600);
|
|
115
|
+
}
|
|
116
|
+
// ---------------------------------------------------------------------------
|
|
117
|
+
// Internal helpers
|
|
118
|
+
// ---------------------------------------------------------------------------
|
|
119
|
+
/**
|
|
120
|
+
* Reads and parses a JSON file. Throws an Error with a clear message when
|
|
121
|
+
* the file content is not valid JSON (SyntaxError from JSON.parse).
|
|
122
|
+
*/
|
|
123
|
+
function parseJsonFile(filePath) {
|
|
124
|
+
const content = (0, fs_1.readFileSync)(filePath, 'utf8');
|
|
125
|
+
try {
|
|
126
|
+
return JSON.parse(content);
|
|
127
|
+
}
|
|
128
|
+
catch (err) {
|
|
129
|
+
throw new errors_1.ValidationError(`Failed to parse JSON at ${filePath}: ${err.message}`, errors_1.ErrorCodes.INVALID_CONFIG);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Merges user-supplied McpLocalConfig values over the defaults.
|
|
134
|
+
* Only top-level keys present in `userConfig` overwrite defaults; nested objects
|
|
135
|
+
* are merged shallowly so the user can override a single sub-field.
|
|
136
|
+
*/
|
|
137
|
+
function mergeWithDefaults(userConfig) {
|
|
138
|
+
const defaults = getDefaultMcpConfig();
|
|
139
|
+
return {
|
|
140
|
+
port: userConfig.port ?? defaults.port,
|
|
141
|
+
store: userConfig.store
|
|
142
|
+
? { ...defaults.store, ...userConfig.store }
|
|
143
|
+
: defaults.store,
|
|
144
|
+
logging: userConfig.logging
|
|
145
|
+
? { ...defaults.logging, ...userConfig.logging }
|
|
146
|
+
: defaults.logging,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=loaders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loaders.js","sourceRoot":"","sources":["../../../src/mcp/config/loaders.ts"],"names":[],"mappings":"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"}
|