@xbbg/langgraph 1.2.6
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/LICENSE +190 -0
- package/README.md +182 -0
- package/dist/index.d.ts +93 -0
- package/dist/index.js +2543 -0
- package/dist/index.js.map +1 -0
- package/package.json +88 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/options.ts","../src/core-loader.ts","../src/cdx-fields.ts","../src/descriptions.ts","../src/result-limits.ts","../src/ext-schemas.ts","../src/ext-tools.ts","../src/schemas.ts","../src/tools.ts","../src/index.ts"],"names":["record","tool","z","z2","date","nonEmptyString","stringArray","resultString"],"mappings":"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","file":"index.js","sourcesContent":["import type * as xbbg from \"@xbbg/core\";\r\n\r\nimport type { XbbgCoreLike, XbbgEngineLike } from \"./core-loader\";\r\n\r\nexport const BLOOMBERG_TOOL_NAMES = [\r\n \"xbbg_bdp\",\r\n \"xbbg_bdh\",\r\n \"xbbg_bds\",\r\n \"xbbg_bdib\",\r\n \"xbbg_bdtick\",\r\n \"xbbg_bql\",\r\n \"xbbg_bsrch\",\r\n \"xbbg_bqr\",\r\n \"xbbg_bflds\",\r\n \"xbbg_beqs\",\r\n \"xbbg_yas\",\r\n \"xbbg_preferreds\",\r\n \"xbbg_corporate_bonds\",\r\n \"xbbg_index_members\",\r\n \"xbbg_resolve_isins\",\r\n \"xbbg_issuer_isins\",\r\n \"xbbg_etf_holdings\",\r\n \"xbbg_stream_snapshot\",\r\n \"xbbg_mktbar_snapshot\",\r\n \"xbbg_depth_snapshot\",\r\n \"xbbg_ext_ticker\",\r\n \"xbbg_ext_futures\",\r\n \"xbbg_ext_cdx\",\r\n \"xbbg_ext_currency\",\r\n \"xbbg_ext_bql_builder\",\r\n \"xbbg_ext_market_session\",\r\n \"xbbg_ext_yas_overrides\",\r\n \"xbbg_ext_constants\",\r\n \"xbbg_ext_columns\",\r\n \"xbbg_ext_calculate\",\r\n] as const;\r\n\r\nexport type BloombergToolName = (typeof BLOOMBERG_TOOL_NAMES)[number];\r\n\r\nexport interface BloombergToolsOptions {\r\n readonly engine?: XbbgEngineLike;\r\n readonly engineConfig?: xbbg.EngineConfig;\r\n readonly core?: XbbgCoreLike;\r\n readonly maxSecurities?: number;\r\n readonly maxFields?: number;\r\n readonly maxRows?: number;\r\n readonly maxStringChars?: number;\r\n readonly maxBqlQueryChars?: number;\r\n readonly maxSearchSpecChars?: number;\r\n readonly maxStreamUpdates?: number;\r\n readonly maxStreamWaitMs?: number;\r\n readonly validateFields?: boolean;\r\n readonly disabledTools?: readonly BloombergToolName[];\r\n}\r\n\r\nexport interface NormalizedBloombergToolsOptions {\r\n readonly engine?: XbbgEngineLike;\r\n readonly engineConfig?: xbbg.EngineConfig;\r\n readonly core?: XbbgCoreLike;\r\n readonly maxSecurities: number;\r\n readonly maxFields: number;\r\n readonly maxRows: number;\r\n readonly maxStringChars: number;\r\n readonly maxBqlQueryChars: number;\r\n readonly maxSearchSpecChars: number;\r\n readonly maxStreamUpdates: number;\r\n readonly maxStreamWaitMs: number;\r\n readonly validateFields: boolean | undefined;\r\n readonly disabledTools: ReadonlySet<BloombergToolName>;\r\n}\r\n\r\nconst DEFAULT_MAX_SECURITIES = 25;\r\nconst DEFAULT_MAX_FIELDS = 25;\r\nconst DEFAULT_MAX_ROWS = 500;\r\nconst DEFAULT_MAX_STRING_CHARS = 2000;\r\nconst DEFAULT_MAX_BQL_QUERY_CHARS = 4000;\r\nconst DEFAULT_MAX_SEARCH_SPEC_CHARS = 1000;\r\nconst DEFAULT_MAX_STREAM_UPDATES = 10;\r\nconst DEFAULT_MAX_STREAM_WAIT_MS = 15_000;\r\n\r\nfunction positiveInteger(value: number | undefined, fallback: number, name: string): number {\r\n if (value === undefined) {\r\n return fallback;\r\n }\r\n if (!Number.isInteger(value) || value <= 0) {\r\n throw new RangeError(`${name} must be a positive integer; got ${String(value)}`);\r\n }\r\n return value;\r\n}\r\n\r\nfunction disabledToolSet(\r\n tools: readonly BloombergToolName[] | undefined,\r\n): ReadonlySet<BloombergToolName> {\r\n return new Set(tools ?? []);\r\n}\r\n\r\nexport function normalizeBloombergToolsOptions(\r\n options: BloombergToolsOptions = {},\r\n): NormalizedBloombergToolsOptions {\r\n return {\r\n core: options.core,\r\n disabledTools: disabledToolSet(options.disabledTools),\r\n engine: options.engine,\r\n engineConfig: options.engineConfig,\r\n maxBqlQueryChars: positiveInteger(\r\n options.maxBqlQueryChars,\r\n DEFAULT_MAX_BQL_QUERY_CHARS,\r\n \"maxBqlQueryChars\",\r\n ),\r\n maxFields: positiveInteger(options.maxFields, DEFAULT_MAX_FIELDS, \"maxFields\"),\r\n maxRows: positiveInteger(options.maxRows, DEFAULT_MAX_ROWS, \"maxRows\"),\r\n maxSearchSpecChars: positiveInteger(\r\n options.maxSearchSpecChars,\r\n DEFAULT_MAX_SEARCH_SPEC_CHARS,\r\n \"maxSearchSpecChars\",\r\n ),\r\n maxStreamUpdates: positiveInteger(\r\n options.maxStreamUpdates,\r\n DEFAULT_MAX_STREAM_UPDATES,\r\n \"maxStreamUpdates\",\r\n ),\r\n maxStreamWaitMs: positiveInteger(\r\n options.maxStreamWaitMs,\r\n DEFAULT_MAX_STREAM_WAIT_MS,\r\n \"maxStreamWaitMs\",\r\n ),\r\n maxSecurities: positiveInteger(options.maxSecurities, DEFAULT_MAX_SECURITIES, \"maxSecurities\"),\r\n maxStringChars: positiveInteger(\r\n options.maxStringChars,\r\n DEFAULT_MAX_STRING_CHARS,\r\n \"maxStringChars\",\r\n ),\r\n validateFields: options.validateFields,\r\n };\r\n}\r\n\r\nexport function isToolDisabled(\r\n options: NormalizedBloombergToolsOptions,\r\n name: BloombergToolName,\r\n): boolean {\r\n return options.disabledTools.has(name);\r\n}\r\n","import type * as xbbg from \"@xbbg/core\";\r\n\r\nimport type { BloombergToolsOptions, NormalizedBloombergToolsOptions } from \"./options\";\r\nimport { normalizeBloombergToolsOptions } from \"./options\";\r\n\r\nexport type XbbgCoreModule = typeof xbbg;\r\nexport type XbbgEngineLike = Pick<\r\n Awaited<ReturnType<XbbgCoreModule[\"connect\"]>>,\r\n | \"bdp\"\r\n | \"bdh\"\r\n | \"bds\"\r\n | \"bdib\"\r\n | \"bdtick\"\r\n | \"bql\"\r\n | \"bsrch\"\r\n | \"bqr\"\r\n | \"bflds\"\r\n | \"beqs\"\r\n | \"yas\"\r\n | \"preferreds\"\r\n | \"corporateBonds\"\r\n | \"indexMembers\"\r\n | \"resolveIsins\"\r\n | \"issuerIsins\"\r\n | \"etfHoldings\"\r\n | \"stream\"\r\n | \"mktbar\"\r\n | \"depth\"\r\n>;\r\nexport type XbbgCoreLike = Pick<XbbgCoreModule, \"connect\" | \"ext\">;\r\n\r\nexport interface CoreResolver {\r\n readonly options: NormalizedBloombergToolsOptions;\r\n getCore(): Promise<XbbgCoreLike>;\r\n getEngine(): Promise<XbbgEngineLike>;\r\n}\r\n\r\nasync function importCore(): Promise<XbbgCoreLike> {\r\n return await import(\"@xbbg/core\");\r\n}\r\n\r\nexport function createCoreResolver(options: BloombergToolsOptions = {}): CoreResolver {\r\n const normalized = normalizeBloombergToolsOptions(options);\r\n let corePromise: Promise<XbbgCoreLike> | undefined;\r\n let enginePromise: Promise<XbbgEngineLike> | undefined;\r\n\r\n async function getCore(): Promise<XbbgCoreLike> {\r\n if (normalized.core !== undefined) {\r\n return normalized.core;\r\n }\r\n corePromise ??= importCore();\r\n return await corePromise;\r\n }\r\n\r\n async function getEngine(): Promise<XbbgEngineLike> {\r\n if (normalized.engine !== undefined) {\r\n return normalized.engine;\r\n }\r\n enginePromise ??= (async (): Promise<XbbgEngineLike> => {\r\n const core = await getCore();\r\n return await core.connect(normalized.engineConfig);\r\n })();\r\n return await enginePromise;\r\n }\r\n\r\n return {\r\n getCore,\r\n getEngine,\r\n options: normalized,\r\n };\r\n}\r\n","// Canonical CDX field bundles for the LangGraph CDX helpers.\n//\n// These mirror the field sets exported by @xbbg/core (CDX_INFO_FIELDS /\n// CDX_PRICING_FIELDS / CDX_RISK_FIELDS). They are defined locally rather than\n// imported from @xbbg/core because importing the core module eagerly loads its\n// native addon, which requires the Bloomberg SDK runtime (libblpapi). That side\n// effect breaks SDK-less environments such as unit tests and the npm publish\n// validation gate. The current dependency range (@xbbg/core@^1.2.4) does not yet\n// export these constants, so this list is the effective source of truth.\n//\n// Keep in sync with @xbbg/core's CDX field bundles. To source them from core\n// directly in the future, bump the @xbbg/core dependency and load it lazily\n// (e.g. via the async core-loader) so module evaluation never forces a native load.\n\nexport const CDX_INFO_FIELDS: readonly string[] = Object.freeze([\n \"ROLLING_SERIES\",\n \"VERSION\",\n \"ON_THE_RUN_CURRENT_BD_INDICATOR\",\n \"CDS_FIRST_ACCRUAL_START_DATE\",\n \"NAME\",\n \"NUM_CURRENT_COMPANIES_CCY_TKR\",\n \"NUM_ORIG_COMPANIES_CRNCY_TKR\",\n \"PX_LAST\",\n]);\n\nexport const CDX_PRICING_FIELDS: readonly string[] = Object.freeze([\n \"PX_LAST\",\n \"PX_BID\",\n \"PX_ASK\",\n \"UPFRONT_LAST\",\n \"UPFRONT_BID\",\n \"UPFRONT_ASK\",\n \"CDS_FLAT_SPREAD\",\n \"UPFRONT_FEE\",\n \"PV_CDS_PREMIUM_LEG\",\n \"PV_CDS_DEFAULT_LEG\",\n]);\n\nexport const CDX_RISK_FIELDS: readonly string[] = Object.freeze([\n \"SW_CNV_BPV\",\n \"SW_EQV_BPV\",\n \"CDS_SPREAD_MID_MODIFIED_DURATION\",\n \"CDS_SPREAD_MID_CONVEXITY\",\n \"RECOVERY_RATE_SEN\",\n \"CDS_RECOVERY_RT\",\n]);\n","import type { BloombergToolsOptions } from \"./options\";\r\nconst REQUIRED_TOOL_INSTRUCTIONS = [\r\n \"# Bloomberg tool usage\",\r\n \"- Use these tools only for server-side Bloomberg data access through @xbbg/core. Never imply Bloomberg data was retrieved unless a tool call actually returned it.\",\r\n \"- Ask a clarifying question before calling a tool when any security identity, field mnemonic, date range, currency, periodicity, intraday interval, timezone, override, or universe is ambiguous.\",\r\n \"- Do not invent Bloomberg tickers, field mnemonics, overrides, or BQL functions. If the user gives a field description rather than a confident mnemonic, call xbbg_bflds first.\",\r\n \"\",\r\n \"## Security identifiers\",\r\n \"- Prefer fully qualified Bloomberg securities such as AAPL US Equity, SPX Index, or CDX IG CDSI GEN 5Y Corp when the user provides them.\",\r\n \"- For raw security identifiers, request or pass Bloomberg identifier syntax directly: /isin/{isin} for ISINs, for example /isin/US0378331005; /cusip/{cusip} for CUSIPs, for example /cusip/037833100.\",\r\n \"- Do not pass raw ISIN or CUSIP strings when the request is meant to identify a security. Do not use xbbg_bsrch as a replacement for a known ticker, ISIN, or CUSIP.\",\r\n \"- For dealer quote / BQR workflows, use xbbg_bqr with a fixed-income identifier plus a dealer quote source such as /isin/US037833FB15@MSG1 Corp. For raw intraday ticks, use xbbg_bdtick.\",\r\n \"\",\r\n \"## Core request tools\",\r\n \"- xbbg_bdp: current or reference point-in-time fields, e.g. PX_LAST, NAME, CUR_MKT_CAP. Use a small explicit securities list and a small explicit fields list. Use includeSecurityErrors only when the caller wants Bloomberg security errors in the response.\",\r\n \"- xbbg_bdh: historical daily or periodic time series. Always provide explicit start and end dates in YYYY-MM-DD or YYYYMMDD form. Ask before choosing periodicity, currency, fill behavior, adjustment overrides, or a wide output table.\",\r\n \"- xbbg_bds: Bloomberg bulk/table fields such as index members. Provide exactly one bulk field; do not use bds for ordinary multi-field reference data.\",\r\n \"- xbbg_bdib: intraday bars only. Provide one ticker, explicit ISO start/end datetimes, a positive interval in minutes, and timezone context when datetimes are naive. TRADE is the usual event type unless the user asks otherwise.\",\r\n \"- xbbg_bdtick: intraday tick data. Provide one ticker, explicit ISO start/end datetimes, and explicit eventTypes when not asking for TRADE ticks. Use includeBrokerCodes or includeConditionCodes only when those columns are needed.\",\r\n \"- xbbg_bql: BQL expressions only when the user asks for BQL or the request is naturally expressed as a bounded BQL query. Keep queries short, explicit, and scoped to the requested universe.\",\r\n \"- xbbg_bsrch: Bloomberg search-grid or saved-search workflows only, such as ExcelGetGrid-style searches. Do not use it for ordinary security lookup.\",\r\n \"- xbbg_bqr: Bloomberg Quote Request / dealer quotes. Prefer fixed-income ISIN inputs with a dealer quote source such as /isin/US037833FB15@MSG1 Corp, explicit start/end datetimes, and BID/ASK event types. includeBrokerCodes defaults to true.\",\r\n \"- xbbg_bflds: Bloomberg field metadata/search. Provide exactly one of fields or searchSpec; use searchSpec for natural-language field names and fields for known mnemonics.\",\r\n \"- xbbg_beqs: Bloomberg equity screening by named BEQS screen. Prefer this over hand-written BQL when the user names an existing Bloomberg screen.\",\r\n \"- xbbg_yas: fixed-income YAS recipe fields such as YAS_BOND_YLD, YAS_MOD_DUR, YAS_ZSPREAD, or YAS_BOND_PX. Prefer this over manual YAS_BOND_* BDP requests when the user asks for YAS yield, duration, spread, or price analytics.\",\r\n \"- xbbg_preferreds: preferred stock discovery from an equity ticker. Prefer this over xbbg_ext_bql_builder plus xbbg_bql when the user wants the actual preferreds result.\",\r\n \"- xbbg_corporate_bonds: bounded corporate bond universe query for a company ticker. Prefer this over generic BQL for company debt discovery.\",\r\n \"- xbbg_index_members: index constituents through the core index recipe. Prefer this over generic BDS/BQL members when the user asks for constituents.\",\r\n \"- xbbg_resolve_isins: resolves supplied ISIN strings to Bloomberg securities. Pass raw ISIN strings only for this recipe; otherwise use /isin/{isin} syntax with data tools.\",\r\n \"- xbbg_issuer_isins: issuer/bond ISIN workflow for supplied bond ISIN strings.\",\r\n \"- xbbg_etf_holdings: ETF holdings recipe for a single ETF ticker. Prefer this over generic BQL holdings when the user asks for ETF constituents.\",\r\n \"- xbbg_stream_snapshot: bounded live market-data observation from //blp/mktdata. Requires explicit maxUpdates and always terminates/unsubscribes.\",\r\n \"- xbbg_mktbar_snapshot: bounded live market-bar observation from //blp/mktbar for one ticker. Requires explicit maxUpdates and always terminates/unsubscribes.\",\r\n \"- xbbg_depth_snapshot: bounded market-depth observation from //blp/mktdepthdata for one ticker. Requires explicit maxUpdates and always terminates/unsubscribes.\",\r\n \"\",\r\n \"## BQL guidance\",\r\n \"- BQL is a complete Bloomberg Query Language expression sent as one query string; the tool does not assemble get/for/with clauses for you.\",\r\n \"- Basic shape: get(field1, field2) for(universe). Examples: get(px_last) for('AAPL US Equity') and get(px_last, volume) for(['IBM US Equity', 'AAPL US Equity']).\",\r\n \"- Use BQL for universe-oriented analytics and screens such as holdings('SPY US Equity'), members('SPX Index'), debt universes, filters with with(...), and date ranges such as with(dates=range(-5d, 0d)).\",\r\n \"- Prefer xbbg_ext_bql_builder instead of hand-writing BQL for supported workflows: preferred stocks, corporate bonds, and ETF holdings.\",\r\n \"- Do not use BQL just because the user asks for normal reference data; xbbg_bdp is simpler for current fields and xbbg_bdh is simpler for historical time series.\",\r\n \"\",\r\n \"## Output handling\",\r\n \"- Tool results use LangChain content_and_artifact output: content is a compact summary, artifact is a bounded envelope with tool, rowCount, truncated, and data. Inspect the artifact before summarizing.\",\r\n \"- If a response is empty, truncated, or contains Bloomberg/security errors, say that directly. Do not fill gaps from memory or assumptions.\",\r\n] as const;\r\n\r\nconst OPTIONAL_EXTENSION_INSTRUCTIONS = [\r\n \"\",\r\n \"## Extension helper tools\",\r\n \"- xbbg_ext_ticker: ticker hygiene before live calls. parse_ticker splits a Bloomberg ticker, normalize_tickers trims/canonicalizes lists, filter_equity_tickers keeps equity-like tickers, is_specific_contract checks futures specificity, and validate_generic_ticker rejects malformed generic futures tickers.\",\r\n \"- xbbg_ext_futures: futures contract construction and selection. Use build_futures_ticker for root/month/year/asset assembly, get_futures_months for month-code lookup, generate_candidates for generic-to-specific candidates, contract_index for generic contract rank, filter_candidates_by_cycle for HMUZ/quarterly cycles, and filter_valid_contracts to keep contracts valid for a date.\",\r\n \"- xbbg_ext_cdx: CDX ticker workflow support. Use parse_cdx_ticker to understand a CDX ticker, previous_cdx_series to roll back a series, cdx_gen_to_specific to resolve a generic CDX to a target series, and cdx_info/cdx_pricing/cdx_risk for predefined BDP field bundles. cdx_pricing and cdx_risk accept recoveryRate, which becomes the CDS_RR override.\",\r\n \"- xbbg_ext_currency: currency-planning helpers. build_fx_pair constructs the Bloomberg FX pair and conversion factor, same_currency avoids unnecessary conversion, and currencies_needing_conversion identifies which currencies differ from a target before requesting converted values.\",\r\n \"- xbbg_ext_bql_builder: safe BQL generators for common xbbg workflows. Use build_preferreds_query for preferred-stock discovery from an equity, build_corporate_bonds_query for company bond universes with optional currency/active filters, and build_etf_holdings_query for ETF constituents. Prefer these builders over hand-writing those BQL shapes.\",\r\n \"- xbbg_ext_market_session: exchange calendar/timezone support. derive_sessions turns day session times into session blocks, infer_timezone maps country codes to timezones, session_times_to_utc converts local sessions to UTC, get_market_rule gets MIC/exchange rules, default_turnover_dates and default_bqr_datetimes provide bounded defaults, and get/list_exchange_override inspect configured exchange metadata.\",\r\n \"- xbbg_ext_yas_overrides: builds flat YAS override maps for fixed-income BDP requests when the lower-level BDP workflow is required. Prefer xbbg_yas for actual YAS recipe fields.\",\r\n \"- xbbg_ext_constants: static lookup/format helpers for date parsing/formatting, futures month code/name mappings, dividend type mappings, and known dividend/ETF output columns.\",\r\n \"- xbbg_ext_columns: post-processing helpers for Bloomberg-shaped tables. Use rename_dividend_columns, rename_etf_columns, or build_earning_header_rename when explaining or normalizing response column names after a request.\",\r\n \"- xbbg_ext_calculate: small numeric helper for Bloomberg workflows. calculate_level_percentages pairs observed values with levels; values and levels must have the same length.\",\r\n] as const;\r\n\r\nconst OPTIONAL_LIMIT_INSTRUCTIONS = [\r\n \"\",\r\n \"## Request limits and inputs\",\r\n \"- Keep Bloomberg requests bounded: explicit securities, explicit fields, explicit dates, limited rows, and no broad exploratory pulls unless the user narrows the universe.\",\r\n \"- Respect configured tool limits for securities, fields, rows, string size, BQL length, and search spec length. Ask the user to narrow the request rather than exceeding them.\",\r\n \"- Use flat primitive overrides and kwargs only: string, number, or boolean values. Do not send nested objects, arrays, or inferred defaults as overrides.\",\r\n] as const;\r\n\r\nexport const BLOOMBERG_TOOL_INSTRUCTIONS = [\r\n ...REQUIRED_TOOL_INSTRUCTIONS,\r\n ...OPTIONAL_EXTENSION_INSTRUCTIONS,\r\n ...OPTIONAL_LIMIT_INSTRUCTIONS,\r\n].join(\"\\n\");\r\n\r\nexport interface BloombergToolInstructionsOptions {\r\n readonly includeExtensionGuidance?: boolean;\r\n readonly includeLimitReminder?: boolean;\r\n}\r\n\r\nexport function getBloombergToolInstructions(\r\n options: BloombergToolInstructionsOptions = {},\r\n): string {\r\n const includeExtensionGuidance = options.includeExtensionGuidance ?? true;\r\n const includeLimitReminder = options.includeLimitReminder ?? true;\r\n const lines: string[] = [...REQUIRED_TOOL_INSTRUCTIONS];\r\n if (includeExtensionGuidance) {\r\n lines.push(...OPTIONAL_EXTENSION_INSTRUCTIONS);\r\n }\r\n if (includeLimitReminder) {\r\n lines.push(...OPTIONAL_LIMIT_INSTRUCTIONS);\r\n }\r\n return lines.join(\"\\n\");\r\n}\r\n\r\nexport const BDP_DESCRIPTION =\r\n 'Bloomberg reference data for current or point-in-time fields such as PX_LAST, NAME, or CUR_MKT_CAP. Use for a small bounded list of fully qualified securities. Use /isin/{isin} for ISINs and /cusip/{cusip} for CUSIPs. Example: securities [\"AAPL US Equity\"], fields [\"PX_LAST\"].';\r\n\r\nexport const BDH_DESCRIPTION =\r\n 'Bloomberg historical time series. Requires explicit start and end dates; ask before using if the date range or periodicity is ambiguous. Use /isin/{isin} for ISINs and /cusip/{cusip} for CUSIPs. Example: securities [\"AAPL US Equity\"], fields [\"PX_LAST\"], start \"2024-01-01\", end \"2024-01-31\".';\r\n\r\nexport const BDS_DESCRIPTION =\r\n 'Bloomberg bulk/table reference data such as index members. Requires exactly one bulk field, not a field list. Use /isin/{isin} for ISINs and /cusip/{cusip} for CUSIPs. Example: securities [\"SPX Index\"], field \"INDX_MEMBERS\".';\r\n\r\nexport const BDIB_DESCRIPTION =\r\n 'Bloomberg intraday bars. Requires one ticker plus explicit ISO start/end datetimes and a positive interval in minutes. Use /isin/{isin} for ISINs and /cusip/{cusip} for CUSIPs. Example: ticker \"AAPL US Equity\", start \"2024-01-31T09:30:00-05:00\", end \"2024-01-31T16:00:00-05:00\", interval 5.';\r\n\r\nexport const BDTICK_DESCRIPTION =\r\n 'Bloomberg intraday tick data. Requires one ticker plus explicit ISO start/end datetimes. Defaults eventTypes to [\"TRADE\"]; use [\"BID\", \"ASK\"] for quote ticks and includeBrokerCodes/includeConditionCodes only when needed.';\r\n\r\nexport const BQL_DESCRIPTION =\r\n \"Bloomberg Query Language expression sent as one complete query string. Use for bounded universe analytics such as get(px_last) for('AAPL US Equity'), get(px_last, volume) for(['IBM US Equity', 'AAPL US Equity']), holdings('SPY US Equity'), members('SPX Index'), filters with with(...), or dates=range(...). Prefer xbbg_bdp/xbbg_bdh for simple reference or historical requests.\";\r\n\r\nexport const BSRCH_DESCRIPTION =\r\n 'Bloomberg search/grid request. Use for saved-search or ExcelGetGrid-style Bloomberg searches, not ordinary security lookup. Example searchSpec \"COMDTY:NG\".';\r\n\r\nexport const BQR_DESCRIPTION =\r\n 'Bloomberg Quote Request / dealer quotes. Use for fixed-income dealer quote ticks, preferably with an ISIN plus dealer source such as \"/isin/US037833FB15@MSG1 Corp\"; requires explicit ISO start/end datetimes. Defaults eventTypes to [\"BID\", \"ASK\"] and includeBrokerCodes to true.';\r\n\r\nexport const BFLDS_DESCRIPTION =\r\n 'Bloomberg field metadata and field search. Use first when a field mnemonic is uncertain. Provide exactly one of fields or searchSpec. Example: fields [\"PX_LAST\"] or searchSpec \"last price\".';\r\n\r\nexport const BEQS_DESCRIPTION =\r\n \"Bloomberg equity screening by named BEQS screen. Use when the user names an existing Bloomberg screen and wants its bounded result set. Prefer this over hand-written BQL for saved Bloomberg screens.\";\r\n\r\nexport const YAS_DESCRIPTION =\r\n \"Bloomberg fixed-income YAS recipe fields for one or more bonds. Use for YAS yield, duration, spread, benchmark, or price analytics; provide explicit fields and optional settlement/yield/price inputs.\";\r\n\r\nexport const PREFERREDS_DESCRIPTION =\r\n \"Preferred stock discovery for one equity ticker. Use when the user asks for preferred shares or preferred stock securities related to an issuer.\";\r\n\r\nexport const CORPORATE_BONDS_DESCRIPTION =\r\n \"Corporate bond universe query for one issuer/company ticker, with optional currency, active-only filter, and result fields. Prefer this over generic BQL for company debt discovery.\";\r\n\r\nexport const INDEX_MEMBERS_DESCRIPTION =\r\n \"Index constituent recipe for one Bloomberg index. Use for bounded member lists and optional historical/as-of constituent membership.\";\r\n\r\nexport const RESOLVE_ISINS_DESCRIPTION =\r\n \"Resolve raw ISIN strings to Bloomberg securities through the core ISIN recipe. Do not add /isin/ prefixes in this tool; pass the exact ISIN strings supplied by the user.\";\r\n\r\nexport const ISSUER_ISINS_DESCRIPTION =\r\n \"Issuer/bond ISIN workflow for supplied bond ISIN strings. Use for issuer-level ISIN discovery starting from known bond ISINs.\";\r\n\r\nexport const ETF_HOLDINGS_DESCRIPTION =\r\n \"ETF holdings recipe for one ETF ticker. Use when the user asks for ETF constituents or holdings and wants the bounded holdings result.\";\r\n\r\nexport const STREAM_SNAPSHOT_DESCRIPTION =\r\n \"Bounded live market-data snapshot from //blp/mktdata. Collects at most maxUpdates updates until timeout/done, then always unsubscribes; use for finite observations, not open subscriptions.\";\r\n\r\nexport const MKTBAR_SNAPSHOT_DESCRIPTION =\r\n \"Bounded live market-bar snapshot from //blp/mktbar for one ticker. Collects at most maxUpdates updates until timeout/done, then always unsubscribes.\";\r\n\r\nexport const DEPTH_SNAPSHOT_DESCRIPTION =\r\n \"Bounded live market-depth snapshot from //blp/mktdepthdata for one ticker. Collects at most maxUpdates updates until timeout/done, then always unsubscribes.\";\r\n\r\nexport const EXT_TICKER_DESCRIPTION =\r\n \"Ticker hygiene helpers: parse_ticker, normalize_tickers, filter_equity_tickers, is_specific_contract, and validate_generic_ticker.\";\r\n\r\nexport const EXT_FUTURES_DESCRIPTION =\r\n \"Futures helpers for contract construction and selection: build_futures_ticker, generate_candidates, contract_index, filter_candidates_by_cycle, filter_valid_contracts, and get_futures_months.\";\r\n\r\nexport const EXT_CDX_DESCRIPTION =\r\n \"CDX helpers for parsing, series rolling/resolution, and predefined info/pricing/risk BDP field bundles.\";\r\n\r\nexport const EXT_CURRENCY_DESCRIPTION =\r\n \"Currency planning helpers: build FX pairs, test same-currency requests, and find currencies needing conversion.\";\r\n\r\nexport const EXT_BQL_BUILDER_DESCRIPTION =\r\n \"BQL builders for preferred stocks, corporate bonds, and ETF holdings. Prefer to construct those bounded BQL shapes before xbbg_bql.\";\r\n\r\nexport const EXT_MARKET_SESSION_DESCRIPTION =\r\n \"Market session and timezone helpers for deriving sessions, UTC windows, market rules, exchange metadata, turnover defaults, and BQR datetime defaults.\";\r\n\r\nexport const EXT_YAS_OVERRIDES_DESCRIPTION =\r\n \"Build flat Bloomberg YAS override maps for fixed income fields such as YAS_BOND_YLD, YAS_MOD_DUR, YAS_ZSPREAD, or YAS_BOND_PX.\";\r\n\r\nexport const EXT_CONSTANTS_DESCRIPTION =\r\n \"Static Bloomberg helper constants for date parsing/formatting, futures months, dividend types, and ETF/dividend columns.\";\r\n\r\nexport const EXT_COLUMNS_DESCRIPTION =\r\n \"Column rename helpers for dividend, ETF, and earnings-shaped Bloomberg responses.\";\r\n\r\nexport const EXT_CALCULATE_DESCRIPTION =\r\n \"Small numeric helper operations for Bloomberg workflows, including level percentage calculations.\";\r\n\r\nexport function describeConfiguredLimits(options: BloombergToolsOptions): string {\r\n const parts: string[] = [];\r\n if (options.maxSecurities !== undefined) {\r\n parts.push(`maxSecurities=${options.maxSecurities}`);\r\n }\r\n if (options.maxFields !== undefined) {\r\n parts.push(`maxFields=${options.maxFields}`);\r\n }\r\n if (options.maxRows !== undefined) {\r\n parts.push(`maxRows=${options.maxRows}`);\r\n }\r\n return parts.length === 0 ? \"default request limits\" : parts.join(\", \");\r\n}\r\n","import type { BloombergToolName } from \"./options\";\r\n\r\ninterface LimitResult {\r\n readonly rowCount: number | null;\r\n readonly truncated: boolean;\r\n readonly value: unknown;\r\n}\r\n\r\nexport interface ToolEnvelope {\r\n readonly tool: BloombergToolName;\r\n readonly rowCount: number | null;\r\n readonly truncated: boolean;\r\n readonly data: unknown;\r\n}\r\n\r\nexport type ToolContentAndArtifact = [string, ToolEnvelope];\r\n\r\ninterface LimitState {\r\n truncated: boolean;\r\n}\r\n\r\nconst MAX_RESULT_DEPTH = 32;\r\n\r\nfunction isPlainObject(value: object): value is Record<string, unknown> {\r\n const prototype: unknown = Object.getPrototypeOf(value);\r\n return prototype === Object.prototype || prototype === null;\r\n}\r\n\r\nfunction truncateString(value: string, maxStringChars: number, state: LimitState): string {\r\n if (value.length <= maxStringChars) {\r\n return value;\r\n }\r\n state.truncated = true;\r\n return `${value.slice(0, maxStringChars)}…[truncated ${value.length - maxStringChars} chars]`;\r\n}\r\n\r\nfunction limitValue(\r\n value: unknown,\r\n maxRows: number,\r\n maxStringChars: number,\r\n state: LimitState,\r\n depth = 0,\r\n seen: WeakSet<object> = new WeakSet<object>(),\r\n): unknown {\r\n if (typeof value === \"string\") {\r\n return truncateString(value, maxStringChars, state);\r\n }\r\n if (value instanceof Date) {\r\n return value.toISOString();\r\n }\r\n if (depth > MAX_RESULT_DEPTH) {\r\n state.truncated = true;\r\n return \"[Max result depth exceeded]\";\r\n }\r\n if (Array.isArray(value)) {\r\n if (seen.has(value)) {\r\n state.truncated = true;\r\n return \"[Circular]\";\r\n }\r\n seen.add(value);\r\n const capped = value.length > maxRows ? value.slice(0, maxRows) : value;\r\n if (capped.length !== value.length) {\r\n state.truncated = true;\r\n }\r\n return capped.map((item) => limitValue(item, maxRows, maxStringChars, state, depth + 1, seen));\r\n }\r\n if (typeof value === \"object\" && value !== null) {\r\n if (seen.has(value)) {\r\n state.truncated = true;\r\n return \"[Circular]\";\r\n }\r\n if (!isPlainObject(value)) {\r\n return value;\r\n }\r\n seen.add(value);\r\n const output: Record<string, unknown> = {};\r\n for (const [key, entry] of Object.entries(value)) {\r\n output[key] = limitValue(entry, maxRows, maxStringChars, state, depth + 1, seen);\r\n }\r\n return output;\r\n }\r\n return value;\r\n}\r\n\r\nfunction rowCountOf(value: unknown): number | null {\r\n if (Array.isArray(value)) {\r\n return value.length;\r\n }\r\n if (typeof value !== \"object\" || value === null) {\r\n return null;\r\n }\r\n const record = value as Record<string, unknown>;\r\n const rowCount = record.rowCount;\r\n if (typeof rowCount === \"number\" && Number.isInteger(rowCount) && rowCount >= 0) {\r\n return rowCount;\r\n }\r\n const updateCount = record.updateCount;\r\n if (typeof updateCount === \"number\" && Number.isInteger(updateCount) && updateCount >= 0) {\r\n return updateCount;\r\n }\r\n return null;\r\n}\r\n\r\nfunction hasErrorShape(value: unknown): boolean {\r\n if (typeof value !== \"object\" || value === null) {\r\n return false;\r\n }\r\n const record = value as Record<string, unknown>;\r\n return (\r\n record.error !== undefined || record.errors !== undefined || record.securityError !== undefined\r\n );\r\n}\r\n\r\nexport function limitResult(value: unknown, maxRows: number, maxStringChars: number): LimitResult {\r\n const state: LimitState = { truncated: false };\r\n const rowCount = rowCountOf(value);\r\n const limitedValue = limitValue(value, maxRows, maxStringChars, state);\r\n return {\r\n rowCount,\r\n truncated: state.truncated,\r\n value: limitedValue,\r\n };\r\n}\r\n\r\nfunction summarizeEnvelope(envelope: ToolEnvelope): string {\r\n const rowText =\r\n envelope.rowCount === null\r\n ? \"row count unknown\"\r\n : `${envelope.rowCount} row${envelope.rowCount === 1 ? \"\" : \"s\"}`;\r\n const notes: string[] = [];\r\n if (envelope.rowCount === 0) {\r\n notes.push(\"empty result\");\r\n }\r\n if (envelope.truncated) {\r\n notes.push(\"artifact truncated to configured limits\");\r\n }\r\n if (hasErrorShape(envelope.data)) {\r\n notes.push(\"inspect artifact for Bloomberg error details\");\r\n }\r\n const noteText = notes.length === 0 ? \"\" : `; ${notes.join(\"; \")}`;\r\n return `${envelope.tool}: ${rowText}; truncated=${String(envelope.truncated)}${noteText}`;\r\n}\r\n\r\nexport function createToolResult(\r\n tool: BloombergToolName,\r\n value: unknown,\r\n maxRows: number,\r\n maxStringChars: number,\r\n): ToolContentAndArtifact {\r\n const limited = limitResult(value, maxRows, maxStringChars);\r\n const envelope: ToolEnvelope = {\r\n tool,\r\n rowCount: limited.rowCount,\r\n truncated: limited.truncated,\r\n data: limited.value,\r\n };\r\n return [summarizeEnvelope(envelope), envelope];\r\n}\r\n\r\nexport function throwWithToolContext(tool: BloombergToolName, error: unknown): never {\r\n const prefix = `${tool} failed`;\r\n if (error instanceof Error) {\r\n if (!error.message.startsWith(prefix)) {\r\n Object.defineProperty(error, \"message\", {\r\n configurable: true,\r\n value: `${prefix}: ${error.message}`,\r\n });\r\n }\r\n throw error;\r\n }\r\n throw new Error(`${prefix}: ${String(error)}`);\r\n}\r\n","import * as z from \"zod\";\r\n\r\nimport type { NormalizedBloombergToolsOptions } from \"./options\";\r\n\r\nexport interface StringPair {\r\n readonly key: string;\r\n readonly value: string;\r\n}\r\n\r\nexport interface FuturesCandidate {\r\n readonly ticker: string;\r\n readonly year: number;\r\n readonly month: number;\r\n}\r\n\r\nexport type PrimitiveMap = Readonly<Record<string, string | number | boolean>>;\r\n\r\nexport type TickerOperation =\r\n | \"parse_ticker\"\r\n | \"normalize_tickers\"\r\n | \"filter_equity_tickers\"\r\n | \"is_specific_contract\"\r\n | \"validate_generic_ticker\";\r\n\r\nexport interface TickerInput {\r\n readonly operation: TickerOperation;\r\n readonly ticker?: string;\r\n readonly tickers?: readonly string[];\r\n}\r\n\r\nexport type FuturesOperation =\r\n | \"build_futures_ticker\"\r\n | \"generate_candidates\"\r\n | \"contract_index\"\r\n | \"filter_candidates_by_cycle\"\r\n | \"filter_valid_contracts\"\r\n | \"get_futures_months\";\r\n\r\nexport interface FuturesInput {\r\n readonly operation: FuturesOperation;\r\n readonly prefix?: string;\r\n readonly monthCode?: string;\r\n readonly year?: string | number;\r\n readonly asset?: string;\r\n readonly genTicker?: string;\r\n readonly month?: number;\r\n readonly day?: number;\r\n readonly freq?: string;\r\n readonly count?: number;\r\n readonly candidates?: readonly FuturesCandidate[];\r\n readonly cycle?: string;\r\n readonly contracts?: readonly StringPair[];\r\n}\r\n\r\nexport type CdxOperation =\r\n | \"parse_cdx_ticker\"\r\n | \"previous_cdx_series\"\r\n | \"cdx_gen_to_specific\"\r\n | \"cdx_info\"\r\n | \"cdx_pricing\"\r\n | \"cdx_risk\";\r\n\r\nexport interface CdxInput {\r\n readonly operation: CdxOperation;\r\n readonly ticker?: string;\r\n readonly genTicker?: string;\r\n readonly series?: number;\r\n readonly recoveryRate?: number;\r\n}\r\n\r\nexport type CurrencyOperation = \"build_fx_pair\" | \"same_currency\" | \"currencies_needing_conversion\";\r\n\r\nexport interface CurrencyInput {\r\n readonly operation: CurrencyOperation;\r\n readonly fromCcy?: string;\r\n readonly toCcy?: string;\r\n readonly ccy1?: string;\r\n readonly ccy2?: string;\r\n readonly currencies?: readonly string[];\r\n readonly target?: string;\r\n}\r\n\r\nexport type BqlBuilderOperation =\r\n | \"build_preferreds_query\"\r\n | \"build_corporate_bonds_query\"\r\n | \"build_etf_holdings_query\";\r\n\r\nexport interface BqlBuilderInput {\r\n readonly operation: BqlBuilderOperation;\r\n readonly ticker?: string;\r\n readonly equityTicker?: string;\r\n readonly etfTicker?: string;\r\n readonly ccy?: string;\r\n readonly extraFields?: readonly string[];\r\n readonly activeOnly?: boolean;\r\n}\r\n\r\nexport type MarketSessionOperation =\r\n | \"derive_sessions\"\r\n | \"get_market_rule\"\r\n | \"infer_timezone\"\r\n | \"session_times_to_utc\"\r\n | \"default_turnover_dates\"\r\n | \"default_bqr_datetimes\"\r\n | \"get_exchange_override\"\r\n | \"list_exchange_overrides\";\r\n\r\nexport interface MarketSessionInput {\r\n readonly operation: MarketSessionOperation;\r\n readonly dayStart?: string;\r\n readonly dayEnd?: string;\r\n readonly mic?: string;\r\n readonly exchCode?: string;\r\n readonly countryIso?: string;\r\n readonly startTime?: string;\r\n readonly endTime?: string;\r\n readonly exchangeTz?: string;\r\n readonly date?: string;\r\n readonly startDate?: string;\r\n readonly endDate?: string;\r\n readonly startDatetime?: string;\r\n readonly endDatetime?: string;\r\n readonly ticker?: string;\r\n}\r\n\r\nexport interface YasOverridesInput {\r\n readonly settleDt?: string;\r\n readonly yieldType?: number;\r\n readonly spread?: number;\r\n readonly yieldVal?: number;\r\n readonly price?: number;\r\n readonly benchmark?: string;\r\n}\r\n\r\nexport type ConstantsOperation =\r\n | \"parse_date\"\r\n | \"fmt_date\"\r\n | \"get_month_code\"\r\n | \"get_month_name\"\r\n | \"get_futures_months\"\r\n | \"get_dvd_type\"\r\n | \"get_dvd_types\"\r\n | \"get_dvd_cols\"\r\n | \"get_etf_cols\";\r\n\r\nexport interface ConstantsInput {\r\n readonly operation: ConstantsOperation;\r\n readonly dateStr?: string;\r\n readonly year?: number;\r\n readonly month?: number;\r\n readonly day?: number;\r\n readonly fmt?: string;\r\n readonly monthName?: string;\r\n readonly code?: string;\r\n readonly dvdType?: string;\r\n}\r\n\r\nexport type ColumnsOperation =\r\n | \"rename_dividend_columns\"\r\n | \"rename_etf_columns\"\r\n | \"build_earning_header_rename\";\r\n\r\nexport interface ColumnsInput {\r\n readonly operation: ColumnsOperation;\r\n readonly columns?: readonly string[];\r\n readonly headerRow?: readonly StringPair[];\r\n readonly dataColumns?: readonly string[];\r\n}\r\n\r\nexport interface CalculateInput {\r\n readonly operation: \"calculate_level_percentages\";\r\n readonly values: readonly (number | null)[];\r\n readonly levels: readonly (number | null)[];\r\n}\r\n\r\nconst stringPairSchema = z.object({\r\n key: z.string().trim().min(1).describe(\"String pair key.\"),\r\n value: z.string().trim().min(1).describe(\"String pair value.\"),\r\n});\r\n\r\nconst futuresCandidateSchema = z.object({\r\n month: z.number().int().min(1).max(12).describe(\"Contract month number, 1-12.\"),\r\n ticker: z.string().trim().min(1).describe(\"Specific Bloomberg futures ticker.\"),\r\n year: z.number().int().min(1900).describe(\"Contract year.\"),\r\n});\r\n\r\nfunction nonEmptyString(\r\n options: NormalizedBloombergToolsOptions,\r\n description: string,\r\n): z.ZodPipe<z.ZodString, z.ZodString> {\r\n return z\r\n .string()\r\n .trim()\r\n .pipe(z.string().min(1).max(options.maxStringChars).describe(description));\r\n}\r\n\r\nfunction stringArray(\r\n options: NormalizedBloombergToolsOptions,\r\n description: string,\r\n maxItems = options.maxFields,\r\n): z.ZodArray<z.ZodPipe<z.ZodString, z.ZodString>> {\r\n return z.array(nonEmptyString(options, description)).min(1).max(maxItems).describe(description);\r\n}\r\n\r\nfunction optionalString(\r\n options: NormalizedBloombergToolsOptions,\r\n description: string,\r\n): z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodString>> {\r\n return nonEmptyString(options, description).optional();\r\n}\r\nexport function tickerSchema(options: NormalizedBloombergToolsOptions): z.ZodType<TickerInput> {\r\n return z.object({\r\n operation: z\r\n .enum([\r\n \"parse_ticker\",\r\n \"normalize_tickers\",\r\n \"filter_equity_tickers\",\r\n \"is_specific_contract\",\r\n \"validate_generic_ticker\",\r\n ])\r\n .describe(\"Ticker helper operation to run.\"),\r\n ticker: optionalString(\r\n options,\r\n \"One Bloomberg ticker for parse/contract validation operations.\",\r\n ),\r\n tickers: stringArray(\r\n options,\r\n \"Bloomberg tickers to normalize or filter.\",\r\n options.maxSecurities,\r\n ).optional(),\r\n });\r\n}\r\n\r\nexport function futuresSchema(options: NormalizedBloombergToolsOptions): z.ZodType<FuturesInput> {\r\n return z.object({\r\n asset: optionalString(options, \"Bloomberg asset class suffix, for example Comdty.\"),\r\n candidates: z\r\n .array(futuresCandidateSchema)\r\n .min(1)\r\n .max(options.maxFields)\r\n .optional()\r\n .describe(\"Candidate futures contracts.\"),\r\n contracts: z\r\n .array(stringPairSchema)\r\n .min(1)\r\n .max(options.maxFields)\r\n .optional()\r\n .describe(\"Contract pairs for validity filtering.\"),\r\n count: z\r\n .number()\r\n .int()\r\n .positive()\r\n .optional()\r\n .describe(\"Maximum number of futures candidates to generate.\"),\r\n cycle: optionalString(options, \"Futures cycle code to filter candidates by.\"),\r\n day: z.number().int().min(1).max(31).optional().describe(\"Day number for contract filtering.\"),\r\n freq: optionalString(options, \"Futures frequency/cycle hint.\"),\r\n genTicker: optionalString(options, \"Generic Bloomberg futures ticker.\"),\r\n month: z.number().int().min(1).max(12).optional().describe(\"Month number, 1-12.\"),\r\n monthCode: optionalString(options, \"Bloomberg futures month code, for example H.\"),\r\n operation: z\r\n .enum([\r\n \"build_futures_ticker\",\r\n \"generate_candidates\",\r\n \"contract_index\",\r\n \"filter_candidates_by_cycle\",\r\n \"filter_valid_contracts\",\r\n \"get_futures_months\",\r\n ])\r\n .describe(\"Futures helper operation to run.\"),\r\n prefix: optionalString(options, \"Futures ticker root prefix.\"),\r\n year: z\r\n .union([z.string().trim().min(1), z.number().int()])\r\n .optional()\r\n .describe(\"Contract year.\"),\r\n });\r\n}\r\n\r\nexport function cdxSchema(options: NormalizedBloombergToolsOptions): z.ZodType<CdxInput> {\r\n return z.object({\r\n genTicker: optionalString(options, \"Generic CDX ticker.\"),\r\n operation: z\r\n .enum([\r\n \"parse_cdx_ticker\",\r\n \"previous_cdx_series\",\r\n \"cdx_gen_to_specific\",\r\n \"cdx_info\",\r\n \"cdx_pricing\",\r\n \"cdx_risk\",\r\n ])\r\n .describe(\"CDX helper operation to run.\"),\r\n recoveryRate: z\r\n .number()\r\n .optional()\r\n .describe(\"Optional recovery rate override for pricing/risk lookups.\"),\r\n series: z.number().int().positive().optional().describe(\"Specific CDX series number.\"),\r\n ticker: optionalString(options, \"CDX ticker.\"),\r\n });\r\n}\r\n\r\nexport function currencySchema(options: NormalizedBloombergToolsOptions): z.ZodType<CurrencyInput> {\r\n return z.object({\r\n ccy1: optionalString(options, \"First ISO currency code.\"),\r\n ccy2: optionalString(options, \"Second ISO currency code.\"),\r\n currencies: stringArray(options, \"ISO currency codes.\").optional(),\r\n fromCcy: optionalString(options, \"Source ISO currency code.\"),\r\n operation: z\r\n .enum([\"build_fx_pair\", \"same_currency\", \"currencies_needing_conversion\"])\r\n .describe(\"Currency helper operation to run.\"),\r\n target: optionalString(options, \"Target ISO currency code.\"),\r\n toCcy: optionalString(options, \"Destination ISO currency code.\"),\r\n });\r\n}\r\n\r\nexport function bqlBuilderSchema(\r\n options: NormalizedBloombergToolsOptions,\r\n): z.ZodType<BqlBuilderInput> {\r\n return z.object({\r\n activeOnly: z.boolean().optional().describe(\"Restrict corporate bond query to active bonds.\"),\r\n ccy: optionalString(options, \"Currency filter for corporate bond query.\"),\r\n equityTicker: optionalString(options, \"Equity ticker for preferreds query.\"),\r\n etfTicker: optionalString(options, \"ETF ticker for holdings query.\"),\r\n extraFields: stringArray(options, \"Extra BQL fields to include.\").optional(),\r\n operation: z\r\n .enum([\"build_preferreds_query\", \"build_corporate_bonds_query\", \"build_etf_holdings_query\"])\r\n .describe(\"BQL builder operation to run.\"),\r\n ticker: optionalString(options, \"Ticker for corporate bond query.\"),\r\n });\r\n}\r\n\r\nexport function marketSessionSchema(\r\n options: NormalizedBloombergToolsOptions,\r\n): z.ZodType<MarketSessionInput> {\r\n return z.object({\r\n countryIso: optionalString(options, \"ISO country code for timezone inference.\"),\r\n date: optionalString(options, \"Date for UTC session conversion, YYYY-MM-DD or YYYYMMDD.\"),\r\n dayEnd: optionalString(options, \"Exchange day end time, for example 16:00.\"),\r\n dayStart: optionalString(options, \"Exchange day start time, for example 09:30.\"),\r\n endDate: optionalString(options, \"Optional end date.\"),\r\n endDatetime: optionalString(options, \"Optional end datetime.\"),\r\n endTime: optionalString(options, \"Session end time, for example 16:00.\"),\r\n exchCode: optionalString(options, \"Bloomberg exchange code.\"),\r\n exchangeTz: optionalString(options, \"IANA exchange timezone.\"),\r\n mic: optionalString(options, \"Market Identifier Code.\"),\r\n operation: z\r\n .enum([\r\n \"derive_sessions\",\r\n \"get_market_rule\",\r\n \"infer_timezone\",\r\n \"session_times_to_utc\",\r\n \"default_turnover_dates\",\r\n \"default_bqr_datetimes\",\r\n \"get_exchange_override\",\r\n \"list_exchange_overrides\",\r\n ])\r\n .describe(\"Market session helper operation to run.\"),\r\n startDate: optionalString(options, \"Optional start date.\"),\r\n startDatetime: optionalString(options, \"Optional start datetime.\"),\r\n startTime: optionalString(options, \"Session start time, for example 09:30.\"),\r\n ticker: optionalString(options, \"Ticker for exchange override lookup.\"),\r\n });\r\n}\r\n\r\nexport function yasOverridesSchema(\r\n options: NormalizedBloombergToolsOptions,\r\n): z.ZodType<YasOverridesInput> {\r\n return z.object({\r\n benchmark: optionalString(options, \"Optional YAS benchmark.\"),\r\n price: z.number().optional().describe(\"YAS price override.\"),\r\n settleDt: optionalString(options, \"YAS settlement date.\"),\r\n spread: z.number().optional().describe(\"YAS spread override.\"),\r\n yieldType: z.number().int().optional().describe(\"YAS yield type override.\"),\r\n yieldVal: z.number().optional().describe(\"YAS yield value override.\"),\r\n });\r\n}\r\n\r\nexport function constantsSchema(\r\n options: NormalizedBloombergToolsOptions,\r\n): z.ZodType<ConstantsInput> {\r\n return z.object({\r\n code: optionalString(options, \"Month code.\"),\r\n dateStr: optionalString(options, \"Date string to parse.\"),\r\n day: z.number().int().min(1).max(31).optional().describe(\"Day number.\"),\r\n dvdType: optionalString(options, \"Dividend type code or label.\"),\r\n fmt: optionalString(options, \"Date output format.\"),\r\n month: z.number().int().min(1).max(12).optional().describe(\"Month number.\"),\r\n monthName: optionalString(options, \"Month name.\"),\r\n operation: z\r\n .enum([\r\n \"parse_date\",\r\n \"fmt_date\",\r\n \"get_month_code\",\r\n \"get_month_name\",\r\n \"get_futures_months\",\r\n \"get_dvd_type\",\r\n \"get_dvd_types\",\r\n \"get_dvd_cols\",\r\n \"get_etf_cols\",\r\n ])\r\n .describe(\"Constants helper operation to run.\"),\r\n year: z.number().int().min(1).optional().describe(\"Year number.\"),\r\n });\r\n}\r\n\r\nexport function columnsSchema(options: NormalizedBloombergToolsOptions): z.ZodType<ColumnsInput> {\r\n return z.object({\r\n columns: stringArray(options, \"Column names to rename.\").optional(),\r\n dataColumns: stringArray(options, \"Earnings data column names.\").optional(),\r\n headerRow: z\r\n .array(stringPairSchema)\r\n .min(1)\r\n .max(options.maxFields)\r\n .optional()\r\n .describe(\"Earnings header row key/value pairs.\"),\r\n operation: z\r\n .enum([\"rename_dividend_columns\", \"rename_etf_columns\", \"build_earning_header_rename\"])\r\n .describe(\"Column helper operation to run.\"),\r\n });\r\n}\r\n\r\nexport function calculateSchema(\r\n options: NormalizedBloombergToolsOptions,\r\n): z.ZodType<CalculateInput> {\r\n return z.object({\r\n levels: z\r\n .array(z.number().nullable())\r\n .min(1)\r\n .max(options.maxFields)\r\n .describe(\"Reference level values.\"),\r\n operation: z\r\n .literal(\"calculate_level_percentages\")\r\n .describe(\"Numeric helper operation to run.\"),\r\n values: z\r\n .array(z.number().nullable())\r\n .min(1)\r\n .max(options.maxFields)\r\n .describe(\"Observed values.\"),\r\n });\r\n}\r\n","import { tool } from \"@langchain/core/tools\";\r\n\r\nimport { CDX_INFO_FIELDS, CDX_PRICING_FIELDS, CDX_RISK_FIELDS } from \"./cdx-fields\";\r\nimport { createCoreResolver, type CoreResolver } from \"./core-loader\";\r\nimport {\r\n EXT_BQL_BUILDER_DESCRIPTION,\r\n EXT_CALCULATE_DESCRIPTION,\r\n EXT_CDX_DESCRIPTION,\r\n EXT_COLUMNS_DESCRIPTION,\r\n EXT_CONSTANTS_DESCRIPTION,\r\n EXT_CURRENCY_DESCRIPTION,\r\n EXT_FUTURES_DESCRIPTION,\r\n EXT_MARKET_SESSION_DESCRIPTION,\r\n EXT_TICKER_DESCRIPTION,\r\n EXT_YAS_OVERRIDES_DESCRIPTION,\r\n} from \"./descriptions\";\r\nimport type { BloombergToolName, BloombergToolsOptions } from \"./options\";\r\nimport { isToolDisabled } from \"./options\";\r\nimport type { BloombergTool } from \"./tools\";\r\nimport {\r\n createToolResult,\r\n throwWithToolContext,\r\n type ToolContentAndArtifact,\r\n} from \"./result-limits\";\r\nimport {\r\n bqlBuilderSchema,\r\n calculateSchema,\r\n cdxSchema,\r\n columnsSchema,\r\n constantsSchema,\r\n currencySchema,\r\n futuresSchema,\r\n marketSessionSchema,\r\n tickerSchema,\r\n yasOverridesSchema,\r\n type BqlBuilderInput,\r\n type CalculateInput,\r\n type CdxInput,\r\n type ColumnsInput,\r\n type ConstantsInput,\r\n type CurrencyInput,\r\n type FuturesInput,\r\n type MarketSessionInput,\r\n type PrimitiveMap,\r\n type TickerInput,\r\n type YasOverridesInput,\r\n} from \"./ext-schemas\";\r\n\r\nfunction asRecord(value: object): Record<string, unknown> {\r\n return value as unknown as Record<string, unknown>;\r\n}\r\n\r\nfunction requireString(\r\n toolName: BloombergToolName,\r\n input: Record<string, unknown>,\r\n field: string,\r\n): string {\r\n const value = input[field];\r\n if (typeof value !== \"string\" || value.trim().length === 0) {\r\n throw new TypeError(`${toolName}: ${field} is required and must be a non-empty string`);\r\n }\r\n return value.trim();\r\n}\r\n\r\nfunction requireNumber(\r\n toolName: BloombergToolName,\r\n input: Record<string, unknown>,\r\n field: string,\r\n): number {\r\n const value = input[field];\r\n if (typeof value !== \"number\" || !Number.isFinite(value)) {\r\n throw new TypeError(`${toolName}: ${field} is required and must be a finite number`);\r\n }\r\n return value;\r\n}\r\n\r\nfunction requireInteger(\r\n toolName: BloombergToolName,\r\n input: Record<string, unknown>,\r\n field: string,\r\n): number {\r\n const value = requireNumber(toolName, input, field);\r\n if (!Number.isInteger(value)) {\r\n throw new TypeError(`${toolName}: ${field} must be an integer`);\r\n }\r\n return value;\r\n}\r\nfunction requireYearString(\r\n toolName: BloombergToolName,\r\n input: Record<string, unknown>,\r\n field: string,\r\n): string {\r\n const value = input[field];\r\n if (typeof value === \"number\" && Number.isInteger(value)) {\r\n return String(value);\r\n }\r\n if (typeof value === \"string\" && value.trim().length > 0) {\r\n return value.trim();\r\n }\r\n throw new TypeError(`${toolName}: ${field} is required and must be a year string or integer`);\r\n}\r\n\r\nfunction requireStringArray(\r\n toolName: BloombergToolName,\r\n input: Record<string, unknown>,\r\n field: string,\r\n): readonly string[] {\r\n const value = input[field];\r\n if (!Array.isArray(value) || value.length === 0) {\r\n throw new TypeError(`${toolName}: ${field} is required and must be a non-empty string array`);\r\n }\r\n return value.map((entry) => {\r\n if (typeof entry !== \"string\" || entry.trim().length === 0) {\r\n throw new TypeError(`${toolName}: ${field} entries must be non-empty strings`);\r\n }\r\n return entry.trim();\r\n });\r\n}\r\n\r\nfunction resultString(\r\n resolver: CoreResolver,\r\n name: BloombergToolName,\r\n value: unknown,\r\n): ToolContentAndArtifact {\r\n return createToolResult(name, value, resolver.options.maxRows, resolver.options.maxStringChars);\r\n}\r\n\r\nfunction recoveryOverrides(recoveryRate: number | undefined): PrimitiveMap | undefined {\r\n return recoveryRate === undefined ? undefined : { CDS_RR: recoveryRate };\r\n}\r\n\r\ninterface ExtToolDefinition {\r\n readonly create: (resolver: CoreResolver) => BloombergTool;\r\n readonly name: BloombergToolName;\r\n}\r\n\r\nconst EXT_TOOL_DEFINITIONS: readonly ExtToolDefinition[] = Object.freeze([\r\n { create: extTickerWithResolver, name: \"xbbg_ext_ticker\" },\r\n { create: extFuturesWithResolver, name: \"xbbg_ext_futures\" },\r\n { create: extCdxWithResolver, name: \"xbbg_ext_cdx\" },\r\n { create: extCurrencyWithResolver, name: \"xbbg_ext_currency\" },\r\n { create: extBqlBuilderWithResolver, name: \"xbbg_ext_bql_builder\" },\r\n { create: extMarketSessionWithResolver, name: \"xbbg_ext_market_session\" },\r\n { create: extYasOverridesWithResolver, name: \"xbbg_ext_yas_overrides\" },\r\n { create: extConstantsWithResolver, name: \"xbbg_ext_constants\" },\r\n { create: extColumnsWithResolver, name: \"xbbg_ext_columns\" },\r\n { create: extCalculateWithResolver, name: \"xbbg_ext_calculate\" },\r\n]);\r\n\r\nexport const BLOOMBERG_EXT_TOOL_NAMES = Object.freeze(\r\n EXT_TOOL_DEFINITIONS.map((definition) => definition.name),\r\n);\r\n\r\nfunction extTickerWithResolver(resolver: CoreResolver): BloombergTool {\r\n const name = \"xbbg_ext_ticker\" satisfies BloombergToolName;\r\n return tool(\r\n async (input: TickerInput): Promise<ToolContentAndArtifact> => {\r\n try {\r\n const core = await resolver.getCore();\r\n const args = asRecord(input);\r\n switch (input.operation) {\r\n case \"parse_ticker\":\r\n return resultString(\r\n resolver,\r\n name,\r\n core.ext.parseTicker(requireString(name, args, \"ticker\")),\r\n );\r\n case \"normalize_tickers\":\r\n return resultString(\r\n resolver,\r\n name,\r\n core.ext.normalizeTickers(requireStringArray(name, args, \"tickers\")),\r\n );\r\n case \"filter_equity_tickers\":\r\n return resultString(\r\n resolver,\r\n name,\r\n core.ext.filterEquityTickers(requireStringArray(name, args, \"tickers\")),\r\n );\r\n case \"is_specific_contract\":\r\n return resultString(\r\n resolver,\r\n name,\r\n core.ext.isSpecificContract(requireString(name, args, \"ticker\")),\r\n );\r\n case \"validate_generic_ticker\": {\r\n const ticker = requireString(name, args, \"ticker\");\r\n core.ext.validateGenericTicker(ticker);\r\n return resultString(resolver, name, { ticker, valid: true });\r\n }\r\n }\r\n } catch (error) {\r\n throwWithToolContext(name, error);\r\n }\r\n },\r\n {\r\n responseFormat: \"content_and_artifact\",\r\n description: EXT_TICKER_DESCRIPTION,\r\n name,\r\n schema: tickerSchema(resolver.options),\r\n },\r\n );\r\n}\r\n\r\nfunction extFuturesWithResolver(resolver: CoreResolver): BloombergTool {\r\n const name = \"xbbg_ext_futures\" satisfies BloombergToolName;\r\n return tool(\r\n async (input: FuturesInput): Promise<ToolContentAndArtifact> => {\r\n try {\r\n const core = await resolver.getCore();\r\n const args = asRecord(input);\r\n switch (input.operation) {\r\n case \"build_futures_ticker\":\r\n return resultString(\r\n resolver,\r\n name,\r\n core.ext.buildFuturesTicker(\r\n requireString(name, args, \"prefix\"),\r\n requireString(name, args, \"monthCode\"),\r\n requireYearString(name, args, \"year\"),\r\n requireString(name, args, \"asset\"),\r\n ),\r\n );\r\n case \"generate_candidates\":\r\n return resultString(\r\n resolver,\r\n name,\r\n core.ext.generateFuturesCandidates(\r\n requireString(name, args, \"genTicker\"),\r\n requireInteger(name, args, \"year\"),\r\n requireInteger(name, args, \"month\"),\r\n requireInteger(name, args, \"day\"),\r\n input.freq,\r\n input.count,\r\n ),\r\n );\r\n case \"contract_index\":\r\n return resultString(\r\n resolver,\r\n name,\r\n core.ext.contractIndex(requireString(name, args, \"genTicker\")),\r\n );\r\n case \"filter_candidates_by_cycle\":\r\n if (input.candidates === undefined) {\r\n throw new TypeError(`${name}: candidates is required`);\r\n }\r\n return resultString(\r\n resolver,\r\n name,\r\n core.ext.filterCandidatesByCycle(\r\n input.candidates,\r\n requireString(name, args, \"cycle\"),\r\n ),\r\n );\r\n case \"filter_valid_contracts\":\r\n if (input.contracts === undefined) {\r\n throw new TypeError(`${name}: contracts is required`);\r\n }\r\n return resultString(\r\n resolver,\r\n name,\r\n core.ext.filterValidContracts(\r\n input.contracts,\r\n requireInteger(name, args, \"year\"),\r\n requireInteger(name, args, \"month\"),\r\n requireInteger(name, args, \"day\"),\r\n ),\r\n );\r\n case \"get_futures_months\":\r\n return resultString(resolver, name, core.ext.getFuturesMonths());\r\n }\r\n } catch (error) {\r\n throwWithToolContext(name, error);\r\n }\r\n },\r\n {\r\n responseFormat: \"content_and_artifact\",\r\n description: EXT_FUTURES_DESCRIPTION,\r\n name,\r\n schema: futuresSchema(resolver.options),\r\n },\r\n );\r\n}\r\n\r\nfunction extCdxWithResolver(resolver: CoreResolver): BloombergTool {\r\n const name = \"xbbg_ext_cdx\" satisfies BloombergToolName;\r\n return tool(\r\n async (input: CdxInput): Promise<ToolContentAndArtifact> => {\r\n try {\r\n const args = asRecord(input);\r\n if (\r\n input.operation === \"cdx_info\" ||\r\n input.operation === \"cdx_pricing\" ||\r\n input.operation === \"cdx_risk\"\r\n ) {\r\n const engine = await resolver.getEngine();\r\n const ticker = requireString(name, args, \"ticker\");\r\n const fields =\r\n input.operation === \"cdx_info\"\r\n ? CDX_INFO_FIELDS\r\n : input.operation === \"cdx_pricing\"\r\n ? CDX_PRICING_FIELDS\r\n : CDX_RISK_FIELDS;\r\n const result = await engine.bdp([ticker], fields, {\r\n backend: \"json\",\r\n overrides: recoveryOverrides(input.recoveryRate),\r\n });\r\n return resultString(resolver, name, result);\r\n }\r\n const core = await resolver.getCore();\r\n switch (input.operation) {\r\n case \"parse_cdx_ticker\":\r\n return resultString(\r\n resolver,\r\n name,\r\n core.ext.parseCdxTicker(requireString(name, args, \"ticker\")),\r\n );\r\n case \"previous_cdx_series\":\r\n return resultString(\r\n resolver,\r\n name,\r\n core.ext.previousCdxSeries(requireString(name, args, \"ticker\")),\r\n );\r\n case \"cdx_gen_to_specific\":\r\n return resultString(\r\n resolver,\r\n name,\r\n core.ext.cdxGenToSpecific(\r\n requireString(name, args, \"genTicker\"),\r\n requireInteger(name, args, \"series\"),\r\n ),\r\n );\r\n }\r\n } catch (error) {\r\n throwWithToolContext(name, error);\r\n }\r\n },\r\n {\r\n responseFormat: \"content_and_artifact\",\r\n description: EXT_CDX_DESCRIPTION,\r\n name,\r\n schema: cdxSchema(resolver.options),\r\n },\r\n );\r\n}\r\n\r\nfunction extCurrencyWithResolver(resolver: CoreResolver): BloombergTool {\r\n const name = \"xbbg_ext_currency\" satisfies BloombergToolName;\r\n return tool(\r\n async (input: CurrencyInput): Promise<ToolContentAndArtifact> => {\r\n try {\r\n const core = await resolver.getCore();\r\n const args = asRecord(input);\r\n switch (input.operation) {\r\n case \"build_fx_pair\":\r\n return resultString(\r\n resolver,\r\n name,\r\n core.ext.buildFxPair(\r\n requireString(name, args, \"fromCcy\"),\r\n requireString(name, args, \"toCcy\"),\r\n ),\r\n );\r\n case \"same_currency\":\r\n return resultString(\r\n resolver,\r\n name,\r\n core.ext.sameCurrency(\r\n requireString(name, args, \"ccy1\"),\r\n requireString(name, args, \"ccy2\"),\r\n ),\r\n );\r\n case \"currencies_needing_conversion\":\r\n return resultString(\r\n resolver,\r\n name,\r\n core.ext.currenciesNeedingConversion(\r\n requireStringArray(name, args, \"currencies\"),\r\n requireString(name, args, \"target\"),\r\n ),\r\n );\r\n }\r\n } catch (error) {\r\n throwWithToolContext(name, error);\r\n }\r\n },\r\n {\r\n responseFormat: \"content_and_artifact\",\r\n description: EXT_CURRENCY_DESCRIPTION,\r\n name,\r\n schema: currencySchema(resolver.options),\r\n },\r\n );\r\n}\r\n\r\nfunction extBqlBuilderWithResolver(resolver: CoreResolver): BloombergTool {\r\n const name = \"xbbg_ext_bql_builder\" satisfies BloombergToolName;\r\n return tool(\r\n async (input: BqlBuilderInput): Promise<ToolContentAndArtifact> => {\r\n try {\r\n const core = await resolver.getCore();\r\n const args = asRecord(input);\r\n switch (input.operation) {\r\n case \"build_preferreds_query\":\r\n return resultString(\r\n resolver,\r\n name,\r\n core.ext.buildPreferredsQuery(\r\n requireString(name, args, \"equityTicker\"),\r\n input.extraFields,\r\n ),\r\n );\r\n case \"build_corporate_bonds_query\":\r\n return resultString(\r\n resolver,\r\n name,\r\n core.ext.buildCorporateBondsQuery(\r\n requireString(name, args, \"ticker\"),\r\n input.ccy,\r\n input.extraFields,\r\n input.activeOnly,\r\n ),\r\n );\r\n case \"build_etf_holdings_query\":\r\n return resultString(\r\n resolver,\r\n name,\r\n core.ext.buildEtfHoldingsQuery(\r\n requireString(name, args, \"etfTicker\"),\r\n input.extraFields,\r\n ),\r\n );\r\n }\r\n } catch (error) {\r\n throwWithToolContext(name, error);\r\n }\r\n },\r\n {\r\n responseFormat: \"content_and_artifact\",\r\n description: EXT_BQL_BUILDER_DESCRIPTION,\r\n name,\r\n schema: bqlBuilderSchema(resolver.options),\r\n },\r\n );\r\n}\r\n\r\nfunction extMarketSessionWithResolver(resolver: CoreResolver): BloombergTool {\r\n const name = \"xbbg_ext_market_session\" satisfies BloombergToolName;\r\n return tool(\r\n async (input: MarketSessionInput): Promise<ToolContentAndArtifact> => {\r\n try {\r\n const core = await resolver.getCore();\r\n const args = asRecord(input);\r\n switch (input.operation) {\r\n case \"derive_sessions\":\r\n return resultString(\r\n resolver,\r\n name,\r\n core.ext.deriveSessions(\r\n requireString(name, args, \"dayStart\"),\r\n requireString(name, args, \"dayEnd\"),\r\n input.mic,\r\n input.exchCode,\r\n ),\r\n );\r\n case \"get_market_rule\":\r\n return resultString(resolver, name, core.ext.getMarketRule(input.mic, input.exchCode));\r\n case \"infer_timezone\":\r\n return resultString(\r\n resolver,\r\n name,\r\n core.ext.inferTimezone(requireString(name, args, \"countryIso\")),\r\n );\r\n case \"session_times_to_utc\":\r\n return resultString(\r\n resolver,\r\n name,\r\n core.ext.sessionTimesToUtc(\r\n requireString(name, args, \"startTime\"),\r\n requireString(name, args, \"endTime\"),\r\n requireString(name, args, \"exchangeTz\"),\r\n requireString(name, args, \"date\"),\r\n ),\r\n );\r\n case \"default_turnover_dates\":\r\n return resultString(\r\n resolver,\r\n name,\r\n core.ext.defaultTurnoverDates(input.startDate, input.endDate),\r\n );\r\n case \"default_bqr_datetimes\":\r\n return resultString(\r\n resolver,\r\n name,\r\n core.ext.defaultBqrDatetimes(input.startDatetime, input.endDatetime),\r\n );\r\n case \"get_exchange_override\":\r\n return resultString(\r\n resolver,\r\n name,\r\n core.ext.getExchangeOverride(requireString(name, args, \"ticker\")),\r\n );\r\n case \"list_exchange_overrides\":\r\n return resultString(resolver, name, core.ext.listExchangeOverrides());\r\n }\r\n } catch (error) {\r\n throwWithToolContext(name, error);\r\n }\r\n },\r\n {\r\n responseFormat: \"content_and_artifact\",\r\n description: EXT_MARKET_SESSION_DESCRIPTION,\r\n name,\r\n schema: marketSessionSchema(resolver.options),\r\n },\r\n );\r\n}\r\n\r\nfunction extYasOverridesWithResolver(resolver: CoreResolver): BloombergTool {\r\n const name = \"xbbg_ext_yas_overrides\" satisfies BloombergToolName;\r\n return tool(\r\n async (input: YasOverridesInput): Promise<ToolContentAndArtifact> => {\r\n try {\r\n const core = await resolver.getCore();\r\n return resultString(\r\n resolver,\r\n name,\r\n core.ext.buildYasOverrides(\r\n input.settleDt,\r\n input.yieldType,\r\n input.spread,\r\n input.yieldVal,\r\n input.price,\r\n input.benchmark,\r\n ),\r\n );\r\n } catch (error) {\r\n throwWithToolContext(name, error);\r\n }\r\n },\r\n {\r\n responseFormat: \"content_and_artifact\",\r\n description: EXT_YAS_OVERRIDES_DESCRIPTION,\r\n name,\r\n schema: yasOverridesSchema(resolver.options),\r\n },\r\n );\r\n}\r\n\r\nfunction extConstantsWithResolver(resolver: CoreResolver): BloombergTool {\r\n const name = \"xbbg_ext_constants\" satisfies BloombergToolName;\r\n return tool(\r\n async (input: ConstantsInput): Promise<ToolContentAndArtifact> => {\r\n try {\r\n const core = await resolver.getCore();\r\n const args = asRecord(input);\r\n switch (input.operation) {\r\n case \"parse_date\":\r\n return resultString(\r\n resolver,\r\n name,\r\n core.ext.parseDate(requireString(name, args, \"dateStr\")),\r\n );\r\n case \"fmt_date\":\r\n return resultString(\r\n resolver,\r\n name,\r\n core.ext.fmtDate(\r\n requireInteger(name, args, \"year\"),\r\n requireInteger(name, args, \"month\"),\r\n requireInteger(name, args, \"day\"),\r\n input.fmt,\r\n ),\r\n );\r\n case \"get_month_code\":\r\n return resultString(\r\n resolver,\r\n name,\r\n core.ext.getMonthCode(requireString(name, args, \"monthName\")),\r\n );\r\n case \"get_month_name\":\r\n return resultString(\r\n resolver,\r\n name,\r\n core.ext.getMonthName(requireString(name, args, \"code\")),\r\n );\r\n case \"get_futures_months\":\r\n return resultString(resolver, name, core.ext.getFuturesMonths());\r\n case \"get_dvd_type\":\r\n return resultString(\r\n resolver,\r\n name,\r\n core.ext.getDvdType(requireString(name, args, \"dvdType\")),\r\n );\r\n case \"get_dvd_types\":\r\n return resultString(resolver, name, core.ext.getDvdTypes());\r\n case \"get_dvd_cols\":\r\n return resultString(resolver, name, core.ext.getDvdCols());\r\n case \"get_etf_cols\":\r\n return resultString(resolver, name, core.ext.getEtfCols());\r\n }\r\n } catch (error) {\r\n throwWithToolContext(name, error);\r\n }\r\n },\r\n {\r\n responseFormat: \"content_and_artifact\",\r\n description: EXT_CONSTANTS_DESCRIPTION,\r\n name,\r\n schema: constantsSchema(resolver.options),\r\n },\r\n );\r\n}\r\n\r\nfunction extColumnsWithResolver(resolver: CoreResolver): BloombergTool {\r\n const name = \"xbbg_ext_columns\" satisfies BloombergToolName;\r\n return tool(\r\n async (input: ColumnsInput): Promise<ToolContentAndArtifact> => {\r\n try {\r\n const core = await resolver.getCore();\r\n const args = asRecord(input);\r\n switch (input.operation) {\r\n case \"rename_dividend_columns\":\r\n return resultString(\r\n resolver,\r\n name,\r\n core.ext.renameDividendColumns(requireStringArray(name, args, \"columns\")),\r\n );\r\n case \"rename_etf_columns\":\r\n return resultString(\r\n resolver,\r\n name,\r\n core.ext.renameEtfColumns(requireStringArray(name, args, \"columns\")),\r\n );\r\n case \"build_earning_header_rename\":\r\n if (input.headerRow === undefined) {\r\n throw new TypeError(`${name}: headerRow is required`);\r\n }\r\n return resultString(\r\n resolver,\r\n name,\r\n core.ext.buildEarningHeaderRename(\r\n input.headerRow,\r\n requireStringArray(name, args, \"dataColumns\"),\r\n ),\r\n );\r\n }\r\n } catch (error) {\r\n throwWithToolContext(name, error);\r\n }\r\n },\r\n {\r\n responseFormat: \"content_and_artifact\",\r\n description: EXT_COLUMNS_DESCRIPTION,\r\n name,\r\n schema: columnsSchema(resolver.options),\r\n },\r\n );\r\n}\r\n\r\nfunction extCalculateWithResolver(resolver: CoreResolver): BloombergTool {\r\n const name = \"xbbg_ext_calculate\" satisfies BloombergToolName;\r\n return tool(\r\n async (input: CalculateInput): Promise<ToolContentAndArtifact> => {\r\n try {\r\n if (input.values.length !== input.levels.length) {\r\n throw new TypeError(`${name}: values and levels must have the same length`);\r\n }\r\n const core = await resolver.getCore();\r\n return resultString(\r\n resolver,\r\n name,\r\n core.ext.calculateLevelPercentages(input.values, input.levels),\r\n );\r\n } catch (error) {\r\n throwWithToolContext(name, error);\r\n }\r\n },\r\n {\r\n responseFormat: \"content_and_artifact\",\r\n description: EXT_CALCULATE_DESCRIPTION,\r\n name,\r\n schema: calculateSchema(resolver.options),\r\n },\r\n );\r\n}\r\n\r\nexport function createExtTickerTool(options: BloombergToolsOptions = {}): BloombergTool {\r\n return extTickerWithResolver(createCoreResolver(options));\r\n}\r\n\r\nexport function createExtFuturesTool(options: BloombergToolsOptions = {}): BloombergTool {\r\n return extFuturesWithResolver(createCoreResolver(options));\r\n}\r\n\r\nexport function createExtCdxTool(options: BloombergToolsOptions = {}): BloombergTool {\r\n return extCdxWithResolver(createCoreResolver(options));\r\n}\r\n\r\nexport function createExtCurrencyTool(options: BloombergToolsOptions = {}): BloombergTool {\r\n return extCurrencyWithResolver(createCoreResolver(options));\r\n}\r\n\r\nexport function createExtBqlBuilderTool(options: BloombergToolsOptions = {}): BloombergTool {\r\n return extBqlBuilderWithResolver(createCoreResolver(options));\r\n}\r\n\r\nexport function createExtMarketSessionTool(options: BloombergToolsOptions = {}): BloombergTool {\r\n return extMarketSessionWithResolver(createCoreResolver(options));\r\n}\r\n\r\nexport function createExtYasOverridesTool(options: BloombergToolsOptions = {}): BloombergTool {\r\n return extYasOverridesWithResolver(createCoreResolver(options));\r\n}\r\n\r\nexport function createExtConstantsTool(options: BloombergToolsOptions = {}): BloombergTool {\r\n return extConstantsWithResolver(createCoreResolver(options));\r\n}\r\n\r\nexport function createExtColumnsTool(options: BloombergToolsOptions = {}): BloombergTool {\r\n return extColumnsWithResolver(createCoreResolver(options));\r\n}\r\n\r\nexport function createExtCalculateTool(options: BloombergToolsOptions = {}): BloombergTool {\r\n return extCalculateWithResolver(createCoreResolver(options));\r\n}\r\n\r\nexport function createBloombergExtToolsForResolver(resolver: CoreResolver): BloombergTool[] {\r\n return EXT_TOOL_DEFINITIONS.filter(\r\n (definition) => !isToolDisabled(resolver.options, definition.name),\r\n ).map((definition) => definition.create(resolver));\r\n}\r\n\r\nexport function createBloombergExtTools(options: BloombergToolsOptions = {}): BloombergTool[] {\r\n return createBloombergExtToolsForResolver(createCoreResolver(options));\r\n}\r\n","import * as z from \"zod\";\r\n\r\nimport type { NormalizedBloombergToolsOptions } from \"./options\";\r\n\r\nexport type PrimitiveValue = string | number | boolean;\r\nexport type PrimitiveMap = Record<string, PrimitiveValue>;\r\n\r\nexport const REFERENCE_FORMATS = [\"long\", \"long_typed\", \"long_metadata\"] as const;\r\nexport const HISTORICAL_FORMATS = [\r\n \"long\",\r\n \"long_typed\",\r\n \"long_metadata\",\r\n \"semi_long\",\r\n \"wide\",\r\n] as const;\r\n\r\nexport type ReferenceFormat = (typeof REFERENCE_FORMATS)[number];\r\nexport type HistoricalFormat = (typeof HISTORICAL_FORMATS)[number];\r\n\r\nexport interface ReferenceCallOptions {\r\n readonly overrides?: PrimitiveMap;\r\n readonly kwargs?: PrimitiveMap;\r\n readonly format?: ReferenceFormat;\r\n readonly validateFields?: boolean;\r\n}\r\n\r\nexport interface BdpInput extends ReferenceCallOptions {\r\n readonly securities: readonly string[];\r\n readonly fields: readonly string[];\r\n readonly includeSecurityErrors?: boolean;\r\n}\r\n\r\nexport interface BdsInput extends ReferenceCallOptions {\r\n readonly securities: readonly string[];\r\n readonly field: string;\r\n}\r\n\r\nexport interface BdhInput {\r\n readonly securities: readonly string[];\r\n readonly fields: readonly string[];\r\n readonly start: string;\r\n readonly end: string;\r\n readonly overrides?: PrimitiveMap;\r\n readonly kwargs?: PrimitiveMap;\r\n readonly format?: HistoricalFormat;\r\n readonly validateFields?: boolean;\r\n}\r\n\r\nexport interface BdibInput {\r\n readonly ticker: string;\r\n readonly start: string;\r\n readonly end: string;\r\n readonly interval: number;\r\n readonly eventType?: string;\r\n readonly requestTz?: string;\r\n readonly outputTz?: string;\r\n readonly kwargs?: PrimitiveMap;\r\n}\r\n\r\nexport interface BdtickInput {\r\n readonly ticker: string;\r\n readonly start: string;\r\n readonly end: string;\r\n readonly eventTypes?: readonly string[];\r\n readonly includeConditionCodes?: boolean;\r\n readonly includeExchangeCodes?: boolean;\r\n readonly includeBrokerCodes?: boolean;\r\n readonly includeRpsCodes?: boolean;\r\n readonly includeBicMicCodes?: boolean;\r\n readonly includeNonPlottableEvents?: boolean;\r\n readonly includeBloombergStandardConditionCodes?: boolean;\r\n readonly requestTz?: string;\r\n readonly outputTz?: string;\r\n readonly kwargs?: PrimitiveMap;\r\n}\r\n\r\nexport interface BqlInput {\r\n readonly query: string;\r\n readonly kwargs?: PrimitiveMap;\r\n readonly format?: ReferenceFormat;\r\n}\r\n\r\nexport interface BsrchInput {\r\n readonly searchSpec: string;\r\n readonly overrides?: PrimitiveMap;\r\n readonly kwargs?: PrimitiveMap;\r\n readonly format?: ReferenceFormat;\r\n}\r\n\r\nexport interface BqrInput {\r\n readonly ticker: string;\r\n readonly start: string;\r\n readonly end: string;\r\n readonly eventTypes?: readonly string[];\r\n readonly includeBrokerCodes?: boolean;\r\n}\r\n\r\nexport interface BfldsInput {\r\n readonly fields?: readonly string[];\r\n readonly searchSpec?: string;\r\n readonly kwargs?: PrimitiveMap;\r\n readonly format?: ReferenceFormat;\r\n}\r\n\r\nexport interface BeqsInput {\r\n readonly screen: string;\r\n readonly asof?: string;\r\n readonly screenType?: string;\r\n readonly group?: string;\r\n readonly overrides?: PrimitiveMap;\r\n readonly kwargs?: PrimitiveMap;\r\n readonly format?: ReferenceFormat;\r\n}\r\n\r\nexport interface YasInput {\r\n readonly tickers: readonly string[];\r\n readonly fields: readonly string[];\r\n readonly settleDt?: string;\r\n readonly yieldType?: number;\r\n readonly spread?: number;\r\n readonly yieldVal?: number;\r\n readonly price?: number;\r\n readonly benchmark?: string;\r\n}\r\n\r\nexport interface PreferredsInput {\r\n readonly equityTicker: string;\r\n readonly fields?: readonly string[];\r\n}\r\n\r\nexport interface CorporateBondsInput {\r\n readonly ticker: string;\r\n readonly ccy?: string;\r\n readonly fields?: readonly string[];\r\n readonly activeOnly?: boolean;\r\n}\r\n\r\nexport interface IndexMembersInput {\r\n readonly index: string;\r\n readonly field?: \"INDX_MWEIGHT\" | \"INDX_MEMBERS\" | \"INDX_MEMBERS3\";\r\n readonly asof?: string;\r\n}\r\n\r\nexport interface ResolveIsinsInput {\r\n readonly isins: readonly string[];\r\n}\r\n\r\nexport interface IssuerIsinsInput {\r\n readonly bondIsins: readonly string[];\r\n}\r\n\r\nexport interface EtfHoldingsInput {\r\n readonly etfTicker: string;\r\n readonly fields?: readonly string[];\r\n}\r\n\r\nexport interface StreamSnapshotInput {\r\n readonly tickers: readonly string[];\r\n readonly fields: readonly string[];\r\n readonly maxUpdates: number;\r\n readonly timeoutMs: number;\r\n readonly drain?: boolean;\r\n readonly options?: readonly string[];\r\n readonly conflate?: boolean;\r\n readonly flushThreshold?: number;\r\n readonly overflowPolicy?: string;\r\n readonly streamCapacity?: number;\r\n readonly allFields?: boolean;\r\n}\r\n\r\nexport interface MktbarSnapshotInput {\r\n readonly ticker: string;\r\n readonly fields?: readonly string[];\r\n readonly maxUpdates: number;\r\n readonly timeoutMs: number;\r\n readonly drain?: boolean;\r\n readonly options?: readonly string[];\r\n readonly conflate?: boolean;\r\n readonly flushThreshold?: number;\r\n readonly overflowPolicy?: string;\r\n readonly streamCapacity?: number;\r\n readonly allFields?: boolean;\r\n}\r\n\r\nexport interface DepthSnapshotInput {\r\n readonly ticker: string;\r\n readonly fields?: readonly string[];\r\n readonly maxUpdates: number;\r\n readonly timeoutMs: number;\r\n readonly drain?: boolean;\r\n readonly options?: readonly string[];\r\n readonly conflate?: boolean;\r\n readonly flushThreshold?: number;\r\n readonly overflowPolicy?: string;\r\n readonly streamCapacity?: number;\r\n readonly allFields?: boolean;\r\n}\r\n\r\nconst ISO_DATE_RE = /^\\d{4}-\\d{2}-\\d{2}$/u;\r\nconst BBG_DATE_RE = /^\\d{8}$/u;\r\nconst AMBIGUOUS_DATE_RE = /^\\d{1,2}[-/]\\d{1,2}[-/]\\d{2,4}([T \\D]|$)/u;\r\nconst ISO_DATE_TIME_RE =\r\n /^\\d{4}-\\d{2}-\\d{2}(?:[T ]\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d+)?)?(?:Z|[+-]\\d{2}:?\\d{2})?)?$/u;\r\n\r\nconst primitiveSchema = z.union([\r\n z.string().transform((value) => value.trim()),\r\n z.number(),\r\n z.boolean(),\r\n]);\r\n\r\nfunction dateFromParts(year: string, month: string, day: string): string {\r\n const formatted = `${year}${month}${day}`;\r\n const parsed = new Date(Date.UTC(Number(year), Number(month) - 1, Number(day)));\r\n if (\r\n Number.isNaN(parsed.getTime()) ||\r\n parsed.getUTCFullYear() !== Number(year) ||\r\n parsed.getUTCMonth() + 1 !== Number(month) ||\r\n parsed.getUTCDate() !== Number(day)\r\n ) {\r\n throw new TypeError(`Invalid date ${formatted}; expected a real calendar date like 2024-01-31`);\r\n }\r\n return formatted;\r\n}\r\n\r\nfunction dateToBbg(value: Date | number): string {\r\n const date = value instanceof Date ? value : new Date(value);\r\n if (Number.isNaN(date.getTime())) {\r\n throw new TypeError(\"Invalid date value; expected YYYY-MM-DD, YYYYMMDD, Date, or epoch ms\");\r\n }\r\n const year = String(date.getUTCFullYear()).padStart(4, \"0\");\r\n const month = String(date.getUTCMonth() + 1).padStart(2, \"0\");\r\n const day = String(date.getUTCDate()).padStart(2, \"0\");\r\n return `${year}${month}${day}`;\r\n}\r\n\r\nfunction normalizeDate(value: string | Date | number): string {\r\n if (value instanceof Date || typeof value === \"number\") {\r\n return dateToBbg(value);\r\n }\r\n const text = value.trim();\r\n if (text.length === 0) {\r\n throw new TypeError(\"Date must be non-empty; use YYYY-MM-DD or YYYYMMDD\");\r\n }\r\n if (AMBIGUOUS_DATE_RE.test(text)) {\r\n throw new TypeError(`Ambiguous date ${JSON.stringify(text)}; use YYYY-MM-DD or YYYYMMDD`);\r\n }\r\n if (BBG_DATE_RE.test(text)) {\r\n return dateFromParts(text.slice(0, 4), text.slice(4, 6), text.slice(6, 8));\r\n }\r\n if (ISO_DATE_RE.test(text)) {\r\n return dateFromParts(text.slice(0, 4), text.slice(5, 7), text.slice(8, 10));\r\n }\r\n throw new TypeError(`Invalid date ${JSON.stringify(text)}; use YYYY-MM-DD or YYYYMMDD`);\r\n}\r\n\r\nfunction normalizeDateTime(value: string | Date | number): string {\r\n if (value instanceof Date || typeof value === \"number\") {\r\n const date = value instanceof Date ? value : new Date(value);\r\n if (Number.isNaN(date.getTime())) {\r\n throw new TypeError(\"Invalid datetime value; expected ISO 8601 datetime, Date, or epoch ms\");\r\n }\r\n return date.toISOString();\r\n }\r\n const text = value.trim();\r\n if (text.length === 0) {\r\n throw new TypeError(\"Datetime must be non-empty; use an ISO 8601 datetime\");\r\n }\r\n if (AMBIGUOUS_DATE_RE.test(text)) {\r\n throw new TypeError(`Ambiguous datetime ${JSON.stringify(text)}; use ISO 8601`);\r\n }\r\n if (BBG_DATE_RE.test(text)) {\r\n return `${text.slice(0, 4)}-${text.slice(4, 6)}-${text.slice(6, 8)}T00:00:00`;\r\n }\r\n if (!ISO_DATE_TIME_RE.test(text)) {\r\n throw new TypeError(`Invalid datetime ${JSON.stringify(text)}; use ISO 8601`);\r\n }\r\n return text.replace(\" \", \"T\");\r\n}\r\n\r\nfunction nonEmptyString(\r\n tool: string,\r\n field: string,\r\n maxChars: number,\r\n example: string,\r\n): z.ZodType<string> {\r\n return z\r\n .string()\r\n .transform((value) => value.trim())\r\n .pipe(\r\n z\r\n .string()\r\n .min(1, `${tool}: ${field} must be a non-empty string. Example: ${example}`)\r\n .max(\r\n maxChars,\r\n `${tool}: ${field} is too long; expected at most ${maxChars} characters. Example: ${example}`,\r\n ),\r\n );\r\n}\r\n\r\nfunction stringArray(\r\n tool: string,\r\n field: string,\r\n maxItems: number,\r\n maxChars: number,\r\n example: string,\r\n): z.ZodType<string[]> {\r\n return z\r\n .array(nonEmptyString(tool, field, maxChars, example))\r\n .min(1, `${tool}: ${field} must contain at least one non-empty string. Example: ${example}`)\r\n .max(maxItems, `${tool}: ${field} can contain at most ${maxItems} values`);\r\n}\r\n\r\nfunction primitiveMap(tool: string, field: string): z.ZodType<PrimitiveMap | undefined> {\r\n return z\r\n .record(z.string().min(1), primitiveSchema)\r\n .optional()\r\n .transform((value) => {\r\n if (value === undefined) {\r\n return undefined;\r\n }\r\n const normalized: PrimitiveMap = {};\r\n for (const [key, entry] of Object.entries(value)) {\r\n const normalizedKey = key.trim();\r\n if (normalizedKey.length === 0) {\r\n throw new TypeError(`${tool}: ${field} contains an empty key`);\r\n }\r\n if (typeof entry === \"string\" && entry.length === 0) {\r\n throw new TypeError(`${tool}: ${field}.${normalizedKey} must not be an empty string`);\r\n }\r\n normalized[normalizedKey] = entry;\r\n }\r\n return normalized;\r\n });\r\n}\r\n\r\nfunction dateField(tool: string, field: string): z.ZodType<string> {\r\n return z\r\n .union([z.string(), z.date(), z.number()])\r\n .transform((value) => normalizeDate(value))\r\n .describe(\r\n `${field} date. Use YYYY-MM-DD or Bloomberg-native YYYYMMDD, never ambiguous MM/DD/YYYY.`,\r\n );\r\n}\r\n\r\nfunction dateTimeField(tool: string, field: string): z.ZodType<string> {\r\n return z\r\n .union([z.string(), z.date(), z.number()])\r\n .transform((value) => normalizeDateTime(value))\r\n .describe(`${field} datetime. Use ISO 8601, for example 2024-01-31T09:30:00-05:00.`);\r\n}\r\n\r\nfunction referenceFormat(tool: string): z.ZodType<ReferenceFormat | undefined> {\r\n return z\r\n .enum(REFERENCE_FORMATS, {\r\n error: `${tool}: format must be one of ${REFERENCE_FORMATS.join(\", \")}`,\r\n })\r\n .optional();\r\n}\r\n\r\nfunction historicalFormat(tool: string): z.ZodType<HistoricalFormat | undefined> {\r\n return z\r\n .enum(HISTORICAL_FORMATS, {\r\n error: `${tool}: format must be one of ${HISTORICAL_FORMATS.join(\", \")}`,\r\n })\r\n .optional();\r\n}\r\n\r\nexport function createBdpSchema(options: NormalizedBloombergToolsOptions): z.ZodType<BdpInput> {\r\n const tool = \"xbbg_bdp\";\r\n return z.object({\r\n fields: stringArray(\r\n tool,\r\n \"fields\",\r\n options.maxFields,\r\n options.maxStringChars,\r\n '[\"PX_LAST\"]',\r\n ).describe(\r\n 'Bloomberg field mnemonics to retrieve, for example [\"PX_LAST\", \"NAME\"]. Use xbbg_bflds first if uncertain.',\r\n ),\r\n format: referenceFormat(tool).describe(\r\n \"JSON output shape. Usually omit; use long_typed if downstream needs Bloomberg value types.\",\r\n ),\r\n includeSecurityErrors: z\r\n .boolean()\r\n .optional()\r\n .describe(\"Include Bloomberg security errors in the response when supported.\"),\r\n kwargs: primitiveMap(tool, \"kwargs\").describe(\r\n \"Advanced Bloomberg request kwargs as flat string/number/boolean values only.\",\r\n ),\r\n overrides: primitiveMap(tool, \"overrides\").describe(\r\n \"Bloomberg field overrides as flat string/number/boolean values only.\",\r\n ),\r\n securities: stringArray(\r\n tool,\r\n \"securities\",\r\n options.maxSecurities,\r\n options.maxStringChars,\r\n '[\"AAPL US Equity\"]',\r\n ).describe(\r\n 'Fully qualified Bloomberg securities, for example [\"AAPL US Equity\"]; use /isin/{isin} for ISINs and /cusip/{cusip} for CUSIPs. Do not invent tickers.',\r\n ),\r\n validateFields: z.boolean().optional().describe(\"Override field validation for this request.\"),\r\n });\r\n}\r\n\r\nexport function createBdhSchema(options: NormalizedBloombergToolsOptions): z.ZodType<BdhInput> {\r\n const tool = \"xbbg_bdh\";\r\n return z\r\n .object({\r\n end: dateField(tool, \"end\").describe(\"Required end date. Use YYYY-MM-DD or YYYYMMDD.\"),\r\n fields: stringArray(\r\n tool,\r\n \"fields\",\r\n options.maxFields,\r\n options.maxStringChars,\r\n '[\"PX_LAST\"]',\r\n ).describe('Bloomberg historical field mnemonics, for example [\"PX_LAST\"].'),\r\n format: historicalFormat(tool).describe(\r\n \"Historical JSON output shape. Use wide only when the user asks for a table by date.\",\r\n ),\r\n kwargs: primitiveMap(tool, \"kwargs\").describe(\r\n \"Advanced Bloomberg request kwargs as flat string/number/boolean values only.\",\r\n ),\r\n overrides: primitiveMap(tool, \"overrides\").describe(\r\n \"Bloomberg overrides as flat string/number/boolean values only.\",\r\n ),\r\n securities: stringArray(\r\n tool,\r\n \"securities\",\r\n options.maxSecurities,\r\n options.maxStringChars,\r\n '[\"AAPL US Equity\"]',\r\n ).describe(\r\n 'Fully qualified Bloomberg securities, for example [\"AAPL US Equity\"]; use /isin/{isin} for ISINs and /cusip/{cusip} for CUSIPs.',\r\n ),\r\n start: dateField(tool, \"start\").describe(\"Required start date. Use YYYY-MM-DD or YYYYMMDD.\"),\r\n validateFields: z\r\n .boolean()\r\n .optional()\r\n .describe(\"Override field validation for this request.\"),\r\n })\r\n .superRefine((value, ctx) => {\r\n if (value.start > value.end) {\r\n ctx.addIssue({\r\n code: \"custom\",\r\n message: `${tool}: start must be on or before end. Example: start \"2024-01-01\", end \"2024-01-31\"`,\r\n path: [\"start\"],\r\n });\r\n }\r\n });\r\n}\r\n\r\nexport function createBdsSchema(options: NormalizedBloombergToolsOptions): z.ZodType<BdsInput> {\r\n const tool = \"xbbg_bds\";\r\n return z.object({\r\n field: nonEmptyString(tool, \"field\", options.maxStringChars, \"INDX_MEMBERS\").describe(\r\n \"Exactly one Bloomberg bulk/table field, for example INDX_MEMBERS.\",\r\n ),\r\n format: referenceFormat(tool).describe(\"JSON output shape. Usually omit.\"),\r\n kwargs: primitiveMap(tool, \"kwargs\").describe(\r\n \"Advanced Bloomberg request kwargs as flat string/number/boolean values only.\",\r\n ),\r\n overrides: primitiveMap(tool, \"overrides\").describe(\r\n \"Bloomberg overrides as flat string/number/boolean values only.\",\r\n ),\r\n securities: stringArray(\r\n tool,\r\n \"securities\",\r\n options.maxSecurities,\r\n options.maxStringChars,\r\n '[\"SPX Index\"]',\r\n ).describe(\r\n 'Fully qualified Bloomberg securities, for example [\"SPX Index\"]; use /isin/{isin} for ISINs and /cusip/{cusip} for CUSIPs.',\r\n ),\r\n validateFields: z.boolean().optional().describe(\"Override field validation for this request.\"),\r\n });\r\n}\r\n\r\nexport function createBdibSchema(options: NormalizedBloombergToolsOptions): z.ZodType<BdibInput> {\r\n const tool = \"xbbg_bdib\";\r\n return z.object({\r\n end: dateTimeField(tool, \"end\").describe(\r\n \"Required intraday end datetime. Use ISO 8601 with timezone when possible.\",\r\n ),\r\n eventType: nonEmptyString(tool, \"eventType\", options.maxStringChars, \"TRADE\")\r\n .optional()\r\n .describe(\"Bloomberg event type. Usually TRADE.\"),\r\n interval: z\r\n .number()\r\n .int(`${tool}: interval must be a positive integer number of minutes. Example: 5`)\r\n .positive(`${tool}: interval must be greater than zero. Example: 5`)\r\n .describe(\"Bar interval in minutes. Must be a positive integer.\"),\r\n kwargs: primitiveMap(tool, \"kwargs\").describe(\r\n \"Advanced Bloomberg request kwargs as flat string/number/boolean values only.\",\r\n ),\r\n outputTz: nonEmptyString(tool, \"outputTz\", options.maxStringChars, \"America/New_York\")\r\n .optional()\r\n .describe(\"Optional output timezone, for example America/New_York.\"),\r\n requestTz: nonEmptyString(tool, \"requestTz\", options.maxStringChars, \"America/New_York\")\r\n .optional()\r\n .describe(\"Timezone for naive start/end datetimes, for example America/New_York.\"),\r\n start: dateTimeField(tool, \"start\").describe(\r\n \"Required intraday start datetime. Use ISO 8601 with timezone when possible.\",\r\n ),\r\n ticker: nonEmptyString(tool, \"ticker\", options.maxStringChars, \"AAPL US Equity\").describe(\r\n \"One fully qualified Bloomberg security, for example AAPL US Equity; use /isin/{isin} for ISINs and /cusip/{cusip} for CUSIPs.\",\r\n ),\r\n });\r\n}\r\n\r\nexport function createBdtickSchema(\r\n options: NormalizedBloombergToolsOptions,\r\n): z.ZodType<BdtickInput> {\r\n const tool = \"xbbg_bdtick\";\r\n const includeFlag = z.boolean().optional().describe(\"Optional IntradayTickRequest include flag.\");\r\n return z.object({\r\n end: dateTimeField(tool, \"end\").describe(\r\n \"Required intraday tick end datetime. Use ISO 8601 with timezone when possible.\",\r\n ),\r\n eventTypes: stringArray(\r\n tool,\r\n \"eventTypes\",\r\n options.maxFields,\r\n options.maxStringChars,\r\n '[\"TRADE\"]',\r\n )\r\n .optional()\r\n .describe('Bloomberg tick event types, for example [\"TRADE\"] or [\"BID\", \"ASK\"].'),\r\n includeBicMicCodes: includeFlag,\r\n includeBloombergStandardConditionCodes: includeFlag,\r\n includeBrokerCodes: includeFlag,\r\n includeConditionCodes: includeFlag,\r\n includeExchangeCodes: includeFlag,\r\n includeNonPlottableEvents: includeFlag,\r\n includeRpsCodes: includeFlag,\r\n kwargs: primitiveMap(tool, \"kwargs\").describe(\r\n \"Advanced IntradayTickRequest kwargs as flat string/number/boolean values only.\",\r\n ),\r\n outputTz: nonEmptyString(tool, \"outputTz\", options.maxStringChars, \"America/New_York\")\r\n .optional()\r\n .describe(\"Optional output timezone, for example America/New_York.\"),\r\n requestTz: nonEmptyString(tool, \"requestTz\", options.maxStringChars, \"America/New_York\")\r\n .optional()\r\n .describe(\"Timezone for naive start/end datetimes, for example America/New_York.\"),\r\n start: dateTimeField(tool, \"start\").describe(\r\n \"Required intraday tick start datetime. Use ISO 8601 with timezone when possible.\",\r\n ),\r\n ticker: nonEmptyString(tool, \"ticker\", options.maxStringChars, \"AAPL US Equity\").describe(\r\n \"One fully qualified Bloomberg security, for example AAPL US Equity; use /isin/{isin} for ISINs and /cusip/{cusip} for CUSIPs.\",\r\n ),\r\n });\r\n}\r\n\r\nexport function createBqlSchema(options: NormalizedBloombergToolsOptions): z.ZodType<BqlInput> {\r\n const tool = \"xbbg_bql\";\r\n return z.object({\r\n format: referenceFormat(tool).describe(\"JSON output shape. Usually omit.\"),\r\n kwargs: primitiveMap(tool, \"kwargs\").describe(\r\n \"Advanced Bloomberg request kwargs as flat string/number/boolean values only.\",\r\n ),\r\n query: nonEmptyString(\r\n tool,\r\n \"query\",\r\n options.maxBqlQueryChars,\r\n \"get(px_last) for('AAPL US Equity')\",\r\n ).describe(\r\n \"Complete BQL expression string. Use get(...) for(...) with an explicit bounded universe; prefer BDP/BDH for simple reference or historical requests.\",\r\n ),\r\n });\r\n}\r\n\r\nexport function createBqrSchema(options: NormalizedBloombergToolsOptions): z.ZodType<BqrInput> {\r\n const tool = \"xbbg_bqr\";\r\n return z.object({\r\n end: dateTimeField(tool, \"end\").describe(\r\n \"Required BQR end datetime. Use ISO 8601 with timezone when possible.\",\r\n ),\r\n eventTypes: stringArray(\r\n tool,\r\n \"eventTypes\",\r\n options.maxFields,\r\n options.maxStringChars,\r\n '[\"BID\", \"ASK\"]',\r\n )\r\n .optional()\r\n .describe('BQR event types. Usually [\"BID\", \"ASK\"].'),\r\n includeBrokerCodes: z\r\n .boolean()\r\n .optional()\r\n .describe(\"Include broker/dealer attribution columns. Defaults to true in @xbbg/core.\"),\r\n start: dateTimeField(tool, \"start\").describe(\r\n \"Required BQR start datetime. Use ISO 8601 with timezone when possible.\",\r\n ),\r\n ticker: nonEmptyString(\r\n tool,\r\n \"ticker\",\r\n options.maxStringChars,\r\n \"/isin/US037833FB15@MSG1 Corp\",\r\n ).describe(\r\n \"Fixed-income ticker or identifier with dealer quote source, for example /isin/US037833FB15@MSG1 Corp.\",\r\n ),\r\n });\r\n}\r\n\r\nexport function createBsrchSchema(options: NormalizedBloombergToolsOptions): z.ZodType<BsrchInput> {\r\n const tool = \"xbbg_bsrch\";\r\n return z.object({\r\n format: referenceFormat(tool).describe(\"JSON output shape. Usually omit.\"),\r\n kwargs: primitiveMap(tool, \"kwargs\").describe(\r\n \"Search-grid kwargs as flat string/number/boolean values only.\",\r\n ),\r\n overrides: primitiveMap(tool, \"overrides\").describe(\r\n \"Search-grid overrides as flat string/number/boolean values only.\",\r\n ),\r\n searchSpec: nonEmptyString(\r\n tool,\r\n \"searchSpec\",\r\n options.maxSearchSpecChars,\r\n \"COMDTY:NG\",\r\n ).describe(\r\n \"Bloomberg search/grid domain or saved-search spec. Not for normal security lookup.\",\r\n ),\r\n });\r\n}\r\n\r\nexport function createBfldsSchema(options: NormalizedBloombergToolsOptions): z.ZodType<BfldsInput> {\r\n const tool = \"xbbg_bflds\";\r\n return z\r\n .object({\r\n fields: stringArray(tool, \"fields\", options.maxFields, options.maxStringChars, '[\"PX_LAST\"]')\r\n .optional()\r\n .describe(\r\n 'Specific field mnemonics to inspect, for example [\"PX_LAST\"]. Provide either fields or searchSpec, not both.',\r\n ),\r\n format: referenceFormat(tool).describe(\"JSON output shape. Usually omit.\"),\r\n kwargs: primitiveMap(tool, \"kwargs\").describe(\r\n \"Advanced Bloomberg request kwargs as flat string/number/boolean values only.\",\r\n ),\r\n searchSpec: nonEmptyString(tool, \"searchSpec\", options.maxSearchSpecChars, \"last price\")\r\n .optional()\r\n .describe(\r\n \"Field search text when the field mnemonic is unknown. Provide either searchSpec or fields, not both.\",\r\n ),\r\n })\r\n .superRefine((value, ctx) => {\r\n const hasFields = value.fields !== undefined;\r\n const hasSearchSpec = value.searchSpec !== undefined;\r\n if (hasFields === hasSearchSpec) {\r\n ctx.addIssue({\r\n code: \"custom\",\r\n message: `${tool}: provide exactly one of fields or searchSpec. Example: {\"fields\":[\"PX_LAST\"]}`,\r\n path: [\"fields\"],\r\n });\r\n }\r\n });\r\n}\r\n\r\nexport function createBeqsSchema(options: NormalizedBloombergToolsOptions): z.ZodType<BeqsInput> {\r\n const tool = \"xbbg_beqs\";\r\n return z.object({\r\n asof: dateField(tool, \"asof\").optional().describe(\"Optional as-of date for the screen.\"),\r\n format: referenceFormat(tool).describe(\"JSON output shape. Usually omit.\"),\r\n group: nonEmptyString(tool, \"group\", options.maxStringChars, \"General\")\r\n .optional()\r\n .describe(\"Bloomberg BEQS group. Defaults to General in @xbbg/core.\"),\r\n kwargs: primitiveMap(tool, \"kwargs\").describe(\r\n \"Advanced BEQS request kwargs as flat string/number/boolean values only.\",\r\n ),\r\n overrides: primitiveMap(tool, \"overrides\").describe(\r\n \"BEQS overrides as flat string/number/boolean values only.\",\r\n ),\r\n screen: nonEmptyString(\r\n tool,\r\n \"screen\",\r\n options.maxStringChars,\r\n \"Core Capital Goods Makers\",\r\n ).describe(\"Existing Bloomberg BEQS screen name.\"),\r\n screenType: nonEmptyString(tool, \"screenType\", options.maxStringChars, \"PRIVATE\")\r\n .optional()\r\n .describe(\"Bloomberg BEQS screen type. Defaults to PRIVATE in @xbbg/core.\"),\r\n });\r\n}\r\n\r\nexport function createYasSchema(options: NormalizedBloombergToolsOptions): z.ZodType<YasInput> {\r\n const tool = \"xbbg_yas\";\r\n return z.object({\r\n benchmark: nonEmptyString(tool, \"benchmark\", options.maxStringChars, \"USGG10YR Index\")\r\n .optional()\r\n .describe(\"Optional YAS benchmark.\"),\r\n fields: stringArray(\r\n tool,\r\n \"fields\",\r\n options.maxFields,\r\n options.maxStringChars,\r\n '[\"YAS_BOND_YLD\"]',\r\n ).describe('YAS field mnemonics, for example [\"YAS_BOND_YLD\", \"YAS_MOD_DUR\"].'),\r\n price: z.number().optional().describe(\"Optional YAS price input.\"),\r\n settleDt: dateField(tool, \"settleDt\").optional().describe(\"Optional YAS settlement date.\"),\r\n spread: z.number().optional().describe(\"Optional YAS spread input.\"),\r\n tickers: stringArray(\r\n tool,\r\n \"tickers\",\r\n options.maxSecurities,\r\n options.maxStringChars,\r\n '[\"/isin/US037833FB15 Corp\"]',\r\n ).describe(\r\n 'Fully qualified fixed-income Bloomberg securities, for example [\"/isin/US037833FB15 Corp\"].',\r\n ),\r\n yieldType: z.number().int().optional().describe(\"Optional YAS yield type.\"),\r\n yieldVal: z.number().optional().describe(\"Optional YAS yield value input.\"),\r\n });\r\n}\r\n\r\nexport function createPreferredsSchema(\r\n options: NormalizedBloombergToolsOptions,\r\n): z.ZodType<PreferredsInput> {\r\n const tool = \"xbbg_preferreds\";\r\n return z.object({\r\n equityTicker: nonEmptyString(\r\n tool,\r\n \"equityTicker\",\r\n options.maxStringChars,\r\n \"AAPL US Equity\",\r\n ).describe(\"One fully qualified issuer equity ticker.\"),\r\n fields: stringArray(tool, \"fields\", options.maxFields, options.maxStringChars, '[\"id\"]')\r\n .optional()\r\n .describe(\"Optional fields to include in the preferreds recipe result.\"),\r\n });\r\n}\r\n\r\nexport function createCorporateBondsSchema(\r\n options: NormalizedBloombergToolsOptions,\r\n): z.ZodType<CorporateBondsInput> {\r\n const tool = \"xbbg_corporate_bonds\";\r\n return z.object({\r\n activeOnly: z\r\n .boolean()\r\n .optional()\r\n .describe(\"Restrict to active bonds. Defaults to true in @xbbg/core.\"),\r\n ccy: nonEmptyString(tool, \"ccy\", options.maxStringChars, \"USD\")\r\n .optional()\r\n .describe(\"Optional currency filter.\"),\r\n fields: stringArray(tool, \"fields\", options.maxFields, options.maxStringChars, '[\"id\"]')\r\n .optional()\r\n .describe(\"Optional fields to include in the corporate bond result.\"),\r\n ticker: nonEmptyString(tool, \"ticker\", options.maxStringChars, \"AAPL US Equity\").describe(\r\n \"One fully qualified issuer/company ticker.\",\r\n ),\r\n });\r\n}\r\n\r\nexport function createIndexMembersSchema(\r\n options: NormalizedBloombergToolsOptions,\r\n): z.ZodType<IndexMembersInput> {\r\n const tool = \"xbbg_index_members\";\r\n return z.object({\r\n asof: dateField(tool, \"asof\").optional().describe(\"Optional index membership as-of date.\"),\r\n field: z\r\n .enum([\"INDX_MWEIGHT\", \"INDX_MEMBERS\", \"INDX_MEMBERS3\"])\r\n .optional()\r\n .describe(\"Bloomberg index members field. Omit for @xbbg/core default.\"),\r\n index: nonEmptyString(tool, \"index\", options.maxStringChars, \"SPX Index\").describe(\r\n \"One fully qualified Bloomberg index ticker.\",\r\n ),\r\n });\r\n}\r\n\r\nexport function createResolveIsinsSchema(\r\n options: NormalizedBloombergToolsOptions,\r\n): z.ZodType<ResolveIsinsInput> {\r\n const tool = \"xbbg_resolve_isins\";\r\n return z.object({\r\n isins: stringArray(\r\n tool,\r\n \"isins\",\r\n options.maxSecurities,\r\n options.maxStringChars,\r\n '[\"US0378331005\"]',\r\n ).describe(\"Raw ISIN strings to resolve. Do not add /isin/ prefixes for this recipe.\"),\r\n });\r\n}\r\n\r\nexport function createIssuerIsinsSchema(\r\n options: NormalizedBloombergToolsOptions,\r\n): z.ZodType<IssuerIsinsInput> {\r\n const tool = \"xbbg_issuer_isins\";\r\n return z.object({\r\n bondIsins: stringArray(\r\n tool,\r\n \"bondIsins\",\r\n options.maxSecurities,\r\n options.maxStringChars,\r\n '[\"US037833FB15\"]',\r\n ).describe(\"Raw bond ISIN strings for issuer-level ISIN discovery.\"),\r\n });\r\n}\r\n\r\nexport function createEtfHoldingsSchema(\r\n options: NormalizedBloombergToolsOptions,\r\n): z.ZodType<EtfHoldingsInput> {\r\n const tool = \"xbbg_etf_holdings\";\r\n return z.object({\r\n etfTicker: nonEmptyString(tool, \"etfTicker\", options.maxStringChars, \"SPY US Equity\").describe(\r\n \"One fully qualified Bloomberg ETF ticker.\",\r\n ),\r\n fields: stringArray(tool, \"fields\", options.maxFields, options.maxStringChars, '[\"id\"]')\r\n .optional()\r\n .describe(\"Optional fields to include in the ETF holdings recipe result.\"),\r\n });\r\n}\r\n\r\ninterface SnapshotControlShape {\r\n readonly allFields: z.ZodType<boolean | undefined>;\r\n readonly conflate: z.ZodType<boolean | undefined>;\r\n readonly drain: z.ZodType<boolean | undefined>;\r\n readonly flushThreshold: z.ZodType<number | undefined>;\r\n readonly maxUpdates: z.ZodType<number>;\r\n readonly options: z.ZodType<string[] | undefined>;\r\n readonly overflowPolicy: z.ZodType<string | undefined>;\r\n readonly streamCapacity: z.ZodType<number | undefined>;\r\n readonly timeoutMs: z.ZodType<number>;\r\n}\r\n\r\nfunction snapshotControlFields(\r\n tool: string,\r\n options: NormalizedBloombergToolsOptions,\r\n): SnapshotControlShape {\r\n return {\r\n allFields: z.boolean().optional().describe(\"Request all Bloomberg fields when supported.\"),\r\n conflate: z\r\n .boolean()\r\n .optional()\r\n .describe(\"Enable Bloomberg conflated streaming when supported.\"),\r\n drain: z\r\n .boolean()\r\n .optional()\r\n .describe(\r\n \"Pass drain=true to unsubscribe. Defaults to false; collected output remains bounded.\",\r\n ),\r\n flushThreshold: z\r\n .number()\r\n .int()\r\n .positive()\r\n .optional()\r\n .describe(\"Optional stream flush threshold.\"),\r\n maxUpdates: z\r\n .number()\r\n .int(`${tool}: maxUpdates must be a positive integer.`)\r\n .positive(`${tool}: maxUpdates must be greater than zero.`)\r\n .max(\r\n options.maxStreamUpdates,\r\n `${tool}: maxUpdates can be at most ${options.maxStreamUpdates}.`,\r\n )\r\n .describe(\"Required maximum number of updates to collect before unsubscribing.\"),\r\n options: stringArray(\r\n tool,\r\n \"options\",\r\n options.maxFields,\r\n options.maxStringChars,\r\n '[\"interval=5\"]',\r\n )\r\n .optional()\r\n .describe(\"Advanced Bloomberg subscription options.\"),\r\n overflowPolicy: nonEmptyString(tool, \"overflowPolicy\", options.maxStringChars, \"drop_oldest\")\r\n .optional()\r\n .describe(\"Optional stream overflow policy.\"),\r\n streamCapacity: z.number().int().positive().optional().describe(\"Optional stream capacity.\"),\r\n timeoutMs: z\r\n .number()\r\n .int()\r\n .positive()\r\n .max(options.maxStreamWaitMs, `${tool}: timeoutMs can be at most ${options.maxStreamWaitMs}.`)\r\n .optional()\r\n .default(options.maxStreamWaitMs)\r\n .describe(\"Maximum total wait in milliseconds before unsubscribing.\"),\r\n };\r\n}\r\n\r\nexport function createStreamSnapshotSchema(\r\n options: NormalizedBloombergToolsOptions,\r\n): z.ZodType<StreamSnapshotInput> {\r\n const tool = \"xbbg_stream_snapshot\";\r\n return z.object({\r\n fields: stringArray(\r\n tool,\r\n \"fields\",\r\n options.maxFields,\r\n options.maxStringChars,\r\n '[\"LAST_PRICE\"]',\r\n ).describe(\"Bloomberg market-data fields to observe.\"),\r\n tickers: stringArray(\r\n tool,\r\n \"tickers\",\r\n options.maxSecurities,\r\n options.maxStringChars,\r\n '[\"AAPL US Equity\"]',\r\n ).describe(\"Fully qualified Bloomberg securities to observe.\"),\r\n ...snapshotControlFields(tool, options),\r\n });\r\n}\r\n\r\nexport function createMktbarSnapshotSchema(\r\n options: NormalizedBloombergToolsOptions,\r\n): z.ZodType<MktbarSnapshotInput> {\r\n const tool = \"xbbg_mktbar_snapshot\";\r\n return z.object({\r\n fields: stringArray(tool, \"fields\", options.maxFields, options.maxStringChars, '[\"LAST_PRICE\"]')\r\n .optional()\r\n .describe(\"Optional market-bar fields. Omit for Bloomberg defaults.\"),\r\n ticker: nonEmptyString(tool, \"ticker\", options.maxStringChars, \"AAPL US Equity\").describe(\r\n \"One fully qualified Bloomberg security to observe.\",\r\n ),\r\n ...snapshotControlFields(tool, options),\r\n });\r\n}\r\n\r\nexport function createDepthSnapshotSchema(\r\n options: NormalizedBloombergToolsOptions,\r\n): z.ZodType<DepthSnapshotInput> {\r\n const tool = \"xbbg_depth_snapshot\";\r\n return z.object({\r\n fields: stringArray(tool, \"fields\", options.maxFields, options.maxStringChars, '[\"BID\"]')\r\n .optional()\r\n .describe(\"Optional market-depth fields. Omit for Bloomberg defaults.\"),\r\n ticker: nonEmptyString(tool, \"ticker\", options.maxStringChars, \"AAPL US Equity\").describe(\r\n \"One fully qualified Bloomberg security to observe.\",\r\n ),\r\n ...snapshotControlFields(tool, options),\r\n });\r\n}\r\n","import { tool, type StructuredToolInterface } from \"@langchain/core/tools\";\r\n\r\nimport { createCoreResolver, type CoreResolver } from \"./core-loader\";\r\nimport {\r\n BDP_DESCRIPTION,\r\n BDH_DESCRIPTION,\r\n BDS_DESCRIPTION,\r\n BDIB_DESCRIPTION,\r\n BDTICK_DESCRIPTION,\r\n BFLDS_DESCRIPTION,\r\n BQL_DESCRIPTION,\r\n BSRCH_DESCRIPTION,\r\n BQR_DESCRIPTION,\r\n BEQS_DESCRIPTION,\r\n CORPORATE_BONDS_DESCRIPTION,\r\n ETF_HOLDINGS_DESCRIPTION,\r\n DEPTH_SNAPSHOT_DESCRIPTION,\r\n INDEX_MEMBERS_DESCRIPTION,\r\n ISSUER_ISINS_DESCRIPTION,\r\n MKTBAR_SNAPSHOT_DESCRIPTION,\r\n PREFERREDS_DESCRIPTION,\r\n RESOLVE_ISINS_DESCRIPTION,\r\n STREAM_SNAPSHOT_DESCRIPTION,\r\n YAS_DESCRIPTION,\r\n} from \"./descriptions\";\r\nimport type { BloombergToolsOptions, BloombergToolName } from \"./options\";\r\nimport { isToolDisabled } from \"./options\";\r\nimport {\r\n createToolResult,\r\n throwWithToolContext,\r\n type ToolContentAndArtifact,\r\n} from \"./result-limits\";\r\nimport {\r\n createBeqsSchema,\r\n createBdhSchema,\r\n createBdibSchema,\r\n createBdtickSchema,\r\n createBdpSchema,\r\n createBdsSchema,\r\n createBfldsSchema,\r\n createBqlSchema,\r\n createBsrchSchema,\r\n createBqrSchema,\r\n createCorporateBondsSchema,\r\n createDepthSnapshotSchema,\r\n createEtfHoldingsSchema,\r\n createIndexMembersSchema,\r\n createIssuerIsinsSchema,\r\n createMktbarSnapshotSchema,\r\n createPreferredsSchema,\r\n createResolveIsinsSchema,\r\n createStreamSnapshotSchema,\r\n createYasSchema,\r\n type BdhInput,\r\n type BeqsInput,\r\n type BdibInput,\r\n type BdtickInput,\r\n type BdpInput,\r\n type BdsInput,\r\n type BfldsInput,\r\n type BqlInput,\r\n type BsrchInput,\r\n type BqrInput,\r\n type CorporateBondsInput,\r\n type DepthSnapshotInput,\r\n type EtfHoldingsInput,\r\n type IndexMembersInput,\r\n type IssuerIsinsInput,\r\n type MktbarSnapshotInput,\r\n type PreferredsInput,\r\n type ResolveIsinsInput,\r\n type StreamSnapshotInput,\r\n type YasInput,\r\n} from \"./schemas\";\r\n\r\nexport type BloombergTool = StructuredToolInterface;\r\n\r\ntype ToolCreator = (resolver: CoreResolver) => BloombergTool;\r\n\r\nfunction resultString(\r\n resolver: CoreResolver,\r\n name: BloombergToolName,\r\n value: unknown,\r\n): ToolContentAndArtifact {\r\n return createToolResult(name, value, resolver.options.maxRows, resolver.options.maxStringChars);\r\n}\r\n\r\ntype SnapshotReason = \"max_updates\" | \"timeout\" | \"done\";\r\n\r\ninterface SnapshotControlInput {\r\n readonly maxUpdates: number;\r\n readonly timeoutMs: number;\r\n readonly drain?: boolean;\r\n}\r\n\r\ninterface SnapshotSubscriptionLike {\r\n next(): Promise<IteratorResult<unknown>>;\r\n unsubscribe(drain?: boolean): Promise<unknown>;\r\n}\r\n\r\ninterface SnapshotResult {\r\n readonly updateCount: number;\r\n readonly maxUpdates: number;\r\n readonly timeoutMs: number;\r\n readonly reason: SnapshotReason;\r\n readonly updates: readonly unknown[];\r\n}\r\n\r\ninterface StreamOptionsInput {\r\n readonly options?: readonly string[];\r\n readonly conflate?: boolean;\r\n readonly flushThreshold?: number;\r\n readonly overflowPolicy?: string;\r\n readonly streamCapacity?: number;\r\n readonly allFields?: boolean;\r\n readonly fields?: readonly string[];\r\n}\r\n\r\nconst STREAM_TIMEOUT = Symbol(\"stream_timeout\");\r\n\r\nfunction streamOptions(input: StreamOptionsInput): StreamOptionsInput {\r\n return {\r\n allFields: input.allFields,\r\n conflate: input.conflate,\r\n fields: input.fields,\r\n flushThreshold: input.flushThreshold,\r\n options: input.options,\r\n overflowPolicy: input.overflowPolicy,\r\n streamCapacity: input.streamCapacity,\r\n };\r\n}\r\n\r\nfunction isRecord(value: unknown): value is Record<string, unknown> {\r\n return typeof value === \"object\" && value !== null;\r\n}\r\n\r\nfunction rowsFromArrowTable(value: unknown): unknown[] | undefined {\r\n if (!isRecord(value)) {\r\n return undefined;\r\n }\r\n const toArray = value.toArray;\r\n if (typeof toArray === \"function\") {\r\n return Array.from(toArray.call(value) as Iterable<unknown>);\r\n }\r\n const numRows = value.numRows;\r\n const get = value.get;\r\n if (typeof numRows === \"number\" && Number.isInteger(numRows) && typeof get === \"function\") {\r\n const rows: unknown[] = [];\r\n for (let index = 0; index < numRows; index += 1) {\r\n rows.push(get.call(value, index));\r\n }\r\n return rows;\r\n }\r\n return undefined;\r\n}\r\n\r\nfunction jsonCompatible(value: unknown): unknown {\r\n if (typeof value === \"bigint\") {\r\n return value.toString();\r\n }\r\n if (value instanceof Date) {\r\n return value.toISOString();\r\n }\r\n if (Array.isArray(value)) {\r\n return value.map(jsonCompatible);\r\n }\r\n if (!isRecord(value)) {\r\n return value;\r\n }\r\n const toJSON = value.toJSON;\r\n if (typeof toJSON === \"function\") {\r\n return jsonCompatible(toJSON.call(value));\r\n }\r\n const output: Record<string, unknown> = {};\r\n for (const [key, entry] of Object.entries(value)) {\r\n output[key] = jsonCompatible(entry);\r\n }\r\n return output;\r\n}\r\n\r\nfunction normalizeStreamUpdate(value: unknown): unknown {\r\n if (isRecord(value)) {\r\n const toObject = value.toObject;\r\n if (typeof toObject === \"function\") {\r\n return jsonCompatible(toObject.call(value));\r\n }\r\n }\r\n const rows = rowsFromArrowTable(value);\r\n return rows === undefined ? jsonCompatible(value) : rows.map(jsonCompatible);\r\n}\r\n\r\nasync function nextWithinTimeout(\r\n iterator: SnapshotSubscriptionLike,\r\n deadlineMs: number,\r\n): Promise<IteratorResult<unknown> | typeof STREAM_TIMEOUT> {\r\n const remainingMs = deadlineMs - Date.now();\r\n if (remainingMs <= 0) {\r\n return STREAM_TIMEOUT;\r\n }\r\n const nextPromise = iterator.next();\r\n let timer: ReturnType<typeof setTimeout> | undefined;\r\n const timeoutPromise = new Promise<typeof STREAM_TIMEOUT>((resolve) => {\r\n timer = setTimeout(() => resolve(STREAM_TIMEOUT), remainingMs);\r\n });\r\n const result = await Promise.race([nextPromise, timeoutPromise]);\r\n if (timer !== undefined) {\r\n clearTimeout(timer);\r\n }\r\n if (result === STREAM_TIMEOUT) {\r\n void nextPromise.catch(() => undefined);\r\n }\r\n return result;\r\n}\r\n\r\nasync function unsubscribeSnapshot(\r\n subscription: SnapshotSubscriptionLike,\r\n drain: boolean,\r\n priorError: unknown,\r\n): Promise<void> {\r\n try {\r\n await subscription.unsubscribe(drain);\r\n } catch (error) {\r\n if (priorError === undefined) {\r\n throw error;\r\n }\r\n }\r\n}\r\n\r\nasync function collectSnapshot(\r\n subscription: SnapshotSubscriptionLike,\r\n input: SnapshotControlInput,\r\n): Promise<SnapshotResult> {\r\n const updates: unknown[] = [];\r\n const deadlineMs = Date.now() + input.timeoutMs;\r\n let reason: SnapshotReason = \"max_updates\";\r\n let caught: unknown;\r\n try {\r\n while (updates.length < input.maxUpdates) {\r\n const next = await nextWithinTimeout(subscription, deadlineMs);\r\n if (next === STREAM_TIMEOUT) {\r\n reason = \"timeout\";\r\n break;\r\n }\r\n if (next.done === true) {\r\n reason = \"done\";\r\n break;\r\n }\r\n updates.push(normalizeStreamUpdate(next.value));\r\n }\r\n return {\r\n maxUpdates: input.maxUpdates,\r\n reason,\r\n timeoutMs: input.timeoutMs,\r\n updateCount: updates.length,\r\n updates,\r\n };\r\n } catch (error) {\r\n caught = error;\r\n throw error;\r\n } finally {\r\n await unsubscribeSnapshot(subscription, input.drain === true, caught);\r\n }\r\n}\r\n\r\nfunction validationSetting(\r\n resolver: CoreResolver,\r\n value: boolean | undefined,\r\n): boolean | undefined {\r\n return value ?? resolver.options.validateFields;\r\n}\r\n\r\nfunction enabledTool(\r\n resolver: CoreResolver,\r\n name: BloombergToolName,\r\n creator: ToolCreator,\r\n): BloombergTool[] {\r\n return isToolDisabled(resolver.options, name) ? [] : [creator(resolver)];\r\n}\r\n\r\nfunction bdpWithResolver(resolver: CoreResolver): BloombergTool {\r\n const name = \"xbbg_bdp\" satisfies BloombergToolName;\r\n return tool(\r\n async (input: BdpInput): Promise<ToolContentAndArtifact> => {\r\n try {\r\n const engine = await resolver.getEngine();\r\n const result = await engine.bdp(input.securities, input.fields, {\r\n backend: \"json\",\r\n format: input.format,\r\n includeSecurityErrors: input.includeSecurityErrors,\r\n kwargs: input.kwargs,\r\n overrides: input.overrides,\r\n validateFields: validationSetting(resolver, input.validateFields),\r\n });\r\n return resultString(resolver, name, result);\r\n } catch (error) {\r\n throwWithToolContext(name, error);\r\n }\r\n },\r\n {\r\n description: BDP_DESCRIPTION,\r\n name,\r\n responseFormat: \"content_and_artifact\",\r\n schema: createBdpSchema(resolver.options),\r\n },\r\n );\r\n}\r\n\r\nfunction bdhWithResolver(resolver: CoreResolver): BloombergTool {\r\n const name = \"xbbg_bdh\" satisfies BloombergToolName;\r\n return tool(\r\n async (input: BdhInput): Promise<ToolContentAndArtifact> => {\r\n try {\r\n const engine = await resolver.getEngine();\r\n const result = await engine.bdh(input.securities, input.fields, {\r\n backend: \"json\",\r\n end: input.end,\r\n format: input.format,\r\n kwargs: input.kwargs,\r\n overrides: input.overrides,\r\n start: input.start,\r\n validateFields: validationSetting(resolver, input.validateFields),\r\n });\r\n return resultString(resolver, name, result);\r\n } catch (error) {\r\n throwWithToolContext(name, error);\r\n }\r\n },\r\n {\r\n description: BDH_DESCRIPTION,\r\n name,\r\n responseFormat: \"content_and_artifact\",\r\n schema: createBdhSchema(resolver.options),\r\n },\r\n );\r\n}\r\n\r\nfunction bdsWithResolver(resolver: CoreResolver): BloombergTool {\r\n const name = \"xbbg_bds\" satisfies BloombergToolName;\r\n return tool(\r\n async (input: BdsInput): Promise<ToolContentAndArtifact> => {\r\n try {\r\n const engine = await resolver.getEngine();\r\n const result = await engine.bds(input.securities, [input.field], {\r\n backend: \"json\",\r\n format: input.format,\r\n kwargs: input.kwargs,\r\n overrides: input.overrides,\r\n validateFields: validationSetting(resolver, input.validateFields),\r\n });\r\n return resultString(resolver, name, result);\r\n } catch (error) {\r\n throwWithToolContext(name, error);\r\n }\r\n },\r\n {\r\n description: BDS_DESCRIPTION,\r\n name,\r\n responseFormat: \"content_and_artifact\",\r\n schema: createBdsSchema(resolver.options),\r\n },\r\n );\r\n}\r\n\r\nfunction bdibWithResolver(resolver: CoreResolver): BloombergTool {\r\n const name = \"xbbg_bdib\" satisfies BloombergToolName;\r\n return tool(\r\n async (input: BdibInput): Promise<ToolContentAndArtifact> => {\r\n try {\r\n const engine = await resolver.getEngine();\r\n const result = await engine.bdib(input.ticker, {\r\n backend: \"json\",\r\n end: input.end,\r\n eventType: input.eventType,\r\n interval: input.interval,\r\n kwargs: input.kwargs,\r\n outputTz: input.outputTz,\r\n requestTz: input.requestTz,\r\n start: input.start,\r\n });\r\n return resultString(resolver, name, result);\r\n } catch (error) {\r\n throwWithToolContext(name, error);\r\n }\r\n },\r\n {\r\n description: BDIB_DESCRIPTION,\r\n name,\r\n responseFormat: \"content_and_artifact\",\r\n schema: createBdibSchema(resolver.options),\r\n },\r\n );\r\n}\r\n\r\nfunction bdtickWithResolver(resolver: CoreResolver): BloombergTool {\r\n const name = \"xbbg_bdtick\" satisfies BloombergToolName;\r\n return tool(\r\n async (input: BdtickInput): Promise<ToolContentAndArtifact> => {\r\n try {\r\n const engine = await resolver.getEngine();\r\n const result = await engine.bdtick(input.ticker, {\r\n backend: \"json\",\r\n end: input.end,\r\n eventTypes: input.eventTypes,\r\n includeBicMicCodes: input.includeBicMicCodes,\r\n includeBloombergStandardConditionCodes: input.includeBloombergStandardConditionCodes,\r\n includeBrokerCodes: input.includeBrokerCodes,\r\n includeConditionCodes: input.includeConditionCodes,\r\n includeExchangeCodes: input.includeExchangeCodes,\r\n includeNonPlottableEvents: input.includeNonPlottableEvents,\r\n includeRpsCodes: input.includeRpsCodes,\r\n kwargs: input.kwargs,\r\n outputTz: input.outputTz,\r\n requestTz: input.requestTz,\r\n start: input.start,\r\n });\r\n return resultString(resolver, name, result);\r\n } catch (error) {\r\n throwWithToolContext(name, error);\r\n }\r\n },\r\n {\r\n description: BDTICK_DESCRIPTION,\r\n name,\r\n responseFormat: \"content_and_artifact\",\r\n schema: createBdtickSchema(resolver.options),\r\n },\r\n );\r\n}\r\n\r\nfunction bqlWithResolver(resolver: CoreResolver): BloombergTool {\r\n const name = \"xbbg_bql\" satisfies BloombergToolName;\r\n return tool(\r\n async (input: BqlInput): Promise<ToolContentAndArtifact> => {\r\n try {\r\n const engine = await resolver.getEngine();\r\n const result = await engine.bql(input.query, {\r\n backend: \"json\",\r\n format: input.format,\r\n kwargs: input.kwargs,\r\n });\r\n return resultString(resolver, name, result);\r\n } catch (error) {\r\n throwWithToolContext(name, error);\r\n }\r\n },\r\n {\r\n description: BQL_DESCRIPTION,\r\n name,\r\n responseFormat: \"content_and_artifact\",\r\n schema: createBqlSchema(resolver.options),\r\n },\r\n );\r\n}\r\n\r\nfunction bsrchWithResolver(resolver: CoreResolver): BloombergTool {\r\n const name = \"xbbg_bsrch\" satisfies BloombergToolName;\r\n return tool(\r\n async (input: BsrchInput): Promise<ToolContentAndArtifact> => {\r\n try {\r\n const engine = await resolver.getEngine();\r\n const result = await engine.bsrch(input.searchSpec, {\r\n backend: \"json\",\r\n format: input.format,\r\n kwargs: input.kwargs,\r\n overrides: input.overrides,\r\n });\r\n return resultString(resolver, name, result);\r\n } catch (error) {\r\n throwWithToolContext(name, error);\r\n }\r\n },\r\n {\r\n description: BSRCH_DESCRIPTION,\r\n name,\r\n responseFormat: \"content_and_artifact\",\r\n schema: createBsrchSchema(resolver.options),\r\n },\r\n );\r\n}\r\n\r\nfunction bqrWithResolver(resolver: CoreResolver): BloombergTool {\r\n const name = \"xbbg_bqr\" satisfies BloombergToolName;\r\n return tool(\r\n async (input: BqrInput): Promise<ToolContentAndArtifact> => {\r\n try {\r\n const engine = await resolver.getEngine();\r\n const result = await engine.bqr(input.ticker, {\r\n backend: \"json\",\r\n endDatetime: input.end,\r\n eventTypes: input.eventTypes,\r\n includeBrokerCodes: input.includeBrokerCodes,\r\n startDatetime: input.start,\r\n });\r\n return resultString(resolver, name, result);\r\n } catch (error) {\r\n throwWithToolContext(name, error);\r\n }\r\n },\r\n {\r\n description: BQR_DESCRIPTION,\r\n name,\r\n responseFormat: \"content_and_artifact\",\r\n schema: createBqrSchema(resolver.options),\r\n },\r\n );\r\n}\r\n\r\nfunction bfldsWithResolver(resolver: CoreResolver): BloombergTool {\r\n const name = \"xbbg_bflds\" satisfies BloombergToolName;\r\n return tool(\r\n async (input: BfldsInput): Promise<ToolContentAndArtifact> => {\r\n try {\r\n const engine = await resolver.getEngine();\r\n const result = await engine.bflds({\r\n backend: \"json\",\r\n fields: input.fields,\r\n format: input.format,\r\n kwargs: input.kwargs,\r\n searchSpec: input.searchSpec,\r\n });\r\n return resultString(resolver, name, result);\r\n } catch (error) {\r\n throwWithToolContext(name, error);\r\n }\r\n },\r\n {\r\n description: BFLDS_DESCRIPTION,\r\n name,\r\n responseFormat: \"content_and_artifact\",\r\n schema: createBfldsSchema(resolver.options),\r\n },\r\n );\r\n}\r\n\r\nfunction beqsWithResolver(resolver: CoreResolver): BloombergTool {\r\n const name = \"xbbg_beqs\" satisfies BloombergToolName;\r\n return tool(\r\n async (input: BeqsInput): Promise<ToolContentAndArtifact> => {\r\n try {\r\n const engine = await resolver.getEngine();\r\n const result = await engine.beqs(input.screen, {\r\n asof: input.asof,\r\n backend: \"json\",\r\n format: input.format,\r\n group: input.group,\r\n kwargs: input.kwargs,\r\n overrides: input.overrides,\r\n screenType: input.screenType,\r\n });\r\n return resultString(resolver, name, result);\r\n } catch (error) {\r\n throwWithToolContext(name, error);\r\n }\r\n },\r\n {\r\n description: BEQS_DESCRIPTION,\r\n name,\r\n responseFormat: \"content_and_artifact\",\r\n schema: createBeqsSchema(resolver.options),\r\n },\r\n );\r\n}\r\n\r\nfunction yasWithResolver(resolver: CoreResolver): BloombergTool {\r\n const name = \"xbbg_yas\" satisfies BloombergToolName;\r\n return tool(\r\n async (input: YasInput): Promise<ToolContentAndArtifact> => {\r\n try {\r\n const engine = await resolver.getEngine();\r\n const result = await engine.yas(input.tickers, input.fields, {\r\n backend: \"json\",\r\n benchmark: input.benchmark,\r\n price: input.price,\r\n settleDt: input.settleDt,\r\n spread: input.spread,\r\n yieldType: input.yieldType,\r\n yieldVal: input.yieldVal,\r\n });\r\n return resultString(resolver, name, result);\r\n } catch (error) {\r\n throwWithToolContext(name, error);\r\n }\r\n },\r\n {\r\n description: YAS_DESCRIPTION,\r\n name,\r\n responseFormat: \"content_and_artifact\",\r\n schema: createYasSchema(resolver.options),\r\n },\r\n );\r\n}\r\n\r\nfunction preferredsWithResolver(resolver: CoreResolver): BloombergTool {\r\n const name = \"xbbg_preferreds\" satisfies BloombergToolName;\r\n return tool(\r\n async (input: PreferredsInput): Promise<ToolContentAndArtifact> => {\r\n try {\r\n const engine = await resolver.getEngine();\r\n const result = await engine.preferreds(input.equityTicker, {\r\n backend: \"json\",\r\n fields: input.fields,\r\n });\r\n return resultString(resolver, name, result);\r\n } catch (error) {\r\n throwWithToolContext(name, error);\r\n }\r\n },\r\n {\r\n description: PREFERREDS_DESCRIPTION,\r\n name,\r\n responseFormat: \"content_and_artifact\",\r\n schema: createPreferredsSchema(resolver.options),\r\n },\r\n );\r\n}\r\n\r\nfunction corporateBondsWithResolver(resolver: CoreResolver): BloombergTool {\r\n const name = \"xbbg_corporate_bonds\" satisfies BloombergToolName;\r\n return tool(\r\n async (input: CorporateBondsInput): Promise<ToolContentAndArtifact> => {\r\n try {\r\n const engine = await resolver.getEngine();\r\n const result = await engine.corporateBonds(input.ticker, {\r\n activeOnly: input.activeOnly,\r\n backend: \"json\",\r\n ccy: input.ccy,\r\n fields: input.fields,\r\n });\r\n return resultString(resolver, name, result);\r\n } catch (error) {\r\n throwWithToolContext(name, error);\r\n }\r\n },\r\n {\r\n description: CORPORATE_BONDS_DESCRIPTION,\r\n name,\r\n responseFormat: \"content_and_artifact\",\r\n schema: createCorporateBondsSchema(resolver.options),\r\n },\r\n );\r\n}\r\n\r\nfunction indexMembersWithResolver(resolver: CoreResolver): BloombergTool {\r\n const name = \"xbbg_index_members\" satisfies BloombergToolName;\r\n return tool(\r\n async (input: IndexMembersInput): Promise<ToolContentAndArtifact> => {\r\n try {\r\n const engine = await resolver.getEngine();\r\n const result = await engine.indexMembers(input.index, {\r\n asof: input.asof,\r\n backend: \"json\",\r\n field: input.field,\r\n });\r\n return resultString(resolver, name, result);\r\n } catch (error) {\r\n throwWithToolContext(name, error);\r\n }\r\n },\r\n {\r\n description: INDEX_MEMBERS_DESCRIPTION,\r\n name,\r\n responseFormat: \"content_and_artifact\",\r\n schema: createIndexMembersSchema(resolver.options),\r\n },\r\n );\r\n}\r\n\r\nfunction resolveIsinsWithResolver(resolver: CoreResolver): BloombergTool {\r\n const name = \"xbbg_resolve_isins\" satisfies BloombergToolName;\r\n return tool(\r\n async (input: ResolveIsinsInput): Promise<ToolContentAndArtifact> => {\r\n try {\r\n const engine = await resolver.getEngine();\r\n const result = await engine.resolveIsins(input.isins, { backend: \"json\" });\r\n return resultString(resolver, name, result);\r\n } catch (error) {\r\n throwWithToolContext(name, error);\r\n }\r\n },\r\n {\r\n description: RESOLVE_ISINS_DESCRIPTION,\r\n name,\r\n responseFormat: \"content_and_artifact\",\r\n schema: createResolveIsinsSchema(resolver.options),\r\n },\r\n );\r\n}\r\n\r\nfunction issuerIsinsWithResolver(resolver: CoreResolver): BloombergTool {\r\n const name = \"xbbg_issuer_isins\" satisfies BloombergToolName;\r\n return tool(\r\n async (input: IssuerIsinsInput): Promise<ToolContentAndArtifact> => {\r\n try {\r\n const engine = await resolver.getEngine();\r\n const result = await engine.issuerIsins(input.bondIsins, { backend: \"json\" });\r\n return resultString(resolver, name, result);\r\n } catch (error) {\r\n throwWithToolContext(name, error);\r\n }\r\n },\r\n {\r\n description: ISSUER_ISINS_DESCRIPTION,\r\n name,\r\n responseFormat: \"content_and_artifact\",\r\n schema: createIssuerIsinsSchema(resolver.options),\r\n },\r\n );\r\n}\r\n\r\nfunction etfHoldingsWithResolver(resolver: CoreResolver): BloombergTool {\r\n const name = \"xbbg_etf_holdings\" satisfies BloombergToolName;\r\n return tool(\r\n async (input: EtfHoldingsInput): Promise<ToolContentAndArtifact> => {\r\n try {\r\n const engine = await resolver.getEngine();\r\n const result = await engine.etfHoldings(input.etfTicker, {\r\n backend: \"json\",\r\n fields: input.fields,\r\n });\r\n return resultString(resolver, name, result);\r\n } catch (error) {\r\n throwWithToolContext(name, error);\r\n }\r\n },\r\n {\r\n description: ETF_HOLDINGS_DESCRIPTION,\r\n name,\r\n responseFormat: \"content_and_artifact\",\r\n schema: createEtfHoldingsSchema(resolver.options),\r\n },\r\n );\r\n}\r\n\r\nfunction streamSnapshotWithResolver(resolver: CoreResolver): BloombergTool {\r\n const name = \"xbbg_stream_snapshot\" satisfies BloombergToolName;\r\n return tool(\r\n async (input: StreamSnapshotInput): Promise<ToolContentAndArtifact> => {\r\n try {\r\n const engine = await resolver.getEngine();\r\n const subscription = await engine.stream(input.tickers, input.fields, streamOptions(input));\r\n const result = await collectSnapshot(subscription, input);\r\n return resultString(resolver, name, result);\r\n } catch (error) {\r\n throwWithToolContext(name, error);\r\n }\r\n },\r\n {\r\n description: STREAM_SNAPSHOT_DESCRIPTION,\r\n name,\r\n responseFormat: \"content_and_artifact\",\r\n schema: createStreamSnapshotSchema(resolver.options),\r\n },\r\n );\r\n}\r\n\r\nfunction mktbarSnapshotWithResolver(resolver: CoreResolver): BloombergTool {\r\n const name = \"xbbg_mktbar_snapshot\" satisfies BloombergToolName;\r\n return tool(\r\n async (input: MktbarSnapshotInput): Promise<ToolContentAndArtifact> => {\r\n try {\r\n const engine = await resolver.getEngine();\r\n const subscription = await engine.mktbar(input.ticker, streamOptions(input));\r\n const result = await collectSnapshot(subscription, input);\r\n return resultString(resolver, name, result);\r\n } catch (error) {\r\n throwWithToolContext(name, error);\r\n }\r\n },\r\n {\r\n description: MKTBAR_SNAPSHOT_DESCRIPTION,\r\n name,\r\n responseFormat: \"content_and_artifact\",\r\n schema: createMktbarSnapshotSchema(resolver.options),\r\n },\r\n );\r\n}\r\n\r\nfunction depthSnapshotWithResolver(resolver: CoreResolver): BloombergTool {\r\n const name = \"xbbg_depth_snapshot\" satisfies BloombergToolName;\r\n return tool(\r\n async (input: DepthSnapshotInput): Promise<ToolContentAndArtifact> => {\r\n try {\r\n const engine = await resolver.getEngine();\r\n const subscription = await engine.depth(input.ticker, streamOptions(input));\r\n const result = await collectSnapshot(subscription, input);\r\n return resultString(resolver, name, result);\r\n } catch (error) {\r\n throwWithToolContext(name, error);\r\n }\r\n },\r\n {\r\n description: DEPTH_SNAPSHOT_DESCRIPTION,\r\n name,\r\n responseFormat: \"content_and_artifact\",\r\n schema: createDepthSnapshotSchema(resolver.options),\r\n },\r\n );\r\n}\r\n\r\nexport function createBdpTool(options: BloombergToolsOptions = {}): BloombergTool {\r\n return bdpWithResolver(createCoreResolver(options));\r\n}\r\n\r\nexport function createBdhTool(options: BloombergToolsOptions = {}): BloombergTool {\r\n return bdhWithResolver(createCoreResolver(options));\r\n}\r\n\r\nexport function createBdsTool(options: BloombergToolsOptions = {}): BloombergTool {\r\n return bdsWithResolver(createCoreResolver(options));\r\n}\r\n\r\nexport function createBdibTool(options: BloombergToolsOptions = {}): BloombergTool {\r\n return bdibWithResolver(createCoreResolver(options));\r\n}\r\n\r\nexport function createBdtickTool(options: BloombergToolsOptions = {}): BloombergTool {\r\n return bdtickWithResolver(createCoreResolver(options));\r\n}\r\n\r\nexport function createBqlTool(options: BloombergToolsOptions = {}): BloombergTool {\r\n return bqlWithResolver(createCoreResolver(options));\r\n}\r\n\r\nexport function createBsrchTool(options: BloombergToolsOptions = {}): BloombergTool {\r\n return bsrchWithResolver(createCoreResolver(options));\r\n}\r\n\r\nexport function createBqrTool(options: BloombergToolsOptions = {}): BloombergTool {\r\n return bqrWithResolver(createCoreResolver(options));\r\n}\r\n\r\nexport function createBfldsTool(options: BloombergToolsOptions = {}): BloombergTool {\r\n return bfldsWithResolver(createCoreResolver(options));\r\n}\r\n\r\nexport function createBeqsTool(options: BloombergToolsOptions = {}): BloombergTool {\r\n return beqsWithResolver(createCoreResolver(options));\r\n}\r\n\r\nexport function createYasTool(options: BloombergToolsOptions = {}): BloombergTool {\r\n return yasWithResolver(createCoreResolver(options));\r\n}\r\n\r\nexport function createPreferredsTool(options: BloombergToolsOptions = {}): BloombergTool {\r\n return preferredsWithResolver(createCoreResolver(options));\r\n}\r\n\r\nexport function createCorporateBondsTool(options: BloombergToolsOptions = {}): BloombergTool {\r\n return corporateBondsWithResolver(createCoreResolver(options));\r\n}\r\n\r\nexport function createIndexMembersTool(options: BloombergToolsOptions = {}): BloombergTool {\r\n return indexMembersWithResolver(createCoreResolver(options));\r\n}\r\n\r\nexport function createResolveIsinsTool(options: BloombergToolsOptions = {}): BloombergTool {\r\n return resolveIsinsWithResolver(createCoreResolver(options));\r\n}\r\n\r\nexport function createIssuerIsinsTool(options: BloombergToolsOptions = {}): BloombergTool {\r\n return issuerIsinsWithResolver(createCoreResolver(options));\r\n}\r\n\r\nexport function createEtfHoldingsTool(options: BloombergToolsOptions = {}): BloombergTool {\r\n return etfHoldingsWithResolver(createCoreResolver(options));\r\n}\r\n\r\nexport function createStreamSnapshotTool(options: BloombergToolsOptions = {}): BloombergTool {\r\n return streamSnapshotWithResolver(createCoreResolver(options));\r\n}\r\n\r\nexport function createMktbarSnapshotTool(options: BloombergToolsOptions = {}): BloombergTool {\r\n return mktbarSnapshotWithResolver(createCoreResolver(options));\r\n}\r\n\r\nexport function createDepthSnapshotTool(options: BloombergToolsOptions = {}): BloombergTool {\r\n return depthSnapshotWithResolver(createCoreResolver(options));\r\n}\r\n\r\nexport function createBloombergToolsForResolver(resolver: CoreResolver): BloombergTool[] {\r\n return [\r\n ...enabledTool(resolver, \"xbbg_bdp\", bdpWithResolver),\r\n ...enabledTool(resolver, \"xbbg_bdh\", bdhWithResolver),\r\n ...enabledTool(resolver, \"xbbg_bds\", bdsWithResolver),\r\n ...enabledTool(resolver, \"xbbg_bdib\", bdibWithResolver),\r\n ...enabledTool(resolver, \"xbbg_bdtick\", bdtickWithResolver),\r\n ...enabledTool(resolver, \"xbbg_bql\", bqlWithResolver),\r\n ...enabledTool(resolver, \"xbbg_bsrch\", bsrchWithResolver),\r\n ...enabledTool(resolver, \"xbbg_bqr\", bqrWithResolver),\r\n ...enabledTool(resolver, \"xbbg_bflds\", bfldsWithResolver),\r\n ...enabledTool(resolver, \"xbbg_beqs\", beqsWithResolver),\r\n ...enabledTool(resolver, \"xbbg_yas\", yasWithResolver),\r\n ...enabledTool(resolver, \"xbbg_preferreds\", preferredsWithResolver),\r\n ...enabledTool(resolver, \"xbbg_corporate_bonds\", corporateBondsWithResolver),\r\n ...enabledTool(resolver, \"xbbg_index_members\", indexMembersWithResolver),\r\n ...enabledTool(resolver, \"xbbg_resolve_isins\", resolveIsinsWithResolver),\r\n ...enabledTool(resolver, \"xbbg_issuer_isins\", issuerIsinsWithResolver),\r\n ...enabledTool(resolver, \"xbbg_etf_holdings\", etfHoldingsWithResolver),\r\n ...enabledTool(resolver, \"xbbg_stream_snapshot\", streamSnapshotWithResolver),\r\n ...enabledTool(resolver, \"xbbg_mktbar_snapshot\", mktbarSnapshotWithResolver),\r\n ...enabledTool(resolver, \"xbbg_depth_snapshot\", depthSnapshotWithResolver),\r\n ];\r\n}\r\n\r\nexport function createBloombergTools(options: BloombergToolsOptions = {}): BloombergTool[] {\r\n return createBloombergToolsForResolver(createCoreResolver(options));\r\n}\r\n","import { createCoreResolver } from \"./core-loader\";\r\nimport { createBloombergExtToolsForResolver } from \"./ext-tools\";\r\nimport type { BloombergToolsOptions } from \"./options\";\r\nimport { createBloombergToolsForResolver, type BloombergTool } from \"./tools\";\r\n\r\nexport {\r\n BLOOMBERG_TOOL_INSTRUCTIONS,\r\n getBloombergToolInstructions,\r\n type BloombergToolInstructionsOptions,\r\n} from \"./descriptions\";\r\nexport {\r\n BLOOMBERG_EXT_TOOL_NAMES,\r\n createBloombergExtTools,\r\n createExtBqlBuilderTool,\r\n createExtCalculateTool,\r\n createExtCdxTool,\r\n createExtColumnsTool,\r\n createExtConstantsTool,\r\n createExtCurrencyTool,\r\n createExtFuturesTool,\r\n createExtMarketSessionTool,\r\n createExtTickerTool,\r\n createExtYasOverridesTool,\r\n} from \"./ext-tools\";\r\nexport {\r\n BLOOMBERG_TOOL_NAMES,\r\n type BloombergToolName,\r\n type BloombergToolsOptions,\r\n type NormalizedBloombergToolsOptions,\r\n} from \"./options\";\r\nexport type { ToolEnvelope } from \"./result-limits\";\r\nexport {\r\n createBdhTool,\r\n createBdibTool,\r\n createBeqsTool,\r\n createBdtickTool,\r\n createBdpTool,\r\n createBdsTool,\r\n createBfldsTool,\r\n createCorporateBondsTool,\r\n createEtfHoldingsTool,\r\n createDepthSnapshotTool,\r\n createIndexMembersTool,\r\n createIssuerIsinsTool,\r\n createMktbarSnapshotTool,\r\n createPreferredsTool,\r\n createResolveIsinsTool,\r\n createStreamSnapshotTool,\r\n createYasTool,\r\n createBloombergTools,\r\n createBqlTool,\r\n createBsrchTool,\r\n createBqrTool,\r\n type BloombergTool,\r\n} from \"./tools\";\r\n\r\nexport function createAllBloombergTools(options: BloombergToolsOptions = {}): BloombergTool[] {\r\n const resolver = createCoreResolver(options);\r\n return [\r\n ...createBloombergToolsForResolver(resolver),\r\n ...createBloombergExtToolsForResolver(resolver),\r\n ];\r\n}\r\n"]}
|