opalserve 0.1.2 ā 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 +112 -116
- package/assets/logo.svg +54 -0
- package/dist/cli/commands/health.d.ts +4 -0
- package/dist/cli/commands/health.d.ts.map +1 -0
- package/dist/cli/commands/health.js +36 -0
- package/dist/cli/commands/health.js.map +1 -0
- package/dist/cli/commands/init.d.ts +2 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +81 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/server.d.ts +10 -0
- package/dist/cli/commands/server.d.ts.map +1 -0
- package/dist/cli/commands/server.js +108 -0
- package/dist/cli/commands/server.js.map +1 -0
- package/dist/cli/commands/start.d.ts +6 -0
- package/dist/cli/commands/start.d.ts.map +1 -0
- package/dist/cli/commands/start.js +63 -0
- package/dist/cli/commands/start.js.map +1 -0
- package/dist/cli/commands/status.d.ts +2 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +21 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/tools.d.ts +8 -0
- package/dist/cli/commands/tools.d.ts.map +1 -0
- package/dist/cli/commands/tools.js +28 -0
- package/dist/cli/commands/tools.js.map +1 -0
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +82 -30
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/ui/banner.d.ts +8 -0
- package/dist/cli/ui/banner.d.ts.map +1 -0
- package/dist/cli/ui/banner.js +54 -0
- package/dist/cli/ui/banner.js.map +1 -0
- package/dist/cli/ui/prompts.d.ts +11 -0
- package/dist/cli/ui/prompts.d.ts.map +1 -0
- package/dist/cli/ui/prompts.js +74 -0
- package/dist/cli/ui/prompts.js.map +1 -0
- package/dist/cli/ui/table.d.ts +5 -0
- package/dist/cli/ui/table.d.ts.map +1 -0
- package/dist/cli/ui/table.js +103 -0
- package/dist/cli/ui/table.js.map +1 -0
- package/dist/config/defaults.d.ts +5 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +18 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/loader.d.ts +4 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +57 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/schema.d.ts +2 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +2 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/core/discovery.d.ts +17 -0
- package/dist/core/discovery.d.ts.map +1 -0
- package/dist/core/discovery.js +31 -0
- package/dist/core/discovery.js.map +1 -0
- package/dist/core/proxy.d.ts +14 -0
- package/dist/core/proxy.d.ts.map +1 -0
- package/dist/core/proxy.js +36 -0
- package/dist/core/proxy.js.map +1 -0
- package/dist/core/registry.d.ts +28 -31
- package/dist/core/registry.d.ts.map +1 -1
- package/dist/core/registry.js +90 -234
- package/dist/core/registry.js.map +1 -1
- package/dist/core/server-manager.d.ts +18 -0
- package/dist/core/server-manager.d.ts.map +1 -0
- package/dist/core/server-manager.js +120 -0
- package/dist/core/server-manager.js.map +1 -0
- package/dist/index.d.ts +11 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -9
- package/dist/index.js.map +1 -1
- package/dist/server/app.d.ts +8 -0
- package/dist/server/app.d.ts.map +1 -0
- package/dist/server/app.js +35 -0
- package/dist/server/app.js.map +1 -0
- package/dist/server/mcp-gateway.d.ts +12 -0
- package/dist/server/mcp-gateway.d.ts.map +1 -0
- package/dist/server/mcp-gateway.js +91 -0
- package/dist/server/mcp-gateway.js.map +1 -0
- package/dist/server/routes/health.d.ts +4 -0
- package/dist/server/routes/health.d.ts.map +1 -0
- package/dist/server/routes/health.js +22 -0
- package/dist/server/routes/health.js.map +1 -0
- package/dist/server/routes/servers.d.ts +4 -0
- package/dist/server/routes/servers.d.ts.map +1 -0
- package/dist/server/routes/servers.js +47 -0
- package/dist/server/routes/servers.js.map +1 -0
- package/dist/server/routes/tools.d.ts +4 -0
- package/dist/server/routes/tools.d.ts.map +1 -0
- package/dist/server/routes/tools.js +44 -0
- package/dist/server/routes/tools.js.map +1 -0
- package/dist/storage/database.d.ts +41 -0
- package/dist/storage/database.d.ts.map +1 -0
- package/dist/storage/database.js +195 -0
- package/dist/storage/database.js.map +1 -0
- package/dist/storage/repositories/server-repo.d.ts +2 -0
- package/dist/storage/repositories/server-repo.d.ts.map +1 -0
- package/dist/storage/repositories/server-repo.js +3 -0
- package/dist/storage/repositories/server-repo.js.map +1 -0
- package/dist/storage/repositories/tool-repo.d.ts +2 -0
- package/dist/storage/repositories/tool-repo.d.ts.map +1 -0
- package/dist/storage/repositories/tool-repo.js +3 -0
- package/dist/storage/repositories/tool-repo.js.map +1 -0
- package/dist/types/index.d.ts +384 -591
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +44 -69
- package/dist/types/index.js.map +1 -1
- package/dist/utils/logger.d.ts +7 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +23 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +65 -56
- package/.env.example +0 -19
- package/config/servers.example.yaml +0 -67
- package/config/servers.yaml +0 -2
- package/dist/cli/discover.d.ts +0 -3
- package/dist/cli/discover.d.ts.map +0 -1
- package/dist/cli/discover.js +0 -160
- package/dist/cli/discover.js.map +0 -1
- package/dist/connectors/base.d.ts +0 -49
- package/dist/connectors/base.d.ts.map +0 -1
- package/dist/connectors/base.js +0 -45
- package/dist/connectors/base.js.map +0 -1
- package/dist/connectors/custom.d.ts +0 -19
- package/dist/connectors/custom.d.ts.map +0 -1
- package/dist/connectors/custom.js +0 -129
- package/dist/connectors/custom.js.map +0 -1
- package/dist/connectors/github.d.ts +0 -18
- package/dist/connectors/github.d.ts.map +0 -1
- package/dist/connectors/github.js +0 -188
- package/dist/connectors/github.js.map +0 -1
- package/dist/connectors/google-drive.d.ts +0 -18
- package/dist/connectors/google-drive.d.ts.map +0 -1
- package/dist/connectors/google-drive.js +0 -209
- package/dist/connectors/google-drive.js.map +0 -1
- package/dist/connectors/index.d.ts +0 -11
- package/dist/connectors/index.d.ts.map +0 -1
- package/dist/connectors/index.js +0 -76
- package/dist/connectors/index.js.map +0 -1
- package/dist/connectors/postgres.d.ts +0 -18
- package/dist/connectors/postgres.d.ts.map +0 -1
- package/dist/connectors/postgres.js +0 -140
- package/dist/connectors/postgres.js.map +0 -1
- package/dist/connectors/slack.d.ts +0 -18
- package/dist/connectors/slack.d.ts.map +0 -1
- package/dist/connectors/slack.js +0 -181
- package/dist/connectors/slack.js.map +0 -1
- package/dist/core/auth.d.ts +0 -26
- package/dist/core/auth.d.ts.map +0 -1
- package/dist/core/auth.js +0 -81
- package/dist/core/auth.js.map +0 -1
- package/dist/core/tokenizer.d.ts +0 -16
- package/dist/core/tokenizer.d.ts.map +0 -1
- package/dist/core/tokenizer.js +0 -29
- package/dist/core/tokenizer.js.map +0 -1
- package/dist/governance/audit.d.ts +0 -27
- package/dist/governance/audit.d.ts.map +0 -1
- package/dist/governance/audit.js +0 -149
- package/dist/governance/audit.js.map +0 -1
- package/dist/governance/index.d.ts +0 -5
- package/dist/governance/index.d.ts.map +0 -1
- package/dist/governance/index.js +0 -5
- package/dist/governance/index.js.map +0 -1
- package/dist/governance/policy.d.ts +0 -20
- package/dist/governance/policy.d.ts.map +0 -1
- package/dist/governance/policy.js +0 -162
- package/dist/governance/policy.js.map +0 -1
- package/dist/governance/rate-limiter.d.ts +0 -20
- package/dist/governance/rate-limiter.d.ts.map +0 -1
- package/dist/governance/rate-limiter.js +0 -73
- package/dist/governance/rate-limiter.js.map +0 -1
- package/dist/governance/types.d.ts +0 -246
- package/dist/governance/types.d.ts.map +0 -1
- package/dist/governance/types.js +0 -72
- package/dist/governance/types.js.map +0 -1
- package/dist/identity/access-control.d.ts +0 -15
- package/dist/identity/access-control.d.ts.map +0 -1
- package/dist/identity/access-control.js +0 -81
- package/dist/identity/access-control.js.map +0 -1
- package/dist/identity/index.d.ts +0 -4
- package/dist/identity/index.d.ts.map +0 -1
- package/dist/identity/index.js +0 -4
- package/dist/identity/index.js.map +0 -1
- package/dist/identity/manager.d.ts +0 -29
- package/dist/identity/manager.d.ts.map +0 -1
- package/dist/identity/manager.js +0 -167
- package/dist/identity/manager.js.map +0 -1
- package/dist/identity/types.d.ts +0 -237
- package/dist/identity/types.d.ts.map +0 -1
- package/dist/identity/types.js +0 -80
- package/dist/identity/types.js.map +0 -1
- package/dist/registry/server.d.ts +0 -14
- package/dist/registry/server.d.ts.map +0 -1
- package/dist/registry/server.js +0 -177
- package/dist/registry/server.js.map +0 -1
- package/dist/utils/config.d.ts +0 -29
- package/dist/utils/config.d.ts.map +0 -1
- package/dist/utils/config.js +0 -47
- package/dist/utils/config.js.map +0 -1
- package/dist/utils/index.d.ts +0 -7
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js +0 -44
- package/dist/utils/index.js.map +0 -1
- package/dist/workflow/engine.d.ts +0 -18
- package/dist/workflow/engine.d.ts.map +0 -1
- package/dist/workflow/engine.js +0 -155
- package/dist/workflow/engine.js.map +0 -1
- package/dist/workflow/index.d.ts +0 -4
- package/dist/workflow/index.d.ts.map +0 -1
- package/dist/workflow/index.js +0 -4
- package/dist/workflow/index.js.map +0 -1
- package/dist/workflow/templates.d.ts +0 -4
- package/dist/workflow/templates.d.ts.map +0 -1
- package/dist/workflow/templates.js +0 -218
- package/dist/workflow/templates.js.map +0 -1
- package/dist/workflow/types.d.ts +0 -255
- package/dist/workflow/types.d.ts.map +0 -1
- package/dist/workflow/types.js +0 -48
- package/dist/workflow/types.js.map +0 -1
- package/eslint.config.js +0 -25
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.js
CHANGED
|
@@ -1,76 +1,51 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}).optional(),
|
|
20
|
-
contextRequirements: z.object({
|
|
21
|
-
minTokens: z.number().default(0),
|
|
22
|
-
maxTokens: z.number().default(1000),
|
|
23
|
-
}).default({}),
|
|
24
|
-
metadata: z.record(z.any()).default({}),
|
|
25
|
-
createdAt: z.string(),
|
|
26
|
-
updatedAt: z.string(),
|
|
2
|
+
// --- MCP Server Configuration (what users configure) ---
|
|
3
|
+
export const StdioTransportSchema = z.object({
|
|
4
|
+
type: z.literal('stdio'),
|
|
5
|
+
command: z.string().min(1),
|
|
6
|
+
args: z.array(z.string()).default([]),
|
|
7
|
+
env: z.record(z.string()).optional(),
|
|
8
|
+
cwd: z.string().optional(),
|
|
9
|
+
});
|
|
10
|
+
export const SseTransportSchema = z.object({
|
|
11
|
+
type: z.literal('sse'),
|
|
12
|
+
url: z.string().url(),
|
|
13
|
+
headers: z.record(z.string()).optional(),
|
|
14
|
+
});
|
|
15
|
+
export const StreamableHttpTransportSchema = z.object({
|
|
16
|
+
type: z.literal('streamable-http'),
|
|
17
|
+
url: z.string().url(),
|
|
18
|
+
headers: z.record(z.string()).optional(),
|
|
27
19
|
});
|
|
28
|
-
export const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
capabilities: z.array(z.string()).default([]),
|
|
20
|
+
export const TransportConfigSchema = z.discriminatedUnion('type', [
|
|
21
|
+
StdioTransportSchema,
|
|
22
|
+
SseTransportSchema,
|
|
23
|
+
StreamableHttpTransportSchema,
|
|
24
|
+
]);
|
|
25
|
+
export const McpServerConfigSchema = z.object({
|
|
26
|
+
name: z.string().min(1).regex(/^[a-z0-9-]+$/, 'Name must be lowercase alphanumeric with hyphens'),
|
|
27
|
+
transport: TransportConfigSchema,
|
|
28
|
+
enabled: z.boolean().default(true),
|
|
38
29
|
tags: z.array(z.string()).default([]),
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
registeredAt: z.string(),
|
|
51
|
-
lastSeen: z.string(),
|
|
30
|
+
autoConnect: z.boolean().default(true),
|
|
31
|
+
});
|
|
32
|
+
// --- Runtime Server State ---
|
|
33
|
+
export const ServerStatusSchema = z.enum(['connecting', 'connected', 'disconnected', 'error']);
|
|
34
|
+
// --- OpalServe Configuration ---
|
|
35
|
+
export const GatewayConfigSchema = z.object({
|
|
36
|
+
port: z.number().int().min(1).max(65535).default(3456),
|
|
37
|
+
host: z.string().default('127.0.0.1'),
|
|
38
|
+
});
|
|
39
|
+
export const StorageConfigSchema = z.object({
|
|
40
|
+
path: z.string().default(''), // empty = default ~/.opalserve/data.db
|
|
52
41
|
});
|
|
53
|
-
export const
|
|
54
|
-
|
|
55
|
-
capabilities: z.array(z.string()).optional(),
|
|
56
|
-
tags: z.array(z.string()).optional(),
|
|
57
|
-
limit: z.coerce.number().min(1).max(100).default(20),
|
|
58
|
-
offset: z.coerce.number().min(0).default(0),
|
|
59
|
-
contextBudget: z.coerce.number().min(1000).max(200000).default(128000),
|
|
60
|
-
includeServers: z.coerce.boolean().default(true),
|
|
42
|
+
export const LoggingConfigSchema = z.object({
|
|
43
|
+
level: z.enum(['silent', 'error', 'warn', 'info', 'debug', 'trace']).default('info'),
|
|
61
44
|
});
|
|
62
|
-
export const
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
tokenEstimate: z.number(),
|
|
68
|
-
})),
|
|
69
|
-
servers: z.array(ServerSchema),
|
|
70
|
-
totalMatches: z.number(),
|
|
71
|
-
contextUsed: z.number(),
|
|
72
|
-
contextBudget: z.number(),
|
|
73
|
-
suggestions: z.array(z.string()).default([]),
|
|
74
|
-
queryInterpretation: z.string(),
|
|
45
|
+
export const OpalServeConfigSchema = z.object({
|
|
46
|
+
servers: z.array(McpServerConfigSchema).default([]),
|
|
47
|
+
gateway: GatewayConfigSchema.default({}),
|
|
48
|
+
storage: StorageConfigSchema.default({}),
|
|
49
|
+
logging: LoggingConfigSchema.default({}),
|
|
75
50
|
});
|
|
76
51
|
//# sourceMappingURL=index.js.map
|
package/dist/types/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,0DAA0D;AAE1D,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IACxB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACrC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACpC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC3B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IACtB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACrB,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CACzC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC;IACpD,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC;IAClC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACrB,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CACzC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IAChE,oBAAoB;IACpB,kBAAkB;IAClB,6BAA6B;CAC9B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,EAAE,kDAAkD,CAAC;IACjG,SAAS,EAAE,qBAAqB;IAChC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAClC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACrC,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CACvC,CAAC,CAAC;AAKH,+BAA+B;AAE/B,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC;AAuC/F,kCAAkC;AAElC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IACtD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;CACtC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAG,uCAAuC;CACvE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;CACrF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACnD,OAAO,EAAE,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;IACxC,OAAO,EAAE,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;IACxC,OAAO,EAAE,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;CACzC,CAAC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import pino from 'pino';
|
|
2
|
+
declare let logger: pino.Logger;
|
|
3
|
+
export declare function setLogLevel(level: string): void;
|
|
4
|
+
export declare function createLogger(name: string): pino.Logger;
|
|
5
|
+
export declare function setSilent(): void;
|
|
6
|
+
export { logger };
|
|
7
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,QAAA,IAAI,MAAM,EAAE,IAAI,CAAC,MAUf,CAAC;AAEH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAE/C;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,CAEtD;AAED,wBAAgB,SAAS,IAAI,IAAI,CAEhC;AAED,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import pino from 'pino';
|
|
2
|
+
let logger = pino({
|
|
3
|
+
level: 'info',
|
|
4
|
+
transport: {
|
|
5
|
+
target: 'pino-pretty',
|
|
6
|
+
options: {
|
|
7
|
+
colorize: true,
|
|
8
|
+
ignore: 'pid,hostname',
|
|
9
|
+
translateTime: 'HH:MM:ss',
|
|
10
|
+
},
|
|
11
|
+
},
|
|
12
|
+
});
|
|
13
|
+
export function setLogLevel(level) {
|
|
14
|
+
logger.level = level;
|
|
15
|
+
}
|
|
16
|
+
export function createLogger(name) {
|
|
17
|
+
return logger.child({ name });
|
|
18
|
+
}
|
|
19
|
+
export function setSilent() {
|
|
20
|
+
logger = pino({ level: 'silent' });
|
|
21
|
+
}
|
|
22
|
+
export { logger };
|
|
23
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,IAAI,MAAM,GAAgB,IAAI,CAAC;IAC7B,KAAK,EAAE,MAAM;IACb,SAAS,EAAE;QACT,MAAM,EAAE,aAAa;QACrB,OAAO,EAAE;YACP,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,cAAc;YACtB,aAAa,EAAE,UAAU;SAC1B;KACF;CACF,CAAC,CAAC;AAEH,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,MAAM,GAAG,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;AACrC,CAAC;AAED,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,80 +1,89 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opalserve",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"description": "Local MCP tool registry and discovery hub ā aggregate, search, and proxy tools across multiple MCP servers",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"types": "./dist/index.d.ts"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
8
14
|
"bin": {
|
|
9
|
-
"opalserve": "./dist/cli/index.js"
|
|
10
|
-
|
|
15
|
+
"opalserve": "./dist/cli/index.js"
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"dist",
|
|
19
|
+
"assets/logo.svg",
|
|
20
|
+
"LICENSE",
|
|
21
|
+
"README.md"
|
|
22
|
+
],
|
|
23
|
+
"scripts": {
|
|
24
|
+
"build": "tsc",
|
|
25
|
+
"start": "node dist/cli/index.js",
|
|
26
|
+
"dev": "tsx watch src/cli/index.ts",
|
|
27
|
+
"typecheck": "tsc --noEmit",
|
|
28
|
+
"lint": "eslint src/",
|
|
29
|
+
"test": "vitest run",
|
|
30
|
+
"test:watch": "vitest",
|
|
31
|
+
"prepublishOnly": "pnpm build",
|
|
32
|
+
"docs:dev": "vitepress dev docs",
|
|
33
|
+
"docs:build": "vitepress build docs",
|
|
34
|
+
"docs:preview": "vitepress preview docs"
|
|
11
35
|
},
|
|
12
36
|
"keywords": [
|
|
13
|
-
"model-context-protocol",
|
|
14
37
|
"mcp",
|
|
15
|
-
"
|
|
16
|
-
"ai-agents",
|
|
17
|
-
"llm-tools",
|
|
38
|
+
"model-context-protocol",
|
|
18
39
|
"tool-registry",
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
"
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"workflow-builder",
|
|
27
|
-
"jwt-auth",
|
|
28
|
-
"governance",
|
|
29
|
-
"audit",
|
|
30
|
-
"ai-tooling",
|
|
31
|
-
"context-window"
|
|
40
|
+
"ai-tools",
|
|
41
|
+
"cli",
|
|
42
|
+
"discovery",
|
|
43
|
+
"aggregator",
|
|
44
|
+
"llm",
|
|
45
|
+
"claude",
|
|
46
|
+
"cursor"
|
|
32
47
|
],
|
|
33
|
-
"author": "AdityaIdev <aiexpert@adityaai.dev>
|
|
48
|
+
"author": "AdityaIdev <aiexpert@adityaai.dev>",
|
|
34
49
|
"license": "MIT",
|
|
50
|
+
"homepage": "https://adityaidev.github.io/opalserve",
|
|
35
51
|
"repository": {
|
|
36
52
|
"type": "git",
|
|
37
|
-
"url": "
|
|
53
|
+
"url": "https://github.com/adityaidev/opalserve.git"
|
|
38
54
|
},
|
|
39
|
-
"homepage": "https://github.com/adityaidev/opalserve#readme",
|
|
40
55
|
"bugs": {
|
|
41
56
|
"url": "https://github.com/adityaidev/opalserve/issues"
|
|
42
57
|
},
|
|
58
|
+
"engines": {
|
|
59
|
+
"node": ">=20.0.0"
|
|
60
|
+
},
|
|
43
61
|
"dependencies": {
|
|
44
|
-
"@
|
|
45
|
-
"
|
|
46
|
-
"
|
|
62
|
+
"@fastify/cors": "^11.0.0",
|
|
63
|
+
"@inquirer/prompts": "^8.4.1",
|
|
64
|
+
"@modelcontextprotocol/sdk": "^1.12.1",
|
|
65
|
+
"boxen": "^8.0.1",
|
|
47
66
|
"chalk": "^5.4.1",
|
|
67
|
+
"cli-table3": "^0.6.5",
|
|
68
|
+
"commander": "^13.1.0",
|
|
69
|
+
"cosmiconfig": "^9.0.0",
|
|
70
|
+
"fastify": "^5.3.3",
|
|
71
|
+
"gradient-string": "^3.0.0",
|
|
72
|
+
"inquirer": "^12.6.0",
|
|
48
73
|
"ora": "^8.2.0",
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
"
|
|
52
|
-
"cors": "^2.8.5",
|
|
53
|
-
"helmet": "^8.0.0",
|
|
54
|
-
"jsonwebtoken": "^9.0.2"
|
|
74
|
+
"pino": "^9.6.0",
|
|
75
|
+
"pino-pretty": "^13.0.0",
|
|
76
|
+
"zod": "^3.24.4"
|
|
55
77
|
},
|
|
56
78
|
"devDependencies": {
|
|
57
|
-
"@
|
|
58
|
-
"@types/
|
|
59
|
-
"@types/
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
"typescript": "^5.
|
|
63
|
-
"
|
|
64
|
-
"
|
|
65
|
-
"
|
|
66
|
-
"@typescript-eslint/parser": "^8.20.0"
|
|
67
|
-
},
|
|
68
|
-
"engines": {
|
|
69
|
-
"node": ">=20.0.0"
|
|
70
|
-
},
|
|
71
|
-
"scripts": {
|
|
72
|
-
"build": "tsc",
|
|
73
|
-
"start": "node dist/cli/index.js",
|
|
74
|
-
"dev": "tsx watch src/cli/index.ts",
|
|
75
|
-
"discover": "node dist/cli/discover.js",
|
|
76
|
-
"typecheck": "tsc --noEmit",
|
|
77
|
-
"lint": "eslint src --ext .ts",
|
|
78
|
-
"test": "echo \"Tests not configured\" && exit 0"
|
|
79
|
+
"@eslint/js": "^9.25.1",
|
|
80
|
+
"@types/gradient-string": "^1.1.6",
|
|
81
|
+
"@types/node": "^22.15.3",
|
|
82
|
+
"eslint": "^9.25.1",
|
|
83
|
+
"tsx": "^4.19.4",
|
|
84
|
+
"typescript": "^5.8.3",
|
|
85
|
+
"typescript-eslint": "^8.31.0",
|
|
86
|
+
"vitepress": "^1.6.3",
|
|
87
|
+
"vitest": "^3.1.2"
|
|
79
88
|
}
|
|
80
|
-
}
|
|
89
|
+
}
|
package/.env.example
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
# MCP Registry Configuration
|
|
2
|
-
PORT=3000
|
|
3
|
-
HOST=localhost
|
|
4
|
-
LOG_LEVEL=info
|
|
5
|
-
|
|
6
|
-
# Security
|
|
7
|
-
JWT_SECRET=your-secret-key-change-in-production
|
|
8
|
-
API_KEY=your-api-key
|
|
9
|
-
|
|
10
|
-
# Server Configurations
|
|
11
|
-
GITHUB_TOKEN=your-github-token
|
|
12
|
-
SLACK_BOT_TOKEN=xoxb-your-slack-token
|
|
13
|
-
POSTGRES_URL=postgresql://localhost:5432/mcp
|
|
14
|
-
GOOGLE_SERVICE_ACCOUNT=./config/google-service-account.json
|
|
15
|
-
|
|
16
|
-
# Registry Settings
|
|
17
|
-
MAX_TOOLS_PER_RESPONSE=50
|
|
18
|
-
CONTEXT_TOKEN_BUDGET=128000
|
|
19
|
-
ENABLE_AUTH=false
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
# MCP Interoperability Layer - Server Configuration
|
|
2
|
-
# This file defines the MCP servers to register with the registry
|
|
3
|
-
|
|
4
|
-
servers:
|
|
5
|
-
- id: github
|
|
6
|
-
name: GitHub
|
|
7
|
-
type: github
|
|
8
|
-
enabled: true
|
|
9
|
-
description: GitHub MCP server for repository, issue, and PR management
|
|
10
|
-
auth:
|
|
11
|
-
type: api-key
|
|
12
|
-
envVar: GITHUB_TOKEN
|
|
13
|
-
tags:
|
|
14
|
-
- repository
|
|
15
|
-
- github
|
|
16
|
-
- code
|
|
17
|
-
|
|
18
|
-
- id: slack
|
|
19
|
-
name: Slack
|
|
20
|
-
type: slack
|
|
21
|
-
enabled: true
|
|
22
|
-
description: Slack MCP server for messaging and channel management
|
|
23
|
-
auth:
|
|
24
|
-
type: api-key
|
|
25
|
-
envVar: SLACK_BOT_TOKEN
|
|
26
|
-
tags:
|
|
27
|
-
- messaging
|
|
28
|
-
- slack
|
|
29
|
-
- notifications
|
|
30
|
-
|
|
31
|
-
- id: postgres
|
|
32
|
-
name: PostgreSQL
|
|
33
|
-
type: postgres
|
|
34
|
-
enabled: true
|
|
35
|
-
description: PostgreSQL MCP server for database operations
|
|
36
|
-
auth:
|
|
37
|
-
type: none
|
|
38
|
-
envVar: POSTGRES_URL
|
|
39
|
-
tags:
|
|
40
|
-
- database
|
|
41
|
-
- postgres
|
|
42
|
-
- sql
|
|
43
|
-
|
|
44
|
-
- id: google-drive
|
|
45
|
-
name: Google Drive
|
|
46
|
-
type: google-drive
|
|
47
|
-
enabled: true
|
|
48
|
-
description: Google Drive MCP server for file management
|
|
49
|
-
auth:
|
|
50
|
-
type: oauth
|
|
51
|
-
envVar: GOOGLE_SERVICE_ACCOUNT
|
|
52
|
-
tags:
|
|
53
|
-
- files
|
|
54
|
-
- google
|
|
55
|
-
- documents
|
|
56
|
-
|
|
57
|
-
- id: custom
|
|
58
|
-
name: Custom Tools
|
|
59
|
-
type: custom
|
|
60
|
-
enabled: true
|
|
61
|
-
description: Custom HTTP and webhook tools
|
|
62
|
-
auth:
|
|
63
|
-
type: none
|
|
64
|
-
tags:
|
|
65
|
-
- custom
|
|
66
|
-
- http
|
|
67
|
-
- webhooks
|
package/config/servers.yaml
DELETED
package/dist/cli/discover.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../src/cli/discover.ts"],"names":[],"mappings":""}
|
package/dist/cli/discover.js
DELETED
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import chalk from 'chalk';
|
|
3
|
-
import ora from 'ora';
|
|
4
|
-
import inquirer from 'inquirer';
|
|
5
|
-
const DEFAULT_REGISTRY_URL = 'http://localhost:3000';
|
|
6
|
-
async function httpGet(url, timeout = 10000) {
|
|
7
|
-
const controller = new AbortController();
|
|
8
|
-
const timeoutId = setTimeout(() => controller.abort(), timeout);
|
|
9
|
-
try {
|
|
10
|
-
const response = await fetch(url, { signal: controller.signal });
|
|
11
|
-
clearTimeout(timeoutId);
|
|
12
|
-
if (!response.ok) {
|
|
13
|
-
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
14
|
-
}
|
|
15
|
-
return response.json();
|
|
16
|
-
}
|
|
17
|
-
catch (error) {
|
|
18
|
-
clearTimeout(timeoutId);
|
|
19
|
-
if (error instanceof Error) {
|
|
20
|
-
if (error.name === 'AbortError') {
|
|
21
|
-
throw new Error('Request timeout');
|
|
22
|
-
}
|
|
23
|
-
throw error;
|
|
24
|
-
}
|
|
25
|
-
throw error;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
async function discover(query, options) {
|
|
29
|
-
const url = options.registryUrl || DEFAULT_REGISTRY_URL;
|
|
30
|
-
const spinner = ora('Discovering available tools...').start();
|
|
31
|
-
try {
|
|
32
|
-
const params = new URLSearchParams();
|
|
33
|
-
params.append('query', query);
|
|
34
|
-
if (options.limit)
|
|
35
|
-
params.append('limit', String(options.limit));
|
|
36
|
-
const result = await httpGet(`${url}/api/v1/discover?${params}`);
|
|
37
|
-
spinner.succeed();
|
|
38
|
-
return result;
|
|
39
|
-
}
|
|
40
|
-
catch (error) {
|
|
41
|
-
spinner.fail();
|
|
42
|
-
if (error instanceof Error) {
|
|
43
|
-
if (error.message.includes('ECONNREFUSED') || error.message.includes('fetch')) {
|
|
44
|
-
console.error(chalk.red(`\nError: Cannot connect to OpalServe registry at ${url}`));
|
|
45
|
-
console.log(chalk.yellow('\nMake sure the registry is running:'));
|
|
46
|
-
console.log(chalk.cyan(' opalserve start\n'));
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
console.error(chalk.red(`\nError: ${error.message}`));
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
throw error;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
function formatResults(result, json) {
|
|
56
|
-
if (json) {
|
|
57
|
-
console.log(JSON.stringify(result, null, 2));
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
|
-
console.log(chalk.bold('\nš Query Interpretation:'));
|
|
61
|
-
console.log(` ${result.queryInterpretation}\n`);
|
|
62
|
-
console.log(chalk.bold(`š Found ${result.totalMatches} matching tools`));
|
|
63
|
-
console.log(chalk.gray(` Context used: ${result.contextUsed} / ${result.contextBudget} tokens\n`));
|
|
64
|
-
if (result.tools.length === 0) {
|
|
65
|
-
console.log(chalk.yellow('No tools matched your query. Try a different search term.'));
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
console.log(chalk.bold('\nš ļø Available Tools:\n'));
|
|
69
|
-
for (const { tool, relevanceScore, matchReasons } of result.tools) {
|
|
70
|
-
const scoreColor = relevanceScore > 0.7 ? 'green' : relevanceScore > 0.4 ? 'yellow' : 'gray';
|
|
71
|
-
console.log(` ${chalk[scoreColor](`[${Math.round(relevanceScore * 100)}%]`)} ${chalk.cyan(tool.name)}`);
|
|
72
|
-
console.log(` ${tool.description}`);
|
|
73
|
-
console.log(` ${chalk.gray('Server:')} ${chalk.white(tool.serverName)}`);
|
|
74
|
-
if (tool.tags.length > 0) {
|
|
75
|
-
console.log(` ${chalk.gray('Tags:')} ${tool.tags.map(t => chalk.magenta(t)).join(', ')}`);
|
|
76
|
-
}
|
|
77
|
-
if (matchReasons.length > 0) {
|
|
78
|
-
console.log(` ${chalk.gray('Matched:')} ${matchReasons.join(', ')}`);
|
|
79
|
-
}
|
|
80
|
-
console.log();
|
|
81
|
-
}
|
|
82
|
-
if (result.servers.length > 0) {
|
|
83
|
-
console.log(chalk.bold('\nš„ļø Connected Servers:\n'));
|
|
84
|
-
for (const server of result.servers) {
|
|
85
|
-
const statusColor = server.health.status === 'healthy' ? 'green' : server.health.status === 'degraded' ? 'yellow' : 'red';
|
|
86
|
-
console.log(` ${chalk[statusColor]('ā')} ${chalk.white(server.name)} (${server.type})`);
|
|
87
|
-
}
|
|
88
|
-
console.log();
|
|
89
|
-
}
|
|
90
|
-
if (result.suggestions.length > 0) {
|
|
91
|
-
console.log(chalk.bold('\nš” Suggestions:'));
|
|
92
|
-
for (const suggestion of result.suggestions) {
|
|
93
|
-
console.log(` ⢠${suggestion}`);
|
|
94
|
-
}
|
|
95
|
-
console.log();
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
async function interactiveMode(registryUrl) {
|
|
99
|
-
console.log(chalk.bold('\nšÆ OpalServe Discovery CLI - Interactive Mode\n'));
|
|
100
|
-
console.log(chalk.gray('Type your query or "exit" to quit\n'));
|
|
101
|
-
const { query } = await inquirer.prompt([
|
|
102
|
-
{
|
|
103
|
-
type: 'input',
|
|
104
|
-
name: 'query',
|
|
105
|
-
message: 'What would you like to do?',
|
|
106
|
-
default: 'what can I do?',
|
|
107
|
-
},
|
|
108
|
-
]);
|
|
109
|
-
if (query.toLowerCase() === 'exit') {
|
|
110
|
-
return;
|
|
111
|
-
}
|
|
112
|
-
const result = await discover(query, { registryUrl });
|
|
113
|
-
formatResults(result, false);
|
|
114
|
-
await interactiveMode(registryUrl);
|
|
115
|
-
}
|
|
116
|
-
async function main() {
|
|
117
|
-
const args = process.argv.slice(2);
|
|
118
|
-
if (args.includes('--help') || args.includes('-h')) {
|
|
119
|
-
console.log(`
|
|
120
|
-
${chalk.bold('OpalServe Discovery CLI')}
|
|
121
|
-
|
|
122
|
-
${chalk.underline('Usage:')}
|
|
123
|
-
opalserve-discover [query] [options]
|
|
124
|
-
|
|
125
|
-
${chalk.underline('Options:')}
|
|
126
|
-
--url <url> Registry URL (default: http://localhost:3000)
|
|
127
|
-
--limit <n> Maximum tools to return (default: 20)
|
|
128
|
-
--json Output as JSON
|
|
129
|
-
--interactive Interactive mode
|
|
130
|
-
--help, -h Show this help
|
|
131
|
-
|
|
132
|
-
${chalk.underline('Examples:')}
|
|
133
|
-
opalserve-discover "what can I do?"
|
|
134
|
-
opalserve-discover "github repository" --limit 10
|
|
135
|
-
opalserve-discover --json
|
|
136
|
-
opalserve-discover --interactive
|
|
137
|
-
`);
|
|
138
|
-
return;
|
|
139
|
-
}
|
|
140
|
-
const interactive = args.includes('--interactive');
|
|
141
|
-
const json = args.includes('--json');
|
|
142
|
-
const urlArg = args.indexOf('--url');
|
|
143
|
-
const registryUrl = urlArg !== -1 ? args[urlArg + 1] : DEFAULT_REGISTRY_URL;
|
|
144
|
-
const limitArg = args.indexOf('--limit');
|
|
145
|
-
const limit = limitArg !== -1 ? parseInt(args[limitArg + 1], 10) : 20;
|
|
146
|
-
if (interactive) {
|
|
147
|
-
await interactiveMode(registryUrl);
|
|
148
|
-
return;
|
|
149
|
-
}
|
|
150
|
-
const query = args.filter(a => !a.startsWith('--')).join(' ') || 'what can I do?';
|
|
151
|
-
try {
|
|
152
|
-
const result = await discover(query, { registryUrl, limit, json });
|
|
153
|
-
formatResults(result, json);
|
|
154
|
-
}
|
|
155
|
-
catch {
|
|
156
|
-
process.exit(1);
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
main().catch(console.error);
|
|
160
|
-
//# sourceMappingURL=discover.js.map
|
package/dist/cli/discover.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/cli/discover.ts"],"names":[],"mappings":"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"}
|