@xbbg/langgraph 1.4.6 → 1.4.10

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/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/options.ts","../src/core-loader.ts","../src/result-limits.ts","../src/langchain-tool.ts","../src/chart-spec.ts","../src/cdx-fields.ts","../src/descriptions.ts","../src/ext-schemas.ts","../src/ext-tools.ts","../src/schemas.ts","../src/tools.ts","../src/index.ts"],"names":["record","tool","zodToJsonSchema","z","z2","text","nonEmptyString","stringArray","resultString"],"mappings":"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","file":"index.js","sourcesContent":["import type * as xbbg from \"@xbbg/core\";\n\nimport type { XbbgCoreLike, XbbgEngineLike } from \"./core-loader\";\n\nexport const BLOOMBERG_TOOL_NAMES = [\n \"xbbg_bdp\",\n \"xbbg_bdh\",\n \"xbbg_bds\",\n \"xbbg_bdib\",\n \"xbbg_bdtick\",\n \"xbbg_check_entitlements\",\n \"xbbg_bql\",\n \"xbbg_bsrch\",\n \"xbbg_bqr\",\n \"xbbg_bflds\",\n \"xbbg_beqs\",\n \"xbbg_yas\",\n \"xbbg_preferreds\",\n \"xbbg_corporate_bonds\",\n \"xbbg_index_members\",\n \"xbbg_resolve_isins\",\n \"xbbg_issuer_isins\",\n \"xbbg_etf_holdings\",\n \"xbbg_stream_snapshot\",\n \"xbbg_mktbar_snapshot\",\n \"xbbg_depth_snapshot\",\n \"xbbg_ext_ticker\",\n \"xbbg_ext_futures\",\n \"xbbg_ext_cdx\",\n \"xbbg_ext_currency\",\n \"xbbg_ext_bql_builder\",\n \"xbbg_ext_chart_spec\",\n \"xbbg_ext_market_session\",\n \"xbbg_ext_yas_overrides\",\n \"xbbg_ext_constants\",\n \"xbbg_ext_columns\",\n \"xbbg_ext_calculate\",\n] as const;\n\nexport type BloombergToolName = (typeof BLOOMBERG_TOOL_NAMES)[number];\n\nexport interface BloombergToolsOptions {\n readonly engine?: XbbgEngineLike;\n readonly engineConfig?: xbbg.EngineConfig;\n readonly core?: XbbgCoreLike;\n readonly maxSecurities?: number;\n readonly maxFields?: number;\n readonly maxRows?: number;\n readonly maxStringChars?: number;\n readonly maxBqlQueryChars?: number;\n readonly maxSearchSpecChars?: number;\n readonly maxStreamUpdates?: number;\n readonly maxStreamWaitMs?: number;\n readonly validateFields?: boolean;\n readonly disabledTools?: readonly BloombergToolName[];\n}\n\nexport interface NormalizedBloombergToolsOptions {\n readonly engine?: XbbgEngineLike;\n readonly engineConfig: xbbg.EngineConfig;\n readonly core?: XbbgCoreLike;\n readonly maxSecurities: number;\n readonly maxFields: number;\n readonly maxRows: number;\n readonly maxStringChars: number;\n readonly maxBqlQueryChars: number;\n readonly maxSearchSpecChars: number;\n readonly maxStreamUpdates: number;\n readonly maxStreamWaitMs: number;\n readonly validateFields: boolean | undefined;\n readonly disabledTools: ReadonlySet<BloombergToolName>;\n}\n\nconst DEFAULT_MAX_SECURITIES = 25;\nconst DEFAULT_MAX_FIELDS = 25;\nconst DEFAULT_MAX_ROWS = 500;\nconst DEFAULT_MAX_STRING_CHARS = 2000;\nconst DEFAULT_MAX_BQL_QUERY_CHARS = 4000;\nconst DEFAULT_MAX_SEARCH_SPEC_CHARS = 1000;\nconst DEFAULT_MAX_STREAM_UPDATES = 10;\nconst DEFAULT_MAX_STREAM_WAIT_MS = 15_000;\n\n/**\n * Default hard per-request timeout applied to lazily connected engines.\n * @xbbg/core disables request timeouts by default (`requestTimeoutMs: 0`),\n * which would let a wedged Terminal session hang tool calls forever. An\n * explicit `engineConfig.requestTimeoutMs` (including 0) always wins.\n */\nexport const DEFAULT_ENGINE_REQUEST_TIMEOUT_MS = 60_000;\n\nfunction engineConfigWithDefaults(config: xbbg.EngineConfig | undefined): xbbg.EngineConfig {\n if (config?.requestTimeoutMs !== undefined) {\n return config;\n }\n return { ...config, requestTimeoutMs: DEFAULT_ENGINE_REQUEST_TIMEOUT_MS };\n}\n\nfunction positiveInteger(value: number | undefined, fallback: number, name: string): number {\n if (value === undefined) {\n return fallback;\n }\n if (!Number.isInteger(value) || value <= 0) {\n throw new RangeError(`${name} must be a positive integer; got ${String(value)}`);\n }\n return value;\n}\n\nfunction disabledToolSet(\n tools: readonly BloombergToolName[] | undefined,\n): ReadonlySet<BloombergToolName> {\n return new Set(tools ?? []);\n}\n\nexport function normalizeBloombergToolsOptions(\n options: BloombergToolsOptions = {},\n): NormalizedBloombergToolsOptions {\n return {\n core: options.core,\n disabledTools: disabledToolSet(options.disabledTools),\n engine: options.engine,\n engineConfig: engineConfigWithDefaults(options.engineConfig),\n maxBqlQueryChars: positiveInteger(\n options.maxBqlQueryChars,\n DEFAULT_MAX_BQL_QUERY_CHARS,\n \"maxBqlQueryChars\",\n ),\n maxFields: positiveInteger(options.maxFields, DEFAULT_MAX_FIELDS, \"maxFields\"),\n maxRows: positiveInteger(options.maxRows, DEFAULT_MAX_ROWS, \"maxRows\"),\n maxSearchSpecChars: positiveInteger(\n options.maxSearchSpecChars,\n DEFAULT_MAX_SEARCH_SPEC_CHARS,\n \"maxSearchSpecChars\",\n ),\n maxStreamUpdates: positiveInteger(\n options.maxStreamUpdates,\n DEFAULT_MAX_STREAM_UPDATES,\n \"maxStreamUpdates\",\n ),\n maxStreamWaitMs: positiveInteger(\n options.maxStreamWaitMs,\n DEFAULT_MAX_STREAM_WAIT_MS,\n \"maxStreamWaitMs\",\n ),\n maxSecurities: positiveInteger(options.maxSecurities, DEFAULT_MAX_SECURITIES, \"maxSecurities\"),\n maxStringChars: positiveInteger(\n options.maxStringChars,\n DEFAULT_MAX_STRING_CHARS,\n \"maxStringChars\",\n ),\n validateFields: options.validateFields,\n };\n}\n\nexport function isToolDisabled(\n options: NormalizedBloombergToolsOptions,\n name: BloombergToolName,\n): boolean {\n return options.disabledTools.has(name);\n}\n","import type * as xbbg from \"@xbbg/core\";\n\nimport type { BloombergToolsOptions, NormalizedBloombergToolsOptions } from \"./options\";\nimport { normalizeBloombergToolsOptions } from \"./options\";\n\nexport type XbbgCoreModule = typeof xbbg;\nexport interface EntitlementReport {\n readonly entitled: boolean;\n readonly failedEids: readonly number[];\n}\n\ntype CoreEngineMethods = Pick<\n Awaited<ReturnType<XbbgCoreModule[\"connect\"]>>,\n | \"bdp\"\n | \"bdh\"\n | \"bds\"\n | \"bql\"\n | \"bsrch\"\n | \"bqr\"\n | \"bflds\"\n | \"beqs\"\n | \"yas\"\n | \"preferreds\"\n | \"corporateBonds\"\n | \"indexMembers\"\n | \"resolveIsins\"\n | \"issuerIsins\"\n | \"etfHoldings\"\n | \"stream\"\n | \"mktbar\"\n | \"depth\"\n>;\n\nexport type XbbgEngineLike = {\n readonly [Method in keyof CoreEngineMethods]: OmitThisParameter<CoreEngineMethods[Method]>;\n} & {\n readonly bdib: (\n ticker: string,\n options: xbbg.BdibOptions & { readonly returnEids?: boolean },\n ) => Promise<unknown>;\n readonly bdtick: (\n ticker: string,\n options: xbbg.BdtickOptions & { readonly returnEids?: boolean },\n ) => Promise<unknown>;\n readonly checkEntitlements: (\n service: string,\n eids: readonly number[],\n ) => Promise<EntitlementReport>;\n};\nexport interface XbbgCoreLike {\n readonly ext: XbbgCoreModule[\"ext\"];\n readonly connect: (config?: xbbg.EngineConfig) => Promise<XbbgEngineLike>;\n}\n\nexport interface CoreResolver {\n readonly options: NormalizedBloombergToolsOptions;\n getCore(): Promise<XbbgCoreLike>;\n getEngine(): Promise<XbbgEngineLike>;\n}\n\nasync function importCore(): Promise<XbbgCoreLike> {\n // @xbbg/core is loaded lazily so constructing tools never loads the native addon.\n return (await import(\"@xbbg/core\")) as unknown as XbbgCoreLike;\n}\n\nexport function createCoreResolver(options: BloombergToolsOptions = {}): CoreResolver {\n const normalized = normalizeBloombergToolsOptions(options);\n let corePromise: Promise<XbbgCoreLike> | undefined;\n let enginePromise: Promise<XbbgEngineLike> | undefined;\n\n async function cacheCoreImport(): Promise<XbbgCoreLike> {\n const promise = importCore();\n corePromise = promise;\n promise.catch(() => {\n if (corePromise === promise) {\n corePromise = undefined;\n }\n });\n return await promise;\n }\n\n async function cacheEngineConnect(): Promise<XbbgEngineLike> {\n const promise = (async (): Promise<XbbgEngineLike> => {\n const core = await getCore();\n return await core.connect(normalized.engineConfig);\n })();\n enginePromise = promise;\n promise.catch(() => {\n if (enginePromise === promise) {\n enginePromise = undefined;\n }\n });\n return await promise;\n }\n\n async function getCore(): Promise<XbbgCoreLike> {\n if (normalized.core !== undefined) {\n return normalized.core;\n }\n return await (corePromise ?? cacheCoreImport());\n }\n\n async function getEngine(): Promise<XbbgEngineLike> {\n if (normalized.engine !== undefined) {\n return normalized.engine;\n }\n return await (enginePromise ?? cacheEngineConnect());\n }\n\n return {\n getCore,\n getEngine,\n options: normalized,\n };\n}\n","import type { BloombergToolName } from \"./options\";\n\ninterface LimitResult {\n readonly rowCount: number | null;\n readonly truncated: boolean;\n readonly value: unknown;\n}\n\nexport interface ToolEnvelope {\n readonly tool: BloombergToolName;\n readonly rowCount: number | null;\n readonly truncated: boolean;\n readonly data: unknown;\n}\n\nexport type ToolContentAndArtifact = [string, ToolEnvelope];\n\ninterface LimitState {\n truncated: boolean;\n}\n\nconst MAX_RESULT_DEPTH = 32;\n/** Maximum aggregate EIDs retained and accepted by entitlement checks. */\nexport const MAX_ENTITLEMENT_EIDS = 10_000;\nexport const MAX_BLOOMBERG_EID = 2_147_483_647;\nconst MAX_EID_SECURITIES = 1_000;\nconst MAX_EID_SECURITY_NAME_BYTES = 65_536;\nconst UTF8_ENCODER = new TextEncoder();\n\nfunction isPlainObject(value: object): value is Record<string, unknown> {\n const prototype: unknown = Object.getPrototypeOf(value);\n return prototype === Object.prototype || prototype === null;\n}\n\nfunction truncateString(value: string, maxStringChars: number, state: LimitState): string {\n if (value.length <= maxStringChars) {\n return value;\n }\n state.truncated = true;\n return `${value.slice(0, maxStringChars)}…[truncated ${value.length - maxStringChars} chars]`;\n}\n\nfunction arrayMetadata(value: readonly unknown[]): Record<string, unknown> {\n const metadata: Record<string, unknown> = {};\n for (const [key, entry] of Object.entries(value)) {\n if (!/^(?:0|[1-9]\\d*)$/u.test(key)) {\n metadata[key] = entry;\n }\n }\n return metadata;\n}\n\ninterface EidDataTruncation {\n readonly totalSecurityCount: number;\n readonly retainedSecurityCount: number;\n readonly omittedSecurityCount: number;\n readonly invalidSecurityCount: number;\n readonly totalEidCount: number;\n readonly retainedEidCount: number;\n /** Counts align by index with Object.keys(eidData), avoiding duplicate security-name bytes. */\n readonly securityCounts: readonly { originalCount: number; retainedCount: number }[];\n}\n\ninterface LimitedEidData {\n readonly data: unknown;\n readonly truncation?: EidDataTruncation;\n}\n\nfunction limitEidData(\n value: unknown,\n maxStringChars: number,\n state: LimitState,\n depth: number,\n seen: WeakSet<object>,\n): LimitedEidData {\n if (typeof value !== \"object\" || value === null || !isPlainObject(value)) {\n state.truncated = true;\n return {\n data: {},\n truncation: {\n invalidSecurityCount: 1,\n omittedSecurityCount: 0,\n retainedEidCount: 0,\n retainedSecurityCount: 0,\n securityCounts: [],\n totalEidCount: 0,\n totalSecurityCount: 1,\n },\n };\n }\n const data: Record<string, unknown> = Object.create(null) as Record<string, unknown>;\n const securityCounts: { originalCount: number; retainedCount: number }[] = [];\n const entries = Object.entries(value);\n let retainedEidCount = 0;\n let retainedSecurityCount = 0;\n let retainedSecurityNameBytes = 0;\n let totalEidCount = 0;\n let invalidSecurityCount = 0;\n for (const [security, eids] of entries) {\n if (!Array.isArray(eids)) {\n state.truncated = true;\n invalidSecurityCount += 1;\n continue;\n }\n let validEids = true;\n for (let index = 0; index < eids.length; index += 1) {\n const eid: unknown = eids[index];\n if (\n !Object.hasOwn(eids, index) ||\n typeof eid !== \"number\" ||\n !Number.isInteger(eid) ||\n eid <= 0 ||\n eid > MAX_BLOOMBERG_EID\n ) {\n validEids = false;\n break;\n }\n }\n if (!validEids) {\n state.truncated = true;\n invalidSecurityCount += 1;\n continue;\n }\n const originalCount = eids.length;\n totalEidCount += originalCount;\n const securityNameBytes = UTF8_ENCODER.encode(security).byteLength;\n const canRetainSecurity =\n retainedSecurityCount < MAX_EID_SECURITIES &&\n retainedSecurityNameBytes + securityNameBytes <= MAX_EID_SECURITY_NAME_BYTES;\n if (!canRetainSecurity) {\n state.truncated = true;\n continue;\n }\n retainedSecurityCount += 1;\n retainedSecurityNameBytes += securityNameBytes;\n const remainingEidCapacity = Math.max(0, MAX_ENTITLEMENT_EIDS - retainedEidCount);\n const retained = eids.slice(0, remainingEidCapacity);\n retainedEidCount += retained.length;\n data[security] = limitValue(retained, MAX_ENTITLEMENT_EIDS, maxStringChars, state, depth, seen);\n securityCounts.push({\n originalCount,\n retainedCount: retained.length,\n });\n if (retained.length !== originalCount) {\n state.truncated = true;\n }\n }\n const omittedSecurityCount = entries.length - retainedSecurityCount - invalidSecurityCount;\n const wasTruncated =\n retainedSecurityCount !== entries.length ||\n retainedEidCount !== totalEidCount ||\n invalidSecurityCount > 0;\n return {\n data,\n ...(wasTruncated\n ? {\n truncation: {\n invalidSecurityCount,\n omittedSecurityCount,\n retainedEidCount,\n retainedSecurityCount,\n securityCounts,\n totalEidCount,\n totalSecurityCount: entries.length,\n },\n }\n : {}),\n };\n}\n\nfunction limitValue(\n value: unknown,\n maxRows: number,\n maxStringChars: number,\n state: LimitState,\n depth = 0,\n seen: WeakSet<object> = new WeakSet<object>(),\n): unknown {\n if (typeof value === \"string\") {\n return truncateString(value, maxStringChars, state);\n }\n if (value instanceof Date) {\n return value.toISOString();\n }\n if (depth > MAX_RESULT_DEPTH) {\n state.truncated = true;\n return \"[Max result depth exceeded]\";\n }\n if (Array.isArray(value)) {\n if (seen.has(value)) {\n state.truncated = true;\n return \"[Circular]\";\n }\n seen.add(value);\n const capped = value.length > maxRows ? value.slice(0, maxRows) : value;\n if (capped.length !== value.length) {\n state.truncated = true;\n }\n const rows = capped.map((item) =>\n limitValue(item, maxRows, maxStringChars, state, depth + 1, seen),\n );\n const metadata = arrayMetadata(value);\n if (Object.keys(metadata).length === 0) {\n return rows;\n }\n const output: Record<string, unknown> = { rows };\n for (const [key, entry] of Object.entries(metadata)) {\n if (key === \"eidData\") {\n const limited = limitEidData(entry, maxStringChars, state, depth + 1, seen);\n output.eidData = limited.data;\n if (limited.truncation !== undefined) {\n output.eidDataTruncation = limited.truncation;\n }\n continue;\n }\n output[key] = limitValue(entry, maxRows, maxStringChars, state, depth + 1, seen);\n }\n return output;\n }\n if (typeof value === \"object\" && value !== null) {\n if (seen.has(value)) {\n state.truncated = true;\n return \"[Circular]\";\n }\n if (ArrayBuffer.isView(value) || value instanceof ArrayBuffer) {\n state.truncated = true;\n return `[binary data: ${value.byteLength} bytes]`;\n }\n if (!isPlainObject(value)) {\n const toJSON = (value as Record<string, unknown>).toJSON;\n if (typeof toJSON === \"function\") {\n seen.add(value);\n return limitValue(toJSON.call(value), maxRows, maxStringChars, state, depth + 1, seen);\n }\n return value;\n }\n seen.add(value);\n const output: Record<string, unknown> = {};\n for (const [key, entry] of Object.entries(value)) {\n output[key] = limitValue(entry, maxRows, maxStringChars, state, depth + 1, seen);\n }\n return output;\n }\n return value;\n}\n\nfunction rowCountOf(value: unknown): number | null {\n if (Array.isArray(value)) {\n return value.length;\n }\n if (typeof value !== \"object\" || value === null) {\n return null;\n }\n const record = value as Record<string, unknown>;\n const rowCount = record.rowCount;\n if (typeof rowCount === \"number\" && Number.isInteger(rowCount) && rowCount >= 0) {\n return rowCount;\n }\n const updateCount = record.updateCount;\n if (typeof updateCount === \"number\" && Number.isInteger(updateCount) && updateCount >= 0) {\n return updateCount;\n }\n return null;\n}\n\nconst ERROR_SHAPE_KEYS = new Set([\n \"error\",\n \"errors\",\n \"fielderrors\",\n \"fieldexception\",\n \"fieldexceptions\",\n \"responseerror\",\n \"securityerror\",\n]);\n\nfunction hasErrorShape(value: unknown): boolean {\n const pending: unknown[] = [value];\n const seen = new WeakSet<object>();\n\n while (pending.length > 0) {\n const entry = pending.pop();\n if (typeof entry !== \"object\" || entry === null) {\n continue;\n }\n if (seen.has(entry)) {\n continue;\n }\n seen.add(entry);\n\n if (Array.isArray(entry)) {\n for (const child of entry as readonly unknown[]) {\n pending.push(child);\n }\n continue;\n }\n\n for (const [key, child] of Object.entries(entry as Record<string, unknown>)) {\n if (ERROR_SHAPE_KEYS.has(key.toLowerCase()) && child !== undefined) {\n return true;\n }\n pending.push(child);\n }\n }\n\n return false;\n}\n\nexport function limitResult(value: unknown, maxRows: number, maxStringChars: number): LimitResult {\n const state: LimitState = { truncated: false };\n const rowCount = rowCountOf(value);\n const limitedValue = limitValue(value, maxRows, maxStringChars, state);\n return {\n rowCount,\n truncated: state.truncated,\n value: limitedValue,\n };\n}\n\nfunction summarizeEnvelope(envelope: ToolEnvelope): string {\n const rowText =\n envelope.rowCount === null\n ? \"row count unknown\"\n : `${envelope.rowCount} row${envelope.rowCount === 1 ? \"\" : \"s\"}`;\n const notes: string[] = [];\n if (envelope.rowCount === 0 || envelope.data === null || envelope.data === undefined) {\n notes.push(\n \"empty result; verify identifiers, fields, and date range before concluding no data exists\",\n );\n }\n if (envelope.truncated) {\n notes.push(\"artifact truncated to configured limits\");\n }\n if (hasErrorShape(envelope.data)) {\n notes.push(\"inspect result payload for Bloomberg error details\");\n }\n const noteText = notes.length === 0 ? \"\" : `; ${notes.join(\"; \")}`;\n return `${envelope.tool}: ${rowText}; truncated=${String(envelope.truncated)}${noteText}`;\n}\n\nfunction resultJsonReplacer(_key: string, value: unknown): unknown {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n}\n\nfunction formatToolContent(envelope: ToolEnvelope): string {\n const payload = {\n tool: envelope.tool,\n rowCount: envelope.rowCount,\n truncated: envelope.truncated,\n data: envelope.data,\n };\n return `${summarizeEnvelope(envelope)}\\n${JSON.stringify(payload, resultJsonReplacer)}`;\n}\n\nexport function createToolResult(\n tool: BloombergToolName,\n value: unknown,\n maxRows: number,\n maxStringChars: number,\n): ToolContentAndArtifact {\n const limited = limitResult(value, maxRows, maxStringChars);\n const envelope: ToolEnvelope = {\n tool,\n rowCount: limited.rowCount,\n truncated: limited.truncated,\n data: limited.value,\n };\n return [formatToolContent(envelope), envelope];\n}\n\nexport function throwWithToolContext(tool: BloombergToolName, error: unknown): never {\n const prefix = `${tool} failed`;\n if (error instanceof Error) {\n if (error.message.startsWith(prefix)) {\n throw error;\n }\n // Never mutate the original: a memoized connect rejection delivers the\n // same Error instance to every concurrently pending tool call.\n const wrapped = new Error(`${prefix}: ${error.message}`, { cause: error });\n wrapped.name = error.name;\n throw wrapped;\n }\n throw new Error(`${prefix}: ${String(error)}`);\n}\n","import { tool, type StructuredToolInterface } from \"@langchain/core/tools\";\nimport { zodToJsonSchema } from \"zod-to-json-schema\";\nimport type * as z from \"zod/v3\";\n\nimport type { BloombergToolName } from \"./options\";\nimport { throwWithToolContext, type ToolContentAndArtifact } from \"./result-limits\";\n\ntype ZodOutput<T> = z.ZodType<T, z.ZodTypeDef, unknown>;\n\n/**\n * Subset of the LangChain runnable config forwarded to tool functions.\n * `signal` aborts the call: the LangChain wrapper rejects immediately, and\n * Bloomberg tool functions use it to stop waiting and release subscriptions.\n */\nexport interface ToolInvocationConfig {\n readonly signal?: AbortSignal;\n}\n\ninterface BloombergStructuredToolFields<Input> {\n readonly description: string;\n readonly name: BloombergToolName;\n readonly responseFormat: \"content_and_artifact\";\n readonly schema: ZodOutput<Input>;\n}\n\nfunction inputJsonSchema(schema: ZodOutput<unknown>): Record<string, unknown> {\n const jsonSchema = zodToJsonSchema(schema, {\n $refStrategy: \"none\",\n effectStrategy: \"input\",\n pipeStrategy: \"input\",\n }) as Record<string, unknown>;\n delete jsonSchema.$schema;\n delete jsonSchema.definitions;\n return jsonSchema;\n}\n\n/**\n * Provider-ready JSON Schema for a Bloomberg tool's input parameters, using\n * the same conversion settings as the embedded provider tool definition\n * ($ref-free, input-side of transforms). Exposed so consumers do not each\n * reinvent zod -> JSON Schema conversion and sanitization.\n */\nexport function toolParameterJsonSchema(\n toolInstance: StructuredToolInterface,\n): Record<string, unknown> {\n const schema: unknown = toolInstance.schema;\n if (schema !== null && typeof schema === \"object\" && !(\"safeParse\" in schema)) {\n // Already a JSON Schema object.\n return schema as Record<string, unknown>;\n }\n return inputJsonSchema(schema as ZodOutput<unknown>);\n}\n\nexport function createBloombergStructuredTool<Input>(\n func: (input: Input, config?: ToolInvocationConfig) => Promise<ToolContentAndArtifact>,\n fields: BloombergStructuredToolFields<Input>,\n): StructuredToolInterface {\n const providerToolDefinition = {\n type: \"function\",\n function: {\n description: fields.description,\n name: fields.name,\n parameters: inputJsonSchema(fields.schema),\n },\n };\n\n const guarded = async (\n input: Input,\n config?: ToolInvocationConfig,\n ): Promise<ToolContentAndArtifact> => {\n try {\n // Refuse to start Bloomberg work for calls that are already cancelled.\n config?.signal?.throwIfAborted();\n } catch (error) {\n throwWithToolContext(fields.name, error);\n }\n return await func(input, config);\n };\n\n return tool(\n guarded as never,\n {\n ...fields,\n extras: { providerToolDefinition },\n } as never,\n ) as StructuredToolInterface;\n}\n","import type { BloombergChartSource, ChartKind, ChartRow, ChartSpecInput } from \"./ext-schemas\";\n\ntype GenericChartKind = Exclude<ChartKind, \"bar\" | \"candlestick\" | \"depth\">;\ntype VegaType = \"nominal\" | \"ordinal\" | \"quantitative\" | \"temporal\";\ntype VegaEncoding = Record<string, unknown>;\n\nexport interface ChartSpecSummary {\n readonly chart: ChartKind;\n readonly inputRows: number;\n readonly renderer: \"vega-lite\";\n readonly rowCount: number;\n readonly source: BloombergChartSource;\n readonly title: string;\n readonly truncatedInput: boolean;\n readonly xField?: string;\n readonly yFields: readonly string[];\n readonly seriesField?: string;\n}\n\nexport interface VegaLiteSpec {\n readonly $schema: \"https://vega.github.io/schema/vega-lite/v5.json\";\n readonly data: { readonly values: readonly ChartRow[] };\n readonly description: string;\n readonly title: string;\n readonly [key: string]: unknown;\n}\n\nexport interface ChartSpecOutput {\n readonly kind: \"xbbg.visualization\";\n readonly version: 1;\n readonly component: \"xbbg_chart\";\n readonly renderer: \"vega-lite\";\n readonly rowCount: number;\n readonly inputRowCount: number;\n readonly truncatedInput: boolean;\n readonly source: BloombergChartSource;\n readonly chart: ChartKind;\n readonly summary: ChartSpecSummary;\n readonly spec: VegaLiteSpec;\n readonly warnings: readonly string[];\n}\n\ninterface BuiltChartSpec {\n readonly spec: VegaLiteSpec;\n readonly xField: string;\n readonly yFields: readonly string[];\n readonly seriesField?: string;\n}\n\nconst VEGA_SCHEMA = \"https://vega.github.io/schema/vega-lite/v5.json\" as const;\nconst COMPONENT_NAME = \"xbbg_chart\" as const;\n\nconst X_FIELD_CANDIDATES = [\"date\", \"time\", \"datetime\", \"timestamp\"] as const;\nconst LABEL_FIELD_CANDIDATES = [\"ticker\", \"security\", \"member\", \"name\", \"label\"] as const;\nconst SERIES_FIELD_CANDIDATES = [\"ticker\", \"security\", \"field\", \"side\", \"category\"] as const;\nconst VALUE_FIELD_CANDIDATES = [\n \"value\",\n \"PX_LAST\",\n \"close\",\n \"price\",\n \"weight\",\n \"marketValue\",\n \"market_value\",\n] as const;\nconst OPEN_FIELD_CANDIDATES = [\"open\", \"OPEN\", \"PX_OPEN\"] as const;\nconst HIGH_FIELD_CANDIDATES = [\"high\", \"HIGH\", \"PX_HIGH\"] as const;\nconst LOW_FIELD_CANDIDATES = [\"low\", \"LOW\", \"PX_LOW\"] as const;\nconst CLOSE_FIELD_CANDIDATES = [\"close\", \"CLOSE\", \"PX_LAST\", \"last\", \"value\"] as const;\nconst SIDE_FIELD_CANDIDATES = [\"side\", \"SIDE\", \"type\"] as const;\nconst PRICE_FIELD_CANDIDATES = [\"price\", \"PRICE\", \"px\", \"PX\"] as const;\nconst SIZE_FIELD_CANDIDATES = [\"size\", \"SIZE\", \"quantity\", \"qty\", \"volume\"] as const;\n\nfunction defaultChartForSource(source: BloombergChartSource): ChartKind {\n switch (source) {\n case \"bdib\":\n return \"candlestick\";\n case \"depth\":\n return \"depth\";\n case \"holdings\":\n return \"bar\";\n case \"bdh\":\n case \"rows\":\n return \"line\";\n }\n}\n\nfunction fieldExists(rows: readonly ChartRow[], field: string): boolean {\n for (const row of rows) {\n if (Object.prototype.hasOwnProperty.call(row, field)) {\n return true;\n }\n }\n return false;\n}\n\nfunction findCandidateField(\n rows: readonly ChartRow[],\n candidates: readonly string[],\n): string | undefined {\n for (const candidate of candidates) {\n if (fieldExists(rows, candidate)) {\n return candidate;\n }\n }\n\n const first = rows[0];\n if (first === undefined) {\n return undefined;\n }\n const keys = Object.keys(first);\n for (const candidate of candidates) {\n const lower = candidate.toLowerCase();\n const match = keys.find((key) => key.toLowerCase() === lower);\n if (match !== undefined && fieldExists(rows, match)) {\n return match;\n }\n }\n return undefined;\n}\n\nfunction requireField(\n rows: readonly ChartRow[],\n field: string | undefined,\n label: string,\n candidates: readonly string[],\n): string {\n const resolved = field ?? findCandidateField(rows, candidates);\n if (resolved === undefined || !fieldExists(rows, resolved)) {\n throw new Error(\n `Missing ${label}; pass ${label} explicitly or include one of: ${candidates.join(\", \")}`,\n );\n }\n return resolved;\n}\n\nfunction hasFiniteNumber(rows: readonly ChartRow[], field: string): boolean {\n for (const row of rows) {\n if (typeof row[field] === \"number\" && Number.isFinite(row[field])) {\n return true;\n }\n }\n return false;\n}\n\nfunction firstNumericField(rows: readonly ChartRow[], excludedField: string): string | undefined {\n const first = rows[0];\n if (first === undefined) {\n return undefined;\n }\n for (const key of Object.keys(first)) {\n if (key !== excludedField && hasFiniteNumber(rows, key)) {\n return key;\n }\n }\n return undefined;\n}\n\nfunction requireNumericField(rows: readonly ChartRow[], field: string, label: string): void {\n if (!hasFiniteNumber(rows, field)) {\n throw new Error(`${label} (${field}) must contain at least one finite numeric value`);\n }\n}\n\nfunction inferVegaType(rows: readonly ChartRow[], field: string): VegaType {\n for (const row of rows) {\n const value = row[field];\n if (typeof value === \"number\") {\n return \"quantitative\";\n }\n if (\n typeof value === \"string\" &&\n (/^\\d{4}-\\d{2}-\\d{2}(?:$|[T\\s])/u.test(value) || /^\\d{8}$/u.test(value))\n ) {\n return \"temporal\";\n }\n }\n return \"nominal\";\n}\n\nfunction normalizeTemporalRows(rows: readonly ChartRow[], field: string): readonly ChartRow[] {\n let normalized: ChartRow[] | undefined;\n for (let index = 0; index < rows.length; index += 1) {\n const row = rows[index];\n if (row === undefined) {\n continue;\n }\n const value = row[field];\n if (typeof value !== \"string\" || !/^\\d{8}$/u.test(value)) {\n normalized?.push(row);\n continue;\n }\n normalized ??= rows.slice(0, index);\n normalized.push({\n ...row,\n [field]: `${value.slice(0, 4)}-${value.slice(4, 6)}-${value.slice(6, 8)}`,\n });\n }\n return normalized ?? rows;\n}\n\nfunction tooltip(fields: readonly string[]): readonly VegaEncoding[] {\n return fields.map((field) => ({\n field,\n type: field === \"_xbbg_value\" ? \"quantitative\" : \"nominal\",\n }));\n}\n\nfunction datumField(field: string): string {\n return `datum[${JSON.stringify(field)}]`;\n}\n\nfunction buildGenericSpec(\n input: ChartSpecInput,\n rows: readonly ChartRow[],\n chart: GenericChartKind,\n title: string,\n): BuiltChartSpec {\n const xField = requireField(rows, input.xField, \"xField\", X_FIELD_CANDIDATES);\n let yFields: readonly string[];\n if (input.yFields !== undefined) {\n yFields = input.yFields;\n } else {\n const yField =\n findCandidateField(rows, VALUE_FIELD_CANDIDATES) ?? firstNumericField(rows, xField);\n if (yField === undefined) {\n throw new Error(\"Missing yFields; include at least one numeric value field\");\n }\n yFields = [yField];\n }\n if (yFields.length === 0) {\n throw new Error(\"Missing yFields; include at least one numeric value field\");\n }\n for (const field of yFields) {\n if (!fieldExists(rows, field)) {\n throw new Error(`Missing y field: ${field}`);\n }\n requireNumericField(rows, field, \"yField\");\n }\n\n const normalizedRows =\n inferVegaType(rows, xField) === \"temporal\" ? normalizeTemporalRows(rows, xField) : rows;\n const seriesField =\n input.seriesField ??\n (yFields.length === 1 ? findCandidateField(rows, SERIES_FIELD_CANDIDATES) : undefined);\n if (seriesField !== undefined && !fieldExists(rows, seriesField)) {\n throw new Error(`Missing series field: ${seriesField}`);\n }\n\n const mark = chart === \"scatter\" ? \"point\" : chart;\n const encoding: VegaEncoding = {\n x: { field: xField, title: xField, type: inferVegaType(normalizedRows, xField) },\n };\n\n const transform: unknown[] = [];\n if (yFields.length === 1) {\n const yField = yFields[0];\n if (yField === undefined) {\n throw new Error(\"Missing yFields; include at least one numeric value field\");\n }\n encoding.y = { field: yField, title: yField, type: \"quantitative\" };\n if (seriesField !== undefined) {\n encoding.color = { field: seriesField, title: seriesField, type: \"nominal\" };\n }\n encoding.tooltip = tooltip([\n xField,\n ...(seriesField === undefined ? [] : [seriesField]),\n yField,\n ]);\n } else {\n transform.push({ as: [\"_xbbg_series\", \"_xbbg_value\"], fold: yFields });\n encoding.y = { field: \"_xbbg_value\", title: \"value\", type: \"quantitative\" };\n encoding.color = { field: \"_xbbg_series\", title: \"series\", type: \"nominal\" };\n if (seriesField !== undefined) {\n encoding.detail = { field: seriesField, type: \"nominal\" };\n }\n encoding.tooltip = tooltip([\n xField,\n ...(seriesField === undefined ? [] : [seriesField]),\n \"_xbbg_series\",\n \"_xbbg_value\",\n ]);\n }\n\n const spec: VegaLiteSpec = {\n $schema: VEGA_SCHEMA,\n data: { values: normalizedRows },\n description: `xbbg ${chart} chart spec for ${input.source}`,\n mark: { type: mark, tooltip: true },\n title,\n ...(transform.length === 0 ? {} : { transform }),\n encoding,\n };\n return { spec, xField, yFields, ...(seriesField === undefined ? {} : { seriesField }) };\n}\n\nfunction buildBarSpec(\n input: ChartSpecInput,\n rows: readonly ChartRow[],\n title: string,\n): BuiltChartSpec {\n const xField = requireField(\n rows,\n input.xField ?? input.labelField,\n \"labelField\",\n LABEL_FIELD_CANDIDATES,\n );\n const yField = requireField(\n rows,\n input.valueField ?? input.yFields?.[0],\n \"valueField\",\n VALUE_FIELD_CANDIDATES,\n );\n requireNumericField(rows, yField, \"valueField\");\n const seriesField = input.seriesField;\n if (seriesField !== undefined && !fieldExists(rows, seriesField)) {\n throw new Error(`Missing series field: ${seriesField}`);\n }\n const encoding: VegaEncoding = {\n x: { field: xField, sort: \"-y\", title: xField, type: inferVegaType(rows, xField) },\n y: { field: yField, title: yField, type: \"quantitative\" },\n tooltip: tooltip([xField, ...(seriesField === undefined ? [] : [seriesField]), yField]),\n };\n if (seriesField !== undefined) {\n encoding.color = { field: seriesField, title: seriesField, type: \"nominal\" };\n }\n return {\n spec: {\n $schema: VEGA_SCHEMA,\n data: { values: rows },\n description: `xbbg bar chart spec for ${input.source}`,\n encoding,\n mark: { type: \"bar\", tooltip: true },\n title,\n },\n xField,\n yFields: [yField],\n ...(seriesField === undefined ? {} : { seriesField }),\n };\n}\n\nfunction buildCandlestickSpec(\n input: ChartSpecInput,\n rows: readonly ChartRow[],\n title: string,\n): BuiltChartSpec {\n const xField = requireField(rows, input.xField, \"xField\", X_FIELD_CANDIDATES);\n const openField = requireField(rows, input.openField, \"openField\", OPEN_FIELD_CANDIDATES);\n const highField = requireField(rows, input.highField, \"highField\", HIGH_FIELD_CANDIDATES);\n const lowField = requireField(rows, input.lowField, \"lowField\", LOW_FIELD_CANDIDATES);\n const closeField = requireField(rows, input.closeField, \"closeField\", CLOSE_FIELD_CANDIDATES);\n for (const [label, field] of [\n [\"openField\", openField],\n [\"highField\", highField],\n [\"lowField\", lowField],\n [\"closeField\", closeField],\n ] as const) {\n requireNumericField(rows, field, label);\n }\n const normalizedRows =\n inferVegaType(rows, xField) === \"temporal\" ? normalizeTemporalRows(rows, xField) : rows;\n const color = {\n condition: { test: `${datumField(closeField)} >= ${datumField(openField)}`, value: \"#137333\" },\n value: \"#c5221f\",\n };\n return {\n spec: {\n $schema: VEGA_SCHEMA,\n data: { values: normalizedRows },\n description: `xbbg candlestick chart spec for ${input.source}`,\n encoding: {\n x: { field: xField, title: xField, type: inferVegaType(normalizedRows, xField) },\n },\n layer: [\n {\n mark: \"rule\",\n encoding: {\n color,\n tooltip: tooltip([xField, openField, highField, lowField, closeField]),\n y: { field: lowField, title: \"price\", type: \"quantitative\" },\n y2: { field: highField },\n },\n },\n {\n mark: \"bar\",\n encoding: {\n color,\n y: { field: openField, title: \"price\", type: \"quantitative\" },\n y2: { field: closeField },\n },\n },\n ],\n title,\n },\n xField,\n yFields: [openField, highField, lowField, closeField],\n };\n}\n\nfunction buildDepthSpec(\n input: ChartSpecInput,\n rows: readonly ChartRow[],\n title: string,\n): BuiltChartSpec {\n const priceField = requireField(\n rows,\n input.priceField ?? input.xField,\n \"priceField\",\n PRICE_FIELD_CANDIDATES,\n );\n const sizeField = requireField(\n rows,\n input.sizeField ?? input.valueField ?? input.yFields?.[0],\n \"sizeField\",\n SIZE_FIELD_CANDIDATES,\n );\n const sideField = requireField(\n rows,\n input.sideField ?? input.seriesField,\n \"sideField\",\n SIDE_FIELD_CANDIDATES,\n );\n requireNumericField(rows, priceField, \"priceField\");\n requireNumericField(rows, sizeField, \"sizeField\");\n return {\n spec: {\n $schema: VEGA_SCHEMA,\n data: { values: rows },\n description: `xbbg market depth chart spec for ${input.source}`,\n encoding: {\n color: { field: sideField, title: sideField, type: \"nominal\" },\n tooltip: tooltip([sideField, priceField, sizeField]),\n x: { field: priceField, title: priceField, type: \"quantitative\" },\n y: { field: sizeField, title: sizeField, type: \"quantitative\" },\n },\n mark: { type: \"bar\", tooltip: true },\n title,\n },\n xField: priceField,\n yFields: [sizeField],\n seriesField: sideField,\n };\n}\n\nexport function createChartSpec(input: ChartSpecInput): ChartSpecOutput {\n const maxPoints = input.maxPoints ?? input.rows.length;\n const rows = input.rows.length > maxPoints ? input.rows.slice(0, maxPoints) : input.rows;\n if (rows.length === 0) {\n throw new Error(\"rows must contain at least one chart data row\");\n }\n\n const chart = input.chart ?? defaultChartForSource(input.source);\n const title = input.title ?? `${input.source} ${chart}`;\n const warnings: string[] = [];\n if (rows.length !== input.rows.length) {\n warnings.push(\n `Chart spec contains first ${rows.length} of ${input.rows.length} rows; narrow the upstream request for a complete visualization.`,\n );\n }\n\n const built =\n chart === \"candlestick\"\n ? buildCandlestickSpec(input, rows, title)\n : chart === \"depth\"\n ? buildDepthSpec(input, rows, title)\n : chart === \"bar\"\n ? buildBarSpec(input, rows, title)\n : buildGenericSpec(input, rows, chart, title);\n\n const summary: ChartSpecSummary = {\n chart,\n inputRows: input.rows.length,\n renderer: \"vega-lite\",\n rowCount: rows.length,\n source: input.source,\n title,\n truncatedInput: rows.length !== input.rows.length,\n xField: built.xField,\n yFields: built.yFields,\n ...(built.seriesField === undefined ? {} : { seriesField: built.seriesField }),\n };\n\n return {\n kind: \"xbbg.visualization\",\n version: 1,\n component: COMPONENT_NAME,\n renderer: \"vega-lite\",\n rowCount: rows.length,\n inputRowCount: input.rows.length,\n truncatedInput: rows.length !== input.rows.length,\n source: input.source,\n chart,\n summary,\n spec: built.spec,\n warnings,\n };\n}\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\";\nconst REQUIRED_TOOL_INSTRUCTIONS = [\n \"# Bloomberg tool usage\",\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.\",\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.\",\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.\",\n \"- Issue one tool call per dataset and read any error before retrying; never probe parameter variants in parallel. Omit optional output-shape parameters such as format unless the user asked for a specific shape.\",\n \"\",\n \"## Security identifiers\",\n \"- Pass each security in the form the user supplied it; never translate between identifier kinds on your own.\",\n \"- User supplied a Bloomberg ticker: pass it through fully qualified as <TICKER> <MARKET_SECTOR>, for example <TICKER> <EXCHANGE> Equity, <INDEX_TICKER> Index, or <CCY_PAIR> Curncy.\",\n \"- The market sector ending (Bloomberg yellow key) is part of the security string. The sectors are: Equity, Index, Curncy, Comdty, Corp, Govt, Muni, Mtge, M-Mkt, and Pfd. Equity securities carry an exchange or composite code before the sector (<TICKER> <EXCHANGE> Equity); preferred securities use the Pfd sector; corporate and government bonds use Corp and Govt. Request tools pass the security through to Bloomberg without validating the sector, so copy it exactly as the user supplied it.\",\n \"- User supplied a raw ISIN or CUSIP: pass Bloomberg identifier syntax directly: /isin/<ISIN> or /cusip/<CUSIP>. Never pass the bare identifier without its prefix, except to xbbg_resolve_isins and xbbg_issuer_isins, which take raw ISIN strings.\",\n \"- <TICKER> <MARKET_SECTOR> is a format template, not authorization to construct a ticker. Never invent, recall from memory, or guess the Bloomberg ticker behind an identifier the user gave; identifier syntax is already a complete, valid security input. Use xbbg_resolve_isins only when the user wants the resolved Bloomberg security itself.\",\n \"- Recipe tools that take tickers (xbbg_preferreds, xbbg_corporate_bonds, xbbg_index_members, xbbg_etf_holdings) do not accept identifier syntax. When the user supplied an ISIN or CUSIP for those workflows, resolve it with xbbg_resolve_isins first and use the returned Bloomberg security; never guess the ticker.\",\n \"- Do not use xbbg_bsrch as a replacement for a known ticker, ISIN, or CUSIP.\",\n \"- For dealer quote / BQR workflows, use xbbg_bqr with a fixed-income identifier plus a dealer quote source such as /isin/<ISIN>@<QUOTE_SOURCE> <MARKET_SECTOR>. For raw intraday ticks, use xbbg_bdtick.\",\n \"\",\n \"## Core request tools\",\n \"- xbbg_bdp: current or reference point-in-time fields. 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.\",\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.\",\n \"- xbbg_bds: Bloomberg bulk/table fields. Provide exactly one bulk field; do not use bds for ordinary multi-field reference data.\",\n \"- xbbg_bdib: intraday bars only. Provide one ticker, explicit ISO start/end datetimes with time components, a positive interval in minutes, and timezone context when datetimes are naive.\",\n \"- xbbg_bdtick: intraday tick data. Provide one ticker, explicit ISO start/end datetimes with time components, and explicit eventTypes unless the default event stream is intended. Use includeBrokerCodes or includeConditionCodes only when those columns are needed.\",\n \"- xbbg_check_entitlements: checks whether the current Bloomberg identity is entitled to a nonempty list of EIDs returned by an EID-capable request. Usually use the default //blp/refdata service.\",\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.\",\n \"- xbbg_bsrch: Bloomberg search-grid or saved-search workflows only. Do not use it for ordinary security lookup.\",\n \"- xbbg_bqr: Bloomberg Quote Request / dealer quotes. Prefer fixed-income identifier inputs with a dealer quote source such as /isin/<ISIN>@<QUOTE_SOURCE> <MARKET_SECTOR>, explicit start/end datetimes with time components, and explicit event types.\",\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.\",\n \"- xbbg_beqs: Bloomberg equity screening by named BEQS screen. Prefer this over hand-written BQL when the user names an existing Bloomberg screen.\",\n \"- xbbg_yas: fixed-income YAS recipe fields. Prefer this over manual YAS-style BDP requests when the user asks for yield, duration, spread, or price analytics.\",\n \"- xbbg_preferreds: preferred stock discovery from the issuer's common equity ticker, never a guessed preferred ('Pfd') ticker. Resolve a supplied ISIN/CUSIP with xbbg_resolve_isins first. Prefer this over xbbg_ext_bql_builder plus xbbg_bql when the user wants the actual preferreds result.\",\n \"- xbbg_corporate_bonds: bounded corporate bond universe query for a company ticker. Prefer this over generic BQL for company debt discovery.\",\n \"- xbbg_index_members: index constituents through the core index recipe. Prefer this over generic BDS/BQL members when the user asks for constituents.\",\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.\",\n \"- xbbg_issuer_isins: issuer/bond ISIN workflow for supplied bond ISIN strings.\",\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.\",\n \"- xbbg_stream_snapshot: bounded live market-data observation from //blp/mktdata. Requires explicit maxUpdates and always terminates/unsubscribes.\",\n \"- xbbg_mktbar_snapshot: bounded live market-bar observation from //blp/mktbar for one ticker. Requires explicit maxUpdates and always terminates/unsubscribes.\",\n \"- xbbg_depth_snapshot: bounded market-depth observation from //blp/mktdepthdata for one ticker. Requires explicit maxUpdates and always terminates/unsubscribes.\",\n \"\",\n \"## BQL guidance\",\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.\",\n \"- Basic shape: get(<FIELD_1>, <FIELD_2>) for(<UNIVERSE>). Use placeholders such as '<TICKER> <MARKET_SECTOR>', holdings('<ETF_TICKER> <MARKET_SECTOR>'), or members('<INDEX_TICKER> <MARKET_SECTOR>') until the user supplies real inputs.\",\n \"- Use BQL for universe-oriented analytics and screens only when the user provides a bounded universe, filters, and date range.\",\n \"- Prefer xbbg_ext_bql_builder instead of hand-writing BQL for supported workflows: preferred stocks, corporate bonds, and ETF holdings.\",\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.\",\n \"\",\n \"## Output handling\",\n \"- Tool results use LangChain content_and_artifact output: content starts with a compact summary and then includes bounded model-readable JSON; artifact is the structured bounded envelope with tool, rowCount, truncated, and data for application code.\",\n \"- If a response is empty, truncated, or contains Bloomberg/security errors, say that directly. Do not fill gaps from memory or assumptions.\",\n] as const;\n\nconst OPTIONAL_EXTENSION_INSTRUCTIONS = [\n \"\",\n \"## Extension helper tools\",\n \"- xbbg_ext_ticker: ticker hygiene before live calls. parse_ticker splits generic futures-style tickers only — asset endings Index, Curncy, Comdty, or Corp as <ROOT><N> <ASSET>, or <ROOT><N> <EXCHANGE> Equity — and rejects other market sectors (Pfd, Govt, Muni, Mtge, M-Mkt) and non-futures securities. 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.\",\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.\",\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.\",\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.\",\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.\",\n \"- xbbg_ext_chart_spec: renderer-neutral chart spec helper. Convert bounded rows from xbbg_bdh, xbbg_bdib, holdings, depth, or already-shaped row data into a Vega-Lite JSON spec for frontend rendering; do not use it as proof that Bloomberg data was fetched.\",\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.\",\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.\",\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.\",\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.\",\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.\",\n] as const;\n\nconst OPTIONAL_LIMIT_INSTRUCTIONS = [\n \"\",\n \"## Request limits and inputs\",\n \"- Keep Bloomberg requests bounded: explicit securities, explicit fields, explicit dates, limited rows, and no broad exploratory pulls unless the user narrows the universe.\",\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.\",\n \"- Use primitive kwargs only: string, number, or boolean values. For overrides on xbbg_bdp/xbbg_bdh/xbbg_bds, use primitive values for global overrides and nested primitive maps keyed by exact security for per-security overrides. Do not send other nested objects, arrays, or inferred defaults.\",\n] as const;\n\nexport const BLOOMBERG_TOOL_INSTRUCTIONS = [\n ...REQUIRED_TOOL_INSTRUCTIONS,\n ...OPTIONAL_EXTENSION_INSTRUCTIONS,\n ...OPTIONAL_LIMIT_INSTRUCTIONS,\n].join(\"\\n\");\n\nexport interface BloombergToolInstructionsOptions {\n readonly includeExtensionGuidance?: boolean;\n readonly includeLimitReminder?: boolean;\n}\n\nexport function getBloombergToolInstructions(\n options: BloombergToolInstructionsOptions = {},\n): string {\n const includeExtensionGuidance = options.includeExtensionGuidance ?? true;\n const includeLimitReminder = options.includeLimitReminder ?? true;\n const lines: string[] = [...REQUIRED_TOOL_INSTRUCTIONS];\n if (includeExtensionGuidance) {\n lines.push(...OPTIONAL_EXTENSION_INSTRUCTIONS);\n }\n if (includeLimitReminder) {\n lines.push(...OPTIONAL_LIMIT_INSTRUCTIONS);\n }\n return lines.join(\"\\n\");\n}\n\nexport const BDP_DESCRIPTION =\n 'Bloomberg reference data for current or point-in-time fields. Use for a small bounded list of fully qualified securities. Use /isin/<ISIN> for ISINs and /cusip/<CUSIP> for CUSIPs. Example: securities [\"<TICKER> <MARKET_SECTOR>\"], fields [\"<FIELD>\"].';\n\nexport const BDH_DESCRIPTION =\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 [\"<TICKER> <MARKET_SECTOR>\"], fields [\"<FIELD>\"], start \"<START_DATE>\", end \"<END_DATE>\".';\n\nexport const BDS_DESCRIPTION =\n 'Bloomberg bulk/table reference data. Requires exactly one bulk field, not a field list. Use /isin/<ISIN> for ISINs and /cusip/<CUSIP> for CUSIPs. Example: securities [\"<INDEX_TICKER> <MARKET_SECTOR>\"], field \"<BULK_FIELD>\".';\n\nexport const BDIB_DESCRIPTION =\n 'Bloomberg intraday bars. Requires one ticker plus explicit ISO start/end datetimes with time components and a positive interval in minutes. Use /isin/<ISIN> for ISINs and /cusip/<CUSIP> for CUSIPs. Example: ticker \"<TICKER> <MARKET_SECTOR>\", start \"<START_DATETIME>\", end \"<END_DATETIME>\", interval <MINUTES>.';\n\nexport const BDTICK_DESCRIPTION =\n 'Bloomberg intraday tick data. Requires one ticker plus explicit ISO start/end datetimes with time components. Set eventTypes explicitly, for example [\"<EVENT_TYPE>\"], and includeBrokerCodes/includeConditionCodes only when needed.';\n\nexport const CHECK_ENTITLEMENTS_DESCRIPTION =\n \"Check the current Bloomberg identity against entitlement IDs returned by a request with returnEids enabled. Accepts a nonempty integer EID list and defaults the service to //blp/refdata. This tool is read-only.\";\n\nexport const BQL_DESCRIPTION =\n \"Bloomberg Query Language expression sent as one complete query string. Use for bounded universe analytics with placeholder-shaped syntax such as get(<FIELD>) for('<TICKER> <MARKET_SECTOR>'), holdings('<ETF_TICKER> <MARKET_SECTOR>'), members('<INDEX_TICKER> <MARKET_SECTOR>'), filters with with(...), or dates=range(...). Prefer xbbg_bdp/xbbg_bdh for simple reference or historical requests.\";\n\nexport const BSRCH_DESCRIPTION =\n 'Bloomberg search/grid request. Use for saved-search or ExcelGetGrid-style Bloomberg searches, not ordinary security lookup. Example searchSpec \"<SEARCH_SPEC>\".';\n\nexport const BQR_DESCRIPTION =\n 'Bloomberg Quote Request / dealer quotes. Use for fixed-income dealer quote ticks, preferably with an ISIN plus dealer source such as \"/isin/<ISIN>@<QUOTE_SOURCE> <MARKET_SECTOR>\"; requires explicit ISO start/end datetimes with time components. Set eventTypes explicitly, for example [\"<EVENT_TYPE>\"].';\n\nexport const BFLDS_DESCRIPTION =\n 'Bloomberg field metadata and field search. Use first when a field mnemonic is uncertain. Provide exactly one of fields or searchSpec. Example: fields [\"<FIELD>\"] or searchSpec \"<FIELD_SEARCH_TEXT>\".';\n\nexport const BEQS_DESCRIPTION =\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.\";\n\nexport const YAS_DESCRIPTION =\n \"Bloomberg fixed-income YAS recipe fields for one or more bonds. Use for yield, duration, spread, benchmark, or price analytics; provide explicit fields and optional settlement/yield/price inputs. Pass securities as supplied: '<TICKER> <MARKET_SECTOR>' or identifier syntax such as '/isin/<ISIN> <MARKET_SECTOR>'.\";\n\nexport const PREFERREDS_DESCRIPTION =\n \"Preferred stock discovery for one issuer. Takes the issuer's common equity ticker such as '<TICKER> US Equity', never a preferred ('Pfd') ticker and never a guessed one. If the user supplied an ISIN or CUSIP, resolve it with xbbg_resolve_isins first.\";\n\nexport const CORPORATE_BONDS_DESCRIPTION =\n \"Corporate bond universe query for one issuer/company equity ticker, with optional currency, active-only filter, and result fields. Prefer this over generic BQL for company debt discovery. If the user supplied an ISIN or CUSIP, resolve it with xbbg_resolve_isins first; never guess the ticker.\";\n\nexport const INDEX_MEMBERS_DESCRIPTION =\n \"Index constituent recipe for one Bloomberg index ticker such as '<INDEX_TICKER> Index'. Use for bounded member lists and optional historical/as-of constituent membership; never guess index tickers.\";\n\nexport const RESOLVE_ISINS_DESCRIPTION =\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.\";\n\nexport const ISSUER_ISINS_DESCRIPTION =\n \"Issuer/bond ISIN workflow for supplied bond ISIN strings. Use for issuer-level ISIN discovery starting from known bond ISINs.\";\n\nexport const ETF_HOLDINGS_DESCRIPTION =\n \"ETF holdings recipe for one ETF ticker such as '<ETF_TICKER> <MARKET_SECTOR>'. Use when the user asks for ETF constituents or holdings and wants the bounded holdings result. Resolve a supplied ISIN/CUSIP with xbbg_resolve_isins first; never guess the ticker.\";\n\nexport const STREAM_SNAPSHOT_DESCRIPTION =\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.\";\n\nexport const MKTBAR_SNAPSHOT_DESCRIPTION =\n \"Bounded live market-bar snapshot from //blp/mktbar for one ticker. Collects at most maxUpdates updates until timeout/done, then always unsubscribes.\";\n\nexport const DEPTH_SNAPSHOT_DESCRIPTION =\n \"Bounded live market-depth snapshot from //blp/mktdepthdata for one ticker. Collects at most maxUpdates updates until timeout/done, then always unsubscribes.\";\n\nexport const EXT_TICKER_DESCRIPTION =\n \"Ticker hygiene helpers: parse_ticker (generic futures-style tickers ending in Index, Curncy, Comdty, or Corp, or <ROOT><N> <EXCHANGE> Equity; other market sectors are rejected), normalize_tickers, filter_equity_tickers, is_specific_contract, and validate_generic_ticker.\";\n\nexport const EXT_FUTURES_DESCRIPTION =\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.\";\n\nexport const EXT_CDX_DESCRIPTION =\n \"CDX helpers for parsing, series rolling/resolution, and predefined info/pricing/risk BDP field bundles.\";\n\nexport const EXT_CURRENCY_DESCRIPTION =\n \"Currency planning helpers: build FX pairs, test same-currency requests, and find currencies needing conversion.\";\n\nexport const EXT_BQL_BUILDER_DESCRIPTION =\n \"BQL builders for preferred stocks, corporate bonds, and ETF holdings. Prefer to construct those bounded BQL shapes before xbbg_bql.\";\nexport const EXT_CHART_SPEC_DESCRIPTION =\n \"Renderer-neutral chart spec helper for frontend generative UI. Converts bounded Bloomberg rows from bdh, bdib, holdings, depth, or already-shaped row data into a Vega-Lite JSON spec; it does not fetch Bloomberg data or render images.\";\n\nexport const EXT_MARKET_SESSION_DESCRIPTION =\n \"Market session and timezone helpers for deriving sessions, UTC windows, market rules, exchange metadata, turnover defaults, and BQR datetime defaults.\";\n\nexport const EXT_YAS_OVERRIDES_DESCRIPTION =\n \"Build flat Bloomberg YAS override maps for fixed-income analytics fields.\";\n\nexport const EXT_CONSTANTS_DESCRIPTION =\n \"Static Bloomberg helper constants for date parsing/formatting, futures months, dividend types, and ETF/dividend columns.\";\n\nexport const EXT_COLUMNS_DESCRIPTION =\n \"Column rename helpers for dividend, ETF, and earnings-shaped Bloomberg responses.\";\n\nexport const EXT_CALCULATE_DESCRIPTION =\n \"Small numeric helper operations for Bloomberg workflows, including level percentage calculations.\";\n\nexport function describeConfiguredLimits(options: BloombergToolsOptions): string {\n const parts: string[] = [];\n if (options.maxSecurities !== undefined) {\n parts.push(`maxSecurities=${options.maxSecurities}`);\n }\n if (options.maxFields !== undefined) {\n parts.push(`maxFields=${options.maxFields}`);\n }\n if (options.maxRows !== undefined) {\n parts.push(`maxRows=${options.maxRows}`);\n }\n return parts.length === 0 ? \"default request limits\" : parts.join(\", \");\n}\n","import * as z from \"zod/v3\";\n\nimport type { NormalizedBloombergToolsOptions } from \"./options\";\ntype ZodOutput<T> = z.ZodType<T, z.ZodTypeDef, unknown>;\n\nexport interface StringPair {\n readonly key: string;\n readonly value: string;\n}\n\nexport interface FuturesCandidate {\n readonly ticker: string;\n readonly year: number;\n readonly month: number;\n}\n\nexport type PrimitiveMap = Readonly<Record<string, string | number | boolean>>;\n\nexport type TickerOperation =\n | \"parse_ticker\"\n | \"normalize_tickers\"\n | \"filter_equity_tickers\"\n | \"is_specific_contract\"\n | \"validate_generic_ticker\";\n\nexport type SingleTickerOperation = Exclude<\n TickerOperation,\n \"normalize_tickers\" | \"filter_equity_tickers\"\n>;\n\nexport interface SingleTickerInput {\n readonly operation: SingleTickerOperation;\n readonly ticker: string;\n}\n\nexport interface TickerListInput {\n readonly operation: \"normalize_tickers\" | \"filter_equity_tickers\";\n readonly tickers: readonly string[];\n}\n\nexport type TickerInput = SingleTickerInput | TickerListInput;\n\nexport type FuturesOperation =\n | \"build_futures_ticker\"\n | \"generate_candidates\"\n | \"contract_index\"\n | \"filter_candidates_by_cycle\"\n | \"filter_valid_contracts\"\n | \"get_futures_months\";\n\nexport interface FuturesBuildTickerInput {\n readonly operation: \"build_futures_ticker\";\n readonly prefix: string;\n readonly monthCode: string;\n readonly year: string;\n readonly asset: string;\n}\n\nexport interface FuturesGenerateCandidatesInput {\n readonly operation: \"generate_candidates\";\n readonly genTicker: string;\n readonly year: number;\n readonly month: number;\n readonly day: number;\n readonly freq?: string;\n readonly count?: number;\n}\n\nexport interface FuturesContractIndexInput {\n readonly operation: \"contract_index\";\n readonly genTicker: string;\n}\n\nexport interface FuturesFilterCandidatesByCycleInput {\n readonly operation: \"filter_candidates_by_cycle\";\n readonly candidates: readonly FuturesCandidate[];\n readonly cycle: string;\n}\n\nexport interface FuturesFilterValidContractsInput {\n readonly operation: \"filter_valid_contracts\";\n readonly contracts: readonly StringPair[];\n readonly year: number;\n readonly month: number;\n readonly day: number;\n}\n\nexport interface FuturesMonthsInput {\n readonly operation: \"get_futures_months\";\n}\n\nexport type FuturesInput =\n | FuturesBuildTickerInput\n | FuturesGenerateCandidatesInput\n | FuturesContractIndexInput\n | FuturesFilterCandidatesByCycleInput\n | FuturesFilterValidContractsInput\n | FuturesMonthsInput;\n\nexport type CdxOperation =\n | \"parse_cdx_ticker\"\n | \"previous_cdx_series\"\n | \"cdx_gen_to_specific\"\n | \"cdx_info\"\n | \"cdx_pricing\"\n | \"cdx_risk\";\n\nexport interface CdxTickerInput {\n readonly operation: \"parse_cdx_ticker\" | \"previous_cdx_series\" | \"cdx_info\";\n readonly ticker: string;\n}\n\nexport interface CdxMarketDataInput {\n readonly operation: \"cdx_pricing\" | \"cdx_risk\";\n readonly ticker: string;\n readonly recoveryRate?: number;\n}\n\nexport interface CdxGenToSpecificInput {\n readonly operation: \"cdx_gen_to_specific\";\n readonly genTicker: string;\n readonly series: number;\n}\n\nexport type CdxInput = CdxTickerInput | CdxMarketDataInput | CdxGenToSpecificInput;\n\nexport type CurrencyOperation = \"build_fx_pair\" | \"same_currency\" | \"currencies_needing_conversion\";\n\nexport interface FxPairInput {\n readonly operation: \"build_fx_pair\";\n readonly fromCcy: string;\n readonly toCcy: string;\n}\n\nexport interface SameCurrencyInput {\n readonly operation: \"same_currency\";\n readonly ccy1: string;\n readonly ccy2: string;\n}\n\nexport interface CurrencyConversionInput {\n readonly operation: \"currencies_needing_conversion\";\n readonly currencies: readonly string[];\n readonly target: string;\n}\n\nexport type CurrencyInput = FxPairInput | SameCurrencyInput | CurrencyConversionInput;\n\nexport type BqlBuilderOperation =\n | \"build_preferreds_query\"\n | \"build_corporate_bonds_query\"\n | \"build_etf_holdings_query\";\n\nexport interface PreferredsQueryInput {\n readonly operation: \"build_preferreds_query\";\n readonly equityTicker: string;\n readonly extraFields?: readonly string[];\n}\n\nexport interface CorporateBondsQueryInput {\n readonly operation: \"build_corporate_bonds_query\";\n readonly ticker: string;\n readonly ccy?: string;\n readonly extraFields?: readonly string[];\n readonly activeOnly?: boolean;\n}\n\nexport interface EtfHoldingsQueryInput {\n readonly operation: \"build_etf_holdings_query\";\n readonly etfTicker: string;\n readonly extraFields?: readonly string[];\n}\n\nexport type BqlBuilderInput =\n | PreferredsQueryInput\n | CorporateBondsQueryInput\n | EtfHoldingsQueryInput;\n\nexport type MarketSessionOperation =\n | \"derive_sessions\"\n | \"get_market_rule\"\n | \"infer_timezone\"\n | \"session_times_to_utc\"\n | \"default_turnover_dates\"\n | \"default_bqr_datetimes\"\n | \"get_exchange_override\"\n | \"list_exchange_overrides\";\n\nexport interface DeriveSessionsInput {\n readonly operation: \"derive_sessions\";\n readonly dayStart: string;\n readonly dayEnd: string;\n readonly mic?: string;\n readonly exchCode?: string;\n}\n\nexport interface MarketRuleInput {\n readonly operation: \"get_market_rule\";\n readonly mic?: string;\n readonly exchCode?: string;\n}\n\nexport interface InferTimezoneInput {\n readonly operation: \"infer_timezone\";\n readonly countryIso: string;\n}\n\nexport interface SessionTimesToUtcInput {\n readonly operation: \"session_times_to_utc\";\n readonly startTime: string;\n readonly endTime: string;\n readonly exchangeTz: string;\n readonly date: string;\n}\n\nexport interface TurnoverDatesInput {\n readonly operation: \"default_turnover_dates\";\n readonly startDate?: string;\n readonly endDate?: string;\n}\n\nexport interface BqrDatetimesInput {\n readonly operation: \"default_bqr_datetimes\";\n readonly startDatetime?: string;\n readonly endDatetime?: string;\n}\n\nexport interface ExchangeOverrideLookupInput {\n readonly operation: \"get_exchange_override\";\n readonly ticker: string;\n}\n\nexport interface ListExchangeOverridesInput {\n readonly operation: \"list_exchange_overrides\";\n}\n\nexport type MarketSessionInput =\n | DeriveSessionsInput\n | MarketRuleInput\n | InferTimezoneInput\n | SessionTimesToUtcInput\n | TurnoverDatesInput\n | BqrDatetimesInput\n | ExchangeOverrideLookupInput\n | ListExchangeOverridesInput;\n\nexport interface YasOverridesInput {\n readonly settleDt?: string;\n readonly yieldType?: number;\n readonly spread?: number;\n readonly yieldVal?: number;\n readonly price?: number;\n readonly benchmark?: string;\n}\n\nexport type ConstantsOperation =\n | \"parse_date\"\n | \"fmt_date\"\n | \"get_month_code\"\n | \"get_month_name\"\n | \"get_futures_months\"\n | \"get_dvd_type\"\n | \"get_dvd_types\"\n | \"get_dvd_cols\"\n | \"get_etf_cols\";\n\nexport interface ParseDateInput {\n readonly operation: \"parse_date\";\n readonly dateStr: string;\n}\n\nexport interface FmtDateInput {\n readonly operation: \"fmt_date\";\n readonly year: number;\n readonly month: number;\n readonly day: number;\n readonly fmt?: string;\n}\n\nexport interface MonthCodeInput {\n readonly operation: \"get_month_code\";\n readonly monthName: string;\n}\n\nexport interface MonthNameInput {\n readonly operation: \"get_month_name\";\n readonly code: string;\n}\n\nexport interface DvdTypeInput {\n readonly operation: \"get_dvd_type\";\n readonly dvdType: string;\n}\n\nexport interface ConstantsLookupInput {\n readonly operation: \"get_futures_months\" | \"get_dvd_types\" | \"get_dvd_cols\" | \"get_etf_cols\";\n}\n\nexport type ConstantsInput =\n | ParseDateInput\n | FmtDateInput\n | MonthCodeInput\n | MonthNameInput\n | DvdTypeInput\n | ConstantsLookupInput;\n\nexport type ColumnsOperation =\n | \"rename_dividend_columns\"\n | \"rename_etf_columns\"\n | \"build_earning_header_rename\";\n\nexport interface RenameColumnsInput {\n readonly operation: \"rename_dividend_columns\" | \"rename_etf_columns\";\n readonly columns: readonly string[];\n}\n\nexport interface EarningHeaderRenameInput {\n readonly operation: \"build_earning_header_rename\";\n readonly headerRow: readonly StringPair[];\n readonly dataColumns: readonly string[];\n}\n\nexport type ColumnsInput = RenameColumnsInput | EarningHeaderRenameInput;\n\nexport interface CalculateInput {\n readonly operation: \"calculate_level_percentages\";\n readonly values: readonly (number | null)[];\n readonly levels: readonly (number | null)[];\n}\n\nexport type BloombergChartSource = \"bdh\" | \"bdib\" | \"holdings\" | \"depth\" | \"rows\";\n\nexport type ChartKind = \"line\" | \"area\" | \"bar\" | \"scatter\" | \"candlestick\" | \"depth\";\n\nexport type ChartRenderer = \"vega-lite\";\n\nexport type ChartScalar = string | number | boolean | null;\n\nexport type ChartRow = Readonly<Record<string, ChartScalar>>;\n\nexport interface ChartSpecInput {\n readonly source: BloombergChartSource;\n readonly rows: readonly ChartRow[];\n readonly renderer?: ChartRenderer;\n readonly chart?: ChartKind;\n readonly title?: string;\n readonly xField?: string;\n readonly yFields?: readonly string[];\n readonly seriesField?: string;\n readonly labelField?: string;\n readonly valueField?: string;\n readonly openField?: string;\n readonly highField?: string;\n readonly lowField?: string;\n readonly closeField?: string;\n readonly sideField?: string;\n readonly priceField?: string;\n readonly sizeField?: string;\n readonly maxPoints?: number;\n}\n\nconst stringPairSchema = z.object({\n key: z.string().trim().min(1).describe(\"String pair key.\"),\n value: z.string().trim().min(1).describe(\"String pair value.\"),\n});\n\nconst futuresCandidateSchema = z.object({\n month: z.number().int().min(1).max(12).describe(\"Contract month number, 1-12.\"),\n ticker: z.string().trim().min(1).describe(\"Specific Bloomberg futures ticker.\"),\n year: z.number().int().min(1900).describe(\"Contract year.\"),\n});\n\nfunction nonEmptyString(\n options: NormalizedBloombergToolsOptions,\n description: string,\n): ZodOutput<string> {\n return z\n .string()\n .trim()\n .pipe(z.string().min(1).max(options.maxStringChars).describe(description));\n}\n\nfunction stringArray(\n options: NormalizedBloombergToolsOptions,\n description: string,\n maxItems = options.maxFields,\n): ZodOutput<string[]> {\n return z.array(nonEmptyString(options, description)).min(1).max(maxItems).describe(description);\n}\n\nfunction optionalString(\n options: NormalizedBloombergToolsOptions,\n description: string,\n): ZodOutput<string | undefined> {\n return nonEmptyString(options, description).optional();\n}\nexport function tickerSchema(options: NormalizedBloombergToolsOptions): ZodOutput<TickerInput> {\n const ticker = nonEmptyString(\n options,\n \"One generic futures-style Bloomberg ticker: <ROOT><N> ending in Index, Curncy, Comdty, or Corp, or <ROOT><N> <EXCHANGE> Equity. parse_ticker rejects other market sectors (Pfd, Govt, Muni, Mtge, M-Mkt) and non-futures securities.\",\n );\n const tickers = stringArray(\n options,\n \"Bloomberg tickers to normalize or filter.\",\n options.maxSecurities,\n );\n return z.discriminatedUnion(\"operation\", [\n z.object({ operation: z.literal(\"parse_ticker\"), ticker }).strict(),\n z.object({ operation: z.literal(\"is_specific_contract\"), ticker }).strict(),\n z.object({ operation: z.literal(\"validate_generic_ticker\"), ticker }).strict(),\n z.object({ operation: z.literal(\"normalize_tickers\"), tickers }).strict(),\n z.object({ operation: z.literal(\"filter_equity_tickers\"), tickers }).strict(),\n ]);\n}\n\nexport function futuresSchema(options: NormalizedBloombergToolsOptions): ZodOutput<FuturesInput> {\n const genTicker = nonEmptyString(\n options,\n \"Generic Bloomberg futures ticker, for example ES1 Index.\",\n );\n const year = z.number().int().describe(\"Contract year, for example 2024.\");\n const month = z.number().int().min(1).max(12).describe(\"Month number, 1-12.\");\n const day = z.number().int().min(1).max(31).describe(\"Day number, 1-31.\");\n return z.discriminatedUnion(\"operation\", [\n z\n .object({\n asset: nonEmptyString(\n options,\n \"Bloomberg asset class suffix, for example Index or Comdty.\",\n ),\n monthCode: nonEmptyString(options, \"Bloomberg futures month code, for example H.\"),\n operation: z.literal(\"build_futures_ticker\"),\n prefix: nonEmptyString(options, \"Futures ticker root prefix, for example ES.\"),\n year: z\n .union([z.string().trim().min(1), z.number().int().transform(String)])\n .describe(\"Contract year, full or abbreviated, as a string or integer.\"),\n })\n .strict(),\n z\n .object({\n count: z\n .number()\n .int()\n .positive()\n .optional()\n .describe(\"Maximum number of futures candidates to generate.\"),\n day,\n freq: optionalString(options, \"Futures frequency/cycle hint.\"),\n genTicker,\n month,\n operation: z.literal(\"generate_candidates\"),\n year,\n })\n .strict(),\n z.object({ genTicker, operation: z.literal(\"contract_index\") }).strict(),\n z\n .object({\n candidates: z\n .array(futuresCandidateSchema)\n .min(1)\n .max(options.maxFields)\n .describe(\"Candidate futures contracts.\"),\n cycle: nonEmptyString(options, \"Futures cycle code to filter candidates by.\"),\n operation: z.literal(\"filter_candidates_by_cycle\"),\n })\n .strict(),\n z\n .object({\n contracts: z\n .array(stringPairSchema)\n .min(1)\n .max(options.maxFields)\n .describe(\"Contract pairs for validity filtering.\"),\n day,\n month,\n operation: z.literal(\"filter_valid_contracts\"),\n year,\n })\n .strict(),\n z.object({ operation: z.literal(\"get_futures_months\") }).strict(),\n ]);\n}\n\nexport function cdxSchema(options: NormalizedBloombergToolsOptions): ZodOutput<CdxInput> {\n const ticker = nonEmptyString(options, \"CDX ticker, generic or specific.\");\n const recoveryRate = z\n .number()\n .min(0)\n .max(1)\n .optional()\n .describe(\"Decimal recovery rate override, e.g. 0.4 for 40%; sent as the CDS_RR override.\");\n return z.discriminatedUnion(\"operation\", [\n z.object({ operation: z.literal(\"parse_cdx_ticker\"), ticker }).strict(),\n z.object({ operation: z.literal(\"previous_cdx_series\"), ticker }).strict(),\n z.object({ operation: z.literal(\"cdx_info\"), ticker }).strict(),\n z.object({ operation: z.literal(\"cdx_pricing\"), recoveryRate, ticker }).strict(),\n z.object({ operation: z.literal(\"cdx_risk\"), recoveryRate, ticker }).strict(),\n z\n .object({\n genTicker: nonEmptyString(\n options,\n \"Generic CDX ticker, for example CDX IG CDSI GEN 5Y Corp.\",\n ),\n operation: z.literal(\"cdx_gen_to_specific\"),\n series: z.number().int().positive().describe(\"Specific CDX series number.\"),\n })\n .strict(),\n ]);\n}\n\nexport function currencySchema(options: NormalizedBloombergToolsOptions): ZodOutput<CurrencyInput> {\n return z.discriminatedUnion(\"operation\", [\n z\n .object({\n fromCcy: nonEmptyString(options, \"Source ISO currency code.\"),\n operation: z.literal(\"build_fx_pair\"),\n toCcy: nonEmptyString(options, \"Destination ISO currency code.\"),\n })\n .strict(),\n z\n .object({\n ccy1: nonEmptyString(options, \"First ISO currency code.\"),\n ccy2: nonEmptyString(options, \"Second ISO currency code.\"),\n operation: z.literal(\"same_currency\"),\n })\n .strict(),\n z\n .object({\n currencies: stringArray(options, \"ISO currency codes to check.\"),\n operation: z.literal(\"currencies_needing_conversion\"),\n target: nonEmptyString(options, \"Target ISO currency code.\"),\n })\n .strict(),\n ]);\n}\n\nexport function bqlBuilderSchema(\n options: NormalizedBloombergToolsOptions,\n): ZodOutput<BqlBuilderInput> {\n const extraFields = stringArray(options, \"Extra BQL fields to include.\").optional();\n return z.discriminatedUnion(\"operation\", [\n z\n .object({\n equityTicker: nonEmptyString(options, \"Equity ticker for preferreds query.\"),\n extraFields,\n operation: z.literal(\"build_preferreds_query\"),\n })\n .strict(),\n z\n .object({\n activeOnly: z\n .boolean()\n .optional()\n .describe(\"Restrict corporate bond query to active bonds.\"),\n ccy: optionalString(options, \"Currency filter for corporate bond query.\"),\n extraFields,\n operation: z.literal(\"build_corporate_bonds_query\"),\n ticker: nonEmptyString(options, \"Ticker for corporate bond query.\"),\n })\n .strict(),\n z\n .object({\n etfTicker: nonEmptyString(options, \"ETF ticker for holdings query.\"),\n extraFields,\n operation: z.literal(\"build_etf_holdings_query\"),\n })\n .strict(),\n ]);\n}\n\nexport function marketSessionSchema(\n options: NormalizedBloombergToolsOptions,\n): ZodOutput<MarketSessionInput> {\n const mic = optionalString(options, \"Market Identifier Code, for example XNYS.\");\n const exchCode = optionalString(options, \"Bloomberg exchange code.\");\n return z.discriminatedUnion(\"operation\", [\n z\n .object({\n dayEnd: nonEmptyString(options, \"Exchange day end time, for example 16:00.\"),\n dayStart: nonEmptyString(options, \"Exchange day start time, for example 09:30.\"),\n exchCode,\n mic,\n operation: z.literal(\"derive_sessions\"),\n })\n .strict(),\n z.object({ exchCode, mic, operation: z.literal(\"get_market_rule\") }).strict(),\n z\n .object({\n countryIso: nonEmptyString(options, \"ISO country code for timezone inference.\"),\n operation: z.literal(\"infer_timezone\"),\n })\n .strict(),\n z\n .object({\n date: nonEmptyString(options, \"Date for UTC session conversion, YYYY-MM-DD or YYYYMMDD.\"),\n endTime: nonEmptyString(options, \"Session end time, for example 16:00.\"),\n exchangeTz: nonEmptyString(\n options,\n \"IANA exchange timezone, for example America/New_York.\",\n ),\n operation: z.literal(\"session_times_to_utc\"),\n startTime: nonEmptyString(options, \"Session start time, for example 09:30.\"),\n })\n .strict(),\n z\n .object({\n endDate: optionalString(options, \"Optional end date.\"),\n operation: z.literal(\"default_turnover_dates\"),\n startDate: optionalString(options, \"Optional start date.\"),\n })\n .strict(),\n z\n .object({\n endDatetime: optionalString(options, \"Optional end datetime.\"),\n operation: z.literal(\"default_bqr_datetimes\"),\n startDatetime: optionalString(options, \"Optional start datetime.\"),\n })\n .strict(),\n z\n .object({\n operation: z.literal(\"get_exchange_override\"),\n ticker: nonEmptyString(options, \"Ticker for exchange override lookup.\"),\n })\n .strict(),\n z.object({ operation: z.literal(\"list_exchange_overrides\") }).strict(),\n ]);\n}\n\nexport function yasOverridesSchema(\n options: NormalizedBloombergToolsOptions,\n): ZodOutput<YasOverridesInput> {\n return z\n .object({\n benchmark: optionalString(options, \"Optional YAS benchmark.\"),\n price: z.number().optional().describe(\"YAS price override.\"),\n settleDt: optionalString(options, \"YAS settlement date.\"),\n spread: z.number().optional().describe(\"YAS spread override.\"),\n yieldType: z.number().int().optional().describe(\"YAS yield type override.\"),\n yieldVal: z.number().optional().describe(\"YAS yield value override.\"),\n })\n .strict();\n}\n\nexport function constantsSchema(\n options: NormalizedBloombergToolsOptions,\n): ZodOutput<ConstantsInput> {\n return z.discriminatedUnion(\"operation\", [\n z\n .object({\n dateStr: nonEmptyString(options, \"Date string to parse.\"),\n operation: z.literal(\"parse_date\"),\n })\n .strict(),\n z\n .object({\n day: z.number().int().min(1).max(31).describe(\"Day number, 1-31.\"),\n fmt: optionalString(options, \"Date output format.\"),\n month: z.number().int().min(1).max(12).describe(\"Month number, 1-12.\"),\n operation: z.literal(\"fmt_date\"),\n year: z.number().int().min(1).describe(\"Year number.\"),\n })\n .strict(),\n z\n .object({\n monthName: nonEmptyString(options, \"Month name, for example March.\"),\n operation: z.literal(\"get_month_code\"),\n })\n .strict(),\n z\n .object({\n code: nonEmptyString(options, \"Month code, for example H.\"),\n operation: z.literal(\"get_month_name\"),\n })\n .strict(),\n z\n .object({\n dvdType: nonEmptyString(options, \"Dividend type code or label.\"),\n operation: z.literal(\"get_dvd_type\"),\n })\n .strict(),\n z.object({ operation: z.literal(\"get_futures_months\") }).strict(),\n z.object({ operation: z.literal(\"get_dvd_types\") }).strict(),\n z.object({ operation: z.literal(\"get_dvd_cols\") }).strict(),\n z.object({ operation: z.literal(\"get_etf_cols\") }).strict(),\n ]);\n}\n\nexport function columnsSchema(options: NormalizedBloombergToolsOptions): ZodOutput<ColumnsInput> {\n const columns = stringArray(options, \"Column names to rename.\");\n return z.discriminatedUnion(\"operation\", [\n z.object({ columns, operation: z.literal(\"rename_dividend_columns\") }).strict(),\n z.object({ columns, operation: z.literal(\"rename_etf_columns\") }).strict(),\n z\n .object({\n dataColumns: stringArray(options, \"Earnings data column names.\"),\n headerRow: z\n .array(stringPairSchema)\n .min(1)\n .max(options.maxFields)\n .describe(\"Earnings header row key/value pairs.\"),\n operation: z.literal(\"build_earning_header_rename\"),\n })\n .strict(),\n ]);\n}\n\nexport function calculateSchema(\n options: NormalizedBloombergToolsOptions,\n): ZodOutput<CalculateInput> {\n return z\n .object({\n levels: z\n .array(z.number().nullable())\n .min(1)\n .max(options.maxFields)\n .describe(\"Hierarchy level values; supported levels are 1, 2, or null.\"),\n operation: z\n .literal(\"calculate_level_percentages\")\n .describe(\"Numeric helper operation to run.\"),\n values: z\n .array(z.number().nullable())\n .min(1)\n .max(options.maxFields)\n .describe(\"Observed values.\"),\n })\n .strict()\n .superRefine((input, ctx) => {\n input.levels.forEach((level, index) => {\n if (level !== null && level !== 1 && level !== 2) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"levels must contain only 1, 2, or null\",\n path: [\"levels\", index],\n });\n }\n });\n if (input.values.length !== input.levels.length) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"values and levels must have the same length\",\n });\n }\n });\n}\n\nexport function chartSpecSchema(\n options: NormalizedBloombergToolsOptions,\n): ZodOutput<ChartSpecInput> {\n const chartScalar = z.union([\n z.string().trim().max(options.maxStringChars),\n z.number(),\n z.boolean(),\n z.null(),\n ]);\n const fieldName = nonEmptyString(options, \"Input row field name.\");\n return z\n .object({\n chart: z\n .enum([\"line\", \"area\", \"bar\", \"scatter\", \"candlestick\", \"depth\"])\n .optional()\n .describe(\"Chart shape to generate. Defaults from source.\"),\n closeField: fieldName.optional().describe(\"Candlestick close-value field.\"),\n highField: fieldName.optional().describe(\"Candlestick high-value field.\"),\n labelField: fieldName.optional().describe(\"Categorical label field for bar charts.\"),\n lowField: fieldName.optional().describe(\"Candlestick low-value field.\"),\n maxPoints: z\n .number()\n .int()\n .positive()\n .max(options.maxRows)\n .optional()\n .describe(\"Maximum rows to include in the frontend spec; defaults to all provided rows.\"),\n openField: fieldName.optional().describe(\"Candlestick open-value field.\"),\n priceField: fieldName.optional().describe(\"Market-depth price field.\"),\n renderer: z\n .literal(\"vega-lite\")\n .optional()\n .describe(\"Visualization spec renderer. Currently only vega-lite is generated.\"),\n rows: z\n .array(z.record(chartScalar))\n .min(1)\n .max(options.maxRows)\n .describe(\"Chart data rows copied from a bounded Bloomberg tool result.\"),\n seriesField: fieldName.optional().describe(\"Optional series/color field.\"),\n sideField: fieldName.optional().describe(\"Market-depth bid/ask side field.\"),\n sizeField: fieldName.optional().describe(\"Market-depth size field.\"),\n source: z\n .enum([\"bdh\", \"bdib\", \"holdings\", \"depth\", \"rows\"])\n .describe(\"Bloomberg result shape that produced rows.\"),\n title: nonEmptyString(options, \"Chart title.\").optional(),\n valueField: fieldName.optional().describe(\"Primary numeric value field.\"),\n xField: fieldName.optional().describe(\"X-axis field.\"),\n yFields: stringArray(options, \"Numeric value fields to plot.\").optional(),\n })\n .strict();\n}\n","import { createBloombergStructuredTool, type ToolInvocationConfig } from \"./langchain-tool\";\nimport { createChartSpec } from \"./chart-spec\";\n\nimport { CDX_INFO_FIELDS, CDX_PRICING_FIELDS, CDX_RISK_FIELDS } from \"./cdx-fields\";\nimport { createCoreResolver, type CoreResolver } from \"./core-loader\";\nimport {\n EXT_BQL_BUILDER_DESCRIPTION,\n EXT_CALCULATE_DESCRIPTION,\n EXT_CDX_DESCRIPTION,\n EXT_CHART_SPEC_DESCRIPTION,\n EXT_COLUMNS_DESCRIPTION,\n EXT_CONSTANTS_DESCRIPTION,\n EXT_CURRENCY_DESCRIPTION,\n EXT_FUTURES_DESCRIPTION,\n EXT_MARKET_SESSION_DESCRIPTION,\n EXT_TICKER_DESCRIPTION,\n EXT_YAS_OVERRIDES_DESCRIPTION,\n} from \"./descriptions\";\nimport type { BloombergToolName, BloombergToolsOptions } from \"./options\";\nimport { isToolDisabled } from \"./options\";\nimport type { BloombergTool } from \"./tools\";\nimport {\n createToolResult,\n throwWithToolContext,\n type ToolContentAndArtifact,\n} from \"./result-limits\";\nimport {\n bqlBuilderSchema,\n calculateSchema,\n cdxSchema,\n chartSpecSchema,\n columnsSchema,\n constantsSchema,\n currencySchema,\n futuresSchema,\n marketSessionSchema,\n tickerSchema,\n yasOverridesSchema,\n type BqlBuilderInput,\n type CalculateInput,\n type CdxInput,\n type ChartSpecInput,\n type ColumnsInput,\n type ConstantsInput,\n type CurrencyInput,\n type FuturesInput,\n type MarketSessionInput,\n type PrimitiveMap,\n type TickerInput,\n type YasOverridesInput,\n} from \"./ext-schemas\";\nfunction resultString(\n resolver: CoreResolver,\n name: BloombergToolName,\n value: unknown,\n): ToolContentAndArtifact {\n return createToolResult(name, value, resolver.options.maxRows, resolver.options.maxStringChars);\n}\n\nfunction recoveryOverrides(recoveryRate: number | undefined): PrimitiveMap | undefined {\n return recoveryRate === undefined ? undefined : { CDS_RR: recoveryRate };\n}\n\ninterface ExtToolDefinition {\n readonly create: (resolver: CoreResolver) => BloombergTool;\n readonly name: BloombergToolName;\n}\n\nconst EXT_TOOL_DEFINITIONS: readonly ExtToolDefinition[] = Object.freeze([\n { create: extTickerWithResolver, name: \"xbbg_ext_ticker\" },\n { create: extFuturesWithResolver, name: \"xbbg_ext_futures\" },\n { create: extCdxWithResolver, name: \"xbbg_ext_cdx\" },\n { create: extCurrencyWithResolver, name: \"xbbg_ext_currency\" },\n { create: extBqlBuilderWithResolver, name: \"xbbg_ext_bql_builder\" },\n { create: extChartSpecWithResolver, name: \"xbbg_ext_chart_spec\" },\n { create: extMarketSessionWithResolver, name: \"xbbg_ext_market_session\" },\n { create: extYasOverridesWithResolver, name: \"xbbg_ext_yas_overrides\" },\n { create: extConstantsWithResolver, name: \"xbbg_ext_constants\" },\n { create: extColumnsWithResolver, name: \"xbbg_ext_columns\" },\n { create: extCalculateWithResolver, name: \"xbbg_ext_calculate\" },\n]);\n\nexport const BLOOMBERG_EXT_TOOL_NAMES = Object.freeze(\n EXT_TOOL_DEFINITIONS.map((definition) => definition.name),\n);\n\nfunction extChartSpecWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_ext_chart_spec\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: ChartSpecInput): Promise<ToolContentAndArtifact> => {\n try {\n return await Promise.resolve(resultString(resolver, name, createChartSpec(input)));\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n responseFormat: \"content_and_artifact\",\n description: EXT_CHART_SPEC_DESCRIPTION,\n name,\n schema: chartSpecSchema(resolver.options),\n },\n );\n}\n\nfunction extTickerWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_ext_ticker\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: TickerInput): Promise<ToolContentAndArtifact> => {\n try {\n const core = await resolver.getCore();\n switch (input.operation) {\n case \"parse_ticker\":\n return resultString(resolver, name, core.ext.parseTicker(input.ticker));\n case \"normalize_tickers\":\n return resultString(resolver, name, core.ext.normalizeTickers(input.tickers));\n case \"filter_equity_tickers\":\n return resultString(resolver, name, core.ext.filterEquityTickers(input.tickers));\n case \"is_specific_contract\":\n return resultString(resolver, name, core.ext.isSpecificContract(input.ticker));\n case \"validate_generic_ticker\":\n core.ext.validateGenericTicker(input.ticker);\n return resultString(resolver, name, { ticker: input.ticker, valid: true });\n }\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n responseFormat: \"content_and_artifact\",\n description: EXT_TICKER_DESCRIPTION,\n name,\n schema: tickerSchema(resolver.options),\n },\n );\n}\n\nfunction extFuturesWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_ext_futures\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: FuturesInput): Promise<ToolContentAndArtifact> => {\n try {\n const core = await resolver.getCore();\n switch (input.operation) {\n case \"build_futures_ticker\":\n return resultString(\n resolver,\n name,\n core.ext.buildFuturesTicker(input.prefix, input.monthCode, input.year, input.asset),\n );\n case \"generate_candidates\":\n return resultString(\n resolver,\n name,\n core.ext.generateFuturesCandidates(\n input.genTicker,\n input.year,\n input.month,\n input.day,\n input.freq,\n input.count,\n ),\n );\n case \"contract_index\":\n return resultString(resolver, name, core.ext.contractIndex(input.genTicker));\n case \"filter_candidates_by_cycle\":\n return resultString(\n resolver,\n name,\n core.ext.filterCandidatesByCycle(input.candidates, input.cycle),\n );\n case \"filter_valid_contracts\":\n return resultString(\n resolver,\n name,\n core.ext.filterValidContracts(input.contracts, input.year, input.month, input.day),\n );\n case \"get_futures_months\":\n return resultString(resolver, name, core.ext.getFuturesMonths());\n }\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n responseFormat: \"content_and_artifact\",\n description: EXT_FUTURES_DESCRIPTION,\n name,\n schema: futuresSchema(resolver.options),\n },\n );\n}\n\nfunction extCdxWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_ext_cdx\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: CdxInput, config?: ToolInvocationConfig): Promise<ToolContentAndArtifact> => {\n try {\n config?.signal?.throwIfAborted();\n if (\n input.operation === \"cdx_info\" ||\n input.operation === \"cdx_pricing\" ||\n input.operation === \"cdx_risk\"\n ) {\n const engine = await resolver.getEngine();\n const fields =\n input.operation === \"cdx_info\"\n ? CDX_INFO_FIELDS\n : input.operation === \"cdx_pricing\"\n ? CDX_PRICING_FIELDS\n : CDX_RISK_FIELDS;\n const result = await engine.bdp([input.ticker], fields, {\n backend: \"json\",\n overrides: recoveryOverrides(\n input.operation === \"cdx_pricing\" || input.operation === \"cdx_risk\"\n ? input.recoveryRate\n : undefined,\n ),\n });\n return resultString(resolver, name, result);\n }\n const core = await resolver.getCore();\n switch (input.operation) {\n case \"parse_cdx_ticker\":\n return resultString(resolver, name, core.ext.parseCdxTicker(input.ticker));\n case \"previous_cdx_series\":\n return resultString(resolver, name, core.ext.previousCdxSeries(input.ticker));\n case \"cdx_gen_to_specific\":\n return resultString(\n resolver,\n name,\n core.ext.cdxGenToSpecific(input.genTicker, input.series),\n );\n }\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n responseFormat: \"content_and_artifact\",\n description: EXT_CDX_DESCRIPTION,\n name,\n schema: cdxSchema(resolver.options),\n },\n );\n}\n\nfunction extCurrencyWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_ext_currency\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: CurrencyInput): Promise<ToolContentAndArtifact> => {\n try {\n const core = await resolver.getCore();\n switch (input.operation) {\n case \"build_fx_pair\":\n return resultString(resolver, name, core.ext.buildFxPair(input.fromCcy, input.toCcy));\n case \"same_currency\":\n return resultString(resolver, name, core.ext.sameCurrency(input.ccy1, input.ccy2));\n case \"currencies_needing_conversion\":\n return resultString(\n resolver,\n name,\n core.ext.currenciesNeedingConversion(input.currencies, input.target),\n );\n }\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n responseFormat: \"content_and_artifact\",\n description: EXT_CURRENCY_DESCRIPTION,\n name,\n schema: currencySchema(resolver.options),\n },\n );\n}\n\nfunction extBqlBuilderWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_ext_bql_builder\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: BqlBuilderInput): Promise<ToolContentAndArtifact> => {\n try {\n const core = await resolver.getCore();\n switch (input.operation) {\n case \"build_preferreds_query\":\n return resultString(\n resolver,\n name,\n core.ext.buildPreferredsQuery(input.equityTicker, input.extraFields),\n );\n case \"build_corporate_bonds_query\":\n return resultString(\n resolver,\n name,\n core.ext.buildCorporateBondsQuery(\n input.ticker,\n input.ccy,\n input.extraFields,\n input.activeOnly,\n ),\n );\n case \"build_etf_holdings_query\":\n return resultString(\n resolver,\n name,\n core.ext.buildEtfHoldingsQuery(input.etfTicker, input.extraFields),\n );\n }\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n responseFormat: \"content_and_artifact\",\n description: EXT_BQL_BUILDER_DESCRIPTION,\n name,\n schema: bqlBuilderSchema(resolver.options),\n },\n );\n}\n\nfunction extMarketSessionWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_ext_market_session\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: MarketSessionInput): Promise<ToolContentAndArtifact> => {\n try {\n const core = await resolver.getCore();\n switch (input.operation) {\n case \"derive_sessions\":\n return resultString(\n resolver,\n name,\n core.ext.deriveSessions(input.dayStart, input.dayEnd, input.mic, input.exchCode),\n );\n case \"get_market_rule\":\n return resultString(resolver, name, core.ext.getMarketRule(input.mic, input.exchCode));\n case \"infer_timezone\":\n return resultString(resolver, name, core.ext.inferTimezone(input.countryIso));\n case \"session_times_to_utc\":\n return resultString(\n resolver,\n name,\n core.ext.sessionTimesToUtc(\n input.startTime,\n input.endTime,\n input.exchangeTz,\n input.date,\n ),\n );\n case \"default_turnover_dates\":\n return resultString(\n resolver,\n name,\n core.ext.defaultTurnoverDates(input.startDate, input.endDate),\n );\n case \"default_bqr_datetimes\":\n return resultString(\n resolver,\n name,\n core.ext.defaultBqrDatetimes(input.startDatetime, input.endDatetime),\n );\n case \"get_exchange_override\":\n return resultString(resolver, name, core.ext.getExchangeOverride(input.ticker));\n case \"list_exchange_overrides\":\n return resultString(resolver, name, core.ext.listExchangeOverrides());\n }\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n responseFormat: \"content_and_artifact\",\n description: EXT_MARKET_SESSION_DESCRIPTION,\n name,\n schema: marketSessionSchema(resolver.options),\n },\n );\n}\n\nfunction extYasOverridesWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_ext_yas_overrides\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: YasOverridesInput): Promise<ToolContentAndArtifact> => {\n try {\n const core = await resolver.getCore();\n return resultString(\n resolver,\n name,\n core.ext.buildYasOverrides(\n input.settleDt,\n input.yieldType,\n input.spread,\n input.yieldVal,\n input.price,\n input.benchmark,\n ),\n );\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n responseFormat: \"content_and_artifact\",\n description: EXT_YAS_OVERRIDES_DESCRIPTION,\n name,\n schema: yasOverridesSchema(resolver.options),\n },\n );\n}\n\nfunction extConstantsWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_ext_constants\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: ConstantsInput): Promise<ToolContentAndArtifact> => {\n try {\n const core = await resolver.getCore();\n switch (input.operation) {\n case \"parse_date\":\n return resultString(resolver, name, core.ext.parseDate(input.dateStr));\n case \"fmt_date\":\n return resultString(\n resolver,\n name,\n core.ext.fmtDate(input.year, input.month, input.day, input.fmt),\n );\n case \"get_month_code\":\n return resultString(resolver, name, core.ext.getMonthCode(input.monthName));\n case \"get_month_name\":\n return resultString(resolver, name, core.ext.getMonthName(input.code));\n case \"get_futures_months\":\n return resultString(resolver, name, core.ext.getFuturesMonths());\n case \"get_dvd_type\":\n return resultString(resolver, name, core.ext.getDvdType(input.dvdType));\n case \"get_dvd_types\":\n return resultString(resolver, name, core.ext.getDvdTypes());\n case \"get_dvd_cols\":\n return resultString(resolver, name, core.ext.getDvdCols());\n case \"get_etf_cols\":\n return resultString(resolver, name, core.ext.getEtfCols());\n }\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n responseFormat: \"content_and_artifact\",\n description: EXT_CONSTANTS_DESCRIPTION,\n name,\n schema: constantsSchema(resolver.options),\n },\n );\n}\n\nfunction extColumnsWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_ext_columns\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: ColumnsInput): Promise<ToolContentAndArtifact> => {\n try {\n const core = await resolver.getCore();\n switch (input.operation) {\n case \"rename_dividend_columns\":\n return resultString(resolver, name, core.ext.renameDividendColumns(input.columns));\n case \"rename_etf_columns\":\n return resultString(resolver, name, core.ext.renameEtfColumns(input.columns));\n case \"build_earning_header_rename\":\n return resultString(\n resolver,\n name,\n core.ext.buildEarningHeaderRename(input.headerRow, input.dataColumns),\n );\n }\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n responseFormat: \"content_and_artifact\",\n description: EXT_COLUMNS_DESCRIPTION,\n name,\n schema: columnsSchema(resolver.options),\n },\n );\n}\n\nfunction extCalculateWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_ext_calculate\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: CalculateInput): Promise<ToolContentAndArtifact> => {\n try {\n const core = await resolver.getCore();\n return resultString(\n resolver,\n name,\n core.ext.calculateLevelPercentages(input.values, input.levels),\n );\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n responseFormat: \"content_and_artifact\",\n description: EXT_CALCULATE_DESCRIPTION,\n name,\n schema: calculateSchema(resolver.options),\n },\n );\n}\n\nexport function createExtTickerTool(options: BloombergToolsOptions = {}): BloombergTool {\n return extTickerWithResolver(createCoreResolver(options));\n}\n\nexport function createExtFuturesTool(options: BloombergToolsOptions = {}): BloombergTool {\n return extFuturesWithResolver(createCoreResolver(options));\n}\n\nexport function createExtCdxTool(options: BloombergToolsOptions = {}): BloombergTool {\n return extCdxWithResolver(createCoreResolver(options));\n}\n\nexport function createExtCurrencyTool(options: BloombergToolsOptions = {}): BloombergTool {\n return extCurrencyWithResolver(createCoreResolver(options));\n}\n\nexport function createExtBqlBuilderTool(options: BloombergToolsOptions = {}): BloombergTool {\n return extBqlBuilderWithResolver(createCoreResolver(options));\n}\n\nexport function createExtMarketSessionTool(options: BloombergToolsOptions = {}): BloombergTool {\n return extMarketSessionWithResolver(createCoreResolver(options));\n}\n\nexport function createExtYasOverridesTool(options: BloombergToolsOptions = {}): BloombergTool {\n return extYasOverridesWithResolver(createCoreResolver(options));\n}\n\nexport function createExtConstantsTool(options: BloombergToolsOptions = {}): BloombergTool {\n return extConstantsWithResolver(createCoreResolver(options));\n}\n\nexport function createExtColumnsTool(options: BloombergToolsOptions = {}): BloombergTool {\n return extColumnsWithResolver(createCoreResolver(options));\n}\n\nexport function createExtCalculateTool(options: BloombergToolsOptions = {}): BloombergTool {\n return extCalculateWithResolver(createCoreResolver(options));\n}\n\nexport function createExtChartSpecTool(options: BloombergToolsOptions = {}): BloombergTool {\n return extChartSpecWithResolver(createCoreResolver(options));\n}\n\nexport function createBloombergExtToolsForResolver(resolver: CoreResolver): BloombergTool[] {\n return EXT_TOOL_DEFINITIONS.filter(\n (definition) => !isToolDisabled(resolver.options, definition.name),\n ).map((definition) => definition.create(resolver));\n}\n\nexport function createBloombergExtTools(options: BloombergToolsOptions = {}): BloombergTool[] {\n return createBloombergExtToolsForResolver(createCoreResolver(options));\n}\n","import * as z from \"zod/v3\";\n\nimport type { NormalizedBloombergToolsOptions } from \"./options\";\nimport { MAX_BLOOMBERG_EID, MAX_ENTITLEMENT_EIDS } from \"./result-limits\";\ntype ZodOutput<T> = z.ZodType<T, z.ZodTypeDef, unknown>;\n\nexport type PrimitiveValue = string | number | boolean;\nexport type PrimitiveMap = Record<string, PrimitiveValue>;\nexport type OverrideMap = Record<string, PrimitiveValue | PrimitiveMap>;\n\nexport const REFERENCE_FORMATS = [\"long\", \"long_typed\", \"long_metadata\"] as const;\nexport const HISTORICAL_FORMATS = [\n \"long\",\n \"long_typed\",\n \"long_metadata\",\n \"semi_long\",\n \"wide\",\n] as const;\n\nexport type ReferenceFormat = (typeof REFERENCE_FORMATS)[number];\nexport type HistoricalFormat = (typeof HISTORICAL_FORMATS)[number];\nexport interface ReferenceCallOptions {\n readonly overrides?: OverrideMap;\n readonly kwargs?: PrimitiveMap;\n readonly returnEids?: boolean;\n readonly validateFields?: boolean;\n}\n\nexport interface BdpInput extends ReferenceCallOptions {\n readonly securities: readonly string[];\n readonly fields: readonly string[];\n readonly format?: ReferenceFormat;\n readonly includeSecurityErrors?: boolean;\n}\n\nexport interface BdsInput extends ReferenceCallOptions {\n readonly securities: readonly string[];\n readonly field: string;\n}\n\nexport interface BdhInput {\n readonly securities: readonly string[];\n readonly fields: readonly string[];\n readonly start: string;\n readonly end: string;\n readonly overrides?: OverrideMap;\n readonly kwargs?: PrimitiveMap;\n readonly format?: HistoricalFormat;\n readonly validateFields?: boolean;\n readonly returnEids?: boolean;\n}\n\nexport interface BdibInput {\n readonly ticker: string;\n readonly start: string;\n readonly end: string;\n readonly interval: number;\n readonly eventType?: string;\n readonly requestTz?: string;\n readonly outputTz?: string;\n readonly kwargs?: PrimitiveMap;\n readonly returnEids?: boolean;\n}\n\nexport interface BdtickInput {\n readonly ticker: string;\n readonly start: string;\n readonly end: string;\n readonly eventTypes?: readonly string[];\n readonly includeConditionCodes?: boolean;\n readonly includeExchangeCodes?: boolean;\n readonly includeBrokerCodes?: boolean;\n readonly includeRpsCodes?: boolean;\n readonly includeBicMicCodes?: boolean;\n readonly includeNonPlottableEvents?: boolean;\n readonly includeBloombergStandardConditionCodes?: boolean;\n readonly requestTz?: string;\n readonly outputTz?: string;\n readonly kwargs?: PrimitiveMap;\n readonly returnEids?: boolean;\n}\n\nexport interface CheckEntitlementsInput {\n readonly eids: readonly number[];\n readonly service?: string;\n}\n\nexport interface BqlInput {\n readonly query: string;\n readonly kwargs?: PrimitiveMap;\n}\n\nexport interface BsrchInput {\n readonly searchSpec: string;\n readonly overrides?: PrimitiveMap;\n readonly kwargs?: PrimitiveMap;\n}\n\nexport interface BqrInput {\n readonly ticker: string;\n readonly start: string;\n readonly end: string;\n readonly eventTypes?: readonly string[];\n readonly includeBrokerCodes?: boolean;\n}\n\nexport interface BfldsInput {\n readonly fields?: readonly string[];\n readonly searchSpec?: string;\n readonly kwargs?: PrimitiveMap;\n}\n\nexport interface BeqsInput {\n readonly screen: string;\n readonly asof?: string;\n readonly screenType?: string;\n readonly group?: string;\n readonly overrides?: PrimitiveMap;\n readonly kwargs?: PrimitiveMap;\n}\n\nexport interface YasInput {\n readonly tickers: readonly string[];\n readonly fields: readonly string[];\n readonly settleDt?: string;\n readonly yieldType?: number;\n readonly spread?: number;\n readonly yieldVal?: number;\n readonly price?: number;\n readonly benchmark?: string;\n}\n\nexport interface PreferredsInput {\n readonly equityTicker: string;\n readonly fields?: readonly string[];\n}\n\nexport interface CorporateBondsInput {\n readonly ticker: string;\n readonly ccy?: string;\n readonly fields?: readonly string[];\n readonly activeOnly?: boolean;\n}\n\nexport interface IndexMembersInput {\n readonly index: string;\n readonly field?: \"INDX_MWEIGHT\" | \"INDX_MEMBERS\" | \"INDX_MEMBERS3\";\n readonly asof?: string;\n}\n\nexport interface ResolveIsinsInput {\n readonly isins: readonly string[];\n}\n\nexport interface IssuerIsinsInput {\n readonly bondIsins: readonly string[];\n}\n\nexport interface EtfHoldingsInput {\n readonly etfTicker: string;\n readonly fields?: readonly string[];\n}\n\nexport interface StreamSnapshotInput {\n readonly tickers: readonly string[];\n readonly fields: readonly string[];\n readonly maxUpdates: number;\n readonly timeoutMs: number;\n readonly drain?: boolean;\n readonly options?: readonly string[];\n readonly conflate?: boolean;\n readonly flushThreshold?: number;\n readonly overflowPolicy?: string;\n readonly streamCapacity?: number;\n readonly allFields?: boolean;\n}\n\nexport interface MktbarSnapshotInput {\n readonly ticker: string;\n readonly fields?: readonly string[];\n readonly maxUpdates: number;\n readonly timeoutMs: number;\n readonly drain?: boolean;\n readonly options?: readonly string[];\n readonly conflate?: boolean;\n readonly flushThreshold?: number;\n readonly overflowPolicy?: string;\n readonly streamCapacity?: number;\n readonly allFields?: boolean;\n}\n\nexport interface DepthSnapshotInput {\n readonly ticker: string;\n readonly fields?: readonly string[];\n readonly maxUpdates: number;\n readonly timeoutMs: number;\n readonly drain?: boolean;\n readonly options?: readonly string[];\n readonly conflate?: boolean;\n readonly flushThreshold?: number;\n readonly overflowPolicy?: string;\n readonly streamCapacity?: number;\n readonly allFields?: boolean;\n}\n\nconst ISO_DATE_RE = /^\\d{4}-\\d{2}-\\d{2}$/u;\nconst BBG_DATE_RE = /^\\d{8}$/u;\nconst AMBIGUOUS_DATE_RE = /^\\d{1,2}[-/]\\d{1,2}[-/]\\d{2,4}([T \\D]|$)/u;\nconst ISO_DATE_TIME_RE =\n /^\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d+)?)?(?:Z|[+-]\\d{2}:?\\d{2})?$/u;\n\n/** Integers in this range are YYYYMMDD calendar dates, never epoch milliseconds. */\nconst MIN_NUMERIC_BBG_DATE = 19_000_101;\nconst MAX_NUMERIC_BBG_DATE = 29_991_231;\n/** Smallest numeric value interpreted as epoch milliseconds (~1973-03-03). */\nconst MIN_EPOCH_MS = 100_000_000_000;\n\nconst primitiveSchema = z.union([\n z.string().transform((value) => value.trim()),\n z.number(),\n z.boolean(),\n]);\n\nfunction dateFromParts(year: string, month: string, day: string): string {\n const formatted = `${year}${month}${day}`;\n const parsed = new Date(Date.UTC(Number(year), Number(month) - 1, Number(day)));\n if (\n Number.isNaN(parsed.getTime()) ||\n parsed.getUTCFullYear() !== Number(year) ||\n parsed.getUTCMonth() + 1 !== Number(month) ||\n parsed.getUTCDate() !== Number(day)\n ) {\n throw new TypeError(`Invalid date ${formatted}; expected a real calendar date like 2024-01-31`);\n }\n return formatted;\n}\n\nfunction dateToBbg(value: Date | number): string {\n const date = value instanceof Date ? value : new Date(value);\n if (Number.isNaN(date.getTime())) {\n throw new TypeError(\"Invalid date value; expected YYYY-MM-DD, YYYYMMDD, Date, or epoch ms\");\n }\n const year = String(date.getUTCFullYear()).padStart(4, \"0\");\n const month = String(date.getUTCMonth() + 1).padStart(2, \"0\");\n const day = String(date.getUTCDate()).padStart(2, \"0\");\n return `${year}${month}${day}`;\n}\n\n/**\n * Disambiguates numeric date inputs: models routinely send YYYYMMDD as an\n * integer, which `new Date(number)` would silently read as epoch milliseconds\n * near 1970-01-01. Integers in the YYYYMMDD range parse as calendar dates;\n * large values parse as epoch milliseconds; everything between is rejected.\n */\nfunction numericDateToBbg(value: number, unit: \"date\" | \"datetime\"): Date {\n if (Number.isFinite(value) && value >= MIN_EPOCH_MS) {\n return new Date(value);\n }\n throw new TypeError(\n `Ambiguous numeric ${unit} ${String(value)}; use \"YYYY-MM-DD\" text or epoch milliseconds`,\n );\n}\n\n/**\n * JSON tool calls can only carry strings and numbers, and `z.date()` is\n * unrepresentable in JSON Schema (zod v4's toJSONSchema throws on it), so the\n * wire contract is string | number only.\n */\nfunction normalizeDate(value: string | number): string {\n if (typeof value === \"number\") {\n if (Number.isInteger(value) && value >= MIN_NUMERIC_BBG_DATE && value <= MAX_NUMERIC_BBG_DATE) {\n const text = String(value);\n return dateFromParts(text.slice(0, 4), text.slice(4, 6), text.slice(6, 8));\n }\n return dateToBbg(numericDateToBbg(value, \"date\"));\n }\n const text = value.trim();\n if (text.length === 0) {\n throw new TypeError(\"Date must be non-empty; use YYYY-MM-DD or YYYYMMDD\");\n }\n if (AMBIGUOUS_DATE_RE.test(text)) {\n throw new TypeError(`Ambiguous date ${JSON.stringify(text)}; use YYYY-MM-DD or YYYYMMDD`);\n }\n if (BBG_DATE_RE.test(text)) {\n return dateFromParts(text.slice(0, 4), text.slice(4, 6), text.slice(6, 8));\n }\n if (ISO_DATE_RE.test(text)) {\n return dateFromParts(text.slice(0, 4), text.slice(5, 7), text.slice(8, 10));\n }\n throw new TypeError(`Invalid date ${JSON.stringify(text)}; use YYYY-MM-DD or YYYYMMDD`);\n}\n\nfunction normalizeDateTime(value: string | number): string {\n if (typeof value === \"number\") {\n if (Number.isInteger(value) && value >= MIN_NUMERIC_BBG_DATE && value <= MAX_NUMERIC_BBG_DATE) {\n throw new TypeError(\n `Invalid numeric datetime ${String(value)}; include an explicit time component such as \"2024-01-02T09:30:00\"`,\n );\n }\n return numericDateToBbg(value, \"datetime\").toISOString();\n }\n const text = value.trim();\n if (text.length === 0) {\n throw new TypeError(\"Datetime must be non-empty; use an ISO 8601 datetime\");\n }\n if (AMBIGUOUS_DATE_RE.test(text)) {\n throw new TypeError(`Ambiguous datetime ${JSON.stringify(text)}; use ISO 8601`);\n }\n if (BBG_DATE_RE.test(text) || ISO_DATE_RE.test(text)) {\n throw new TypeError(\n `Invalid datetime ${JSON.stringify(text)}; include an explicit time component such as YYYY-MM-DDT09:30:00`,\n );\n }\n if (!ISO_DATE_TIME_RE.test(text)) {\n throw new TypeError(`Invalid datetime ${JSON.stringify(text)}; use ISO 8601`);\n }\n return text.replace(\" \", \"T\");\n}\n\nfunction nonEmptyString(\n tool: string,\n field: string,\n maxChars: number,\n example: string,\n): ZodOutput<string> {\n return z\n .string()\n .transform((value) => value.trim())\n .pipe(\n z\n .string()\n .min(1, `${tool}: ${field} must be a non-empty string. Example: ${example}`)\n .max(\n maxChars,\n `${tool}: ${field} is too long; expected at most ${maxChars} characters. Example: ${example}`,\n ),\n );\n}\n\nfunction stringArray(\n tool: string,\n field: string,\n maxItems: number,\n maxChars: number,\n example: string,\n): ZodOutput<string[]> {\n return z\n .array(nonEmptyString(tool, field, maxChars, example))\n .min(1, `${tool}: ${field} must contain at least one non-empty string. Example: ${example}`)\n .max(maxItems, `${tool}: ${field} can contain at most ${maxItems} values`);\n}\n\n/**\n * Reports a normalization failure as a zod issue. Errors *thrown* from\n * transforms reach LangChain as bare exceptions, which it masks with a\n * generic \"did not match expected schema\" message; zod issues keep the\n * actionable text visible to the model.\n */\nfunction normalizationIssue(\n context: z.RefinementCtx,\n tool: string,\n field: string,\n error: unknown,\n): typeof z.NEVER {\n context.addIssue({\n code: \"custom\",\n message: `${tool}: ${field}: ${error instanceof Error ? error.message : String(error)}`,\n });\n return z.NEVER;\n}\n\nfunction primitiveMap(tool: string, field: string): ZodOutput<PrimitiveMap | undefined> {\n return z\n .record(z.string().min(1), primitiveSchema)\n .optional()\n .transform((value, context) => {\n if (value === undefined) {\n return undefined;\n }\n const normalized: PrimitiveMap = {};\n for (const [key, entry] of Object.entries(value)) {\n const normalizedKey = key.trim();\n if (normalizedKey.length === 0) {\n return normalizationIssue(context, tool, field, new TypeError(\"contains an empty key\"));\n }\n if (typeof entry === \"string\" && entry.length === 0) {\n return normalizationIssue(\n context,\n tool,\n field,\n new TypeError(`${normalizedKey} must not be an empty string`),\n );\n }\n normalized[normalizedKey] = entry;\n }\n return normalized;\n });\n}\n\nfunction overridesMap(tool: string, field: string): ZodOutput<OverrideMap | undefined> {\n return z\n .record(\n z.string().min(1),\n z.union([primitiveSchema, z.record(z.string().min(1), primitiveSchema)]),\n )\n .optional()\n .transform((value, context) => {\n if (value === undefined) {\n return undefined;\n }\n const normalized: OverrideMap = {};\n for (const [key, entry] of Object.entries(value)) {\n const normalizedKey = key.trim();\n if (normalizedKey.length === 0) {\n return normalizationIssue(context, tool, field, new TypeError(\"contains an empty key\"));\n }\n if (typeof entry !== \"object\") {\n if (typeof entry === \"string\" && entry.length === 0) {\n return normalizationIssue(\n context,\n tool,\n field,\n new TypeError(`${normalizedKey} must not be an empty string`),\n );\n }\n normalized[normalizedKey] = entry;\n continue;\n }\n\n const normalizedOverrides: PrimitiveMap = {};\n for (const [overrideKey, overrideValue] of Object.entries(entry)) {\n const normalizedOverrideKey = overrideKey.trim();\n if (normalizedOverrideKey.length === 0) {\n return normalizationIssue(\n context,\n tool,\n field,\n new TypeError(`${normalizedKey} contains an empty override key`),\n );\n }\n if (typeof overrideValue === \"string\" && overrideValue.length === 0) {\n return normalizationIssue(\n context,\n tool,\n field,\n new TypeError(\n `${normalizedKey}.${normalizedOverrideKey} must not be an empty string`,\n ),\n );\n }\n normalizedOverrides[normalizedOverrideKey] = overrideValue;\n }\n normalized[normalizedKey] = normalizedOverrides;\n }\n return normalized;\n });\n}\n\nfunction dateField(tool: string, field: string): ZodOutput<string> {\n return z\n .union([z.string(), z.number()])\n .transform((value, context) => {\n try {\n return normalizeDate(value);\n } catch (error) {\n return normalizationIssue(context, tool, field, error);\n }\n })\n .describe(\n `${field} date. Use YYYY-MM-DD or Bloomberg-native YYYYMMDD, never ambiguous MM/DD/YYYY.`,\n );\n}\n\nfunction dateTimeField(tool: string, field: string): ZodOutput<string> {\n return z\n .union([z.string(), z.number()])\n .superRefine((value, context) => {\n if (typeof value !== \"string\") {\n return;\n }\n const text = value.trim();\n if (BBG_DATE_RE.test(text) || ISO_DATE_RE.test(text)) {\n context.addIssue({\n code: \"custom\",\n message: `${tool}: ${field} datetime requires an explicit time component; use ISO 8601 such as YYYY-MM-DDT09:30:00`,\n });\n }\n })\n .transform((value, context) => {\n try {\n return normalizeDateTime(value);\n } catch (error) {\n return normalizationIssue(context, tool, field, error);\n }\n })\n .describe(`${field} datetime. Use ISO 8601 with an explicit time component.`);\n}\n\nfunction referenceFormat(tool: string): ZodOutput<ReferenceFormat | undefined> {\n return z\n .enum(REFERENCE_FORMATS, {\n errorMap: () => ({\n message: `${tool}: format must be one of ${REFERENCE_FORMATS.join(\", \")}`,\n }),\n })\n .optional();\n}\n\nfunction historicalFormat(tool: string): ZodOutput<HistoricalFormat | undefined> {\n return z\n .enum(HISTORICAL_FORMATS, {\n errorMap: () => ({\n message: `${tool}: format must be one of ${HISTORICAL_FORMATS.join(\", \")}`,\n }),\n })\n .optional();\n}\n\nexport function createBdpSchema(options: NormalizedBloombergToolsOptions): ZodOutput<BdpInput> {\n const tool = \"xbbg_bdp\";\n return z.object({\n fields: stringArray(\n tool,\n \"fields\",\n options.maxFields,\n options.maxStringChars,\n '[\"<FIELD>\"]',\n ).describe(\"Bloomberg field mnemonics to retrieve. Use xbbg_bflds first if uncertain.\"),\n format: referenceFormat(tool).describe(\n \"JSON output shape. Usually omit; use long_typed if downstream needs Bloomberg value types.\",\n ),\n includeSecurityErrors: z\n .boolean()\n .optional()\n .describe(\"Include Bloomberg security errors in the response when supported.\"),\n kwargs: primitiveMap(tool, \"kwargs\").describe(\n \"Advanced Bloomberg request kwargs as flat string/number/boolean values only.\",\n ),\n overrides: overridesMap(tool, \"overrides\").describe(\n \"Bloomberg field overrides. Use primitive values for global overrides and nested primitive maps keyed by exact security for per-security overrides.\",\n ),\n returnEids: z\n .boolean()\n .optional()\n .describe(\"Request Bloomberg entitlement IDs and retain them in result metadata.\"),\n securities: stringArray(\n tool,\n \"securities\",\n options.maxSecurities,\n options.maxStringChars,\n '[\"<TICKER> <MARKET_SECTOR>\"]',\n ).describe(\n \"Securities exactly as the user supplied them: '<TICKER> <MARKET_SECTOR>' for Bloomberg tickers, '/isin/<ISIN>' for raw ISINs, '/cusip/<CUSIP>' for raw CUSIPs. Never invent, guess, or convert identifiers into tickers.\",\n ),\n validateFields: z.boolean().optional().describe(\"Override field validation for this request.\"),\n });\n}\n\nexport function createBdhSchema(options: NormalizedBloombergToolsOptions): ZodOutput<BdhInput> {\n const tool = \"xbbg_bdh\";\n return z\n .object({\n end: dateField(tool, \"end\").describe(\"Required end date. Use YYYY-MM-DD or YYYYMMDD.\"),\n fields: stringArray(\n tool,\n \"fields\",\n options.maxFields,\n options.maxStringChars,\n '[\"<FIELD>\"]',\n ).describe(\"Bloomberg historical field mnemonics supplied by the user.\"),\n format: historicalFormat(tool).describe(\n \"Historical JSON output shape. Use wide only when the user asks for a table by date.\",\n ),\n kwargs: primitiveMap(tool, \"kwargs\").describe(\n \"Advanced Bloomberg request kwargs as flat string/number/boolean values only.\",\n ),\n overrides: overridesMap(tool, \"overrides\").describe(\n \"Bloomberg overrides. Use primitive values for global overrides and nested primitive maps keyed by exact security for per-security overrides.\",\n ),\n securities: stringArray(\n tool,\n \"securities\",\n options.maxSecurities,\n options.maxStringChars,\n '[\"<TICKER> <MARKET_SECTOR>\"]',\n ).describe(\n \"Securities exactly as the user supplied them: '<TICKER> <MARKET_SECTOR>' for Bloomberg tickers, '/isin/<ISIN>' for raw ISINs, '/cusip/<CUSIP>' for raw CUSIPs. Never invent, guess, or convert identifiers into tickers.\",\n ),\n start: dateField(tool, \"start\").describe(\"Required start date. Use YYYY-MM-DD or YYYYMMDD.\"),\n returnEids: z\n .boolean()\n .optional()\n .describe(\"Request Bloomberg entitlement IDs and retain them in result metadata.\"),\n validateFields: z\n .boolean()\n .optional()\n .describe(\"Override field validation for this request.\"),\n })\n .superRefine((value, ctx) => {\n if (value.start > value.end) {\n ctx.addIssue({\n code: \"custom\",\n message: `${tool}: start must be on or before end. Use an explicit start/end date range.`,\n path: [\"start\"],\n });\n }\n });\n}\n\nexport function createBdsSchema(options: NormalizedBloombergToolsOptions): ZodOutput<BdsInput> {\n const tool = \"xbbg_bds\";\n return z.object({\n field: nonEmptyString(tool, \"field\", options.maxStringChars, \"<BULK_FIELD>\").describe(\n \"Exactly one Bloomberg bulk/table field supplied by the user.\",\n ),\n kwargs: primitiveMap(tool, \"kwargs\").describe(\n \"Advanced Bloomberg request kwargs as flat string/number/boolean values only.\",\n ),\n overrides: overridesMap(tool, \"overrides\").describe(\n \"Bloomberg overrides. Use primitive values for global overrides and nested primitive maps keyed by exact security for per-security overrides.\",\n ),\n returnEids: z\n .boolean()\n .optional()\n .describe(\"Request Bloomberg entitlement IDs and retain them in result metadata.\"),\n securities: stringArray(\n tool,\n \"securities\",\n options.maxSecurities,\n options.maxStringChars,\n '[\"<INDEX_TICKER> <MARKET_SECTOR>\"]',\n ).describe(\n \"Securities exactly as the user supplied them: '<TICKER> <MARKET_SECTOR>' for Bloomberg tickers, '/isin/<ISIN>' for raw ISINs, '/cusip/<CUSIP>' for raw CUSIPs. Never invent, guess, or convert identifiers into tickers.\",\n ),\n validateFields: z.boolean().optional().describe(\"Override field validation for this request.\"),\n });\n}\n\nexport function createBdibSchema(options: NormalizedBloombergToolsOptions): ZodOutput<BdibInput> {\n const tool = \"xbbg_bdib\";\n return z.object({\n end: dateTimeField(tool, \"end\").describe(\n \"Required intraday end datetime. Use ISO 8601 with timezone when possible.\",\n ),\n eventType: nonEmptyString(tool, \"eventType\", options.maxStringChars, \"<EVENT_TYPE>\")\n .optional()\n .describe(\"Bloomberg event type supplied by the user.\"),\n interval: z\n .number()\n .int(`${tool}: interval must be a positive integer number of minutes. Example: 5`)\n .positive(`${tool}: interval must be greater than zero. Example: 5`)\n .describe(\"Bar interval in minutes. Must be a positive integer.\"),\n kwargs: primitiveMap(tool, \"kwargs\").describe(\n \"Advanced Bloomberg request kwargs as flat string/number/boolean values only.\",\n ),\n outputTz: nonEmptyString(tool, \"outputTz\", options.maxStringChars, \"<TIMEZONE>\")\n .optional()\n .describe(\"Optional output timezone.\"),\n requestTz: nonEmptyString(tool, \"requestTz\", options.maxStringChars, \"<TIMEZONE>\")\n .optional()\n .describe(\"Timezone for naive start/end datetimes.\"),\n returnEids: z\n .boolean()\n .optional()\n .describe(\"Request Bloomberg entitlement IDs and retain them in result metadata.\"),\n start: dateTimeField(tool, \"start\").describe(\n \"Required intraday start datetime. Use ISO 8601 with timezone when possible.\",\n ),\n ticker: nonEmptyString(\n tool,\n \"ticker\",\n options.maxStringChars,\n \"<TICKER> <MARKET_SECTOR>\",\n ).describe(\n \"One security exactly as the user supplied it: '<TICKER> <MARKET_SECTOR>', '/isin/<ISIN>', or '/cusip/<CUSIP>'. Never invent, guess, or convert identifiers into tickers.\",\n ),\n });\n}\n\nexport function createBdtickSchema(\n options: NormalizedBloombergToolsOptions,\n): ZodOutput<BdtickInput> {\n const tool = \"xbbg_bdtick\";\n const includeFlag = z.boolean().optional().describe(\"Optional IntradayTickRequest include flag.\");\n return z.object({\n end: dateTimeField(tool, \"end\").describe(\n \"Required intraday tick end datetime. Use ISO 8601 with timezone when possible.\",\n ),\n eventTypes: stringArray(\n tool,\n \"eventTypes\",\n options.maxFields,\n options.maxStringChars,\n '[\"<EVENT_TYPE>\"]',\n )\n .optional()\n .describe('Bloomberg tick event types, for example [\"<EVENT_TYPE>\"].'),\n includeBicMicCodes: includeFlag,\n includeBloombergStandardConditionCodes: includeFlag,\n includeBrokerCodes: includeFlag,\n includeConditionCodes: includeFlag,\n includeExchangeCodes: includeFlag,\n includeNonPlottableEvents: includeFlag,\n includeRpsCodes: includeFlag,\n kwargs: primitiveMap(tool, \"kwargs\").describe(\n \"Advanced IntradayTickRequest kwargs as flat string/number/boolean values only.\",\n ),\n outputTz: nonEmptyString(tool, \"outputTz\", options.maxStringChars, \"<TIMEZONE>\")\n .optional()\n .describe(\"Optional output timezone.\"),\n requestTz: nonEmptyString(tool, \"requestTz\", options.maxStringChars, \"<TIMEZONE>\")\n .optional()\n .describe(\"Timezone for naive start/end datetimes.\"),\n returnEids: z\n .boolean()\n .optional()\n .describe(\"Request Bloomberg entitlement IDs and retain them in result metadata.\"),\n start: dateTimeField(tool, \"start\").describe(\n \"Required intraday tick start datetime. Use ISO 8601 with timezone when possible.\",\n ),\n ticker: nonEmptyString(\n tool,\n \"ticker\",\n options.maxStringChars,\n \"<TICKER> <MARKET_SECTOR>\",\n ).describe(\n \"One security exactly as the user supplied it: '<TICKER> <MARKET_SECTOR>', '/isin/<ISIN>', or '/cusip/<CUSIP>'. Never invent, guess, or convert identifiers into tickers.\",\n ),\n });\n}\n\nexport function createCheckEntitlementsSchema(\n options: NormalizedBloombergToolsOptions,\n): ZodOutput<CheckEntitlementsInput> {\n const tool = \"xbbg_check_entitlements\";\n return z.object({\n eids: z\n .array(\n z\n .number()\n .int(`${tool}: eids must contain integers only.`)\n .positive(`${tool}: eids must contain positive integers only.`)\n .max(MAX_BLOOMBERG_EID, `${tool}: eids must be signed 32-bit integers.`),\n )\n .nonempty(`${tool}: eids must contain at least one entitlement ID.`)\n .max(\n MAX_ENTITLEMENT_EIDS,\n `${tool}: eids must contain at most ${String(MAX_ENTITLEMENT_EIDS)} values.`,\n )\n .describe(\"Nonempty list of positive signed 32-bit Bloomberg entitlement IDs.\"),\n service: nonEmptyString(tool, \"service\", options.maxStringChars, \"//blp/refdata\")\n .optional()\n .default(\"//blp/refdata\")\n .describe(\"Bloomberg service to check. Defaults to //blp/refdata.\"),\n });\n}\n\nexport function createBqlSchema(options: NormalizedBloombergToolsOptions): ZodOutput<BqlInput> {\n const tool = \"xbbg_bql\";\n return z.object({\n kwargs: primitiveMap(tool, \"kwargs\").describe(\n \"Advanced Bloomberg request kwargs as flat string/number/boolean values only.\",\n ),\n query: nonEmptyString(tool, \"query\", options.maxBqlQueryChars, \"<BQL_QUERY>\").describe(\n \"Complete BQL expression string with an explicit bounded universe; prefer BDP/BDH for simple reference or historical requests.\",\n ),\n });\n}\n\nexport function createBqrSchema(options: NormalizedBloombergToolsOptions): ZodOutput<BqrInput> {\n const tool = \"xbbg_bqr\";\n return z.object({\n end: dateTimeField(tool, \"end\").describe(\n \"Required BQR end datetime. Use ISO 8601 with timezone when possible.\",\n ),\n eventTypes: stringArray(\n tool,\n \"eventTypes\",\n options.maxFields,\n options.maxStringChars,\n '[\"<EVENT_TYPE>\"]',\n )\n .optional()\n .describe('BQR event types, for example [\"<EVENT_TYPE>\"].'),\n includeBrokerCodes: z\n .boolean()\n .optional()\n .describe(\"Include broker/dealer attribution columns. Defaults to true in @xbbg/core.\"),\n start: dateTimeField(tool, \"start\").describe(\n \"Required BQR start datetime. Use ISO 8601 with timezone when possible.\",\n ),\n ticker: nonEmptyString(\n tool,\n \"ticker\",\n options.maxStringChars,\n \"/isin/<ISIN>@<QUOTE_SOURCE> <MARKET_SECTOR>\",\n ).describe(\n \"Fixed-income ticker or identifier with dealer quote source, for example /isin/<ISIN>@<QUOTE_SOURCE> <MARKET_SECTOR>.\",\n ),\n });\n}\n\nexport function createBsrchSchema(options: NormalizedBloombergToolsOptions): ZodOutput<BsrchInput> {\n const tool = \"xbbg_bsrch\";\n return z.object({\n kwargs: primitiveMap(tool, \"kwargs\").describe(\n \"Search-grid kwargs as flat string/number/boolean values only.\",\n ),\n overrides: primitiveMap(tool, \"overrides\").describe(\n \"Search-grid overrides as flat string/number/boolean values only.\",\n ),\n searchSpec: nonEmptyString(\n tool,\n \"searchSpec\",\n options.maxSearchSpecChars,\n \"<SEARCH_SPEC>\",\n ).describe(\n \"Bloomberg search/grid domain or saved-search spec. Not for normal security lookup.\",\n ),\n });\n}\n\nexport function createBfldsSchema(options: NormalizedBloombergToolsOptions): ZodOutput<BfldsInput> {\n const tool = \"xbbg_bflds\";\n return z\n .object({\n fields: stringArray(tool, \"fields\", options.maxFields, options.maxStringChars, '[\"<FIELD>\"]')\n .optional()\n .describe(\n \"Specific field mnemonics to inspect. Provide either fields or searchSpec, not both.\",\n ),\n kwargs: primitiveMap(tool, \"kwargs\").describe(\n \"Advanced Bloomberg request kwargs as flat string/number/boolean values only.\",\n ),\n searchSpec: nonEmptyString(\n tool,\n \"searchSpec\",\n options.maxSearchSpecChars,\n \"<FIELD_SEARCH_TEXT>\",\n )\n .optional()\n .describe(\n \"Field search text when the field mnemonic is unknown. Provide either searchSpec or fields, not both.\",\n ),\n })\n .superRefine((value, ctx) => {\n const hasFields = value.fields !== undefined;\n const hasSearchSpec = value.searchSpec !== undefined;\n if (hasFields === hasSearchSpec) {\n ctx.addIssue({\n code: \"custom\",\n message: `${tool}: provide exactly one of fields or searchSpec. Example: {\"fields\":[\"<FIELD>\"]}`,\n path: [\"fields\"],\n });\n }\n });\n}\n\nexport function createBeqsSchema(options: NormalizedBloombergToolsOptions): ZodOutput<BeqsInput> {\n const tool = \"xbbg_beqs\";\n return z.object({\n asof: dateField(tool, \"asof\").optional().describe(\"Optional as-of date for the screen.\"),\n group: nonEmptyString(tool, \"group\", options.maxStringChars, \"<BEQS_GROUP>\")\n .optional()\n .describe(\"Bloomberg BEQS group when required by the screen.\"),\n kwargs: primitiveMap(tool, \"kwargs\").describe(\n \"Advanced BEQS request kwargs as flat string/number/boolean values only.\",\n ),\n overrides: primitiveMap(tool, \"overrides\").describe(\n \"BEQS overrides as flat string/number/boolean values only.\",\n ),\n screen: nonEmptyString(tool, \"screen\", options.maxStringChars, \"<BEQS_SCREEN>\").describe(\n \"Existing Bloomberg BEQS screen name supplied by the user.\",\n ),\n screenType: nonEmptyString(tool, \"screenType\", options.maxStringChars, \"<SCREEN_TYPE>\")\n .optional()\n .describe(\"Bloomberg BEQS screen type when required by the screen.\"),\n });\n}\n\nexport function createYasSchema(options: NormalizedBloombergToolsOptions): ZodOutput<YasInput> {\n const tool = \"xbbg_yas\";\n return z.object({\n benchmark: nonEmptyString(tool, \"benchmark\", options.maxStringChars, \"<BENCHMARK_TICKER>\")\n .optional()\n .describe(\"Optional YAS benchmark supplied by the user.\"),\n fields: stringArray(\n tool,\n \"fields\",\n options.maxFields,\n options.maxStringChars,\n '[\"<YAS_FIELD>\"]',\n ).describe(\"YAS field mnemonics supplied by the user.\"),\n price: z.number().optional().describe(\"Optional YAS price input.\"),\n settleDt: dateField(tool, \"settleDt\").optional().describe(\"Optional YAS settlement date.\"),\n spread: z.number().optional().describe(\"Optional YAS spread input.\"),\n tickers: stringArray(\n tool,\n \"tickers\",\n options.maxSecurities,\n options.maxStringChars,\n '[\"/isin/<ISIN> <MARKET_SECTOR>\"]',\n ).describe(\n \"Fixed-income securities exactly as the user supplied them: '<TICKER> <MARKET_SECTOR>' or identifier syntax such as '/isin/<ISIN> <MARKET_SECTOR>'. Never invent or guess tickers.\",\n ),\n yieldType: z.number().int().optional().describe(\"Optional YAS yield type.\"),\n yieldVal: z.number().optional().describe(\"Optional YAS yield value input.\"),\n });\n}\n\nexport function createPreferredsSchema(\n options: NormalizedBloombergToolsOptions,\n): ZodOutput<PreferredsInput> {\n const tool = \"xbbg_preferreds\";\n return z.object({\n equityTicker: nonEmptyString(\n tool,\n \"equityTicker\",\n options.maxStringChars,\n \"<ISSUER_TICKER> <MARKET_SECTOR>\",\n ).describe(\n \"The issuer's common equity ticker as '<TICKER> <MARKET_SECTOR>', never a preferred ('Pfd') ticker and never a guessed one. Resolve a supplied ISIN/CUSIP with xbbg_resolve_isins first.\",\n ),\n fields: z\n .array(nonEmptyString(tool, \"fields\", options.maxStringChars, '[\"<FIELD>\"]'))\n .max(options.maxFields, `${tool}: fields can contain at most ${options.maxFields} values`)\n .transform((fields) => (fields.length === 0 ? undefined : fields))\n .optional()\n .describe(\"Optional fields to include in the preferreds recipe result.\"),\n });\n}\n\nexport function createCorporateBondsSchema(\n options: NormalizedBloombergToolsOptions,\n): ZodOutput<CorporateBondsInput> {\n const tool = \"xbbg_corporate_bonds\";\n return z.object({\n activeOnly: z\n .boolean()\n .optional()\n .describe(\"Restrict to active bonds. Defaults to true in @xbbg/core.\"),\n ccy: nonEmptyString(tool, \"ccy\", options.maxStringChars, \"<CCY>\")\n .optional()\n .describe(\"Optional currency filter supplied by the user.\"),\n fields: stringArray(tool, \"fields\", options.maxFields, options.maxStringChars, '[\"<FIELD>\"]')\n .optional()\n .describe(\"Optional fields to include in the corporate bond result.\"),\n ticker: nonEmptyString(\n tool,\n \"ticker\",\n options.maxStringChars,\n \"<ISSUER_TICKER> <MARKET_SECTOR>\",\n ).describe(\n \"The issuer/company equity ticker as '<TICKER> <MARKET_SECTOR>' supplied by the user. Resolve a supplied ISIN/CUSIP with xbbg_resolve_isins first; never guess tickers.\",\n ),\n });\n}\n\nexport function createIndexMembersSchema(\n options: NormalizedBloombergToolsOptions,\n): ZodOutput<IndexMembersInput> {\n const tool = \"xbbg_index_members\";\n return z.object({\n asof: dateField(tool, \"asof\").optional().describe(\"Optional index membership as-of date.\"),\n field: z\n .enum([\"INDX_MWEIGHT\", \"INDX_MEMBERS\", \"INDX_MEMBERS3\"])\n .optional()\n .describe(\"Bloomberg index members field. Omit for @xbbg/core default.\"),\n index: nonEmptyString(\n tool,\n \"index\",\n options.maxStringChars,\n \"<INDEX_TICKER> <MARKET_SECTOR>\",\n ).describe(\n \"One Bloomberg index ticker as '<INDEX_TICKER> <MARKET_SECTOR>' supplied by the user; never guess index tickers.\",\n ),\n });\n}\n\nexport function createResolveIsinsSchema(\n options: NormalizedBloombergToolsOptions,\n): ZodOutput<ResolveIsinsInput> {\n const tool = \"xbbg_resolve_isins\";\n return z.object({\n isins: stringArray(\n tool,\n \"isins\",\n options.maxSecurities,\n options.maxStringChars,\n '[\"<ISIN>\"]',\n ).describe(\"Raw ISIN strings to resolve. Do not add /isin/ prefixes for this recipe.\"),\n });\n}\n\nexport function createIssuerIsinsSchema(\n options: NormalizedBloombergToolsOptions,\n): ZodOutput<IssuerIsinsInput> {\n const tool = \"xbbg_issuer_isins\";\n return z.object({\n bondIsins: stringArray(\n tool,\n \"bondIsins\",\n options.maxSecurities,\n options.maxStringChars,\n '[\"<BOND_ISIN>\"]',\n ).describe(\"Raw bond ISIN strings for issuer-level ISIN discovery.\"),\n });\n}\n\nexport function createEtfHoldingsSchema(\n options: NormalizedBloombergToolsOptions,\n): ZodOutput<EtfHoldingsInput> {\n const tool = \"xbbg_etf_holdings\";\n return z.object({\n etfTicker: nonEmptyString(\n tool,\n \"etfTicker\",\n options.maxStringChars,\n \"<ETF_TICKER> <MARKET_SECTOR>\",\n ).describe(\n \"One Bloomberg ETF ticker as '<ETF_TICKER> <MARKET_SECTOR>' supplied by the user. Resolve a supplied ISIN/CUSIP with xbbg_resolve_isins first; never guess tickers.\",\n ),\n fields: stringArray(tool, \"fields\", options.maxFields, options.maxStringChars, '[\"<FIELD>\"]')\n .optional()\n .describe(\"Optional fields to include in the ETF holdings recipe result.\"),\n });\n}\n\ninterface SnapshotControlShape {\n readonly allFields: ZodOutput<boolean | undefined>;\n readonly conflate: ZodOutput<boolean | undefined>;\n readonly drain: ZodOutput<boolean | undefined>;\n readonly flushThreshold: ZodOutput<number | undefined>;\n readonly maxUpdates: ZodOutput<number>;\n readonly options: ZodOutput<string[] | undefined>;\n readonly overflowPolicy: ZodOutput<string | undefined>;\n readonly streamCapacity: ZodOutput<number | undefined>;\n readonly timeoutMs: ZodOutput<number>;\n}\n\nfunction snapshotControlFields(\n tool: string,\n options: NormalizedBloombergToolsOptions,\n): SnapshotControlShape {\n return {\n allFields: z.boolean().optional().describe(\"Request all Bloomberg fields when supported.\"),\n conflate: z\n .boolean()\n .optional()\n .describe(\"Enable Bloomberg conflated streaming when supported.\"),\n drain: z\n .boolean()\n .optional()\n .describe(\n \"Flush buffered backlog while closing the subscription. The subscription always closes; collected output stays bounded either way. Defaults to false.\",\n ),\n flushThreshold: z\n .number()\n .int()\n .positive()\n .optional()\n .describe(\"Optional stream flush threshold.\"),\n maxUpdates: z\n .number()\n .int(`${tool}: maxUpdates must be a positive integer.`)\n .positive(`${tool}: maxUpdates must be greater than zero.`)\n .max(\n options.maxStreamUpdates,\n `${tool}: maxUpdates can be at most ${options.maxStreamUpdates}.`,\n )\n .describe(\"Required maximum number of updates to collect before unsubscribing.\"),\n options: stringArray(\n tool,\n \"options\",\n options.maxFields,\n options.maxStringChars,\n '[\"interval=5\"]',\n )\n .optional()\n .describe(\"Advanced Bloomberg subscription options.\"),\n overflowPolicy: nonEmptyString(tool, \"overflowPolicy\", options.maxStringChars, \"drop_oldest\")\n .optional()\n .describe(\"Optional stream overflow policy.\"),\n streamCapacity: z.number().int().positive().optional().describe(\"Optional stream capacity.\"),\n timeoutMs: z\n .number()\n .int()\n .positive()\n .max(options.maxStreamWaitMs, `${tool}: timeoutMs can be at most ${options.maxStreamWaitMs}.`)\n .optional()\n .default(options.maxStreamWaitMs)\n .describe(\"Maximum total wait in milliseconds before unsubscribing.\"),\n };\n}\n\nexport function createStreamSnapshotSchema(\n options: NormalizedBloombergToolsOptions,\n): ZodOutput<StreamSnapshotInput> {\n const tool = \"xbbg_stream_snapshot\";\n return z.object({\n fields: stringArray(\n tool,\n \"fields\",\n options.maxFields,\n options.maxStringChars,\n '[\"<FIELD>\"]',\n ).describe(\"Bloomberg market-data fields to observe.\"),\n tickers: stringArray(\n tool,\n \"tickers\",\n options.maxSecurities,\n options.maxStringChars,\n '[\"<TICKER> <MARKET_SECTOR>\"]',\n ).describe(\n \"Securities to observe, exactly as the user supplied them: '<TICKER> <MARKET_SECTOR>', '/isin/<ISIN>', or '/cusip/<CUSIP>'. Never invent or guess tickers.\",\n ),\n ...snapshotControlFields(tool, options),\n });\n}\n\nexport function createMktbarSnapshotSchema(\n options: NormalizedBloombergToolsOptions,\n): ZodOutput<MktbarSnapshotInput> {\n const tool = \"xbbg_mktbar_snapshot\";\n return z.object({\n fields: stringArray(tool, \"fields\", options.maxFields, options.maxStringChars, '[\"<FIELD>\"]')\n .optional()\n .describe(\"Optional market-bar fields. Omit for Bloomberg defaults.\"),\n ticker: nonEmptyString(\n tool,\n \"ticker\",\n options.maxStringChars,\n \"<TICKER> <MARKET_SECTOR>\",\n ).describe(\n \"One security to observe, exactly as the user supplied it: '<TICKER> <MARKET_SECTOR>', '/isin/<ISIN>', or '/cusip/<CUSIP>'. Never invent or guess tickers.\",\n ),\n ...snapshotControlFields(tool, options),\n });\n}\n\nexport function createDepthSnapshotSchema(\n options: NormalizedBloombergToolsOptions,\n): ZodOutput<DepthSnapshotInput> {\n const tool = \"xbbg_depth_snapshot\";\n return z.object({\n fields: stringArray(tool, \"fields\", options.maxFields, options.maxStringChars, '[\"<FIELD>\"]')\n .optional()\n .describe(\"Optional market-depth fields. Omit for Bloomberg defaults.\"),\n ticker: nonEmptyString(\n tool,\n \"ticker\",\n options.maxStringChars,\n \"<TICKER> <MARKET_SECTOR>\",\n ).describe(\n \"One security to observe, exactly as the user supplied it: '<TICKER> <MARKET_SECTOR>', '/isin/<ISIN>', or '/cusip/<CUSIP>'. Never invent or guess tickers.\",\n ),\n ...snapshotControlFields(tool, options),\n });\n}\n","import type { StructuredToolInterface } from \"@langchain/core/tools\";\n\nimport { createCoreResolver, type CoreResolver } from \"./core-loader\";\nimport {\n BDP_DESCRIPTION,\n BDH_DESCRIPTION,\n BDS_DESCRIPTION,\n BDIB_DESCRIPTION,\n BDTICK_DESCRIPTION,\n CHECK_ENTITLEMENTS_DESCRIPTION,\n BFLDS_DESCRIPTION,\n BQL_DESCRIPTION,\n BSRCH_DESCRIPTION,\n BQR_DESCRIPTION,\n BEQS_DESCRIPTION,\n CORPORATE_BONDS_DESCRIPTION,\n ETF_HOLDINGS_DESCRIPTION,\n DEPTH_SNAPSHOT_DESCRIPTION,\n INDEX_MEMBERS_DESCRIPTION,\n ISSUER_ISINS_DESCRIPTION,\n MKTBAR_SNAPSHOT_DESCRIPTION,\n PREFERREDS_DESCRIPTION,\n RESOLVE_ISINS_DESCRIPTION,\n STREAM_SNAPSHOT_DESCRIPTION,\n YAS_DESCRIPTION,\n} from \"./descriptions\";\nimport { createBloombergStructuredTool, type ToolInvocationConfig } from \"./langchain-tool\";\nimport type { BloombergToolsOptions, BloombergToolName } from \"./options\";\nimport { isToolDisabled } from \"./options\";\nimport {\n createToolResult,\n MAX_ENTITLEMENT_EIDS,\n throwWithToolContext,\n type ToolContentAndArtifact,\n} from \"./result-limits\";\nimport {\n createBeqsSchema,\n createBdhSchema,\n createBdibSchema,\n createBdtickSchema,\n createBdpSchema,\n createCheckEntitlementsSchema,\n createBdsSchema,\n createBfldsSchema,\n createBqlSchema,\n createBsrchSchema,\n createBqrSchema,\n createCorporateBondsSchema,\n createDepthSnapshotSchema,\n createEtfHoldingsSchema,\n createIndexMembersSchema,\n createIssuerIsinsSchema,\n createMktbarSnapshotSchema,\n createPreferredsSchema,\n createResolveIsinsSchema,\n createStreamSnapshotSchema,\n createYasSchema,\n type BdhInput,\n type BeqsInput,\n type BdibInput,\n type BdtickInput,\n type BdpInput,\n type BdsInput,\n type CheckEntitlementsInput,\n type BfldsInput,\n type BqlInput,\n type BsrchInput,\n type BqrInput,\n type CorporateBondsInput,\n type DepthSnapshotInput,\n type EtfHoldingsInput,\n type IndexMembersInput,\n type IssuerIsinsInput,\n type MktbarSnapshotInput,\n type PreferredsInput,\n type ResolveIsinsInput,\n type StreamSnapshotInput,\n type YasInput,\n} from \"./schemas\";\n\nexport type BloombergTool = StructuredToolInterface;\n\ntype ToolCreator = (resolver: CoreResolver) => BloombergTool;\n\nfunction resultString(\n resolver: CoreResolver,\n name: BloombergToolName,\n value: unknown,\n): ToolContentAndArtifact {\n return createToolResult(name, value, resolver.options.maxRows, resolver.options.maxStringChars);\n}\n\ntype SnapshotReason = \"max_updates\" | \"timeout\" | \"done\";\n\ninterface SnapshotControlInput {\n readonly maxUpdates: number;\n readonly timeoutMs: number;\n readonly drain?: boolean;\n}\n\ninterface SnapshotSubscriptionLike {\n next(): Promise<IteratorResult<unknown>>;\n unsubscribe(drain?: boolean): Promise<unknown>;\n}\n\ninterface SnapshotResult {\n readonly updateCount: number;\n readonly maxUpdates: number;\n readonly timeoutMs: number;\n readonly reason: SnapshotReason;\n readonly updates: readonly unknown[];\n /** Set when collection succeeded but releasing the subscription failed. */\n readonly unsubscribeError?: string;\n}\n\ninterface StreamOptionsInput {\n readonly options?: readonly string[];\n readonly conflate?: boolean;\n readonly flushThreshold?: number;\n readonly overflowPolicy?: string;\n readonly streamCapacity?: number;\n readonly allFields?: boolean;\n readonly fields?: readonly string[];\n}\n\nconst STREAM_TIMEOUT = Symbol(\"stream_timeout\");\nconst STREAM_ABORTED = Symbol(\"stream_aborted\");\n\nfunction abortError(signal: AbortSignal | undefined): Error {\n const reason: unknown = signal?.reason;\n return reason instanceof Error ? reason : new Error(\"Tool call aborted\");\n}\n\nfunction streamOptions(input: StreamOptionsInput): StreamOptionsInput {\n return {\n allFields: input.allFields,\n conflate: input.conflate,\n flushThreshold: input.flushThreshold,\n options: input.options,\n overflowPolicy: input.overflowPolicy,\n streamCapacity: input.streamCapacity,\n };\n}\n\n/** mktbar/depth take fields through options; stream() takes them positionally. */\nfunction singleTickerStreamOptions(input: StreamOptionsInput): StreamOptionsInput {\n return { ...streamOptions(input), fields: input.fields };\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nfunction rowsFromArrowTable(value: unknown): unknown[] | undefined {\n if (!isRecord(value)) {\n return undefined;\n }\n const toArray = value.toArray;\n if (typeof toArray === \"function\") {\n return Array.from(toArray.call(value) as Iterable<unknown>);\n }\n const numRows = value.numRows;\n const get = value.get;\n if (typeof numRows === \"number\" && Number.isInteger(numRows) && typeof get === \"function\") {\n const rows: unknown[] = [];\n for (let index = 0; index < numRows; index += 1) {\n rows.push(get.call(value, index));\n }\n return rows;\n }\n return undefined;\n}\n\nfunction jsonCompatible(value: unknown): unknown {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n if (value instanceof Date) {\n return value.toISOString();\n }\n if (Array.isArray(value)) {\n return value.map(jsonCompatible);\n }\n if (!isRecord(value)) {\n return value;\n }\n const toJSON = value.toJSON;\n if (typeof toJSON === \"function\") {\n return jsonCompatible(toJSON.call(value));\n }\n const output: Record<string, unknown> = {};\n for (const [key, entry] of Object.entries(value)) {\n output[key] = jsonCompatible(entry);\n }\n return output;\n}\n\nfunction normalizeStreamUpdate(value: unknown): unknown {\n if (isRecord(value)) {\n const toObject = value.toObject;\n if (typeof toObject === \"function\") {\n return jsonCompatible(toObject.call(value));\n }\n }\n const rows = rowsFromArrowTable(value);\n return rows === undefined ? jsonCompatible(value) : rows.map(jsonCompatible);\n}\n\nasync function nextWithinTimeout(\n iterator: SnapshotSubscriptionLike,\n deadlineMs: number,\n signal: AbortSignal | undefined,\n): Promise<IteratorResult<unknown> | typeof STREAM_TIMEOUT | typeof STREAM_ABORTED> {\n if (signal?.aborted === true) {\n return STREAM_ABORTED;\n }\n const remainingMs = deadlineMs - Date.now();\n if (remainingMs <= 0) {\n return STREAM_TIMEOUT;\n }\n const nextPromise = iterator.next();\n let timer: ReturnType<typeof setTimeout> | undefined;\n let onAbort: (() => void) | undefined;\n const racers: Promise<IteratorResult<unknown> | typeof STREAM_TIMEOUT | typeof STREAM_ABORTED>[] =\n [\n nextPromise,\n new Promise<typeof STREAM_TIMEOUT>((resolve) => {\n timer = setTimeout(() => resolve(STREAM_TIMEOUT), remainingMs);\n }),\n ];\n if (signal !== undefined) {\n racers.push(\n new Promise<typeof STREAM_ABORTED>((resolve) => {\n onAbort = () => resolve(STREAM_ABORTED);\n signal.addEventListener(\"abort\", onAbort, { once: true });\n }),\n );\n }\n const result = await Promise.race(racers);\n if (timer !== undefined) {\n clearTimeout(timer);\n }\n if (signal !== undefined && onAbort !== undefined) {\n signal.removeEventListener(\"abort\", onAbort);\n }\n if (result === STREAM_TIMEOUT || result === STREAM_ABORTED) {\n // The abandoned next() settles later (unsubscribe wakes it); swallow it.\n void nextPromise.catch(() => undefined);\n }\n return result;\n}\n\nasync function collectSnapshot(\n subscription: SnapshotSubscriptionLike,\n input: SnapshotControlInput,\n signal: AbortSignal | undefined,\n): Promise<SnapshotResult> {\n const updates: unknown[] = [];\n const deadlineMs = Date.now() + input.timeoutMs;\n let reason: SnapshotReason = \"max_updates\";\n let failed = false;\n let caught: unknown;\n try {\n while (updates.length < input.maxUpdates) {\n const next = await nextWithinTimeout(subscription, deadlineMs, signal);\n if (next === STREAM_ABORTED) {\n throw abortError(signal);\n }\n if (next === STREAM_TIMEOUT) {\n reason = \"timeout\";\n break;\n }\n if (next.done === true) {\n reason = \"done\";\n break;\n }\n updates.push(normalizeStreamUpdate(next.value));\n }\n } catch (error) {\n failed = true;\n caught = error;\n }\n // Never drain on abort: release the subscription as fast as possible.\n const drain = input.drain === true && signal?.aborted !== true;\n let unsubscribeError: string | undefined;\n try {\n await subscription.unsubscribe(drain);\n } catch (error) {\n // A collection error outranks a cleanup error; a cleanup-only failure is\n // reported in the result instead of discarding the collected updates.\n if (!failed) {\n unsubscribeError = error instanceof Error ? error.message : String(error);\n }\n }\n if (failed) {\n throw caught;\n }\n return {\n maxUpdates: input.maxUpdates,\n reason,\n timeoutMs: input.timeoutMs,\n updateCount: updates.length,\n updates,\n ...(unsubscribeError === undefined ? {} : { unsubscribeError }),\n };\n}\n\nfunction validationSetting(\n resolver: CoreResolver,\n value: boolean | undefined,\n): boolean | undefined {\n return value ?? resolver.options.validateFields;\n}\n\nfunction bdpWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_bdp\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: BdpInput): Promise<ToolContentAndArtifact> => {\n try {\n const engine = await resolver.getEngine();\n const options = {\n backend: \"json\" as const,\n format: input.format,\n includeSecurityErrors: input.includeSecurityErrors,\n kwargs: input.kwargs,\n overrides: input.overrides as never,\n validateFields: validationSetting(resolver, input.validateFields),\n returnEids: input.returnEids,\n };\n const result = await engine.bdp(input.securities, input.fields, options);\n return resultString(resolver, name, result);\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n description: BDP_DESCRIPTION,\n name,\n responseFormat: \"content_and_artifact\",\n schema: createBdpSchema(resolver.options),\n },\n );\n}\n\nfunction bdhWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_bdh\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: BdhInput): Promise<ToolContentAndArtifact> => {\n try {\n const engine = await resolver.getEngine();\n const options = {\n backend: \"json\" as const,\n end: input.end,\n format: input.format,\n kwargs: input.kwargs,\n overrides: input.overrides as never,\n start: input.start,\n returnEids: input.returnEids,\n validateFields: validationSetting(resolver, input.validateFields),\n };\n const result = await engine.bdh(input.securities, input.fields, options);\n return resultString(resolver, name, result);\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n description: BDH_DESCRIPTION,\n name,\n responseFormat: \"content_and_artifact\",\n schema: createBdhSchema(resolver.options),\n },\n );\n}\n\nfunction bdsWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_bds\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: BdsInput): Promise<ToolContentAndArtifact> => {\n try {\n const engine = await resolver.getEngine();\n const options = {\n backend: \"json\" as const,\n kwargs: input.kwargs,\n overrides: input.overrides as never,\n returnEids: input.returnEids,\n validateFields: validationSetting(resolver, input.validateFields),\n };\n const result = await engine.bds(input.securities, [input.field], options);\n return resultString(resolver, name, result);\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n description: BDS_DESCRIPTION,\n name,\n responseFormat: \"content_and_artifact\",\n schema: createBdsSchema(resolver.options),\n },\n );\n}\n\nfunction bdibWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_bdib\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: BdibInput): Promise<ToolContentAndArtifact> => {\n try {\n const engine = await resolver.getEngine();\n const result = await engine.bdib(input.ticker, {\n backend: \"json\",\n end: input.end,\n eventType: input.eventType,\n interval: input.interval,\n kwargs: input.kwargs,\n outputTz: input.outputTz,\n requestTz: input.requestTz,\n returnEids: input.returnEids,\n start: input.start,\n });\n return resultString(resolver, name, result);\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n description: BDIB_DESCRIPTION,\n name,\n responseFormat: \"content_and_artifact\",\n schema: createBdibSchema(resolver.options),\n },\n );\n}\n\nfunction bdtickWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_bdtick\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: BdtickInput): Promise<ToolContentAndArtifact> => {\n try {\n const engine = await resolver.getEngine();\n const result = await engine.bdtick(input.ticker, {\n backend: \"json\",\n end: input.end,\n eventTypes: input.eventTypes,\n includeBicMicCodes: input.includeBicMicCodes,\n includeBloombergStandardConditionCodes: input.includeBloombergStandardConditionCodes,\n includeBrokerCodes: input.includeBrokerCodes,\n includeConditionCodes: input.includeConditionCodes,\n includeExchangeCodes: input.includeExchangeCodes,\n includeNonPlottableEvents: input.includeNonPlottableEvents,\n includeRpsCodes: input.includeRpsCodes,\n kwargs: input.kwargs,\n outputTz: input.outputTz,\n requestTz: input.requestTz,\n returnEids: input.returnEids,\n start: input.start,\n });\n return resultString(resolver, name, result);\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n description: BDTICK_DESCRIPTION,\n name,\n responseFormat: \"content_and_artifact\",\n schema: createBdtickSchema(resolver.options),\n },\n );\n}\n\nfunction checkEntitlementsWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_check_entitlements\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: CheckEntitlementsInput): Promise<ToolContentAndArtifact> => {\n try {\n const engine = await resolver.getEngine();\n const result = await engine.checkEntitlements(input.service ?? \"//blp/refdata\", input.eids);\n return createToolResult(\n name,\n result,\n MAX_ENTITLEMENT_EIDS,\n resolver.options.maxStringChars,\n );\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n description: CHECK_ENTITLEMENTS_DESCRIPTION,\n name,\n responseFormat: \"content_and_artifact\",\n schema: createCheckEntitlementsSchema(resolver.options),\n },\n );\n}\n\nfunction bqlWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_bql\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: BqlInput): Promise<ToolContentAndArtifact> => {\n try {\n const engine = await resolver.getEngine();\n const result = await engine.bql(input.query, {\n backend: \"json\",\n kwargs: input.kwargs,\n });\n return resultString(resolver, name, result);\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n description: BQL_DESCRIPTION,\n name,\n responseFormat: \"content_and_artifact\",\n schema: createBqlSchema(resolver.options),\n },\n );\n}\n\nfunction bsrchWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_bsrch\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: BsrchInput): Promise<ToolContentAndArtifact> => {\n try {\n const engine = await resolver.getEngine();\n const result = await engine.bsrch(input.searchSpec, {\n backend: \"json\",\n kwargs: input.kwargs,\n overrides: input.overrides,\n });\n return resultString(resolver, name, result);\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n description: BSRCH_DESCRIPTION,\n name,\n responseFormat: \"content_and_artifact\",\n schema: createBsrchSchema(resolver.options),\n },\n );\n}\n\nfunction bqrWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_bqr\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: BqrInput): Promise<ToolContentAndArtifact> => {\n try {\n const engine = await resolver.getEngine();\n const result = await engine.bqr(input.ticker, {\n backend: \"json\",\n endDatetime: input.end,\n eventTypes: input.eventTypes,\n includeBrokerCodes: input.includeBrokerCodes,\n startDatetime: input.start,\n });\n return resultString(resolver, name, result);\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n description: BQR_DESCRIPTION,\n name,\n responseFormat: \"content_and_artifact\",\n schema: createBqrSchema(resolver.options),\n },\n );\n}\n\nfunction bfldsWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_bflds\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: BfldsInput): Promise<ToolContentAndArtifact> => {\n try {\n const engine = await resolver.getEngine();\n const result = await engine.bflds({\n backend: \"json\",\n fields: input.fields,\n kwargs: input.kwargs,\n searchSpec: input.searchSpec,\n });\n return resultString(resolver, name, result);\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n description: BFLDS_DESCRIPTION,\n name,\n responseFormat: \"content_and_artifact\",\n schema: createBfldsSchema(resolver.options),\n },\n );\n}\n\nfunction beqsWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_beqs\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: BeqsInput): Promise<ToolContentAndArtifact> => {\n try {\n const engine = await resolver.getEngine();\n const result = await engine.beqs(input.screen, {\n asof: input.asof,\n backend: \"json\",\n group: input.group,\n kwargs: input.kwargs,\n overrides: input.overrides,\n screenType: input.screenType,\n });\n return resultString(resolver, name, result);\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n description: BEQS_DESCRIPTION,\n name,\n responseFormat: \"content_and_artifact\",\n schema: createBeqsSchema(resolver.options),\n },\n );\n}\n\nfunction yasWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_yas\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: YasInput): Promise<ToolContentAndArtifact> => {\n try {\n const engine = await resolver.getEngine();\n const result = await engine.yas(input.tickers, input.fields, {\n backend: \"json\",\n benchmark: input.benchmark,\n price: input.price,\n settleDt: input.settleDt,\n spread: input.spread,\n yieldType: input.yieldType,\n yieldVal: input.yieldVal,\n });\n return resultString(resolver, name, result);\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n description: YAS_DESCRIPTION,\n name,\n responseFormat: \"content_and_artifact\",\n schema: createYasSchema(resolver.options),\n },\n );\n}\n\nfunction preferredsWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_preferreds\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: PreferredsInput): Promise<ToolContentAndArtifact> => {\n try {\n const engine = await resolver.getEngine();\n const result = await engine.preferreds(input.equityTicker, {\n backend: \"json\",\n fields: input.fields,\n });\n return resultString(resolver, name, result);\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n description: PREFERREDS_DESCRIPTION,\n name,\n responseFormat: \"content_and_artifact\",\n schema: createPreferredsSchema(resolver.options),\n },\n );\n}\n\nfunction corporateBondsWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_corporate_bonds\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: CorporateBondsInput): Promise<ToolContentAndArtifact> => {\n try {\n const engine = await resolver.getEngine();\n const result = await engine.corporateBonds(input.ticker, {\n activeOnly: input.activeOnly,\n backend: \"json\",\n ccy: input.ccy,\n fields: input.fields,\n });\n return resultString(resolver, name, result);\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n description: CORPORATE_BONDS_DESCRIPTION,\n name,\n responseFormat: \"content_and_artifact\",\n schema: createCorporateBondsSchema(resolver.options),\n },\n );\n}\n\nfunction indexMembersWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_index_members\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: IndexMembersInput): Promise<ToolContentAndArtifact> => {\n try {\n const engine = await resolver.getEngine();\n const result = await engine.indexMembers(input.index, {\n asof: input.asof,\n backend: \"json\",\n field: input.field,\n });\n return resultString(resolver, name, result);\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n description: INDEX_MEMBERS_DESCRIPTION,\n name,\n responseFormat: \"content_and_artifact\",\n schema: createIndexMembersSchema(resolver.options),\n },\n );\n}\n\nfunction resolveIsinsWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_resolve_isins\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: ResolveIsinsInput): Promise<ToolContentAndArtifact> => {\n try {\n const engine = await resolver.getEngine();\n const result = await engine.resolveIsins(input.isins, { backend: \"json\" });\n return resultString(resolver, name, result);\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n description: RESOLVE_ISINS_DESCRIPTION,\n name,\n responseFormat: \"content_and_artifact\",\n schema: createResolveIsinsSchema(resolver.options),\n },\n );\n}\n\nfunction issuerIsinsWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_issuer_isins\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: IssuerIsinsInput): Promise<ToolContentAndArtifact> => {\n try {\n const engine = await resolver.getEngine();\n const result = await engine.issuerIsins(input.bondIsins, { backend: \"json\" });\n return resultString(resolver, name, result);\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n description: ISSUER_ISINS_DESCRIPTION,\n name,\n responseFormat: \"content_and_artifact\",\n schema: createIssuerIsinsSchema(resolver.options),\n },\n );\n}\n\nfunction etfHoldingsWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_etf_holdings\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: EtfHoldingsInput): Promise<ToolContentAndArtifact> => {\n try {\n const engine = await resolver.getEngine();\n const result = await engine.etfHoldings(input.etfTicker, {\n backend: \"json\",\n fields: input.fields,\n });\n return resultString(resolver, name, result);\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n description: ETF_HOLDINGS_DESCRIPTION,\n name,\n responseFormat: \"content_and_artifact\",\n schema: createEtfHoldingsSchema(resolver.options),\n },\n );\n}\n\nfunction streamSnapshotWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_stream_snapshot\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (\n input: StreamSnapshotInput,\n config?: ToolInvocationConfig,\n ): Promise<ToolContentAndArtifact> => {\n const signal = config?.signal;\n try {\n const engine = await resolver.getEngine();\n // Connecting may have outlived the caller; never open a doomed subscription.\n signal?.throwIfAborted();\n const subscription = await engine.stream(input.tickers, input.fields, streamOptions(input));\n const result = await collectSnapshot(subscription, input, signal);\n return resultString(resolver, name, result);\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n description: STREAM_SNAPSHOT_DESCRIPTION,\n name,\n responseFormat: \"content_and_artifact\",\n schema: createStreamSnapshotSchema(resolver.options),\n },\n );\n}\n\nfunction mktbarSnapshotWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_mktbar_snapshot\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (\n input: MktbarSnapshotInput,\n config?: ToolInvocationConfig,\n ): Promise<ToolContentAndArtifact> => {\n const signal = config?.signal;\n try {\n const engine = await resolver.getEngine();\n signal?.throwIfAborted();\n const subscription = await engine.mktbar(input.ticker, singleTickerStreamOptions(input));\n const result = await collectSnapshot(subscription, input, signal);\n return resultString(resolver, name, result);\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n description: MKTBAR_SNAPSHOT_DESCRIPTION,\n name,\n responseFormat: \"content_and_artifact\",\n schema: createMktbarSnapshotSchema(resolver.options),\n },\n );\n}\n\nfunction depthSnapshotWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_depth_snapshot\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (\n input: DepthSnapshotInput,\n config?: ToolInvocationConfig,\n ): Promise<ToolContentAndArtifact> => {\n const signal = config?.signal;\n try {\n const engine = await resolver.getEngine();\n signal?.throwIfAborted();\n const subscription = await engine.depth(input.ticker, singleTickerStreamOptions(input));\n const result = await collectSnapshot(subscription, input, signal);\n return resultString(resolver, name, result);\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n description: DEPTH_SNAPSHOT_DESCRIPTION,\n name,\n responseFormat: \"content_and_artifact\",\n schema: createDepthSnapshotSchema(resolver.options),\n },\n );\n}\n\nexport function createBdpTool(options: BloombergToolsOptions = {}): BloombergTool {\n return bdpWithResolver(createCoreResolver(options));\n}\n\nexport function createBdhTool(options: BloombergToolsOptions = {}): BloombergTool {\n return bdhWithResolver(createCoreResolver(options));\n}\n\nexport function createBdsTool(options: BloombergToolsOptions = {}): BloombergTool {\n return bdsWithResolver(createCoreResolver(options));\n}\n\nexport function createBdibTool(options: BloombergToolsOptions = {}): BloombergTool {\n return bdibWithResolver(createCoreResolver(options));\n}\n\nexport function createBdtickTool(options: BloombergToolsOptions = {}): BloombergTool {\n return bdtickWithResolver(createCoreResolver(options));\n}\n\nexport function createCheckEntitlementsTool(options: BloombergToolsOptions = {}): BloombergTool {\n return checkEntitlementsWithResolver(createCoreResolver(options));\n}\n\nexport function createBqlTool(options: BloombergToolsOptions = {}): BloombergTool {\n return bqlWithResolver(createCoreResolver(options));\n}\n\nexport function createBsrchTool(options: BloombergToolsOptions = {}): BloombergTool {\n return bsrchWithResolver(createCoreResolver(options));\n}\n\nexport function createBqrTool(options: BloombergToolsOptions = {}): BloombergTool {\n return bqrWithResolver(createCoreResolver(options));\n}\n\nexport function createBfldsTool(options: BloombergToolsOptions = {}): BloombergTool {\n return bfldsWithResolver(createCoreResolver(options));\n}\n\nexport function createBeqsTool(options: BloombergToolsOptions = {}): BloombergTool {\n return beqsWithResolver(createCoreResolver(options));\n}\n\nexport function createYasTool(options: BloombergToolsOptions = {}): BloombergTool {\n return yasWithResolver(createCoreResolver(options));\n}\n\nexport function createPreferredsTool(options: BloombergToolsOptions = {}): BloombergTool {\n return preferredsWithResolver(createCoreResolver(options));\n}\n\nexport function createCorporateBondsTool(options: BloombergToolsOptions = {}): BloombergTool {\n return corporateBondsWithResolver(createCoreResolver(options));\n}\n\nexport function createIndexMembersTool(options: BloombergToolsOptions = {}): BloombergTool {\n return indexMembersWithResolver(createCoreResolver(options));\n}\n\nexport function createResolveIsinsTool(options: BloombergToolsOptions = {}): BloombergTool {\n return resolveIsinsWithResolver(createCoreResolver(options));\n}\n\nexport function createIssuerIsinsTool(options: BloombergToolsOptions = {}): BloombergTool {\n return issuerIsinsWithResolver(createCoreResolver(options));\n}\n\nexport function createEtfHoldingsTool(options: BloombergToolsOptions = {}): BloombergTool {\n return etfHoldingsWithResolver(createCoreResolver(options));\n}\n\nexport function createStreamSnapshotTool(options: BloombergToolsOptions = {}): BloombergTool {\n return streamSnapshotWithResolver(createCoreResolver(options));\n}\n\nexport function createMktbarSnapshotTool(options: BloombergToolsOptions = {}): BloombergTool {\n return mktbarSnapshotWithResolver(createCoreResolver(options));\n}\n\nexport function createDepthSnapshotTool(options: BloombergToolsOptions = {}): BloombergTool {\n return depthSnapshotWithResolver(createCoreResolver(options));\n}\n\ninterface CoreToolDefinition {\n readonly create: ToolCreator;\n readonly name: BloombergToolName;\n}\n\nconst CORE_TOOL_DEFINITIONS: readonly CoreToolDefinition[] = Object.freeze([\n { create: bdpWithResolver, name: \"xbbg_bdp\" },\n { create: bdhWithResolver, name: \"xbbg_bdh\" },\n { create: bdsWithResolver, name: \"xbbg_bds\" },\n { create: bdibWithResolver, name: \"xbbg_bdib\" },\n { create: bdtickWithResolver, name: \"xbbg_bdtick\" },\n { create: checkEntitlementsWithResolver, name: \"xbbg_check_entitlements\" },\n { create: bqlWithResolver, name: \"xbbg_bql\" },\n { create: bsrchWithResolver, name: \"xbbg_bsrch\" },\n { create: bqrWithResolver, name: \"xbbg_bqr\" },\n { create: bfldsWithResolver, name: \"xbbg_bflds\" },\n { create: beqsWithResolver, name: \"xbbg_beqs\" },\n { create: yasWithResolver, name: \"xbbg_yas\" },\n { create: preferredsWithResolver, name: \"xbbg_preferreds\" },\n { create: corporateBondsWithResolver, name: \"xbbg_corporate_bonds\" },\n { create: indexMembersWithResolver, name: \"xbbg_index_members\" },\n { create: resolveIsinsWithResolver, name: \"xbbg_resolve_isins\" },\n { create: issuerIsinsWithResolver, name: \"xbbg_issuer_isins\" },\n { create: etfHoldingsWithResolver, name: \"xbbg_etf_holdings\" },\n { create: streamSnapshotWithResolver, name: \"xbbg_stream_snapshot\" },\n { create: mktbarSnapshotWithResolver, name: \"xbbg_mktbar_snapshot\" },\n { create: depthSnapshotWithResolver, name: \"xbbg_depth_snapshot\" },\n]);\n\nexport function createBloombergToolsForResolver(resolver: CoreResolver): BloombergTool[] {\n return CORE_TOOL_DEFINITIONS.filter(\n (definition) => !isToolDisabled(resolver.options, definition.name),\n ).map((definition) => definition.create(resolver));\n}\n\nexport function createBloombergTools(options: BloombergToolsOptions = {}): BloombergTool[] {\n return createBloombergToolsForResolver(createCoreResolver(options));\n}\n","import { createCoreResolver } from \"./core-loader\";\nimport { createBloombergExtToolsForResolver } from \"./ext-tools\";\nimport type { BloombergToolsOptions } from \"./options\";\nimport { createBloombergToolsForResolver, type BloombergTool } from \"./tools\";\n\nexport {\n BLOOMBERG_TOOL_INSTRUCTIONS,\n getBloombergToolInstructions,\n type BloombergToolInstructionsOptions,\n} from \"./descriptions\";\nexport {\n BLOOMBERG_EXT_TOOL_NAMES,\n createBloombergExtTools,\n createExtBqlBuilderTool,\n createExtCalculateTool,\n createExtChartSpecTool,\n createExtCdxTool,\n createExtColumnsTool,\n createExtConstantsTool,\n createExtCurrencyTool,\n createExtFuturesTool,\n createExtMarketSessionTool,\n createExtTickerTool,\n createExtYasOverridesTool,\n} from \"./ext-tools\";\nexport type { ToolInvocationConfig } from \"./langchain-tool\";\nexport { toolParameterJsonSchema } from \"./langchain-tool\";\nexport {\n BLOOMBERG_TOOL_NAMES,\n DEFAULT_ENGINE_REQUEST_TIMEOUT_MS,\n type BloombergToolName,\n type BloombergToolsOptions,\n type NormalizedBloombergToolsOptions,\n} from \"./options\";\nexport type { ToolEnvelope } from \"./result-limits\";\nexport type { ChartSpecOutput, ChartSpecSummary, VegaLiteSpec } from \"./chart-spec\";\nexport type {\n BloombergChartSource,\n ChartKind,\n ChartRenderer,\n ChartRow,\n ChartScalar,\n ChartSpecInput,\n} from \"./ext-schemas\";\nexport {\n createBdhTool,\n createBdibTool,\n createBeqsTool,\n createBdtickTool,\n createBdpTool,\n createBdsTool,\n createCheckEntitlementsTool,\n createBfldsTool,\n createCorporateBondsTool,\n createEtfHoldingsTool,\n createDepthSnapshotTool,\n createIndexMembersTool,\n createIssuerIsinsTool,\n createMktbarSnapshotTool,\n createPreferredsTool,\n createResolveIsinsTool,\n createStreamSnapshotTool,\n createYasTool,\n createBloombergTools,\n createBqlTool,\n createBsrchTool,\n createBqrTool,\n type BloombergTool,\n} from \"./tools\";\n\nexport function createAllBloombergTools(options: BloombergToolsOptions = {}): BloombergTool[] {\n const resolver = createCoreResolver(options);\n return [\n ...createBloombergToolsForResolver(resolver),\n ...createBloombergExtToolsForResolver(resolver),\n ];\n}\n"]}
1
+ {"version":3,"sources":["../src/options.ts","../src/core-loader.ts","../src/result-limits.ts","../src/langchain-tool.ts","../src/chart-spec.ts","../src/cdx-fields.ts","../src/descriptions.ts","../src/ext-schemas.ts","../src/ext-tools.ts","../src/_defs_gen.ts","../src/schemas.ts","../src/tools.ts","../src/index.ts"],"names":["record","tool","zodToJsonSchema","z","z2","text","nonEmptyString","stringArray","resultString"],"mappings":"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","file":"index.js","sourcesContent":["import type * as xbbg from \"@xbbg/core\";\n\nimport type { XbbgCoreLike, XbbgEngineLike } from \"./core-loader\";\n\nexport const BLOOMBERG_TOOL_NAMES = [\n \"xbbg_bdp\",\n \"xbbg_bdh\",\n \"xbbg_bds\",\n \"xbbg_bdib\",\n \"xbbg_bdtick\",\n \"xbbg_check_entitlements\",\n \"xbbg_bql\",\n \"xbbg_bsrch\",\n \"xbbg_bqr\",\n \"xbbg_bflds\",\n \"xbbg_beqs\",\n \"xbbg_yas\",\n \"xbbg_preferreds\",\n \"xbbg_corporate_bonds\",\n \"xbbg_index_members\",\n \"xbbg_resolve_isins\",\n \"xbbg_issuer_isins\",\n \"xbbg_etf_holdings\",\n \"xbbg_stream_snapshot\",\n \"xbbg_mktbar_snapshot\",\n \"xbbg_depth_snapshot\",\n \"xbbg_ext_ticker\",\n \"xbbg_ext_futures\",\n \"xbbg_ext_cdx\",\n \"xbbg_ext_currency\",\n \"xbbg_ext_bql_builder\",\n \"xbbg_ext_chart_spec\",\n \"xbbg_ext_market_session\",\n \"xbbg_ext_yas_overrides\",\n \"xbbg_ext_constants\",\n \"xbbg_ext_columns\",\n \"xbbg_ext_calculate\",\n] as const;\n\nexport type BloombergToolName = (typeof BLOOMBERG_TOOL_NAMES)[number];\n\nexport interface BloombergToolsOptions {\n readonly engine?: XbbgEngineLike;\n readonly engineConfig?: xbbg.EngineConfig;\n readonly core?: XbbgCoreLike;\n readonly maxSecurities?: number;\n readonly maxFields?: number;\n readonly maxRows?: number;\n readonly maxStringChars?: number;\n readonly maxBqlQueryChars?: number;\n readonly maxSearchSpecChars?: number;\n readonly maxStreamUpdates?: number;\n readonly maxStreamWaitMs?: number;\n readonly validateFields?: boolean;\n readonly disabledTools?: readonly BloombergToolName[];\n}\n\nexport interface NormalizedBloombergToolsOptions {\n readonly engine?: XbbgEngineLike;\n readonly engineConfig: xbbg.EngineConfig;\n readonly core?: XbbgCoreLike;\n readonly maxSecurities: number;\n readonly maxFields: number;\n readonly maxRows: number;\n readonly maxStringChars: number;\n readonly maxBqlQueryChars: number;\n readonly maxSearchSpecChars: number;\n readonly maxStreamUpdates: number;\n readonly maxStreamWaitMs: number;\n readonly validateFields: boolean | undefined;\n readonly disabledTools: ReadonlySet<BloombergToolName>;\n}\n\nconst DEFAULT_MAX_SECURITIES = 25;\nconst DEFAULT_MAX_FIELDS = 25;\nconst DEFAULT_MAX_ROWS = 500;\nconst DEFAULT_MAX_STRING_CHARS = 2000;\nconst DEFAULT_MAX_BQL_QUERY_CHARS = 4000;\nconst DEFAULT_MAX_SEARCH_SPEC_CHARS = 1000;\nconst DEFAULT_MAX_STREAM_UPDATES = 10;\nconst DEFAULT_MAX_STREAM_WAIT_MS = 15_000;\n\n/**\n * Default hard per-request timeout applied to lazily connected engines.\n * @xbbg/core disables request timeouts by default (`requestTimeoutMs: 0`),\n * which would let a wedged Terminal session hang tool calls forever. An\n * explicit `engineConfig.requestTimeoutMs` (including 0) always wins.\n */\nexport const DEFAULT_ENGINE_REQUEST_TIMEOUT_MS = 60_000;\n\nfunction engineConfigWithDefaults(config: xbbg.EngineConfig | undefined): xbbg.EngineConfig {\n if (config?.requestTimeoutMs !== undefined) {\n return config;\n }\n return { ...config, requestTimeoutMs: DEFAULT_ENGINE_REQUEST_TIMEOUT_MS };\n}\n\nfunction positiveInteger(value: number | undefined, fallback: number, name: string): number {\n if (value === undefined) {\n return fallback;\n }\n if (!Number.isInteger(value) || value <= 0) {\n throw new RangeError(`${name} must be a positive integer; got ${String(value)}`);\n }\n return value;\n}\n\nfunction disabledToolSet(\n tools: readonly BloombergToolName[] | undefined,\n): ReadonlySet<BloombergToolName> {\n return new Set(tools ?? []);\n}\n\nexport function normalizeBloombergToolsOptions(\n options: BloombergToolsOptions = {},\n): NormalizedBloombergToolsOptions {\n return {\n core: options.core,\n disabledTools: disabledToolSet(options.disabledTools),\n engine: options.engine,\n engineConfig: engineConfigWithDefaults(options.engineConfig),\n maxBqlQueryChars: positiveInteger(\n options.maxBqlQueryChars,\n DEFAULT_MAX_BQL_QUERY_CHARS,\n \"maxBqlQueryChars\",\n ),\n maxFields: positiveInteger(options.maxFields, DEFAULT_MAX_FIELDS, \"maxFields\"),\n maxRows: positiveInteger(options.maxRows, DEFAULT_MAX_ROWS, \"maxRows\"),\n maxSearchSpecChars: positiveInteger(\n options.maxSearchSpecChars,\n DEFAULT_MAX_SEARCH_SPEC_CHARS,\n \"maxSearchSpecChars\",\n ),\n maxStreamUpdates: positiveInteger(\n options.maxStreamUpdates,\n DEFAULT_MAX_STREAM_UPDATES,\n \"maxStreamUpdates\",\n ),\n maxStreamWaitMs: positiveInteger(\n options.maxStreamWaitMs,\n DEFAULT_MAX_STREAM_WAIT_MS,\n \"maxStreamWaitMs\",\n ),\n maxSecurities: positiveInteger(options.maxSecurities, DEFAULT_MAX_SECURITIES, \"maxSecurities\"),\n maxStringChars: positiveInteger(\n options.maxStringChars,\n DEFAULT_MAX_STRING_CHARS,\n \"maxStringChars\",\n ),\n validateFields: options.validateFields,\n };\n}\n\nexport function isToolDisabled(\n options: NormalizedBloombergToolsOptions,\n name: BloombergToolName,\n): boolean {\n return options.disabledTools.has(name);\n}\n","import type * as xbbg from \"@xbbg/core\";\n\nimport type { BloombergToolsOptions, NormalizedBloombergToolsOptions } from \"./options\";\nimport { normalizeBloombergToolsOptions } from \"./options\";\n\nexport type XbbgCoreModule = typeof xbbg;\nexport interface EntitlementReport {\n readonly entitled: boolean;\n readonly failedEids: readonly number[];\n}\n\ntype CoreEngineMethods = Pick<\n Awaited<ReturnType<XbbgCoreModule[\"connect\"]>>,\n | \"bdp\"\n | \"bdh\"\n | \"bds\"\n | \"bql\"\n | \"bsrch\"\n | \"bqr\"\n | \"bflds\"\n | \"beqs\"\n | \"yas\"\n | \"preferreds\"\n | \"corporateBonds\"\n | \"indexMembers\"\n | \"resolveIsins\"\n | \"issuerIsins\"\n | \"etfHoldings\"\n | \"stream\"\n | \"mktbar\"\n | \"depth\"\n>;\n\nexport type XbbgEngineLike = {\n readonly [Method in keyof CoreEngineMethods]: OmitThisParameter<CoreEngineMethods[Method]>;\n} & {\n readonly bdib: (\n ticker: string,\n options: xbbg.BdibOptions & { readonly returnEids?: boolean },\n ) => Promise<unknown>;\n readonly bdtick: (\n ticker: string,\n options: xbbg.BdtickOptions & { readonly returnEids?: boolean },\n ) => Promise<unknown>;\n readonly checkEntitlements: (\n service: string,\n eids: readonly number[],\n ) => Promise<EntitlementReport>;\n};\nexport interface XbbgCoreLike {\n readonly ext: XbbgCoreModule[\"ext\"];\n readonly connect: (config?: xbbg.EngineConfig) => Promise<XbbgEngineLike>;\n}\n\nexport interface CoreResolver {\n readonly options: NormalizedBloombergToolsOptions;\n getCore(): Promise<XbbgCoreLike>;\n getEngine(): Promise<XbbgEngineLike>;\n}\n\nasync function importCore(): Promise<XbbgCoreLike> {\n // @xbbg/core is loaded lazily so constructing tools never loads the native addon.\n // No cast needed: @xbbg/core >=1.4.6 exports types already assignable to\n // XbbgCoreLike. Older releases needed `as unknown as XbbgCoreLike` here.\n return await import(\"@xbbg/core\");\n}\n\nexport function createCoreResolver(options: BloombergToolsOptions = {}): CoreResolver {\n const normalized = normalizeBloombergToolsOptions(options);\n let corePromise: Promise<XbbgCoreLike> | undefined;\n let enginePromise: Promise<XbbgEngineLike> | undefined;\n\n async function cacheCoreImport(): Promise<XbbgCoreLike> {\n const promise = importCore();\n corePromise = promise;\n promise.catch(() => {\n if (corePromise === promise) {\n corePromise = undefined;\n }\n });\n return await promise;\n }\n\n async function cacheEngineConnect(): Promise<XbbgEngineLike> {\n const promise = (async (): Promise<XbbgEngineLike> => {\n const core = await getCore();\n return await core.connect(normalized.engineConfig);\n })();\n enginePromise = promise;\n promise.catch(() => {\n if (enginePromise === promise) {\n enginePromise = undefined;\n }\n });\n return await promise;\n }\n\n async function getCore(): Promise<XbbgCoreLike> {\n if (normalized.core !== undefined) {\n return normalized.core;\n }\n return await (corePromise ?? cacheCoreImport());\n }\n\n async function getEngine(): Promise<XbbgEngineLike> {\n if (normalized.engine !== undefined) {\n return normalized.engine;\n }\n return await (enginePromise ?? cacheEngineConnect());\n }\n\n return {\n getCore,\n getEngine,\n options: normalized,\n };\n}\n","import type { BloombergToolName } from \"./options\";\n\ninterface LimitResult {\n readonly rowCount: number | null;\n readonly truncated: boolean;\n readonly value: unknown;\n}\n\nexport interface ToolEnvelope {\n readonly tool: BloombergToolName;\n readonly rowCount: number | null;\n readonly truncated: boolean;\n readonly data: unknown;\n}\n\nexport type ToolContentAndArtifact = [string, ToolEnvelope];\n\ninterface LimitState {\n truncated: boolean;\n}\n\nconst MAX_RESULT_DEPTH = 32;\n/** Maximum aggregate EIDs retained and accepted by entitlement checks. */\nexport const MAX_ENTITLEMENT_EIDS = 10_000;\nexport const MAX_BLOOMBERG_EID = 2_147_483_647;\nconst MAX_EID_SECURITIES = 1_000;\nconst MAX_EID_SECURITY_NAME_BYTES = 65_536;\nconst UTF8_ENCODER = new TextEncoder();\n\nfunction isPlainObject(value: object): value is Record<string, unknown> {\n const prototype: unknown = Object.getPrototypeOf(value);\n return prototype === Object.prototype || prototype === null;\n}\n\nfunction truncateString(value: string, maxStringChars: number, state: LimitState): string {\n if (value.length <= maxStringChars) {\n return value;\n }\n state.truncated = true;\n return `${value.slice(0, maxStringChars)}…[truncated ${value.length - maxStringChars} chars]`;\n}\n\nfunction arrayMetadata(value: readonly unknown[]): Record<string, unknown> {\n const metadata: Record<string, unknown> = {};\n for (const [key, entry] of Object.entries(value)) {\n if (!/^(?:0|[1-9]\\d*)$/u.test(key)) {\n metadata[key] = entry;\n }\n }\n return metadata;\n}\n\ninterface EidDataTruncation {\n readonly totalSecurityCount: number;\n readonly retainedSecurityCount: number;\n readonly omittedSecurityCount: number;\n readonly invalidSecurityCount: number;\n readonly totalEidCount: number;\n readonly retainedEidCount: number;\n /** Counts align by index with Object.keys(eidData), avoiding duplicate security-name bytes. */\n readonly securityCounts: readonly { originalCount: number; retainedCount: number }[];\n}\n\ninterface LimitedEidData {\n readonly data: unknown;\n readonly truncation?: EidDataTruncation;\n}\n\nfunction limitEidData(\n value: unknown,\n maxStringChars: number,\n state: LimitState,\n depth: number,\n seen: WeakSet<object>,\n): LimitedEidData {\n if (typeof value !== \"object\" || value === null || !isPlainObject(value)) {\n state.truncated = true;\n return {\n data: {},\n truncation: {\n invalidSecurityCount: 1,\n omittedSecurityCount: 0,\n retainedEidCount: 0,\n retainedSecurityCount: 0,\n securityCounts: [],\n totalEidCount: 0,\n totalSecurityCount: 1,\n },\n };\n }\n const data: Record<string, unknown> = Object.create(null) as Record<string, unknown>;\n const securityCounts: { originalCount: number; retainedCount: number }[] = [];\n const entries = Object.entries(value);\n let retainedEidCount = 0;\n let retainedSecurityCount = 0;\n let retainedSecurityNameBytes = 0;\n let totalEidCount = 0;\n let invalidSecurityCount = 0;\n for (const [security, eids] of entries) {\n if (!Array.isArray(eids)) {\n state.truncated = true;\n invalidSecurityCount += 1;\n continue;\n }\n let validEids = true;\n for (let index = 0; index < eids.length; index += 1) {\n const eid: unknown = eids[index];\n if (\n !Object.hasOwn(eids, index) ||\n typeof eid !== \"number\" ||\n !Number.isInteger(eid) ||\n eid <= 0 ||\n eid > MAX_BLOOMBERG_EID\n ) {\n validEids = false;\n break;\n }\n }\n if (!validEids) {\n state.truncated = true;\n invalidSecurityCount += 1;\n continue;\n }\n const originalCount = eids.length;\n totalEidCount += originalCount;\n const securityNameBytes = UTF8_ENCODER.encode(security).byteLength;\n const canRetainSecurity =\n retainedSecurityCount < MAX_EID_SECURITIES &&\n retainedSecurityNameBytes + securityNameBytes <= MAX_EID_SECURITY_NAME_BYTES;\n if (!canRetainSecurity) {\n state.truncated = true;\n continue;\n }\n retainedSecurityCount += 1;\n retainedSecurityNameBytes += securityNameBytes;\n const remainingEidCapacity = Math.max(0, MAX_ENTITLEMENT_EIDS - retainedEidCount);\n const retained = eids.slice(0, remainingEidCapacity);\n retainedEidCount += retained.length;\n data[security] = limitValue(retained, MAX_ENTITLEMENT_EIDS, maxStringChars, state, depth, seen);\n securityCounts.push({\n originalCount,\n retainedCount: retained.length,\n });\n if (retained.length !== originalCount) {\n state.truncated = true;\n }\n }\n const omittedSecurityCount = entries.length - retainedSecurityCount - invalidSecurityCount;\n const wasTruncated =\n retainedSecurityCount !== entries.length ||\n retainedEidCount !== totalEidCount ||\n invalidSecurityCount > 0;\n return {\n data,\n ...(wasTruncated\n ? {\n truncation: {\n invalidSecurityCount,\n omittedSecurityCount,\n retainedEidCount,\n retainedSecurityCount,\n securityCounts,\n totalEidCount,\n totalSecurityCount: entries.length,\n },\n }\n : {}),\n };\n}\n\nfunction limitValue(\n value: unknown,\n maxRows: number,\n maxStringChars: number,\n state: LimitState,\n depth = 0,\n seen: WeakSet<object> = new WeakSet<object>(),\n): unknown {\n if (typeof value === \"string\") {\n return truncateString(value, maxStringChars, state);\n }\n if (value instanceof Date) {\n return value.toISOString();\n }\n if (depth > MAX_RESULT_DEPTH) {\n state.truncated = true;\n return \"[Max result depth exceeded]\";\n }\n if (Array.isArray(value)) {\n if (seen.has(value)) {\n state.truncated = true;\n return \"[Circular]\";\n }\n seen.add(value);\n const capped = value.length > maxRows ? value.slice(0, maxRows) : value;\n if (capped.length !== value.length) {\n state.truncated = true;\n }\n const rows = capped.map((item) =>\n limitValue(item, maxRows, maxStringChars, state, depth + 1, seen),\n );\n const metadata = arrayMetadata(value);\n if (Object.keys(metadata).length === 0) {\n return rows;\n }\n const output: Record<string, unknown> = { rows };\n for (const [key, entry] of Object.entries(metadata)) {\n if (key === \"eidData\") {\n const limited = limitEidData(entry, maxStringChars, state, depth + 1, seen);\n output.eidData = limited.data;\n if (limited.truncation !== undefined) {\n output.eidDataTruncation = limited.truncation;\n }\n continue;\n }\n output[key] = limitValue(entry, maxRows, maxStringChars, state, depth + 1, seen);\n }\n return output;\n }\n if (typeof value === \"object\" && value !== null) {\n if (seen.has(value)) {\n state.truncated = true;\n return \"[Circular]\";\n }\n if (ArrayBuffer.isView(value) || value instanceof ArrayBuffer) {\n state.truncated = true;\n return `[binary data: ${value.byteLength} bytes]`;\n }\n if (!isPlainObject(value)) {\n const toJSON = (value as Record<string, unknown>).toJSON;\n if (typeof toJSON === \"function\") {\n seen.add(value);\n return limitValue(toJSON.call(value), maxRows, maxStringChars, state, depth + 1, seen);\n }\n return value;\n }\n seen.add(value);\n const output: Record<string, unknown> = {};\n for (const [key, entry] of Object.entries(value)) {\n output[key] = limitValue(entry, maxRows, maxStringChars, state, depth + 1, seen);\n }\n return output;\n }\n return value;\n}\n\nfunction rowCountOf(value: unknown): number | null {\n if (Array.isArray(value)) {\n return value.length;\n }\n if (typeof value !== \"object\" || value === null) {\n return null;\n }\n const record = value as Record<string, unknown>;\n const rowCount = record.rowCount;\n if (typeof rowCount === \"number\" && Number.isInteger(rowCount) && rowCount >= 0) {\n return rowCount;\n }\n const updateCount = record.updateCount;\n if (typeof updateCount === \"number\" && Number.isInteger(updateCount) && updateCount >= 0) {\n return updateCount;\n }\n return null;\n}\n\nconst ERROR_SHAPE_KEYS = new Set([\n \"error\",\n \"errors\",\n \"fielderrors\",\n \"fieldexception\",\n \"fieldexceptions\",\n \"responseerror\",\n \"securityerror\",\n]);\n\nfunction hasErrorShape(value: unknown): boolean {\n const pending: unknown[] = [value];\n const seen = new WeakSet<object>();\n\n while (pending.length > 0) {\n const entry = pending.pop();\n if (typeof entry !== \"object\" || entry === null) {\n continue;\n }\n if (seen.has(entry)) {\n continue;\n }\n seen.add(entry);\n\n if (Array.isArray(entry)) {\n for (const child of entry as readonly unknown[]) {\n pending.push(child);\n }\n continue;\n }\n\n for (const [key, child] of Object.entries(entry as Record<string, unknown>)) {\n if (ERROR_SHAPE_KEYS.has(key.toLowerCase()) && child !== undefined) {\n return true;\n }\n pending.push(child);\n }\n }\n\n return false;\n}\n\nexport function limitResult(value: unknown, maxRows: number, maxStringChars: number): LimitResult {\n const state: LimitState = { truncated: false };\n const rowCount = rowCountOf(value);\n const limitedValue = limitValue(value, maxRows, maxStringChars, state);\n return {\n rowCount,\n truncated: state.truncated,\n value: limitedValue,\n };\n}\n\nfunction summarizeEnvelope(envelope: ToolEnvelope): string {\n const rowText =\n envelope.rowCount === null\n ? \"row count unknown\"\n : `${envelope.rowCount} row${envelope.rowCount === 1 ? \"\" : \"s\"}`;\n const notes: string[] = [];\n if (envelope.rowCount === 0 || envelope.data === null || envelope.data === undefined) {\n notes.push(\n \"empty result; verify identifiers, fields, and date range before concluding no data exists\",\n );\n }\n if (envelope.truncated) {\n notes.push(\"artifact truncated to configured limits\");\n }\n if (hasErrorShape(envelope.data)) {\n notes.push(\"inspect result payload for Bloomberg error details\");\n }\n const noteText = notes.length === 0 ? \"\" : `; ${notes.join(\"; \")}`;\n return `${envelope.tool}: ${rowText}; truncated=${String(envelope.truncated)}${noteText}`;\n}\n\nfunction resultJsonReplacer(_key: string, value: unknown): unknown {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n}\n\nfunction formatToolContent(envelope: ToolEnvelope): string {\n const payload = {\n tool: envelope.tool,\n rowCount: envelope.rowCount,\n truncated: envelope.truncated,\n data: envelope.data,\n };\n return `${summarizeEnvelope(envelope)}\\n${JSON.stringify(payload, resultJsonReplacer)}`;\n}\n\nexport function createToolResult(\n tool: BloombergToolName,\n value: unknown,\n maxRows: number,\n maxStringChars: number,\n): ToolContentAndArtifact {\n const limited = limitResult(value, maxRows, maxStringChars);\n const envelope: ToolEnvelope = {\n tool,\n rowCount: limited.rowCount,\n truncated: limited.truncated,\n data: limited.value,\n };\n return [formatToolContent(envelope), envelope];\n}\n\nexport function throwWithToolContext(tool: BloombergToolName, error: unknown): never {\n const prefix = `${tool} failed`;\n if (error instanceof Error) {\n if (error.message.startsWith(prefix)) {\n throw error;\n }\n // Never mutate the original: a memoized connect rejection delivers the\n // same Error instance to every concurrently pending tool call.\n const wrapped = new Error(`${prefix}: ${error.message}`, { cause: error });\n wrapped.name = error.name;\n throw wrapped;\n }\n throw new Error(`${prefix}: ${String(error)}`);\n}\n","import { tool, type StructuredToolInterface } from \"@langchain/core/tools\";\nimport { zodToJsonSchema } from \"zod-to-json-schema\";\nimport type * as z from \"zod/v3\";\n\nimport type { BloombergToolName } from \"./options\";\nimport { throwWithToolContext, type ToolContentAndArtifact } from \"./result-limits\";\n\ntype ZodOutput<T> = z.ZodType<T, z.ZodTypeDef, unknown>;\n\n/**\n * Subset of the LangChain runnable config forwarded to tool functions.\n * `signal` aborts the call: the LangChain wrapper rejects immediately, and\n * Bloomberg tool functions use it to stop waiting and release subscriptions.\n */\nexport interface ToolInvocationConfig {\n readonly signal?: AbortSignal;\n}\n\ninterface BloombergStructuredToolFields<Input> {\n readonly description: string;\n readonly name: BloombergToolName;\n readonly responseFormat: \"content_and_artifact\";\n readonly schema: ZodOutput<Input>;\n}\n\nfunction inputJsonSchema(schema: ZodOutput<unknown>): Record<string, unknown> {\n const jsonSchema = zodToJsonSchema(schema, {\n $refStrategy: \"none\",\n effectStrategy: \"input\",\n pipeStrategy: \"input\",\n }) as Record<string, unknown>;\n delete jsonSchema.$schema;\n delete jsonSchema.definitions;\n return jsonSchema;\n}\n\n/**\n * Provider-ready JSON Schema for a Bloomberg tool's input parameters, using\n * the same conversion settings as the embedded provider tool definition\n * ($ref-free, input-side of transforms). Exposed so consumers do not each\n * reinvent zod -> JSON Schema conversion and sanitization.\n */\nexport function toolParameterJsonSchema(\n toolInstance: StructuredToolInterface,\n): Record<string, unknown> {\n const schema: unknown = toolInstance.schema;\n if (schema !== null && typeof schema === \"object\" && !(\"safeParse\" in schema)) {\n // Already a JSON Schema object.\n return schema as Record<string, unknown>;\n }\n return inputJsonSchema(schema as ZodOutput<unknown>);\n}\n\nexport function createBloombergStructuredTool<Input>(\n func: (input: Input, config?: ToolInvocationConfig) => Promise<ToolContentAndArtifact>,\n fields: BloombergStructuredToolFields<Input>,\n): StructuredToolInterface {\n const providerToolDefinition = {\n type: \"function\",\n function: {\n description: fields.description,\n name: fields.name,\n parameters: inputJsonSchema(fields.schema),\n },\n };\n\n const guarded = async (\n input: Input,\n config?: ToolInvocationConfig,\n ): Promise<ToolContentAndArtifact> => {\n try {\n // Refuse to start Bloomberg work for calls that are already cancelled.\n config?.signal?.throwIfAborted();\n } catch (error) {\n throwWithToolContext(fields.name, error);\n }\n return await func(input, config);\n };\n\n return tool(\n guarded as never,\n {\n ...fields,\n extras: { providerToolDefinition },\n } as never,\n ) as StructuredToolInterface;\n}\n","import type { BloombergChartSource, ChartKind, ChartRow, ChartSpecInput } from \"./ext-schemas\";\n\ntype GenericChartKind = Exclude<ChartKind, \"bar\" | \"candlestick\" | \"depth\">;\ntype VegaType = \"nominal\" | \"ordinal\" | \"quantitative\" | \"temporal\";\ntype VegaEncoding = Record<string, unknown>;\n\nexport interface ChartSpecSummary {\n readonly chart: ChartKind;\n readonly inputRows: number;\n readonly renderer: \"vega-lite\";\n readonly rowCount: number;\n readonly source: BloombergChartSource;\n readonly title: string;\n readonly truncatedInput: boolean;\n readonly xField?: string;\n readonly yFields: readonly string[];\n readonly seriesField?: string;\n}\n\nexport interface VegaLiteSpec {\n readonly $schema: \"https://vega.github.io/schema/vega-lite/v5.json\";\n readonly data: { readonly values: readonly ChartRow[] };\n readonly description: string;\n readonly title: string;\n readonly [key: string]: unknown;\n}\n\nexport interface ChartSpecOutput {\n readonly kind: \"xbbg.visualization\";\n readonly version: 1;\n readonly component: \"xbbg_chart\";\n readonly renderer: \"vega-lite\";\n readonly rowCount: number;\n readonly inputRowCount: number;\n readonly truncatedInput: boolean;\n readonly source: BloombergChartSource;\n readonly chart: ChartKind;\n readonly summary: ChartSpecSummary;\n readonly spec: VegaLiteSpec;\n readonly warnings: readonly string[];\n}\n\ninterface BuiltChartSpec {\n readonly spec: VegaLiteSpec;\n readonly xField: string;\n readonly yFields: readonly string[];\n readonly seriesField?: string;\n}\n\nconst VEGA_SCHEMA = \"https://vega.github.io/schema/vega-lite/v5.json\" as const;\nconst COMPONENT_NAME = \"xbbg_chart\" as const;\n\nconst X_FIELD_CANDIDATES = [\"date\", \"time\", \"datetime\", \"timestamp\"] as const;\nconst LABEL_FIELD_CANDIDATES = [\"ticker\", \"security\", \"member\", \"name\", \"label\"] as const;\nconst SERIES_FIELD_CANDIDATES = [\"ticker\", \"security\", \"field\", \"side\", \"category\"] as const;\nconst VALUE_FIELD_CANDIDATES = [\n \"value\",\n \"PX_LAST\",\n \"close\",\n \"price\",\n \"weight\",\n \"marketValue\",\n \"market_value\",\n] as const;\nconst OPEN_FIELD_CANDIDATES = [\"open\", \"OPEN\", \"PX_OPEN\"] as const;\nconst HIGH_FIELD_CANDIDATES = [\"high\", \"HIGH\", \"PX_HIGH\"] as const;\nconst LOW_FIELD_CANDIDATES = [\"low\", \"LOW\", \"PX_LOW\"] as const;\nconst CLOSE_FIELD_CANDIDATES = [\"close\", \"CLOSE\", \"PX_LAST\", \"last\", \"value\"] as const;\nconst SIDE_FIELD_CANDIDATES = [\"side\", \"SIDE\", \"type\"] as const;\nconst PRICE_FIELD_CANDIDATES = [\"price\", \"PRICE\", \"px\", \"PX\"] as const;\nconst SIZE_FIELD_CANDIDATES = [\"size\", \"SIZE\", \"quantity\", \"qty\", \"volume\"] as const;\n\nfunction defaultChartForSource(source: BloombergChartSource): ChartKind {\n switch (source) {\n case \"bdib\":\n return \"candlestick\";\n case \"depth\":\n return \"depth\";\n case \"holdings\":\n return \"bar\";\n case \"bdh\":\n case \"rows\":\n return \"line\";\n }\n}\n\nfunction fieldExists(rows: readonly ChartRow[], field: string): boolean {\n for (const row of rows) {\n if (Object.prototype.hasOwnProperty.call(row, field)) {\n return true;\n }\n }\n return false;\n}\n\nfunction findCandidateField(\n rows: readonly ChartRow[],\n candidates: readonly string[],\n): string | undefined {\n for (const candidate of candidates) {\n if (fieldExists(rows, candidate)) {\n return candidate;\n }\n }\n\n const first = rows[0];\n if (first === undefined) {\n return undefined;\n }\n const keys = Object.keys(first);\n for (const candidate of candidates) {\n const lower = candidate.toLowerCase();\n const match = keys.find((key) => key.toLowerCase() === lower);\n if (match !== undefined && fieldExists(rows, match)) {\n return match;\n }\n }\n return undefined;\n}\n\nfunction requireField(\n rows: readonly ChartRow[],\n field: string | undefined,\n label: string,\n candidates: readonly string[],\n): string {\n const resolved = field ?? findCandidateField(rows, candidates);\n if (resolved === undefined || !fieldExists(rows, resolved)) {\n throw new Error(\n `Missing ${label}; pass ${label} explicitly or include one of: ${candidates.join(\", \")}`,\n );\n }\n return resolved;\n}\n\nfunction hasFiniteNumber(rows: readonly ChartRow[], field: string): boolean {\n for (const row of rows) {\n if (typeof row[field] === \"number\" && Number.isFinite(row[field])) {\n return true;\n }\n }\n return false;\n}\n\nfunction firstNumericField(rows: readonly ChartRow[], excludedField: string): string | undefined {\n const first = rows[0];\n if (first === undefined) {\n return undefined;\n }\n for (const key of Object.keys(first)) {\n if (key !== excludedField && hasFiniteNumber(rows, key)) {\n return key;\n }\n }\n return undefined;\n}\n\nfunction requireNumericField(rows: readonly ChartRow[], field: string, label: string): void {\n if (!hasFiniteNumber(rows, field)) {\n throw new Error(`${label} (${field}) must contain at least one finite numeric value`);\n }\n}\n\nfunction inferVegaType(rows: readonly ChartRow[], field: string): VegaType {\n for (const row of rows) {\n const value = row[field];\n if (typeof value === \"number\") {\n return \"quantitative\";\n }\n if (\n typeof value === \"string\" &&\n (/^\\d{4}-\\d{2}-\\d{2}(?:$|[T\\s])/u.test(value) || /^\\d{8}$/u.test(value))\n ) {\n return \"temporal\";\n }\n }\n return \"nominal\";\n}\n\nfunction normalizeTemporalRows(rows: readonly ChartRow[], field: string): readonly ChartRow[] {\n let normalized: ChartRow[] | undefined;\n for (let index = 0; index < rows.length; index += 1) {\n const row = rows[index];\n if (row === undefined) {\n continue;\n }\n const value = row[field];\n if (typeof value !== \"string\" || !/^\\d{8}$/u.test(value)) {\n normalized?.push(row);\n continue;\n }\n normalized ??= rows.slice(0, index);\n normalized.push({\n ...row,\n [field]: `${value.slice(0, 4)}-${value.slice(4, 6)}-${value.slice(6, 8)}`,\n });\n }\n return normalized ?? rows;\n}\n\nfunction tooltip(fields: readonly string[]): readonly VegaEncoding[] {\n return fields.map((field) => ({\n field,\n type: field === \"_xbbg_value\" ? \"quantitative\" : \"nominal\",\n }));\n}\n\nfunction datumField(field: string): string {\n return `datum[${JSON.stringify(field)}]`;\n}\n\nfunction buildGenericSpec(\n input: ChartSpecInput,\n rows: readonly ChartRow[],\n chart: GenericChartKind,\n title: string,\n): BuiltChartSpec {\n const xField = requireField(rows, input.xField, \"xField\", X_FIELD_CANDIDATES);\n let yFields: readonly string[];\n if (input.yFields !== undefined) {\n yFields = input.yFields;\n } else {\n const yField =\n findCandidateField(rows, VALUE_FIELD_CANDIDATES) ?? firstNumericField(rows, xField);\n if (yField === undefined) {\n throw new Error(\"Missing yFields; include at least one numeric value field\");\n }\n yFields = [yField];\n }\n if (yFields.length === 0) {\n throw new Error(\"Missing yFields; include at least one numeric value field\");\n }\n for (const field of yFields) {\n if (!fieldExists(rows, field)) {\n throw new Error(`Missing y field: ${field}`);\n }\n requireNumericField(rows, field, \"yField\");\n }\n\n const normalizedRows =\n inferVegaType(rows, xField) === \"temporal\" ? normalizeTemporalRows(rows, xField) : rows;\n const seriesField =\n input.seriesField ??\n (yFields.length === 1 ? findCandidateField(rows, SERIES_FIELD_CANDIDATES) : undefined);\n if (seriesField !== undefined && !fieldExists(rows, seriesField)) {\n throw new Error(`Missing series field: ${seriesField}`);\n }\n\n const mark = chart === \"scatter\" ? \"point\" : chart;\n const encoding: VegaEncoding = {\n x: { field: xField, title: xField, type: inferVegaType(normalizedRows, xField) },\n };\n\n const transform: unknown[] = [];\n if (yFields.length === 1) {\n const yField = yFields[0];\n if (yField === undefined) {\n throw new Error(\"Missing yFields; include at least one numeric value field\");\n }\n encoding.y = { field: yField, title: yField, type: \"quantitative\" };\n if (seriesField !== undefined) {\n encoding.color = { field: seriesField, title: seriesField, type: \"nominal\" };\n }\n encoding.tooltip = tooltip([\n xField,\n ...(seriesField === undefined ? [] : [seriesField]),\n yField,\n ]);\n } else {\n transform.push({ as: [\"_xbbg_series\", \"_xbbg_value\"], fold: yFields });\n encoding.y = { field: \"_xbbg_value\", title: \"value\", type: \"quantitative\" };\n encoding.color = { field: \"_xbbg_series\", title: \"series\", type: \"nominal\" };\n if (seriesField !== undefined) {\n encoding.detail = { field: seriesField, type: \"nominal\" };\n }\n encoding.tooltip = tooltip([\n xField,\n ...(seriesField === undefined ? [] : [seriesField]),\n \"_xbbg_series\",\n \"_xbbg_value\",\n ]);\n }\n\n const spec: VegaLiteSpec = {\n $schema: VEGA_SCHEMA,\n data: { values: normalizedRows },\n description: `xbbg ${chart} chart spec for ${input.source}`,\n mark: { type: mark, tooltip: true },\n title,\n ...(transform.length === 0 ? {} : { transform }),\n encoding,\n };\n return { spec, xField, yFields, ...(seriesField === undefined ? {} : { seriesField }) };\n}\n\nfunction buildBarSpec(\n input: ChartSpecInput,\n rows: readonly ChartRow[],\n title: string,\n): BuiltChartSpec {\n const xField = requireField(\n rows,\n input.xField ?? input.labelField,\n \"labelField\",\n LABEL_FIELD_CANDIDATES,\n );\n const yField = requireField(\n rows,\n input.valueField ?? input.yFields?.[0],\n \"valueField\",\n VALUE_FIELD_CANDIDATES,\n );\n requireNumericField(rows, yField, \"valueField\");\n const seriesField = input.seriesField;\n if (seriesField !== undefined && !fieldExists(rows, seriesField)) {\n throw new Error(`Missing series field: ${seriesField}`);\n }\n const encoding: VegaEncoding = {\n x: { field: xField, sort: \"-y\", title: xField, type: inferVegaType(rows, xField) },\n y: { field: yField, title: yField, type: \"quantitative\" },\n tooltip: tooltip([xField, ...(seriesField === undefined ? [] : [seriesField]), yField]),\n };\n if (seriesField !== undefined) {\n encoding.color = { field: seriesField, title: seriesField, type: \"nominal\" };\n }\n return {\n spec: {\n $schema: VEGA_SCHEMA,\n data: { values: rows },\n description: `xbbg bar chart spec for ${input.source}`,\n encoding,\n mark: { type: \"bar\", tooltip: true },\n title,\n },\n xField,\n yFields: [yField],\n ...(seriesField === undefined ? {} : { seriesField }),\n };\n}\n\nfunction buildCandlestickSpec(\n input: ChartSpecInput,\n rows: readonly ChartRow[],\n title: string,\n): BuiltChartSpec {\n const xField = requireField(rows, input.xField, \"xField\", X_FIELD_CANDIDATES);\n const openField = requireField(rows, input.openField, \"openField\", OPEN_FIELD_CANDIDATES);\n const highField = requireField(rows, input.highField, \"highField\", HIGH_FIELD_CANDIDATES);\n const lowField = requireField(rows, input.lowField, \"lowField\", LOW_FIELD_CANDIDATES);\n const closeField = requireField(rows, input.closeField, \"closeField\", CLOSE_FIELD_CANDIDATES);\n for (const [label, field] of [\n [\"openField\", openField],\n [\"highField\", highField],\n [\"lowField\", lowField],\n [\"closeField\", closeField],\n ] as const) {\n requireNumericField(rows, field, label);\n }\n const normalizedRows =\n inferVegaType(rows, xField) === \"temporal\" ? normalizeTemporalRows(rows, xField) : rows;\n const color = {\n condition: { test: `${datumField(closeField)} >= ${datumField(openField)}`, value: \"#137333\" },\n value: \"#c5221f\",\n };\n return {\n spec: {\n $schema: VEGA_SCHEMA,\n data: { values: normalizedRows },\n description: `xbbg candlestick chart spec for ${input.source}`,\n encoding: {\n x: { field: xField, title: xField, type: inferVegaType(normalizedRows, xField) },\n },\n layer: [\n {\n mark: \"rule\",\n encoding: {\n color,\n tooltip: tooltip([xField, openField, highField, lowField, closeField]),\n y: { field: lowField, title: \"price\", type: \"quantitative\" },\n y2: { field: highField },\n },\n },\n {\n mark: \"bar\",\n encoding: {\n color,\n y: { field: openField, title: \"price\", type: \"quantitative\" },\n y2: { field: closeField },\n },\n },\n ],\n title,\n },\n xField,\n yFields: [openField, highField, lowField, closeField],\n };\n}\n\nfunction buildDepthSpec(\n input: ChartSpecInput,\n rows: readonly ChartRow[],\n title: string,\n): BuiltChartSpec {\n const priceField = requireField(\n rows,\n input.priceField ?? input.xField,\n \"priceField\",\n PRICE_FIELD_CANDIDATES,\n );\n const sizeField = requireField(\n rows,\n input.sizeField ?? input.valueField ?? input.yFields?.[0],\n \"sizeField\",\n SIZE_FIELD_CANDIDATES,\n );\n const sideField = requireField(\n rows,\n input.sideField ?? input.seriesField,\n \"sideField\",\n SIDE_FIELD_CANDIDATES,\n );\n requireNumericField(rows, priceField, \"priceField\");\n requireNumericField(rows, sizeField, \"sizeField\");\n return {\n spec: {\n $schema: VEGA_SCHEMA,\n data: { values: rows },\n description: `xbbg market depth chart spec for ${input.source}`,\n encoding: {\n color: { field: sideField, title: sideField, type: \"nominal\" },\n tooltip: tooltip([sideField, priceField, sizeField]),\n x: { field: priceField, title: priceField, type: \"quantitative\" },\n y: { field: sizeField, title: sizeField, type: \"quantitative\" },\n },\n mark: { type: \"bar\", tooltip: true },\n title,\n },\n xField: priceField,\n yFields: [sizeField],\n seriesField: sideField,\n };\n}\n\nexport function createChartSpec(input: ChartSpecInput): ChartSpecOutput {\n const maxPoints = input.maxPoints ?? input.rows.length;\n const rows = input.rows.length > maxPoints ? input.rows.slice(0, maxPoints) : input.rows;\n if (rows.length === 0) {\n throw new Error(\"rows must contain at least one chart data row\");\n }\n\n const chart = input.chart ?? defaultChartForSource(input.source);\n const title = input.title ?? `${input.source} ${chart}`;\n const warnings: string[] = [];\n if (rows.length !== input.rows.length) {\n warnings.push(\n `Chart spec contains first ${rows.length} of ${input.rows.length} rows; narrow the upstream request for a complete visualization.`,\n );\n }\n\n const built =\n chart === \"candlestick\"\n ? buildCandlestickSpec(input, rows, title)\n : chart === \"depth\"\n ? buildDepthSpec(input, rows, title)\n : chart === \"bar\"\n ? buildBarSpec(input, rows, title)\n : buildGenericSpec(input, rows, chart, title);\n\n const summary: ChartSpecSummary = {\n chart,\n inputRows: input.rows.length,\n renderer: \"vega-lite\",\n rowCount: rows.length,\n source: input.source,\n title,\n truncatedInput: rows.length !== input.rows.length,\n xField: built.xField,\n yFields: built.yFields,\n ...(built.seriesField === undefined ? {} : { seriesField: built.seriesField }),\n };\n\n return {\n kind: \"xbbg.visualization\",\n version: 1,\n component: COMPONENT_NAME,\n renderer: \"vega-lite\",\n rowCount: rows.length,\n inputRowCount: input.rows.length,\n truncatedInput: rows.length !== input.rows.length,\n source: input.source,\n chart,\n summary,\n spec: built.spec,\n warnings,\n };\n}\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\";\nconst REQUIRED_TOOL_INSTRUCTIONS = [\n \"# Bloomberg tool usage\",\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.\",\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.\",\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.\",\n \"- Issue one tool call per dataset and read any error before retrying; never probe parameter variants in parallel. Omit optional output-shape parameters such as format unless the user asked for a specific shape.\",\n \"\",\n \"## Security identifiers\",\n \"- Pass each security in the form the user supplied it; never translate between identifier kinds on your own.\",\n \"- User supplied a Bloomberg ticker: pass it through fully qualified as <TICKER> <MARKET_SECTOR>, for example <TICKER> <EXCHANGE> Equity, <INDEX_TICKER> Index, or <CCY_PAIR> Curncy.\",\n \"- The market sector ending (Bloomberg yellow key) is part of the security string. The sectors are: Equity, Index, Curncy, Comdty, Corp, Govt, Muni, Mtge, M-Mkt, and Pfd. Equity securities carry an exchange or composite code before the sector (<TICKER> <EXCHANGE> Equity); preferred securities use the Pfd sector; corporate and government bonds use Corp and Govt. Request tools pass the security through to Bloomberg without validating the sector, so copy it exactly as the user supplied it.\",\n \"- User supplied a raw ISIN or CUSIP: pass Bloomberg identifier syntax directly: /isin/<ISIN> or /cusip/<CUSIP>. Never pass the bare identifier without its prefix, except to xbbg_resolve_isins and xbbg_issuer_isins, which take raw ISIN strings.\",\n \"- <TICKER> <MARKET_SECTOR> is a format template, not authorization to construct a ticker. Never invent, recall from memory, or guess the Bloomberg ticker behind an identifier the user gave; identifier syntax is already a complete, valid security input. Use xbbg_resolve_isins only when the user wants the resolved Bloomberg security itself.\",\n \"- Recipe tools that take tickers (xbbg_preferreds, xbbg_corporate_bonds, xbbg_index_members, xbbg_etf_holdings) do not accept identifier syntax. When the user supplied an ISIN or CUSIP for those workflows, resolve it with xbbg_resolve_isins first and use the returned Bloomberg security; never guess the ticker.\",\n \"- Do not use xbbg_bsrch as a replacement for a known ticker, ISIN, or CUSIP.\",\n \"- For dealer quote / BQR workflows, use xbbg_bqr with a fixed-income identifier plus a dealer quote source such as /isin/<ISIN>@<QUOTE_SOURCE> <MARKET_SECTOR>. For raw intraday ticks, use xbbg_bdtick.\",\n \"\",\n \"## Core request tools\",\n \"- xbbg_bdp: current or reference point-in-time fields. 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.\",\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.\",\n \"- xbbg_bds: Bloomberg bulk/table fields. Provide exactly one bulk field; do not use bds for ordinary multi-field reference data.\",\n \"- xbbg_bdib: intraday bars only. Provide one ticker, explicit ISO start/end datetimes with time components, a positive interval in minutes, and timezone context when datetimes are naive.\",\n \"- xbbg_bdtick: intraday tick data. Provide one ticker, explicit ISO start/end datetimes with time components, and explicit eventTypes unless the default event stream is intended. Use includeBrokerCodes or includeConditionCodes only when those columns are needed.\",\n \"- xbbg_check_entitlements: checks whether the current Bloomberg identity is entitled to a nonempty list of EIDs returned by an EID-capable request. Usually use the default //blp/refdata service.\",\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.\",\n \"- xbbg_bsrch: Bloomberg search-grid or saved-search workflows only. Do not use it for ordinary security lookup.\",\n \"- xbbg_bqr: Bloomberg Quote Request / dealer quotes. Prefer fixed-income identifier inputs with a dealer quote source such as /isin/<ISIN>@<QUOTE_SOURCE> <MARKET_SECTOR>, explicit start/end datetimes with time components, and explicit event types.\",\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.\",\n \"- xbbg_beqs: Bloomberg equity screening by named BEQS screen. Prefer this over hand-written BQL when the user names an existing Bloomberg screen.\",\n \"- xbbg_yas: fixed-income YAS recipe fields. Prefer this over manual YAS-style BDP requests when the user asks for yield, duration, spread, or price analytics.\",\n \"- xbbg_preferreds: preferred stock discovery from the issuer's common equity ticker, never a guessed preferred ('Pfd') ticker. Resolve a supplied ISIN/CUSIP with xbbg_resolve_isins first. Prefer this over xbbg_ext_bql_builder plus xbbg_bql when the user wants the actual preferreds result.\",\n \"- xbbg_corporate_bonds: bounded corporate bond universe query for a company ticker. Prefer this over generic BQL for company debt discovery.\",\n \"- xbbg_index_members: index constituents through the core index recipe. Prefer this over generic BDS/BQL members when the user asks for constituents.\",\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.\",\n \"- xbbg_issuer_isins: issuer/bond ISIN workflow for supplied bond ISIN strings.\",\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.\",\n \"- xbbg_stream_snapshot: bounded live market-data observation from //blp/mktdata. Requires explicit maxUpdates and always terminates/unsubscribes.\",\n \"- xbbg_mktbar_snapshot: bounded live market-bar observation from //blp/mktbar for one ticker. Requires explicit maxUpdates and always terminates/unsubscribes.\",\n \"- xbbg_depth_snapshot: bounded market-depth observation from //blp/mktdepthdata for one ticker. Requires explicit maxUpdates and always terminates/unsubscribes.\",\n \"\",\n \"## BQL guidance\",\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.\",\n \"- Basic shape: get(<FIELD_1>, <FIELD_2>) for(<UNIVERSE>). Use placeholders such as '<TICKER> <MARKET_SECTOR>', holdings('<ETF_TICKER> <MARKET_SECTOR>'), or members('<INDEX_TICKER> <MARKET_SECTOR>') until the user supplies real inputs.\",\n \"- Use BQL for universe-oriented analytics and screens only when the user provides a bounded universe, filters, and date range.\",\n \"- Prefer xbbg_ext_bql_builder instead of hand-writing BQL for supported workflows: preferred stocks, corporate bonds, and ETF holdings.\",\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.\",\n \"\",\n \"## Output handling\",\n \"- Tool results use LangChain content_and_artifact output: content starts with a compact summary and then includes bounded model-readable JSON; artifact is the structured bounded envelope with tool, rowCount, truncated, and data for application code.\",\n \"- If a response is empty, truncated, or contains Bloomberg/security errors, say that directly. Do not fill gaps from memory or assumptions.\",\n] as const;\n\nconst OPTIONAL_EXTENSION_INSTRUCTIONS = [\n \"\",\n \"## Extension helper tools\",\n \"- xbbg_ext_ticker: ticker hygiene before live calls. parse_ticker splits generic futures-style tickers only — asset endings Index, Curncy, Comdty, or Corp as <ROOT><N> <ASSET>, or <ROOT><N> <EXCHANGE> Equity — and rejects other market sectors (Pfd, Govt, Muni, Mtge, M-Mkt) and non-futures securities. 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.\",\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.\",\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.\",\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.\",\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.\",\n \"- xbbg_ext_chart_spec: renderer-neutral chart spec helper. Convert bounded rows from xbbg_bdh, xbbg_bdib, holdings, depth, or already-shaped row data into a Vega-Lite JSON spec for frontend rendering; do not use it as proof that Bloomberg data was fetched.\",\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.\",\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.\",\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.\",\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.\",\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.\",\n] as const;\n\nconst OPTIONAL_LIMIT_INSTRUCTIONS = [\n \"\",\n \"## Request limits and inputs\",\n \"- Keep Bloomberg requests bounded: explicit securities, explicit fields, explicit dates, limited rows, and no broad exploratory pulls unless the user narrows the universe.\",\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.\",\n \"- Use primitive kwargs only: string, number, or boolean values. For overrides on xbbg_bdp/xbbg_bdh/xbbg_bds, use primitive values for global overrides and nested primitive maps keyed by exact security for per-security overrides. Do not send other nested objects, arrays, or inferred defaults.\",\n] as const;\n\nexport const BLOOMBERG_TOOL_INSTRUCTIONS = [\n ...REQUIRED_TOOL_INSTRUCTIONS,\n ...OPTIONAL_EXTENSION_INSTRUCTIONS,\n ...OPTIONAL_LIMIT_INSTRUCTIONS,\n].join(\"\\n\");\n\nexport interface BloombergToolInstructionsOptions {\n readonly includeExtensionGuidance?: boolean;\n readonly includeLimitReminder?: boolean;\n}\n\nexport function getBloombergToolInstructions(\n options: BloombergToolInstructionsOptions = {},\n): string {\n const includeExtensionGuidance = options.includeExtensionGuidance ?? true;\n const includeLimitReminder = options.includeLimitReminder ?? true;\n const lines: string[] = [...REQUIRED_TOOL_INSTRUCTIONS];\n if (includeExtensionGuidance) {\n lines.push(...OPTIONAL_EXTENSION_INSTRUCTIONS);\n }\n if (includeLimitReminder) {\n lines.push(...OPTIONAL_LIMIT_INSTRUCTIONS);\n }\n return lines.join(\"\\n\");\n}\n\nexport const BDP_DESCRIPTION =\n 'Bloomberg reference data for current or point-in-time fields. Use for a small bounded list of fully qualified securities. Use /isin/<ISIN> for ISINs and /cusip/<CUSIP> for CUSIPs. Example: securities [\"<TICKER> <MARKET_SECTOR>\"], fields [\"<FIELD>\"].';\n\nexport const BDH_DESCRIPTION =\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 [\"<TICKER> <MARKET_SECTOR>\"], fields [\"<FIELD>\"], start \"<START_DATE>\", end \"<END_DATE>\".';\n\nexport const BDS_DESCRIPTION =\n 'Bloomberg bulk/table reference data. Requires exactly one bulk field, not a field list. Use /isin/<ISIN> for ISINs and /cusip/<CUSIP> for CUSIPs. Example: securities [\"<INDEX_TICKER> <MARKET_SECTOR>\"], field \"<BULK_FIELD>\".';\n\nexport const BDIB_DESCRIPTION =\n 'Bloomberg intraday bars. Requires one ticker plus explicit ISO start/end datetimes with time components and a positive interval in minutes. Use /isin/<ISIN> for ISINs and /cusip/<CUSIP> for CUSIPs. Example: ticker \"<TICKER> <MARKET_SECTOR>\", start \"<START_DATETIME>\", end \"<END_DATETIME>\", interval <MINUTES>.';\n\nexport const BDTICK_DESCRIPTION =\n 'Bloomberg intraday tick data. Requires one ticker plus explicit ISO start/end datetimes with time components. Set eventTypes explicitly, for example [\"<EVENT_TYPE>\"], and includeBrokerCodes/includeConditionCodes only when needed.';\n\nexport const CHECK_ENTITLEMENTS_DESCRIPTION =\n \"Check the current Bloomberg identity against entitlement IDs returned by a request with returnEids enabled. Accepts a nonempty integer EID list and defaults the service to //blp/refdata. This tool is read-only.\";\n\nexport const BQL_DESCRIPTION =\n \"Bloomberg Query Language expression sent as one complete query string. Use for bounded universe analytics with placeholder-shaped syntax such as get(<FIELD>) for('<TICKER> <MARKET_SECTOR>'), holdings('<ETF_TICKER> <MARKET_SECTOR>'), members('<INDEX_TICKER> <MARKET_SECTOR>'), filters with with(...), or dates=range(...). Prefer xbbg_bdp/xbbg_bdh for simple reference or historical requests.\";\n\nexport const BSRCH_DESCRIPTION =\n 'Bloomberg search/grid request. Use for saved-search or ExcelGetGrid-style Bloomberg searches, not ordinary security lookup. Example searchSpec \"<SEARCH_SPEC>\".';\n\nexport const BQR_DESCRIPTION =\n 'Bloomberg Quote Request / dealer quotes. Use for fixed-income dealer quote ticks, preferably with an ISIN plus dealer source such as \"/isin/<ISIN>@<QUOTE_SOURCE> <MARKET_SECTOR>\"; requires explicit ISO start/end datetimes with time components. Set eventTypes explicitly, for example [\"<EVENT_TYPE>\"].';\n\nexport const BFLDS_DESCRIPTION =\n 'Bloomberg field metadata and field search. Use first when a field mnemonic is uncertain. Provide exactly one of fields or searchSpec. Example: fields [\"<FIELD>\"] or searchSpec \"<FIELD_SEARCH_TEXT>\".';\n\nexport const BEQS_DESCRIPTION =\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.\";\n\nexport const YAS_DESCRIPTION =\n \"Bloomberg fixed-income YAS recipe fields for one or more bonds. Use for yield, duration, spread, benchmark, or price analytics; provide explicit fields and optional settlement/yield/price inputs. Pass securities as supplied: '<TICKER> <MARKET_SECTOR>' or identifier syntax such as '/isin/<ISIN> <MARKET_SECTOR>'.\";\n\nexport const PREFERREDS_DESCRIPTION =\n \"Preferred stock discovery for one issuer. Takes the issuer's common equity ticker such as '<TICKER> US Equity', never a preferred ('Pfd') ticker and never a guessed one. If the user supplied an ISIN or CUSIP, resolve it with xbbg_resolve_isins first.\";\n\nexport const CORPORATE_BONDS_DESCRIPTION =\n \"Corporate bond universe query for one issuer/company equity ticker, with optional currency, active-only filter, and result fields. Prefer this over generic BQL for company debt discovery. If the user supplied an ISIN or CUSIP, resolve it with xbbg_resolve_isins first; never guess the ticker.\";\n\nexport const INDEX_MEMBERS_DESCRIPTION =\n \"Index constituent recipe for one Bloomberg index ticker such as '<INDEX_TICKER> Index'. Use for bounded member lists and optional historical/as-of constituent membership; never guess index tickers.\";\n\nexport const RESOLVE_ISINS_DESCRIPTION =\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.\";\n\nexport const ISSUER_ISINS_DESCRIPTION =\n \"Issuer/bond ISIN workflow for supplied bond ISIN strings. Use for issuer-level ISIN discovery starting from known bond ISINs.\";\n\nexport const ETF_HOLDINGS_DESCRIPTION =\n \"ETF holdings recipe for one ETF ticker such as '<ETF_TICKER> <MARKET_SECTOR>'. Use when the user asks for ETF constituents or holdings and wants the bounded holdings result. Resolve a supplied ISIN/CUSIP with xbbg_resolve_isins first; never guess the ticker.\";\n\nexport const STREAM_SNAPSHOT_DESCRIPTION =\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.\";\n\nexport const MKTBAR_SNAPSHOT_DESCRIPTION =\n \"Bounded live market-bar snapshot from //blp/mktbar for one ticker. Collects at most maxUpdates updates until timeout/done, then always unsubscribes.\";\n\nexport const DEPTH_SNAPSHOT_DESCRIPTION =\n \"Bounded live market-depth snapshot from //blp/mktdepthdata for one ticker. Collects at most maxUpdates updates until timeout/done, then always unsubscribes.\";\n\nexport const EXT_TICKER_DESCRIPTION =\n \"Ticker hygiene helpers: parse_ticker (generic futures-style tickers ending in Index, Curncy, Comdty, or Corp, or <ROOT><N> <EXCHANGE> Equity; other market sectors are rejected), normalize_tickers, filter_equity_tickers, is_specific_contract, and validate_generic_ticker.\";\n\nexport const EXT_FUTURES_DESCRIPTION =\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.\";\n\nexport const EXT_CDX_DESCRIPTION =\n \"CDX helpers for parsing, series rolling/resolution, and predefined info/pricing/risk BDP field bundles.\";\n\nexport const EXT_CURRENCY_DESCRIPTION =\n \"Currency planning helpers: build FX pairs, test same-currency requests, and find currencies needing conversion.\";\n\nexport const EXT_BQL_BUILDER_DESCRIPTION =\n \"BQL builders for preferred stocks, corporate bonds, and ETF holdings. Prefer to construct those bounded BQL shapes before xbbg_bql.\";\nexport const EXT_CHART_SPEC_DESCRIPTION =\n \"Renderer-neutral chart spec helper for frontend generative UI. Converts bounded Bloomberg rows from bdh, bdib, holdings, depth, or already-shaped row data into a Vega-Lite JSON spec; it does not fetch Bloomberg data or render images.\";\n\nexport const EXT_MARKET_SESSION_DESCRIPTION =\n \"Market session and timezone helpers for deriving sessions, UTC windows, market rules, exchange metadata, turnover defaults, and BQR datetime defaults.\";\n\nexport const EXT_YAS_OVERRIDES_DESCRIPTION =\n \"Build flat Bloomberg YAS override maps for fixed-income analytics fields.\";\n\nexport const EXT_CONSTANTS_DESCRIPTION =\n \"Static Bloomberg helper constants for date parsing/formatting, futures months, dividend types, and ETF/dividend columns.\";\n\nexport const EXT_COLUMNS_DESCRIPTION =\n \"Column rename helpers for dividend, ETF, and earnings-shaped Bloomberg responses.\";\n\nexport const EXT_CALCULATE_DESCRIPTION =\n \"Small numeric helper operations for Bloomberg workflows, including level percentage calculations.\";\n\nexport function describeConfiguredLimits(options: BloombergToolsOptions): string {\n const parts: string[] = [];\n if (options.maxSecurities !== undefined) {\n parts.push(`maxSecurities=${options.maxSecurities}`);\n }\n if (options.maxFields !== undefined) {\n parts.push(`maxFields=${options.maxFields}`);\n }\n if (options.maxRows !== undefined) {\n parts.push(`maxRows=${options.maxRows}`);\n }\n return parts.length === 0 ? \"default request limits\" : parts.join(\", \");\n}\n","import * as z from \"zod/v3\";\n\nimport type { NormalizedBloombergToolsOptions } from \"./options\";\ntype ZodOutput<T> = z.ZodType<T, z.ZodTypeDef, unknown>;\n\nexport interface StringPair {\n readonly key: string;\n readonly value: string;\n}\n\nexport interface FuturesCandidate {\n readonly ticker: string;\n readonly year: number;\n readonly month: number;\n}\n\nexport type PrimitiveMap = Readonly<Record<string, string | number | boolean>>;\n\nexport type TickerOperation =\n | \"parse_ticker\"\n | \"normalize_tickers\"\n | \"filter_equity_tickers\"\n | \"is_specific_contract\"\n | \"validate_generic_ticker\";\n\nexport type SingleTickerOperation = Exclude<\n TickerOperation,\n \"normalize_tickers\" | \"filter_equity_tickers\"\n>;\n\nexport interface SingleTickerInput {\n readonly operation: SingleTickerOperation;\n readonly ticker: string;\n}\n\nexport interface TickerListInput {\n readonly operation: \"normalize_tickers\" | \"filter_equity_tickers\";\n readonly tickers: readonly string[];\n}\n\nexport type TickerInput = SingleTickerInput | TickerListInput;\n\nexport type FuturesOperation =\n | \"build_futures_ticker\"\n | \"generate_candidates\"\n | \"contract_index\"\n | \"filter_candidates_by_cycle\"\n | \"filter_valid_contracts\"\n | \"get_futures_months\";\n\nexport interface FuturesBuildTickerInput {\n readonly operation: \"build_futures_ticker\";\n readonly prefix: string;\n readonly monthCode: string;\n readonly year: string;\n readonly asset: string;\n}\n\nexport interface FuturesGenerateCandidatesInput {\n readonly operation: \"generate_candidates\";\n readonly genTicker: string;\n readonly year: number;\n readonly month: number;\n readonly day: number;\n readonly freq?: string;\n readonly count?: number;\n}\n\nexport interface FuturesContractIndexInput {\n readonly operation: \"contract_index\";\n readonly genTicker: string;\n}\n\nexport interface FuturesFilterCandidatesByCycleInput {\n readonly operation: \"filter_candidates_by_cycle\";\n readonly candidates: readonly FuturesCandidate[];\n readonly cycle: string;\n}\n\nexport interface FuturesFilterValidContractsInput {\n readonly operation: \"filter_valid_contracts\";\n readonly contracts: readonly StringPair[];\n readonly year: number;\n readonly month: number;\n readonly day: number;\n}\n\nexport interface FuturesMonthsInput {\n readonly operation: \"get_futures_months\";\n}\n\nexport type FuturesInput =\n | FuturesBuildTickerInput\n | FuturesGenerateCandidatesInput\n | FuturesContractIndexInput\n | FuturesFilterCandidatesByCycleInput\n | FuturesFilterValidContractsInput\n | FuturesMonthsInput;\n\nexport type CdxOperation =\n | \"parse_cdx_ticker\"\n | \"previous_cdx_series\"\n | \"cdx_gen_to_specific\"\n | \"cdx_info\"\n | \"cdx_pricing\"\n | \"cdx_risk\";\n\nexport interface CdxTickerInput {\n readonly operation: \"parse_cdx_ticker\" | \"previous_cdx_series\" | \"cdx_info\";\n readonly ticker: string;\n}\n\nexport interface CdxMarketDataInput {\n readonly operation: \"cdx_pricing\" | \"cdx_risk\";\n readonly ticker: string;\n readonly recoveryRate?: number;\n}\n\nexport interface CdxGenToSpecificInput {\n readonly operation: \"cdx_gen_to_specific\";\n readonly genTicker: string;\n readonly series: number;\n}\n\nexport type CdxInput = CdxTickerInput | CdxMarketDataInput | CdxGenToSpecificInput;\n\nexport type CurrencyOperation = \"build_fx_pair\" | \"same_currency\" | \"currencies_needing_conversion\";\n\nexport interface FxPairInput {\n readonly operation: \"build_fx_pair\";\n readonly fromCcy: string;\n readonly toCcy: string;\n}\n\nexport interface SameCurrencyInput {\n readonly operation: \"same_currency\";\n readonly ccy1: string;\n readonly ccy2: string;\n}\n\nexport interface CurrencyConversionInput {\n readonly operation: \"currencies_needing_conversion\";\n readonly currencies: readonly string[];\n readonly target: string;\n}\n\nexport type CurrencyInput = FxPairInput | SameCurrencyInput | CurrencyConversionInput;\n\nexport type BqlBuilderOperation =\n | \"build_preferreds_query\"\n | \"build_corporate_bonds_query\"\n | \"build_etf_holdings_query\";\n\nexport interface PreferredsQueryInput {\n readonly operation: \"build_preferreds_query\";\n readonly equityTicker: string;\n readonly extraFields?: readonly string[];\n}\n\nexport interface CorporateBondsQueryInput {\n readonly operation: \"build_corporate_bonds_query\";\n readonly ticker: string;\n readonly ccy?: string;\n readonly extraFields?: readonly string[];\n readonly activeOnly?: boolean;\n}\n\nexport interface EtfHoldingsQueryInput {\n readonly operation: \"build_etf_holdings_query\";\n readonly etfTicker: string;\n readonly extraFields?: readonly string[];\n}\n\nexport type BqlBuilderInput =\n | PreferredsQueryInput\n | CorporateBondsQueryInput\n | EtfHoldingsQueryInput;\n\nexport type MarketSessionOperation =\n | \"derive_sessions\"\n | \"get_market_rule\"\n | \"infer_timezone\"\n | \"session_times_to_utc\"\n | \"default_turnover_dates\"\n | \"default_bqr_datetimes\"\n | \"get_exchange_override\"\n | \"list_exchange_overrides\";\n\nexport interface DeriveSessionsInput {\n readonly operation: \"derive_sessions\";\n readonly dayStart: string;\n readonly dayEnd: string;\n readonly mic?: string;\n readonly exchCode?: string;\n}\n\nexport interface MarketRuleInput {\n readonly operation: \"get_market_rule\";\n readonly mic?: string;\n readonly exchCode?: string;\n}\n\nexport interface InferTimezoneInput {\n readonly operation: \"infer_timezone\";\n readonly countryIso: string;\n}\n\nexport interface SessionTimesToUtcInput {\n readonly operation: \"session_times_to_utc\";\n readonly startTime: string;\n readonly endTime: string;\n readonly exchangeTz: string;\n readonly date: string;\n}\n\nexport interface TurnoverDatesInput {\n readonly operation: \"default_turnover_dates\";\n readonly startDate?: string;\n readonly endDate?: string;\n}\n\nexport interface BqrDatetimesInput {\n readonly operation: \"default_bqr_datetimes\";\n readonly startDatetime?: string;\n readonly endDatetime?: string;\n}\n\nexport interface ExchangeOverrideLookupInput {\n readonly operation: \"get_exchange_override\";\n readonly ticker: string;\n}\n\nexport interface ListExchangeOverridesInput {\n readonly operation: \"list_exchange_overrides\";\n}\n\nexport type MarketSessionInput =\n | DeriveSessionsInput\n | MarketRuleInput\n | InferTimezoneInput\n | SessionTimesToUtcInput\n | TurnoverDatesInput\n | BqrDatetimesInput\n | ExchangeOverrideLookupInput\n | ListExchangeOverridesInput;\n\nexport interface YasOverridesInput {\n readonly settleDt?: string;\n readonly yieldType?: number;\n readonly spread?: number;\n readonly yieldVal?: number;\n readonly price?: number;\n readonly benchmark?: string;\n}\n\nexport type ConstantsOperation =\n | \"parse_date\"\n | \"fmt_date\"\n | \"get_month_code\"\n | \"get_month_name\"\n | \"get_futures_months\"\n | \"get_dvd_type\"\n | \"get_dvd_types\"\n | \"get_dvd_cols\"\n | \"get_etf_cols\";\n\nexport interface ParseDateInput {\n readonly operation: \"parse_date\";\n readonly dateStr: string;\n}\n\nexport interface FmtDateInput {\n readonly operation: \"fmt_date\";\n readonly year: number;\n readonly month: number;\n readonly day: number;\n readonly fmt?: string;\n}\n\nexport interface MonthCodeInput {\n readonly operation: \"get_month_code\";\n readonly monthName: string;\n}\n\nexport interface MonthNameInput {\n readonly operation: \"get_month_name\";\n readonly code: string;\n}\n\nexport interface DvdTypeInput {\n readonly operation: \"get_dvd_type\";\n readonly dvdType: string;\n}\n\nexport interface ConstantsLookupInput {\n readonly operation: \"get_futures_months\" | \"get_dvd_types\" | \"get_dvd_cols\" | \"get_etf_cols\";\n}\n\nexport type ConstantsInput =\n | ParseDateInput\n | FmtDateInput\n | MonthCodeInput\n | MonthNameInput\n | DvdTypeInput\n | ConstantsLookupInput;\n\nexport type ColumnsOperation =\n | \"rename_dividend_columns\"\n | \"rename_etf_columns\"\n | \"build_earning_header_rename\";\n\nexport interface RenameColumnsInput {\n readonly operation: \"rename_dividend_columns\" | \"rename_etf_columns\";\n readonly columns: readonly string[];\n}\n\nexport interface EarningHeaderRenameInput {\n readonly operation: \"build_earning_header_rename\";\n readonly headerRow: readonly StringPair[];\n readonly dataColumns: readonly string[];\n}\n\nexport type ColumnsInput = RenameColumnsInput | EarningHeaderRenameInput;\n\nexport interface CalculateInput {\n readonly operation: \"calculate_level_percentages\";\n readonly values: readonly (number | null)[];\n readonly levels: readonly (number | null)[];\n}\n\nexport type BloombergChartSource = \"bdh\" | \"bdib\" | \"holdings\" | \"depth\" | \"rows\";\n\nexport type ChartKind = \"line\" | \"area\" | \"bar\" | \"scatter\" | \"candlestick\" | \"depth\";\n\nexport type ChartRenderer = \"vega-lite\";\n\nexport type ChartScalar = string | number | boolean | null;\n\nexport type ChartRow = Readonly<Record<string, ChartScalar>>;\n\nexport interface ChartSpecInput {\n readonly source: BloombergChartSource;\n readonly rows: readonly ChartRow[];\n readonly renderer?: ChartRenderer;\n readonly chart?: ChartKind;\n readonly title?: string;\n readonly xField?: string;\n readonly yFields?: readonly string[];\n readonly seriesField?: string;\n readonly labelField?: string;\n readonly valueField?: string;\n readonly openField?: string;\n readonly highField?: string;\n readonly lowField?: string;\n readonly closeField?: string;\n readonly sideField?: string;\n readonly priceField?: string;\n readonly sizeField?: string;\n readonly maxPoints?: number;\n}\n\nconst stringPairSchema = z.object({\n key: z.string().trim().min(1).describe(\"String pair key.\"),\n value: z.string().trim().min(1).describe(\"String pair value.\"),\n});\n\nconst futuresCandidateSchema = z.object({\n month: z.number().int().min(1).max(12).describe(\"Contract month number, 1-12.\"),\n ticker: z.string().trim().min(1).describe(\"Specific Bloomberg futures ticker.\"),\n year: z.number().int().min(1900).describe(\"Contract year.\"),\n});\n\nfunction nonEmptyString(\n options: NormalizedBloombergToolsOptions,\n description: string,\n): ZodOutput<string> {\n return z\n .string()\n .trim()\n .pipe(z.string().min(1).max(options.maxStringChars).describe(description));\n}\n\nfunction stringArray(\n options: NormalizedBloombergToolsOptions,\n description: string,\n maxItems = options.maxFields,\n): ZodOutput<string[]> {\n return z.array(nonEmptyString(options, description)).min(1).max(maxItems).describe(description);\n}\n\nfunction optionalString(\n options: NormalizedBloombergToolsOptions,\n description: string,\n): ZodOutput<string | undefined> {\n return nonEmptyString(options, description).optional();\n}\nexport function tickerSchema(options: NormalizedBloombergToolsOptions): ZodOutput<TickerInput> {\n const ticker = nonEmptyString(\n options,\n \"One generic futures-style Bloomberg ticker: <ROOT><N> ending in Index, Curncy, Comdty, or Corp, or <ROOT><N> <EXCHANGE> Equity. parse_ticker rejects other market sectors (Pfd, Govt, Muni, Mtge, M-Mkt) and non-futures securities.\",\n );\n const tickers = stringArray(\n options,\n \"Bloomberg tickers to normalize or filter.\",\n options.maxSecurities,\n );\n return z.discriminatedUnion(\"operation\", [\n z.object({ operation: z.literal(\"parse_ticker\"), ticker }).strict(),\n z.object({ operation: z.literal(\"is_specific_contract\"), ticker }).strict(),\n z.object({ operation: z.literal(\"validate_generic_ticker\"), ticker }).strict(),\n z.object({ operation: z.literal(\"normalize_tickers\"), tickers }).strict(),\n z.object({ operation: z.literal(\"filter_equity_tickers\"), tickers }).strict(),\n ]);\n}\n\nexport function futuresSchema(options: NormalizedBloombergToolsOptions): ZodOutput<FuturesInput> {\n const genTicker = nonEmptyString(\n options,\n \"Generic Bloomberg futures ticker, for example ES1 Index.\",\n );\n const year = z.number().int().describe(\"Contract year, for example 2024.\");\n const month = z.number().int().min(1).max(12).describe(\"Month number, 1-12.\");\n const day = z.number().int().min(1).max(31).describe(\"Day number, 1-31.\");\n return z.discriminatedUnion(\"operation\", [\n z\n .object({\n asset: nonEmptyString(\n options,\n \"Bloomberg asset class suffix, for example Index or Comdty.\",\n ),\n monthCode: nonEmptyString(options, \"Bloomberg futures month code, for example H.\"),\n operation: z.literal(\"build_futures_ticker\"),\n prefix: nonEmptyString(options, \"Futures ticker root prefix, for example ES.\"),\n year: z\n .union([z.string().trim().min(1), z.number().int().transform(String)])\n .describe(\"Contract year, full or abbreviated, as a string or integer.\"),\n })\n .strict(),\n z\n .object({\n count: z\n .number()\n .int()\n .positive()\n .optional()\n .describe(\"Maximum number of futures candidates to generate.\"),\n day,\n freq: optionalString(options, \"Futures frequency/cycle hint.\"),\n genTicker,\n month,\n operation: z.literal(\"generate_candidates\"),\n year,\n })\n .strict(),\n z.object({ genTicker, operation: z.literal(\"contract_index\") }).strict(),\n z\n .object({\n candidates: z\n .array(futuresCandidateSchema)\n .min(1)\n .max(options.maxFields)\n .describe(\"Candidate futures contracts.\"),\n cycle: nonEmptyString(options, \"Futures cycle code to filter candidates by.\"),\n operation: z.literal(\"filter_candidates_by_cycle\"),\n })\n .strict(),\n z\n .object({\n contracts: z\n .array(stringPairSchema)\n .min(1)\n .max(options.maxFields)\n .describe(\"Contract pairs for validity filtering.\"),\n day,\n month,\n operation: z.literal(\"filter_valid_contracts\"),\n year,\n })\n .strict(),\n z.object({ operation: z.literal(\"get_futures_months\") }).strict(),\n ]);\n}\n\nexport function cdxSchema(options: NormalizedBloombergToolsOptions): ZodOutput<CdxInput> {\n const ticker = nonEmptyString(options, \"CDX ticker, generic or specific.\");\n const recoveryRate = z\n .number()\n .min(0)\n .max(1)\n .optional()\n .describe(\"Decimal recovery rate override, e.g. 0.4 for 40%; sent as the CDS_RR override.\");\n return z.discriminatedUnion(\"operation\", [\n z.object({ operation: z.literal(\"parse_cdx_ticker\"), ticker }).strict(),\n z.object({ operation: z.literal(\"previous_cdx_series\"), ticker }).strict(),\n z.object({ operation: z.literal(\"cdx_info\"), ticker }).strict(),\n z.object({ operation: z.literal(\"cdx_pricing\"), recoveryRate, ticker }).strict(),\n z.object({ operation: z.literal(\"cdx_risk\"), recoveryRate, ticker }).strict(),\n z\n .object({\n genTicker: nonEmptyString(\n options,\n \"Generic CDX ticker, for example CDX IG CDSI GEN 5Y Corp.\",\n ),\n operation: z.literal(\"cdx_gen_to_specific\"),\n series: z.number().int().positive().describe(\"Specific CDX series number.\"),\n })\n .strict(),\n ]);\n}\n\nexport function currencySchema(options: NormalizedBloombergToolsOptions): ZodOutput<CurrencyInput> {\n return z.discriminatedUnion(\"operation\", [\n z\n .object({\n fromCcy: nonEmptyString(options, \"Source ISO currency code.\"),\n operation: z.literal(\"build_fx_pair\"),\n toCcy: nonEmptyString(options, \"Destination ISO currency code.\"),\n })\n .strict(),\n z\n .object({\n ccy1: nonEmptyString(options, \"First ISO currency code.\"),\n ccy2: nonEmptyString(options, \"Second ISO currency code.\"),\n operation: z.literal(\"same_currency\"),\n })\n .strict(),\n z\n .object({\n currencies: stringArray(options, \"ISO currency codes to check.\"),\n operation: z.literal(\"currencies_needing_conversion\"),\n target: nonEmptyString(options, \"Target ISO currency code.\"),\n })\n .strict(),\n ]);\n}\n\nexport function bqlBuilderSchema(\n options: NormalizedBloombergToolsOptions,\n): ZodOutput<BqlBuilderInput> {\n const extraFields = stringArray(options, \"Extra BQL fields to include.\").optional();\n return z.discriminatedUnion(\"operation\", [\n z\n .object({\n equityTicker: nonEmptyString(options, \"Equity ticker for preferreds query.\"),\n extraFields,\n operation: z.literal(\"build_preferreds_query\"),\n })\n .strict(),\n z\n .object({\n activeOnly: z\n .boolean()\n .optional()\n .describe(\"Restrict corporate bond query to active bonds.\"),\n ccy: optionalString(options, \"Currency filter for corporate bond query.\"),\n extraFields,\n operation: z.literal(\"build_corporate_bonds_query\"),\n ticker: nonEmptyString(options, \"Ticker for corporate bond query.\"),\n })\n .strict(),\n z\n .object({\n etfTicker: nonEmptyString(options, \"ETF ticker for holdings query.\"),\n extraFields,\n operation: z.literal(\"build_etf_holdings_query\"),\n })\n .strict(),\n ]);\n}\n\nexport function marketSessionSchema(\n options: NormalizedBloombergToolsOptions,\n): ZodOutput<MarketSessionInput> {\n const mic = optionalString(options, \"Market Identifier Code, for example XNYS.\");\n const exchCode = optionalString(options, \"Bloomberg exchange code.\");\n return z.discriminatedUnion(\"operation\", [\n z\n .object({\n dayEnd: nonEmptyString(options, \"Exchange day end time, for example 16:00.\"),\n dayStart: nonEmptyString(options, \"Exchange day start time, for example 09:30.\"),\n exchCode,\n mic,\n operation: z.literal(\"derive_sessions\"),\n })\n .strict(),\n z.object({ exchCode, mic, operation: z.literal(\"get_market_rule\") }).strict(),\n z\n .object({\n countryIso: nonEmptyString(options, \"ISO country code for timezone inference.\"),\n operation: z.literal(\"infer_timezone\"),\n })\n .strict(),\n z\n .object({\n date: nonEmptyString(options, \"Date for UTC session conversion, YYYY-MM-DD or YYYYMMDD.\"),\n endTime: nonEmptyString(options, \"Session end time, for example 16:00.\"),\n exchangeTz: nonEmptyString(\n options,\n \"IANA exchange timezone, for example America/New_York.\",\n ),\n operation: z.literal(\"session_times_to_utc\"),\n startTime: nonEmptyString(options, \"Session start time, for example 09:30.\"),\n })\n .strict(),\n z\n .object({\n endDate: optionalString(options, \"Optional end date.\"),\n operation: z.literal(\"default_turnover_dates\"),\n startDate: optionalString(options, \"Optional start date.\"),\n })\n .strict(),\n z\n .object({\n endDatetime: optionalString(options, \"Optional end datetime.\"),\n operation: z.literal(\"default_bqr_datetimes\"),\n startDatetime: optionalString(options, \"Optional start datetime.\"),\n })\n .strict(),\n z\n .object({\n operation: z.literal(\"get_exchange_override\"),\n ticker: nonEmptyString(options, \"Ticker for exchange override lookup.\"),\n })\n .strict(),\n z.object({ operation: z.literal(\"list_exchange_overrides\") }).strict(),\n ]);\n}\n\nexport function yasOverridesSchema(\n options: NormalizedBloombergToolsOptions,\n): ZodOutput<YasOverridesInput> {\n return z\n .object({\n benchmark: optionalString(options, \"Optional YAS benchmark.\"),\n price: z.number().optional().describe(\"YAS price override.\"),\n settleDt: optionalString(options, \"YAS settlement date.\"),\n spread: z.number().optional().describe(\"YAS spread override.\"),\n yieldType: z.number().int().optional().describe(\"YAS yield type override.\"),\n yieldVal: z.number().optional().describe(\"YAS yield value override.\"),\n })\n .strict();\n}\n\nexport function constantsSchema(\n options: NormalizedBloombergToolsOptions,\n): ZodOutput<ConstantsInput> {\n return z.discriminatedUnion(\"operation\", [\n z\n .object({\n dateStr: nonEmptyString(options, \"Date string to parse.\"),\n operation: z.literal(\"parse_date\"),\n })\n .strict(),\n z\n .object({\n day: z.number().int().min(1).max(31).describe(\"Day number, 1-31.\"),\n fmt: optionalString(options, \"Date output format.\"),\n month: z.number().int().min(1).max(12).describe(\"Month number, 1-12.\"),\n operation: z.literal(\"fmt_date\"),\n year: z.number().int().min(1).describe(\"Year number.\"),\n })\n .strict(),\n z\n .object({\n monthName: nonEmptyString(options, \"Month name, for example March.\"),\n operation: z.literal(\"get_month_code\"),\n })\n .strict(),\n z\n .object({\n code: nonEmptyString(options, \"Month code, for example H.\"),\n operation: z.literal(\"get_month_name\"),\n })\n .strict(),\n z\n .object({\n dvdType: nonEmptyString(options, \"Dividend type code or label.\"),\n operation: z.literal(\"get_dvd_type\"),\n })\n .strict(),\n z.object({ operation: z.literal(\"get_futures_months\") }).strict(),\n z.object({ operation: z.literal(\"get_dvd_types\") }).strict(),\n z.object({ operation: z.literal(\"get_dvd_cols\") }).strict(),\n z.object({ operation: z.literal(\"get_etf_cols\") }).strict(),\n ]);\n}\n\nexport function columnsSchema(options: NormalizedBloombergToolsOptions): ZodOutput<ColumnsInput> {\n const columns = stringArray(options, \"Column names to rename.\");\n return z.discriminatedUnion(\"operation\", [\n z.object({ columns, operation: z.literal(\"rename_dividend_columns\") }).strict(),\n z.object({ columns, operation: z.literal(\"rename_etf_columns\") }).strict(),\n z\n .object({\n dataColumns: stringArray(options, \"Earnings data column names.\"),\n headerRow: z\n .array(stringPairSchema)\n .min(1)\n .max(options.maxFields)\n .describe(\"Earnings header row key/value pairs.\"),\n operation: z.literal(\"build_earning_header_rename\"),\n })\n .strict(),\n ]);\n}\n\nexport function calculateSchema(\n options: NormalizedBloombergToolsOptions,\n): ZodOutput<CalculateInput> {\n return z\n .object({\n levels: z\n .array(z.number().nullable())\n .min(1)\n .max(options.maxFields)\n .describe(\"Hierarchy level values; supported levels are 1, 2, or null.\"),\n operation: z\n .literal(\"calculate_level_percentages\")\n .describe(\"Numeric helper operation to run.\"),\n values: z\n .array(z.number().nullable())\n .min(1)\n .max(options.maxFields)\n .describe(\"Observed values.\"),\n })\n .strict()\n .superRefine((input, ctx) => {\n input.levels.forEach((level, index) => {\n if (level !== null && level !== 1 && level !== 2) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"levels must contain only 1, 2, or null\",\n path: [\"levels\", index],\n });\n }\n });\n if (input.values.length !== input.levels.length) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"values and levels must have the same length\",\n });\n }\n });\n}\n\nexport function chartSpecSchema(\n options: NormalizedBloombergToolsOptions,\n): ZodOutput<ChartSpecInput> {\n const chartScalar = z.union([\n z.string().trim().max(options.maxStringChars),\n z.number(),\n z.boolean(),\n z.null(),\n ]);\n const fieldName = nonEmptyString(options, \"Input row field name.\");\n return z\n .object({\n chart: z\n .enum([\"line\", \"area\", \"bar\", \"scatter\", \"candlestick\", \"depth\"])\n .optional()\n .describe(\"Chart shape to generate. Defaults from source.\"),\n closeField: fieldName.optional().describe(\"Candlestick close-value field.\"),\n highField: fieldName.optional().describe(\"Candlestick high-value field.\"),\n labelField: fieldName.optional().describe(\"Categorical label field for bar charts.\"),\n lowField: fieldName.optional().describe(\"Candlestick low-value field.\"),\n maxPoints: z\n .number()\n .int()\n .positive()\n .max(options.maxRows)\n .optional()\n .describe(\"Maximum rows to include in the frontend spec; defaults to all provided rows.\"),\n openField: fieldName.optional().describe(\"Candlestick open-value field.\"),\n priceField: fieldName.optional().describe(\"Market-depth price field.\"),\n renderer: z\n .literal(\"vega-lite\")\n .optional()\n .describe(\"Visualization spec renderer. Currently only vega-lite is generated.\"),\n rows: z\n .array(z.record(chartScalar))\n .min(1)\n .max(options.maxRows)\n .describe(\"Chart data rows copied from a bounded Bloomberg tool result.\"),\n seriesField: fieldName.optional().describe(\"Optional series/color field.\"),\n sideField: fieldName.optional().describe(\"Market-depth bid/ask side field.\"),\n sizeField: fieldName.optional().describe(\"Market-depth size field.\"),\n source: z\n .enum([\"bdh\", \"bdib\", \"holdings\", \"depth\", \"rows\"])\n .describe(\"Bloomberg result shape that produced rows.\"),\n title: nonEmptyString(options, \"Chart title.\").optional(),\n valueField: fieldName.optional().describe(\"Primary numeric value field.\"),\n xField: fieldName.optional().describe(\"X-axis field.\"),\n yFields: stringArray(options, \"Numeric value fields to plot.\").optional(),\n })\n .strict();\n}\n","import { createBloombergStructuredTool, type ToolInvocationConfig } from \"./langchain-tool\";\nimport { createChartSpec } from \"./chart-spec\";\n\nimport { CDX_INFO_FIELDS, CDX_PRICING_FIELDS, CDX_RISK_FIELDS } from \"./cdx-fields\";\nimport { createCoreResolver, type CoreResolver } from \"./core-loader\";\nimport {\n EXT_BQL_BUILDER_DESCRIPTION,\n EXT_CALCULATE_DESCRIPTION,\n EXT_CDX_DESCRIPTION,\n EXT_CHART_SPEC_DESCRIPTION,\n EXT_COLUMNS_DESCRIPTION,\n EXT_CONSTANTS_DESCRIPTION,\n EXT_CURRENCY_DESCRIPTION,\n EXT_FUTURES_DESCRIPTION,\n EXT_MARKET_SESSION_DESCRIPTION,\n EXT_TICKER_DESCRIPTION,\n EXT_YAS_OVERRIDES_DESCRIPTION,\n} from \"./descriptions\";\nimport type { BloombergToolName, BloombergToolsOptions } from \"./options\";\nimport { isToolDisabled } from \"./options\";\nimport type { BloombergTool } from \"./tools\";\nimport {\n createToolResult,\n throwWithToolContext,\n type ToolContentAndArtifact,\n} from \"./result-limits\";\nimport {\n bqlBuilderSchema,\n calculateSchema,\n cdxSchema,\n chartSpecSchema,\n columnsSchema,\n constantsSchema,\n currencySchema,\n futuresSchema,\n marketSessionSchema,\n tickerSchema,\n yasOverridesSchema,\n type BqlBuilderInput,\n type CalculateInput,\n type CdxInput,\n type ChartSpecInput,\n type ColumnsInput,\n type ConstantsInput,\n type CurrencyInput,\n type FuturesInput,\n type MarketSessionInput,\n type PrimitiveMap,\n type TickerInput,\n type YasOverridesInput,\n} from \"./ext-schemas\";\nfunction resultString(\n resolver: CoreResolver,\n name: BloombergToolName,\n value: unknown,\n): ToolContentAndArtifact {\n return createToolResult(name, value, resolver.options.maxRows, resolver.options.maxStringChars);\n}\n\nfunction recoveryOverrides(recoveryRate: number | undefined): PrimitiveMap | undefined {\n return recoveryRate === undefined ? undefined : { CDS_RR: recoveryRate };\n}\n\ninterface ExtToolDefinition {\n readonly create: (resolver: CoreResolver) => BloombergTool;\n readonly name: BloombergToolName;\n}\n\nconst EXT_TOOL_DEFINITIONS: readonly ExtToolDefinition[] = Object.freeze([\n { create: extTickerWithResolver, name: \"xbbg_ext_ticker\" },\n { create: extFuturesWithResolver, name: \"xbbg_ext_futures\" },\n { create: extCdxWithResolver, name: \"xbbg_ext_cdx\" },\n { create: extCurrencyWithResolver, name: \"xbbg_ext_currency\" },\n { create: extBqlBuilderWithResolver, name: \"xbbg_ext_bql_builder\" },\n { create: extChartSpecWithResolver, name: \"xbbg_ext_chart_spec\" },\n { create: extMarketSessionWithResolver, name: \"xbbg_ext_market_session\" },\n { create: extYasOverridesWithResolver, name: \"xbbg_ext_yas_overrides\" },\n { create: extConstantsWithResolver, name: \"xbbg_ext_constants\" },\n { create: extColumnsWithResolver, name: \"xbbg_ext_columns\" },\n { create: extCalculateWithResolver, name: \"xbbg_ext_calculate\" },\n]);\n\nexport const BLOOMBERG_EXT_TOOL_NAMES = Object.freeze(\n EXT_TOOL_DEFINITIONS.map((definition) => definition.name),\n);\n\nfunction extChartSpecWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_ext_chart_spec\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: ChartSpecInput): Promise<ToolContentAndArtifact> => {\n try {\n return await Promise.resolve(resultString(resolver, name, createChartSpec(input)));\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n responseFormat: \"content_and_artifact\",\n description: EXT_CHART_SPEC_DESCRIPTION,\n name,\n schema: chartSpecSchema(resolver.options),\n },\n );\n}\n\nfunction extTickerWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_ext_ticker\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: TickerInput): Promise<ToolContentAndArtifact> => {\n try {\n const core = await resolver.getCore();\n switch (input.operation) {\n case \"parse_ticker\":\n return resultString(resolver, name, core.ext.parseTicker(input.ticker));\n case \"normalize_tickers\":\n return resultString(resolver, name, core.ext.normalizeTickers(input.tickers));\n case \"filter_equity_tickers\":\n return resultString(resolver, name, core.ext.filterEquityTickers(input.tickers));\n case \"is_specific_contract\":\n return resultString(resolver, name, core.ext.isSpecificContract(input.ticker));\n case \"validate_generic_ticker\":\n core.ext.validateGenericTicker(input.ticker);\n return resultString(resolver, name, { ticker: input.ticker, valid: true });\n }\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n responseFormat: \"content_and_artifact\",\n description: EXT_TICKER_DESCRIPTION,\n name,\n schema: tickerSchema(resolver.options),\n },\n );\n}\n\nfunction extFuturesWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_ext_futures\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: FuturesInput): Promise<ToolContentAndArtifact> => {\n try {\n const core = await resolver.getCore();\n switch (input.operation) {\n case \"build_futures_ticker\":\n return resultString(\n resolver,\n name,\n core.ext.buildFuturesTicker(input.prefix, input.monthCode, input.year, input.asset),\n );\n case \"generate_candidates\":\n return resultString(\n resolver,\n name,\n core.ext.generateFuturesCandidates(\n input.genTicker,\n input.year,\n input.month,\n input.day,\n input.freq,\n input.count,\n ),\n );\n case \"contract_index\":\n return resultString(resolver, name, core.ext.contractIndex(input.genTicker));\n case \"filter_candidates_by_cycle\":\n return resultString(\n resolver,\n name,\n core.ext.filterCandidatesByCycle(input.candidates, input.cycle),\n );\n case \"filter_valid_contracts\":\n return resultString(\n resolver,\n name,\n core.ext.filterValidContracts(input.contracts, input.year, input.month, input.day),\n );\n case \"get_futures_months\":\n return resultString(resolver, name, core.ext.getFuturesMonths());\n }\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n responseFormat: \"content_and_artifact\",\n description: EXT_FUTURES_DESCRIPTION,\n name,\n schema: futuresSchema(resolver.options),\n },\n );\n}\n\nfunction extCdxWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_ext_cdx\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: CdxInput, config?: ToolInvocationConfig): Promise<ToolContentAndArtifact> => {\n try {\n config?.signal?.throwIfAborted();\n if (\n input.operation === \"cdx_info\" ||\n input.operation === \"cdx_pricing\" ||\n input.operation === \"cdx_risk\"\n ) {\n const engine = await resolver.getEngine();\n const fields =\n input.operation === \"cdx_info\"\n ? CDX_INFO_FIELDS\n : input.operation === \"cdx_pricing\"\n ? CDX_PRICING_FIELDS\n : CDX_RISK_FIELDS;\n const result = await engine.bdp([input.ticker], fields, {\n backend: \"json\",\n overrides: recoveryOverrides(\n input.operation === \"cdx_pricing\" || input.operation === \"cdx_risk\"\n ? input.recoveryRate\n : undefined,\n ),\n });\n return resultString(resolver, name, result);\n }\n const core = await resolver.getCore();\n switch (input.operation) {\n case \"parse_cdx_ticker\":\n return resultString(resolver, name, core.ext.parseCdxTicker(input.ticker));\n case \"previous_cdx_series\":\n return resultString(resolver, name, core.ext.previousCdxSeries(input.ticker));\n case \"cdx_gen_to_specific\":\n return resultString(\n resolver,\n name,\n core.ext.cdxGenToSpecific(input.genTicker, input.series),\n );\n }\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n responseFormat: \"content_and_artifact\",\n description: EXT_CDX_DESCRIPTION,\n name,\n schema: cdxSchema(resolver.options),\n },\n );\n}\n\nfunction extCurrencyWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_ext_currency\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: CurrencyInput): Promise<ToolContentAndArtifact> => {\n try {\n const core = await resolver.getCore();\n switch (input.operation) {\n case \"build_fx_pair\":\n return resultString(resolver, name, core.ext.buildFxPair(input.fromCcy, input.toCcy));\n case \"same_currency\":\n return resultString(resolver, name, core.ext.sameCurrency(input.ccy1, input.ccy2));\n case \"currencies_needing_conversion\":\n return resultString(\n resolver,\n name,\n core.ext.currenciesNeedingConversion(input.currencies, input.target),\n );\n }\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n responseFormat: \"content_and_artifact\",\n description: EXT_CURRENCY_DESCRIPTION,\n name,\n schema: currencySchema(resolver.options),\n },\n );\n}\n\nfunction extBqlBuilderWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_ext_bql_builder\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: BqlBuilderInput): Promise<ToolContentAndArtifact> => {\n try {\n const core = await resolver.getCore();\n switch (input.operation) {\n case \"build_preferreds_query\":\n return resultString(\n resolver,\n name,\n core.ext.buildPreferredsQuery(input.equityTicker, input.extraFields),\n );\n case \"build_corporate_bonds_query\":\n return resultString(\n resolver,\n name,\n core.ext.buildCorporateBondsQuery(\n input.ticker,\n input.ccy,\n input.extraFields,\n input.activeOnly,\n ),\n );\n case \"build_etf_holdings_query\":\n return resultString(\n resolver,\n name,\n core.ext.buildEtfHoldingsQuery(input.etfTicker, input.extraFields),\n );\n }\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n responseFormat: \"content_and_artifact\",\n description: EXT_BQL_BUILDER_DESCRIPTION,\n name,\n schema: bqlBuilderSchema(resolver.options),\n },\n );\n}\n\nfunction extMarketSessionWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_ext_market_session\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: MarketSessionInput): Promise<ToolContentAndArtifact> => {\n try {\n const core = await resolver.getCore();\n switch (input.operation) {\n case \"derive_sessions\":\n return resultString(\n resolver,\n name,\n core.ext.deriveSessions(input.dayStart, input.dayEnd, input.mic, input.exchCode),\n );\n case \"get_market_rule\":\n return resultString(resolver, name, core.ext.getMarketRule(input.mic, input.exchCode));\n case \"infer_timezone\":\n return resultString(resolver, name, core.ext.inferTimezone(input.countryIso));\n case \"session_times_to_utc\":\n return resultString(\n resolver,\n name,\n core.ext.sessionTimesToUtc(\n input.startTime,\n input.endTime,\n input.exchangeTz,\n input.date,\n ),\n );\n case \"default_turnover_dates\":\n return resultString(\n resolver,\n name,\n core.ext.defaultTurnoverDates(input.startDate, input.endDate),\n );\n case \"default_bqr_datetimes\":\n return resultString(\n resolver,\n name,\n core.ext.defaultBqrDatetimes(input.startDatetime, input.endDatetime),\n );\n case \"get_exchange_override\":\n return resultString(resolver, name, core.ext.getExchangeOverride(input.ticker));\n case \"list_exchange_overrides\":\n return resultString(resolver, name, core.ext.listExchangeOverrides());\n }\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n responseFormat: \"content_and_artifact\",\n description: EXT_MARKET_SESSION_DESCRIPTION,\n name,\n schema: marketSessionSchema(resolver.options),\n },\n );\n}\n\nfunction extYasOverridesWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_ext_yas_overrides\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: YasOverridesInput): Promise<ToolContentAndArtifact> => {\n try {\n const core = await resolver.getCore();\n return resultString(\n resolver,\n name,\n core.ext.buildYasOverrides(\n input.settleDt,\n input.yieldType,\n input.spread,\n input.yieldVal,\n input.price,\n input.benchmark,\n ),\n );\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n responseFormat: \"content_and_artifact\",\n description: EXT_YAS_OVERRIDES_DESCRIPTION,\n name,\n schema: yasOverridesSchema(resolver.options),\n },\n );\n}\n\nfunction extConstantsWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_ext_constants\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: ConstantsInput): Promise<ToolContentAndArtifact> => {\n try {\n const core = await resolver.getCore();\n switch (input.operation) {\n case \"parse_date\":\n return resultString(resolver, name, core.ext.parseDate(input.dateStr));\n case \"fmt_date\":\n return resultString(\n resolver,\n name,\n core.ext.fmtDate(input.year, input.month, input.day, input.fmt),\n );\n case \"get_month_code\":\n return resultString(resolver, name, core.ext.getMonthCode(input.monthName));\n case \"get_month_name\":\n return resultString(resolver, name, core.ext.getMonthName(input.code));\n case \"get_futures_months\":\n return resultString(resolver, name, core.ext.getFuturesMonths());\n case \"get_dvd_type\":\n return resultString(resolver, name, core.ext.getDvdType(input.dvdType));\n case \"get_dvd_types\":\n return resultString(resolver, name, core.ext.getDvdTypes());\n case \"get_dvd_cols\":\n return resultString(resolver, name, core.ext.getDvdCols());\n case \"get_etf_cols\":\n return resultString(resolver, name, core.ext.getEtfCols());\n }\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n responseFormat: \"content_and_artifact\",\n description: EXT_CONSTANTS_DESCRIPTION,\n name,\n schema: constantsSchema(resolver.options),\n },\n );\n}\n\nfunction extColumnsWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_ext_columns\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: ColumnsInput): Promise<ToolContentAndArtifact> => {\n try {\n const core = await resolver.getCore();\n switch (input.operation) {\n case \"rename_dividend_columns\":\n return resultString(resolver, name, core.ext.renameDividendColumns(input.columns));\n case \"rename_etf_columns\":\n return resultString(resolver, name, core.ext.renameEtfColumns(input.columns));\n case \"build_earning_header_rename\":\n return resultString(\n resolver,\n name,\n core.ext.buildEarningHeaderRename(input.headerRow, input.dataColumns),\n );\n }\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n responseFormat: \"content_and_artifact\",\n description: EXT_COLUMNS_DESCRIPTION,\n name,\n schema: columnsSchema(resolver.options),\n },\n );\n}\n\nfunction extCalculateWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_ext_calculate\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: CalculateInput): Promise<ToolContentAndArtifact> => {\n try {\n const core = await resolver.getCore();\n return resultString(\n resolver,\n name,\n core.ext.calculateLevelPercentages(input.values, input.levels),\n );\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n responseFormat: \"content_and_artifact\",\n description: EXT_CALCULATE_DESCRIPTION,\n name,\n schema: calculateSchema(resolver.options),\n },\n );\n}\n\nexport function createExtTickerTool(options: BloombergToolsOptions = {}): BloombergTool {\n return extTickerWithResolver(createCoreResolver(options));\n}\n\nexport function createExtFuturesTool(options: BloombergToolsOptions = {}): BloombergTool {\n return extFuturesWithResolver(createCoreResolver(options));\n}\n\nexport function createExtCdxTool(options: BloombergToolsOptions = {}): BloombergTool {\n return extCdxWithResolver(createCoreResolver(options));\n}\n\nexport function createExtCurrencyTool(options: BloombergToolsOptions = {}): BloombergTool {\n return extCurrencyWithResolver(createCoreResolver(options));\n}\n\nexport function createExtBqlBuilderTool(options: BloombergToolsOptions = {}): BloombergTool {\n return extBqlBuilderWithResolver(createCoreResolver(options));\n}\n\nexport function createExtMarketSessionTool(options: BloombergToolsOptions = {}): BloombergTool {\n return extMarketSessionWithResolver(createCoreResolver(options));\n}\n\nexport function createExtYasOverridesTool(options: BloombergToolsOptions = {}): BloombergTool {\n return extYasOverridesWithResolver(createCoreResolver(options));\n}\n\nexport function createExtConstantsTool(options: BloombergToolsOptions = {}): BloombergTool {\n return extConstantsWithResolver(createCoreResolver(options));\n}\n\nexport function createExtColumnsTool(options: BloombergToolsOptions = {}): BloombergTool {\n return extColumnsWithResolver(createCoreResolver(options));\n}\n\nexport function createExtCalculateTool(options: BloombergToolsOptions = {}): BloombergTool {\n return extCalculateWithResolver(createCoreResolver(options));\n}\n\nexport function createExtChartSpecTool(options: BloombergToolsOptions = {}): BloombergTool {\n return extChartSpecWithResolver(createCoreResolver(options));\n}\n\nexport function createBloombergExtToolsForResolver(resolver: CoreResolver): BloombergTool[] {\n return EXT_TOOL_DEFINITIONS.filter(\n (definition) => !isToolDisabled(resolver.options, definition.name),\n ).map((definition) => definition.create(resolver));\n}\n\nexport function createBloombergExtTools(options: BloombergToolsOptions = {}): BloombergTool[] {\n return createBloombergExtToolsForResolver(createCoreResolver(options));\n}\n","// @generated by defs/codegen/generate.py from defs/bloomberg.toml - DO NOT EDIT\n\n/** Output format for reference and historical data. */\nexport const FORMATS = [\"long\", \"long_typed\", \"long_metadata\", \"semi_long\"] as const;\n\n/** Output format for reference and historical data. */\nexport type FormatKind = (typeof FORMATS)[number];\n\n/** Extra spellings the engine also accepts, kept for compatibility. */\nexport const FORMAT_ALIASES = [\"typed\", \"metadata\", \"with_metadata\", \"wide\"] as const;\n\n/** Value used when the caller omits it. */\nexport const FORMAT_DEFAULT: FormatKind = \"long\";\n\n/** Canonical values as a list, for error text and tool descriptions. */\nexport const FORMAT_VALUES = \"long, long_typed, long_metadata, semi_long\";\n\n/** Per-value documentation, keyed by canonical spelling. */\nexport const FORMAT_DOCS: Readonly<Record<FormatKind, string>> = {\n long: \"Long format with all values as strings (default, backwards-compatible).\",\n long_typed: \"Long format with typed value columns.\",\n long_metadata: \"Long format with string values and dtype metadata column.\",\n semi_long: \"Semi-long format with one row per ticker/timestamp and fields as columns.\",\n};\n\n/** Canonical values keyed by their defs name. */\nexport const FORMAT_BY_NAME = {\n LONG: \"long\",\n LONG_TYPED: \"long_typed\",\n LONG_WITH_METADATA: \"long_metadata\",\n SEMI_LONG: \"semi_long\",\n} as const;\n\n/** Subscription behaviour when a consumer cannot keep up with Bloomberg. */\nexport const OVERFLOW_POLICIES = [\"block\", \"drop_newest\"] as const;\n\n/** Subscription behaviour when a consumer cannot keep up with Bloomberg. */\nexport type OverflowPolicy = (typeof OVERFLOW_POLICIES)[number];\n\n/** Extra spellings the engine also accepts, kept for compatibility. */\nexport const OVERFLOW_POLICY_ALIASES = [\"dropnewest\"] as const;\n\n/** Value used when the caller omits it. */\nexport const OVERFLOW_POLICY_DEFAULT: OverflowPolicy = \"drop_newest\";\n\n/** Canonical values as a list, for error text and tool descriptions. */\nexport const OVERFLOW_POLICY_VALUES = \"block, drop_newest\";\n\n/** Per-value documentation, keyed by canonical spelling. */\nexport const OVERFLOW_POLICY_DOCS: Readonly<Record<OverflowPolicy, string>> = {\n block:\n \"Retry within a short bounded window on Bloomberg's callback thread, then flag a slow consumer and drop the update.\",\n drop_newest:\n \"Drop the newest update as soon as the buffer is full; never stalls Bloomberg's callback thread.\",\n};\n\n/** Canonical values keyed by their defs name. */\nexport const OVERFLOW_POLICY_BY_NAME = {\n BLOCK: \"block\",\n DROP_NEWEST: \"drop_newest\",\n} as const;\n\n/** Field validation applied before a request is sent. */\nexport const VALIDATION_MODES = [\"disabled\", \"lenient\", \"strict\"] as const;\n\n/** Field validation applied before a request is sent. */\nexport type ValidationMode = (typeof VALIDATION_MODES)[number];\n\n/** Extra spellings the engine also accepts, kept for compatibility. */\nexport const VALIDATION_MODE_ALIASES = [\"off\", \"none\"] as const;\n\n/** Value used when the caller omits it. */\nexport const VALIDATION_MODE_DEFAULT: ValidationMode = \"disabled\";\n\n/** Canonical values as a list, for error text and tool descriptions. */\nexport const VALIDATION_MODE_VALUES = \"disabled, lenient, strict\";\n\n/** Per-value documentation, keyed by canonical spelling. */\nexport const VALIDATION_MODE_DOCS: Readonly<Record<ValidationMode, string>> = {\n disabled: \"No field validation (default).\",\n lenient: \"Drop unknown fields and send the remaining ones.\",\n strict: \"Reject the request when any field is unknown.\",\n};\n\n/** Canonical values keyed by their defs name. */\nexport const VALIDATION_MODE_BY_NAME = {\n DISABLED: \"disabled\",\n LENIENT: \"lenient\",\n STRICT: \"strict\",\n} as const;\n\n/** Verbosity of the Bloomberg C SDK's own logging. */\nexport const SDK_LOG_LEVELS = [\"debug\", \"error\", \"fatal\", \"info\", \"off\", \"trace\", \"warn\"] as const;\n\n/** Verbosity of the Bloomberg C SDK's own logging. */\nexport type SdkLogLevel = (typeof SDK_LOG_LEVELS)[number];\n\n/** Extra spellings the engine also accepts, kept for compatibility. */\nexport const SDK_LOG_LEVEL_ALIASES = [\"warning\"] as const;\n\n/** Value used when the caller omits it. */\nexport const SDK_LOG_LEVEL_DEFAULT: SdkLogLevel = \"off\";\n\n/** Canonical values as a list, for error text and tool descriptions. */\nexport const SDK_LOG_LEVEL_VALUES = \"debug, error, fatal, info, off, trace, warn\";\n\n/** Per-value documentation, keyed by canonical spelling. */\nexport const SDK_LOG_LEVEL_DOCS: Readonly<Record<SdkLogLevel, string>> = {\n debug: \"Debug messages and above.\",\n error: \"Errors and above.\",\n fatal: \"Fatal errors only.\",\n info: \"Informational messages and above.\",\n off: \"Disable SDK logging (default).\",\n trace: \"Most verbose SDK logging.\",\n warn: \"Warnings and above.\",\n};\n\n/** Canonical values keyed by their defs name. */\nexport const SDK_LOG_LEVEL_BY_NAME = {\n DEBUG: \"debug\",\n ERROR: \"error\",\n FATAL: \"fatal\",\n INFO: \"info\",\n OFF: \"off\",\n TRACE: \"trace\",\n WARN: \"warn\",\n} as const;\n","import * as z from \"zod/v3\";\n\nimport type { OverflowPolicy } from \"./_defs_gen\";\nimport {\n FORMAT_BY_NAME,\n FORMATS,\n OVERFLOW_POLICIES,\n OVERFLOW_POLICY_DEFAULT,\n OVERFLOW_POLICY_DOCS,\n OVERFLOW_POLICY_VALUES,\n} from \"./_defs_gen\";\n\nimport type { NormalizedBloombergToolsOptions } from \"./options\";\nimport { MAX_BLOOMBERG_EID, MAX_ENTITLEMENT_EIDS } from \"./result-limits\";\ntype ZodOutput<T> = z.ZodType<T, z.ZodTypeDef, unknown>;\n\nexport type PrimitiveValue = string | number | boolean;\nexport type PrimitiveMap = Record<string, PrimitiveValue>;\nexport type OverrideMap = Record<string, PrimitiveValue | PrimitiveMap>;\n\n// Reference data has no date axis, so the semi-long shape is meaningless there;\n// this is a deliberate narrowing of the generated set, not a separate vocabulary.\nexport const REFERENCE_FORMATS = [\n FORMAT_BY_NAME.LONG,\n FORMAT_BY_NAME.LONG_TYPED,\n FORMAT_BY_NAME.LONG_WITH_METADATA,\n] as const;\n\nexport const HISTORICAL_FORMATS = FORMATS;\n\nexport type ReferenceFormat = (typeof REFERENCE_FORMATS)[number];\nexport type HistoricalFormat = (typeof HISTORICAL_FORMATS)[number];\nexport interface ReferenceCallOptions {\n readonly overrides?: OverrideMap;\n readonly kwargs?: PrimitiveMap;\n readonly returnEids?: boolean;\n readonly validateFields?: boolean;\n}\n\nexport interface BdpInput extends ReferenceCallOptions {\n readonly securities: readonly string[];\n readonly fields: readonly string[];\n readonly format?: ReferenceFormat;\n readonly includeSecurityErrors?: boolean;\n}\n\nexport interface BdsInput extends ReferenceCallOptions {\n readonly securities: readonly string[];\n readonly field: string;\n}\n\nexport interface BdhInput {\n readonly securities: readonly string[];\n readonly fields: readonly string[];\n readonly start: string;\n readonly end: string;\n readonly overrides?: OverrideMap;\n readonly kwargs?: PrimitiveMap;\n readonly format?: HistoricalFormat;\n readonly validateFields?: boolean;\n readonly returnEids?: boolean;\n}\n\nexport interface BdibInput {\n readonly ticker: string;\n readonly start: string;\n readonly end: string;\n readonly interval: number;\n readonly eventType?: string;\n readonly requestTz?: string;\n readonly outputTz?: string;\n readonly kwargs?: PrimitiveMap;\n readonly returnEids?: boolean;\n}\n\nexport interface BdtickInput {\n readonly ticker: string;\n readonly start: string;\n readonly end: string;\n readonly eventTypes?: readonly string[];\n readonly includeConditionCodes?: boolean;\n readonly includeExchangeCodes?: boolean;\n readonly includeBrokerCodes?: boolean;\n readonly includeRpsCodes?: boolean;\n readonly includeBicMicCodes?: boolean;\n readonly includeNonPlottableEvents?: boolean;\n readonly includeBloombergStandardConditionCodes?: boolean;\n readonly requestTz?: string;\n readonly outputTz?: string;\n readonly kwargs?: PrimitiveMap;\n readonly returnEids?: boolean;\n}\n\nexport interface CheckEntitlementsInput {\n readonly eids: readonly number[];\n readonly service?: string;\n}\n\nexport interface BqlInput {\n readonly query: string;\n readonly kwargs?: PrimitiveMap;\n}\n\nexport interface BsrchInput {\n readonly searchSpec: string;\n readonly overrides?: PrimitiveMap;\n readonly kwargs?: PrimitiveMap;\n}\n\nexport interface BqrInput {\n readonly ticker: string;\n readonly start: string;\n readonly end: string;\n readonly eventTypes?: readonly string[];\n readonly includeBrokerCodes?: boolean;\n}\n\nexport interface BfldsInput {\n readonly fields?: readonly string[];\n readonly searchSpec?: string;\n readonly kwargs?: PrimitiveMap;\n}\n\nexport interface BeqsInput {\n readonly screen: string;\n readonly asof?: string;\n readonly screenType?: string;\n readonly group?: string;\n readonly overrides?: PrimitiveMap;\n readonly kwargs?: PrimitiveMap;\n}\n\nexport interface YasInput {\n readonly tickers: readonly string[];\n readonly fields: readonly string[];\n readonly settleDt?: string;\n readonly yieldType?: number;\n readonly spread?: number;\n readonly yieldVal?: number;\n readonly price?: number;\n readonly benchmark?: string;\n}\n\nexport interface PreferredsInput {\n readonly equityTicker: string;\n readonly fields?: readonly string[];\n}\n\nexport interface CorporateBondsInput {\n readonly ticker: string;\n readonly ccy?: string;\n readonly fields?: readonly string[];\n readonly activeOnly?: boolean;\n}\n\nexport interface IndexMembersInput {\n readonly index: string;\n readonly field?: \"INDX_MWEIGHT\" | \"INDX_MEMBERS\" | \"INDX_MEMBERS3\";\n readonly asof?: string;\n}\n\nexport interface ResolveIsinsInput {\n readonly isins: readonly string[];\n}\n\nexport interface IssuerIsinsInput {\n readonly bondIsins: readonly string[];\n}\n\nexport interface EtfHoldingsInput {\n readonly etfTicker: string;\n readonly fields?: readonly string[];\n}\n\nexport interface StreamSnapshotInput {\n readonly tickers: readonly string[];\n readonly fields: readonly string[];\n readonly maxUpdates: number;\n readonly timeoutMs: number;\n readonly drain?: boolean;\n readonly options?: readonly string[];\n readonly conflate?: boolean;\n readonly flushThreshold?: number;\n readonly overflowPolicy?: OverflowPolicy;\n readonly streamCapacity?: number;\n readonly allFields?: boolean;\n}\n\nexport interface MktbarSnapshotInput {\n readonly ticker: string;\n readonly fields?: readonly string[];\n readonly maxUpdates: number;\n readonly timeoutMs: number;\n readonly drain?: boolean;\n readonly options?: readonly string[];\n readonly conflate?: boolean;\n readonly flushThreshold?: number;\n readonly overflowPolicy?: OverflowPolicy;\n readonly streamCapacity?: number;\n readonly allFields?: boolean;\n}\n\nexport interface DepthSnapshotInput {\n readonly ticker: string;\n readonly fields?: readonly string[];\n readonly maxUpdates: number;\n readonly timeoutMs: number;\n readonly drain?: boolean;\n readonly options?: readonly string[];\n readonly conflate?: boolean;\n readonly flushThreshold?: number;\n readonly overflowPolicy?: OverflowPolicy;\n readonly streamCapacity?: number;\n readonly allFields?: boolean;\n}\n\nconst ISO_DATE_RE = /^\\d{4}-\\d{2}-\\d{2}$/u;\nconst BBG_DATE_RE = /^\\d{8}$/u;\nconst AMBIGUOUS_DATE_RE = /^\\d{1,2}[-/]\\d{1,2}[-/]\\d{2,4}([T \\D]|$)/u;\nconst ISO_DATE_TIME_RE =\n /^\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d+)?)?(?:Z|[+-]\\d{2}:?\\d{2})?$/u;\n\n/** Integers in this range are YYYYMMDD calendar dates, never epoch milliseconds. */\nconst MIN_NUMERIC_BBG_DATE = 19_000_101;\nconst MAX_NUMERIC_BBG_DATE = 29_991_231;\n/** Smallest numeric value interpreted as epoch milliseconds (~1973-03-03). */\nconst MIN_EPOCH_MS = 100_000_000_000;\n\nconst primitiveSchema = z.union([\n z.string().transform((value) => value.trim()),\n z.number(),\n z.boolean(),\n]);\n\nfunction dateFromParts(year: string, month: string, day: string): string {\n const formatted = `${year}${month}${day}`;\n const parsed = new Date(Date.UTC(Number(year), Number(month) - 1, Number(day)));\n if (\n Number.isNaN(parsed.getTime()) ||\n parsed.getUTCFullYear() !== Number(year) ||\n parsed.getUTCMonth() + 1 !== Number(month) ||\n parsed.getUTCDate() !== Number(day)\n ) {\n throw new TypeError(`Invalid date ${formatted}; expected a real calendar date like 2024-01-31`);\n }\n return formatted;\n}\n\nfunction dateToBbg(value: Date | number): string {\n const date = value instanceof Date ? value : new Date(value);\n if (Number.isNaN(date.getTime())) {\n throw new TypeError(\"Invalid date value; expected YYYY-MM-DD, YYYYMMDD, Date, or epoch ms\");\n }\n const year = String(date.getUTCFullYear()).padStart(4, \"0\");\n const month = String(date.getUTCMonth() + 1).padStart(2, \"0\");\n const day = String(date.getUTCDate()).padStart(2, \"0\");\n return `${year}${month}${day}`;\n}\n\n/**\n * Disambiguates numeric date inputs: models routinely send YYYYMMDD as an\n * integer, which `new Date(number)` would silently read as epoch milliseconds\n * near 1970-01-01. Integers in the YYYYMMDD range parse as calendar dates;\n * large values parse as epoch milliseconds; everything between is rejected.\n */\nfunction numericDateToBbg(value: number, unit: \"date\" | \"datetime\"): Date {\n if (Number.isFinite(value) && value >= MIN_EPOCH_MS) {\n return new Date(value);\n }\n throw new TypeError(\n `Ambiguous numeric ${unit} ${String(value)}; use \"YYYY-MM-DD\" text or epoch milliseconds`,\n );\n}\n\n/**\n * JSON tool calls can only carry strings and numbers, and `z.date()` is\n * unrepresentable in JSON Schema (zod v4's toJSONSchema throws on it), so the\n * wire contract is string | number only.\n */\nfunction normalizeDate(value: string | number): string {\n if (typeof value === \"number\") {\n if (Number.isInteger(value) && value >= MIN_NUMERIC_BBG_DATE && value <= MAX_NUMERIC_BBG_DATE) {\n const text = String(value);\n return dateFromParts(text.slice(0, 4), text.slice(4, 6), text.slice(6, 8));\n }\n return dateToBbg(numericDateToBbg(value, \"date\"));\n }\n const text = value.trim();\n if (text.length === 0) {\n throw new TypeError(\"Date must be non-empty; use YYYY-MM-DD or YYYYMMDD\");\n }\n if (AMBIGUOUS_DATE_RE.test(text)) {\n throw new TypeError(`Ambiguous date ${JSON.stringify(text)}; use YYYY-MM-DD or YYYYMMDD`);\n }\n if (BBG_DATE_RE.test(text)) {\n return dateFromParts(text.slice(0, 4), text.slice(4, 6), text.slice(6, 8));\n }\n if (ISO_DATE_RE.test(text)) {\n return dateFromParts(text.slice(0, 4), text.slice(5, 7), text.slice(8, 10));\n }\n throw new TypeError(`Invalid date ${JSON.stringify(text)}; use YYYY-MM-DD or YYYYMMDD`);\n}\n\nfunction normalizeDateTime(value: string | number): string {\n if (typeof value === \"number\") {\n if (Number.isInteger(value) && value >= MIN_NUMERIC_BBG_DATE && value <= MAX_NUMERIC_BBG_DATE) {\n throw new TypeError(\n `Invalid numeric datetime ${String(value)}; include an explicit time component such as \"2024-01-02T09:30:00\"`,\n );\n }\n return numericDateToBbg(value, \"datetime\").toISOString();\n }\n const text = value.trim();\n if (text.length === 0) {\n throw new TypeError(\"Datetime must be non-empty; use an ISO 8601 datetime\");\n }\n if (AMBIGUOUS_DATE_RE.test(text)) {\n throw new TypeError(`Ambiguous datetime ${JSON.stringify(text)}; use ISO 8601`);\n }\n if (BBG_DATE_RE.test(text) || ISO_DATE_RE.test(text)) {\n throw new TypeError(\n `Invalid datetime ${JSON.stringify(text)}; include an explicit time component such as YYYY-MM-DDT09:30:00`,\n );\n }\n if (!ISO_DATE_TIME_RE.test(text)) {\n throw new TypeError(`Invalid datetime ${JSON.stringify(text)}; use ISO 8601`);\n }\n return text.replace(\" \", \"T\");\n}\n\nfunction nonEmptyString(\n tool: string,\n field: string,\n maxChars: number,\n example: string,\n): ZodOutput<string> {\n return z\n .string()\n .transform((value) => value.trim())\n .pipe(\n z\n .string()\n .min(1, `${tool}: ${field} must be a non-empty string. Example: ${example}`)\n .max(\n maxChars,\n `${tool}: ${field} is too long; expected at most ${maxChars} characters. Example: ${example}`,\n ),\n );\n}\n\nfunction stringArray(\n tool: string,\n field: string,\n maxItems: number,\n maxChars: number,\n example: string,\n): ZodOutput<string[]> {\n return z\n .array(nonEmptyString(tool, field, maxChars, example))\n .min(1, `${tool}: ${field} must contain at least one non-empty string. Example: ${example}`)\n .max(maxItems, `${tool}: ${field} can contain at most ${maxItems} values`);\n}\n\n/**\n * Reports a normalization failure as a zod issue. Errors *thrown* from\n * transforms reach LangChain as bare exceptions, which it masks with a\n * generic \"did not match expected schema\" message; zod issues keep the\n * actionable text visible to the model.\n */\nfunction normalizationIssue(\n context: z.RefinementCtx,\n tool: string,\n field: string,\n error: unknown,\n): typeof z.NEVER {\n context.addIssue({\n code: \"custom\",\n message: `${tool}: ${field}: ${error instanceof Error ? error.message : String(error)}`,\n });\n return z.NEVER;\n}\n\nfunction primitiveMap(tool: string, field: string): ZodOutput<PrimitiveMap | undefined> {\n return z\n .record(z.string().min(1), primitiveSchema)\n .optional()\n .transform((value, context) => {\n if (value === undefined) {\n return undefined;\n }\n const normalized: PrimitiveMap = {};\n for (const [key, entry] of Object.entries(value)) {\n const normalizedKey = key.trim();\n if (normalizedKey.length === 0) {\n return normalizationIssue(context, tool, field, new TypeError(\"contains an empty key\"));\n }\n if (typeof entry === \"string\" && entry.length === 0) {\n return normalizationIssue(\n context,\n tool,\n field,\n new TypeError(`${normalizedKey} must not be an empty string`),\n );\n }\n normalized[normalizedKey] = entry;\n }\n return normalized;\n });\n}\n\nfunction overridesMap(tool: string, field: string): ZodOutput<OverrideMap | undefined> {\n return z\n .record(\n z.string().min(1),\n z.union([primitiveSchema, z.record(z.string().min(1), primitiveSchema)]),\n )\n .optional()\n .transform((value, context) => {\n if (value === undefined) {\n return undefined;\n }\n const normalized: OverrideMap = {};\n for (const [key, entry] of Object.entries(value)) {\n const normalizedKey = key.trim();\n if (normalizedKey.length === 0) {\n return normalizationIssue(context, tool, field, new TypeError(\"contains an empty key\"));\n }\n if (typeof entry !== \"object\") {\n if (typeof entry === \"string\" && entry.length === 0) {\n return normalizationIssue(\n context,\n tool,\n field,\n new TypeError(`${normalizedKey} must not be an empty string`),\n );\n }\n normalized[normalizedKey] = entry;\n continue;\n }\n\n const normalizedOverrides: PrimitiveMap = {};\n for (const [overrideKey, overrideValue] of Object.entries(entry)) {\n const normalizedOverrideKey = overrideKey.trim();\n if (normalizedOverrideKey.length === 0) {\n return normalizationIssue(\n context,\n tool,\n field,\n new TypeError(`${normalizedKey} contains an empty override key`),\n );\n }\n if (typeof overrideValue === \"string\" && overrideValue.length === 0) {\n return normalizationIssue(\n context,\n tool,\n field,\n new TypeError(\n `${normalizedKey}.${normalizedOverrideKey} must not be an empty string`,\n ),\n );\n }\n normalizedOverrides[normalizedOverrideKey] = overrideValue;\n }\n normalized[normalizedKey] = normalizedOverrides;\n }\n return normalized;\n });\n}\n\nfunction dateField(tool: string, field: string): ZodOutput<string> {\n return z\n .union([z.string(), z.number()])\n .transform((value, context) => {\n try {\n return normalizeDate(value);\n } catch (error) {\n return normalizationIssue(context, tool, field, error);\n }\n })\n .describe(\n `${field} date. Use YYYY-MM-DD or Bloomberg-native YYYYMMDD, never ambiguous MM/DD/YYYY.`,\n );\n}\n\nfunction dateTimeField(tool: string, field: string): ZodOutput<string> {\n return z\n .union([z.string(), z.number()])\n .superRefine((value, context) => {\n if (typeof value !== \"string\") {\n return;\n }\n const text = value.trim();\n if (BBG_DATE_RE.test(text) || ISO_DATE_RE.test(text)) {\n context.addIssue({\n code: \"custom\",\n message: `${tool}: ${field} datetime requires an explicit time component; use ISO 8601 such as YYYY-MM-DDT09:30:00`,\n });\n }\n })\n .transform((value, context) => {\n try {\n return normalizeDateTime(value);\n } catch (error) {\n return normalizationIssue(context, tool, field, error);\n }\n })\n .describe(`${field} datetime. Use ISO 8601 with an explicit time component.`);\n}\n\nfunction referenceFormat(tool: string): ZodOutput<ReferenceFormat | undefined> {\n return z\n .enum(REFERENCE_FORMATS, {\n errorMap: () => ({\n message: `${tool}: format must be one of ${REFERENCE_FORMATS.join(\", \")}`,\n }),\n })\n .optional();\n}\n\nfunction historicalFormat(tool: string): ZodOutput<HistoricalFormat | undefined> {\n return z\n .enum(HISTORICAL_FORMATS, {\n errorMap: () => ({\n message: `${tool}: format must be one of ${HISTORICAL_FORMATS.join(\", \")}`,\n }),\n })\n .optional();\n}\n\n/**\n * Closed enum for the subscription overflow policy.\n *\n * The value set, the default and the per-value semantics all come from the\n * generated vocabulary. This field previously accepted a free-form string and\n * documented no values at all, so models guessed `drop_oldest` — a policy that\n * was removed in 1.2.0 and that the engine rejects outright.\n */\nfunction overflowPolicy(tool: string): ZodOutput<OverflowPolicy | undefined> {\n const semantics = OVERFLOW_POLICIES.map(\n (policy) => `${policy} - ${OVERFLOW_POLICY_DOCS[policy]}`,\n ).join(\" \");\n return z\n .enum(OVERFLOW_POLICIES, {\n errorMap: () => ({\n message: `${tool}: overflowPolicy must be one of ${OVERFLOW_POLICY_VALUES}`,\n }),\n })\n .optional()\n .describe(\n `What the stream does when updates arrive faster than they are collected. ${semantics} Omit to use ${OVERFLOW_POLICY_DEFAULT}.`,\n );\n}\n\nexport function createBdpSchema(options: NormalizedBloombergToolsOptions): ZodOutput<BdpInput> {\n const tool = \"xbbg_bdp\";\n return z.object({\n fields: stringArray(\n tool,\n \"fields\",\n options.maxFields,\n options.maxStringChars,\n '[\"<FIELD>\"]',\n ).describe(\"Bloomberg field mnemonics to retrieve. Use xbbg_bflds first if uncertain.\"),\n format: referenceFormat(tool).describe(\n \"JSON output shape. Usually omit; use long_typed if downstream needs Bloomberg value types.\",\n ),\n includeSecurityErrors: z\n .boolean()\n .optional()\n .describe(\"Include Bloomberg security errors in the response when supported.\"),\n kwargs: primitiveMap(tool, \"kwargs\").describe(\n \"Advanced Bloomberg request kwargs as flat string/number/boolean values only.\",\n ),\n overrides: overridesMap(tool, \"overrides\").describe(\n \"Bloomberg field overrides. Use primitive values for global overrides and nested primitive maps keyed by exact security for per-security overrides.\",\n ),\n returnEids: z\n .boolean()\n .optional()\n .describe(\"Request Bloomberg entitlement IDs and retain them in result metadata.\"),\n securities: stringArray(\n tool,\n \"securities\",\n options.maxSecurities,\n options.maxStringChars,\n '[\"<TICKER> <MARKET_SECTOR>\"]',\n ).describe(\n \"Securities exactly as the user supplied them: '<TICKER> <MARKET_SECTOR>' for Bloomberg tickers, '/isin/<ISIN>' for raw ISINs, '/cusip/<CUSIP>' for raw CUSIPs. Never invent, guess, or convert identifiers into tickers.\",\n ),\n validateFields: z.boolean().optional().describe(\"Override field validation for this request.\"),\n });\n}\n\nexport function createBdhSchema(options: NormalizedBloombergToolsOptions): ZodOutput<BdhInput> {\n const tool = \"xbbg_bdh\";\n return z\n .object({\n end: dateField(tool, \"end\").describe(\"Required end date. Use YYYY-MM-DD or YYYYMMDD.\"),\n fields: stringArray(\n tool,\n \"fields\",\n options.maxFields,\n options.maxStringChars,\n '[\"<FIELD>\"]',\n ).describe(\"Bloomberg historical field mnemonics supplied by the user.\"),\n format: historicalFormat(tool).describe(\n \"Historical JSON output shape. Use semi_long only when the user asks for a table by date.\",\n ),\n kwargs: primitiveMap(tool, \"kwargs\").describe(\n \"Advanced Bloomberg request kwargs as flat string/number/boolean values only.\",\n ),\n overrides: overridesMap(tool, \"overrides\").describe(\n \"Bloomberg overrides. Use primitive values for global overrides and nested primitive maps keyed by exact security for per-security overrides.\",\n ),\n securities: stringArray(\n tool,\n \"securities\",\n options.maxSecurities,\n options.maxStringChars,\n '[\"<TICKER> <MARKET_SECTOR>\"]',\n ).describe(\n \"Securities exactly as the user supplied them: '<TICKER> <MARKET_SECTOR>' for Bloomberg tickers, '/isin/<ISIN>' for raw ISINs, '/cusip/<CUSIP>' for raw CUSIPs. Never invent, guess, or convert identifiers into tickers.\",\n ),\n start: dateField(tool, \"start\").describe(\"Required start date. Use YYYY-MM-DD or YYYYMMDD.\"),\n returnEids: z\n .boolean()\n .optional()\n .describe(\"Request Bloomberg entitlement IDs and retain them in result metadata.\"),\n validateFields: z\n .boolean()\n .optional()\n .describe(\"Override field validation for this request.\"),\n })\n .superRefine((value, ctx) => {\n if (value.start > value.end) {\n ctx.addIssue({\n code: \"custom\",\n message: `${tool}: start must be on or before end. Use an explicit start/end date range.`,\n path: [\"start\"],\n });\n }\n });\n}\n\nexport function createBdsSchema(options: NormalizedBloombergToolsOptions): ZodOutput<BdsInput> {\n const tool = \"xbbg_bds\";\n return z.object({\n field: nonEmptyString(tool, \"field\", options.maxStringChars, \"<BULK_FIELD>\").describe(\n \"Exactly one Bloomberg bulk/table field supplied by the user.\",\n ),\n kwargs: primitiveMap(tool, \"kwargs\").describe(\n \"Advanced Bloomberg request kwargs as flat string/number/boolean values only.\",\n ),\n overrides: overridesMap(tool, \"overrides\").describe(\n \"Bloomberg overrides. Use primitive values for global overrides and nested primitive maps keyed by exact security for per-security overrides.\",\n ),\n returnEids: z\n .boolean()\n .optional()\n .describe(\"Request Bloomberg entitlement IDs and retain them in result metadata.\"),\n securities: stringArray(\n tool,\n \"securities\",\n options.maxSecurities,\n options.maxStringChars,\n '[\"<INDEX_TICKER> <MARKET_SECTOR>\"]',\n ).describe(\n \"Securities exactly as the user supplied them: '<TICKER> <MARKET_SECTOR>' for Bloomberg tickers, '/isin/<ISIN>' for raw ISINs, '/cusip/<CUSIP>' for raw CUSIPs. Never invent, guess, or convert identifiers into tickers.\",\n ),\n validateFields: z.boolean().optional().describe(\"Override field validation for this request.\"),\n });\n}\n\nexport function createBdibSchema(options: NormalizedBloombergToolsOptions): ZodOutput<BdibInput> {\n const tool = \"xbbg_bdib\";\n return z.object({\n end: dateTimeField(tool, \"end\").describe(\n \"Required intraday end datetime. Use ISO 8601 with timezone when possible.\",\n ),\n eventType: nonEmptyString(tool, \"eventType\", options.maxStringChars, \"<EVENT_TYPE>\")\n .optional()\n .describe(\"Bloomberg event type supplied by the user.\"),\n interval: z\n .number()\n .int(`${tool}: interval must be a positive integer number of minutes. Example: 5`)\n .positive(`${tool}: interval must be greater than zero. Example: 5`)\n .describe(\"Bar interval in minutes. Must be a positive integer.\"),\n kwargs: primitiveMap(tool, \"kwargs\").describe(\n \"Advanced Bloomberg request kwargs as flat string/number/boolean values only.\",\n ),\n outputTz: nonEmptyString(tool, \"outputTz\", options.maxStringChars, \"<TIMEZONE>\")\n .optional()\n .describe(\"Optional output timezone.\"),\n requestTz: nonEmptyString(tool, \"requestTz\", options.maxStringChars, \"<TIMEZONE>\")\n .optional()\n .describe(\"Timezone for naive start/end datetimes.\"),\n returnEids: z\n .boolean()\n .optional()\n .describe(\"Request Bloomberg entitlement IDs and retain them in result metadata.\"),\n start: dateTimeField(tool, \"start\").describe(\n \"Required intraday start datetime. Use ISO 8601 with timezone when possible.\",\n ),\n ticker: nonEmptyString(\n tool,\n \"ticker\",\n options.maxStringChars,\n \"<TICKER> <MARKET_SECTOR>\",\n ).describe(\n \"One security exactly as the user supplied it: '<TICKER> <MARKET_SECTOR>', '/isin/<ISIN>', or '/cusip/<CUSIP>'. Never invent, guess, or convert identifiers into tickers.\",\n ),\n });\n}\n\nexport function createBdtickSchema(\n options: NormalizedBloombergToolsOptions,\n): ZodOutput<BdtickInput> {\n const tool = \"xbbg_bdtick\";\n const includeFlag = z.boolean().optional().describe(\"Optional IntradayTickRequest include flag.\");\n return z.object({\n end: dateTimeField(tool, \"end\").describe(\n \"Required intraday tick end datetime. Use ISO 8601 with timezone when possible.\",\n ),\n eventTypes: stringArray(\n tool,\n \"eventTypes\",\n options.maxFields,\n options.maxStringChars,\n '[\"<EVENT_TYPE>\"]',\n )\n .optional()\n .describe('Bloomberg tick event types, for example [\"<EVENT_TYPE>\"].'),\n includeBicMicCodes: includeFlag,\n includeBloombergStandardConditionCodes: includeFlag,\n includeBrokerCodes: includeFlag,\n includeConditionCodes: includeFlag,\n includeExchangeCodes: includeFlag,\n includeNonPlottableEvents: includeFlag,\n includeRpsCodes: includeFlag,\n kwargs: primitiveMap(tool, \"kwargs\").describe(\n \"Advanced IntradayTickRequest kwargs as flat string/number/boolean values only.\",\n ),\n outputTz: nonEmptyString(tool, \"outputTz\", options.maxStringChars, \"<TIMEZONE>\")\n .optional()\n .describe(\"Optional output timezone.\"),\n requestTz: nonEmptyString(tool, \"requestTz\", options.maxStringChars, \"<TIMEZONE>\")\n .optional()\n .describe(\"Timezone for naive start/end datetimes.\"),\n returnEids: z\n .boolean()\n .optional()\n .describe(\"Request Bloomberg entitlement IDs and retain them in result metadata.\"),\n start: dateTimeField(tool, \"start\").describe(\n \"Required intraday tick start datetime. Use ISO 8601 with timezone when possible.\",\n ),\n ticker: nonEmptyString(\n tool,\n \"ticker\",\n options.maxStringChars,\n \"<TICKER> <MARKET_SECTOR>\",\n ).describe(\n \"One security exactly as the user supplied it: '<TICKER> <MARKET_SECTOR>', '/isin/<ISIN>', or '/cusip/<CUSIP>'. Never invent, guess, or convert identifiers into tickers.\",\n ),\n });\n}\n\nexport function createCheckEntitlementsSchema(\n options: NormalizedBloombergToolsOptions,\n): ZodOutput<CheckEntitlementsInput> {\n const tool = \"xbbg_check_entitlements\";\n return z.object({\n eids: z\n .array(\n z\n .number()\n .int(`${tool}: eids must contain integers only.`)\n .positive(`${tool}: eids must contain positive integers only.`)\n .max(MAX_BLOOMBERG_EID, `${tool}: eids must be signed 32-bit integers.`),\n )\n .nonempty(`${tool}: eids must contain at least one entitlement ID.`)\n .max(\n MAX_ENTITLEMENT_EIDS,\n `${tool}: eids must contain at most ${String(MAX_ENTITLEMENT_EIDS)} values.`,\n )\n .describe(\"Nonempty list of positive signed 32-bit Bloomberg entitlement IDs.\"),\n service: nonEmptyString(tool, \"service\", options.maxStringChars, \"//blp/refdata\")\n .optional()\n .default(\"//blp/refdata\")\n .describe(\"Bloomberg service to check. Defaults to //blp/refdata.\"),\n });\n}\n\nexport function createBqlSchema(options: NormalizedBloombergToolsOptions): ZodOutput<BqlInput> {\n const tool = \"xbbg_bql\";\n return z.object({\n kwargs: primitiveMap(tool, \"kwargs\").describe(\n \"Advanced Bloomberg request kwargs as flat string/number/boolean values only.\",\n ),\n query: nonEmptyString(tool, \"query\", options.maxBqlQueryChars, \"<BQL_QUERY>\").describe(\n \"Complete BQL expression string with an explicit bounded universe; prefer BDP/BDH for simple reference or historical requests.\",\n ),\n });\n}\n\nexport function createBqrSchema(options: NormalizedBloombergToolsOptions): ZodOutput<BqrInput> {\n const tool = \"xbbg_bqr\";\n return z.object({\n end: dateTimeField(tool, \"end\").describe(\n \"Required BQR end datetime. Use ISO 8601 with timezone when possible.\",\n ),\n eventTypes: stringArray(\n tool,\n \"eventTypes\",\n options.maxFields,\n options.maxStringChars,\n '[\"<EVENT_TYPE>\"]',\n )\n .optional()\n .describe('BQR event types, for example [\"<EVENT_TYPE>\"].'),\n includeBrokerCodes: z\n .boolean()\n .optional()\n .describe(\"Include broker/dealer attribution columns. Defaults to true in @xbbg/core.\"),\n start: dateTimeField(tool, \"start\").describe(\n \"Required BQR start datetime. Use ISO 8601 with timezone when possible.\",\n ),\n ticker: nonEmptyString(\n tool,\n \"ticker\",\n options.maxStringChars,\n \"/isin/<ISIN>@<QUOTE_SOURCE> <MARKET_SECTOR>\",\n ).describe(\n \"Fixed-income ticker or identifier with dealer quote source, for example /isin/<ISIN>@<QUOTE_SOURCE> <MARKET_SECTOR>.\",\n ),\n });\n}\n\nexport function createBsrchSchema(options: NormalizedBloombergToolsOptions): ZodOutput<BsrchInput> {\n const tool = \"xbbg_bsrch\";\n return z.object({\n kwargs: primitiveMap(tool, \"kwargs\").describe(\n \"Search-grid kwargs as flat string/number/boolean values only.\",\n ),\n overrides: primitiveMap(tool, \"overrides\").describe(\n \"Search-grid overrides as flat string/number/boolean values only.\",\n ),\n searchSpec: nonEmptyString(\n tool,\n \"searchSpec\",\n options.maxSearchSpecChars,\n \"<SEARCH_SPEC>\",\n ).describe(\n \"Bloomberg search/grid domain or saved-search spec. Not for normal security lookup.\",\n ),\n });\n}\n\nexport function createBfldsSchema(options: NormalizedBloombergToolsOptions): ZodOutput<BfldsInput> {\n const tool = \"xbbg_bflds\";\n return z\n .object({\n fields: stringArray(tool, \"fields\", options.maxFields, options.maxStringChars, '[\"<FIELD>\"]')\n .optional()\n .describe(\n \"Specific field mnemonics to inspect. Provide either fields or searchSpec, not both.\",\n ),\n kwargs: primitiveMap(tool, \"kwargs\").describe(\n \"Advanced Bloomberg request kwargs as flat string/number/boolean values only.\",\n ),\n searchSpec: nonEmptyString(\n tool,\n \"searchSpec\",\n options.maxSearchSpecChars,\n \"<FIELD_SEARCH_TEXT>\",\n )\n .optional()\n .describe(\n \"Field search text when the field mnemonic is unknown. Provide either searchSpec or fields, not both.\",\n ),\n })\n .superRefine((value, ctx) => {\n const hasFields = value.fields !== undefined;\n const hasSearchSpec = value.searchSpec !== undefined;\n if (hasFields === hasSearchSpec) {\n ctx.addIssue({\n code: \"custom\",\n message: `${tool}: provide exactly one of fields or searchSpec. Example: {\"fields\":[\"<FIELD>\"]}`,\n path: [\"fields\"],\n });\n }\n });\n}\n\nexport function createBeqsSchema(options: NormalizedBloombergToolsOptions): ZodOutput<BeqsInput> {\n const tool = \"xbbg_beqs\";\n return z.object({\n asof: dateField(tool, \"asof\").optional().describe(\"Optional as-of date for the screen.\"),\n group: nonEmptyString(tool, \"group\", options.maxStringChars, \"<BEQS_GROUP>\")\n .optional()\n .describe(\"Bloomberg BEQS group when required by the screen.\"),\n kwargs: primitiveMap(tool, \"kwargs\").describe(\n \"Advanced BEQS request kwargs as flat string/number/boolean values only.\",\n ),\n overrides: primitiveMap(tool, \"overrides\").describe(\n \"BEQS overrides as flat string/number/boolean values only.\",\n ),\n screen: nonEmptyString(tool, \"screen\", options.maxStringChars, \"<BEQS_SCREEN>\").describe(\n \"Existing Bloomberg BEQS screen name supplied by the user.\",\n ),\n screenType: nonEmptyString(tool, \"screenType\", options.maxStringChars, \"<SCREEN_TYPE>\")\n .optional()\n .describe(\"Bloomberg BEQS screen type when required by the screen.\"),\n });\n}\n\nexport function createYasSchema(options: NormalizedBloombergToolsOptions): ZodOutput<YasInput> {\n const tool = \"xbbg_yas\";\n return z.object({\n benchmark: nonEmptyString(tool, \"benchmark\", options.maxStringChars, \"<BENCHMARK_TICKER>\")\n .optional()\n .describe(\"Optional YAS benchmark supplied by the user.\"),\n fields: stringArray(\n tool,\n \"fields\",\n options.maxFields,\n options.maxStringChars,\n '[\"<YAS_FIELD>\"]',\n ).describe(\"YAS field mnemonics supplied by the user.\"),\n price: z.number().optional().describe(\"Optional YAS price input.\"),\n settleDt: dateField(tool, \"settleDt\").optional().describe(\"Optional YAS settlement date.\"),\n spread: z.number().optional().describe(\"Optional YAS spread input.\"),\n tickers: stringArray(\n tool,\n \"tickers\",\n options.maxSecurities,\n options.maxStringChars,\n '[\"/isin/<ISIN> <MARKET_SECTOR>\"]',\n ).describe(\n \"Fixed-income securities exactly as the user supplied them: '<TICKER> <MARKET_SECTOR>' or identifier syntax such as '/isin/<ISIN> <MARKET_SECTOR>'. Never invent or guess tickers.\",\n ),\n yieldType: z.number().int().optional().describe(\"Optional YAS yield type.\"),\n yieldVal: z.number().optional().describe(\"Optional YAS yield value input.\"),\n });\n}\n\nexport function createPreferredsSchema(\n options: NormalizedBloombergToolsOptions,\n): ZodOutput<PreferredsInput> {\n const tool = \"xbbg_preferreds\";\n return z.object({\n equityTicker: nonEmptyString(\n tool,\n \"equityTicker\",\n options.maxStringChars,\n \"<ISSUER_TICKER> <MARKET_SECTOR>\",\n ).describe(\n \"The issuer's common equity ticker as '<TICKER> <MARKET_SECTOR>', never a preferred ('Pfd') ticker and never a guessed one. Resolve a supplied ISIN/CUSIP with xbbg_resolve_isins first.\",\n ),\n fields: z\n .array(nonEmptyString(tool, \"fields\", options.maxStringChars, '[\"<FIELD>\"]'))\n .max(options.maxFields, `${tool}: fields can contain at most ${options.maxFields} values`)\n .transform((fields) => (fields.length === 0 ? undefined : fields))\n .optional()\n .describe(\"Optional fields to include in the preferreds recipe result.\"),\n });\n}\n\nexport function createCorporateBondsSchema(\n options: NormalizedBloombergToolsOptions,\n): ZodOutput<CorporateBondsInput> {\n const tool = \"xbbg_corporate_bonds\";\n return z.object({\n activeOnly: z\n .boolean()\n .optional()\n .describe(\"Restrict to active bonds. Defaults to true in @xbbg/core.\"),\n ccy: nonEmptyString(tool, \"ccy\", options.maxStringChars, \"<CCY>\")\n .optional()\n .describe(\"Optional currency filter supplied by the user.\"),\n fields: stringArray(tool, \"fields\", options.maxFields, options.maxStringChars, '[\"<FIELD>\"]')\n .optional()\n .describe(\"Optional fields to include in the corporate bond result.\"),\n ticker: nonEmptyString(\n tool,\n \"ticker\",\n options.maxStringChars,\n \"<ISSUER_TICKER> <MARKET_SECTOR>\",\n ).describe(\n \"The issuer/company equity ticker as '<TICKER> <MARKET_SECTOR>' supplied by the user. Resolve a supplied ISIN/CUSIP with xbbg_resolve_isins first; never guess tickers.\",\n ),\n });\n}\n\nexport function createIndexMembersSchema(\n options: NormalizedBloombergToolsOptions,\n): ZodOutput<IndexMembersInput> {\n const tool = \"xbbg_index_members\";\n return z.object({\n asof: dateField(tool, \"asof\").optional().describe(\"Optional index membership as-of date.\"),\n field: z\n .enum([\"INDX_MWEIGHT\", \"INDX_MEMBERS\", \"INDX_MEMBERS3\"])\n .optional()\n .describe(\"Bloomberg index members field. Omit for @xbbg/core default.\"),\n index: nonEmptyString(\n tool,\n \"index\",\n options.maxStringChars,\n \"<INDEX_TICKER> <MARKET_SECTOR>\",\n ).describe(\n \"One Bloomberg index ticker as '<INDEX_TICKER> <MARKET_SECTOR>' supplied by the user; never guess index tickers.\",\n ),\n });\n}\n\nexport function createResolveIsinsSchema(\n options: NormalizedBloombergToolsOptions,\n): ZodOutput<ResolveIsinsInput> {\n const tool = \"xbbg_resolve_isins\";\n return z.object({\n isins: stringArray(\n tool,\n \"isins\",\n options.maxSecurities,\n options.maxStringChars,\n '[\"<ISIN>\"]',\n ).describe(\"Raw ISIN strings to resolve. Do not add /isin/ prefixes for this recipe.\"),\n });\n}\n\nexport function createIssuerIsinsSchema(\n options: NormalizedBloombergToolsOptions,\n): ZodOutput<IssuerIsinsInput> {\n const tool = \"xbbg_issuer_isins\";\n return z.object({\n bondIsins: stringArray(\n tool,\n \"bondIsins\",\n options.maxSecurities,\n options.maxStringChars,\n '[\"<BOND_ISIN>\"]',\n ).describe(\"Raw bond ISIN strings for issuer-level ISIN discovery.\"),\n });\n}\n\nexport function createEtfHoldingsSchema(\n options: NormalizedBloombergToolsOptions,\n): ZodOutput<EtfHoldingsInput> {\n const tool = \"xbbg_etf_holdings\";\n return z.object({\n etfTicker: nonEmptyString(\n tool,\n \"etfTicker\",\n options.maxStringChars,\n \"<ETF_TICKER> <MARKET_SECTOR>\",\n ).describe(\n \"One Bloomberg ETF ticker as '<ETF_TICKER> <MARKET_SECTOR>' supplied by the user. Resolve a supplied ISIN/CUSIP with xbbg_resolve_isins first; never guess tickers.\",\n ),\n fields: stringArray(tool, \"fields\", options.maxFields, options.maxStringChars, '[\"<FIELD>\"]')\n .optional()\n .describe(\"Optional fields to include in the ETF holdings recipe result.\"),\n });\n}\n\ninterface SnapshotControlShape {\n readonly allFields: ZodOutput<boolean | undefined>;\n readonly conflate: ZodOutput<boolean | undefined>;\n readonly drain: ZodOutput<boolean | undefined>;\n readonly flushThreshold: ZodOutput<number | undefined>;\n readonly maxUpdates: ZodOutput<number>;\n readonly options: ZodOutput<string[] | undefined>;\n readonly overflowPolicy: ZodOutput<OverflowPolicy | undefined>;\n readonly streamCapacity: ZodOutput<number | undefined>;\n readonly timeoutMs: ZodOutput<number>;\n}\n\nfunction snapshotControlFields(\n tool: string,\n options: NormalizedBloombergToolsOptions,\n): SnapshotControlShape {\n return {\n allFields: z.boolean().optional().describe(\"Request all Bloomberg fields when supported.\"),\n conflate: z\n .boolean()\n .optional()\n .describe(\"Enable Bloomberg conflated streaming when supported.\"),\n drain: z\n .boolean()\n .optional()\n .describe(\n \"Flush buffered backlog while closing the subscription. The subscription always closes; collected output stays bounded either way. Defaults to false.\",\n ),\n flushThreshold: z\n .number()\n .int()\n .positive()\n .optional()\n .describe(\"Optional stream flush threshold.\"),\n maxUpdates: z\n .number()\n .int(`${tool}: maxUpdates must be a positive integer.`)\n .positive(`${tool}: maxUpdates must be greater than zero.`)\n .max(\n options.maxStreamUpdates,\n `${tool}: maxUpdates can be at most ${options.maxStreamUpdates}.`,\n )\n .describe(\"Required maximum number of updates to collect before unsubscribing.\"),\n options: stringArray(\n tool,\n \"options\",\n options.maxFields,\n options.maxStringChars,\n '[\"interval=5\"]',\n )\n .optional()\n .describe(\"Advanced Bloomberg subscription options.\"),\n overflowPolicy: overflowPolicy(tool),\n streamCapacity: z.number().int().positive().optional().describe(\"Optional stream capacity.\"),\n timeoutMs: z\n .number()\n .int()\n .positive()\n .max(options.maxStreamWaitMs, `${tool}: timeoutMs can be at most ${options.maxStreamWaitMs}.`)\n .optional()\n .default(options.maxStreamWaitMs)\n .describe(\"Maximum total wait in milliseconds before unsubscribing.\"),\n };\n}\n\nexport function createStreamSnapshotSchema(\n options: NormalizedBloombergToolsOptions,\n): ZodOutput<StreamSnapshotInput> {\n const tool = \"xbbg_stream_snapshot\";\n return z.object({\n fields: stringArray(\n tool,\n \"fields\",\n options.maxFields,\n options.maxStringChars,\n '[\"<FIELD>\"]',\n ).describe(\"Bloomberg market-data fields to observe.\"),\n tickers: stringArray(\n tool,\n \"tickers\",\n options.maxSecurities,\n options.maxStringChars,\n '[\"<TICKER> <MARKET_SECTOR>\"]',\n ).describe(\n \"Securities to observe, exactly as the user supplied them: '<TICKER> <MARKET_SECTOR>', '/isin/<ISIN>', or '/cusip/<CUSIP>'. Never invent or guess tickers.\",\n ),\n ...snapshotControlFields(tool, options),\n });\n}\n\nexport function createMktbarSnapshotSchema(\n options: NormalizedBloombergToolsOptions,\n): ZodOutput<MktbarSnapshotInput> {\n const tool = \"xbbg_mktbar_snapshot\";\n return z.object({\n fields: stringArray(tool, \"fields\", options.maxFields, options.maxStringChars, '[\"<FIELD>\"]')\n .optional()\n .describe(\"Optional market-bar fields. Omit for Bloomberg defaults.\"),\n ticker: nonEmptyString(\n tool,\n \"ticker\",\n options.maxStringChars,\n \"<TICKER> <MARKET_SECTOR>\",\n ).describe(\n \"One security to observe, exactly as the user supplied it: '<TICKER> <MARKET_SECTOR>', '/isin/<ISIN>', or '/cusip/<CUSIP>'. Never invent or guess tickers.\",\n ),\n ...snapshotControlFields(tool, options),\n });\n}\n\nexport function createDepthSnapshotSchema(\n options: NormalizedBloombergToolsOptions,\n): ZodOutput<DepthSnapshotInput> {\n const tool = \"xbbg_depth_snapshot\";\n return z.object({\n fields: stringArray(tool, \"fields\", options.maxFields, options.maxStringChars, '[\"<FIELD>\"]')\n .optional()\n .describe(\"Optional market-depth fields. Omit for Bloomberg defaults.\"),\n ticker: nonEmptyString(\n tool,\n \"ticker\",\n options.maxStringChars,\n \"<TICKER> <MARKET_SECTOR>\",\n ).describe(\n \"One security to observe, exactly as the user supplied it: '<TICKER> <MARKET_SECTOR>', '/isin/<ISIN>', or '/cusip/<CUSIP>'. Never invent or guess tickers.\",\n ),\n ...snapshotControlFields(tool, options),\n });\n}\n","import type { StructuredToolInterface } from \"@langchain/core/tools\";\n\nimport { createCoreResolver, type CoreResolver } from \"./core-loader\";\nimport {\n BDP_DESCRIPTION,\n BDH_DESCRIPTION,\n BDS_DESCRIPTION,\n BDIB_DESCRIPTION,\n BDTICK_DESCRIPTION,\n CHECK_ENTITLEMENTS_DESCRIPTION,\n BFLDS_DESCRIPTION,\n BQL_DESCRIPTION,\n BSRCH_DESCRIPTION,\n BQR_DESCRIPTION,\n BEQS_DESCRIPTION,\n CORPORATE_BONDS_DESCRIPTION,\n ETF_HOLDINGS_DESCRIPTION,\n DEPTH_SNAPSHOT_DESCRIPTION,\n INDEX_MEMBERS_DESCRIPTION,\n ISSUER_ISINS_DESCRIPTION,\n MKTBAR_SNAPSHOT_DESCRIPTION,\n PREFERREDS_DESCRIPTION,\n RESOLVE_ISINS_DESCRIPTION,\n STREAM_SNAPSHOT_DESCRIPTION,\n YAS_DESCRIPTION,\n} from \"./descriptions\";\nimport { createBloombergStructuredTool, type ToolInvocationConfig } from \"./langchain-tool\";\nimport type { BloombergToolsOptions, BloombergToolName } from \"./options\";\nimport { isToolDisabled } from \"./options\";\nimport {\n createToolResult,\n MAX_ENTITLEMENT_EIDS,\n throwWithToolContext,\n type ToolContentAndArtifact,\n} from \"./result-limits\";\nimport {\n createBeqsSchema,\n createBdhSchema,\n createBdibSchema,\n createBdtickSchema,\n createBdpSchema,\n createCheckEntitlementsSchema,\n createBdsSchema,\n createBfldsSchema,\n createBqlSchema,\n createBsrchSchema,\n createBqrSchema,\n createCorporateBondsSchema,\n createDepthSnapshotSchema,\n createEtfHoldingsSchema,\n createIndexMembersSchema,\n createIssuerIsinsSchema,\n createMktbarSnapshotSchema,\n createPreferredsSchema,\n createResolveIsinsSchema,\n createStreamSnapshotSchema,\n createYasSchema,\n type BdhInput,\n type BeqsInput,\n type BdibInput,\n type BdtickInput,\n type BdpInput,\n type BdsInput,\n type CheckEntitlementsInput,\n type BfldsInput,\n type BqlInput,\n type BsrchInput,\n type BqrInput,\n type CorporateBondsInput,\n type DepthSnapshotInput,\n type EtfHoldingsInput,\n type IndexMembersInput,\n type IssuerIsinsInput,\n type MktbarSnapshotInput,\n type PreferredsInput,\n type ResolveIsinsInput,\n type StreamSnapshotInput,\n type YasInput,\n} from \"./schemas\";\n\nexport type BloombergTool = StructuredToolInterface;\n\ntype ToolCreator = (resolver: CoreResolver) => BloombergTool;\n\nfunction resultString(\n resolver: CoreResolver,\n name: BloombergToolName,\n value: unknown,\n): ToolContentAndArtifact {\n return createToolResult(name, value, resolver.options.maxRows, resolver.options.maxStringChars);\n}\n\ntype SnapshotReason = \"max_updates\" | \"timeout\" | \"done\";\n\ninterface SnapshotControlInput {\n readonly maxUpdates: number;\n readonly timeoutMs: number;\n readonly drain?: boolean;\n}\n\ninterface SnapshotSubscriptionLike {\n next(): Promise<IteratorResult<unknown>>;\n unsubscribe(drain?: boolean): Promise<unknown>;\n}\n\ninterface SnapshotResult {\n readonly updateCount: number;\n readonly maxUpdates: number;\n readonly timeoutMs: number;\n readonly reason: SnapshotReason;\n readonly updates: readonly unknown[];\n /** Set when collection succeeded but releasing the subscription failed. */\n readonly unsubscribeError?: string;\n}\n\ninterface StreamOptionsInput {\n readonly options?: readonly string[];\n readonly conflate?: boolean;\n readonly flushThreshold?: number;\n readonly overflowPolicy?: string;\n readonly streamCapacity?: number;\n readonly allFields?: boolean;\n readonly fields?: readonly string[];\n}\n\nconst STREAM_TIMEOUT = Symbol(\"stream_timeout\");\nconst STREAM_ABORTED = Symbol(\"stream_aborted\");\n\nfunction abortError(signal: AbortSignal | undefined): Error {\n const reason: unknown = signal?.reason;\n return reason instanceof Error ? reason : new Error(\"Tool call aborted\");\n}\n\nfunction streamOptions(input: StreamOptionsInput): StreamOptionsInput {\n return {\n allFields: input.allFields,\n conflate: input.conflate,\n flushThreshold: input.flushThreshold,\n options: input.options,\n overflowPolicy: input.overflowPolicy,\n streamCapacity: input.streamCapacity,\n };\n}\n\n/** mktbar/depth take fields through options; stream() takes them positionally. */\nfunction singleTickerStreamOptions(input: StreamOptionsInput): StreamOptionsInput {\n return { ...streamOptions(input), fields: input.fields };\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nfunction rowsFromArrowTable(value: unknown): unknown[] | undefined {\n if (!isRecord(value)) {\n return undefined;\n }\n const toArray = value.toArray;\n if (typeof toArray === \"function\") {\n return Array.from(toArray.call(value) as Iterable<unknown>);\n }\n const numRows = value.numRows;\n const get = value.get;\n if (typeof numRows === \"number\" && Number.isInteger(numRows) && typeof get === \"function\") {\n const rows: unknown[] = [];\n for (let index = 0; index < numRows; index += 1) {\n rows.push(get.call(value, index));\n }\n return rows;\n }\n return undefined;\n}\n\nfunction jsonCompatible(value: unknown): unknown {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n if (value instanceof Date) {\n return value.toISOString();\n }\n if (Array.isArray(value)) {\n return value.map(jsonCompatible);\n }\n if (!isRecord(value)) {\n return value;\n }\n const toJSON = value.toJSON;\n if (typeof toJSON === \"function\") {\n return jsonCompatible(toJSON.call(value));\n }\n const output: Record<string, unknown> = {};\n for (const [key, entry] of Object.entries(value)) {\n output[key] = jsonCompatible(entry);\n }\n return output;\n}\n\nfunction normalizeStreamUpdate(value: unknown): unknown {\n if (isRecord(value)) {\n const toObject = value.toObject;\n if (typeof toObject === \"function\") {\n return jsonCompatible(toObject.call(value));\n }\n }\n const rows = rowsFromArrowTable(value);\n return rows === undefined ? jsonCompatible(value) : rows.map(jsonCompatible);\n}\n\nasync function nextWithinTimeout(\n iterator: SnapshotSubscriptionLike,\n deadlineMs: number,\n signal: AbortSignal | undefined,\n): Promise<IteratorResult<unknown> | typeof STREAM_TIMEOUT | typeof STREAM_ABORTED> {\n if (signal?.aborted === true) {\n return STREAM_ABORTED;\n }\n const remainingMs = deadlineMs - Date.now();\n if (remainingMs <= 0) {\n return STREAM_TIMEOUT;\n }\n const nextPromise = iterator.next();\n let timer: ReturnType<typeof setTimeout> | undefined;\n let onAbort: (() => void) | undefined;\n const racers: Promise<IteratorResult<unknown> | typeof STREAM_TIMEOUT | typeof STREAM_ABORTED>[] =\n [\n nextPromise,\n new Promise<typeof STREAM_TIMEOUT>((resolve) => {\n timer = setTimeout(() => resolve(STREAM_TIMEOUT), remainingMs);\n }),\n ];\n if (signal !== undefined) {\n racers.push(\n new Promise<typeof STREAM_ABORTED>((resolve) => {\n onAbort = () => resolve(STREAM_ABORTED);\n signal.addEventListener(\"abort\", onAbort, { once: true });\n }),\n );\n }\n const result = await Promise.race(racers);\n if (timer !== undefined) {\n clearTimeout(timer);\n }\n if (signal !== undefined && onAbort !== undefined) {\n signal.removeEventListener(\"abort\", onAbort);\n }\n if (result === STREAM_TIMEOUT || result === STREAM_ABORTED) {\n // The abandoned next() settles later (unsubscribe wakes it); swallow it.\n void nextPromise.catch(() => undefined);\n }\n return result;\n}\n\nasync function collectSnapshot(\n subscription: SnapshotSubscriptionLike,\n input: SnapshotControlInput,\n signal: AbortSignal | undefined,\n): Promise<SnapshotResult> {\n const updates: unknown[] = [];\n const deadlineMs = Date.now() + input.timeoutMs;\n let reason: SnapshotReason = \"max_updates\";\n let failed = false;\n let caught: unknown;\n try {\n while (updates.length < input.maxUpdates) {\n const next = await nextWithinTimeout(subscription, deadlineMs, signal);\n if (next === STREAM_ABORTED) {\n throw abortError(signal);\n }\n if (next === STREAM_TIMEOUT) {\n reason = \"timeout\";\n break;\n }\n if (next.done === true) {\n reason = \"done\";\n break;\n }\n updates.push(normalizeStreamUpdate(next.value));\n }\n } catch (error) {\n failed = true;\n caught = error;\n }\n // Never drain on abort: release the subscription as fast as possible.\n const drain = input.drain === true && signal?.aborted !== true;\n let unsubscribeError: string | undefined;\n try {\n await subscription.unsubscribe(drain);\n } catch (error) {\n // A collection error outranks a cleanup error; a cleanup-only failure is\n // reported in the result instead of discarding the collected updates.\n if (!failed) {\n unsubscribeError = error instanceof Error ? error.message : String(error);\n }\n }\n if (failed) {\n throw caught;\n }\n return {\n maxUpdates: input.maxUpdates,\n reason,\n timeoutMs: input.timeoutMs,\n updateCount: updates.length,\n updates,\n ...(unsubscribeError === undefined ? {} : { unsubscribeError }),\n };\n}\n\nfunction validationSetting(\n resolver: CoreResolver,\n value: boolean | undefined,\n): boolean | undefined {\n return value ?? resolver.options.validateFields;\n}\n\nfunction bdpWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_bdp\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: BdpInput): Promise<ToolContentAndArtifact> => {\n try {\n const engine = await resolver.getEngine();\n const options = {\n backend: \"json\" as const,\n format: input.format,\n includeSecurityErrors: input.includeSecurityErrors,\n kwargs: input.kwargs,\n overrides: input.overrides as never,\n validateFields: validationSetting(resolver, input.validateFields),\n returnEids: input.returnEids,\n };\n const result = await engine.bdp(input.securities, input.fields, options);\n return resultString(resolver, name, result);\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n description: BDP_DESCRIPTION,\n name,\n responseFormat: \"content_and_artifact\",\n schema: createBdpSchema(resolver.options),\n },\n );\n}\n\nfunction bdhWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_bdh\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: BdhInput): Promise<ToolContentAndArtifact> => {\n try {\n const engine = await resolver.getEngine();\n const options = {\n backend: \"json\" as const,\n end: input.end,\n format: input.format,\n kwargs: input.kwargs,\n overrides: input.overrides as never,\n start: input.start,\n returnEids: input.returnEids,\n validateFields: validationSetting(resolver, input.validateFields),\n };\n const result = await engine.bdh(input.securities, input.fields, options);\n return resultString(resolver, name, result);\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n description: BDH_DESCRIPTION,\n name,\n responseFormat: \"content_and_artifact\",\n schema: createBdhSchema(resolver.options),\n },\n );\n}\n\nfunction bdsWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_bds\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: BdsInput): Promise<ToolContentAndArtifact> => {\n try {\n const engine = await resolver.getEngine();\n const options = {\n backend: \"json\" as const,\n kwargs: input.kwargs,\n overrides: input.overrides as never,\n returnEids: input.returnEids,\n validateFields: validationSetting(resolver, input.validateFields),\n };\n const result = await engine.bds(input.securities, [input.field], options);\n return resultString(resolver, name, result);\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n description: BDS_DESCRIPTION,\n name,\n responseFormat: \"content_and_artifact\",\n schema: createBdsSchema(resolver.options),\n },\n );\n}\n\nfunction bdibWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_bdib\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: BdibInput): Promise<ToolContentAndArtifact> => {\n try {\n const engine = await resolver.getEngine();\n const result = await engine.bdib(input.ticker, {\n backend: \"json\",\n end: input.end,\n eventType: input.eventType,\n interval: input.interval,\n kwargs: input.kwargs,\n outputTz: input.outputTz,\n requestTz: input.requestTz,\n returnEids: input.returnEids,\n start: input.start,\n });\n return resultString(resolver, name, result);\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n description: BDIB_DESCRIPTION,\n name,\n responseFormat: \"content_and_artifact\",\n schema: createBdibSchema(resolver.options),\n },\n );\n}\n\nfunction bdtickWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_bdtick\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: BdtickInput): Promise<ToolContentAndArtifact> => {\n try {\n const engine = await resolver.getEngine();\n const result = await engine.bdtick(input.ticker, {\n backend: \"json\",\n end: input.end,\n eventTypes: input.eventTypes,\n includeBicMicCodes: input.includeBicMicCodes,\n includeBloombergStandardConditionCodes: input.includeBloombergStandardConditionCodes,\n includeBrokerCodes: input.includeBrokerCodes,\n includeConditionCodes: input.includeConditionCodes,\n includeExchangeCodes: input.includeExchangeCodes,\n includeNonPlottableEvents: input.includeNonPlottableEvents,\n includeRpsCodes: input.includeRpsCodes,\n kwargs: input.kwargs,\n outputTz: input.outputTz,\n requestTz: input.requestTz,\n returnEids: input.returnEids,\n start: input.start,\n });\n return resultString(resolver, name, result);\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n description: BDTICK_DESCRIPTION,\n name,\n responseFormat: \"content_and_artifact\",\n schema: createBdtickSchema(resolver.options),\n },\n );\n}\n\nfunction checkEntitlementsWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_check_entitlements\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: CheckEntitlementsInput): Promise<ToolContentAndArtifact> => {\n try {\n const engine = await resolver.getEngine();\n const result = await engine.checkEntitlements(input.service ?? \"//blp/refdata\", input.eids);\n return createToolResult(\n name,\n result,\n MAX_ENTITLEMENT_EIDS,\n resolver.options.maxStringChars,\n );\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n description: CHECK_ENTITLEMENTS_DESCRIPTION,\n name,\n responseFormat: \"content_and_artifact\",\n schema: createCheckEntitlementsSchema(resolver.options),\n },\n );\n}\n\nfunction bqlWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_bql\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: BqlInput): Promise<ToolContentAndArtifact> => {\n try {\n const engine = await resolver.getEngine();\n const result = await engine.bql(input.query, {\n backend: \"json\",\n kwargs: input.kwargs,\n });\n return resultString(resolver, name, result);\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n description: BQL_DESCRIPTION,\n name,\n responseFormat: \"content_and_artifact\",\n schema: createBqlSchema(resolver.options),\n },\n );\n}\n\nfunction bsrchWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_bsrch\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: BsrchInput): Promise<ToolContentAndArtifact> => {\n try {\n const engine = await resolver.getEngine();\n const result = await engine.bsrch(input.searchSpec, {\n backend: \"json\",\n kwargs: input.kwargs,\n overrides: input.overrides,\n });\n return resultString(resolver, name, result);\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n description: BSRCH_DESCRIPTION,\n name,\n responseFormat: \"content_and_artifact\",\n schema: createBsrchSchema(resolver.options),\n },\n );\n}\n\nfunction bqrWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_bqr\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: BqrInput): Promise<ToolContentAndArtifact> => {\n try {\n const engine = await resolver.getEngine();\n const result = await engine.bqr(input.ticker, {\n backend: \"json\",\n endDatetime: input.end,\n eventTypes: input.eventTypes,\n includeBrokerCodes: input.includeBrokerCodes,\n startDatetime: input.start,\n });\n return resultString(resolver, name, result);\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n description: BQR_DESCRIPTION,\n name,\n responseFormat: \"content_and_artifact\",\n schema: createBqrSchema(resolver.options),\n },\n );\n}\n\nfunction bfldsWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_bflds\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: BfldsInput): Promise<ToolContentAndArtifact> => {\n try {\n const engine = await resolver.getEngine();\n const result = await engine.bflds({\n backend: \"json\",\n fields: input.fields,\n kwargs: input.kwargs,\n searchSpec: input.searchSpec,\n });\n return resultString(resolver, name, result);\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n description: BFLDS_DESCRIPTION,\n name,\n responseFormat: \"content_and_artifact\",\n schema: createBfldsSchema(resolver.options),\n },\n );\n}\n\nfunction beqsWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_beqs\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: BeqsInput): Promise<ToolContentAndArtifact> => {\n try {\n const engine = await resolver.getEngine();\n const result = await engine.beqs(input.screen, {\n asof: input.asof,\n backend: \"json\",\n group: input.group,\n kwargs: input.kwargs,\n overrides: input.overrides,\n screenType: input.screenType,\n });\n return resultString(resolver, name, result);\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n description: BEQS_DESCRIPTION,\n name,\n responseFormat: \"content_and_artifact\",\n schema: createBeqsSchema(resolver.options),\n },\n );\n}\n\nfunction yasWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_yas\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: YasInput): Promise<ToolContentAndArtifact> => {\n try {\n const engine = await resolver.getEngine();\n const result = await engine.yas(input.tickers, input.fields, {\n backend: \"json\",\n benchmark: input.benchmark,\n price: input.price,\n settleDt: input.settleDt,\n spread: input.spread,\n yieldType: input.yieldType,\n yieldVal: input.yieldVal,\n });\n return resultString(resolver, name, result);\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n description: YAS_DESCRIPTION,\n name,\n responseFormat: \"content_and_artifact\",\n schema: createYasSchema(resolver.options),\n },\n );\n}\n\nfunction preferredsWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_preferreds\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: PreferredsInput): Promise<ToolContentAndArtifact> => {\n try {\n const engine = await resolver.getEngine();\n const result = await engine.preferreds(input.equityTicker, {\n backend: \"json\",\n fields: input.fields,\n });\n return resultString(resolver, name, result);\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n description: PREFERREDS_DESCRIPTION,\n name,\n responseFormat: \"content_and_artifact\",\n schema: createPreferredsSchema(resolver.options),\n },\n );\n}\n\nfunction corporateBondsWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_corporate_bonds\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: CorporateBondsInput): Promise<ToolContentAndArtifact> => {\n try {\n const engine = await resolver.getEngine();\n const result = await engine.corporateBonds(input.ticker, {\n activeOnly: input.activeOnly,\n backend: \"json\",\n ccy: input.ccy,\n fields: input.fields,\n });\n return resultString(resolver, name, result);\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n description: CORPORATE_BONDS_DESCRIPTION,\n name,\n responseFormat: \"content_and_artifact\",\n schema: createCorporateBondsSchema(resolver.options),\n },\n );\n}\n\nfunction indexMembersWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_index_members\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: IndexMembersInput): Promise<ToolContentAndArtifact> => {\n try {\n const engine = await resolver.getEngine();\n const result = await engine.indexMembers(input.index, {\n asof: input.asof,\n backend: \"json\",\n field: input.field,\n });\n return resultString(resolver, name, result);\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n description: INDEX_MEMBERS_DESCRIPTION,\n name,\n responseFormat: \"content_and_artifact\",\n schema: createIndexMembersSchema(resolver.options),\n },\n );\n}\n\nfunction resolveIsinsWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_resolve_isins\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: ResolveIsinsInput): Promise<ToolContentAndArtifact> => {\n try {\n const engine = await resolver.getEngine();\n const result = await engine.resolveIsins(input.isins, { backend: \"json\" });\n return resultString(resolver, name, result);\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n description: RESOLVE_ISINS_DESCRIPTION,\n name,\n responseFormat: \"content_and_artifact\",\n schema: createResolveIsinsSchema(resolver.options),\n },\n );\n}\n\nfunction issuerIsinsWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_issuer_isins\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: IssuerIsinsInput): Promise<ToolContentAndArtifact> => {\n try {\n const engine = await resolver.getEngine();\n const result = await engine.issuerIsins(input.bondIsins, { backend: \"json\" });\n return resultString(resolver, name, result);\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n description: ISSUER_ISINS_DESCRIPTION,\n name,\n responseFormat: \"content_and_artifact\",\n schema: createIssuerIsinsSchema(resolver.options),\n },\n );\n}\n\nfunction etfHoldingsWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_etf_holdings\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (input: EtfHoldingsInput): Promise<ToolContentAndArtifact> => {\n try {\n const engine = await resolver.getEngine();\n const result = await engine.etfHoldings(input.etfTicker, {\n backend: \"json\",\n fields: input.fields,\n });\n return resultString(resolver, name, result);\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n description: ETF_HOLDINGS_DESCRIPTION,\n name,\n responseFormat: \"content_and_artifact\",\n schema: createEtfHoldingsSchema(resolver.options),\n },\n );\n}\n\nfunction streamSnapshotWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_stream_snapshot\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (\n input: StreamSnapshotInput,\n config?: ToolInvocationConfig,\n ): Promise<ToolContentAndArtifact> => {\n const signal = config?.signal;\n try {\n const engine = await resolver.getEngine();\n // Connecting may have outlived the caller; never open a doomed subscription.\n signal?.throwIfAborted();\n const subscription = await engine.stream(input.tickers, input.fields, streamOptions(input));\n const result = await collectSnapshot(subscription, input, signal);\n return resultString(resolver, name, result);\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n description: STREAM_SNAPSHOT_DESCRIPTION,\n name,\n responseFormat: \"content_and_artifact\",\n schema: createStreamSnapshotSchema(resolver.options),\n },\n );\n}\n\nfunction mktbarSnapshotWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_mktbar_snapshot\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (\n input: MktbarSnapshotInput,\n config?: ToolInvocationConfig,\n ): Promise<ToolContentAndArtifact> => {\n const signal = config?.signal;\n try {\n const engine = await resolver.getEngine();\n signal?.throwIfAborted();\n const subscription = await engine.mktbar(input.ticker, singleTickerStreamOptions(input));\n const result = await collectSnapshot(subscription, input, signal);\n return resultString(resolver, name, result);\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n description: MKTBAR_SNAPSHOT_DESCRIPTION,\n name,\n responseFormat: \"content_and_artifact\",\n schema: createMktbarSnapshotSchema(resolver.options),\n },\n );\n}\n\nfunction depthSnapshotWithResolver(resolver: CoreResolver): BloombergTool {\n const name = \"xbbg_depth_snapshot\" satisfies BloombergToolName;\n return createBloombergStructuredTool(\n async (\n input: DepthSnapshotInput,\n config?: ToolInvocationConfig,\n ): Promise<ToolContentAndArtifact> => {\n const signal = config?.signal;\n try {\n const engine = await resolver.getEngine();\n signal?.throwIfAborted();\n const subscription = await engine.depth(input.ticker, singleTickerStreamOptions(input));\n const result = await collectSnapshot(subscription, input, signal);\n return resultString(resolver, name, result);\n } catch (error) {\n throwWithToolContext(name, error);\n }\n },\n {\n description: DEPTH_SNAPSHOT_DESCRIPTION,\n name,\n responseFormat: \"content_and_artifact\",\n schema: createDepthSnapshotSchema(resolver.options),\n },\n );\n}\n\nexport function createBdpTool(options: BloombergToolsOptions = {}): BloombergTool {\n return bdpWithResolver(createCoreResolver(options));\n}\n\nexport function createBdhTool(options: BloombergToolsOptions = {}): BloombergTool {\n return bdhWithResolver(createCoreResolver(options));\n}\n\nexport function createBdsTool(options: BloombergToolsOptions = {}): BloombergTool {\n return bdsWithResolver(createCoreResolver(options));\n}\n\nexport function createBdibTool(options: BloombergToolsOptions = {}): BloombergTool {\n return bdibWithResolver(createCoreResolver(options));\n}\n\nexport function createBdtickTool(options: BloombergToolsOptions = {}): BloombergTool {\n return bdtickWithResolver(createCoreResolver(options));\n}\n\nexport function createCheckEntitlementsTool(options: BloombergToolsOptions = {}): BloombergTool {\n return checkEntitlementsWithResolver(createCoreResolver(options));\n}\n\nexport function createBqlTool(options: BloombergToolsOptions = {}): BloombergTool {\n return bqlWithResolver(createCoreResolver(options));\n}\n\nexport function createBsrchTool(options: BloombergToolsOptions = {}): BloombergTool {\n return bsrchWithResolver(createCoreResolver(options));\n}\n\nexport function createBqrTool(options: BloombergToolsOptions = {}): BloombergTool {\n return bqrWithResolver(createCoreResolver(options));\n}\n\nexport function createBfldsTool(options: BloombergToolsOptions = {}): BloombergTool {\n return bfldsWithResolver(createCoreResolver(options));\n}\n\nexport function createBeqsTool(options: BloombergToolsOptions = {}): BloombergTool {\n return beqsWithResolver(createCoreResolver(options));\n}\n\nexport function createYasTool(options: BloombergToolsOptions = {}): BloombergTool {\n return yasWithResolver(createCoreResolver(options));\n}\n\nexport function createPreferredsTool(options: BloombergToolsOptions = {}): BloombergTool {\n return preferredsWithResolver(createCoreResolver(options));\n}\n\nexport function createCorporateBondsTool(options: BloombergToolsOptions = {}): BloombergTool {\n return corporateBondsWithResolver(createCoreResolver(options));\n}\n\nexport function createIndexMembersTool(options: BloombergToolsOptions = {}): BloombergTool {\n return indexMembersWithResolver(createCoreResolver(options));\n}\n\nexport function createResolveIsinsTool(options: BloombergToolsOptions = {}): BloombergTool {\n return resolveIsinsWithResolver(createCoreResolver(options));\n}\n\nexport function createIssuerIsinsTool(options: BloombergToolsOptions = {}): BloombergTool {\n return issuerIsinsWithResolver(createCoreResolver(options));\n}\n\nexport function createEtfHoldingsTool(options: BloombergToolsOptions = {}): BloombergTool {\n return etfHoldingsWithResolver(createCoreResolver(options));\n}\n\nexport function createStreamSnapshotTool(options: BloombergToolsOptions = {}): BloombergTool {\n return streamSnapshotWithResolver(createCoreResolver(options));\n}\n\nexport function createMktbarSnapshotTool(options: BloombergToolsOptions = {}): BloombergTool {\n return mktbarSnapshotWithResolver(createCoreResolver(options));\n}\n\nexport function createDepthSnapshotTool(options: BloombergToolsOptions = {}): BloombergTool {\n return depthSnapshotWithResolver(createCoreResolver(options));\n}\n\ninterface CoreToolDefinition {\n readonly create: ToolCreator;\n readonly name: BloombergToolName;\n}\n\nconst CORE_TOOL_DEFINITIONS: readonly CoreToolDefinition[] = Object.freeze([\n { create: bdpWithResolver, name: \"xbbg_bdp\" },\n { create: bdhWithResolver, name: \"xbbg_bdh\" },\n { create: bdsWithResolver, name: \"xbbg_bds\" },\n { create: bdibWithResolver, name: \"xbbg_bdib\" },\n { create: bdtickWithResolver, name: \"xbbg_bdtick\" },\n { create: checkEntitlementsWithResolver, name: \"xbbg_check_entitlements\" },\n { create: bqlWithResolver, name: \"xbbg_bql\" },\n { create: bsrchWithResolver, name: \"xbbg_bsrch\" },\n { create: bqrWithResolver, name: \"xbbg_bqr\" },\n { create: bfldsWithResolver, name: \"xbbg_bflds\" },\n { create: beqsWithResolver, name: \"xbbg_beqs\" },\n { create: yasWithResolver, name: \"xbbg_yas\" },\n { create: preferredsWithResolver, name: \"xbbg_preferreds\" },\n { create: corporateBondsWithResolver, name: \"xbbg_corporate_bonds\" },\n { create: indexMembersWithResolver, name: \"xbbg_index_members\" },\n { create: resolveIsinsWithResolver, name: \"xbbg_resolve_isins\" },\n { create: issuerIsinsWithResolver, name: \"xbbg_issuer_isins\" },\n { create: etfHoldingsWithResolver, name: \"xbbg_etf_holdings\" },\n { create: streamSnapshotWithResolver, name: \"xbbg_stream_snapshot\" },\n { create: mktbarSnapshotWithResolver, name: \"xbbg_mktbar_snapshot\" },\n { create: depthSnapshotWithResolver, name: \"xbbg_depth_snapshot\" },\n]);\n\nexport function createBloombergToolsForResolver(resolver: CoreResolver): BloombergTool[] {\n return CORE_TOOL_DEFINITIONS.filter(\n (definition) => !isToolDisabled(resolver.options, definition.name),\n ).map((definition) => definition.create(resolver));\n}\n\nexport function createBloombergTools(options: BloombergToolsOptions = {}): BloombergTool[] {\n return createBloombergToolsForResolver(createCoreResolver(options));\n}\n","import { createCoreResolver } from \"./core-loader\";\nimport { createBloombergExtToolsForResolver } from \"./ext-tools\";\nimport type { BloombergToolsOptions } from \"./options\";\nimport { createBloombergToolsForResolver, type BloombergTool } from \"./tools\";\n\nexport {\n BLOOMBERG_TOOL_INSTRUCTIONS,\n getBloombergToolInstructions,\n type BloombergToolInstructionsOptions,\n} from \"./descriptions\";\nexport {\n BLOOMBERG_EXT_TOOL_NAMES,\n createBloombergExtTools,\n createExtBqlBuilderTool,\n createExtCalculateTool,\n createExtChartSpecTool,\n createExtCdxTool,\n createExtColumnsTool,\n createExtConstantsTool,\n createExtCurrencyTool,\n createExtFuturesTool,\n createExtMarketSessionTool,\n createExtTickerTool,\n createExtYasOverridesTool,\n} from \"./ext-tools\";\nexport type { ToolInvocationConfig } from \"./langchain-tool\";\nexport { toolParameterJsonSchema } from \"./langchain-tool\";\nexport {\n BLOOMBERG_TOOL_NAMES,\n DEFAULT_ENGINE_REQUEST_TIMEOUT_MS,\n type BloombergToolName,\n type BloombergToolsOptions,\n type NormalizedBloombergToolsOptions,\n} from \"./options\";\nexport type { ToolEnvelope } from \"./result-limits\";\nexport type { ChartSpecOutput, ChartSpecSummary, VegaLiteSpec } from \"./chart-spec\";\nexport type {\n BloombergChartSource,\n ChartKind,\n ChartRenderer,\n ChartRow,\n ChartScalar,\n ChartSpecInput,\n} from \"./ext-schemas\";\nexport {\n createBdhTool,\n createBdibTool,\n createBeqsTool,\n createBdtickTool,\n createBdpTool,\n createBdsTool,\n createCheckEntitlementsTool,\n createBfldsTool,\n createCorporateBondsTool,\n createEtfHoldingsTool,\n createDepthSnapshotTool,\n createIndexMembersTool,\n createIssuerIsinsTool,\n createMktbarSnapshotTool,\n createPreferredsTool,\n createResolveIsinsTool,\n createStreamSnapshotTool,\n createYasTool,\n createBloombergTools,\n createBqlTool,\n createBsrchTool,\n createBqrTool,\n type BloombergTool,\n} from \"./tools\";\n\nexport function createAllBloombergTools(options: BloombergToolsOptions = {}): BloombergTool[] {\n const resolver = createCoreResolver(options);\n return [\n ...createBloombergToolsForResolver(resolver),\n ...createBloombergExtToolsForResolver(resolver),\n ];\n}\n"]}