@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
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* MCP daemon local settings read from the `mcp` key in padua.config.json.
|
|
4
|
+
* All fields are optional; callers apply defaults at load time.
|
|
5
|
+
*/
|
|
6
|
+
export interface McpLocalConfig {
|
|
7
|
+
/** Listening port for the MCP HTTP server. Default: 8919. */
|
|
8
|
+
port?: number;
|
|
9
|
+
store?: {
|
|
10
|
+
/** Absolute path to the SQLite token database. Default: ~/.padua/tokens.db */
|
|
11
|
+
path?: string;
|
|
12
|
+
/** Source for the AES-256-GCM encryption key. Default: keychain. */
|
|
13
|
+
encryptionKeySource?: 'keychain' | 'env';
|
|
14
|
+
};
|
|
15
|
+
logging?: {
|
|
16
|
+
/** Log verbosity level. Default: info. */
|
|
17
|
+
level?: 'debug' | 'info' | 'warn' | 'error';
|
|
18
|
+
/** Absolute path to the log file. Defaults to stderr when absent. */
|
|
19
|
+
path?: string;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export declare const McpLocalConfigSchema: z.ZodObject<{
|
|
23
|
+
port: z.ZodOptional<z.ZodNumber>;
|
|
24
|
+
store: z.ZodOptional<z.ZodObject<{
|
|
25
|
+
path: z.ZodOptional<z.ZodString>;
|
|
26
|
+
encryptionKeySource: z.ZodOptional<z.ZodEnum<["keychain", "env"]>>;
|
|
27
|
+
}, "strip", z.ZodTypeAny, {
|
|
28
|
+
path?: string | undefined;
|
|
29
|
+
encryptionKeySource?: "keychain" | "env" | undefined;
|
|
30
|
+
}, {
|
|
31
|
+
path?: string | undefined;
|
|
32
|
+
encryptionKeySource?: "keychain" | "env" | undefined;
|
|
33
|
+
}>>;
|
|
34
|
+
logging: z.ZodOptional<z.ZodObject<{
|
|
35
|
+
level: z.ZodOptional<z.ZodEnum<["debug", "info", "warn", "error"]>>;
|
|
36
|
+
path: z.ZodOptional<z.ZodString>;
|
|
37
|
+
}, "strip", z.ZodTypeAny, {
|
|
38
|
+
path?: string | undefined;
|
|
39
|
+
level?: "debug" | "info" | "warn" | "error" | undefined;
|
|
40
|
+
}, {
|
|
41
|
+
path?: string | undefined;
|
|
42
|
+
level?: "debug" | "info" | "warn" | "error" | undefined;
|
|
43
|
+
}>>;
|
|
44
|
+
}, "strip", z.ZodTypeAny, {
|
|
45
|
+
port?: number | undefined;
|
|
46
|
+
store?: {
|
|
47
|
+
path?: string | undefined;
|
|
48
|
+
encryptionKeySource?: "keychain" | "env" | undefined;
|
|
49
|
+
} | undefined;
|
|
50
|
+
logging?: {
|
|
51
|
+
path?: string | undefined;
|
|
52
|
+
level?: "debug" | "info" | "warn" | "error" | undefined;
|
|
53
|
+
} | undefined;
|
|
54
|
+
}, {
|
|
55
|
+
port?: number | undefined;
|
|
56
|
+
store?: {
|
|
57
|
+
path?: string | undefined;
|
|
58
|
+
encryptionKeySource?: "keychain" | "env" | undefined;
|
|
59
|
+
} | undefined;
|
|
60
|
+
logging?: {
|
|
61
|
+
path?: string | undefined;
|
|
62
|
+
level?: "debug" | "info" | "warn" | "error" | undefined;
|
|
63
|
+
} | undefined;
|
|
64
|
+
}>;
|
|
65
|
+
/**
|
|
66
|
+
* OAuth2 credentials and settings for the GitLab provider.
|
|
67
|
+
* Downloaded from S3 and stored in mcp-providers.json.
|
|
68
|
+
*/
|
|
69
|
+
export interface GitLabProviderConfig {
|
|
70
|
+
/** Base URL of the GitLab instance. HTTPS required. */
|
|
71
|
+
baseUrl: string;
|
|
72
|
+
/** OAuth2 application client ID. */
|
|
73
|
+
clientId: string;
|
|
74
|
+
/** OAuth2 scopes to request. At least one scope must be specified. */
|
|
75
|
+
scopes: string[];
|
|
76
|
+
/** Local port for the OAuth2 callback server. Default: 18080. */
|
|
77
|
+
redirectPort?: number;
|
|
78
|
+
}
|
|
79
|
+
export declare const GitLabProviderConfigSchema: z.ZodObject<{
|
|
80
|
+
/** z.string().url() validates URL structure; startsWith enforces HTTPS. */
|
|
81
|
+
baseUrl: z.ZodString;
|
|
82
|
+
clientId: z.ZodString;
|
|
83
|
+
scopes: z.ZodArray<z.ZodString, "many">;
|
|
84
|
+
redirectPort: z.ZodOptional<z.ZodNumber>;
|
|
85
|
+
}, "strip", z.ZodTypeAny, {
|
|
86
|
+
baseUrl: string;
|
|
87
|
+
clientId: string;
|
|
88
|
+
scopes: string[];
|
|
89
|
+
redirectPort?: number | undefined;
|
|
90
|
+
}, {
|
|
91
|
+
baseUrl: string;
|
|
92
|
+
clientId: string;
|
|
93
|
+
scopes: string[];
|
|
94
|
+
redirectPort?: number | undefined;
|
|
95
|
+
}>;
|
|
96
|
+
/**
|
|
97
|
+
* OAuth2 credentials and settings for the Atlassian provider.
|
|
98
|
+
* The clientSecret is required because Atlassian uses a confidential client flow.
|
|
99
|
+
*/
|
|
100
|
+
export interface AtlassianProviderConfig {
|
|
101
|
+
/** OAuth2 application client ID. */
|
|
102
|
+
clientId: string;
|
|
103
|
+
/** OAuth2 application client secret. Required for confidential client flow. */
|
|
104
|
+
clientSecret: string;
|
|
105
|
+
/** OAuth2 scopes to request. At least one scope must be specified. */
|
|
106
|
+
scopes: string[];
|
|
107
|
+
/** Local port for the OAuth2 callback server. Default: 18081. */
|
|
108
|
+
redirectPort?: number;
|
|
109
|
+
}
|
|
110
|
+
export declare const AtlassianProviderConfigSchema: z.ZodObject<{
|
|
111
|
+
clientId: z.ZodString;
|
|
112
|
+
clientSecret: z.ZodString;
|
|
113
|
+
scopes: z.ZodArray<z.ZodString, "many">;
|
|
114
|
+
redirectPort: z.ZodOptional<z.ZodNumber>;
|
|
115
|
+
}, "strip", z.ZodTypeAny, {
|
|
116
|
+
clientId: string;
|
|
117
|
+
scopes: string[];
|
|
118
|
+
clientSecret: string;
|
|
119
|
+
redirectPort?: number | undefined;
|
|
120
|
+
}, {
|
|
121
|
+
clientId: string;
|
|
122
|
+
scopes: string[];
|
|
123
|
+
clientSecret: string;
|
|
124
|
+
redirectPort?: number | undefined;
|
|
125
|
+
}>;
|
|
126
|
+
/**
|
|
127
|
+
* Root structure of mcp-providers.json, downloaded from S3.
|
|
128
|
+
* Both provider entries are optional — omit any provider that is not enabled.
|
|
129
|
+
*/
|
|
130
|
+
export interface McpProvidersConfig {
|
|
131
|
+
/** Schema version of the providers file (semver string). */
|
|
132
|
+
version: string;
|
|
133
|
+
providers: {
|
|
134
|
+
gitlab?: GitLabProviderConfig;
|
|
135
|
+
atlassian?: AtlassianProviderConfig;
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
export declare const McpProvidersConfigSchema: z.ZodObject<{
|
|
139
|
+
version: z.ZodString;
|
|
140
|
+
providers: z.ZodObject<{
|
|
141
|
+
gitlab: z.ZodOptional<z.ZodObject<{
|
|
142
|
+
/** z.string().url() validates URL structure; startsWith enforces HTTPS. */
|
|
143
|
+
baseUrl: z.ZodString;
|
|
144
|
+
clientId: z.ZodString;
|
|
145
|
+
scopes: z.ZodArray<z.ZodString, "many">;
|
|
146
|
+
redirectPort: z.ZodOptional<z.ZodNumber>;
|
|
147
|
+
}, "strip", z.ZodTypeAny, {
|
|
148
|
+
baseUrl: string;
|
|
149
|
+
clientId: string;
|
|
150
|
+
scopes: string[];
|
|
151
|
+
redirectPort?: number | undefined;
|
|
152
|
+
}, {
|
|
153
|
+
baseUrl: string;
|
|
154
|
+
clientId: string;
|
|
155
|
+
scopes: string[];
|
|
156
|
+
redirectPort?: number | undefined;
|
|
157
|
+
}>>;
|
|
158
|
+
atlassian: z.ZodOptional<z.ZodObject<{
|
|
159
|
+
clientId: z.ZodString;
|
|
160
|
+
clientSecret: z.ZodString;
|
|
161
|
+
scopes: z.ZodArray<z.ZodString, "many">;
|
|
162
|
+
redirectPort: z.ZodOptional<z.ZodNumber>;
|
|
163
|
+
}, "strip", z.ZodTypeAny, {
|
|
164
|
+
clientId: string;
|
|
165
|
+
scopes: string[];
|
|
166
|
+
clientSecret: string;
|
|
167
|
+
redirectPort?: number | undefined;
|
|
168
|
+
}, {
|
|
169
|
+
clientId: string;
|
|
170
|
+
scopes: string[];
|
|
171
|
+
clientSecret: string;
|
|
172
|
+
redirectPort?: number | undefined;
|
|
173
|
+
}>>;
|
|
174
|
+
}, "strip", z.ZodTypeAny, {
|
|
175
|
+
gitlab?: {
|
|
176
|
+
baseUrl: string;
|
|
177
|
+
clientId: string;
|
|
178
|
+
scopes: string[];
|
|
179
|
+
redirectPort?: number | undefined;
|
|
180
|
+
} | undefined;
|
|
181
|
+
atlassian?: {
|
|
182
|
+
clientId: string;
|
|
183
|
+
scopes: string[];
|
|
184
|
+
clientSecret: string;
|
|
185
|
+
redirectPort?: number | undefined;
|
|
186
|
+
} | undefined;
|
|
187
|
+
}, {
|
|
188
|
+
gitlab?: {
|
|
189
|
+
baseUrl: string;
|
|
190
|
+
clientId: string;
|
|
191
|
+
scopes: string[];
|
|
192
|
+
redirectPort?: number | undefined;
|
|
193
|
+
} | undefined;
|
|
194
|
+
atlassian?: {
|
|
195
|
+
clientId: string;
|
|
196
|
+
scopes: string[];
|
|
197
|
+
clientSecret: string;
|
|
198
|
+
redirectPort?: number | undefined;
|
|
199
|
+
} | undefined;
|
|
200
|
+
}>;
|
|
201
|
+
}, "strip", z.ZodTypeAny, {
|
|
202
|
+
version: string;
|
|
203
|
+
providers: {
|
|
204
|
+
gitlab?: {
|
|
205
|
+
baseUrl: string;
|
|
206
|
+
clientId: string;
|
|
207
|
+
scopes: string[];
|
|
208
|
+
redirectPort?: number | undefined;
|
|
209
|
+
} | undefined;
|
|
210
|
+
atlassian?: {
|
|
211
|
+
clientId: string;
|
|
212
|
+
scopes: string[];
|
|
213
|
+
clientSecret: string;
|
|
214
|
+
redirectPort?: number | undefined;
|
|
215
|
+
} | undefined;
|
|
216
|
+
};
|
|
217
|
+
}, {
|
|
218
|
+
version: string;
|
|
219
|
+
providers: {
|
|
220
|
+
gitlab?: {
|
|
221
|
+
baseUrl: string;
|
|
222
|
+
clientId: string;
|
|
223
|
+
scopes: string[];
|
|
224
|
+
redirectPort?: number | undefined;
|
|
225
|
+
} | undefined;
|
|
226
|
+
atlassian?: {
|
|
227
|
+
clientId: string;
|
|
228
|
+
scopes: string[];
|
|
229
|
+
clientSecret: string;
|
|
230
|
+
redirectPort?: number | undefined;
|
|
231
|
+
} | undefined;
|
|
232
|
+
};
|
|
233
|
+
}>;
|
|
234
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/mcp/config/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAaxB;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,6DAA6D;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,KAAK,CAAC,EAAE;QACN,8EAA8E;QAC9E,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,oEAAoE;QACpE,mBAAmB,CAAC,EAAE,UAAU,GAAG,KAAK,CAAC;KAC1C,CAAC;IAEF,OAAO,CAAC,EAAE;QACR,0CAA0C;QAC1C,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;QAC5C,qEAAqE;QACrE,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAc/B,CAAC;AAMH;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,sEAAsE;IACtE,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,iEAAiE;IACjE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,0BAA0B;IACrC,2EAA2E;;;;;;;;;;;;;;;EAK3E,CAAC;AAMH;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,+EAA+E;IAC/E,YAAY,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,iEAAiE;IACjE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;EAKxC,CAAC;AAMH;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE;QACT,MAAM,CAAC,EAAE,oBAAoB,CAAC;QAC9B,SAAS,CAAC,EAAE,uBAAuB,CAAC;KACrC,CAAC;CACH;AAED,eAAO,MAAM,wBAAwB;;;;YAlDnC,2EAA2E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwD3E,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.McpProvidersConfigSchema = exports.AtlassianProviderConfigSchema = exports.GitLabProviderConfigSchema = exports.McpLocalConfigSchema = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
// ---------------------------------------------------------------------------
|
|
6
|
+
// Shared primitive schemas
|
|
7
|
+
// ---------------------------------------------------------------------------
|
|
8
|
+
/** Non-reserved, non-privileged port range (1025-65535). */
|
|
9
|
+
const portSchema = zod_1.z.number().int().min(1025).max(65535).optional();
|
|
10
|
+
exports.McpLocalConfigSchema = zod_1.z.object({
|
|
11
|
+
port: portSchema,
|
|
12
|
+
store: zod_1.z
|
|
13
|
+
.object({
|
|
14
|
+
path: zod_1.z.string().optional(),
|
|
15
|
+
encryptionKeySource: zod_1.z.enum(['keychain', 'env']).optional(),
|
|
16
|
+
})
|
|
17
|
+
.optional(),
|
|
18
|
+
logging: zod_1.z
|
|
19
|
+
.object({
|
|
20
|
+
level: zod_1.z.enum(['debug', 'info', 'warn', 'error']).optional(),
|
|
21
|
+
path: zod_1.z.string().optional(),
|
|
22
|
+
})
|
|
23
|
+
.optional(),
|
|
24
|
+
});
|
|
25
|
+
exports.GitLabProviderConfigSchema = zod_1.z.object({
|
|
26
|
+
/** z.string().url() validates URL structure; startsWith enforces HTTPS. */
|
|
27
|
+
baseUrl: zod_1.z.string().url().startsWith('https://'),
|
|
28
|
+
clientId: zod_1.z.string().min(1),
|
|
29
|
+
scopes: zod_1.z.array(zod_1.z.string().min(1)).min(1),
|
|
30
|
+
redirectPort: portSchema,
|
|
31
|
+
});
|
|
32
|
+
exports.AtlassianProviderConfigSchema = zod_1.z.object({
|
|
33
|
+
clientId: zod_1.z.string().min(1),
|
|
34
|
+
clientSecret: zod_1.z.string().min(1),
|
|
35
|
+
scopes: zod_1.z.array(zod_1.z.string().min(1)).min(1),
|
|
36
|
+
redirectPort: portSchema,
|
|
37
|
+
});
|
|
38
|
+
exports.McpProvidersConfigSchema = zod_1.z.object({
|
|
39
|
+
version: zod_1.z.string(),
|
|
40
|
+
providers: zod_1.z.object({
|
|
41
|
+
gitlab: exports.GitLabProviderConfigSchema.optional(),
|
|
42
|
+
atlassian: exports.AtlassianProviderConfigSchema.optional(),
|
|
43
|
+
}),
|
|
44
|
+
});
|
|
45
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/mcp/config/types.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB,8EAA8E;AAC9E,2BAA2B;AAC3B,8EAA8E;AAE9E,4DAA4D;AAC5D,MAAM,UAAU,GAAG,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;AA6BvD,QAAA,oBAAoB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3C,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,OAAC;SACL,MAAM,CAAC;QACN,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC3B,mBAAmB,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE;KAC5D,CAAC;SACD,QAAQ,EAAE;IACb,OAAO,EAAE,OAAC;SACP,MAAM,CAAC;QACN,KAAK,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE;QAC5D,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC5B,CAAC;SACD,QAAQ,EAAE;CACd,CAAC,CAAC;AAqBU,QAAA,0BAA0B,GAAG,OAAC,CAAC,MAAM,CAAC;IACjD,2EAA2E;IAC3E,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;IAChD,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,MAAM,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,YAAY,EAAE,UAAU;CACzB,CAAC,CAAC;AAqBU,QAAA,6BAA6B,GAAG,OAAC,CAAC,MAAM,CAAC;IACpD,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,MAAM,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,YAAY,EAAE,UAAU;CACzB,CAAC,CAAC;AAmBU,QAAA,wBAAwB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC/C,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE;IACnB,SAAS,EAAE,OAAC,CAAC,MAAM,CAAC;QAClB,MAAM,EAAE,kCAA0B,CAAC,QAAQ,EAAE;QAC7C,SAAS,EAAE,qCAA6B,CAAC,QAAQ,EAAE;KACpD,CAAC;CACH,CAAC,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Daemon entry-point logic extracted for testability.
|
|
3
|
+
*
|
|
4
|
+
* All functions in this module are pure filesystem / process utilities that
|
|
5
|
+
* can be exercised in unit tests without forking a real daemon process.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Write the daemon startup confirmation file to tmpdir.
|
|
9
|
+
*
|
|
10
|
+
* Returns the absolute path of the file written so the caller can log it
|
|
11
|
+
* or pass it to cleanupOnShutdown.
|
|
12
|
+
*/
|
|
13
|
+
export declare function writeStartupFile(pid: number, port: number): string;
|
|
14
|
+
/**
|
|
15
|
+
* Remove daemon-owned files during graceful shutdown.
|
|
16
|
+
*
|
|
17
|
+
* Silently ignores ENOENT — any file that is already absent is fine.
|
|
18
|
+
* Any other filesystem error is re-thrown.
|
|
19
|
+
*/
|
|
20
|
+
export declare function cleanupOnShutdown(pid: number): void;
|
|
21
|
+
/**
|
|
22
|
+
* Read the package version from package.json in cwd.
|
|
23
|
+
*
|
|
24
|
+
* Falls back to "0.0.0" when the file cannot be found or parsed — this keeps
|
|
25
|
+
* the daemon running even in unusual deploy layouts.
|
|
26
|
+
*/
|
|
27
|
+
export declare function getPackageVersion(): string;
|
|
28
|
+
//# sourceMappingURL=entry-logic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entry-logic.d.ts","sourceRoot":"","sources":["../../../src/mcp/daemon/entry-logic.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CASlE;AAMD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAUnD;AAgBD;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAQ1C"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Daemon entry-point logic extracted for testability.
|
|
4
|
+
*
|
|
5
|
+
* All functions in this module are pure filesystem / process utilities that
|
|
6
|
+
* can be exercised in unit tests without forking a real daemon process.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.writeStartupFile = writeStartupFile;
|
|
10
|
+
exports.cleanupOnShutdown = cleanupOnShutdown;
|
|
11
|
+
exports.getPackageVersion = getPackageVersion;
|
|
12
|
+
const node_fs_1 = require("node:fs");
|
|
13
|
+
const node_path_1 = require("node:path");
|
|
14
|
+
const node_os_1 = require("node:os");
|
|
15
|
+
// ---------------------------------------------------------------------------
|
|
16
|
+
// writeStartupFile
|
|
17
|
+
// ---------------------------------------------------------------------------
|
|
18
|
+
/**
|
|
19
|
+
* Write the daemon startup confirmation file to tmpdir.
|
|
20
|
+
*
|
|
21
|
+
* Returns the absolute path of the file written so the caller can log it
|
|
22
|
+
* or pass it to cleanupOnShutdown.
|
|
23
|
+
*/
|
|
24
|
+
function writeStartupFile(pid, port) {
|
|
25
|
+
const filePath = (0, node_path_1.join)((0, node_os_1.tmpdir)(), `padua-mcp-${pid}.ready`);
|
|
26
|
+
const data = {
|
|
27
|
+
pid,
|
|
28
|
+
port,
|
|
29
|
+
readyAt: new Date().toISOString(),
|
|
30
|
+
};
|
|
31
|
+
(0, node_fs_1.writeFileSync)(filePath, JSON.stringify(data));
|
|
32
|
+
return filePath;
|
|
33
|
+
}
|
|
34
|
+
// ---------------------------------------------------------------------------
|
|
35
|
+
// cleanupOnShutdown
|
|
36
|
+
// ---------------------------------------------------------------------------
|
|
37
|
+
/**
|
|
38
|
+
* Remove daemon-owned files during graceful shutdown.
|
|
39
|
+
*
|
|
40
|
+
* Silently ignores ENOENT — any file that is already absent is fine.
|
|
41
|
+
* Any other filesystem error is re-thrown.
|
|
42
|
+
*/
|
|
43
|
+
function cleanupOnShutdown(pid) {
|
|
44
|
+
const files = [
|
|
45
|
+
(0, node_path_1.join)((0, node_os_1.homedir)(), '.padua', 'mcp-server.pid'),
|
|
46
|
+
(0, node_path_1.join)((0, node_os_1.homedir)(), '.padua', 'mcp-auth.json'),
|
|
47
|
+
(0, node_path_1.join)((0, node_os_1.tmpdir)(), `padua-mcp-${pid}.ready`),
|
|
48
|
+
];
|
|
49
|
+
for (const f of files) {
|
|
50
|
+
removeIfExists(f);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
function removeIfExists(filePath) {
|
|
54
|
+
try {
|
|
55
|
+
(0, node_fs_1.unlinkSync)(filePath);
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
if (err.code !== 'ENOENT') {
|
|
59
|
+
throw err;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// ---------------------------------------------------------------------------
|
|
64
|
+
// getPackageVersion
|
|
65
|
+
// ---------------------------------------------------------------------------
|
|
66
|
+
/**
|
|
67
|
+
* Read the package version from package.json in cwd.
|
|
68
|
+
*
|
|
69
|
+
* Falls back to "0.0.0" when the file cannot be found or parsed — this keeps
|
|
70
|
+
* the daemon running even in unusual deploy layouts.
|
|
71
|
+
*/
|
|
72
|
+
function getPackageVersion() {
|
|
73
|
+
try {
|
|
74
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
75
|
+
const pkg = require((0, node_path_1.join)(__dirname, '..', '..', '..', 'package.json'));
|
|
76
|
+
return pkg.version ?? '0.0.0';
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
return '0.0.0';
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=entry-logic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entry-logic.js","sourceRoot":"","sources":["../../../src/mcp/daemon/entry-logic.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAiBH,4CASC;AAYD,8CAUC;AAsBD,8CAQC;AA5ED,qCAAoD;AACpD,yCAAiC;AACjC,qCAA0C;AAG1C,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E;;;;;GAKG;AACH,SAAgB,gBAAgB,CAAC,GAAW,EAAE,IAAY;IACxD,MAAM,QAAQ,GAAG,IAAA,gBAAI,EAAC,IAAA,gBAAM,GAAE,EAAE,aAAa,GAAG,QAAQ,CAAC,CAAC;IAC1D,MAAM,IAAI,GAAsB;QAC9B,GAAG;QACH,IAAI;QACJ,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KAClC,CAAC;IACF,IAAA,uBAAa,EAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9C,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,GAAW;IAC3C,MAAM,KAAK,GAAG;QACZ,IAAA,gBAAI,EAAC,IAAA,iBAAO,GAAE,EAAE,QAAQ,EAAE,gBAAgB,CAAC;QAC3C,IAAA,gBAAI,EAAC,IAAA,iBAAO,GAAE,EAAE,QAAQ,EAAE,eAAe,CAAC;QAC1C,IAAA,gBAAI,EAAC,IAAA,gBAAM,GAAE,EAAE,aAAa,GAAG,QAAQ,CAAC;KACzC,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,cAAc,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,QAAgB;IACtC,IAAI,CAAC;QACH,IAAA,oBAAU,EAAC,QAAQ,CAAC,CAAC;IACvB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E;;;;;GAKG;AACH,SAAgB,iBAAiB;IAC/B,IAAI,CAAC;QACH,8DAA8D;QAC9D,MAAM,GAAG,GAAG,OAAO,CAAC,IAAA,gBAAI,EAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAyB,CAAC;QAC/F,OAAO,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../../../src/mcp/daemon/entry.ts"],"names":[],"mappings":";AACA;;;;GAIG"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* Daemon process entry point.
|
|
5
|
+
* Runs in the forked child process via child_process.fork().
|
|
6
|
+
* Not imported by other modules — it is the entryScript passed to forkDaemon().
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
const logging_1 = require("../server/logging");
|
|
10
|
+
const entry_logic_1 = require("./entry-logic");
|
|
11
|
+
const port = parseInt(process.env.PADUA_MCP_PORT ?? '8919', 10);
|
|
12
|
+
const bearerToken = process.env.PADUA_MCP_BEARER_TOKEN ?? '';
|
|
13
|
+
const logger = (0, logging_1.createLogger)();
|
|
14
|
+
// Ignore SIGINT — the daemon must not respond to Ctrl-C from the parent terminal.
|
|
15
|
+
process.on('SIGINT', () => { });
|
|
16
|
+
// Graceful shutdown: clean up files and exit cleanly.
|
|
17
|
+
process.on('SIGTERM', () => {
|
|
18
|
+
logger.info('Shutting down daemon...');
|
|
19
|
+
(0, entry_logic_1.cleanupOnShutdown)(process.pid);
|
|
20
|
+
process.exit(0);
|
|
21
|
+
});
|
|
22
|
+
async function main() {
|
|
23
|
+
logger.info('Daemon starting', { pid: process.pid, port });
|
|
24
|
+
const version = (0, entry_logic_1.getPackageVersion)();
|
|
25
|
+
const startupFilePath = (0, entry_logic_1.writeStartupFile)(process.pid, port);
|
|
26
|
+
logger.info('Daemon ready', { port, startupFile: startupFilePath, version });
|
|
27
|
+
// Keep the process alive; signal handlers above manage lifecycle.
|
|
28
|
+
void bearerToken; // consumed via env by the MCP server (server.ts integration)
|
|
29
|
+
}
|
|
30
|
+
main().catch((err) => {
|
|
31
|
+
logger.error('Daemon failed to start', { error: String(err) });
|
|
32
|
+
process.exit(1);
|
|
33
|
+
});
|
|
34
|
+
//# sourceMappingURL=entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entry.js","sourceRoot":"","sources":["../../../src/mcp/daemon/entry.ts"],"names":[],"mappings":";;AACA;;;;GAIG;;AAEH,+CAAiD;AACjD,+CAAuF;AAEvF,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;AAChE,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,EAAE,CAAC;AAC7D,MAAM,MAAM,GAAG,IAAA,sBAAY,GAAE,CAAC;AAE9B,kFAAkF;AAClF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AAE/B,sDAAsD;AACtD,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;IACzB,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACvC,IAAA,+BAAiB,EAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,KAAK,UAAU,IAAI;IACjB,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;IAE3D,MAAM,OAAO,GAAG,IAAA,+BAAiB,GAAE,CAAC;IAEpC,MAAM,eAAe,GAAG,IAAA,8BAAgB,EAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC5D,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC,CAAC;IAE7E,kEAAkE;IAClE,KAAK,WAAW,CAAC,CAAC,6DAA6D;AACjF,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IAC5B,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { DaemonInfo } from './types';
|
|
2
|
+
interface PathResolver {
|
|
3
|
+
pidFile: () => string;
|
|
4
|
+
authFile: () => string;
|
|
5
|
+
startupFile: (pid: number) => string;
|
|
6
|
+
paduaDir: () => string;
|
|
7
|
+
}
|
|
8
|
+
/** Override path resolution — intended for tests only. */
|
|
9
|
+
export declare function setPathResolver(r: Partial<PathResolver>): void;
|
|
10
|
+
/** Reset path resolution to production defaults. */
|
|
11
|
+
export declare function resetPathResolver(): void;
|
|
12
|
+
export declare function getPidFilePath(): string;
|
|
13
|
+
export declare function getAuthFilePath(): string;
|
|
14
|
+
export declare function getStartupFilePath(pid: number): string;
|
|
15
|
+
export declare function isProcessAlive(pid: number): boolean;
|
|
16
|
+
export declare function readExistingDaemon(): DaemonInfo | null;
|
|
17
|
+
export declare function forkDaemon(entryScript: string, port: number): Promise<DaemonInfo>;
|
|
18
|
+
export declare function stopDaemon(): boolean;
|
|
19
|
+
export declare function cleanupDaemonFiles(pid?: number): void;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=fork.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fork.d.ts","sourceRoot":"","sources":["../../../src/mcp/daemon/fork.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,SAAS,CAAC;AAOvD,UAAU,YAAY;IACpB,OAAO,EAAE,MAAM,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,MAAM,CAAC;IACvB,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IACrC,QAAQ,EAAE,MAAM,MAAM,CAAC;CACxB;AASD,0DAA0D;AAC1D,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAE9D;AAED,oDAAoD;AACpD,wBAAgB,iBAAiB,IAAI,IAAI,CAOxC;AAMD,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtD;AAMD,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOnD;AAMD,wBAAgB,kBAAkB,IAAI,UAAU,GAAG,IAAI,CAyBtD;AAMD,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAuBvF;AAMD,wBAAgB,UAAU,IAAI,OAAO,CAgBpC;AAMD,wBAAgB,kBAAkB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAMrD"}
|