@daniel.stefan/metalink 1.3.12 → 1.3.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/README.md +55 -0
  2. package/package.json +4 -2
  3. package/packages/cli/dist/commands/__tests__/daemon.test.d.ts +2 -0
  4. package/packages/cli/dist/commands/__tests__/daemon.test.d.ts.map +1 -0
  5. package/packages/cli/dist/commands/__tests__/daemon.test.js +79 -0
  6. package/packages/cli/dist/commands/__tests__/daemon.test.js.map +1 -0
  7. package/packages/cli/dist/commands/__tests__/safety.test.d.ts +2 -0
  8. package/packages/cli/dist/commands/__tests__/safety.test.d.ts.map +1 -0
  9. package/packages/cli/dist/commands/__tests__/safety.test.js +76 -0
  10. package/packages/cli/dist/commands/__tests__/safety.test.js.map +1 -0
  11. package/packages/cli/dist/commands/__tests__/server.test.d.ts +2 -0
  12. package/packages/cli/dist/commands/__tests__/server.test.d.ts.map +1 -0
  13. package/packages/cli/dist/commands/__tests__/server.test.js +126 -0
  14. package/packages/cli/dist/commands/__tests__/server.test.js.map +1 -0
  15. package/packages/cli/dist/commands/__tests__/tool.test.d.ts +2 -0
  16. package/packages/cli/dist/commands/__tests__/tool.test.d.ts.map +1 -0
  17. package/packages/cli/dist/commands/__tests__/tool.test.js +84 -0
  18. package/packages/cli/dist/commands/__tests__/tool.test.js.map +1 -0
  19. package/packages/cli/dist/commands/server/__tests__/server-management-e2e.test.js +2 -2
  20. package/packages/cli/package.json +10 -2
  21. package/packages/core/dist/config/schema.d.ts.map +1 -1
  22. package/packages/core/dist/config/schema.js +8 -2
  23. package/packages/core/dist/config/schema.js.map +1 -1
  24. package/packages/core/dist/server/http.d.ts.map +1 -1
  25. package/packages/core/dist/server/http.js +3 -1
  26. package/packages/core/dist/server/http.js.map +1 -1
  27. package/packages/core/dist/server/manager.d.ts +7 -0
  28. package/packages/core/dist/server/manager.d.ts.map +1 -1
  29. package/packages/core/dist/server/manager.js +16 -0
  30. package/packages/core/dist/server/manager.js.map +1 -1
  31. package/packages/core/dist/server/managers/ProcessManager.d.ts.map +1 -1
  32. package/packages/core/dist/server/managers/ProcessManager.js +13 -1
  33. package/packages/core/dist/server/managers/ProcessManager.js.map +1 -1
  34. package/packages/core/package.json +1 -1
  35. package/packages/dashboard/package.json +1 -1
  36. package/packages/shared/package.json +3 -2
package/README.md CHANGED
@@ -85,6 +85,61 @@ open http://localhost:3000
85
85
  | `metalink tool list <server>` | List tools for a specific server |
86
86
  | `metalink config edit` | Edit configuration |
87
87
 
88
+
89
+ ## Monitoring & Health Checks
90
+
91
+ ### Programmatic Health Check
92
+
93
+ For monitoring systems and automated health checks:
94
+
95
+ ```bash
96
+ curl http://localhost:6655/api/health
97
+ ```
98
+
99
+ **Response format:**
100
+ ```json
101
+ {
102
+ "status": "healthy|degraded|unhealthy",
103
+ "version": "1.x.x",
104
+ "uptime_seconds": 12345,
105
+ "checks": {
106
+ "daemon": {"status": "healthy"},
107
+ "base_servers": {
108
+ "memory": {
109
+ "status": "healthy",
110
+ "tools_count": 9
111
+ },
112
+ "vault": {
113
+ "status": "unhealthy",
114
+ "error": "Server not running"
115
+ }
116
+ }
117
+ }
118
+ }
119
+ ```
120
+
121
+ **HTTP Status Codes:**
122
+ - **200 OK** - Daemon is healthy (all servers) or degraded (some servers down)
123
+ - **503 Service Unavailable** - Daemon is unhealthy (all servers down or critical error)
124
+
125
+ **Exit Codes:**
126
+ ```bash
127
+ # Returns exit code 0 if healthy (200 OK)
128
+ # Returns non-zero exit code if unhealthy (503)
129
+ curl -f http://localhost:6655/api/health
130
+ ```
131
+
132
+ ### Browser Access to Dashboard
133
+
134
+ For manual access to the web dashboard:
135
+
136
+ ```bash
137
+ http://localhost:6655/ # HTML dashboard
138
+ http://localhost:6655/health # HTML dashboard (SPA fallback)
139
+ ```
140
+
141
+ **Note:** Use `/api/health` for JSON (monitoring), `/` or `/health` for HTML (browsers).
142
+
88
143
  ## Configuration
89
144
 
90
145
  MetaLink stores configuration in `~/.config/metalink/`:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@daniel.stefan/metalink",
3
- "version": "1.3.12",
3
+ "version": "1.3.14",
4
4
  "description": "MetaLink MCP Management Platform - Universal MCP server orchestrator",
5
5
  "private": false,
6
6
  "publishConfig": {
@@ -27,8 +27,9 @@
27
27
  "scripts": {
28
28
  "build": "turbo build",
29
29
  "build:verified": "node scripts/build-with-verification.js",
30
- "test": "npm --workspaces run test",
30
+ "test": "node scripts/run-all-tests.js",
31
31
  "test:packaged": "node scripts/test-published-package.js",
32
+ "test:unit": "npm --workspaces run test -- --run",
32
33
  "dev": "npm --workspaces run dev",
33
34
  "lint": "npm --workspaces run lint",
34
35
  "format": "prettier --write \"packages/**/*.{ts,tsx,json,md}\"",
@@ -56,6 +57,7 @@
56
57
  },
57
58
  "devDependencies": {
58
59
  "@changesets/cli": "^2.29.8",
60
+ "@oclif/test": "^4.1.16",
59
61
  "@types/node": "^20.0.0",
60
62
  "esbuild": "^0.27.3",
61
63
  "glob": "^13.0.6",
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=daemon.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon.test.d.ts","sourceRoot":"","sources":["../../../src/commands/__tests__/daemon.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,79 @@
1
+ // Daemon Commands Tests using execSync with clean environment
2
+ import { describe, it, expect } from "vitest";
3
+ import { execSync } from "child_process";
4
+ import { join, dirname } from "path";
5
+ import { fileURLToPath } from "url";
6
+ const cliRoot = dirname(dirname(dirname(dirname(fileURLToPath(import.meta.url)))));
7
+ const cliBin = join(cliRoot, "dist", "bin", "cli.js");
8
+ // Clean environment to avoid vitest interference
9
+ const cleanEnv = {
10
+ PATH: process.env.PATH || "",
11
+ HOME: process.env.HOME || "",
12
+ USER: process.env.USER || "",
13
+ };
14
+ describe("Daemon Commands", () => {
15
+ describe("daemon status", () => {
16
+ it("should show daemon status", () => {
17
+ try {
18
+ const result = execSync(`node "${cliBin}" daemon status`, {
19
+ encoding: "utf8",
20
+ timeout: 5000,
21
+ cwd: cliRoot,
22
+ env: cleanEnv,
23
+ });
24
+ expect(result).toMatch(/Daemon is|running|stopped|not running/i);
25
+ }
26
+ catch (e) {
27
+ // Command might exit with code 1 if daemon not running, but should still show status
28
+ expect(e.stdout || e.stderr || e.message).toMatch(/Daemon is|running|stopped|not running/i);
29
+ }
30
+ });
31
+ it("should show help", () => {
32
+ const result = execSync(`node "${cliBin}" daemon status --help`, {
33
+ encoding: "utf8",
34
+ timeout: 5000,
35
+ cwd: cliRoot,
36
+ env: cleanEnv,
37
+ });
38
+ expect(result).toContain("USAGE");
39
+ expect(result).toContain("daemon status");
40
+ });
41
+ });
42
+ describe("daemon start", () => {
43
+ it("should show help", () => {
44
+ const result = execSync(`node "${cliBin}" daemon start --help`, {
45
+ encoding: "utf8",
46
+ timeout: 5000,
47
+ cwd: cliRoot,
48
+ env: cleanEnv,
49
+ });
50
+ expect(result).toContain("USAGE");
51
+ expect(result).toContain("daemon start");
52
+ });
53
+ });
54
+ describe("daemon stop", () => {
55
+ it("should show help", () => {
56
+ const result = execSync(`node "${cliBin}" daemon stop --help`, {
57
+ encoding: "utf8",
58
+ timeout: 5000,
59
+ cwd: cliRoot,
60
+ env: cleanEnv,
61
+ });
62
+ expect(result).toContain("USAGE");
63
+ expect(result).toContain("daemon stop");
64
+ });
65
+ });
66
+ describe("daemon restart", () => {
67
+ it("should show help", () => {
68
+ const result = execSync(`node "${cliBin}" daemon restart --help`, {
69
+ encoding: "utf8",
70
+ timeout: 5000,
71
+ cwd: cliRoot,
72
+ env: cleanEnv,
73
+ });
74
+ expect(result).toContain("USAGE");
75
+ expect(result).toContain("daemon restart");
76
+ });
77
+ });
78
+ });
79
+ //# sourceMappingURL=daemon.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon.test.js","sourceRoot":"","sources":["../../../src/commands/__tests__/daemon.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=safety.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safety.test.d.ts","sourceRoot":"","sources":["../../../src/commands/__tests__/safety.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,76 @@
1
+ // Safety Commands Tests using execSync with clean environment
2
+ import { describe, it, expect } from "vitest";
3
+ import { execSync } from "child_process";
4
+ import { join, dirname } from "path";
5
+ import { fileURLToPath } from "url";
6
+ const cliRoot = dirname(dirname(dirname(dirname(fileURLToPath(import.meta.url)))));
7
+ const cliBin = join(cliRoot, "dist", "bin", "cli.js");
8
+ // Clean environment to avoid vitest interference
9
+ const cleanEnv = {
10
+ PATH: process.env.PATH || "",
11
+ HOME: process.env.HOME || "",
12
+ USER: process.env.USER || "",
13
+ };
14
+ describe("Safety Commands", () => {
15
+ describe("safety list", () => {
16
+ it("should show help", () => {
17
+ const result = execSync(`node "${cliBin}" safety list --help`, {
18
+ encoding: "utf8",
19
+ timeout: 5000,
20
+ cwd: cliRoot,
21
+ env: cleanEnv,
22
+ });
23
+ expect(result).toContain("USAGE");
24
+ expect(result).toContain("safety list");
25
+ });
26
+ });
27
+ describe("safety check", () => {
28
+ it("should show help", () => {
29
+ const result = execSync(`node "${cliBin}" safety check --help`, {
30
+ encoding: "utf8",
31
+ timeout: 5000,
32
+ cwd: cliRoot,
33
+ env: cleanEnv,
34
+ });
35
+ expect(result).toContain("USAGE");
36
+ expect(result).toContain("safety check");
37
+ });
38
+ });
39
+ describe("safety add-safe", () => {
40
+ it("should show help", () => {
41
+ const result = execSync(`node "${cliBin}" safety add-safe --help`, {
42
+ encoding: "utf8",
43
+ timeout: 5000,
44
+ cwd: cliRoot,
45
+ env: cleanEnv,
46
+ });
47
+ expect(result).toContain("USAGE");
48
+ expect(result).toContain("safety add-safe");
49
+ });
50
+ });
51
+ describe("safety add-risky", () => {
52
+ it("should show help", () => {
53
+ const result = execSync(`node "${cliBin}" safety add-risky --help`, {
54
+ encoding: "utf8",
55
+ timeout: 5000,
56
+ cwd: cliRoot,
57
+ env: cleanEnv,
58
+ });
59
+ expect(result).toContain("USAGE");
60
+ expect(result).toContain("safety add-risky");
61
+ });
62
+ });
63
+ describe("safety remove", () => {
64
+ it("should show help", () => {
65
+ const result = execSync(`node "${cliBin}" safety remove --help`, {
66
+ encoding: "utf8",
67
+ timeout: 5000,
68
+ cwd: cliRoot,
69
+ env: cleanEnv,
70
+ });
71
+ expect(result).toContain("USAGE");
72
+ expect(result).toContain("safety remove");
73
+ });
74
+ });
75
+ });
76
+ //# sourceMappingURL=safety.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safety.test.js","sourceRoot":"","sources":["../../../src/commands/__tests__/safety.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=server.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.test.d.ts","sourceRoot":"","sources":["../../../src/commands/__tests__/server.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,126 @@
1
+ // Server Commands Tests using execSync with clean environment
2
+ import { describe, it, expect } from "vitest";
3
+ import { execSync } from "child_process";
4
+ import { join, dirname } from "path";
5
+ import { fileURLToPath } from "url";
6
+ const cliRoot = dirname(dirname(dirname(dirname(fileURLToPath(import.meta.url)))));
7
+ const cliBin = join(cliRoot, "dist", "bin", "cli.js");
8
+ // Clean environment to avoid vitest interference
9
+ const cleanEnv = {
10
+ PATH: process.env.PATH || "",
11
+ HOME: process.env.HOME || "",
12
+ USER: process.env.USER || "",
13
+ };
14
+ describe("Server Commands", () => {
15
+ describe("server list", () => {
16
+ it("should show help", () => {
17
+ const result = execSync(`node "${cliBin}" server list --help`, {
18
+ encoding: "utf8",
19
+ timeout: 5000,
20
+ cwd: cliRoot,
21
+ env: cleanEnv,
22
+ });
23
+ expect(result).toContain("USAGE");
24
+ expect(result).toContain("server list");
25
+ });
26
+ });
27
+ describe("server add", () => {
28
+ it("should show help", () => {
29
+ const result = execSync(`node "${cliBin}" server add --help`, {
30
+ encoding: "utf8",
31
+ timeout: 5000,
32
+ cwd: cliRoot,
33
+ env: cleanEnv,
34
+ });
35
+ expect(result).toContain("USAGE");
36
+ expect(result).toContain("server add");
37
+ });
38
+ it("should require name flag", () => {
39
+ try {
40
+ execSync(`node "${cliBin}" server add`, {
41
+ encoding: "utf8",
42
+ timeout: 5000,
43
+ cwd: cliRoot,
44
+ env: cleanEnv,
45
+ });
46
+ expect(false).toBe(true);
47
+ }
48
+ catch (e) {
49
+ expect(e.stderr || e.message).toMatch(/required|Missing|flag|name/i);
50
+ }
51
+ });
52
+ });
53
+ describe("server remove", () => {
54
+ it("should show help", () => {
55
+ const result = execSync(`node "${cliBin}" server remove --help`, {
56
+ encoding: "utf8",
57
+ timeout: 5000,
58
+ cwd: cliRoot,
59
+ env: cleanEnv,
60
+ });
61
+ expect(result).toContain("USAGE");
62
+ expect(result).toContain("server remove");
63
+ });
64
+ });
65
+ describe("server status", () => {
66
+ it("should show help", () => {
67
+ const result = execSync(`node "${cliBin}" server status --help`, {
68
+ encoding: "utf8",
69
+ timeout: 5000,
70
+ cwd: cliRoot,
71
+ env: cleanEnv,
72
+ });
73
+ expect(result).toContain("USAGE");
74
+ expect(result).toContain("server status");
75
+ });
76
+ });
77
+ describe("server info", () => {
78
+ it("should show help", () => {
79
+ const result = execSync(`node "${cliBin}" server info --help`, {
80
+ encoding: "utf8",
81
+ timeout: 5000,
82
+ cwd: cliRoot,
83
+ env: cleanEnv,
84
+ });
85
+ expect(result).toContain("USAGE");
86
+ expect(result).toContain("server info");
87
+ });
88
+ });
89
+ describe("server available", () => {
90
+ it("should show help", () => {
91
+ const result = execSync(`node "${cliBin}" server available --help`, {
92
+ encoding: "utf8",
93
+ timeout: 5000,
94
+ cwd: cliRoot,
95
+ env: cleanEnv,
96
+ });
97
+ expect(result).toContain("USAGE");
98
+ expect(result).toContain("server available");
99
+ });
100
+ });
101
+ describe("server validate", () => {
102
+ it("should show help", () => {
103
+ const result = execSync(`node "${cliBin}" server validate --help`, {
104
+ encoding: "utf8",
105
+ timeout: 5000,
106
+ cwd: cliRoot,
107
+ env: cleanEnv,
108
+ });
109
+ expect(result).toContain("USAGE");
110
+ expect(result).toContain("server validate");
111
+ });
112
+ });
113
+ describe("server refresh-tools", () => {
114
+ it("should show help", () => {
115
+ const result = execSync(`node "${cliBin}" server refresh-tools --help`, {
116
+ encoding: "utf8",
117
+ timeout: 5000,
118
+ cwd: cliRoot,
119
+ env: cleanEnv,
120
+ });
121
+ expect(result).toContain("USAGE");
122
+ expect(result).toContain("server refresh-tools");
123
+ });
124
+ });
125
+ });
126
+ //# sourceMappingURL=server.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.test.js","sourceRoot":"","sources":["../../../src/commands/__tests__/server.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tool.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.test.d.ts","sourceRoot":"","sources":["../../../src/commands/__tests__/tool.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,84 @@
1
+ // Tool Commands Tests using execSync with clean environment
2
+ import { describe, it, expect } from "vitest";
3
+ import { execSync } from "child_process";
4
+ import { join, dirname } from "path";
5
+ import { fileURLToPath } from "url";
6
+ const cliRoot = dirname(dirname(dirname(dirname(fileURLToPath(import.meta.url)))));
7
+ const cliBin = join(cliRoot, "dist", "bin", "cli.js");
8
+ // Clean environment to avoid vitest interference
9
+ const cleanEnv = {
10
+ PATH: process.env.PATH || "",
11
+ HOME: process.env.HOME || "",
12
+ USER: process.env.USER || "",
13
+ };
14
+ describe("Tool Commands", () => {
15
+ describe("tool list --help", () => {
16
+ it("should show help", () => {
17
+ const result = execSync(`node "${cliBin}" tool list --help`, {
18
+ encoding: "utf8",
19
+ timeout: 5000,
20
+ cwd: cliRoot,
21
+ env: cleanEnv,
22
+ });
23
+ expect(result).toContain("USAGE");
24
+ expect(result).toContain("tool list");
25
+ });
26
+ });
27
+ describe("tool list", () => {
28
+ it("should require server argument", () => {
29
+ try {
30
+ execSync(`node "${cliBin}" tool list`, {
31
+ encoding: "utf8",
32
+ timeout: 5000,
33
+ cwd: cliRoot,
34
+ env: cleanEnv,
35
+ });
36
+ expect(false).toBe(true); // Should not reach here
37
+ }
38
+ catch (e) {
39
+ expect(e.stderr || e.message).toMatch(/required|Missing|Argument|SERVER/i);
40
+ }
41
+ });
42
+ });
43
+ describe("tool search --help", () => {
44
+ it("should show help", () => {
45
+ const result = execSync(`node "${cliBin}" tool search --help`, {
46
+ encoding: "utf8",
47
+ timeout: 5000,
48
+ cwd: cliRoot,
49
+ env: cleanEnv,
50
+ });
51
+ expect(result).toContain("USAGE");
52
+ expect(result).toContain("tool search");
53
+ });
54
+ });
55
+ describe("tool execute --help", () => {
56
+ it("should show help", () => {
57
+ const result = execSync(`node "${cliBin}" tool execute --help`, {
58
+ encoding: "utf8",
59
+ timeout: 5000,
60
+ cwd: cliRoot,
61
+ env: cleanEnv,
62
+ });
63
+ expect(result).toContain("USAGE");
64
+ expect(result).toContain("tool execute");
65
+ });
66
+ });
67
+ describe("tool execute", () => {
68
+ it("should require server and tool flags", () => {
69
+ try {
70
+ execSync(`node "${cliBin}" tool execute`, {
71
+ encoding: "utf8",
72
+ timeout: 5000,
73
+ cwd: cliRoot,
74
+ env: cleanEnv,
75
+ });
76
+ expect(false).toBe(true); // Should not reach here
77
+ }
78
+ catch (e) {
79
+ expect(e.stderr || e.message).toMatch(/required|Missing/i);
80
+ }
81
+ });
82
+ });
83
+ });
84
+ //# sourceMappingURL=tool.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.test.js","sourceRoot":"","sources":["../../../src/commands/__tests__/tool.test.ts"],"names":[],"mappings":"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"}
@@ -71,7 +71,7 @@ describe('CLI Server Management E2E', () => {
71
71
  expect(true).toBe(true); // Placeholder for actual e2e test
72
72
  });
73
73
  it('should validate with arguments and environment variables', async () => {
74
- // Command: metalink server validate my-server node --args "app.js" --env "PORT=3000"
74
+ // Command: metalink server validate my-server node --args "app.ts" --env "PORT=3000"
75
75
  // Expected: All fields validated
76
76
  // Result: ✓ Server configuration is valid
77
77
  // Result: Arguments: app.js
@@ -145,7 +145,7 @@ describe('CLI Server Management E2E', () => {
145
145
  expect(true).toBe(true); // Placeholder for actual e2e test
146
146
  });
147
147
  it('should handle special characters in arguments', async () => {
148
- // Command: metalink server add my-server npx --args "@scope/package,-y,--config=path/to/config.js"
148
+ // Command: metalink server add my-server npx --args "@scope/package,-y,--config=path/to/config.ts"
149
149
  // Expected: Arguments properly escaped and stored
150
150
  // Result: Server created with special characters preserved
151
151
  expect(true).toBe(true); // Placeholder for actual e2e test
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "metalink",
3
- "version": "1.3.12",
3
+ "version": "1.3.14",
4
4
  "description": "MetaLink CLI Tool",
5
5
  "type": "module",
6
6
  "bin": {
@@ -29,7 +29,15 @@
29
29
  "vitest": "^1.0.0"
30
30
  },
31
31
  "oclif": {
32
- "commands": "dist/commands",
32
+ "commands": {
33
+ "strategy": "pattern",
34
+ "target": "./dist/commands",
35
+ "globPatterns": [
36
+ "**/*.+(js|cjs|mjs)",
37
+ "!**/__tests__/**",
38
+ "!**/*.+(d.*|test.*|spec.*|helpers.*|type.*|map).*"
39
+ ]
40
+ },
33
41
  "bin": "metalink",
34
42
  "topicSeparator": " ",
35
43
  "topics": {
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAYzB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,cAAc,CAE9D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAEjD"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAYzB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,cAAc,CAE9D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAEjD"}
@@ -46,7 +46,10 @@ export const ServerSafetySchema = z
46
46
  * Stdio (command-based) server configuration
47
47
  */
48
48
  export const StdioServerConfigSchema = z.object({
49
- name: z.string().min(1, "Server name is required"),
49
+ name: z
50
+ .string()
51
+ .min(1, "Server name is required")
52
+ .regex(/^[a-zA-Z0-9_-]+$/, "Server name must contain only letters, numbers, hyphens, and underscores"),
50
53
  transport: z.literal("stdio").optional().default("stdio"),
51
54
  command: z.string().min(1, "Command is required for stdio servers"),
52
55
  args: z.array(z.string()).optional().default([]),
@@ -63,7 +66,10 @@ export const StdioServerConfigSchema = z.object({
63
66
  * HTTP (remote) server configuration
64
67
  */
65
68
  export const HttpServerConfigSchema = z.object({
66
- name: z.string().min(1, "Server name is required"),
69
+ name: z
70
+ .string()
71
+ .min(1, "Server name is required")
72
+ .regex(/^[a-zA-Z0-9_-]+$/, "Server name must contain only letters, numbers, hyphens, and underscores"),
67
73
  transport: z.enum(["http", "sse", "sse-first", "http-stream"]),
68
74
  url: z.string().url("URL must be a valid HTTP(S) endpoint"),
69
75
  auth: HttpAuthSchema,