@digital-science-dsl/dimensions-analytics-mcp 1.0.3 → 1.0.4
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/deployment-config.d.ts +3 -17
- package/dist/client/deployment-config.d.ts.map +1 -1
- package/dist/client/deployment-config.js +3 -23
- package/dist/client/deployment-config.js.map +1 -1
- package/dist/client/http-client.d.ts +4 -26
- package/dist/client/http-client.d.ts.map +1 -1
- package/dist/client/http-client.js +26 -79
- package/dist/client/http-client.js.map +1 -1
- package/dist/client/internal-dsl-client.d.ts +15 -3
- package/dist/client/internal-dsl-client.d.ts.map +1 -1
- package/dist/client/internal-dsl-client.js +32 -4
- package/dist/client/internal-dsl-client.js.map +1 -1
- package/dist/client/request-retry.d.ts +39 -0
- package/dist/client/request-retry.d.ts.map +1 -0
- package/dist/client/request-retry.js +85 -0
- package/dist/client/request-retry.js.map +1 -0
- package/dist/client/usage-context.d.ts +29 -0
- package/dist/client/usage-context.d.ts.map +1 -0
- package/dist/client/usage-context.js +33 -0
- package/dist/client/usage-context.js.map +1 -0
- package/dist/client/usage-headers.d.ts +19 -0
- package/dist/client/usage-headers.d.ts.map +1 -0
- package/dist/client/usage-headers.js +39 -0
- package/dist/client/usage-headers.js.map +1 -0
- package/dist/dsl/client.d.ts.map +1 -1
- package/dist/dsl/client.js +7 -4
- package/dist/dsl/client.js.map +1 -1
- package/dist/mcp/http-server.d.ts.map +1 -1
- package/dist/mcp/http-server.js +6 -0
- package/dist/mcp/http-server.js.map +1 -1
- package/dist/mcp/server.d.ts +4 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +7 -0
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools/analytics.d.ts.map +1 -1
- package/dist/mcp/tools/analytics.js +5 -4
- package/dist/mcp/tools/analytics.js.map +1 -1
- package/dist/mcp/tools/fetch-search-pages.d.ts.map +1 -1
- package/dist/mcp/tools/fetch-search-pages.js +2 -1
- package/dist/mcp/tools/fetch-search-pages.js.map +1 -1
- package/dist/mcp/tools/functions.d.ts.map +1 -1
- package/dist/mcp/tools/functions.js +3 -2
- package/dist/mcp/tools/functions.js.map +1 -1
- package/dist/mcp/tools/lookup.d.ts.map +1 -1
- package/dist/mcp/tools/lookup.js +4 -3
- package/dist/mcp/tools/lookup.js.map +1 -1
- package/dist/mcp/tools/query.d.ts.map +1 -1
- package/dist/mcp/tools/query.js +2 -1
- package/dist/mcp/tools/query.js.map +1 -1
- package/dist/mcp/tools/schema.d.ts.map +1 -1
- package/dist/mcp/tools/schema.js +3 -2
- package/dist/mcp/tools/schema.js.map +1 -1
- package/dist/mcp/tools/search.d.ts.map +1 -1
- package/dist/mcp/tools/search.js +2 -1
- package/dist/mcp/tools/search.js.map +1 -1
- package/dist/mcp/usage-tracking.d.ts +28 -0
- package/dist/mcp/usage-tracking.d.ts.map +1 -0
- package/dist/mcp/usage-tracking.js +52 -0
- package/dist/mcp/usage-tracking.js.map +1 -0
- package/package.json +1 -1
- package/src/client/deployment-config.ts +3 -36
- package/src/client/http-client.ts +27 -93
- package/src/client/internal-dsl-client.ts +48 -4
- package/src/client/request-retry.ts +115 -0
- package/src/client/usage-context.ts +53 -0
- package/src/client/usage-headers.ts +45 -0
- package/src/dsl/client.ts +7 -4
- package/src/mcp/http-server.ts +9 -0
- package/src/mcp/server.ts +12 -0
- package/src/mcp/tools/analytics.ts +9 -4
- package/src/mcp/tools/fetch-search-pages.ts +3 -1
- package/src/mcp/tools/functions.ts +5 -2
- package/src/mcp/tools/lookup.ts +7 -3
- package/src/mcp/tools/query.ts +3 -1
- package/src/mcp/tools/schema.ts +5 -2
- package/src/mcp/tools/search.ts +3 -1
- package/src/mcp/usage-tracking.ts +72 -0
- package/test/client/deployment-config.test.ts +1 -25
- package/test/client/http-client.test.ts +17 -17
- package/test/client/internal-dsl-client.test.ts +73 -10
- package/test/client/request-retry.test.ts +55 -0
- package/test/client/usage-headers.test.ts +45 -0
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.0.4
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Send hosted usage metadata via X-Dimensions-\* headers for dsl-service. Share retry logic between public API and internal dsl-service clients. Forward client IP with X-Forwarded-For for downstream throttling. Remove redundant body-side dsl logging helpers (server derives MCP user fields).
|
|
8
|
+
|
|
3
9
|
## 1.0.3
|
|
4
10
|
|
|
5
11
|
- README intro, prerequisites, and API key link to account settings
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Deployment mode and hosted backend configuration from environment.
|
|
3
|
+
*
|
|
4
|
+
* Hosted usage tracking: MCP sends X-Dimensions-* headers on dsl-service requests
|
|
5
|
+
* (see usage-headers.ts). dsl-service derives channel/user fields server-side.
|
|
3
6
|
* @module client/deployment-config
|
|
4
7
|
*/
|
|
5
8
|
import { z } from "zod";
|
|
@@ -29,23 +32,6 @@ export type AppDeploymentConfig = HostedEnvConfig | LocalEnvConfig;
|
|
|
29
32
|
* provisioned Dimensions account.
|
|
30
33
|
*/
|
|
31
34
|
export declare function hostedBootstrapUser(host: string): string;
|
|
32
|
-
/**
|
|
33
|
-
* MCP-prefixed user label for dsl usage logs (reversible plus-addressing).
|
|
34
|
-
*/
|
|
35
|
-
export declare function mcpTrackingUser(dimensionsUser: string): string;
|
|
36
|
-
export interface HostedDslLoggingInfo {
|
|
37
|
-
user: string;
|
|
38
|
-
dimensions_user: string;
|
|
39
|
-
channel: "mcp";
|
|
40
|
-
mcp_user: string;
|
|
41
|
-
product_variant: string;
|
|
42
|
-
source: "dimensions-analytics-mcp-hosted";
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* `additional_logging_info` for hosted dsl-service queries.
|
|
46
|
-
* `X-DIMENSIONS-USER` stays the canonical Dimensions user; channel fields tag MCP traffic.
|
|
47
|
-
*/
|
|
48
|
-
export declare function buildHostedDslLoggingInfo(dimensionsUser: string, variant: string): HostedDslLoggingInfo;
|
|
49
35
|
/**
|
|
50
36
|
* Loads deployment configuration from environment variables.
|
|
51
37
|
* @throws {Error} When hosted mode is enabled but required vars are missing
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deployment-config.d.ts","sourceRoot":"","sources":["../../src/client/deployment-config.ts"],"names":[],"mappings":"AAAA
|
|
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,CAyC1D"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Deployment mode and hosted backend configuration from environment.
|
|
3
|
+
*
|
|
4
|
+
* Hosted usage tracking: MCP sends X-Dimensions-* headers on dsl-service requests
|
|
5
|
+
* (see usage-headers.ts). dsl-service derives channel/user fields server-side.
|
|
3
6
|
* @module client/deployment-config
|
|
4
7
|
*/
|
|
5
8
|
import { z } from "zod";
|
|
@@ -29,29 +32,6 @@ function readIntEnv(raw, fallback, min) {
|
|
|
29
32
|
export function hostedBootstrapUser(host) {
|
|
30
33
|
return `mcp@${host}`;
|
|
31
34
|
}
|
|
32
|
-
/**
|
|
33
|
-
* MCP-prefixed user label for dsl usage logs (reversible plus-addressing).
|
|
34
|
-
*/
|
|
35
|
-
export function mcpTrackingUser(dimensionsUser) {
|
|
36
|
-
const at = dimensionsUser.indexOf("@");
|
|
37
|
-
if (at <= 0)
|
|
38
|
-
return `mcp+${dimensionsUser}`;
|
|
39
|
-
return `mcp+${dimensionsUser.slice(0, at)}${dimensionsUser.slice(at)}`;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* `additional_logging_info` for hosted dsl-service queries.
|
|
43
|
-
* `X-DIMENSIONS-USER` stays the canonical Dimensions user; channel fields tag MCP traffic.
|
|
44
|
-
*/
|
|
45
|
-
export function buildHostedDslLoggingInfo(dimensionsUser, variant) {
|
|
46
|
-
return {
|
|
47
|
-
user: dimensionsUser,
|
|
48
|
-
dimensions_user: dimensionsUser,
|
|
49
|
-
channel: "mcp",
|
|
50
|
-
mcp_user: mcpTrackingUser(dimensionsUser),
|
|
51
|
-
product_variant: variant,
|
|
52
|
-
source: "dimensions-analytics-mcp-hosted",
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
35
|
/**
|
|
56
36
|
* Loads deployment configuration from environment variables.
|
|
57
37
|
* @throws {Error} When hosted mode is enabled but required vars are missing
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deployment-config.js","sourceRoot":"","sources":["../../src/client/deployment-config.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"deployment-config.js","sourceRoot":"","sources":["../../src/client/deployment-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -118,16 +118,11 @@ export declare class HttpClient {
|
|
|
118
118
|
*/
|
|
119
119
|
private wrapFetch;
|
|
120
120
|
/**
|
|
121
|
-
*
|
|
122
|
-
* @param
|
|
123
|
-
* @returns
|
|
124
|
-
*/
|
|
125
|
-
private isRetryable;
|
|
126
|
-
/**
|
|
127
|
-
* Delays execution for the specified time.
|
|
128
|
-
* @param ms - Delay in milliseconds
|
|
121
|
+
* Executes a request with retry logic.
|
|
122
|
+
* @param requestFn - Function that executes the request
|
|
123
|
+
* @returns Response from successful request
|
|
129
124
|
*/
|
|
130
|
-
private
|
|
125
|
+
private executeWithRetry;
|
|
131
126
|
/**
|
|
132
127
|
* Sends a GET request with optional query parameters.
|
|
133
128
|
* @param path - URL path (appended to baseUrl)
|
|
@@ -149,23 +144,6 @@ export declare class HttpClient {
|
|
|
149
144
|
* @returns Parsed response
|
|
150
145
|
*/
|
|
151
146
|
private executeGetRequest;
|
|
152
|
-
/**
|
|
153
|
-
* Calculates the delay before the next retry attempt.
|
|
154
|
-
* For rate-limit errors, uses the client rate limiter's slot timing.
|
|
155
|
-
* For other transient errors, uses exponential backoff with jitter.
|
|
156
|
-
* The result is capped at 60 seconds.
|
|
157
|
-
* @param error - The error that triggered the retry
|
|
158
|
-
* @param attempt - The current attempt number (0-based)
|
|
159
|
-
* @returns Delay in milliseconds
|
|
160
|
-
*/
|
|
161
|
-
private calculateRetryDelay;
|
|
162
|
-
/**
|
|
163
|
-
* Executes a request with retry logic.
|
|
164
|
-
* Uses client-side throttling before each attempt and exponential backoff for transient errors.
|
|
165
|
-
* @param requestFn - Function that executes the request
|
|
166
|
-
* @returns Response from successful request
|
|
167
|
-
*/
|
|
168
|
-
private executeWithRetry;
|
|
169
147
|
/**
|
|
170
148
|
* Sends a POST request with JSON body.
|
|
171
149
|
* @param path - URL path (appended to baseUrl)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../src/client/http-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAapD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../src/client/http-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,9 @@
|
|
|
4
4
|
* @module core/http-client
|
|
5
5
|
*/
|
|
6
6
|
import { AuthenticationError, DimensionsError, NetworkError, NotFoundError, QuerySyntaxError, RateLimitError, ServerError, sanitizeErrorMessage, TimeoutError, UnprocessableEntityError, } from "./errors.js";
|
|
7
|
+
import { executeRequestWithRetry } from "./request-retry.js";
|
|
8
|
+
import { getMcpUsageSession } from "./usage-context.js";
|
|
9
|
+
import { buildMcpUsageHeaders, buildMcpUserAgent } from "./usage-headers.js";
|
|
7
10
|
/**
|
|
8
11
|
* HTTP client for making requests to the Dimensions API.
|
|
9
12
|
* Implements retry logic with client-side throttling and exponential backoff for transient errors.
|
|
@@ -51,10 +54,23 @@ export class HttpClient {
|
|
|
51
54
|
* @returns Parsed response
|
|
52
55
|
*/
|
|
53
56
|
async executeDslRequest(url, dsl, options) {
|
|
57
|
+
const sessionHeaders = {};
|
|
58
|
+
const usageHeaders = buildMcpUsageHeaders();
|
|
59
|
+
if (Object.keys(usageHeaders).length > 0) {
|
|
60
|
+
Object.assign(sessionHeaders, usageHeaders);
|
|
61
|
+
const session = getMcpUsageSession();
|
|
62
|
+
if (session) {
|
|
63
|
+
sessionHeaders["User-Agent"] = buildMcpUserAgent(session.version, session.client);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
54
66
|
return this.wrapFetch({
|
|
55
67
|
url,
|
|
56
68
|
method: "POST",
|
|
57
|
-
headers: {
|
|
69
|
+
headers: {
|
|
70
|
+
"Content-Type": "application/x-www-form-urlencoded",
|
|
71
|
+
...sessionHeaders,
|
|
72
|
+
...options?.headers,
|
|
73
|
+
},
|
|
58
74
|
body: dsl,
|
|
59
75
|
timeoutMs: options?.timeout ?? this.timeout,
|
|
60
76
|
signal: options?.signal,
|
|
@@ -179,36 +195,16 @@ export class HttpClient {
|
|
|
179
195
|
}
|
|
180
196
|
}
|
|
181
197
|
/**
|
|
182
|
-
*
|
|
183
|
-
* @param
|
|
184
|
-
* @returns
|
|
185
|
-
*/
|
|
186
|
-
isRetryable(error) {
|
|
187
|
-
// Retry rate limit errors
|
|
188
|
-
if (error instanceof RateLimitError) {
|
|
189
|
-
return true;
|
|
190
|
-
}
|
|
191
|
-
// Retry server errors (5xx)
|
|
192
|
-
if (error instanceof ServerError) {
|
|
193
|
-
return true;
|
|
194
|
-
}
|
|
195
|
-
// Retry network errors
|
|
196
|
-
if (error instanceof NetworkError) {
|
|
197
|
-
return true;
|
|
198
|
-
}
|
|
199
|
-
// Retry timeout errors
|
|
200
|
-
if (error instanceof TimeoutError) {
|
|
201
|
-
return true;
|
|
202
|
-
}
|
|
203
|
-
// Don't retry other errors (400, 401, 403, etc.)
|
|
204
|
-
return false;
|
|
205
|
-
}
|
|
206
|
-
/**
|
|
207
|
-
* Delays execution for the specified time.
|
|
208
|
-
* @param ms - Delay in milliseconds
|
|
198
|
+
* Executes a request with retry logic.
|
|
199
|
+
* @param requestFn - Function that executes the request
|
|
200
|
+
* @returns Response from successful request
|
|
209
201
|
*/
|
|
210
|
-
|
|
211
|
-
return
|
|
202
|
+
async executeWithRetry(requestFn) {
|
|
203
|
+
return executeRequestWithRetry(requestFn, {
|
|
204
|
+
maxRetries: this.maxRetries,
|
|
205
|
+
retryDelay: this.retryDelay,
|
|
206
|
+
rateLimiter: this.rateLimiter,
|
|
207
|
+
});
|
|
212
208
|
}
|
|
213
209
|
/**
|
|
214
210
|
* Sends a GET request with optional query parameters.
|
|
@@ -259,55 +255,6 @@ export class HttpClient {
|
|
|
259
255
|
signal: options?.signal,
|
|
260
256
|
});
|
|
261
257
|
}
|
|
262
|
-
/**
|
|
263
|
-
* Calculates the delay before the next retry attempt.
|
|
264
|
-
* For rate-limit errors, uses the client rate limiter's slot timing.
|
|
265
|
-
* For other transient errors, uses exponential backoff with jitter.
|
|
266
|
-
* The result is capped at 60 seconds.
|
|
267
|
-
* @param error - The error that triggered the retry
|
|
268
|
-
* @param attempt - The current attempt number (0-based)
|
|
269
|
-
* @returns Delay in milliseconds
|
|
270
|
-
*/
|
|
271
|
-
calculateRetryDelay(error, attempt) {
|
|
272
|
-
const MAX_DELAY = 60_000;
|
|
273
|
-
if (error instanceof RateLimitError) {
|
|
274
|
-
const delay = error.clientRateLimit?.retryAfterMs ??
|
|
275
|
-
this.rateLimiter?.getRetryDelayMs() ??
|
|
276
|
-
2000 * 2 ** attempt;
|
|
277
|
-
return Math.min(delay, MAX_DELAY);
|
|
278
|
-
}
|
|
279
|
-
const backoff = this.retryDelay * 2 ** attempt * (0.5 + Math.random() * 0.5);
|
|
280
|
-
return Math.min(backoff, MAX_DELAY);
|
|
281
|
-
}
|
|
282
|
-
/**
|
|
283
|
-
* Executes a request with retry logic.
|
|
284
|
-
* Uses client-side throttling before each attempt and exponential backoff for transient errors.
|
|
285
|
-
* @param requestFn - Function that executes the request
|
|
286
|
-
* @returns Response from successful request
|
|
287
|
-
*/
|
|
288
|
-
async executeWithRetry(requestFn) {
|
|
289
|
-
let lastError = null;
|
|
290
|
-
for (let attempt = 0; attempt <= this.maxRetries; attempt++) {
|
|
291
|
-
await this.rateLimiter?.waitIfNeeded();
|
|
292
|
-
try {
|
|
293
|
-
const result = await requestFn();
|
|
294
|
-
this.rateLimiter?.recordRequest();
|
|
295
|
-
return result;
|
|
296
|
-
}
|
|
297
|
-
catch (error) {
|
|
298
|
-
lastError = error;
|
|
299
|
-
if (!this.isRetryable(error)) {
|
|
300
|
-
throw error;
|
|
301
|
-
}
|
|
302
|
-
if (attempt >= this.maxRetries) {
|
|
303
|
-
throw error;
|
|
304
|
-
}
|
|
305
|
-
const retryDelay = this.calculateRetryDelay(error, attempt);
|
|
306
|
-
await this.delay(retryDelay);
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
throw lastError ?? new NetworkError("Unknown error occurred");
|
|
310
|
-
}
|
|
311
258
|
/**
|
|
312
259
|
* Sends a POST request with JSON body.
|
|
313
260
|
* @param path - URL path (appended to baseUrl)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/client/http-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,oBAAoB,EACpB,YAAY,EACZ,wBAAwB,GACzB,MAAM,aAAa,CAAC;AAqErB;;;GAGG;AACH,MAAM,OAAO,UAAU;IACJ,OAAO,CAAS;IAChB,YAAY,CAAe;IAC3B,OAAO,CAAS;IAChB,UAAU,CAAS;IACnB,UAAU,CAAS;IACnB,WAAW,CAA0B;IAEtD;;;OAGG;IACH,YAAY,MAAwB;QAClC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QACxC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC;QACvC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC;QAC5C,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IACxC,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,KAAK,CACT,GAAW,EACX,WAAmB,aAAa,EAChC,OAAwB;QAExB,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,QAAQ,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC,gBAAgB,CAAqB,GAAG,EAAE,CACpD,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAC1C,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,iBAAiB,CAC7B,GAAW,EACX,GAAW,EACX,OAAwB;QAExB,OAAO,IAAI,CAAC,SAAS,CAAqB;YACxC,GAAG;YACH,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,mCAAmC,EAAE;YAChE,IAAI,EAAE,GAAG;YACT,SAAS,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,OAAO;YAC3C,MAAM,EAAE,OAAO,EAAE,MAAM;SACxB,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,YAAY,CAAC,QAAkB;QAC3C,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QAE/B,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,GAAG,CAAC,CAAC,CAAC;gBACT,IAAI,OAAO,GAAG,oBAAoB,CAAC;gBACnC,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAElC,CAAC;oBACF,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;wBACxB,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;oBAC/B,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,2BAA2B;gBAC7B,CAAC;gBACD,OAAO,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC;YACvC,CAAC;YAED,KAAK,GAAG;gBACN,OAAO,IAAI,mBAAmB,CAAC,uBAAuB,CAAC,CAAC;YAE1D,KAAK,GAAG;gBACN,OAAO,IAAI,eAAe,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;YAEnD,KAAK,GAAG,CAAC,CAAC,CAAC;gBACT,IAAI,OAAO,GAAG,oBAAoB,CAAC;gBACnC,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAGlC,CAAC;oBACF,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;wBACxB,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;oBAC/B,CAAC;yBAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;wBACvB,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;oBACxB,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,2BAA2B;gBAC7B,CAAC;gBACD,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;YACpC,CAAC;YAED,KAAK,GAAG,CAAC,CAAC,CAAC;gBACT,IAAI,OAAO,GAAG,sBAAsB,CAAC;gBACrC,IAAI,OAA4C,CAAC;gBACjD,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAGlC,CAAC;oBACF,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;wBACxB,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;oBAC/B,CAAC;yBAAM,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;wBAC3C,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;oBACxB,CAAC;yBAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;wBACvB,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;oBACxB,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,2BAA2B;gBAC7B,CAAC;gBACD,OAAO,IAAI,wBAAwB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACxD,CAAC;YAED,KAAK,GAAG,CAAC,CAAC,CAAC;gBACT,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,eAAe,EAAE,IAAI,IAAI,CAAC;gBACjE,MAAM,eAAe,GAAG;oBACtB,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE,oBAAoB,EAAE,IAAI,CAAC;oBACxD,YAAY;iBACb,CAAC;gBACF,OAAO,IAAI,cAAc,CACvB,4CAA4C,EAC5C,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,EAC9B,eAAe,CAChB,CAAC;YACJ,CAAC;YAED;gBACE,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;oBAClB,OAAO,IAAI,WAAW,CAAC,iBAAiB,QAAQ,CAAC,UAAU,EAAE,EAAE,MAAM,CAAC,CAAC;gBACzE,CAAC;gBACD,OAAO,IAAI,eAAe,CAAC,eAAe,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,EAAE,MAAM,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACK,KAAK,CAAC,SAAS,CAAI,OAO1B;QACC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QAE1E,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;YAEzD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;gBACxC,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,OAAO,EAAE,EAAE,GAAG,WAAW,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE;gBAC/C,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,MAAM,EACJ,OAAO,CAAC,MAAM,IAAI,IAAI;oBACpB,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;oBACtD,CAAC,CAAC,UAAU,CAAC,MAAM;aACxB,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAC1C,CAAC;YAED,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAM,CAAC;QACtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;gBACrC,MAAM,KAAK,CAAC;YACd,CAAC;YAED,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBAChC,MAAM,IAAI,YAAY,CAAC,iBAAiB,CAAC,CAAC;gBAC5C,CAAC;gBACD,MAAM,IAAI,YAAY,CAAC,kBAAkB,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC1E,CAAC;YAED,MAAM,IAAI,YAAY,CAAC,uBAAuB,CAAC,CAAC;QAClD,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,SAAS,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,WAAW,CAAC,KAAc;QAChC,0BAA0B;QAC1B,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,4BAA4B;QAC5B,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,uBAAuB;QACvB,IAAI,KAAK,YAAY,YAAY,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,uBAAuB;QACvB,IAAI,KAAK,YAAY,YAAY,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,iDAAiD;QACjD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,EAAU;QACtB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,GAAG,CAAc,IAAY,EAAE,OAAoB;QACvD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC,gBAAgB,CAAI,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED;;;;;OAKG;IACK,QAAQ,CACd,IAAY,EACZ,MAAwE;QAExE,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;QACrC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChD,OAAO,GAAG,CAAC;QACb,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,eAAe,EAAE,CAAC;QAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAClD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;QAED,OAAO,GAAG,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC;IAC7C,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,iBAAiB,CAAI,GAAW,EAAE,OAAwB;QACtE,OAAO,IAAI,CAAC,SAAS,CAAI;YACvB,GAAG;YACH,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,OAAO,EAAE,OAAO;YACzB,SAAS,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,OAAO;YAC3C,MAAM,EAAE,OAAO,EAAE,MAAM;SACxB,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;OAQG;IACK,mBAAmB,CAAC,KAAc,EAAE,OAAe;QACzD,MAAM,SAAS,GAAG,MAAM,CAAC;QAEzB,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;YACpC,MAAM,KAAK,GACT,KAAK,CAAC,eAAe,EAAE,YAAY;gBACnC,IAAI,CAAC,WAAW,EAAE,eAAe,EAAE;gBACnC,IAAI,GAAG,CAAC,IAAI,OAAO,CAAC;YACtB,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;QAC7E,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACtC,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,gBAAgB,CAAI,SAA2B;QAC3D,IAAI,SAAS,GAAiB,IAAI,CAAC;QAEnC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;YAC5D,MAAM,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,CAAC;YACvC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;gBACjC,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE,CAAC;gBAClC,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,SAAS,GAAG,KAAc,CAAC;gBAE3B,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC7B,MAAM,KAAK,CAAC;gBACd,CAAC;gBAED,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;oBAC/B,MAAM,KAAK,CAAC;gBACd,CAAC;gBAED,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBAC5D,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,MAAM,SAAS,IAAI,IAAI,YAAY,CAAC,wBAAwB,CAAC,CAAC;IAChE,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,QAAQ,CAAc,IAAY,EAAE,OAAwB;QAChE,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC,gBAAgB,CAAI,GAAG,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;IACnF,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,sBAAsB,CAAI,GAAW,EAAE,OAAwB;QAC3E,OAAO,IAAI,CAAC,SAAS,CAAI;YACvB,GAAG;YACH,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE;YACnE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;YAClC,SAAS,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO;YAC1C,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,WAAW,CAAC,IAAY,EAAE,OAAwB;QACtD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC,gBAAgB,CAAW,GAAG,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7F,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,yBAAyB,CACrC,GAAW,EACX,OAAwB;QAExB,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC;QAClD,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;QAElE,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;YAEzD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAChC,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,WAAW,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE;gBACnF,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;gBAClC,MAAM,EACJ,OAAO,CAAC,MAAM,IAAI,IAAI;oBACpB,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;oBACtD,CAAC,CAAC,UAAU,CAAC,MAAM;aACxB,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAC1C,CAAC;YAED,uEAAuE;YACvE,wDAAwD;YACxD,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,YAAY,CAAC,SAAS,CAAC,CAAC;YAExB,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;gBACrC,MAAM,KAAK,CAAC;YACd,CAAC;YAED,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBAChC,MAAM,IAAI,YAAY,CAAC,iBAAiB,CAAC,CAAC;gBAC5C,CAAC;gBACD,MAAM,IAAI,YAAY,CAAC,kBAAkB,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC1E,CAAC;YAED,MAAM,IAAI,YAAY,CAAC,uBAAuB,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,QAAQ,CAAc,IAAY,EAAE,OAAwB;QAChE,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC,gBAAgB,CAAI,GAAG,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;IACnF,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,sBAAsB,CAAI,GAAW,EAAE,OAAwB;QAC3E,OAAO,IAAI,CAAC,SAAS,CAAI;YACvB,GAAG;YACH,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,mCAAmC,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE;YACpF,IAAI,EAAE,IAAI,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;YAClD,SAAS,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO;YAC1C,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/client/http-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* dsl-service adapter for hosted deployment (POST /query
|
|
2
|
+
* dsl-service adapter for hosted deployment (POST /query).
|
|
3
|
+
* Usage metadata is sent via X-Dimensions-* headers (see usage-headers.ts), not JSON body.
|
|
3
4
|
* @module client/internal-dsl-client
|
|
4
5
|
*/
|
|
5
|
-
import {
|
|
6
|
+
import type { InternalDslEnvConfig } from "./deployment-config.js";
|
|
7
|
+
import type { RateLimiter } from "./rate-limiter.js";
|
|
6
8
|
import type { DslResponse, QueryExecutorOptions } from "./types.js";
|
|
7
9
|
export interface InternalDslClientOptions {
|
|
8
10
|
readonly config: InternalDslEnvConfig;
|
|
9
11
|
/** User email for X-DIMENSIONS-USER (required by dsl-service) */
|
|
10
12
|
readonly userEmail: string;
|
|
11
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* End-user IP forwarded as X-Forwarded-For for dsl-service per-IP throttling.
|
|
15
|
+
* Set from the inbound MCP HTTP request (see mcp/http-server.ts).
|
|
16
|
+
*/
|
|
12
17
|
readonly clientIp?: string;
|
|
13
18
|
readonly timeout?: number;
|
|
19
|
+
readonly maxRetries?: number;
|
|
20
|
+
readonly retryDelay?: number;
|
|
21
|
+
readonly rateLimiter?: RateLimiter;
|
|
14
22
|
}
|
|
15
23
|
/**
|
|
16
24
|
* Executes DSL queries against dsl-service internal API.
|
|
@@ -20,11 +28,15 @@ export declare class InternalDslClient {
|
|
|
20
28
|
private readonly userEmail;
|
|
21
29
|
private readonly clientIp?;
|
|
22
30
|
private readonly timeout;
|
|
31
|
+
private readonly maxRetries;
|
|
32
|
+
private readonly retryDelay;
|
|
33
|
+
private readonly rateLimiter?;
|
|
23
34
|
constructor(options: InternalDslClientOptions);
|
|
24
35
|
/**
|
|
25
36
|
* Runs a DSL query through dsl-service POST /query.
|
|
26
37
|
*/
|
|
27
38
|
query(dsl: string, options?: QueryExecutorOptions): Promise<DslResponse>;
|
|
39
|
+
private executeQuery;
|
|
28
40
|
private mapError;
|
|
29
41
|
}
|
|
30
42
|
//# sourceMappingURL=internal-dsl-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal-dsl-client.d.ts","sourceRoot":"","sources":["../../src/client/internal-dsl-client.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"internal-dsl-client.d.ts","sourceRoot":"","sources":["../../src/client/internal-dsl-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAWnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,KAAK,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAIpE,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACtC,iEAAiE;IACjE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;CACpC;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;IAC9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAc;gBAE/B,OAAO,EAAE,wBAAwB;IAU7C;;OAEG;IACG,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,WAAW,CAAC;YAQhE,YAAY;YA4DZ,QAAQ;CAoCvB"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* dsl-service adapter for hosted deployment (POST /query
|
|
2
|
+
* dsl-service adapter for hosted deployment (POST /query).
|
|
3
|
+
* Usage metadata is sent via X-Dimensions-* headers (see usage-headers.ts), not JSON body.
|
|
3
4
|
* @module client/internal-dsl-client
|
|
4
5
|
*/
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
6
|
+
import { AuthenticationError, DimensionsError, NetworkError, QuerySyntaxError, RateLimitError, ServerError, sanitizeErrorMessage, TimeoutError, } from "./errors.js";
|
|
7
|
+
import { executeRequestWithRetry } from "./request-retry.js";
|
|
8
|
+
import { getMcpUsageSession } from "./usage-context.js";
|
|
9
|
+
import { buildMcpUsageHeaders, buildMcpUserAgent } from "./usage-headers.js";
|
|
7
10
|
/**
|
|
8
11
|
* Executes DSL queries against dsl-service internal API.
|
|
9
12
|
*/
|
|
@@ -12,25 +15,44 @@ export class InternalDslClient {
|
|
|
12
15
|
userEmail;
|
|
13
16
|
clientIp;
|
|
14
17
|
timeout;
|
|
18
|
+
maxRetries;
|
|
19
|
+
retryDelay;
|
|
20
|
+
rateLimiter;
|
|
15
21
|
constructor(options) {
|
|
16
22
|
this.config = options.config;
|
|
17
23
|
this.userEmail = options.userEmail;
|
|
18
24
|
this.clientIp = options.clientIp;
|
|
19
25
|
this.timeout = options.timeout ?? 30_000;
|
|
26
|
+
this.maxRetries = options.maxRetries ?? 3;
|
|
27
|
+
this.retryDelay = options.retryDelay ?? 1000;
|
|
28
|
+
this.rateLimiter = options.rateLimiter;
|
|
20
29
|
}
|
|
21
30
|
/**
|
|
22
31
|
* Runs a DSL query through dsl-service POST /query.
|
|
23
32
|
*/
|
|
24
33
|
async query(dsl, options) {
|
|
34
|
+
return executeRequestWithRetry(() => this.executeQuery(dsl, options), {
|
|
35
|
+
maxRetries: this.maxRetries,
|
|
36
|
+
retryDelay: this.retryDelay,
|
|
37
|
+
rateLimiter: this.rateLimiter,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
async executeQuery(dsl, options) {
|
|
25
41
|
const url = `${this.config.serviceUrl.replace(/\/$/, "")}/query`;
|
|
26
42
|
const controller = new AbortController();
|
|
27
43
|
const timeoutMs = options?.timeout ?? this.timeout;
|
|
28
44
|
const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
|
|
45
|
+
const session = getMcpUsageSession();
|
|
46
|
+
const usageHeaders = buildMcpUsageHeaders();
|
|
29
47
|
const headers = {
|
|
30
48
|
"Content-Type": "application/json",
|
|
31
49
|
"X-DIMENSIONS-USER": this.userEmail,
|
|
32
50
|
Authorization: `Basic ${Buffer.from(`${this.config.username}:${this.config.password}`).toString("base64")}`,
|
|
51
|
+
...usageHeaders,
|
|
33
52
|
};
|
|
53
|
+
if (session) {
|
|
54
|
+
headers["User-Agent"] = buildMcpUserAgent(session.version, session.client);
|
|
55
|
+
}
|
|
34
56
|
if (this.clientIp) {
|
|
35
57
|
headers["X-Forwarded-For"] = this.clientIp;
|
|
36
58
|
}
|
|
@@ -39,7 +61,6 @@ export class InternalDslClient {
|
|
|
39
61
|
dsl_schema: this.config.dslSchema,
|
|
40
62
|
host: this.config.host,
|
|
41
63
|
variant: this.config.variant,
|
|
42
|
-
additional_logging_info: buildHostedDslLoggingInfo(this.userEmail, this.config.variant),
|
|
43
64
|
};
|
|
44
65
|
try {
|
|
45
66
|
const response = await fetch(url, {
|
|
@@ -87,6 +108,13 @@ export class InternalDslClient {
|
|
|
87
108
|
return new AuthenticationError(message);
|
|
88
109
|
case 400:
|
|
89
110
|
return new QuerySyntaxError(message);
|
|
111
|
+
case 429: {
|
|
112
|
+
const retryAfterMs = this.rateLimiter?.getRetryDelayMs() ?? 2000;
|
|
113
|
+
return new RateLimitError("Rate limit exceeded — wait before retrying", Math.ceil(retryAfterMs / 1000), {
|
|
114
|
+
remaining: this.rateLimiter?.getRemainingRequests() ?? 0,
|
|
115
|
+
retryAfterMs,
|
|
116
|
+
});
|
|
117
|
+
}
|
|
90
118
|
default:
|
|
91
119
|
if (response.status >= 500) {
|
|
92
120
|
return new ServerError(message, response.status);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal-dsl-client.js","sourceRoot":"","sources":["../../src/client/internal-dsl-client.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"internal-dsl-client.js","sourceRoot":"","sources":["../../src/client/internal-dsl-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared retry logic for Dimensions HTTP clients (public API and dsl-service).
|
|
3
|
+
* @module client/request-retry
|
|
4
|
+
*/
|
|
5
|
+
import type { RateLimiter } from "./rate-limiter.js";
|
|
6
|
+
export interface RequestRetryOptions {
|
|
7
|
+
readonly maxRetries: number;
|
|
8
|
+
readonly retryDelay: number;
|
|
9
|
+
readonly rateLimiter?: RateLimiter;
|
|
10
|
+
}
|
|
11
|
+
type DelayFn = (ms: number) => Promise<void>;
|
|
12
|
+
/**
|
|
13
|
+
* Delays before the next retry attempt. Exported for unit tests.
|
|
14
|
+
*/
|
|
15
|
+
export declare function requestRetryDelay(ms: number): Promise<void>;
|
|
16
|
+
/**
|
|
17
|
+
* Overrides retry delay behaviour in unit tests.
|
|
18
|
+
* @internal
|
|
19
|
+
*/
|
|
20
|
+
export declare function setRequestRetryDelayFn(fn: DelayFn): void;
|
|
21
|
+
/**
|
|
22
|
+
* Restores default retry delay behaviour after tests.
|
|
23
|
+
* @internal
|
|
24
|
+
*/
|
|
25
|
+
export declare function resetRequestRetryDelayFn(): void;
|
|
26
|
+
/**
|
|
27
|
+
* Returns true when a failed request should be retried.
|
|
28
|
+
*/
|
|
29
|
+
export declare function isRetryableRequestError(error: unknown): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Calculates delay before the next retry (rate-limit aware, exponential backoff with jitter).
|
|
32
|
+
*/
|
|
33
|
+
export declare function calculateRequestRetryDelay(error: unknown, attempt: number, options: Pick<RequestRetryOptions, "retryDelay" | "rateLimiter">): number;
|
|
34
|
+
/**
|
|
35
|
+
* Executes a request with client-side throttling and retries for transient failures.
|
|
36
|
+
*/
|
|
37
|
+
export declare function executeRequestWithRetry<T>(requestFn: () => Promise<T>, options: RequestRetryOptions): Promise<T>;
|
|
38
|
+
export {};
|
|
39
|
+
//# sourceMappingURL=request-retry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-retry.d.ts","sourceRoot":"","sources":["../../src/client/request-retry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;CACpC;AAED,KAAK,OAAO,GAAG,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAI7C;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEjE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,CAExD;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAc/D;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,YAAY,GAAG,aAAa,CAAC,GAC/D,MAAM,CAaR;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,CAAC,EAC7C,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,CAAC,CAAC,CA0BZ"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared retry logic for Dimensions HTTP clients (public API and dsl-service).
|
|
3
|
+
* @module client/request-retry
|
|
4
|
+
*/
|
|
5
|
+
import { NetworkError, RateLimitError, ServerError, TimeoutError } from "./errors.js";
|
|
6
|
+
let delayFn = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
7
|
+
/**
|
|
8
|
+
* Delays before the next retry attempt. Exported for unit tests.
|
|
9
|
+
*/
|
|
10
|
+
export async function requestRetryDelay(ms) {
|
|
11
|
+
return delayFn(ms);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Overrides retry delay behaviour in unit tests.
|
|
15
|
+
* @internal
|
|
16
|
+
*/
|
|
17
|
+
export function setRequestRetryDelayFn(fn) {
|
|
18
|
+
delayFn = fn;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Restores default retry delay behaviour after tests.
|
|
22
|
+
* @internal
|
|
23
|
+
*/
|
|
24
|
+
export function resetRequestRetryDelayFn() {
|
|
25
|
+
delayFn = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Returns true when a failed request should be retried.
|
|
29
|
+
*/
|
|
30
|
+
export function isRetryableRequestError(error) {
|
|
31
|
+
if (error instanceof RateLimitError) {
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
if (error instanceof ServerError) {
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
if (error instanceof NetworkError) {
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
if (error instanceof TimeoutError) {
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Calculates delay before the next retry (rate-limit aware, exponential backoff with jitter).
|
|
47
|
+
*/
|
|
48
|
+
export function calculateRequestRetryDelay(error, attempt, options) {
|
|
49
|
+
const MAX_DELAY = 60_000;
|
|
50
|
+
if (error instanceof RateLimitError) {
|
|
51
|
+
const delay = error.clientRateLimit?.retryAfterMs ??
|
|
52
|
+
options.rateLimiter?.getRetryDelayMs() ??
|
|
53
|
+
2000 * 2 ** attempt;
|
|
54
|
+
return Math.min(delay, MAX_DELAY);
|
|
55
|
+
}
|
|
56
|
+
const backoff = options.retryDelay * 2 ** attempt * (0.5 + Math.random() * 0.5);
|
|
57
|
+
return Math.min(backoff, MAX_DELAY);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Executes a request with client-side throttling and retries for transient failures.
|
|
61
|
+
*/
|
|
62
|
+
export async function executeRequestWithRetry(requestFn, options) {
|
|
63
|
+
let lastError = null;
|
|
64
|
+
for (let attempt = 0; attempt <= options.maxRetries; attempt++) {
|
|
65
|
+
await options.rateLimiter?.waitIfNeeded();
|
|
66
|
+
try {
|
|
67
|
+
const result = await requestFn();
|
|
68
|
+
options.rateLimiter?.recordRequest();
|
|
69
|
+
return result;
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
lastError = error;
|
|
73
|
+
if (!isRetryableRequestError(error)) {
|
|
74
|
+
throw error;
|
|
75
|
+
}
|
|
76
|
+
if (attempt >= options.maxRetries) {
|
|
77
|
+
throw error;
|
|
78
|
+
}
|
|
79
|
+
const retryDelay = calculateRequestRetryDelay(error, attempt, options);
|
|
80
|
+
await requestRetryDelay(retryDelay);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
throw lastError ?? new NetworkError("Unknown error occurred");
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=request-retry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-retry.js","sourceRoot":"","sources":["../../src/client/request-retry.ts"],"names":[],"mappings":"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"}
|