UNPKG

kestrel.markets

Version:

A typed, token-efficient language + runtime for agentic trading: agents author bounded plans, the runtime fires them at the tick. CLI + typed library + MCP server.

1,135 lines (1,127 loc) 768 kB
import { __commonJS, __require } from "./bin-wckvcay0.js"; // node_modules/eventemitter3/index.js var require_eventemitter3 = __commonJS((exports, module) => { var has = Object.prototype.hasOwnProperty; var prefix = "~"; function Events() {} if (Object.create) { Events.prototype = Object.create(null); if (!new Events().__proto__) prefix = false; } function EE(fn, context, once) { this.fn = fn; this.context = context; this.once = once || false; } function addListener(emitter, event, fn, context, once) { if (typeof fn !== "function") { throw new TypeError("The listener must be a function"); } var listener = new EE(fn, context || emitter, once), evt = prefix ? prefix + event : event; if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++; else if (!emitter._events[evt].fn) emitter._events[evt].push(listener); else emitter._events[evt] = [emitter._events[evt], listener]; return emitter; } function clearEvent(emitter, evt) { if (--emitter._eventsCount === 0) emitter._events = new Events; else delete emitter._events[evt]; } function EventEmitter() { this._events = new Events; this._eventsCount = 0; } EventEmitter.prototype.eventNames = function eventNames() { var names = [], events, name; if (this._eventsCount === 0) return names; for (name in events = this._events) { if (has.call(events, name)) names.push(prefix ? name.slice(1) : name); } if (Object.getOwnPropertySymbols) { return names.concat(Object.getOwnPropertySymbols(events)); } return names; }; EventEmitter.prototype.listeners = function listeners(event) { var evt = prefix ? prefix + event : event, handlers = this._events[evt]; if (!handlers) return []; if (handlers.fn) return [handlers.fn]; for (var i = 0, l = handlers.length, ee = new Array(l);i < l; i++) { ee[i] = handlers[i].fn; } return ee; }; EventEmitter.prototype.listenerCount = function listenerCount(event) { var evt = prefix ? prefix + event : event, listeners = this._events[evt]; if (!listeners) return 0; if (listeners.fn) return 1; return listeners.length; }; EventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) { var evt = prefix ? prefix + event : event; if (!this._events[evt]) return false; var listeners = this._events[evt], len = arguments.length, args, i; if (listeners.fn) { if (listeners.once) this.removeListener(event, listeners.fn, undefined, true); switch (len) { case 1: return listeners.fn.call(listeners.context), true; case 2: return listeners.fn.call(listeners.context, a1), true; case 3: return listeners.fn.call(listeners.context, a1, a2), true; case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true; case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true; case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true; } for (i = 1, args = new Array(len - 1);i < len; i++) { args[i - 1] = arguments[i]; } listeners.fn.apply(listeners.context, args); } else { var length = listeners.length, j; for (i = 0;i < length; i++) { if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true); switch (len) { case 1: listeners[i].fn.call(listeners[i].context); break; case 2: listeners[i].fn.call(listeners[i].context, a1); break; case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break; case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break; default: if (!args) for (j = 1, args = new Array(len - 1);j < len; j++) { args[j - 1] = arguments[j]; } listeners[i].fn.apply(listeners[i].context, args); } } } return true; }; EventEmitter.prototype.on = function on(event, fn, context) { return addListener(this, event, fn, context, false); }; EventEmitter.prototype.once = function once(event, fn, context) { return addListener(this, event, fn, context, true); }; EventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) { var evt = prefix ? prefix + event : event; if (!this._events[evt]) return this; if (!fn) { clearEvent(this, evt); return this; } var listeners = this._events[evt]; if (listeners.fn) { if (listeners.fn === fn && (!once || listeners.once) && (!context || listeners.context === context)) { clearEvent(this, evt); } } else { for (var i = 0, events = [], length = listeners.length;i < length; i++) { if (listeners[i].fn !== fn || once && !listeners[i].once || context && listeners[i].context !== context) { events.push(listeners[i]); } } if (events.length) this._events[evt] = events.length === 1 ? events[0] : events; else clearEvent(this, evt); } return this; }; EventEmitter.prototype.removeAllListeners = function removeAllListeners(event) { var evt; if (event) { evt = prefix ? prefix + event : event; if (this._events[evt]) clearEvent(this, evt); } else { this._events = new Events; this._eventsCount = 0; } return this; }; EventEmitter.prototype.off = EventEmitter.prototype.removeListener; EventEmitter.prototype.addListener = EventEmitter.prototype.on; EventEmitter.prefixed = prefix; EventEmitter.EventEmitter = EventEmitter; if (typeof module !== "undefined") { module.exports = EventEmitter; } }); // node_modules/command-buffer/dist/command-buffer.js var require_command_buffer = __commonJS((exports, module) => { (function() { var objectTypes = { boolean: false, function: true, object: true, number: false, string: false, undefined: false }; var root = objectTypes[typeof window] && window || this; var freeExports = objectTypes[typeof exports] && exports && !exports.nodeType && exports; var freeModule = objectTypes[typeof module] && module && !module.nodeType && module; var moduleExports = freeModule && freeModule.exports === freeExports && freeExports; var freeGlobal = objectTypes[typeof global] && global; if (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal)) { root = freeGlobal; } var CommandBuffer = function(onCommandCallback, onCommandCallbackContext) { this._cb = onCommandCallback; this._cbCtx = onCommandCallbackContext; this._commands = []; this._commandsCurrent = []; this._paused = false; this._processing = false; }; CommandBuffer.prototype._concatCurrentCommands = function() { this._commands = this._commandsCurrent.concat(this._commands); this._commandsCurrent.length = 0; }; CommandBuffer.prototype._process = function() { var command; while (!this._paused) { this._processing = true; if (!this._commands.length) { this._concatCurrentCommands(); } command = this._commands.shift(); if (!command) { break; } this._cb.call(this._cbCtx, command.type, command.data); this._concatCurrentCommands(); } this._processing = false; }; CommandBuffer.prototype.pause = function() { this._paused = true; }; CommandBuffer.prototype.resume = function() { this._paused = false; this._concatCurrentCommands(); if (!this._processing) { this._process(); } }; CommandBuffer.prototype.run = function(type, data) { this._commandsCurrent.push({ type, data }); if (!this._processing) { this._process(); } }; CommandBuffer.prototype.schedule = function(type, data) { this._commands.push({ type, data }); if (!this._processing) { this._process(); } }; if (typeof define === "function" && typeof define.amd === "object" && define.amd) { root.CommandBuffer = CommandBuffer; define(function() { return CommandBuffer; }); } else if (freeExports && freeModule) { if (moduleExports) { (freeModule.exports = CommandBuffer).CommandBuffer = CommandBuffer; } else { freeExports.CommandBuffer = CommandBuffer; } } else { root.CommandBuffer = CommandBuffer; } }).call(exports); }); // node_modules/function-rate-limit/index.js var require_function_rate_limit = __commonJS((exports, module) => { module.exports = rateLimit; function rateLimit(limitCount, limitInterval, fn) { var fifo = []; var count = limitCount; function call_next(args) { setTimeout(function() { if (fifo.length > 0) { call_next(); } else { count = count + 1; } }, limitInterval); var call_args = fifo.shift(); if (!call_args && args) { fn.apply(args[0], args[1]); return; } fn.apply(call_args[0], call_args[1]); } return function rate_limited_function() { var ctx = this; var args = Array.prototype.slice.call(arguments); if (count <= 0) { fifo.push([ctx, args]); return; } count = count - 1; call_next([ctx, args]); }; } }); // node_modules/@stoqey/ib/dist/api/data/enum/event-name.js var require_event_name = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.EventName = undefined; var EventName; (function(EventName2) { EventName2["all"] = "all"; EventName2["connected"] = "connected"; EventName2["disconnected"] = "disconnected"; EventName2["server"] = "server"; EventName2["error"] = "error"; EventName2["info"] = "info"; EventName2["received"] = "received"; EventName2["sent"] = "sent"; EventName2["result"] = "result"; EventName2["accountDownloadEnd"] = "accountDownloadEnd"; EventName2["accountSummary"] = "accountSummary"; EventName2["accountSummaryEnd"] = "accountSummaryEnd"; EventName2["accountUpdateMulti"] = "accountUpdateMulti"; EventName2["accountUpdateMultiEnd"] = "accountUpdateMultiEnd"; EventName2["bondContractDetails"] = "bondContractDetails"; EventName2["commissionReport"] = "commissionReport"; EventName2["completedOrder"] = "completedOrder"; EventName2["completedOrdersEnd"] = "completedOrdersEnd"; EventName2["connectionClosed"] = "connectionClosed"; EventName2["contractDetails"] = "contractDetails"; EventName2["contractDetailsEnd"] = "contractDetailsEnd"; EventName2["currentTime"] = "currentTime"; EventName2["deltaNeutralValidation"] = "deltaNeutralValidation"; EventName2["tickSnapshotEnd"] = "tickSnapshotEnd"; EventName2["marketDataType"] = "marketDataType"; EventName2["displayGroupList"] = "displayGroupList"; EventName2["displayGroupUpdated"] = "displayGroupUpdated"; EventName2["execDetails"] = "execDetails"; EventName2["execDetailsEnd"] = "execDetailsEnd"; EventName2["familyCodes"] = "familyCodes"; EventName2["contractDescriptions"] = "contractDescriptions"; EventName2["fundamentalData"] = "fundamentalData"; EventName2["headTimestamp"] = "headTimestamp"; EventName2["histogramData"] = "histogramData"; EventName2["historicalDataUpdate"] = "historicalDataUpdate"; EventName2["historicalNews"] = "historicalNews"; EventName2["historicalNewsEnd"] = "historicalNewsEnd"; EventName2["historicalTicks"] = "historicalTicks"; EventName2["historicalTicksBidAsk"] = "historicalTicksBidAsk"; EventName2["historicalTicksLast"] = "historicalTicksLast"; EventName2["managedAccounts"] = "managedAccounts"; EventName2["marketRule"] = "marketRule"; EventName2["mktDepthExchanges"] = "mktDepthExchanges"; EventName2["newsArticle"] = "newsArticle"; EventName2["newsProviders"] = "newsProviders"; EventName2["nextValidId"] = "nextValidId"; EventName2["openOrder"] = "openOrder"; EventName2["openOrderEnd"] = "openOrderEnd"; EventName2["orderBound"] = "orderBound"; EventName2["orderStatus"] = "orderStatus"; EventName2["pnl"] = "pnl"; EventName2["pnlSingle"] = "pnlSingle"; EventName2["position"] = "position"; EventName2["positionEnd"] = "positionEnd"; EventName2["positionMulti"] = "positionMulti"; EventName2["positionMultiEnd"] = "positionMultiEnd"; EventName2["realtimeBar"] = "realtimeBar"; EventName2["receiveFA"] = "receiveFA"; EventName2["replaceFAEnd"] = "replaceFAEnd"; EventName2["rerouteMktDataReq"] = "rerouteMktDataReq"; EventName2["rerouteMktDepthReq"] = "rerouteMktDepthReq"; EventName2["scannerData"] = "scannerData"; EventName2["scannerDataEnd"] = "scannerDataEnd"; EventName2["scannerParameters"] = "scannerParameters"; EventName2["securityDefinitionOptionParameter"] = "securityDefinitionOptionParameter"; EventName2["securityDefinitionOptionParameterEnd"] = "securityDefinitionOptionParameterEnd"; EventName2["smartComponents"] = "smartComponents"; EventName2["softDollarTiers"] = "softDollarTiers"; EventName2["symbolSamples"] = "symbolSamples"; EventName2["tickByTickAllLast"] = "tickByTickAllLast"; EventName2["tickByTickBidAsk"] = "tickByTickBidAsk"; EventName2["tickByTickMidPoint"] = "tickByTickMidPoint"; EventName2["tickEFP"] = "tickEFP"; EventName2["tickGeneric"] = "tickGeneric"; EventName2["tickNews"] = "tickNews"; EventName2["tickOptionComputation"] = "tickOptionComputation"; EventName2["tickPrice"] = "tickPrice"; EventName2["tickReqParams"] = "tickReqParams"; EventName2["tickSize"] = "tickSize"; EventName2["tickString"] = "tickString"; EventName2["updateAccountTime"] = "updateAccountTime"; EventName2["updateAccountValue"] = "updateAccountValue"; EventName2["updatePortfolio"] = "updatePortfolio"; EventName2["updateMktDepth"] = "updateMktDepth"; EventName2["updateMktDepthL2"] = "updateMktDepthL2"; EventName2["updateNewsBulletin"] = "updateNewsBulletin"; EventName2["historicalData"] = "historicalData"; EventName2["wshMetaData"] = "wshMetaData"; EventName2["wshEventData"] = "wshEventData"; EventName2["historicalSchedule"] = "historicalSchedule"; EventName2["userInfo"] = "userInfo"; })(EventName || (exports.EventName = EventName = {})); }); // node_modules/dotenv/lib/main.js var require_main = __commonJS((exports, module) => { var fs = __require("fs"); var path = __require("path"); var os = __require("os"); var crypto = __require("crypto"); var TIPS = [ "◈ encrypted .env [www.dotenvx.com]", "◈ secrets for agents [www.dotenvx.com]", "⌁ auth for agents [www.vestauth.com]", "⌘ custom filepath { path: '/custom/path/.env' }", "⌘ enable debugging { debug: true }", "⌘ override existing { override: true }", "⌘ suppress logs { quiet: true }", "⌘ multiple files { path: ['.env.local', '.env'] }" ]; function _getRandomTip() { return TIPS[Math.floor(Math.random() * TIPS.length)]; } function parseBoolean(value) { if (typeof value === "string") { return !["false", "0", "no", "off", ""].includes(value.toLowerCase()); } return Boolean(value); } function supportsAnsi() { return process.stdout.isTTY; } function dim(text) { return supportsAnsi() ? `\x1B[2m${text}\x1B[0m` : text; } var LINE = /(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/mg; function parse(src) { const obj = {}; let lines = src.toString(); lines = lines.replace(/\r\n?/mg, ` `); let match; while ((match = LINE.exec(lines)) != null) { const key = match[1]; let value = match[2] || ""; value = value.trim(); const maybeQuote = value[0]; value = value.replace(/^(['"`])([\s\S]*)\1$/mg, "$2"); if (maybeQuote === '"') { value = value.replace(/\\n/g, ` `); value = value.replace(/\\r/g, "\r"); } obj[key] = value; } return obj; } function _parseVault(options) { options = options || {}; const vaultPath = _vaultPath(options); options.path = vaultPath; const result = DotenvModule.configDotenv(options); if (!result.parsed) { const err = new Error(`MISSING_DATA: Cannot parse ${vaultPath} for an unknown reason`); err.code = "MISSING_DATA"; throw err; } const keys = _dotenvKey(options).split(","); const length = keys.length; let decrypted; for (let i = 0;i < length; i++) { try { const key = keys[i].trim(); const attrs = _instructions(result, key); decrypted = DotenvModule.decrypt(attrs.ciphertext, attrs.key); break; } catch (error) { if (i + 1 >= length) { throw error; } } } return DotenvModule.parse(decrypted); } function _warn(message) { console.error(`⚠ ${message}`); } function _debug(message) { console.log(`┆ ${message}`); } function _log(message) { console.log(`◇ ${message}`); } function _dotenvKey(options) { if (options && options.DOTENV_KEY && options.DOTENV_KEY.length > 0) { return options.DOTENV_KEY; } if (process.env.DOTENV_KEY && process.env.DOTENV_KEY.length > 0) { return process.env.DOTENV_KEY; } return ""; } function _instructions(result, dotenvKey) { let uri; try { uri = new URL(dotenvKey); } catch (error) { if (error.code === "ERR_INVALID_URL") { const err = new Error("INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=development"); err.code = "INVALID_DOTENV_KEY"; throw err; } throw error; } const key = uri.password; if (!key) { const err = new Error("INVALID_DOTENV_KEY: Missing key part"); err.code = "INVALID_DOTENV_KEY"; throw err; } const environment = uri.searchParams.get("environment"); if (!environment) { const err = new Error("INVALID_DOTENV_KEY: Missing environment part"); err.code = "INVALID_DOTENV_KEY"; throw err; } const environmentKey = `DOTENV_VAULT_${environment.toUpperCase()}`; const ciphertext = result.parsed[environmentKey]; if (!ciphertext) { const err = new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${environmentKey} in your .env.vault file.`); err.code = "NOT_FOUND_DOTENV_ENVIRONMENT"; throw err; } return { ciphertext, key }; } function _vaultPath(options) { let possibleVaultPath = null; if (options && options.path && options.path.length > 0) { if (Array.isArray(options.path)) { for (const filepath of options.path) { if (fs.existsSync(filepath)) { possibleVaultPath = filepath.endsWith(".vault") ? filepath : `${filepath}.vault`; } } } else { possibleVaultPath = options.path.endsWith(".vault") ? options.path : `${options.path}.vault`; } } else { possibleVaultPath = path.resolve(process.cwd(), ".env.vault"); } if (fs.existsSync(possibleVaultPath)) { return possibleVaultPath; } return null; } function _resolveHome(envPath) { return envPath[0] === "~" ? path.join(os.homedir(), envPath.slice(1)) : envPath; } function _configVault(options) { const debug = parseBoolean(process.env.DOTENV_CONFIG_DEBUG || options && options.debug); const quiet = parseBoolean(process.env.DOTENV_CONFIG_QUIET || options && options.quiet); if (debug || !quiet) { _log("loading env from encrypted .env.vault"); } const parsed = DotenvModule._parseVault(options); let processEnv = process.env; if (options && options.processEnv != null) { processEnv = options.processEnv; } DotenvModule.populate(processEnv, parsed, options); return { parsed }; } function configDotenv(options) { const dotenvPath = path.resolve(process.cwd(), ".env"); let encoding = "utf8"; let processEnv = process.env; if (options && options.processEnv != null) { processEnv = options.processEnv; } let debug = parseBoolean(processEnv.DOTENV_CONFIG_DEBUG || options && options.debug); let quiet = parseBoolean(processEnv.DOTENV_CONFIG_QUIET || options && options.quiet); if (options && options.encoding) { encoding = options.encoding; } else { if (debug) { _debug("no encoding is specified (UTF-8 is used by default)"); } } let optionPaths = [dotenvPath]; if (options && options.path) { if (!Array.isArray(options.path)) { optionPaths = [_resolveHome(options.path)]; } else { optionPaths = []; for (const filepath of options.path) { optionPaths.push(_resolveHome(filepath)); } } } let lastError; const parsedAll = {}; for (const path2 of optionPaths) { try { const parsed = DotenvModule.parse(fs.readFileSync(path2, { encoding })); DotenvModule.populate(parsedAll, parsed, options); } catch (e) { if (debug) { _debug(`failed to load ${path2} ${e.message}`); } lastError = e; } } const populated = DotenvModule.populate(processEnv, parsedAll, options); debug = parseBoolean(processEnv.DOTENV_CONFIG_DEBUG || debug); quiet = parseBoolean(processEnv.DOTENV_CONFIG_QUIET || quiet); if (debug || !quiet) { const keysCount = Object.keys(populated).length; const shortPaths = []; for (const filePath of optionPaths) { try { const relative = path.relative(process.cwd(), filePath); shortPaths.push(relative); } catch (e) { if (debug) { _debug(`failed to load ${filePath} ${e.message}`); } lastError = e; } } _log(`injected env (${keysCount}) from ${shortPaths.join(",")} ${dim(`// tip: ${_getRandomTip()}`)}`); } if (lastError) { return { parsed: parsedAll, error: lastError }; } else { return { parsed: parsedAll }; } } function config(options) { if (_dotenvKey(options).length === 0) { return DotenvModule.configDotenv(options); } const vaultPath = _vaultPath(options); if (!vaultPath) { _warn(`you set DOTENV_KEY but you are missing a .env.vault file at ${vaultPath}`); return DotenvModule.configDotenv(options); } return DotenvModule._configVault(options); } function decrypt(encrypted, keyStr) { const key = Buffer.from(keyStr.slice(-64), "hex"); let ciphertext = Buffer.from(encrypted, "base64"); const nonce = ciphertext.subarray(0, 12); const authTag = ciphertext.subarray(-16); ciphertext = ciphertext.subarray(12, -16); try { const aesgcm = crypto.createDecipheriv("aes-256-gcm", key, nonce); aesgcm.setAuthTag(authTag); return `${aesgcm.update(ciphertext)}${aesgcm.final()}`; } catch (error) { const isRange = error instanceof RangeError; const invalidKeyLength = error.message === "Invalid key length"; const decryptionFailed = error.message === "Unsupported state or unable to authenticate data"; if (isRange || invalidKeyLength) { const err = new Error("INVALID_DOTENV_KEY: It must be 64 characters long (or more)"); err.code = "INVALID_DOTENV_KEY"; throw err; } else if (decryptionFailed) { const err = new Error("DECRYPTION_FAILED: Please check your DOTENV_KEY"); err.code = "DECRYPTION_FAILED"; throw err; } else { throw error; } } } function populate(processEnv, parsed, options = {}) { const debug = Boolean(options && options.debug); const override = Boolean(options && options.override); const populated = {}; if (typeof parsed !== "object") { const err = new Error("OBJECT_REQUIRED: Please check the processEnv argument being passed to populate"); err.code = "OBJECT_REQUIRED"; throw err; } for (const key of Object.keys(parsed)) { if (Object.prototype.hasOwnProperty.call(processEnv, key)) { if (override === true) { processEnv[key] = parsed[key]; populated[key] = parsed[key]; } if (debug) { if (override === true) { _debug(`"${key}" is already defined and WAS overwritten`); } else { _debug(`"${key}" is already defined and was NOT overwritten`); } } } else { processEnv[key] = parsed[key]; populated[key] = parsed[key]; } } return populated; } var DotenvModule = { configDotenv, _configVault, _parseVault, config, decrypt, parse, populate }; exports.configDotenv = DotenvModule.configDotenv; exports._configVault = DotenvModule._configVault; exports._parseVault = DotenvModule._parseVault; exports.config = DotenvModule.config; exports.decrypt = DotenvModule.decrypt; exports.parse = DotenvModule.parse; exports.populate = DotenvModule.populate; module.exports = DotenvModule; }); // node_modules/@stoqey/ib/dist/common/configuration.js var require_configuration = __commonJS((exports) => { var __dirname = "/Users/nathanclevenger/projects/kestrel/node_modules/@stoqey/ib/dist/common"; var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); } : function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; }); var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); } : function(o, v) { o["default"] = v; }); var __importStar = exports && exports.__importStar || function() { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function(o2) { var ar = []; for (var k in o2) if (Object.prototype.hasOwnProperty.call(o2, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function(mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) { for (var k = ownKeys(mod), i = 0;i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); } __setModuleDefault(result, mod); return result; }; }(); Object.defineProperty(exports, "__esModule", { value: true }); exports.get = get; var fs_1 = __require("fs"); var path = __importStar(__require("path")); var configuration; var dotenvConfigured = false; var envsToInclude = [ "ci", "env_config_test", "ib_host", "ib_port", "ib_test_account", "client_version", "max_req_per_second" ]; function readJson(readPath) { try { const data = (0, fs_1.readFileSync)(readPath, "utf8"); return JSON.parse(data); } catch (error) { if (error.code !== "ENOENT" || error.errno !== undefined && error.errno !== -4058 && error.errno !== -2) { throw error; } } return {}; } function read(file) { const filePath = path.resolve(__dirname, "..", "..", "config", `${file}.json`); return readJson(filePath); } function assignEnvironment(config) { const newConfig = config; envsToInclude.forEach((key) => { const lc = key.toLowerCase(); const uc = key.toUpperCase(); newConfig[lc] = process.env[uc] || config[lc]; }); return newConfig; } function loadEnvironmentSpecific(config, environment) { let newConfig = config; if (environment) { const conf = read(environment); if (conf) { newConfig = { ...newConfig, ...conf }; } } return newConfig; } var ensureInteger = (fields, config) => fields.forEach((field) => { const value = config[field]; if (typeof value === "string") { config[field] = parseInt(value, 10); } }); function load() { if (!dotenvConfigured) { dotenvConfigured = true; const dotenv = require_main(); dotenv.config({ quiet: true }); } const nodeEnvironment = "development"; let config = read("default"); config = loadEnvironmentSpecific(config, "local"); if (nodeEnvironment) config = loadEnvironmentSpecific(config, nodeEnvironment); config = assignEnvironment(config); config.environment = nodeEnvironment || "local"; config.isProduction = nodeEnvironment === "production"; config.isStaging = nodeEnvironment === "staging"; config.isDevelopment = nodeEnvironment === "development"; config.isTest = nodeEnvironment === "test"; config.isLocal = !nodeEnvironment; config.ci = config.ci || process.env.CIRCLECI; const intFields = [ "ib_port", "default_client_id", "client_version", "max_req_per_second" ]; ensureInteger(intFields, config); return config; } function get() { if (!configuration) { configuration = load(); } return configuration; } var lazyConfiguration = new Proxy({}, { get(_target, property) { return get()[property]; }, set(_target, property, value) { get()[property] = value; return true; }, has(_target, property) { return property in get(); }, ownKeys() { return Reflect.ownKeys(get()); }, getOwnPropertyDescriptor(_target, property) { const loadedConfiguration = get(); if (property in loadedConfiguration) { return { configurable: true, enumerable: true, value: loadedConfiguration[property] }; } return; } }); exports.default = lazyConfiguration; }); // node_modules/@stoqey/ib/dist/common/errorCode.js var require_errorCode = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.isNonFatalError = exports.ErrorCode = undefined; var ErrorCode; (function(ErrorCode2) { ErrorCode2[ErrorCode2["NO_VALID_ID"] = -1] = "NO_VALID_ID"; ErrorCode2[ErrorCode2["ORDER_CANCELLED"] = 202] = "ORDER_CANCELLED"; ErrorCode2[ErrorCode2["MISSING_ORDER_EXCHANGE"] = 321] = "MISSING_ORDER_EXCHANGE"; ErrorCode2[ErrorCode2["ORDER_MESSAGE"] = 399] = "ORDER_MESSAGE"; ErrorCode2[ErrorCode2["SCANNER_LOW_PRECISION"] = 492] = "SCANNER_LOW_PRECISION"; ErrorCode2[ErrorCode2["REQ_MKT_DATA_NOT_AVAIL"] = 354] = "REQ_MKT_DATA_NOT_AVAIL"; ErrorCode2[ErrorCode2["NO_TRADING_PERMISSIONS"] = 460] = "NO_TRADING_PERMISSIONS"; ErrorCode2[ErrorCode2["ALREADY_CONNECTED"] = 501] = "ALREADY_CONNECTED"; ErrorCode2[ErrorCode2["CONNECT_FAIL"] = 502] = "CONNECT_FAIL"; ErrorCode2[ErrorCode2["UPDATE_TWS"] = 503] = "UPDATE_TWS"; ErrorCode2[ErrorCode2["NOT_CONNECTED"] = 504] = "NOT_CONNECTED"; ErrorCode2[ErrorCode2["UNKNOWN_ID"] = 505] = "UNKNOWN_ID"; ErrorCode2[ErrorCode2["UNSUPPORTED_VERSION"] = 506] = "UNSUPPORTED_VERSION"; ErrorCode2[ErrorCode2["BAD_LENGTH"] = 507] = "BAD_LENGTH"; ErrorCode2[ErrorCode2["BAD_MESSAGE"] = 508] = "BAD_MESSAGE"; ErrorCode2[ErrorCode2["FAIL_SEND"] = 509] = "FAIL_SEND"; ErrorCode2[ErrorCode2["FAIL_SEND_REQMKT"] = 510] = "FAIL_SEND_REQMKT"; ErrorCode2[ErrorCode2["FAIL_SEND_CANMKT"] = 511] = "FAIL_SEND_CANMKT"; ErrorCode2[ErrorCode2["FAIL_SEND_ORDER"] = 512] = "FAIL_SEND_ORDER"; ErrorCode2[ErrorCode2["FAIL_SEND_ACCT"] = 513] = "FAIL_SEND_ACCT"; ErrorCode2[ErrorCode2["FAIL_SEND_EXEC"] = 514] = "FAIL_SEND_EXEC"; ErrorCode2[ErrorCode2["FAIL_SEND_CORDER"] = 515] = "FAIL_SEND_CORDER"; ErrorCode2[ErrorCode2["FAIL_SEND_OORDER"] = 516] = "FAIL_SEND_OORDER"; ErrorCode2[ErrorCode2["UNKNOWN_CONTRACT"] = 517] = "UNKNOWN_CONTRACT"; ErrorCode2[ErrorCode2["FAIL_SEND_REQCONTRACT"] = 518] = "FAIL_SEND_REQCONTRACT"; ErrorCode2[ErrorCode2["FAIL_SEND_REQMKTDEPTH"] = 519] = "FAIL_SEND_REQMKTDEPTH"; ErrorCode2[ErrorCode2["FAIL_SEND_CANMKTDEPTH"] = 520] = "FAIL_SEND_CANMKTDEPTH"; ErrorCode2[ErrorCode2["FAIL_SEND_SERVER_LOG_LEVEL"] = 521] = "FAIL_SEND_SERVER_LOG_LEVEL"; ErrorCode2[ErrorCode2["FAIL_SEND_FA_REQUEST"] = 522] = "FAIL_SEND_FA_REQUEST"; ErrorCode2[ErrorCode2["FAIL_SEND_FA_REPLACE"] = 523] = "FAIL_SEND_FA_REPLACE"; ErrorCode2[ErrorCode2["FAIL_SEND_REQSCANNER"] = 524] = "FAIL_SEND_REQSCANNER"; ErrorCode2[ErrorCode2["FAIL_SEND_CANSCANNER"] = 525] = "FAIL_SEND_CANSCANNER"; ErrorCode2[ErrorCode2["FAIL_SEND_REQSCANNERPARAMETERS"] = 526] = "FAIL_SEND_REQSCANNERPARAMETERS"; ErrorCode2[ErrorCode2["FAIL_SEND_REQHISTDATA"] = 527] = "FAIL_SEND_REQHISTDATA"; ErrorCode2[ErrorCode2["FAIL_SEND_CANHISTDATA"] = 528] = "FAIL_SEND_CANHISTDATA"; ErrorCode2[ErrorCode2["FAIL_SEND_REQRTBARS"] = 529] = "FAIL_SEND_REQRTBARS"; ErrorCode2[ErrorCode2["FAIL_SEND_CANRTBARS"] = 530] = "FAIL_SEND_CANRTBARS"; ErrorCode2[ErrorCode2["FAIL_SEND_REQCURRTIME"] = 531] = "FAIL_SEND_REQCURRTIME"; ErrorCode2[ErrorCode2["FAIL_SEND_REQFUNDDATA"] = 532] = "FAIL_SEND_REQFUNDDATA"; ErrorCode2[ErrorCode2["FAIL_SEND_CANFUNDDATA"] = 533] = "FAIL_SEND_CANFUNDDATA"; ErrorCode2[ErrorCode2["FAIL_SEND_REQCALCIMPLIEDVOLAT"] = 534] = "FAIL_SEND_REQCALCIMPLIEDVOLAT"; ErrorCode2[ErrorCode2["FAIL_SEND_REQCALCOPTIONPRICE"] = 535] = "FAIL_SEND_REQCALCOPTIONPRICE"; ErrorCode2[ErrorCode2["FAIL_SEND_CANCALCIMPLIEDVOLAT"] = 536] = "FAIL_SEND_CANCALCIMPLIEDVOLAT"; ErrorCode2[ErrorCode2["FAIL_SEND_CANCALCOPTIONPRICE"] = 537] = "FAIL_SEND_CANCALCOPTIONPRICE"; ErrorCode2[ErrorCode2["FAIL_SEND_REQGLOBALCANCEL"] = 538] = "FAIL_SEND_REQGLOBALCANCEL"; ErrorCode2[ErrorCode2["FAIL_SEND_REQMARKETDATATYPE"] = 539] = "FAIL_SEND_REQMARKETDATATYPE"; ErrorCode2[ErrorCode2["FAIL_SEND_REQPOSITIONS"] = 540] = "FAIL_SEND_REQPOSITIONS"; ErrorCode2[ErrorCode2["FAIL_SEND_CANPOSITIONS"] = 541] = "FAIL_SEND_CANPOSITIONS"; ErrorCode2[ErrorCode2["FAIL_SEND_REQACCOUNTDATA"] = 542] = "FAIL_SEND_REQACCOUNTDATA"; ErrorCode2[ErrorCode2["FAIL_SEND_CANACCOUNTDATA"] = 543] = "FAIL_SEND_CANACCOUNTDATA"; ErrorCode2[ErrorCode2["FAIL_SEND_VERIFYREQUEST"] = 544] = "FAIL_SEND_VERIFYREQUEST"; ErrorCode2[ErrorCode2["FAIL_SEND_VERIFYMESSAGE"] = 545] = "FAIL_SEND_VERIFYMESSAGE"; ErrorCode2[ErrorCode2["FAIL_SEND_QUERYDISPLAYGROUPS"] = 546] = "FAIL_SEND_QUERYDISPLAYGROUPS"; ErrorCode2[ErrorCode2["FAIL_SEND_SUBSCRIBETOGROUPEVENTS"] = 547] = "FAIL_SEND_SUBSCRIBETOGROUPEVENTS"; ErrorCode2[ErrorCode2["FAIL_SEND_UPDATEDISPLAYGROUP"] = 548] = "FAIL_SEND_UPDATEDISPLAYGROUP"; ErrorCode2[ErrorCode2["FAIL_SEND_UNSUBSCRIBEFROMGROUPEVENTS"] = 549] = "FAIL_SEND_UNSUBSCRIBEFROMGROUPEVENTS"; ErrorCode2[ErrorCode2["FAIL_SEND_STARTAPI"] = 550] = "FAIL_SEND_STARTAPI"; ErrorCode2[ErrorCode2["FAIL_SEND_VERIFYANDAUTHREQUEST"] = 551] = "FAIL_SEND_VERIFYANDAUTHREQUEST"; ErrorCode2[ErrorCode2["FAIL_SEND_VERIFYANDAUTHMESSAGE"] = 552] = "FAIL_SEND_VERIFYANDAUTHMESSAGE"; ErrorCode2[ErrorCode2["FAIL_SEND_REQPOSITIONSMULTI"] = 553] = "FAIL_SEND_REQPOSITIONSMULTI"; ErrorCode2[ErrorCode2["FAIL_SEND_CANPOSITIONSMULTI"] = 554] = "FAIL_SEND_CANPOSITIONSMULTI"; ErrorCode2[ErrorCode2["FAIL_SEND_REQACCOUNTUPDATESMULTI"] = 555] = "FAIL_SEND_REQACCOUNTUPDATESMULTI"; ErrorCode2[ErrorCode2["FAIL_SEND_CANACCOUNTUPDATESMULTI"] = 556] = "FAIL_SEND_CANACCOUNTUPDATESMULTI"; ErrorCode2[ErrorCode2["FAIL_SEND_REQSECDEFOPTPARAMS"] = 557] = "FAIL_SEND_REQSECDEFOPTPARAMS"; ErrorCode2[ErrorCode2["FAIL_SEND_REQSOFTDOLLARTIERS"] = 558] = "FAIL_SEND_REQSOFTDOLLARTIERS"; ErrorCode2[ErrorCode2["FAIL_SEND_REQFAMILYCODES"] = 559] = "FAIL_SEND_REQFAMILYCODES"; ErrorCode2[ErrorCode2["FAIL_SEND_REQMATCHINGSYMBOLS"] = 560] = "FAIL_SEND_REQMATCHINGSYMBOLS"; ErrorCode2[ErrorCode2["FAIL_SEND_REQMKTDEPTHEXCHANGES"] = 561] = "FAIL_SEND_REQMKTDEPTHEXCHANGES"; ErrorCode2[ErrorCode2["FAIL_SEND_REQSMARTCOMPONENTS"] = 562] = "FAIL_SEND_REQSMARTCOMPONENTS"; ErrorCode2[ErrorCode2["FAIL_SEND_REQNEWSPROVIDERS"] = 563] = "FAIL_SEND_REQNEWSPROVIDERS"; ErrorCode2[ErrorCode2["FAIL_SEND_REQNEWSARTICLE"] = 564] = "FAIL_SEND_REQNEWSARTICLE"; ErrorCode2[ErrorCode2["FAIL_SEND_REQHISTORICALNEWS"] = 565] = "FAIL_SEND_REQHISTORICALNEWS"; ErrorCode2[ErrorCode2["FAIL_SEND_REQHEADTIMESTAMP"] = 566] = "FAIL_SEND_REQHEADTIMESTAMP"; ErrorCode2[ErrorCode2["FAIL_SEND_REQHISTOGRAMDATA"] = 567] = "FAIL_SEND_REQHISTOGRAMDATA"; ErrorCode2[ErrorCode2["FAIL_SEND_CANCELHISTOGRAMDATA"] = 568] = "FAIL_SEND_CANCELHISTOGRAMDATA"; ErrorCode2[ErrorCode2["FAIL_SEND_CANCELHEADTIMESTAMP"] = 569] = "FAIL_SEND_CANCELHEADTIMESTAMP"; ErrorCode2[ErrorCode2["FAIL_SEND_HISTORICAL_TICK"] = 569] = "FAIL_SEND_HISTORICAL_TICK"; ErrorCode2[ErrorCode2["FAIL_SEND_REQMARKETRULE"] = 570] = "FAIL_SEND_REQMARKETRULE"; ErrorCode2[ErrorCode2["FAIL_SEND_REQPNL"] = 571] = "FAIL_SEND_REQPNL"; ErrorCode2[ErrorCode2["FAIL_SEND_CANCELPNL"] = 572] = "FAIL_SEND_CANCELPNL"; ErrorCode2[ErrorCode2["FAIL_SEND_REQPNLSINGLE"] = 573] = "FAIL_SEND_REQPNLSINGLE"; ErrorCode2[ErrorCode2["FAIL_SEND_CANCELPNLSINGLE"] = 574] = "FAIL_SEND_CANCELPNLSINGLE"; ErrorCode2[ErrorCode2["FAIL_SEND_REQHISTORICALTICKS"] = 575] = "FAIL_SEND_REQHISTORICALTICKS"; ErrorCode2[ErrorCode2["FAIL_SEND_REQTICKBYTICKDATA"] = 576] = "FAIL_SEND_REQTICKBYTICKDATA"; ErrorCode2[ErrorCode2["FAIL_SEND_CANCELTICKBYTICKDATA"] = 577] = "FAIL_SEND_CANCELTICKBYTICKDATA"; ErrorCode2[ErrorCode2["FAIL_SEND_REQCOMPLETEDORDERS"] = 578] = "FAIL_SEND_REQCOMPLETEDORDERS"; ErrorCode2[ErrorCode2["INVALID_SYMBOL"] = 579] = "INVALID_SYMBOL"; ErrorCode2[ErrorCode2["FAIL_SEND_REQ_WSH_META_DATA"] = 580] = "FAIL_SEND_REQ_WSH_META_DATA"; ErrorCode2[ErrorCode2["FAIL_SEND_CAN_WSH_META_DATA"] = 581] = "FAIL_SEND_CAN_WSH_META_DATA"; ErrorCode2[ErrorCode2["FAIL_SEND_REQ_WSH_EVENT_DATA"] = 582] = "FAIL_SEND_REQ_WSH_EVENT_DATA"; ErrorCode2[ErrorCode2["FAIL_SEND_CAN_WSH_EVENT_DATA"] = 583] = "FAIL_SEND_CAN_WSH_EVENT_DATA"; ErrorCode2[ErrorCode2["FAIL_SEND_REQ_USER_INFO"] = 584] = "FAIL_SEND_REQ_USER_INFO"; ErrorCode2[ErrorCode2["FA_PROFILE_NOT_SUPPORTED"] = 585] = "FA_PROFILE_NOT_SUPPORTED"; ErrorCode2[ErrorCode2["FAIL_READ_MESSAGE"] = 586] = "FAIL_READ_MESSAGE"; ErrorCode2[ErrorCode2["FAIL_CONNECTION_LOST_BETWEEN_SERVER_AND_TWS"] = 1100] = "FAIL_CONNECTION_LOST_BETWEEN_SERVER_AND_TWS"; ErrorCode2[ErrorCode2["FAIL_CONNECTION_LOST_BETWEEN_TWS_AND_SERVER"] = 2110] = "FAIL_CONNECTION_LOST_BETWEEN_TWS_AND_SERVER"; ErrorCode2[ErrorCode2["INVALID_POSITION_TRADE_DERIVATED_VALUE"] = 2150] = "INVALID_POSITION_TRADE_DERIVATED_VALUE"; ErrorCode2[ErrorCode2["PART_OF_REQUESTED_DATA_NOT_SUBSCRIBED"] = 10090] = "PART_OF_REQUESTED_DATA_NOT_SUBSCRIBED"; ErrorCode2[ErrorCode2["DISPLAYING_DELAYED_DATA"] = 10167] = "DISPLAYING_DELAYED_DATA"; ErrorCode2[ErrorCode2["NEWS_FEED_NOT_ALLOWED"] = 10276] = "NEWS_FEED_NOT_ALLOWED"; })(ErrorCode || (exports.ErrorCode = ErrorCode = {})); var isNonFatalError = (code, error) => { if (code >= 2100 && code < 3000) return true; if (error.message.includes("Warning:")) return true; switch (code) { case ErrorCode.PART_OF_REQUESTED_DATA_NOT_SUBSCRIBED: case ErrorCode.DISPLAYING_DELAYED_DATA: case ErrorCode.ORDER_MESSAGE: case ErrorCode.SCANNER_LOW_PRECISION: return true; default: return false; } }; exports.isNonFatalError = isNonFatalError; }); // node_modules/@stoqey/ib/dist/api/data/enum/min-server-version.js var require_min_server_version = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.MIN_SERVER_VER = undefined; var MIN_SERVER_VER; (function(MIN_SERVER_VER2) { MIN_SERVER_VER2[MIN_SERVER_VER2["REAL_TIME_BARS"] = 34] = "REAL_TIME_BARS"; MIN_SERVER_VER2[MIN_SERVER_VER2["SCALE_ORDERS"] = 35] = "SCALE_ORDERS"; MIN_SERVER_VER2[MIN_SERVER_VER2["SNAPSHOT_MKT_DATA"] = 35] = "SNAPSHOT_MKT_DATA"; MIN_SERVER_VER2[MIN_SERVER_VER2["SSHORT_COMBO_LEGS"] = 35] = "SSHORT_COMBO_LEGS"; MIN_SERVER_VER2[MIN_SERVER_VER2["WHAT_IF_ORDERS"] = 36] = "WHAT_IF_ORDERS"; MIN_SERVER_VER2[MIN_SERVER_VER2["CONTRACT_CONID"] = 37] = "CONTRACT_CONID"; MIN_SERVER_VER2[MIN_SERVER_VER2["PTA_ORDERS"] = 39] = "PTA_ORDERS"; MIN_SERVER_VER2[MIN_SERVER_VER2["FUNDAMENTAL_DATA"] = 40] = "FUNDAMENTAL_DATA"; MIN_SERVER_VER2[MIN_SERVER_VER2["DELTA_NEUTRAL"] = 40] = "DELTA_NEUTRAL"; MIN_SERVER_VER2[MIN_SERVER_VER2["CONTRACT_DATA_CHAIN"] = 40] = "CONTRACT_DATA_CHAIN"; MIN_SERVER_VER2[MIN_SERVER_VER2["SCALE_ORDERS2"] = 40] = "SCALE_ORDERS2"; MIN_SERVER_VER2[MIN_SERVER_VER2["ALGO_ORDERS"] = 41] = "ALGO_ORDERS"; MIN_SERVER_VER2[MIN_SERVER_VER2["EXECUTION_DATA_CHAIN"] = 42] = "EXECUTION_DATA_CHAIN"; MIN_SERVER_VER2[MIN_SERVER_VER2["NOT_HELD"] = 44] = "NOT_HELD"; MIN_SERVER_VER2[MIN_SERVER_VER2["SEC_ID_TYPE"] = 45] = "SEC_ID_TYPE"; MIN_SERVER_VER2[MIN_SERVER_VER2["PLACE_ORDER_CONID"] = 46] = "PLACE_ORDER_CONID"; MIN_SERVER_VER2[MIN_SERVER_VER2["REQ_MKT_DATA_CONID"] = 47] = "REQ_MKT_DATA_CONID"; MIN_SERVER_VER2[MIN_SERVER_VER2["REQ_CALC_IMPLIED_VOLAT"] = 49] = "REQ_CALC_IMPLIED_VOLAT"; MIN_SERVER_VER2[MIN_SERVER_VER2["CANCEL_CALC_IMPLIED_VOLAT"] = 50] = "CANCEL_CALC_IMPLIED_VOLAT"; MIN_SERVER_VER2[MIN_SERVER_VER2["CANCEL_CALC_OPTION_PRICE"] = 50] = "CANCEL_CALC_OPTION_PRICE"; MIN_SERVER_VER2[MIN_SERVER_VER2["REQ_CALC_OPTION_PRICE"] = 50] = "REQ_CALC_OPTION_PRICE"; MIN_SERVER_VER2[MIN_SERVER_VER2["SSHORTX_OLD"] = 51] = "SSHORTX_OLD"; MIN_SERVER_VER2[MIN_SERVER_VER2["SSHORTX"] = 52] = "SSHORTX"; MIN_SERVER_VER2[MIN_SERVER_VER2["REQ_GLOBAL_CANCEL"] = 53] = "REQ_GLOBAL_CANCEL"; MIN_SERVER_VER2[MIN_SERVER_VER2["HEDGE_ORDERS"] = 54] = "HEDGE_ORDERS"; MIN_SERVER_VER2[MIN_SERVER_VER2["REQ_MARKET_DATA_TYPE"] = 55] = "REQ_MARKET_DATA_TYPE"; MIN_SERVER_VER2[MIN_SERVER_VER2["OPT_OUT_SMART_ROUTING"] = 56] = "OPT_OUT_SMART_ROUTING"; MIN_SERVER_VER2[MIN_SERVER_VER2["SMART_COMBO_ROUTING_PARAMS"] = 57] = "SMART_COMBO_ROUTING_PARAMS"; MIN_SERVER_VER2[MIN_SERVER_VER2["DELTA_NEUTRAL_CONID"] = 58] = "DELTA_NEUTRAL_CONID"; MIN_SERVER_VER2[MIN_SERVER_VER2["SCALE_ORDERS3"] = 60] = "SCALE_ORDERS3"; MIN_SERVER_VER2[MIN_SERVER_VER2["ORDER_COMBO_LEGS_PRICE"] = 61] = "ORDER_COMBO_LEGS_PRICE"; MIN_SERVER_VER2[MIN_SERVER_VER2["TRAILING_PERCENT"] = 62] = "TRAILING_PERCENT"; MIN_SERVER_VER2[MIN_SERVER_VER2["DELTA_NEUTRAL_OPEN_CLOSE"] = 66] = "DELTA_NEUTRAL_OPEN_CLOSE"; MIN_SERVER_VER2[MIN_SERVER_VER2["POSITIONS"] = 67] = "POSITIONS"; MIN_SERVER_VER2[MIN_SERVER_VER2["ACCT_SUMMARY"] = 67] = "ACCT_SUMMARY"; MIN_SERVER_VER2[MIN_SERVER_VER2["TRADING_CLASS"] = 68] = "TRADING_CLASS"; MIN_SERVER_VER2[MIN_SERVER_VER2["SCALE_TABLE"] = 69] = "SCALE_TABLE"; MIN_SERVER_VER2[MIN_SERVER_VER2["LINKING"] = 70] = "LINKING"; MIN_SERVER_VER2[MIN_SERVER_VER2["ALGO_ID"] = 71] = "ALGO_ID"; MIN_SERVER_VER2[MIN_SERVER_VER2["OPTIONAL_CAPABILITIES"] = 72] = "OPTIONAL_CAPABILITIES"; MIN_SERVER_VER2[MIN_SERVER_VER2["ORDER_SOLICITED"] = 73] = "ORDER_SOLICITED"; MIN_SERVER_VER2[MIN_SERVER_VER2["LINKING_AUTH"] = 74] = "LINKING_AUTH"; MIN_SERVER_VER2[MIN_SERVER_VER2["PRIMARYEXCH"] = 75] = "PRIMARYEXCH"; MIN_SERVER_VER2[MIN_SERVER_VER2["RANDOMIZE_SIZE_AND_PRICE"] = 76] = "RANDOMIZE_SIZE_AND_PRICE"; MIN_SERVER_VER2[MIN_SERVER_VER2["FRACTIONAL_POSITIONS"] = 101] = "FRACTIONAL_POSITIONS"; MIN_SERVER_VER2[MIN_SERVER_VER2["PEGGED_TO_BENCHMARK"] = 102] = "PEGGED_TO_BENCHMARK"; MIN_SERVER_VER2[MIN_SERVER_VER2["MODELS_SUPPORT"] = 103] = "MODELS_SUPPORT"; MIN_SERVER_VER2[MIN_SERVER_VER2["SEC_DEF_OPT_PARAMS_REQ"] = 104] = "SEC_DEF_OPT_PARAMS_REQ"; MIN_SERVER_VER2[MIN_SERVER_VER2["EXT_OPERATOR"] = 105] = "EXT_OPERATOR"; MIN_SERVER_VER2[MIN_SERVER_VER2["SOFT_DOLLAR_TIER"] = 106] = "SOFT_DOLLAR_TIER"; MIN_SERVER_VER2[MIN_SERVER_VER2["REQ_FAMILY_CODES"] = 107] = "REQ_FAMILY_CODES"; MIN_SERVER_VER2[MIN_SERVER_VER2["REQ_MATCHING_SYMBOLS"] = 108] = "REQ_MATCHING_SYMBOLS"; MIN_SERVER_VER2[MIN_SERVER_VER2["PAST_LIMIT"] = 109] = "PAST_LIMIT"; MIN_SERVER_VER2[MIN_SERVER_VER2["MD_SIZE_MULTIPLIER"] = 110] = "MD_SIZE_MULTIPLIER"; MIN_SERVER_VER2[MIN_SERVER_VER2["CASH_QTY"] = 111] = "CASH_QTY"; MIN_SERVER_VER2[MIN_SERVER_VER2["REQ_MKT_DEPTH_EXCHANGES"] = 112] = "REQ_MKT_DEPTH_EXCHANGES"; MIN_SERVER_VER2[MIN_SERVER_VER2["TICK_NEWS"] = 113] = "TICK_NEWS"; MIN_SERVER_VER2[MIN_SERVER_VER2["REQ_SMART_COMPONENTS"] = 114] = "REQ_SMART_COMPONENTS"; MIN_SERVER_VER2[MIN_SERVER_VER2["REQ_NEWS_PROVIDERS"] = 115] = "REQ_NEWS_PROVIDERS"; MIN_SERVER_VER2[MIN_SERVER_VER2["REQ_NEWS_ARTICLE"] = 116] = "REQ_NEWS_ARTICLE"; MIN_SERVER_VER2[MIN_SERVER_VER2["REQ_HISTORICAL_NEWS"] = 117] = "REQ_HISTORICAL_NEWS"; MIN_SERVER_VER2[MIN_SERVER_VER2["REQ_HEAD_TIMESTAMP"] = 118] = "REQ_HEAD_TIMESTAMP"; MIN_SERVER_VER2[MIN_SERVER_VER2["REQ_HISTOGRAM"] = 119] = "REQ_HISTOGRAM"; MIN_SERVER_VER2[MIN_SERVER_VER2["SERVICE_DATA_TYPE"] = 120] = "SERVICE_DATA_TYPE"; MIN_SERVER_VER2[MIN_SERVER_VER2["AGG_GROUP"] = 121] = "AGG_GROUP"; MIN_SERVER_VER2[MIN_SERVER_VER2["UNDERLYING_INFO"] = 122] = "UNDERLYING_INFO"; MIN_SERVER_VER2[MIN_SERVER_VER2["CANCEL_HEADTIMESTAMP"] = 123] = "CANCEL_HEADTIMESTAMP"; MIN_SERVER_VER2[MIN_SERVER_VER2["SYNT_REALTIME_BARS"] = 124] = "SYNT_REALTIME_BARS"; MIN_SERVER_VER2[MIN_SERVER_VER2["CFD_REROUTE"] = 125] = "CFD_REROUTE"; MIN_SERVER_VER2[MIN_SERVER_VER2["MARKET_RULES"] = 126] = "MARKET_RULES"; MIN_SERVER_VER2[MIN_SERVER_VER2["PNL"] = 127] = "PNL"; MIN_SERVER_VER2[MIN_SERVER_VER2["NEWS_QUERY_ORIGINS"] = 128] = "NEWS_QUERY_ORIGINS"; MIN_SERVER_VER2[MIN_SERVER_VER2["UNREALIZED_PNL"] = 129] = "UNREALIZED_PNL"; MIN_SERVER_VER2[MIN_SERVER_VER2["HISTORICAL_TICKS"] = 130] = "HISTORICAL_TICKS"; MIN_SERVER_VER2[MIN_SERVER_VER2["MARKET_CAP_PRICE"] = 131] = "MARKET_CAP_PRICE"; MIN_SERVER_VER2[MIN_SERVER_VER2["PRE_OPEN_BID_ASK"] = 132] = "PRE_OPEN_BID_ASK"; MIN_SERVER_VER2[MIN_SERVER_VER2["REAL_EXPIRATION_DATE"] = 134] = "REAL_EXPIRATION_DATE"; MIN_SERVER_VER2[MIN_SERVER_VER2["REALIZED_PNL"] = 135] = "REALIZED_PNL"; MIN_SERVER_VER2[MIN_SERVER_VER2["LAST_LIQUIDITY"] = 136] = "LAST_LIQUIDITY"; MIN_SERVER_VER2[MIN_SERVER_VER2["TICK_BY_TICK"] = 137] = "TICK_BY_TICK"; MIN_SERVER_VER2[MIN_SERVER_VER2["DECISION_MAKER"] = 138] = "DECISION_MAKER"; MIN_SERVER_VER2[MIN_SERVER_VER2["MIFID_EXECUTION"] = 139] = "MIFID_EXECUTION"; MIN_SERVER_VER2[MIN_SERVER_VER2["TICK_BY_TICK_IGNORE_SIZE"] = 140] = "TICK_BY_TICK_IGNORE_SIZE"; MIN_SERVER_VER2[MIN_SERVER_VER2["AUTO_PRICE_FOR_HEDGE"] = 141] = "AUTO_PRICE_FOR_HEDGE"; MIN_SERVER_VER2[MIN_SERVER_VER2["WHAT_IF_EXT_FIELDS"] = 142] = "WHAT_IF_EXT_FIELDS"; MIN_SERVER_VER2[MIN_SERVER_VER2["SCANNER_GENERIC_OPTS"] = 143] = "SCANNER_GENERIC_OPTS"; MIN_SERVER_VER2[MIN_SERVER_VER2["API_BIND_ORDER"] = 144] = "API_BIND_ORDER"; MIN_SERVER_VER2[MIN_SERVER_VER2["ORDER_CONTAINER"] = 145] = "ORDER_CONTAINER"; MIN_SERVER_VER2[MIN_SERVER_VER2["SMART_DEPTH"] = 146] = "SMART_DEPTH"; MIN_SERVER_VER2[MIN_SERVER_VER2["REMOVE_NULL_ALL_CASTING"] = 147] = "REMOVE_NULL_ALL_CASTING"; MIN_SERVER_VER2[MIN_SERVER_VER2["D_PEG_ORDERS"] = 148] = "D_PEG_ORDERS"; MIN_SERVER_VER2[MIN_SERVER_VER2["MKT_DEPTH_PRIM_EXCHANGE"] = 149] = "MKT_DEPTH_PRIM_EXCHANGE"; MIN_SERVER_VER2[MIN_SERVER_VER2["REQ_COMPLETED_ORDERS"] = 150] = "REQ_COMPLETED_ORDERS"; MIN_SERVER_VER2[MIN_SERVER_VER2["PRICE_MGMT_ALGO"] = 151] = "PRICE_MGMT_ALGO"; MIN_SERVER_VER2[MIN_SERVER_VER2["STOCK_TYPE"] = 152] = "STOCK_TYPE"; MIN_SERVER_VER2[MIN_SERVER_VER2["ENCODE_MSG_ASCII7"] = 153] = "ENCODE_MSG_ASCII7"; MIN_SERVER_VER2[MIN_SERVER_VER2["SEND_ALL_FAMILY_CODES"] = 154] = "SEND_ALL_FAMILY_CODES"; MIN_SERVER_VER2[MIN_SERVER_VER2["NO_DEFAULT_OPEN_CLOSE"] = 155] = "NO_DEFAULT_OPEN_CLOSE"; MIN_SERVER_VER2[MIN_SERVER_VER2["PRICE_BASED_VOLATILITY"] = 156] = "PRICE_BASED_VOLATILITY"; MIN_SERVER_VER2[MIN_SERVER_VER2["REPLACE_FA_END"] = 157] = "REPLACE_FA_END"; MIN_SERVER_VER2[MIN_SERVER_VER2["DURATION"] = 158] = "DURATION"; MIN_SERVER_VER2[MIN_SERVER_VER2["MARKET_DATA_IN_SHARES"] = 159] = "MARKET_DATA_IN_SHARES"; MIN_SERVER_VER2[MIN_SERVER_VER2["POST_TO_ATS"] = 160] = "POST_TO_ATS"; MIN_SERVER_VER2[MIN_SERVER_VER2["WSHE_CALENDAR"] = 161] = "WSHE_CALENDAR"; MIN_SERVER_VER2[MIN_SERVER_VER2["AUTO_CANCEL_PARENT"] = 162] = "AUTO_CANCEL_PARENT"; MIN_SERVER_VER2[MIN_SERVER_VER2["FRACTIONAL_SIZE_SUPPORT"] = 163] = "FRACTIONAL_SIZE_SUPPORT"; MIN_SERVER_VER2[MIN_SERVER_VER2["SIZE_RULES"] = 164] = "SIZE_RULES"; MIN_SERVER_VER2[MIN_SERVER_VER2["HISTORICAL_SCHEDULE"] = 165] = "HISTORICAL_SCHEDUL