@insightsentry/mcp 1.4.39 → 1.4.40

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.
@@ -0,0 +1,269 @@
1
+ import { SYMBOL_CODE_REGEX } from "./symbol-validation.js";
2
+ export const LIVE_WEBSOCKET_URL = "wss://realtime.insightsentry.com/live";
3
+ export const NEWSFEED_WEBSOCKET_URL = "wss://realtime.insightsentry.com/newsfeed";
4
+ const SERIES_ONLY_KEYS = [
5
+ "bar_type",
6
+ "bar_interval",
7
+ "dp",
8
+ "currency",
9
+ "unit",
10
+ "split",
11
+ "dadj",
12
+ "badj",
13
+ "settlement",
14
+ ];
15
+ const QUOTE_SESSION_KEYS = ["extended", "24h"];
16
+ const SIP_UNSUPPORTED_KEYS = ["currency", "extended", "settlement", "unit", "badj"];
17
+ const SIMPLE_SUBSCRIPTION_KEYS = [...SERIES_ONLY_KEYS, ...QUOTE_SESSION_KEYS];
18
+ const BOOLEAN_SUBSCRIPTION_KEYS = [
19
+ "extended",
20
+ "24h",
21
+ "split",
22
+ "dadj",
23
+ "badj",
24
+ "settlement",
25
+ ];
26
+ const ADVANCED_SUBSCRIPTION_KEYS = new Set(["code", "type", ...SIMPLE_SUBSCRIPTION_KEYS]);
27
+ const BAR_TYPES = new Set(["tick", "second", "minute", "hour", "day", "week", "month"]);
28
+ const SECOND_INTERVALS = new Set([1, 5, 10, 15, 30, 45]);
29
+ export function buildLiveStreamRequest(input, apiKey) {
30
+ requireApiKey(apiKey);
31
+ const ignoredArgs = [];
32
+ if (input.subscriptions && hasSimpleSubscriptionArgs(input)) {
33
+ throw new Error("subscriptions cannot be combined with symbols, type, or shared symbol settings");
34
+ }
35
+ const subscriptions = input.subscriptions
36
+ ? parseAdvancedSubscriptions(input.subscriptions, ignoredArgs)
37
+ : buildSimpleSubscriptions(input, ignoredArgs);
38
+ const payload = {
39
+ api_key: apiKey,
40
+ subscriptions,
41
+ };
42
+ if (input.slow_consumer_policy) {
43
+ payload.slow_consumer_policy = input.slow_consumer_policy;
44
+ }
45
+ return {
46
+ endpoint: "live",
47
+ url: LIVE_WEBSOCKET_URL,
48
+ payload,
49
+ ignoredArgs: unique(ignoredArgs),
50
+ };
51
+ }
52
+ export function buildNewsfeedStreamRequest(input, apiKey) {
53
+ requireApiKey(apiKey);
54
+ const payload = { api_key: apiKey };
55
+ for (const key of ["source", "related_symbols", "content"]) {
56
+ const value = input[key]?.trim();
57
+ if (value)
58
+ payload[key] = value;
59
+ }
60
+ return {
61
+ endpoint: "newsfeed",
62
+ url: NEWSFEED_WEBSOCKET_URL,
63
+ payload,
64
+ ignoredArgs: [],
65
+ };
66
+ }
67
+ function requireApiKey(apiKey) {
68
+ if (!apiKey.trim())
69
+ throw new Error("API key is required");
70
+ }
71
+ function buildSimpleSubscriptions(input, ignoredArgs) {
72
+ const symbols = parseSymbols(input.symbols);
73
+ const type = normalizeSubscriptionType(input.type);
74
+ if (!type) {
75
+ throw new Error("type is required and must be quote, series, or both");
76
+ }
77
+ if (type === "quote") {
78
+ for (const key of SERIES_ONLY_KEYS) {
79
+ if (input[key] !== undefined)
80
+ ignoredArgs.push(key);
81
+ }
82
+ }
83
+ return symbols.map((code) => {
84
+ const raw = { code, type };
85
+ if (type !== "quote") {
86
+ for (const key of SERIES_ONLY_KEYS)
87
+ copyDefined(raw, key, input[key]);
88
+ }
89
+ for (const key of QUOTE_SESSION_KEYS)
90
+ copyDefined(raw, key, input[key]);
91
+ const normalized = normalizeSubscription(raw, ignoredArgs);
92
+ validateSubscription(normalized);
93
+ return normalized;
94
+ });
95
+ }
96
+ function parseAdvancedSubscriptions(raw, ignoredArgs) {
97
+ let decoded;
98
+ try {
99
+ decoded = JSON.parse(raw);
100
+ }
101
+ catch (error) {
102
+ throw new Error(`subscriptions must be valid JSON: ${error?.message ?? String(error)}`);
103
+ }
104
+ if (!Array.isArray(decoded) || decoded.length === 0) {
105
+ throw new Error("subscriptions must be a non-empty JSON array");
106
+ }
107
+ return decoded.map((value, index) => {
108
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
109
+ throw new Error(`subscriptions[${index}] must be an object`);
110
+ }
111
+ const subscription = value;
112
+ if ("api_key" in subscription) {
113
+ throw new Error(`api_key is not allowed in subscriptions[${index}]; use the configured login`);
114
+ }
115
+ const unsupportedKeys = Object.keys(subscription).filter((key) => !ADVANCED_SUBSCRIPTION_KEYS.has(key));
116
+ if (unsupportedKeys.length > 0) {
117
+ throw new Error(`subscriptions[${index}] contains unsupported field${unsupportedKeys.length === 1 ? "" : "s"}: ${unsupportedKeys.join(", ")}`);
118
+ }
119
+ const code = normalizedSymbol(subscription.code, `subscriptions[${index}].code`);
120
+ const type = normalizeSubscriptionType(subscription.type);
121
+ if (!type) {
122
+ throw new Error(`subscriptions[${index}].type is required and must be quote, series, or both`);
123
+ }
124
+ const normalized = { code, type };
125
+ for (const key of SIMPLE_SUBSCRIPTION_KEYS) {
126
+ copyDefined(normalized, key, subscription[key]);
127
+ }
128
+ const result = normalizeSubscription(normalized, ignoredArgs);
129
+ validateSubscription(result, `subscriptions[${index}]`);
130
+ return result;
131
+ });
132
+ }
133
+ function hasSimpleSubscriptionArgs(input) {
134
+ return ["symbols", "type", ...SIMPLE_SUBSCRIPTION_KEYS].some((key) => input[key] !== undefined);
135
+ }
136
+ function normalizeSubscription(subscription, ignoredArgs) {
137
+ const code = String(subscription.code);
138
+ const type = subscription.type;
139
+ if (type === "quote") {
140
+ for (const key of SERIES_ONLY_KEYS) {
141
+ if (key in subscription) {
142
+ delete subscription[key];
143
+ ignoredArgs.push(`${key} for ${code}`);
144
+ }
145
+ }
146
+ }
147
+ if (code.startsWith("SIP:")) {
148
+ for (const key of SIP_UNSUPPORTED_KEYS) {
149
+ if (key in subscription) {
150
+ delete subscription[key];
151
+ ignoredArgs.push(`${key} for ${code}`);
152
+ }
153
+ }
154
+ if (subscription["24h"] === true) {
155
+ delete subscription["24h"];
156
+ ignoredArgs.push(`24h for ${code}`);
157
+ }
158
+ }
159
+ return subscription;
160
+ }
161
+ function validateSubscription(subscription, label = "subscription") {
162
+ const barType = subscription.bar_type;
163
+ if (barType !== undefined && (typeof barType !== "string" || !BAR_TYPES.has(barType))) {
164
+ throw new Error(`${label}.bar_type must be tick, second, minute, hour, day, week, or month`);
165
+ }
166
+ const barInterval = subscription.bar_interval;
167
+ if (barInterval !== undefined &&
168
+ (typeof barInterval !== "number" ||
169
+ !Number.isInteger(barInterval) ||
170
+ barInterval <= 0 ||
171
+ barInterval > 2_147_483_647)) {
172
+ throw new Error(`${label}.bar_interval must be a positive integer`);
173
+ }
174
+ if (barType === "tick" && barInterval !== undefined && barInterval !== 1) {
175
+ throw new Error(`${label}.bar_interval allowed value for tick is 1`);
176
+ }
177
+ if (barType === "second" &&
178
+ barInterval !== undefined &&
179
+ !SECOND_INTERVALS.has(barInterval)) {
180
+ throw new Error(`${label}.bar_interval allowed values for second are 1, 5, 10, 15, 30, 45`);
181
+ }
182
+ const dp = subscription.dp;
183
+ if (dp !== undefined &&
184
+ (typeof dp !== "number" || !Number.isInteger(dp) || dp < 1 || dp > 30_000)) {
185
+ throw new Error(`${label}.dp must be an integer from 1 to 30000`);
186
+ }
187
+ for (const key of BOOLEAN_SUBSCRIPTION_KEYS) {
188
+ if (subscription[key] !== undefined && typeof subscription[key] !== "boolean") {
189
+ throw new Error(`${label}.${key} must be a boolean`);
190
+ }
191
+ }
192
+ for (const key of ["currency", "unit"]) {
193
+ if (subscription[key] !== undefined &&
194
+ (typeof subscription[key] !== "string" || !subscription[key].trim())) {
195
+ throw new Error(`${label}.${key} must be a non-empty string`);
196
+ }
197
+ }
198
+ }
199
+ function parseSymbols(raw) {
200
+ const symbols = unique((raw ?? "")
201
+ .split(",")
202
+ .map((value) => value.trim())
203
+ .filter(Boolean));
204
+ if (symbols.length === 0)
205
+ throw new Error("symbols is required");
206
+ for (const symbol of symbols)
207
+ normalizedSymbol(symbol, "symbols");
208
+ return symbols;
209
+ }
210
+ function normalizedSymbol(value, field) {
211
+ if (typeof value !== "string" || !SYMBOL_CODE_REGEX.test(value.trim())) {
212
+ throw new Error(`${field} must use EXCHANGE:SYMBOL format, e.g. NASDAQ:AAPL`);
213
+ }
214
+ return value.trim();
215
+ }
216
+ function normalizeSubscriptionType(value) {
217
+ if (typeof value !== "string")
218
+ return null;
219
+ const normalized = value.trim().toLowerCase();
220
+ if (normalized === "quotes")
221
+ return "quote";
222
+ if (normalized === "quote" || normalized === "series" || normalized === "both") {
223
+ return normalized;
224
+ }
225
+ return null;
226
+ }
227
+ function copyDefined(target, key, value) {
228
+ if (value !== undefined)
229
+ target[key] = value;
230
+ }
231
+ function unique(values) {
232
+ return [...new Set(values)];
233
+ }
234
+ const PARTIAL_LIVE_ERRORS = new Set([
235
+ "invalid_symbol",
236
+ "invalid_bar_interval",
237
+ "invalid_currency_code",
238
+ "invalid_unit_code",
239
+ ]);
240
+ const SERVER_WAIT_ERRORS = new Set(["processing_throttled", "reconnect_throttled"]);
241
+ const RECONNECT_ACTIONS = new Set([
242
+ "reconnect",
243
+ "reconnect_and_send_request",
244
+ "reconnect_with_current_entitlements",
245
+ ]);
246
+ export function classifyServerError(error, endpoint) {
247
+ if (endpoint === "live" && PARTIAL_LIVE_ERRORS.has(error.error)) {
248
+ return { kind: "partial_validation" };
249
+ }
250
+ if (error.action === "wait_and_retry" && SERVER_WAIT_ERRORS.has(error.error)) {
251
+ return { kind: "server_wait" };
252
+ }
253
+ if (error.retryable !== false &&
254
+ (error.action === "retry_request" || error.error === "temporarily_unavailable")) {
255
+ return { kind: "retry_request", delayMs: serverDelayMs(error) };
256
+ }
257
+ if (error.retryable !== false && error.action && RECONNECT_ACTIONS.has(error.action)) {
258
+ return { kind: "reconnect", delayMs: serverDelayMs(error) };
259
+ }
260
+ return { kind: "terminal" };
261
+ }
262
+ function serverDelayMs(error) {
263
+ const seconds = Math.max(finiteNonNegative(error.delay_seconds), finiteNonNegative(error.retry_after_seconds));
264
+ return Math.ceil(seconds * 1_000);
265
+ }
266
+ function finiteNonNegative(value) {
267
+ return typeof value === "number" && Number.isFinite(value) ? Math.max(0, value) : 0;
268
+ }
269
+ //# sourceMappingURL=websocket-contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-contract.js","sourceRoot":"","sources":["../src/websocket-contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { type StreamOutput } from "./stream-output.js";
2
+ import { type StreamRequest } from "./websocket-contract.js";
3
+ export type StreamRunResult = {
4
+ exitCode: 0;
5
+ reason: "aborted" | "broken_pipe" | "duration_reached" | "max_messages_reached";
6
+ } | {
7
+ exitCode: 1;
8
+ reason: "terminal_error" | "retry_exhausted" | "output_error" | "protocol_error";
9
+ };
10
+ export interface RunWebSocketStreamOptions {
11
+ request: StreamRequest<unknown>;
12
+ output: StreamOutput;
13
+ diagnostics?: (message: string) => void;
14
+ signal?: AbortSignal;
15
+ maxReconnectAttempts?: number;
16
+ durationMs?: number;
17
+ maxMessages?: number;
18
+ openTimeoutMs?: number;
19
+ activationTimeoutMs?: number;
20
+ closeTimeoutMs?: number;
21
+ stableAfterMs?: number;
22
+ baseReconnectDelayMs?: number;
23
+ maxReconnectDelayMs?: number;
24
+ random?: () => number;
25
+ }
26
+ export declare function runWebSocketStream(options: RunWebSocketStreamOptions): Promise<StreamRunResult>;
27
+ //# sourceMappingURL=websocket-stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-stream.d.ts","sourceRoot":"","sources":["../src/websocket-stream.ts"],"names":[],"mappings":"AAEA,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,yBAAyB,CAAC;AAWjC,MAAM,MAAM,eAAe,GACvB;IACE,QAAQ,EAAE,CAAC,CAAC;IACZ,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,kBAAkB,GAAG,sBAAsB,CAAC;CACjF,GACD;IACE,QAAQ,EAAE,CAAC,CAAC;IACZ,MAAM,EAAE,gBAAgB,GAAG,iBAAiB,GAAG,cAAc,GAAG,gBAAgB,CAAC;CAClF,CAAC;AAEN,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAChC,MAAM,EAAE,YAAY,CAAC;IACrB,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC;CACvB;AAkCD,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,eAAe,CAAC,CAsH1B"}