@digital-science-dsl/dimensions-analytics-mcp 1.4.0 → 1.4.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/CHANGELOG.md +6 -0
- package/dist/client/config.d.ts +14 -9
- package/dist/client/config.d.ts.map +1 -1
- package/dist/client/config.js +17 -31
- package/dist/client/config.js.map +1 -1
- package/dist/client/deployment-config.d.ts.map +1 -1
- package/dist/client/deployment-config.js +6 -2
- package/dist/client/deployment-config.js.map +1 -1
- package/dist/dsl/client.d.ts.map +1 -1
- package/dist/dsl/client.js +4 -1
- package/dist/dsl/client.js.map +1 -1
- package/package.json +2 -2
- package/src/client/config.ts +29 -41
- package/src/client/deployment-config.ts +7 -2
- package/src/dsl/client.ts +6 -3
- package/test/client/config-schema.test.ts +46 -0
- package/test/client/deployment-config.test.ts +11 -0
- package/test/dsl/client.test.ts +22 -0
package/CHANGELOG.md
CHANGED
package/dist/client/config.d.ts
CHANGED
|
@@ -7,13 +7,15 @@ import { z } from "zod";
|
|
|
7
7
|
* Zod schema for DimensionsClient configuration.
|
|
8
8
|
* Validates and provides defaults for all configuration options.
|
|
9
9
|
*/
|
|
10
|
-
export declare const DimensionsClientConfigSchema: z.ZodObject<{
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
10
|
+
export declare const DimensionsClientConfigSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
11
|
+
baseUrl: z.ZodDefault<z.ZodString>;
|
|
12
|
+
timeout: z.ZodDefault<z.ZodNumber>;
|
|
13
|
+
maxRetries: z.ZodDefault<z.ZodNumber>;
|
|
14
|
+
retryDelay: z.ZodDefault<z.ZodNumber>;
|
|
15
|
+
rateLimitPerMinute: z.ZodDefault<z.ZodNumber>;
|
|
16
|
+
validateQueries: z.ZodDefault<z.ZodBoolean>;
|
|
17
|
+
backend: z.ZodLiteral<"internal">;
|
|
18
|
+
internal: z.ZodObject<{
|
|
17
19
|
service: z.ZodObject<{
|
|
18
20
|
serviceUrl: z.ZodString;
|
|
19
21
|
username: z.ZodString;
|
|
@@ -24,14 +26,17 @@ export declare const DimensionsClientConfigSchema: z.ZodObject<{
|
|
|
24
26
|
}, z.core.$strip>;
|
|
25
27
|
userEmail: z.ZodString;
|
|
26
28
|
clientIp: z.ZodOptional<z.ZodString>;
|
|
27
|
-
}, z.core.$strip
|
|
29
|
+
}, z.core.$strip>;
|
|
30
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
28
31
|
baseUrl: z.ZodDefault<z.ZodString>;
|
|
29
32
|
timeout: z.ZodDefault<z.ZodNumber>;
|
|
30
33
|
maxRetries: z.ZodDefault<z.ZodNumber>;
|
|
31
34
|
retryDelay: z.ZodDefault<z.ZodNumber>;
|
|
32
35
|
rateLimitPerMinute: z.ZodDefault<z.ZodNumber>;
|
|
33
36
|
validateQueries: z.ZodDefault<z.ZodBoolean>;
|
|
34
|
-
|
|
37
|
+
backend: z.ZodDefault<z.ZodLiteral<"public">>;
|
|
38
|
+
apiKey: z.ZodString;
|
|
39
|
+
}, z.core.$strip>]>;
|
|
35
40
|
/**
|
|
36
41
|
* Configuration options for DimensionsClient.
|
|
37
42
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/client/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/client/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAkCxB;;;GAGG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAGvC,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAElF;;GAEG;AACH,MAAM,MAAM,8BAA8B,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,4BAA4B,CAAC,CAAC"}
|
package/dist/client/config.js
CHANGED
|
@@ -9,18 +9,7 @@ const InternalClientConfigSchema = z.object({
|
|
|
9
9
|
userEmail: z.string().min(1),
|
|
10
10
|
clientIp: z.string().optional(),
|
|
11
11
|
});
|
|
12
|
-
|
|
13
|
-
* Zod schema for DimensionsClient configuration.
|
|
14
|
-
* Validates and provides defaults for all configuration options.
|
|
15
|
-
*/
|
|
16
|
-
export const DimensionsClientConfigSchema = z
|
|
17
|
-
.object({
|
|
18
|
-
/** Dimensions API key (required for public backend) */
|
|
19
|
-
apiKey: z.string().min(1).optional(),
|
|
20
|
-
/** DSL backend: public JWT API or internal dsl-service */
|
|
21
|
-
backend: z.enum(["public", "internal"]).default("public"),
|
|
22
|
-
/** Internal dsl-service settings (required when backend is internal) */
|
|
23
|
-
internal: InternalClientConfigSchema.optional(),
|
|
12
|
+
const SharedClientConfigSchema = z.object({
|
|
24
13
|
/** Base URL for Dimensions API (public backend only) */
|
|
25
14
|
baseUrl: z.string().url().default("https://app.dimensions.ai"),
|
|
26
15
|
/** Request timeout in milliseconds */
|
|
@@ -33,24 +22,21 @@ export const DimensionsClientConfigSchema = z
|
|
|
33
22
|
rateLimitPerMinute: z.number().positive().default(30),
|
|
34
23
|
/** Validate DSL queries before sending. Default: true */
|
|
35
24
|
validateQueries: z.boolean().default(false),
|
|
36
|
-
})
|
|
37
|
-
.superRefine((value, ctx) => {
|
|
38
|
-
if (value.backend === "public") {
|
|
39
|
-
if (!value.apiKey) {
|
|
40
|
-
ctx.addIssue({
|
|
41
|
-
code: "custom",
|
|
42
|
-
message: "apiKey is required for public backend",
|
|
43
|
-
path: ["apiKey"],
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
if (!value.internal) {
|
|
49
|
-
ctx.addIssue({
|
|
50
|
-
code: "custom",
|
|
51
|
-
message: "internal config is required for internal backend",
|
|
52
|
-
path: ["internal"],
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
25
|
});
|
|
26
|
+
const PublicClientConfigSchema = SharedClientConfigSchema.extend({
|
|
27
|
+
backend: z.literal("public").default("public"),
|
|
28
|
+
apiKey: z.string().min(1),
|
|
29
|
+
});
|
|
30
|
+
const InternalBackendConfigSchema = SharedClientConfigSchema.extend({
|
|
31
|
+
backend: z.literal("internal"),
|
|
32
|
+
internal: InternalClientConfigSchema,
|
|
33
|
+
});
|
|
34
|
+
/**
|
|
35
|
+
* Zod schema for DimensionsClient configuration.
|
|
36
|
+
* Validates and provides defaults for all configuration options.
|
|
37
|
+
*/
|
|
38
|
+
export const DimensionsClientConfigSchema = z.union([
|
|
39
|
+
InternalBackendConfigSchema,
|
|
40
|
+
PublicClientConfigSchema,
|
|
41
|
+
]);
|
|
56
42
|
//# sourceMappingURL=config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/client/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,OAAO,EAAE,oBAAoB;IAC7B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC;AAEH
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/client/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,OAAO,EAAE,oBAAoB;IAC7B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC;AAEH,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,wDAAwD;IACxD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,2BAA2B,CAAC;IAC9D,sCAAsC;IACtC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAC7C,uCAAuC;IACvC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/C,4CAA4C;IAC5C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAC/C,uEAAuE;IACvE,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACrD,yDAAyD;IACzD,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CAC5C,CAAC,CAAC;AAEH,MAAM,wBAAwB,GAAG,wBAAwB,CAAC,MAAM,CAAC;IAC/D,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC9C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC1B,CAAC,CAAC;AAEH,MAAM,2BAA2B,GAAG,wBAAwB,CAAC,MAAM,CAAC;IAClE,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;IAC9B,QAAQ,EAAE,0BAA0B;CACrC,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC;IAClD,2BAA2B;IAC3B,wBAAwB;CACzB,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deployment-config.d.ts","sourceRoot":"","sources":["../../src/client/deployment-config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEhD,eAAO,MAAM,oBAAoB;;;;;;;iBAO/B,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAExE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC;IAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,MAAM,mBAAmB,GAAG,eAAe,GAAG,cAAc,CAAC;AAanE;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,mBAAmB,
|
|
1
|
+
{"version":3,"file":"deployment-config.d.ts","sourceRoot":"","sources":["../../src/client/deployment-config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEhD,eAAO,MAAM,oBAAoB;;;;;;;iBAO/B,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAExE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC;IAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,MAAM,mBAAmB,GAAG,eAAe,GAAG,cAAc,CAAC;AAanE;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,mBAAmB,CA8C1D"}
|
|
@@ -65,17 +65,21 @@ export function loadDeploymentConfig() {
|
|
|
65
65
|
if (missing.length > 0) {
|
|
66
66
|
throw new Error(`Hosted deployment requires: ${missing.join(", ")}`);
|
|
67
67
|
}
|
|
68
|
-
const
|
|
68
|
+
const hosted = InternalDslEnvSchema.extend({
|
|
69
|
+
radarAuthUrl: z.string().url(),
|
|
70
|
+
}).parse({
|
|
69
71
|
serviceUrl,
|
|
70
72
|
username,
|
|
71
73
|
password,
|
|
72
74
|
dslSchema,
|
|
73
75
|
host,
|
|
74
76
|
variant,
|
|
77
|
+
radarAuthUrl,
|
|
75
78
|
});
|
|
79
|
+
const { radarAuthUrl: parsedRadarAuthUrl, ...internal } = hosted;
|
|
76
80
|
return {
|
|
77
81
|
deploymentMode: "hosted",
|
|
78
|
-
radarAuthUrl:
|
|
82
|
+
radarAuthUrl: parsedRadarAuthUrl.replace(/\/$/, ""),
|
|
79
83
|
internal,
|
|
80
84
|
httpPort: readIntEnv(process.env.MCP_HTTP_PORT, 8080, 1),
|
|
81
85
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deployment-config.js","sourceRoot":"","sources":["../../src/client/deployment-config.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"deployment-config.js","sourceRoot":"","sources":["../../src/client/deployment-config.ts"],"names":[],"mappings":"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"}
|
package/dist/dsl/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/dsl/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAEV,OAAO,EACP,sBAAsB,EACtB,WAAW,EACX,oBAAoB,EAErB,MAAM,oBAAoB,CAAC;AAe5B,OAAO,EAAsB,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EACV,aAAa,EACb,OAAO,EACP,KAAK,EACL,YAAY,EACZ,MAAM,EACN,cAAc,EACd,WAAW,EACX,UAAU,EACX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACV,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,EACb,gBAAgB,EAChB,2BAA2B,EAC3B,uBAAuB,EACvB,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,8BAA8B,CAAC;AAEtC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,yDAAyD;IACzD,SAAS,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiC;IACxD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAoB;IACpD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,WAAW,CAAC,CAAc;IAElC;;;;OAIG;gBACS,MAAM,EAAE,sBAAsB;YAkD5B,eAAe;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/dsl/client.ts"],"names":[],"mappings":"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"}
|
package/dist/dsl/client.js
CHANGED
|
@@ -42,7 +42,7 @@ export class DimensionsClient {
|
|
|
42
42
|
}
|
|
43
43
|
this.config = parseResult.data;
|
|
44
44
|
if (this.config.backend === "internal") {
|
|
45
|
-
const internal = this.config
|
|
45
|
+
const { internal } = this.config;
|
|
46
46
|
this.rateLimiter = new RateLimiter({
|
|
47
47
|
maxRequests: 1000,
|
|
48
48
|
windowMs: 60_000,
|
|
@@ -81,6 +81,9 @@ export class DimensionsClient {
|
|
|
81
81
|
if (this.internalClient) {
|
|
82
82
|
return this.internalClient.query(dsl, options);
|
|
83
83
|
}
|
|
84
|
+
if (!this.httpClient) {
|
|
85
|
+
throw new Error("DimensionsClient HTTP backend is not configured");
|
|
86
|
+
}
|
|
84
87
|
const response = await this.httpClient.query(dsl, endpoint, options);
|
|
85
88
|
return response;
|
|
86
89
|
}
|
package/dist/dsl/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/dsl/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,OAAO,EACL,kBAAkB,EAClB,4BAA4B,EAC5B,UAAU,EACV,iBAAiB,EACjB,WAAW,EACX,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,eAAe,EACf,0BAA0B,EAC1B,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAsB,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAiClD;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,gBAAgB;IACV,MAAM,CAAiC;IACvC,YAAY,CAAgB;IAC5B,UAAU,CAAc;IACxB,cAAc,CAAqB;IACnC,WAAW,CAAc;IAClC,WAAW,CAAe;IAElC;;;;OAIG;IACH,YAAY,MAA8B;QACxC,8BAA8B;QAC9B,MAAM,WAAW,GAAG,4BAA4B,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACnE,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YACzB,MAAM,IAAI,eAAe,CAAC,0BAA0B,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;gBAC/E,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,MAAM;aACjC,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC;QAE/B,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/dsl/client.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@digital-science-dsl/dimensions-analytics-mcp",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.1",
|
|
4
4
|
"description": "Dimensions Analytics MCP server for Dimensions DSL querying",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"devDependencies": {
|
|
26
26
|
"@modelcontextprotocol/client": "^2.0.0",
|
|
27
27
|
"@types/express": "^5.0.0",
|
|
28
|
-
"fast-check": "^4.
|
|
28
|
+
"fast-check": "^4.9.0",
|
|
29
29
|
"typescript": "^5.9.3"
|
|
30
30
|
},
|
|
31
31
|
"publishConfig": {
|
package/src/client/config.ts
CHANGED
|
@@ -12,51 +12,39 @@ const InternalClientConfigSchema = z.object({
|
|
|
12
12
|
clientIp: z.string().optional(),
|
|
13
13
|
});
|
|
14
14
|
|
|
15
|
+
const SharedClientConfigSchema = z.object({
|
|
16
|
+
/** Base URL for Dimensions API (public backend only) */
|
|
17
|
+
baseUrl: z.string().url().default("https://app.dimensions.ai"),
|
|
18
|
+
/** Request timeout in milliseconds */
|
|
19
|
+
timeout: z.number().positive().default(30000),
|
|
20
|
+
/** Maximum number of retry attempts */
|
|
21
|
+
maxRetries: z.number().nonnegative().default(3),
|
|
22
|
+
/** Delay between retries in milliseconds */
|
|
23
|
+
retryDelay: z.number().positive().default(1000),
|
|
24
|
+
/** Maximum requests per minute (public backend client-side limiter) */
|
|
25
|
+
rateLimitPerMinute: z.number().positive().default(30),
|
|
26
|
+
/** Validate DSL queries before sending. Default: true */
|
|
27
|
+
validateQueries: z.boolean().default(false),
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
const PublicClientConfigSchema = SharedClientConfigSchema.extend({
|
|
31
|
+
backend: z.literal("public").default("public"),
|
|
32
|
+
apiKey: z.string().min(1),
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
const InternalBackendConfigSchema = SharedClientConfigSchema.extend({
|
|
36
|
+
backend: z.literal("internal"),
|
|
37
|
+
internal: InternalClientConfigSchema,
|
|
38
|
+
});
|
|
39
|
+
|
|
15
40
|
/**
|
|
16
41
|
* Zod schema for DimensionsClient configuration.
|
|
17
42
|
* Validates and provides defaults for all configuration options.
|
|
18
43
|
*/
|
|
19
|
-
export const DimensionsClientConfigSchema = z
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
/** DSL backend: public JWT API or internal dsl-service */
|
|
24
|
-
backend: z.enum(["public", "internal"]).default("public"),
|
|
25
|
-
/** Internal dsl-service settings (required when backend is internal) */
|
|
26
|
-
internal: InternalClientConfigSchema.optional(),
|
|
27
|
-
/** Base URL for Dimensions API (public backend only) */
|
|
28
|
-
baseUrl: z.string().url().default("https://app.dimensions.ai"),
|
|
29
|
-
/** Request timeout in milliseconds */
|
|
30
|
-
timeout: z.number().positive().default(30000),
|
|
31
|
-
/** Maximum number of retry attempts */
|
|
32
|
-
maxRetries: z.number().nonnegative().default(3),
|
|
33
|
-
/** Delay between retries in milliseconds */
|
|
34
|
-
retryDelay: z.number().positive().default(1000),
|
|
35
|
-
/** Maximum requests per minute (public backend client-side limiter) */
|
|
36
|
-
rateLimitPerMinute: z.number().positive().default(30),
|
|
37
|
-
/** Validate DSL queries before sending. Default: true */
|
|
38
|
-
validateQueries: z.boolean().default(false),
|
|
39
|
-
})
|
|
40
|
-
.superRefine((value, ctx) => {
|
|
41
|
-
if (value.backend === "public") {
|
|
42
|
-
if (!value.apiKey) {
|
|
43
|
-
ctx.addIssue({
|
|
44
|
-
code: "custom",
|
|
45
|
-
message: "apiKey is required for public backend",
|
|
46
|
-
path: ["apiKey"],
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
if (!value.internal) {
|
|
53
|
-
ctx.addIssue({
|
|
54
|
-
code: "custom",
|
|
55
|
-
message: "internal config is required for internal backend",
|
|
56
|
-
path: ["internal"],
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
});
|
|
44
|
+
export const DimensionsClientConfigSchema = z.union([
|
|
45
|
+
InternalBackendConfigSchema,
|
|
46
|
+
PublicClientConfigSchema,
|
|
47
|
+
]);
|
|
60
48
|
|
|
61
49
|
/**
|
|
62
50
|
* Configuration options for DimensionsClient.
|
|
@@ -84,18 +84,23 @@ export function loadDeploymentConfig(): AppDeploymentConfig {
|
|
|
84
84
|
throw new Error(`Hosted deployment requires: ${missing.join(", ")}`);
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
const
|
|
87
|
+
const hosted = InternalDslEnvSchema.extend({
|
|
88
|
+
radarAuthUrl: z.string().url(),
|
|
89
|
+
}).parse({
|
|
88
90
|
serviceUrl,
|
|
89
91
|
username,
|
|
90
92
|
password,
|
|
91
93
|
dslSchema,
|
|
92
94
|
host,
|
|
93
95
|
variant,
|
|
96
|
+
radarAuthUrl,
|
|
94
97
|
});
|
|
95
98
|
|
|
99
|
+
const { radarAuthUrl: parsedRadarAuthUrl, ...internal } = hosted;
|
|
100
|
+
|
|
96
101
|
return {
|
|
97
102
|
deploymentMode: "hosted",
|
|
98
|
-
radarAuthUrl:
|
|
103
|
+
radarAuthUrl: parsedRadarAuthUrl.replace(/\/$/, ""),
|
|
99
104
|
internal,
|
|
100
105
|
httpPort: readIntEnv(process.env.MCP_HTTP_PORT, 8080, 1),
|
|
101
106
|
};
|
package/src/dsl/client.ts
CHANGED
|
@@ -97,7 +97,7 @@ export class DimensionsClient {
|
|
|
97
97
|
this.config = parseResult.data;
|
|
98
98
|
|
|
99
99
|
if (this.config.backend === "internal") {
|
|
100
|
-
const internal = this.config
|
|
100
|
+
const { internal } = this.config;
|
|
101
101
|
this.rateLimiter = new RateLimiter({
|
|
102
102
|
maxRequests: 1000,
|
|
103
103
|
windowMs: 60_000,
|
|
@@ -116,7 +116,7 @@ export class DimensionsClient {
|
|
|
116
116
|
|
|
117
117
|
this.authProvider = createAuthProvider({
|
|
118
118
|
type: "jwt",
|
|
119
|
-
apiKey: this.config.apiKey
|
|
119
|
+
apiKey: this.config.apiKey,
|
|
120
120
|
authUrl: `${this.config.baseUrl}/api/auth.json`,
|
|
121
121
|
timeout: this.config.timeout,
|
|
122
122
|
});
|
|
@@ -144,7 +144,10 @@ export class DimensionsClient {
|
|
|
144
144
|
if (this.internalClient) {
|
|
145
145
|
return this.internalClient.query(dsl, options);
|
|
146
146
|
}
|
|
147
|
-
|
|
147
|
+
if (!this.httpClient) {
|
|
148
|
+
throw new Error("DimensionsClient HTTP backend is not configured");
|
|
149
|
+
}
|
|
150
|
+
const response = await this.httpClient.query(dsl, endpoint, options);
|
|
148
151
|
return response as DslResponse;
|
|
149
152
|
}
|
|
150
153
|
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests for DimensionsClientConfigSchema backend variants.
|
|
3
|
+
* @module test/client/config-schema
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { describe, expect, it } from "vitest";
|
|
7
|
+
import { DimensionsClientConfigSchema } from "../../src/client/config.js";
|
|
8
|
+
|
|
9
|
+
const INTERNAL_SERVICE = {
|
|
10
|
+
serviceUrl: "https://dsl.example.com",
|
|
11
|
+
username: "svc",
|
|
12
|
+
password: "secret",
|
|
13
|
+
dslSchema: "external",
|
|
14
|
+
host: "app.example.com",
|
|
15
|
+
variant: "standard",
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
describe("DimensionsClientConfigSchema", () => {
|
|
19
|
+
it("defaults to the public backend when backend is omitted", () => {
|
|
20
|
+
const parsed = DimensionsClientConfigSchema.parse({ apiKey: "test-key" });
|
|
21
|
+
expect(parsed.backend).toBe("public");
|
|
22
|
+
expect(parsed.apiKey).toBe("test-key");
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it("rejects a public backend without an apiKey", () => {
|
|
26
|
+
expect(DimensionsClientConfigSchema.safeParse({}).success).toBe(false);
|
|
27
|
+
expect(DimensionsClientConfigSchema.safeParse({ backend: "public" }).success).toBe(false);
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
it("rejects an internal backend without internal config", () => {
|
|
31
|
+
expect(DimensionsClientConfigSchema.safeParse({ backend: "internal" }).success).toBe(false);
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
it("parses a complete internal backend config", () => {
|
|
35
|
+
const parsed = DimensionsClientConfigSchema.parse({
|
|
36
|
+
backend: "internal",
|
|
37
|
+
internal: {
|
|
38
|
+
service: INTERNAL_SERVICE,
|
|
39
|
+
userEmail: "user@example.com",
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
expect(parsed.backend).toBe("internal");
|
|
43
|
+
expect(parsed.internal.userEmail).toBe("user@example.com");
|
|
44
|
+
expect(parsed.internal.service.host).toBe("app.example.com");
|
|
45
|
+
});
|
|
46
|
+
});
|
|
@@ -54,6 +54,17 @@ describe("loadDeploymentConfig", () => {
|
|
|
54
54
|
});
|
|
55
55
|
});
|
|
56
56
|
|
|
57
|
+
it("strips a trailing slash from RADAR_AUTH_URL", () => {
|
|
58
|
+
Object.assign(process.env, HOSTED_ENV, {
|
|
59
|
+
RADAR_AUTH_URL: "https://app.example.com/",
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
expect(loadDeploymentConfig()).toMatchObject({
|
|
63
|
+
deploymentMode: "hosted",
|
|
64
|
+
radarAuthUrl: "https://app.example.com",
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
|
|
57
68
|
it("throws when hosted mode is missing required variables", () => {
|
|
58
69
|
process.env.DEPLOYMENT_MODE = "hosted";
|
|
59
70
|
process.env.DSL_SERVICE_URL = "https://dsl.example.com";
|
package/test/dsl/client.test.ts
CHANGED
|
@@ -91,6 +91,28 @@ describe("DimensionsClient", () => {
|
|
|
91
91
|
});
|
|
92
92
|
expect(client).toBeInstanceOf(DimensionsClient);
|
|
93
93
|
});
|
|
94
|
+
|
|
95
|
+
it("throws ValidationError for an internal backend without internal config", () => {
|
|
96
|
+
expect(() => new DimensionsClient({ backend: "internal" })).toThrow(ValidationError);
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
it("accepts a valid internal backend configuration", () => {
|
|
100
|
+
const client = new DimensionsClient({
|
|
101
|
+
backend: "internal",
|
|
102
|
+
internal: {
|
|
103
|
+
service: {
|
|
104
|
+
serviceUrl: "https://dsl.example.com",
|
|
105
|
+
username: "svc",
|
|
106
|
+
password: "secret",
|
|
107
|
+
dslSchema: "external",
|
|
108
|
+
host: "app.example.com",
|
|
109
|
+
variant: "standard",
|
|
110
|
+
},
|
|
111
|
+
userEmail: "user@example.com",
|
|
112
|
+
},
|
|
113
|
+
});
|
|
114
|
+
expect(client).toBeInstanceOf(DimensionsClient);
|
|
115
|
+
});
|
|
94
116
|
});
|
|
95
117
|
|
|
96
118
|
describe("send()", () => {
|