1 |
- {"ast":null,"code":"import _asyncToGenerator from \"F:/workspace/202226701027/huinongbao-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\";\nimport _asyncGeneratorDelegate from \"F:/workspace/202226701027/huinongbao-app/node_modules/@babel/runtime/helpers/esm/asyncGeneratorDelegate.js\";\nimport _awaitAsyncGenerator from \"F:/workspace/202226701027/huinongbao-app/node_modules/@babel/runtime/helpers/esm/awaitAsyncGenerator.js\";\nimport _wrapAsyncGenerator from \"F:/workspace/202226701027/huinongbao-app/node_modules/@babel/runtime/helpers/esm/wrapAsyncGenerator.js\";\nimport _asyncIterator from \"F:/workspace/202226701027/huinongbao-app/node_modules/@babel/runtime/helpers/esm/asyncIterator.js\";\nimport * as uuid from \"uuid\";\nimport { AsyncCaller } from \"./utils/async_caller.js\";\nimport { convertLangChainMessageToExample, isLangChainMessage } from \"./utils/messages.js\";\nimport { getEnvironmentVariable, getLangChainEnvVarsMetadata, getLangSmithEnvironmentVariable, getRuntimeEnvironment } from \"./utils/env.js\";\nimport { __version__ } from \"./index.js\";\nimport { assertUuid } from \"./utils/_uuid.js\";\nimport { warnOnce } from \"./utils/warn.js\";\nimport { isVersionGreaterOrEqual, parsePromptIdentifier } from \"./utils/prompts.js\";\nimport { raiseForStatus } from \"./utils/error.js\";\nimport { _getFetchImplementation } from \"./singletons/fetch.js\";\nimport { stringify as stringifyForTracing } from \"./utils/fast-safe-stringify/index.js\";\nexport function mergeRuntimeEnvIntoRunCreate(run) {\n var _run$extra, _run$revision_id;\n const runtimeEnv = getRuntimeEnvironment();\n const envVars = getLangChainEnvVarsMetadata();\n const extra = (_run$extra = run.extra) !== null && _run$extra !== void 0 ? _run$extra : {};\n const metadata = extra.metadata;\n run.extra = {\n ...extra,\n runtime: {\n ...runtimeEnv,\n ...(extra === null || extra === void 0 ? void 0 : extra.runtime)\n },\n metadata: {\n ...envVars,\n ...(envVars.revision_id || run.revision_id ? {\n revision_id: (_run$revision_id = run.revision_id) !== null && _run$revision_id !== void 0 ? _run$revision_id : envVars.revision_id\n } : {}),\n ...metadata\n }\n };\n return run;\n}\nconst getTracingSamplingRate = () => {\n const samplingRateStr = getLangSmithEnvironmentVariable(\"TRACING_SAMPLING_RATE\");\n if (samplingRateStr === undefined) {\n return undefined;\n }\n const samplingRate = parseFloat(samplingRateStr);\n if (samplingRate < 0 || samplingRate > 1) {\n throw new Error(`LANGSMITH_TRACING_SAMPLING_RATE must be between 0 and 1 if set. Got: ${samplingRate}`);\n }\n return samplingRate;\n};\n// utility functions\nconst isLocalhost = url => {\n const strippedUrl = url.replace(\"http://\", \"\").replace(\"https://\", \"\");\n const hostname = strippedUrl.split(\"/\")[0].split(\":\")[0];\n return hostname === \"localhost\" || hostname === \"127.0.0.1\" || hostname === \"::1\";\n};\nfunction toArray(_x) {\n return _toArray.apply(this, arguments);\n}\nfunction _toArray() {\n _toArray = _asyncToGenerator(function* (iterable) {\n const result = [];\n var _iteratorAbruptCompletion = false;\n var _didIteratorError = false;\n var _iteratorError;\n try {\n for (var _iterator = _asyncIterator(iterable), _step; _iteratorAbruptCompletion = !(_step = yield _iterator.next()).done; _iteratorAbruptCompletion = false) {\n const item = _step.value;\n {\n result.push(item);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (_iteratorAbruptCompletion && _iterator.return != null) {\n yield _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return result;\n });\n return _toArray.apply(this, arguments);\n}\nfunction trimQuotes(str) {\n if (str === undefined) {\n return undefined;\n }\n return str.trim().replace(/^\"(.*)\"$/, \"$1\").replace(/^'(.*)'$/, \"$1\");\n}\nconst handle429 = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(function* (response) {\n if ((response === null || response === void 0 ? void 0 : response.status) === 429) {\n var _response$headers$get;\n const retryAfter = parseInt((_response$headers$get = response.headers.get(\"retry-after\")) !== null && _response$headers$get !== void 0 ? _response$headers$get : \"30\", 10) * 1000;\n if (retryAfter > 0) {\n yield new Promise(resolve => setTimeout(resolve, retryAfter));\n // Return directly after calling this check\n return true;\n }\n }\n // Fall back to existing status checks\n return false;\n });\n return function handle429(_x2) {\n return _ref.apply(this, arguments);\n };\n}();\nexport class AutoBatchQueue {\n constructor() {\n Object.defineProperty(this, \"items\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n Object.defineProperty(this, \"sizeBytes\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n }\n peek() {\n return this.items[0];\n }\n push(item) {\n let itemPromiseResolve;\n const itemPromise = new Promise(resolve => {\n // Setting itemPromiseResolve is synchronous with promise creation:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/Promise\n itemPromiseResolve = resolve;\n });\n const size = stringifyForTracing(item.item).length;\n this.items.push({\n action: item.action,\n payload: item.item,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n itemPromiseResolve: itemPromiseResolve,\n itemPromise,\n size\n });\n this.sizeBytes += size;\n return itemPromise;\n }\n pop(upToSizeBytes) {\n if (upToSizeBytes < 1) {\n throw new Error(\"Number of bytes to pop off may not be less than 1.\");\n }\n const popped = [];\n let poppedSizeBytes = 0;\n // Pop items until we reach or exceed the size limit\n while (poppedSizeBytes + ((_this$peek$size = (_this$peek = this.peek()) === null || _this$peek === void 0 ? void 0 : _this$peek.size) !== null && _this$peek$size !== void 0 ? _this$peek$size : 0) < upToSizeBytes && this.items.length > 0) {\n var _this$peek$size, _this$peek;\n const item = this.items.shift();\n if (item) {\n popped.push(item);\n poppedSizeBytes += item.size;\n this.sizeBytes -= item.size;\n }\n }\n // If there is an item on the queue we were unable to pop,\n // just return it as a single batch.\n if (popped.length === 0 && this.items.length > 0) {\n const item = this.items.shift();\n popped.push(item);\n poppedSizeBytes += item.size;\n this.sizeBytes -= item.size;\n }\n return [popped.map(it => ({\n action: it.action,\n item: it.payload\n })), () => popped.forEach(it => it.itemPromiseResolve())];\n }\n}\n// 20 MB\nexport const DEFAULT_BATCH_SIZE_LIMIT_BYTES = 20_971_520;\nconst SERVER_INFO_REQUEST_TIMEOUT = 1000;\nexport class Client {\n constructor(config = {}) {\n var _trimQuotes, _config$apiUrl, _config$apiKey, _config$webUrl, _this$webUrl, _config$timeout_ms, _config$callerOptions, _config$traceBatchCon, _config$callerOptions2, _ref2, _config$hideInputs, _ref3, _config$hideOutputs, _config$autoBatchTrac, _config$blockOnRootRu;\n Object.defineProperty(this, \"apiKey\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"apiUrl\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"webUrl\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"caller\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"batchIngestCaller\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"timeout_ms\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_tenantId\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n Object.defineProperty(this, \"hideInputs\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"hideOutputs\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"tracingSampleRate\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"filteredPostUuids\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new Set()\n });\n Object.defineProperty(this, \"autoBatchTracing\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: true\n });\n Object.defineProperty(this, \"autoBatchQueue\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new AutoBatchQueue()\n });\n Object.defineProperty(this, \"autoBatchTimeout\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"autoBatchAggregationDelayMs\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 250\n });\n Object.defineProperty(this, \"batchSizeBytesLimit\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"fetchOptions\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"settings\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"blockOnRootRunFinalization\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: getEnvironmentVariable(\"LANGSMITH_TRACING_BACKGROUND\") === \"false\"\n });\n Object.defineProperty(this, \"traceBatchConcurrency\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 5\n });\n Object.defineProperty(this, \"_serverInfo\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Object.defineProperty(this, \"_getServerInfoPromise\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n const defaultConfig = Client.getDefaultClientConfig();\n this.tracingSampleRate = getTracingSamplingRate();\n this.apiUrl = (_trimQuotes = trimQuotes((_config$apiUrl = config.apiUrl) !== null && _config$apiUrl !== void 0 ? _config$apiUrl : defaultConfig.apiUrl)) !== null && _trimQuotes !== void 0 ? _trimQuotes : \"\";\n if (this.apiUrl.endsWith(\"/\")) {\n this.apiUrl = this.apiUrl.slice(0, -1);\n }\n this.apiKey = trimQuotes((_config$apiKey = config.apiKey) !== null && _config$apiKey !== void 0 ? _config$apiKey : defaultConfig.apiKey);\n this.webUrl = trimQuotes((_config$webUrl = config.webUrl) !== null && _config$webUrl !== void 0 ? _config$webUrl : defaultConfig.webUrl);\n if ((_this$webUrl = this.webUrl) !== null && _this$webUrl !== void 0 && _this$webUrl.endsWith(\"/\")) {\n this.webUrl = this.webUrl.slice(0, -1);\n }\n this.timeout_ms = (_config$timeout_ms = config.timeout_ms) !== null && _config$timeout_ms !== void 0 ? _config$timeout_ms : 90_000;\n this.caller = new AsyncCaller((_config$callerOptions = config.callerOptions) !== null && _config$callerOptions !== void 0 ? _config$callerOptions : {});\n this.traceBatchConcurrency = (_config$traceBatchCon = config.traceBatchConcurrency) !== null && _config$traceBatchCon !== void 0 ? _config$traceBatchCon : this.traceBatchConcurrency;\n if (this.traceBatchConcurrency < 1) {\n throw new Error(\"Trace batch concurrency must be positive.\");\n }\n this.batchIngestCaller = new AsyncCaller({\n maxRetries: 2,\n maxConcurrency: this.traceBatchConcurrency,\n ...((_config$callerOptions2 = config.callerOptions) !== null && _config$callerOptions2 !== void 0 ? _config$callerOptions2 : {}),\n onFailedResponseHook: handle429\n });\n this.hideInputs = (_ref2 = (_config$hideInputs = config.hideInputs) !== null && _config$hideInputs !== void 0 ? _config$hideInputs : config.anonymizer) !== null && _ref2 !== void 0 ? _ref2 : defaultConfig.hideInputs;\n this.hideOutputs = (_ref3 = (_config$hideOutputs = config.hideOutputs) !== null && _config$hideOutputs !== void 0 ? _config$hideOutputs : config.anonymizer) !== null && _ref3 !== void 0 ? _ref3 : defaultConfig.hideOutputs;\n this.autoBatchTracing = (_config$autoBatchTrac = config.autoBatchTracing) !== null && _config$autoBatchTrac !== void 0 ? _config$autoBatchTrac : this.autoBatchTracing;\n this.blockOnRootRunFinalization = (_config$blockOnRootRu = config.blockOnRootRunFinalization) !== null && _config$blockOnRootRu !== void 0 ? _config$blockOnRootRu : this.blockOnRootRunFinalization;\n this.batchSizeBytesLimit = config.batchSizeBytesLimit;\n this.fetchOptions = config.fetchOptions || {};\n }\n static getDefaultClientConfig() {\n var _getLangSmithEnvironm;\n const apiKey = getLangSmithEnvironmentVariable(\"API_KEY\");\n const apiUrl = (_getLangSmithEnvironm = getLangSmithEnvironmentVariable(\"ENDPOINT\")) !== null && _getLangSmithEnvironm !== void 0 ? _getLangSmithEnvironm : \"https://api.smith.langchain.com\";\n const hideInputs = getLangSmithEnvironmentVariable(\"HIDE_INPUTS\") === \"true\";\n const hideOutputs = getLangSmithEnvironmentVariable(\"HIDE_OUTPUTS\") === \"true\";\n return {\n apiUrl: apiUrl,\n apiKey: apiKey,\n webUrl: undefined,\n hideInputs: hideInputs,\n hideOutputs: hideOutputs\n };\n }\n getHostUrl() {\n if (this.webUrl) {\n return this.webUrl;\n } else if (isLocalhost(this.apiUrl)) {\n this.webUrl = \"http://localhost:3000\";\n return this.webUrl;\n } else if (this.apiUrl.includes(\"/api\") && !this.apiUrl.split(\".\", 1)[0].endsWith(\"api\")) {\n this.webUrl = this.apiUrl.replace(\"/api\", \"\");\n return this.webUrl;\n } else if (this.apiUrl.split(\".\", 1)[0].includes(\"dev\")) {\n this.webUrl = \"https://dev.smith.langchain.com\";\n return this.webUrl;\n } else if (this.apiUrl.split(\".\", 1)[0].includes(\"eu\")) {\n this.webUrl = \"https://eu.smith.langchain.com\";\n return this.webUrl;\n } else {\n this.webUrl = \"https://smith.langchain.com\";\n return this.webUrl;\n }\n }\n get headers() {\n const headers = {\n \"User-Agent\": `langsmith-js/${__version__}`\n };\n if (this.apiKey) {\n headers[\"x-api-key\"] = `${this.apiKey}`;\n }\n return headers;\n }\n processInputs(inputs) {\n if (this.hideInputs === false) {\n return inputs;\n }\n if (this.hideInputs === true) {\n return {};\n }\n if (typeof this.hideInputs === \"function\") {\n return this.hideInputs(inputs);\n }\n return inputs;\n }\n processOutputs(outputs) {\n if (this.hideOutputs === false) {\n return outputs;\n }\n if (this.hideOutputs === true) {\n return {};\n }\n if (typeof this.hideOutputs === \"function\") {\n return this.hideOutputs(outputs);\n }\n return outputs;\n }\n prepareRunCreateOrUpdateInputs(run) {\n const runParams = {\n ...run\n };\n if (runParams.inputs !== undefined) {\n runParams.inputs = this.processInputs(runParams.inputs);\n }\n if (runParams.outputs !== undefined) {\n runParams.outputs = this.processOutputs(runParams.outputs);\n }\n return runParams;\n }\n _getResponse(path, queryParams) {\n var _this12 = this;\n return _asyncToGenerator(function* () {\n var _queryParams$toString;\n const paramsString = (_queryParams$toString = queryParams === null || queryParams === void 0 ? void 0 : queryParams.toString()) !== null && _queryParams$toString !== void 0 ? _queryParams$toString : \"\";\n const url = `${_this12.apiUrl}${path}?${paramsString}`;\n const response = yield _this12.caller.call(_getFetchImplementation(), url, {\n method: \"GET\",\n headers: _this12.headers,\n signal: AbortSignal.timeout(_this12.timeout_ms),\n ..._this12.fetchOptions\n });\n yield raiseForStatus(response, `Failed to fetch ${path}`);\n return response;\n })();\n }\n _get(path, queryParams) {\n var _this13 = this;\n return _asyncToGenerator(function* () {\n const response = yield _this13._getResponse(path, queryParams);\n return response.json();\n })();\n }\n _getPaginated(path, queryParams = new URLSearchParams(), transform) {\n var _this = this;\n return _wrapAsyncGenerator(function* () {\n let offset = Number(queryParams.get(\"offset\")) || 0;\n const limit = Number(queryParams.get(\"limit\")) || 100;\n while (true) {\n queryParams.set(\"offset\", String(offset));\n queryParams.set(\"limit\", String(limit));\n const url = `${_this.apiUrl}${path}?${queryParams}`;\n const response = yield _awaitAsyncGenerator(_this.caller.call(_getFetchImplementation(), url, {\n method: \"GET\",\n headers: _this.headers,\n signal: AbortSignal.timeout(_this.timeout_ms),\n ..._this.fetchOptions\n }));\n yield _awaitAsyncGenerator(raiseForStatus(response, `Failed to fetch ${path}`));\n const items = transform ? transform(yield _awaitAsyncGenerator(response.json())) : yield _awaitAsyncGenerator(response.json());\n if (items.length === 0) {\n break;\n }\n yield items;\n if (items.length < limit) {\n break;\n }\n offset += items.length;\n }\n })();\n }\n _getCursorPaginatedList(path, body = null, requestMethod = \"POST\", dataKey = \"runs\") {\n var _this2 = this;\n return _wrapAsyncGenerator(function* () {\n const bodyParams = body ? {\n ...body\n } : {};\n while (true) {\n const response = yield _awaitAsyncGenerator(_this2.caller.call(_getFetchImplementation(), `${_this2.apiUrl}${path}`, {\n method: requestMethod,\n headers: {\n ..._this2.headers,\n \"Content-Type\": \"application/json\"\n },\n signal: AbortSignal.timeout(_this2.timeout_ms),\n ..._this2.fetchOptions,\n body: JSON.stringify(bodyParams)\n }));\n const responseBody = yield _awaitAsyncGenerator(response.json());\n if (!responseBody) {\n break;\n }\n if (!responseBody[dataKey]) {\n break;\n }\n yield responseBody[dataKey];\n const cursors = responseBody.cursors;\n if (!cursors) {\n break;\n }\n if (!cursors.next) {\n break;\n }\n bodyParams.cursor = cursors.next;\n }\n })();\n }\n _filterForSampling(runs, patch = false) {\n if (this.tracingSampleRate === undefined) {\n return runs;\n }\n if (patch) {\n const sampled = [];\n for (const run of runs) {\n if (!this.filteredPostUuids.has(run.id)) {\n sampled.push(run);\n } else {\n this.filteredPostUuids.delete(run.id);\n }\n }\n return sampled;\n } else {\n const sampled = [];\n for (const run of runs) {\n if (run.id !== run.trace_id && !this.filteredPostUuids.has(run.trace_id) || Math.random() < this.tracingSampleRate) {\n sampled.push(run);\n } else {\n this.filteredPostUuids.add(run.id);\n }\n }\n return sampled;\n }\n }\n _getBatchSizeLimitBytes() {\n var _this14 = this;\n return _asyncToGenerator(function* () {\n var _ref4, _this14$batchSizeByte, _serverInfo$batch_ing;\n const serverInfo = yield _this14._ensureServerInfo();\n return (_ref4 = (_this14$batchSizeByte = _this14.batchSizeBytesLimit) !== null && _this14$batchSizeByte !== void 0 ? _this14$batchSizeByte : (_serverInfo$batch_ing = serverInfo.batch_ingest_config) === null || _serverInfo$batch_ing === void 0 ? void 0 : _serverInfo$batch_ing.size_limit_bytes) !== null && _ref4 !== void 0 ? _ref4 : DEFAULT_BATCH_SIZE_LIMIT_BYTES;\n })();\n }\n drainAutoBatchQueue(batchSizeLimit) {\n while (this.autoBatchQueue.items.length > 0) {\n const [batch, done] = this.autoBatchQueue.pop(batchSizeLimit);\n if (!batch.length) {\n done();\n break;\n }\n void this._processBatch(batch, done).catch(console.error);\n }\n }\n _processBatch(batch, done) {\n var _this15 = this;\n return _asyncToGenerator(function* () {\n if (!batch.length) {\n done();\n return;\n }\n try {\n var _serverInfo$batch_ing2;\n const ingestParams = {\n runCreates: batch.filter(item => item.action === \"create\").map(item => item.item),\n runUpdates: batch.filter(item => item.action === \"update\").map(item => item.item)\n };\n const serverInfo = yield _this15._ensureServerInfo();\n if (serverInfo !== null && serverInfo !== void 0 && (_serverInfo$batch_ing2 = serverInfo.batch_ingest_config) !== null && _serverInfo$batch_ing2 !== void 0 && _serverInfo$batch_ing2.use_multipart_endpoint) {\n yield _this15.multipartIngestRuns(ingestParams);\n } else {\n yield _this15.batchIngestRuns(ingestParams);\n }\n } finally {\n done();\n }\n })();\n }\n processRunOperation(item) {\n var _this16 = this;\n return _asyncToGenerator(function* () {\n clearTimeout(_this16.autoBatchTimeout);\n _this16.autoBatchTimeout = undefined;\n if (item.action === \"create\") {\n item.item = mergeRuntimeEnvIntoRunCreate(item.item);\n }\n const itemPromise = _this16.autoBatchQueue.push(item);\n const sizeLimitBytes = yield _this16._getBatchSizeLimitBytes();\n if (_this16.autoBatchQueue.sizeBytes > sizeLimitBytes) {\n _this16.drainAutoBatchQueue(sizeLimitBytes);\n }\n if (_this16.autoBatchQueue.items.length > 0) {\n _this16.autoBatchTimeout = setTimeout(() => {\n _this16.autoBatchTimeout = undefined;\n _this16.drainAutoBatchQueue(sizeLimitBytes);\n }, _this16.autoBatchAggregationDelayMs);\n }\n return itemPromise;\n })();\n }\n _getServerInfo() {\n var _this17 = this;\n return _asyncToGenerator(function* () {\n const response = yield _getFetchImplementation()(`${_this17.apiUrl}/info`, {\n method: \"GET\",\n headers: {\n Accept: \"application/json\"\n },\n signal: AbortSignal.timeout(SERVER_INFO_REQUEST_TIMEOUT),\n ..._this17.fetchOptions\n });\n yield raiseForStatus(response, \"get server info\");\n return response.json();\n })();\n }\n _ensureServerInfo() {\n var _this18 = this;\n return _asyncToGenerator(function* () {\n if (_this18._getServerInfoPromise === undefined) {\n _this18._getServerInfoPromise = _asyncToGenerator(function* () {\n var _this18$_serverInfo;\n if (_this18._serverInfo === undefined) {\n try {\n _this18._serverInfo = yield _this18._getServerInfo();\n } catch (e) {\n console.warn(`[WARNING]: LangSmith failed to fetch info on supported operations. Falling back to batch operations and default limits.`);\n }\n }\n return (_this18$_serverInfo = _this18._serverInfo) !== null && _this18$_serverInfo !== void 0 ? _this18$_serverInfo : {};\n })();\n }\n return _this18._getServerInfoPromise.then(serverInfo => {\n if (_this18._serverInfo === undefined) {\n _this18._getServerInfoPromise = undefined;\n }\n return serverInfo;\n });\n })();\n }\n _getSettings() {\n var _this19 = this;\n return _asyncToGenerator(function* () {\n if (!_this19.settings) {\n _this19.settings = _this19._get(\"/settings\");\n }\n return yield _this19.settings;\n })();\n }\n createRun(run) {\n var _this20 = this;\n return _asyncToGenerator(function* () {\n var _run$start_time;\n if (!_this20._filterForSampling([run]).length) {\n return;\n }\n const headers = {\n ..._this20.headers,\n \"Content-Type\": \"application/json\"\n };\n const session_name = run.project_name;\n delete run.project_name;\n const runCreate = _this20.prepareRunCreateOrUpdateInputs({\n session_name,\n ...run,\n start_time: (_run$start_time = run.start_time) !== null && _run$start_time !== void 0 ? _run$start_time : Date.now()\n });\n if (_this20.autoBatchTracing && runCreate.trace_id !== undefined && runCreate.dotted_order !== undefined) {\n void _this20.processRunOperation({\n action: \"create\",\n item: runCreate\n }).catch(console.error);\n return;\n }\n const mergedRunCreateParam = mergeRuntimeEnvIntoRunCreate(runCreate);\n const response = yield _this20.caller.call(_getFetchImplementation(), `${_this20.apiUrl}/runs`, {\n method: \"POST\",\n headers,\n body: stringifyForTracing(mergedRunCreateParam),\n signal: AbortSignal.timeout(_this20.timeout_ms),\n ..._this20.fetchOptions\n });\n yield raiseForStatus(response, \"create run\", true);\n })();\n }\n /**\n * Batch ingest/upsert multiple runs in the Langsmith system.\n * @param runs\n */\n batchIngestRuns({\n runCreates,\n runUpdates\n }) {\n var _this21 = this;\n return _asyncToGenerator(function* () {\n var _runCreates$map, _runUpdates$map;\n if (runCreates === undefined && runUpdates === undefined) {\n return;\n }\n let preparedCreateParams = (_runCreates$map = runCreates === null || runCreates === void 0 ? void 0 : runCreates.map(create => _this21.prepareRunCreateOrUpdateInputs(create))) !== null && _runCreates$map !== void 0 ? _runCreates$map : [];\n let preparedUpdateParams = (_runUpdates$map = runUpdates === null || runUpdates === void 0 ? void 0 : runUpdates.map(update => _this21.prepareRunCreateOrUpdateInputs(update))) !== null && _runUpdates$map !== void 0 ? _runUpdates$map : [];\n if (preparedCreateParams.length > 0 && preparedUpdateParams.length > 0) {\n const createById = preparedCreateParams.reduce((params, run) => {\n if (!run.id) {\n return params;\n }\n params[run.id] = run;\n return params;\n }, {});\n const standaloneUpdates = [];\n for (const updateParam of preparedUpdateParams) {\n if (updateParam.id !== undefined && createById[updateParam.id]) {\n createById[updateParam.id] = {\n ...createById[updateParam.id],\n ...updateParam\n };\n } else {\n standaloneUpdates.push(updateParam);\n }\n }\n preparedCreateParams = Object.values(createById);\n preparedUpdateParams = standaloneUpdates;\n }\n const rawBatch = {\n post: _this21._filterForSampling(preparedCreateParams),\n patch: _this21._filterForSampling(preparedUpdateParams, true)\n };\n if (!rawBatch.post.length && !rawBatch.patch.length) {\n return;\n }\n const batchChunks = {\n post: [],\n patch: []\n };\n for (const k of [\"post\", \"patch\"]) {\n const key = k;\n const batchItems = rawBatch[key].reverse();\n let batchItem = batchItems.pop();\n while (batchItem !== undefined) {\n batchChunks[key].push(batchItem);\n batchItem = batchItems.pop();\n }\n }\n if (batchChunks.post.length > 0 || batchChunks.patch.length > 0) {\n yield _this21._postBatchIngestRuns(stringifyForTracing(batchChunks));\n }\n })();\n }\n _postBatchIngestRuns(body) {\n var _this22 = this;\n return _asyncToGenerator(function* () {\n const headers = {\n ..._this22.headers,\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\"\n };\n const response = yield _this22.batchIngestCaller.call(_getFetchImplementation(), `${_this22.apiUrl}/runs/batch`, {\n method: \"POST\",\n headers,\n body: body,\n signal: AbortSignal.timeout(_this22.timeout_ms),\n ..._this22.fetchOptions\n });\n yield raiseForStatus(response, \"batch create run\", true);\n })();\n }\n /**\n * Batch ingest/upsert multiple runs in the Langsmith system.\n * @param runs\n */\n multipartIngestRuns({\n runCreates,\n runUpdates\n }) {\n var _this23 = this;\n return _asyncToGenerator(function* () {\n if (runCreates === undefined && runUpdates === undefined) {\n return;\n }\n // transform and convert to dicts\n const allAttachments = {};\n let preparedCreateParams = [];\n for (const create of runCreates !== null && runCreates !== void 0 ? runCreates : []) {\n const preparedCreate = _this23.prepareRunCreateOrUpdateInputs(create);\n if (preparedCreate.id !== undefined && preparedCreate.attachments !== undefined) {\n allAttachments[preparedCreate.id] = preparedCreate.attachments;\n }\n delete preparedCreate.attachments;\n preparedCreateParams.push(preparedCreate);\n }\n let preparedUpdateParams = [];\n for (const update of runUpdates !== null && runUpdates !== void 0 ? runUpdates : []) {\n preparedUpdateParams.push(_this23.prepareRunCreateOrUpdateInputs(update));\n }\n // require trace_id and dotted_order\n const invalidRunCreate = preparedCreateParams.find(runCreate => {\n return runCreate.trace_id === undefined || runCreate.dotted_order === undefined;\n });\n if (invalidRunCreate !== undefined) {\n throw new Error(`Multipart ingest requires \"trace_id\" and \"dotted_order\" to be set when creating a run`);\n }\n const invalidRunUpdate = preparedUpdateParams.find(runUpdate => {\n return runUpdate.trace_id === undefined || runUpdate.dotted_order === undefined;\n });\n if (invalidRunUpdate !== undefined) {\n throw new Error(`Multipart ingest requires \"trace_id\" and \"dotted_order\" to be set when updating a run`);\n }\n // combine post and patch dicts where possible\n if (preparedCreateParams.length > 0 && preparedUpdateParams.length > 0) {\n const createById = preparedCreateParams.reduce((params, run) => {\n if (!run.id) {\n return params;\n }\n params[run.id] = run;\n return params;\n }, {});\n const standaloneUpdates = [];\n for (const updateParam of preparedUpdateParams) {\n if (updateParam.id !== undefined && createById[updateParam.id]) {\n createById[updateParam.id] = {\n ...createById[updateParam.id],\n ...updateParam\n };\n } else {\n standaloneUpdates.push(updateParam);\n }\n }\n preparedCreateParams = Object.values(createById);\n preparedUpdateParams = standaloneUpdates;\n }\n if (preparedCreateParams.length === 0 && preparedUpdateParams.length === 0) {\n return;\n }\n // send the runs in multipart requests\n const accumulatedContext = [];\n const accumulatedParts = [];\n for (const [method, payloads] of [[\"post\", preparedCreateParams], [\"patch\", preparedUpdateParams]]) {\n for (const originalPayload of payloads) {\n // collect fields to be sent as separate parts\n const {\n inputs,\n outputs,\n events,\n attachments,\n ...payload\n } = originalPayload;\n const fields = {\n inputs,\n outputs,\n events\n };\n // encode the main run payload\n const stringifiedPayload = stringifyForTracing(payload);\n accumulatedParts.push({\n name: `${method}.${payload.id}`,\n payload: new Blob([stringifiedPayload], {\n type: `application/json; length=${stringifiedPayload.length}` // encoding=gzip\n })\n });\n // encode the fields we collected\n for (const [key, value] of Object.entries(fields)) {\n if (value === undefined) {\n continue;\n }\n const stringifiedValue = stringifyForTracing(value);\n accumulatedParts.push({\n name: `${method}.${payload.id}.${key}`,\n payload: new Blob([stringifiedValue], {\n type: `application/json; length=${stringifiedValue.length}`\n })\n });\n }\n // encode the attachments\n if (payload.id !== undefined) {\n const attachments = allAttachments[payload.id];\n if (attachments) {\n delete allAttachments[payload.id];\n for (const [name, [contentType, content]] of Object.entries(attachments)) {\n // Validate that the attachment name doesn't contain a '.'\n if (name.includes(\".\")) {\n console.warn(`Skipping attachment '${name}' for run ${payload.id}: Invalid attachment name. ` + `Attachment names must not contain periods ('.'). Please rename the attachment and try again.`);\n continue;\n }\n accumulatedParts.push({\n name: `attachment.${payload.id}.${name}`,\n payload: new Blob([content], {\n type: `${contentType}; length=${content.byteLength}`\n })\n });\n }\n }\n }\n // compute context\n accumulatedContext.push(`trace=${payload.trace_id},id=${payload.id}`);\n }\n }\n yield _this23._sendMultipartRequest(accumulatedParts, accumulatedContext.join(\"; \"));\n })();\n }\n _sendMultipartRequest(parts, context) {\n var _this24 = this;\n return _asyncToGenerator(function* () {\n try {\n // Create multipart form data manually using Blobs\n const boundary = \"----LangSmithFormBoundary\" + Math.random().toString(36).slice(2);\n const chunks = [];\n for (const part of parts) {\n // Add field boundary\n chunks.push(new Blob([`--${boundary}\\r\\n`]));\n chunks.push(new Blob([`Content-Disposition: form-data; name=\"${part.name}\"\\r\\n`, `Content-Type: ${part.payload.type}\\r\\n\\r\\n`]));\n chunks.push(part.payload);\n chunks.push(new Blob([\"\\r\\n\"]));\n }\n // Add final boundary\n chunks.push(new Blob([`--${boundary}--\\r\\n`]));\n // Combine all chunks into a single Blob\n const body = new Blob(chunks);\n // Convert Blob to ArrayBuffer for compatibility\n const arrayBuffer = yield body.arrayBuffer();\n const res = yield _this24.batchIngestCaller.call(_getFetchImplementation(), `${_this24.apiUrl}/runs/multipart`, {\n method: \"POST\",\n headers: {\n ..._this24.headers,\n \"Content-Type\": `multipart/form-data; boundary=${boundary}`\n },\n body: arrayBuffer,\n signal: AbortSignal.timeout(_this24.timeout_ms),\n ..._this24.fetchOptions\n });\n yield raiseForStatus(res, \"ingest multipart runs\", true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (e) {\n console.warn(`${e.message.trim()}\\n\\nContext: ${context}`);\n }\n })();\n }\n updateRun(runId, run) {\n var _this25 = this;\n return _asyncToGenerator(function* () {\n assertUuid(runId);\n if (run.inputs) {\n run.inputs = _this25.processInputs(run.inputs);\n }\n if (run.outputs) {\n run.outputs = _this25.processOutputs(run.outputs);\n }\n // TODO: Untangle types\n const data = {\n ...run,\n id: runId\n };\n if (!_this25._filterForSampling([data], true).length) {\n return;\n }\n if (_this25.autoBatchTracing && data.trace_id !== undefined && data.dotted_order !== undefined) {\n if (run.end_time !== undefined && data.parent_run_id === undefined && _this25.blockOnRootRunFinalization) {\n // Trigger batches as soon as a root trace ends and wait to ensure trace finishes\n // in serverless environments.\n yield _this25.processRunOperation({\n action: \"update\",\n item: data\n }).catch(console.error);\n return;\n } else {\n void _this25.processRunOperation({\n action: \"update\",\n item: data\n }).catch(console.error);\n }\n return;\n }\n const headers = {\n ..._this25.headers,\n \"Content-Type\": \"application/json\"\n };\n const response = yield _this25.caller.call(_getFetchImplementation(), `${_this25.apiUrl}/runs/${runId}`, {\n method: \"PATCH\",\n headers,\n body: stringifyForTracing(run),\n signal: AbortSignal.timeout(_this25.timeout_ms),\n ..._this25.fetchOptions\n });\n yield raiseForStatus(response, \"update run\", true);\n })();\n }\n readRun(runId, {\n loadChildRuns\n } = {\n loadChildRuns: false\n }) {\n var _this26 = this;\n return _asyncToGenerator(function* () {\n assertUuid(runId);\n let run = yield _this26._get(`/runs/${runId}`);\n if (loadChildRuns && run.child_run_ids) {\n run = yield _this26._loadChildRuns(run);\n }\n return run;\n })();\n }\n getRunUrl({\n runId,\n run,\n projectOpts\n }) {\n var _this27 = this;\n return _asyncToGenerator(function* () {\n if (run !== undefined) {\n let sessionId;\n if (run.session_id) {\n sessionId = run.session_id;\n } else if (projectOpts !== null && projectOpts !== void 0 && projectOpts.projectName) {\n sessionId = (yield _this27.readProject({\n projectName: projectOpts === null || projectOpts === void 0 ? void 0 : projectOpts.projectName\n })).id;\n } else if (projectOpts !== null && projectOpts !== void 0 && projectOpts.projectId) {\n sessionId = projectOpts === null || projectOpts === void 0 ? void 0 : projectOpts.projectId;\n } else {\n const project = yield _this27.readProject({\n projectName: getLangSmithEnvironmentVariable(\"PROJECT\") || \"default\"\n });\n sessionId = project.id;\n }\n const tenantId = yield _this27._getTenantId();\n return `${_this27.getHostUrl()}/o/${tenantId}/projects/p/${sessionId}/r/${run.id}?poll=true`;\n } else if (runId !== undefined) {\n const run_ = yield _this27.readRun(runId);\n if (!run_.app_path) {\n throw new Error(`Run ${runId} has no app_path`);\n }\n const baseUrl = _this27.getHostUrl();\n return `${baseUrl}${run_.app_path}`;\n } else {\n throw new Error(\"Must provide either runId or run\");\n }\n })();\n }\n _loadChildRuns(run) {\n var _this28 = this;\n return _asyncToGenerator(function* () {\n const childRuns = yield toArray(_this28.listRuns({\n id: run.child_run_ids\n }));\n const treemap = {};\n const runs = {};\n // TODO: make dotted order required when the migration finishes\n childRuns.sort((a, b) => {\n var _a$dotted_order, _b$dotted_order;\n return ((_a$dotted_order = a === null || a === void 0 ? void 0 : a.dotted_order) !== null && _a$dotted_order !== void 0 ? _a$dotted_order : \"\").localeCompare((_b$dotted_order = b === null || b === void 0 ? void 0 : b.dotted_order) !== null && _b$dotted_order !== void 0 ? _b$dotted_order : \"\");\n });\n for (const childRun of childRuns) {\n if (childRun.parent_run_id === null || childRun.parent_run_id === undefined) {\n throw new Error(`Child run ${childRun.id} has no parent`);\n }\n if (!(childRun.parent_run_id in treemap)) {\n treemap[childRun.parent_run_id] = [];\n }\n treemap[childRun.parent_run_id].push(childRun);\n runs[childRun.id] = childRun;\n }\n run.child_runs = treemap[run.id] || [];\n for (const runId in treemap) {\n if (runId !== run.id) {\n runs[runId].child_runs = treemap[runId];\n }\n }\n return run;\n })();\n }\n /**\n * List runs from the LangSmith server.\n * @param projectId - The ID of the project to filter by.\n * @param projectName - The name of the project to filter by.\n * @param parentRunId - The ID of the parent run to filter by.\n * @param traceId - The ID of the trace to filter by.\n * @param referenceExampleId - The ID of the reference example to filter by.\n * @param startTime - The start time to filter by.\n * @param isRoot - Indicates whether to only return root runs.\n * @param runType - The run type to filter by.\n * @param error - Indicates whether to filter by error runs.\n * @param id - The ID of the run to filter by.\n * @param query - The query string to filter by.\n * @param filter - The filter string to apply to the run spans.\n * @param traceFilter - The filter string to apply on the root run of the trace.\n * @param limit - The maximum number of runs to retrieve.\n * @returns {AsyncIterable<Run>} - The runs.\n *\n * @example\n * // List all runs in a project\n * const projectRuns = client.listRuns({ projectName: \"<your_project>\" });\n *\n * @example\n * // List LLM and Chat runs in the last 24 hours\n * const todaysLLMRuns = client.listRuns({\n * projectName: \"<your_project>\",\n * start_time: new Date(Date.now() - 24 * 60 * 60 * 1000),\n * run_type: \"llm\",\n * });\n *\n * @example\n * // List traces in a project\n * const rootRuns = client.listRuns({\n * projectName: \"<your_project>\",\n * execution_order: 1,\n * });\n *\n * @example\n * // List runs without errors\n * const correctRuns = client.listRuns({\n * projectName: \"<your_project>\",\n * error: false,\n * });\n *\n * @example\n * // List runs by run ID\n * const runIds = [\n * \"a36092d2-4ad5-4fb4-9c0d-0dba9a2ed836\",\n * \"9398e6be-964f-4aa4-8ae9-ad78cd4b7074\",\n * ];\n * const selectedRuns = client.listRuns({ run_ids: runIds });\n *\n * @example\n * // List all \"chain\" type runs that took more than 10 seconds and had `total_tokens` greater than 5000\n * const chainRuns = client.listRuns({\n * projectName: \"<your_project>\",\n * filter: 'and(eq(run_type, \"chain\"), gt(latency, 10), gt(total_tokens, 5000))',\n * });\n *\n * @example\n * // List all runs called \"extractor\" whose root of the trace was assigned feedback \"user_score\" score of 1\n * const goodExtractorRuns = client.listRuns({\n * projectName: \"<your_project>\",\n * filter: 'eq(name, \"extractor\")',\n * traceFilter: 'and(eq(feedback_key, \"user_score\"), eq(feedback_score, 1))',\n * });\n *\n * @example\n * // List all runs that started after a specific timestamp and either have \"error\" not equal to null or a \"Correctness\" feedback score equal to 0\n * const complexRuns = client.listRuns({\n * projectName: \"<your_project>\",\n * filter: 'and(gt(start_time, \"2023-07-15T12:34:56Z\"), or(neq(error, null), and(eq(feedback_key, \"Correctness\"), eq(feedback_score, 0.0))))',\n * });\n *\n * @example\n * // List all runs where `tags` include \"experimental\" or \"beta\" and `latency` is greater than 2 seconds\n * const taggedRuns = client.listRuns({\n * projectName: \"<your_project>\",\n * filter: 'and(or(has(tags, \"experimental\"), has(tags, \"beta\")), gt(latency, 2))',\n * });\n */\n listRuns(props) {\n var _this3 = this;\n return _wrapAsyncGenerator(function* () {\n const {\n projectId,\n projectName,\n parentRunId,\n traceId,\n referenceExampleId,\n startTime,\n executionOrder,\n isRoot,\n runType,\n error,\n id,\n query,\n filter,\n traceFilter,\n treeFilter,\n limit,\n select\n } = props;\n let projectIds = [];\n if (projectId) {\n projectIds = Array.isArray(projectId) ? projectId : [projectId];\n }\n if (projectName) {\n const projectNames = Array.isArray(projectName) ? projectName : [projectName];\n const projectIds_ = yield _awaitAsyncGenerator(Promise.all(projectNames.map(name => _this3.readProject({\n projectName: name\n }).then(project => project.id))));\n projectIds.push(...projectIds_);\n }\n const default_select = [\"app_path\", \"child_run_ids\", \"completion_cost\", \"completion_tokens\", \"dotted_order\", \"end_time\", \"error\", \"events\", \"extra\", \"feedback_stats\", \"first_token_time\", \"id\", \"inputs\", \"name\", \"outputs\", \"parent_run_id\", \"parent_run_ids\", \"prompt_cost\", \"prompt_tokens\", \"reference_example_id\", \"run_type\", \"session_id\", \"start_time\", \"status\", \"tags\", \"total_cost\", \"total_tokens\", \"trace_id\"];\n const body = {\n session: projectIds.length ? projectIds : null,\n run_type: runType,\n reference_example: referenceExampleId,\n query,\n filter,\n trace_filter: traceFilter,\n tree_filter: treeFilter,\n execution_order: executionOrder,\n parent_run: parentRunId,\n start_time: startTime ? startTime.toISOString() : null,\n error,\n id,\n limit,\n trace: traceId,\n select: select ? select : default_select,\n is_root: isRoot\n };\n let runsYielded = 0;\n var _iteratorAbruptCompletion2 = false;\n var _didIteratorError2 = false;\n var _iteratorError2;\n try {\n for (var _iterator2 = _asyncIterator(_this3._getCursorPaginatedList(\"/runs/query\", body)), _step2; _iteratorAbruptCompletion2 = !(_step2 = yield _awaitAsyncGenerator(_iterator2.next())).done; _iteratorAbruptCompletion2 = false) {\n const runs = _step2.value;\n {\n if (limit) {\n if (runsYielded >= limit) {\n break;\n }\n if (runs.length + runsYielded > limit) {\n const newRuns = runs.slice(0, limit - runsYielded);\n yield* _asyncGeneratorDelegate(_asyncIterator(newRuns), _awaitAsyncGenerator);\n break;\n }\n runsYielded += runs.length;\n yield* _asyncGeneratorDelegate(_asyncIterator(runs), _awaitAsyncGenerator);\n } else {\n yield* _asyncGeneratorDelegate(_asyncIterator(runs), _awaitAsyncGenerator);\n }\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (_iteratorAbruptCompletion2 && _iterator2.return != null) {\n yield _awaitAsyncGenerator(_iterator2.return());\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n })();\n }\n getRunStats({\n id,\n trace,\n parentRun,\n runType,\n projectNames,\n projectIds,\n referenceExampleIds,\n startTime,\n endTime,\n error,\n query,\n filter,\n traceFilter,\n treeFilter,\n isRoot,\n dataSourceType\n }) {\n var _this29 = this;\n return _asyncToGenerator(function* () {\n let projectIds_ = projectIds || [];\n if (projectNames) {\n projectIds_ = [...(projectIds || []), ...(yield Promise.all(projectNames.map(name => _this29.readProject({\n projectName: name\n }).then(project => project.id))))];\n }\n const payload = {\n id,\n trace,\n parent_run: parentRun,\n run_type: runType,\n session: projectIds_,\n reference_example: referenceExampleIds,\n start_time: startTime,\n end_time: endTime,\n error,\n query,\n filter,\n trace_filter: traceFilter,\n tree_filter: treeFilter,\n is_root: isRoot,\n data_source_type: dataSourceType\n };\n // Remove undefined values from the payload\n const filteredPayload = Object.fromEntries(Object.entries(payload).filter(([_, value]) => value !== undefined));\n const response = yield _this29.caller.call(_getFetchImplementation(), `${_this29.apiUrl}/runs/stats`, {\n method: \"POST\",\n headers: _this29.headers,\n body: JSON.stringify(filteredPayload),\n signal: AbortSignal.timeout(_this29.timeout_ms),\n ..._this29.fetchOptions\n });\n const result = yield response.json();\n return result;\n })();\n }\n shareRun(runId, {\n shareId\n } = {}) {\n var _this30 = this;\n return _asyncToGenerator(function* () {\n const data = {\n run_id: runId,\n share_token: shareId || uuid.v4()\n };\n assertUuid(runId);\n const response = yield _this30.caller.call(_getFetchImplementation(), `${_this30.apiUrl}/runs/${runId}/share`, {\n method: \"PUT\",\n headers: _this30.headers,\n body: JSON.stringify(data),\n signal: AbortSignal.timeout(_this30.timeout_ms),\n ..._this30.fetchOptions\n });\n const result = yield response.json();\n if (result === null || !(\"share_token\" in result)) {\n throw new Error(\"Invalid response from server\");\n }\n return `${_this30.getHostUrl()}/public/${result[\"share_token\"]}/r`;\n })();\n }\n unshareRun(runId) {\n var _this31 = this;\n return _asyncToGenerator(function* () {\n assertUuid(runId);\n const response = yield _this31.caller.call(_getFetchImplementation(), `${_this31.apiUrl}/runs/${runId}/share`, {\n method: \"DELETE\",\n headers: _this31.headers,\n signal: AbortSignal.timeout(_this31.timeout_ms),\n ..._this31.fetchOptions\n });\n yield raiseForStatus(response, \"unshare run\", true);\n })();\n }\n readRunSharedLink(runId) {\n var _this32 = this;\n return _asyncToGenerator(function* () {\n assertUuid(runId);\n const response = yield _this32.caller.call(_getFetchImplementation(), `${_this32.apiUrl}/runs/${runId}/share`, {\n method: \"GET\",\n headers: _this32.headers,\n signal: AbortSignal.timeout(_this32.timeout_ms),\n ..._this32.fetchOptions\n });\n const result = yield response.json();\n if (result === null || !(\"share_token\" in result)) {\n return undefined;\n }\n return `${_this32.getHostUrl()}/public/${result[\"share_token\"]}/r`;\n })();\n }\n listSharedRuns(shareToken, {\n runIds\n } = {}) {\n var _this33 = this;\n return _asyncToGenerator(function* () {\n const queryParams = new URLSearchParams({\n share_token: shareToken\n });\n if (runIds !== undefined) {\n for (const runId of runIds) {\n queryParams.append(\"id\", runId);\n }\n }\n assertUuid(shareToken);\n const response = yield _this33.caller.call(_getFetchImplementation(), `${_this33.apiUrl}/public/${shareToken}/runs${queryParams}`, {\n method: \"GET\",\n headers: _this33.headers,\n signal: AbortSignal.timeout(_this33.timeout_ms),\n ..._this33.fetchOptions\n });\n const runs = yield response.json();\n return runs;\n })();\n }\n readDatasetSharedSchema(datasetId, datasetName) {\n var _this34 = this;\n return _asyncToGenerator(function* () {\n if (!datasetId && !datasetName) {\n throw new Error(\"Either datasetId or datasetName must be given\");\n }\n if (!datasetId) {\n const dataset = yield _this34.readDataset({\n datasetName\n });\n datasetId = dataset.id;\n }\n assertUuid(datasetId);\n const response = yield _this34.caller.call(_getFetchImplementation(), `${_this34.apiUrl}/datasets/${datasetId}/share`, {\n method: \"GET\",\n headers: _this34.headers,\n signal: AbortSignal.timeout(_this34.timeout_ms),\n ..._this34.fetchOptions\n });\n const shareSchema = yield response.json();\n shareSchema.url = `${_this34.getHostUrl()}/public/${shareSchema.share_token}/d`;\n return shareSchema;\n })();\n }\n shareDataset(datasetId, datasetName) {\n var _this35 = this;\n return _asyncToGenerator(function* () {\n if (!datasetId && !datasetName) {\n throw new Error(\"Either datasetId or datasetName must be given\");\n }\n if (!datasetId) {\n const dataset = yield _this35.readDataset({\n datasetName\n });\n datasetId = dataset.id;\n }\n const data = {\n dataset_id: datasetId\n };\n assertUuid(datasetId);\n const response = yield _this35.caller.call(_getFetchImplementation(), `${_this35.apiUrl}/datasets/${datasetId}/share`, {\n method: \"PUT\",\n headers: _this35.headers,\n body: JSON.stringify(data),\n signal: AbortSignal.timeout(_this35.timeout_ms),\n ..._this35.fetchOptions\n });\n const shareSchema = yield response.json();\n shareSchema.url = `${_this35.getHostUrl()}/public/${shareSchema.share_token}/d`;\n return shareSchema;\n })();\n }\n unshareDataset(datasetId) {\n var _this36 = this;\n return _asyncToGenerator(function* () {\n assertUuid(datasetId);\n const response = yield _this36.caller.call(_getFetchImplementation(), `${_this36.apiUrl}/datasets/${datasetId}/share`, {\n method: \"DELETE\",\n headers: _this36.headers,\n signal: AbortSignal.timeout(_this36.timeout_ms),\n ..._this36.fetchOptions\n });\n yield raiseForStatus(response, \"unshare dataset\", true);\n })();\n }\n readSharedDataset(shareToken) {\n var _this37 = this;\n return _asyncToGenerator(function* () {\n assertUuid(shareToken);\n const response = yield _this37.caller.call(_getFetchImplementation(), `${_this37.apiUrl}/public/${shareToken}/datasets`, {\n method: \"GET\",\n headers: _this37.headers,\n signal: AbortSignal.timeout(_this37.timeout_ms),\n ..._this37.fetchOptions\n });\n const dataset = yield response.json();\n return dataset;\n })();\n }\n /**\n * Get shared examples.\n *\n * @param {string} shareToken The share token to get examples for. A share token is the UUID (or LangSmith URL, including UUID) generated when explicitly marking an example as public.\n * @param {Object} [options] Additional options for listing the examples.\n * @param {string[] | undefined} [options.exampleIds] A list of example IDs to filter by.\n * @returns {Promise<Example[]>} The shared examples.\n */\n listSharedExamples(shareToken, options) {\n var _this38 = this;\n return _asyncToGenerator(function* () {\n const params = {};\n if (options !== null && options !== void 0 && options.exampleIds) {\n params.id = options.exampleIds;\n }\n const urlParams = new URLSearchParams();\n Object.entries(params).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n value.forEach(v => urlParams.append(key, v));\n } else {\n urlParams.append(key, value);\n }\n });\n const response = yield _this38.caller.call(_getFetchImplementation(), `${_this38.apiUrl}/public/${shareToken}/examples?${urlParams.toString()}`, {\n method: \"GET\",\n headers: _this38.headers,\n signal: AbortSignal.timeout(_this38.timeout_ms),\n ..._this38.fetchOptions\n });\n const result = yield response.json();\n if (!response.ok) {\n if (\"detail\" in result) {\n throw new Error(`Failed to list shared examples.\\nStatus: ${response.status}\\nMessage: ${result.detail.join(\"\\n\")}`);\n }\n throw new Error(`Failed to list shared examples: ${response.status} ${response.statusText}`);\n }\n return result.map(example => ({\n ...example,\n _hostUrl: _this38.getHostUrl()\n }));\n })();\n }\n createProject({\n projectName,\n description = null,\n metadata = null,\n upsert = false,\n projectExtra = null,\n referenceDatasetId = null\n }) {\n var _this39 = this;\n return _asyncToGenerator(function* () {\n const upsert_ = upsert ? `?upsert=true` : \"\";\n const endpoint = `${_this39.apiUrl}/sessions${upsert_}`;\n const extra = projectExtra || {};\n if (metadata) {\n extra[\"metadata\"] = metadata;\n }\n const body = {\n name: projectName,\n extra,\n description\n };\n if (referenceDatasetId !== null) {\n body[\"reference_dataset_id\"] = referenceDatasetId;\n }\n const response = yield _this39.caller.call(_getFetchImplementation(), endpoint, {\n method: \"POST\",\n headers: {\n ..._this39.headers,\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify(body),\n signal: AbortSignal.timeout(_this39.timeout_ms),\n ..._this39.fetchOptions\n });\n yield raiseForStatus(response, \"create project\");\n const result = yield response.json();\n return result;\n })();\n }\n updateProject(projectId, {\n name = null,\n description = null,\n metadata = null,\n projectExtra = null,\n endTime = null\n }) {\n var _this40 = this;\n return _asyncToGenerator(function* () {\n const endpoint = `${_this40.apiUrl}/sessions/${projectId}`;\n let extra = projectExtra;\n if (metadata) {\n extra = {\n ...(extra || {}),\n metadata\n };\n }\n const body = {\n name,\n extra,\n description,\n end_time: endTime ? new Date(endTime).toISOString() : null\n };\n const response = yield _this40.caller.call(_getFetchImplementation(), endpoint, {\n method: \"PATCH\",\n headers: {\n ..._this40.headers,\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify(body),\n signal: AbortSignal.timeout(_this40.timeout_ms),\n ..._this40.fetchOptions\n });\n yield raiseForStatus(response, \"update project\");\n const result = yield response.json();\n return result;\n })();\n }\n hasProject({\n projectId,\n projectName\n }) {\n var _this41 = this;\n return _asyncToGenerator(function* () {\n // TODO: Add a head request\n let path = \"/sessions\";\n const params = new URLSearchParams();\n if (projectId !== undefined && projectName !== undefined) {\n throw new Error(\"Must provide either projectName or projectId, not both\");\n } else if (projectId !== undefined) {\n assertUuid(projectId);\n path += `/${projectId}`;\n } else if (projectName !== undefined) {\n params.append(\"name\", projectName);\n } else {\n throw new Error(\"Must provide projectName or projectId\");\n }\n const response = yield _this41.caller.call(_getFetchImplementation(), `${_this41.apiUrl}${path}?${params}`, {\n method: \"GET\",\n headers: _this41.headers,\n signal: AbortSignal.timeout(_this41.timeout_ms),\n ..._this41.fetchOptions\n });\n // consume the response body to release the connection\n // https://undici.nodejs.org/#/?id=garbage-collection\n try {\n const result = yield response.json();\n if (!response.ok) {\n return false;\n }\n // If it's OK and we're querying by name, need to check the list is not empty\n if (Array.isArray(result)) {\n return result.length > 0;\n }\n // projectId querying\n return true;\n } catch (e) {\n return false;\n }\n })();\n }\n readProject({\n projectId,\n projectName,\n includeStats\n }) {\n var _this42 = this;\n return _asyncToGenerator(function* () {\n let path = \"/sessions\";\n const params = new URLSearchParams();\n if (projectId !== undefined && projectName !== undefined) {\n throw new Error(\"Must provide either projectName or projectId, not both\");\n } else if (projectId !== undefined) {\n assertUuid(projectId);\n path += `/${projectId}`;\n } else if (projectName !== undefined) {\n params.append(\"name\", projectName);\n } else {\n throw new Error(\"Must provide projectName or projectId\");\n }\n if (includeStats !== undefined) {\n params.append(\"include_stats\", includeStats.toString());\n }\n const response = yield _this42._get(path, params);\n let result;\n if (Array.isArray(response)) {\n if (response.length === 0) {\n throw new Error(`Project[id=${projectId}, name=${projectName}] not found`);\n }\n result = response[0];\n } else {\n result = response;\n }\n return result;\n })();\n }\n getProjectUrl({\n projectId,\n projectName\n }) {\n var _this43 = this;\n return _asyncToGenerator(function* () {\n if (projectId === undefined && projectName === undefined) {\n throw new Error(\"Must provide either projectName or projectId\");\n }\n const project = yield _this43.readProject({\n projectId,\n projectName\n });\n const tenantId = yield _this43._getTenantId();\n return `${_this43.getHostUrl()}/o/${tenantId}/projects/p/${project.id}`;\n })();\n }\n getDatasetUrl({\n datasetId,\n datasetName\n }) {\n var _this44 = this;\n return _asyncToGenerator(function* () {\n if (datasetId === undefined && datasetName === undefined) {\n throw new Error(\"Must provide either datasetName or datasetId\");\n }\n const dataset = yield _this44.readDataset({\n datasetId,\n datasetName\n });\n const tenantId = yield _this44._getTenantId();\n return `${_this44.getHostUrl()}/o/${tenantId}/datasets/${dataset.id}`;\n })();\n }\n _getTenantId() {\n var _this45 = this;\n return _asyncToGenerator(function* () {\n if (_this45._tenantId !== null) {\n return _this45._tenantId;\n }\n const queryParams = new URLSearchParams({\n limit: \"1\"\n });\n var _iteratorAbruptCompletion3 = false;\n var _didIteratorError3 = false;\n var _iteratorError3;\n try {\n for (var _iterator3 = _asyncIterator(_this45._getPaginated(\"/sessions\", queryParams)), _step3; _iteratorAbruptCompletion3 = !(_step3 = yield _iterator3.next()).done; _iteratorAbruptCompletion3 = false) {\n const projects = _step3.value;\n {\n _this45._tenantId = projects[0].tenant_id;\n return projects[0].tenant_id;\n }\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (_iteratorAbruptCompletion3 && _iterator3.return != null) {\n yield _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n throw new Error(\"No projects found to resolve tenant.\");\n })();\n }\n listProjects({\n projectIds,\n name,\n nameContains,\n referenceDatasetId,\n referenceDatasetName,\n referenceFree,\n metadata\n } = {}) {\n var _this4 = this;\n return _wrapAsyncGenerator(function* () {\n const params = new URLSearchParams();\n if (projectIds !== undefined) {\n for (const projectId of projectIds) {\n params.append(\"id\", projectId);\n }\n }\n if (name !== undefined) {\n params.append(\"name\", name);\n }\n if (nameContains !== undefined) {\n params.append(\"name_contains\", nameContains);\n }\n if (referenceDatasetId !== undefined) {\n params.append(\"reference_dataset\", referenceDatasetId);\n } else if (referenceDatasetName !== undefined) {\n const dataset = yield _awaitAsyncGenerator(_this4.readDataset({\n datasetName: referenceDatasetName\n }));\n params.append(\"reference_dataset\", dataset.id);\n }\n if (referenceFree !== undefined) {\n params.append(\"reference_free\", referenceFree.toString());\n }\n if (metadata !== undefined) {\n params.append(\"metadata\", JSON.stringify(metadata));\n }\n var _iteratorAbruptCompletion4 = false;\n var _didIteratorError4 = false;\n var _iteratorError4;\n try {\n for (var _iterator4 = _asyncIterator(_this4._getPaginated(\"/sessions\", params)), _step4; _iteratorAbruptCompletion4 = !(_step4 = yield _awaitAsyncGenerator(_iterator4.next())).done; _iteratorAbruptCompletion4 = false) {\n const projects = _step4.value;\n {\n yield* _asyncGeneratorDelegate(_asyncIterator(projects), _awaitAsyncGenerator);\n }\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (_iteratorAbruptCompletion4 && _iterator4.return != null) {\n yield _awaitAsyncGenerator(_iterator4.return());\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n })();\n }\n deleteProject({\n projectId,\n projectName\n }) {\n var _this46 = this;\n return _asyncToGenerator(function* () {\n let projectId_;\n if (projectId === undefined && projectName === undefined) {\n throw new Error(\"Must provide projectName or projectId\");\n } else if (projectId !== undefined && projectName !== undefined) {\n throw new Error(\"Must provide either projectName or projectId, not both\");\n } else if (projectId === undefined) {\n projectId_ = (yield _this46.readProject({\n projectName\n })).id;\n } else {\n projectId_ = projectId;\n }\n assertUuid(projectId_);\n const response = yield _this46.caller.call(_getFetchImplementation(), `${_this46.apiUrl}/sessions/${projectId_}`, {\n method: \"DELETE\",\n headers: _this46.headers,\n signal: AbortSignal.timeout(_this46.timeout_ms),\n ..._this46.fetchOptions\n });\n yield raiseForStatus(response, `delete session ${projectId_} (${projectName})`, true);\n })();\n }\n uploadCsv({\n csvFile,\n fileName,\n inputKeys,\n outputKeys,\n description,\n dataType,\n name\n }) {\n var _this47 = this;\n return _asyncToGenerator(function* () {\n const url = `${_this47.apiUrl}/datasets/upload`;\n const formData = new FormData();\n formData.append(\"file\", csvFile, fileName);\n inputKeys.forEach(key => {\n formData.append(\"input_keys\", key);\n });\n outputKeys.forEach(key => {\n formData.append(\"output_keys\", key);\n });\n if (description) {\n formData.append(\"description\", description);\n }\n if (dataType) {\n formData.append(\"data_type\", dataType);\n }\n if (name) {\n formData.append(\"name\", name);\n }\n const response = yield _this47.caller.call(_getFetchImplementation(), url, {\n method: \"POST\",\n headers: _this47.headers,\n body: formData,\n signal: AbortSignal.timeout(_this47.timeout_ms),\n ..._this47.fetchOptions\n });\n yield raiseForStatus(response, \"upload CSV\");\n const result = yield response.json();\n return result;\n })();\n }\n createDataset(name, {\n description,\n dataType,\n inputsSchema,\n outputsSchema,\n metadata\n } = {}) {\n var _this48 = this;\n return _asyncToGenerator(function* () {\n const body = {\n name,\n description,\n extra: metadata ? {\n metadata\n } : undefined\n };\n if (dataType) {\n body.data_type = dataType;\n }\n if (inputsSchema) {\n body.inputs_schema_definition = inputsSchema;\n }\n if (outputsSchema) {\n body.outputs_schema_definition = outputsSchema;\n }\n const response = yield _this48.caller.call(_getFetchImplementation(), `${_this48.apiUrl}/datasets`, {\n method: \"POST\",\n headers: {\n ..._this48.headers,\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify(body),\n signal: AbortSignal.timeout(_this48.timeout_ms),\n ..._this48.fetchOptions\n });\n yield raiseForStatus(response, \"create dataset\");\n const result = yield response.json();\n return result;\n })();\n }\n readDataset({\n datasetId,\n datasetName\n }) {\n var _this49 = this;\n return _asyncToGenerator(function* () {\n let path = \"/datasets\";\n // limit to 1 result\n const params = new URLSearchParams({\n limit: \"1\"\n });\n if (datasetId !== undefined && datasetName !== undefined) {\n throw new Error(\"Must provide either datasetName or datasetId, not both\");\n } else if (datasetId !== undefined) {\n assertUuid(datasetId);\n path += `/${datasetId}`;\n } else if (datasetName !== undefined) {\n params.append(\"name\", datasetName);\n } else {\n throw new Error(\"Must provide datasetName or datasetId\");\n }\n const response = yield _this49._get(path, params);\n let result;\n if (Array.isArray(response)) {\n if (response.length === 0) {\n throw new Error(`Dataset[id=${datasetId}, name=${datasetName}] not found`);\n }\n result = response[0];\n } else {\n result = response;\n }\n return result;\n })();\n }\n hasDataset({\n datasetId,\n datasetName\n }) {\n var _this50 = this;\n return _asyncToGenerator(function* () {\n try {\n yield _this50.readDataset({\n datasetId,\n datasetName\n });\n return true;\n } catch (e) {\n if (\n // eslint-disable-next-line no-instanceof/no-instanceof\n e instanceof Error && e.message.toLocaleLowerCase().includes(\"not found\")) {\n return false;\n }\n throw e;\n }\n })();\n }\n diffDatasetVersions({\n datasetId,\n datasetName,\n fromVersion,\n toVersion\n }) {\n var _this51 = this;\n return _asyncToGenerator(function* () {\n let datasetId_ = datasetId;\n if (datasetId_ === undefined && datasetName === undefined) {\n throw new Error(\"Must provide either datasetName or datasetId\");\n } else if (datasetId_ !== undefined && datasetName !== undefined) {\n throw new Error(\"Must provide either datasetName or datasetId, not both\");\n } else if (datasetId_ === undefined) {\n const dataset = yield _this51.readDataset({\n datasetName\n });\n datasetId_ = dataset.id;\n }\n const urlParams = new URLSearchParams({\n from_version: typeof fromVersion === \"string\" ? fromVersion : fromVersion.toISOString(),\n to_version: typeof toVersion === \"string\" ? toVersion : toVersion.toISOString()\n });\n const response = yield _this51._get(`/datasets/${datasetId_}/versions/diff`, urlParams);\n return response;\n })();\n }\n readDatasetOpenaiFinetuning({\n datasetId,\n datasetName\n }) {\n var _this52 = this;\n return _asyncToGenerator(function* () {\n const path = \"/datasets\";\n if (datasetId !== undefined) {\n // do nothing\n } else if (datasetName !== undefined) {\n datasetId = (yield _this52.readDataset({\n datasetName\n })).id;\n } else {\n throw new Error(\"Must provide datasetName or datasetId\");\n }\n const response = yield _this52._getResponse(`${path}/${datasetId}/openai_ft`);\n const datasetText = yield response.text();\n const dataset = datasetText.trim().split(\"\\n\").map(line => JSON.parse(line));\n return dataset;\n })();\n }\n listDatasets({\n limit = 100,\n offset = 0,\n datasetIds,\n datasetName,\n datasetNameContains,\n metadata\n } = {}) {\n var _this5 = this;\n return _wrapAsyncGenerator(function* () {\n const path = \"/datasets\";\n const params = new URLSearchParams({\n limit: limit.toString(),\n offset: offset.toString()\n });\n if (datasetIds !== undefined) {\n for (const id_ of datasetIds) {\n params.append(\"id\", id_);\n }\n }\n if (datasetName !== undefined) {\n params.append(\"name\", datasetName);\n }\n if (datasetNameContains !== undefined) {\n params.append(\"name_contains\", datasetNameContains);\n }\n if (metadata !== undefined) {\n params.append(\"metadata\", JSON.stringify(metadata));\n }\n var _iteratorAbruptCompletion5 = false;\n var _didIteratorError5 = false;\n var _iteratorError5;\n try {\n for (var _iterator5 = _asyncIterator(_this5._getPaginated(path, params)), _step5; _iteratorAbruptCompletion5 = !(_step5 = yield _awaitAsyncGenerator(_iterator5.next())).done; _iteratorAbruptCompletion5 = false) {\n const datasets = _step5.value;\n {\n yield* _asyncGeneratorDelegate(_asyncIterator(datasets), _awaitAsyncGenerator);\n }\n }\n } catch (err) {\n _didIteratorError5 = true;\n _iteratorError5 = err;\n } finally {\n try {\n if (_iteratorAbruptCompletion5 && _iterator5.return != null) {\n yield _awaitAsyncGenerator(_iterator5.return());\n }\n } finally {\n if (_didIteratorError5) {\n throw _iteratorError5;\n }\n }\n }\n })();\n }\n /**\n * Update a dataset\n * @param props The dataset details to update\n * @returns The updated dataset\n */\n updateDataset(props) {\n var _this53 = this;\n return _asyncToGenerator(function* () {\n const {\n datasetId,\n datasetName,\n ...update\n } = props;\n if (!datasetId && !datasetName) {\n throw new Error(\"Must provide either datasetName or datasetId\");\n }\n const _datasetId = datasetId !== null && datasetId !== void 0 ? datasetId : (yield _this53.readDataset({\n datasetName\n })).id;\n assertUuid(_datasetId);\n const response = yield _this53.caller.call(_getFetchImplementation(), `${_this53.apiUrl}/datasets/${_datasetId}`, {\n method: \"PATCH\",\n headers: {\n ..._this53.headers,\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify(update),\n signal: AbortSignal.timeout(_this53.timeout_ms),\n ..._this53.fetchOptions\n });\n yield raiseForStatus(response, \"update dataset\");\n return yield response.json();\n })();\n }\n deleteDataset({\n datasetId,\n datasetName\n }) {\n var _this54 = this;\n return _asyncToGenerator(function* () {\n let path = \"/datasets\";\n let datasetId_ = datasetId;\n if (datasetId !== undefined && datasetName !== undefined) {\n throw new Error(\"Must provide either datasetName or datasetId, not both\");\n } else if (datasetName !== undefined) {\n const dataset = yield _this54.readDataset({\n datasetName\n });\n datasetId_ = dataset.id;\n }\n if (datasetId_ !== undefined) {\n assertUuid(datasetId_);\n path += `/${datasetId_}`;\n } else {\n throw new Error(\"Must provide datasetName or datasetId\");\n }\n const response = yield _this54.caller.call(_getFetchImplementation(), _this54.apiUrl + path, {\n method: \"DELETE\",\n headers: _this54.headers,\n signal: AbortSignal.timeout(_this54.timeout_ms),\n ..._this54.fetchOptions\n });\n yield raiseForStatus(response, `delete ${path}`);\n yield response.json();\n })();\n }\n indexDataset({\n datasetId,\n datasetName,\n tag\n }) {\n var _this55 = this;\n return _asyncToGenerator(function* () {\n let datasetId_ = datasetId;\n if (!datasetId_ && !datasetName) {\n throw new Error(\"Must provide either datasetName or datasetId\");\n } else if (datasetId_ && datasetName) {\n throw new Error(\"Must provide either datasetName or datasetId, not both\");\n } else if (!datasetId_) {\n const dataset = yield _this55.readDataset({\n datasetName\n });\n datasetId_ = dataset.id;\n }\n assertUuid(datasetId_);\n const data = {\n tag: tag\n };\n const response = yield _this55.caller.call(_getFetchImplementation(), `${_this55.apiUrl}/datasets/${datasetId_}/index`, {\n method: \"POST\",\n headers: {\n ..._this55.headers,\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify(data),\n signal: AbortSignal.timeout(_this55.timeout_ms),\n ..._this55.fetchOptions\n });\n yield raiseForStatus(response, \"index dataset\");\n yield response.json();\n })();\n }\n /**\n * Lets you run a similarity search query on a dataset.\n *\n * Requires the dataset to be indexed. Please see the `indexDataset` method to set up indexing.\n *\n * @param inputs The input on which to run the similarity search. Must have the\n * same schema as the dataset.\n *\n * @param datasetId The dataset to search for similar examples.\n *\n * @param limit The maximum number of examples to return. Will return the top `limit` most\n * similar examples in order of most similar to least similar. If no similar\n * examples are found, random examples will be returned.\n *\n * @param filter A filter string to apply to the search. Only examples will be returned that\n * match the filter string. Some examples of filters\n *\n * - eq(metadata.mykey, \"value\")\n * - and(neq(metadata.my.nested.key, \"value\"), neq(metadata.mykey, \"value\"))\n * - or(eq(metadata.mykey, \"value\"), eq(metadata.mykey, \"othervalue\"))\n *\n * @returns A list of similar examples.\n *\n *\n * @example\n * dataset_id = \"123e4567-e89b-12d3-a456-426614174000\"\n * inputs = {\"text\": \"How many people live in Berlin?\"}\n * limit = 5\n * examples = await client.similarExamples(inputs, dataset_id, limit)\n */\n similarExamples(inputs, datasetId, limit, {\n filter\n } = {}) {\n var _this56 = this;\n return _asyncToGenerator(function* () {\n const data = {\n limit: limit,\n inputs: inputs\n };\n if (filter !== undefined) {\n data[\"filter\"] = filter;\n }\n assertUuid(datasetId);\n const response = yield _this56.caller.call(_getFetchImplementation(), `${_this56.apiUrl}/datasets/${datasetId}/search`, {\n method: \"POST\",\n headers: {\n ..._this56.headers,\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify(data),\n signal: AbortSignal.timeout(_this56.timeout_ms),\n ..._this56.fetchOptions\n });\n yield raiseForStatus(response, \"fetch similar examples\");\n const result = yield response.json();\n return result[\"examples\"];\n })();\n }\n createExample(inputs, outputs, {\n datasetId,\n datasetName,\n createdAt,\n exampleId,\n metadata,\n split,\n sourceRunId\n }) {\n var _this57 = this;\n return _asyncToGenerator(function* () {\n let datasetId_ = datasetId;\n if (datasetId_ === undefined && datasetName === undefined) {\n throw new Error(\"Must provide either datasetName or datasetId\");\n } else if (datasetId_ !== undefined && datasetName !== undefined) {\n throw new Error(\"Must provide either datasetName or datasetId, not both\");\n } else if (datasetId_ === undefined) {\n const dataset = yield _this57.readDataset({\n datasetName\n });\n datasetId_ = dataset.id;\n }\n const createdAt_ = createdAt || new Date();\n const data = {\n dataset_id: datasetId_,\n inputs,\n outputs,\n created_at: createdAt_ === null || createdAt_ === void 0 ? void 0 : createdAt_.toISOString(),\n id: exampleId,\n metadata,\n split,\n source_run_id: sourceRunId\n };\n const response = yield _this57.caller.call(_getFetchImplementation(), `${_this57.apiUrl}/examples`, {\n method: \"POST\",\n headers: {\n ..._this57.headers,\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify(data),\n signal: AbortSignal.timeout(_this57.timeout_ms),\n ..._this57.fetchOptions\n });\n yield raiseForStatus(response, \"create example\");\n const result = yield response.json();\n return result;\n })();\n }\n createExamples(props) {\n var _this58 = this;\n return _asyncToGenerator(function* () {\n const {\n inputs,\n outputs,\n metadata,\n sourceRunIds,\n exampleIds,\n datasetId,\n datasetName\n } = props;\n let datasetId_ = datasetId;\n if (datasetId_ === undefined && datasetName === undefined) {\n throw new Error(\"Must provide either datasetName or datasetId\");\n } else if (datasetId_ !== undefined && datasetName !== undefined) {\n throw new Error(\"Must provide either datasetName or datasetId, not both\");\n } else if (datasetId_ === undefined) {\n const dataset = yield _this58.readDataset({\n datasetName\n });\n datasetId_ = dataset.id;\n }\n const formattedExamples = inputs.map((input, idx) => {\n return {\n dataset_id: datasetId_,\n inputs: input,\n outputs: outputs ? outputs[idx] : undefined,\n metadata: metadata ? metadata[idx] : undefined,\n split: props.splits ? props.splits[idx] : undefined,\n id: exampleIds ? exampleIds[idx] : undefined,\n source_run_id: sourceRunIds ? sourceRunIds[idx] : undefined\n };\n });\n const response = yield _this58.caller.call(_getFetchImplementation(), `${_this58.apiUrl}/examples/bulk`, {\n method: \"POST\",\n headers: {\n ..._this58.headers,\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify(formattedExamples),\n signal: AbortSignal.timeout(_this58.timeout_ms),\n ..._this58.fetchOptions\n });\n yield raiseForStatus(response, \"create examples\");\n const result = yield response.json();\n return result;\n })();\n }\n createLLMExample(input, generation, options) {\n var _this59 = this;\n return _asyncToGenerator(function* () {\n return _this59.createExample({\n input\n }, {\n output: generation\n }, options);\n })();\n }\n createChatExample(input, generations, options) {\n var _this60 = this;\n return _asyncToGenerator(function* () {\n const finalInput = input.map(message => {\n if (isLangChainMessage(message)) {\n return convertLangChainMessageToExample(message);\n }\n return message;\n });\n const finalOutput = isLangChainMessage(generations) ? convertLangChainMessageToExample(generations) : generations;\n return _this60.createExample({\n input: finalInput\n }, {\n output: finalOutput\n }, options);\n })();\n }\n readExample(exampleId) {\n var _this61 = this;\n return _asyncToGenerator(function* () {\n assertUuid(exampleId);\n const path = `/examples/${exampleId}`;\n return yield _this61._get(path);\n })();\n }\n listExamples({\n datasetId,\n datasetName,\n exampleIds,\n asOf,\n splits,\n inlineS3Urls,\n metadata,\n limit,\n offset,\n filter\n } = {}) {\n var _this6 = this;\n return _wrapAsyncGenerator(function* () {\n let datasetId_;\n if (datasetId !== undefined && datasetName !== undefined) {\n throw new Error(\"Must provide either datasetName or datasetId, not both\");\n } else if (datasetId !== undefined) {\n datasetId_ = datasetId;\n } else if (datasetName !== undefined) {\n const dataset = yield _awaitAsyncGenerator(_this6.readDataset({\n datasetName\n }));\n datasetId_ = dataset.id;\n } else {\n throw new Error(\"Must provide a datasetName or datasetId\");\n }\n const params = new URLSearchParams({\n dataset: datasetId_\n });\n const dataset_version = asOf ? typeof asOf === \"string\" ? asOf : asOf === null || asOf === void 0 ? void 0 : asOf.toISOString() : undefined;\n if (dataset_version) {\n params.append(\"as_of\", dataset_version);\n }\n const inlineS3Urls_ = inlineS3Urls !== null && inlineS3Urls !== void 0 ? inlineS3Urls : true;\n params.append(\"inline_s3_urls\", inlineS3Urls_.toString());\n if (exampleIds !== undefined) {\n for (const id_ of exampleIds) {\n params.append(\"id\", id_);\n }\n }\n if (splits !== undefined) {\n for (const split of splits) {\n params.append(\"splits\", split);\n }\n }\n if (metadata !== undefined) {\n const serializedMetadata = JSON.stringify(metadata);\n params.append(\"metadata\", serializedMetadata);\n }\n if (limit !== undefined) {\n params.append(\"limit\", limit.toString());\n }\n if (offset !== undefined) {\n params.append(\"offset\", offset.toString());\n }\n if (filter !== undefined) {\n params.append(\"filter\", filter);\n }\n let i = 0;\n var _iteratorAbruptCompletion6 = false;\n var _didIteratorError6 = false;\n var _iteratorError6;\n try {\n for (var _iterator6 = _asyncIterator(_this6._getPaginated(\"/examples\", params)), _step6; _iteratorAbruptCompletion6 = !(_step6 = yield _awaitAsyncGenerator(_iterator6.next())).done; _iteratorAbruptCompletion6 = false) {\n const examples = _step6.value;\n {\n for (const example of examples) {\n yield example;\n i++;\n }\n if (limit !== undefined && i >= limit) {\n break;\n }\n }\n }\n } catch (err) {\n _didIteratorError6 = true;\n _iteratorError6 = err;\n } finally {\n try {\n if (_iteratorAbruptCompletion6 && _iterator6.return != null) {\n yield _awaitAsyncGenerator(_iterator6.return());\n }\n } finally {\n if (_didIteratorError6) {\n throw _iteratorError6;\n }\n }\n }\n })();\n }\n deleteExample(exampleId) {\n var _this62 = this;\n return _asyncToGenerator(function* () {\n assertUuid(exampleId);\n const path = `/examples/${exampleId}`;\n const response = yield _this62.caller.call(_getFetchImplementation(), _this62.apiUrl + path, {\n method: \"DELETE\",\n headers: _this62.headers,\n signal: AbortSignal.timeout(_this62.timeout_ms),\n ..._this62.fetchOptions\n });\n yield raiseForStatus(response, `delete ${path}`);\n yield response.json();\n })();\n }\n updateExample(exampleId, update) {\n var _this63 = this;\n return _asyncToGenerator(function* () {\n assertUuid(exampleId);\n const response = yield _this63.caller.call(_getFetchImplementation(), `${_this63.apiUrl}/examples/${exampleId}`, {\n method: \"PATCH\",\n headers: {\n ..._this63.headers,\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify(update),\n signal: AbortSignal.timeout(_this63.timeout_ms),\n ..._this63.fetchOptions\n });\n yield raiseForStatus(response, \"update example\");\n const result = yield response.json();\n return result;\n })();\n }\n updateExamples(update) {\n var _this64 = this;\n return _asyncToGenerator(function* () {\n const response = yield _this64.caller.call(_getFetchImplementation(), `${_this64.apiUrl}/examples/bulk`, {\n method: \"PATCH\",\n headers: {\n ..._this64.headers,\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify(update),\n signal: AbortSignal.timeout(_this64.timeout_ms),\n ..._this64.fetchOptions\n });\n yield raiseForStatus(response, \"update examples\");\n const result = yield response.json();\n return result;\n })();\n }\n listDatasetSplits({\n datasetId,\n datasetName,\n asOf\n }) {\n var _this65 = this;\n return _asyncToGenerator(function* () {\n let datasetId_;\n if (datasetId === undefined && datasetName === undefined) {\n throw new Error(\"Must provide dataset name or ID\");\n } else if (datasetId !== undefined && datasetName !== undefined) {\n throw new Error(\"Must provide either datasetName or datasetId, not both\");\n } else if (datasetId === undefined) {\n const dataset = yield _this65.readDataset({\n datasetName\n });\n datasetId_ = dataset.id;\n } else {\n datasetId_ = datasetId;\n }\n assertUuid(datasetId_);\n const params = new URLSearchParams();\n const dataset_version = asOf ? typeof asOf === \"string\" ? asOf : asOf === null || asOf === void 0 ? void 0 : asOf.toISOString() : undefined;\n if (dataset_version) {\n params.append(\"as_of\", dataset_version);\n }\n const response = yield _this65._get(`/datasets/${datasetId_}/splits`, params);\n return response;\n })();\n }\n updateDatasetSplits({\n datasetId,\n datasetName,\n splitName,\n exampleIds,\n remove = false\n }) {\n var _this66 = this;\n return _asyncToGenerator(function* () {\n let datasetId_;\n if (datasetId === undefined && datasetName === undefined) {\n throw new Error(\"Must provide dataset name or ID\");\n } else if (datasetId !== undefined && datasetName !== undefined) {\n throw new Error(\"Must provide either datasetName or datasetId, not both\");\n } else if (datasetId === undefined) {\n const dataset = yield _this66.readDataset({\n datasetName\n });\n datasetId_ = dataset.id;\n } else {\n datasetId_ = datasetId;\n }\n assertUuid(datasetId_);\n const data = {\n split_name: splitName,\n examples: exampleIds.map(id => {\n assertUuid(id);\n return id;\n }),\n remove\n };\n const response = yield _this66.caller.call(_getFetchImplementation(), `${_this66.apiUrl}/datasets/${datasetId_}/splits`, {\n method: \"PUT\",\n headers: {\n ..._this66.headers,\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify(data),\n signal: AbortSignal.timeout(_this66.timeout_ms),\n ..._this66.fetchOptions\n });\n yield raiseForStatus(response, \"update dataset splits\", true);\n })();\n }\n /**\n * @deprecated This method is deprecated and will be removed in future LangSmith versions, use `evaluate` from `langsmith/evaluation` instead.\n */\n evaluateRun(run, evaluator, {\n sourceInfo,\n loadChildRuns,\n referenceExample\n } = {\n loadChildRuns: false\n }) {\n var _this67 = this;\n return _asyncToGenerator(function* () {\n warnOnce(\"This method is deprecated and will be removed in future LangSmith versions, use `evaluate` from `langsmith/evaluation` instead.\");\n let run_;\n if (typeof run === \"string\") {\n run_ = yield _this67.readRun(run, {\n loadChildRuns\n });\n } else if (typeof run === \"object\" && \"id\" in run) {\n run_ = run;\n } else {\n throw new Error(`Invalid run type: ${typeof run}`);\n }\n if (run_.reference_example_id !== null && run_.reference_example_id !== undefined) {\n referenceExample = yield _this67.readExample(run_.reference_example_id);\n }\n const feedbackResult = yield evaluator.evaluateRun(run_, referenceExample);\n const [_, feedbacks] = yield _this67._logEvaluationFeedback(feedbackResult, run_, sourceInfo);\n return feedbacks[0];\n })();\n }\n createFeedback(runId, key, {\n score,\n value,\n correction,\n comment,\n sourceInfo,\n feedbackSourceType = \"api\",\n sourceRunId,\n feedbackId,\n feedbackConfig,\n projectId,\n comparativeExperimentId\n }) {\n var _this68 = this;\n return _asyncToGenerator(function* () {\n var _feedback_source$meta;\n if (!runId && !projectId) {\n throw new Error(\"One of runId or projectId must be provided\");\n }\n if (runId && projectId) {\n throw new Error(\"Only one of runId or projectId can be provided\");\n }\n const feedback_source = {\n type: feedbackSourceType !== null && feedbackSourceType !== void 0 ? feedbackSourceType : \"api\",\n metadata: sourceInfo !== null && sourceInfo !== void 0 ? sourceInfo : {}\n };\n if (sourceRunId !== undefined && (feedback_source === null || feedback_source === void 0 ? void 0 : feedback_source.metadata) !== undefined && !feedback_source.metadata[\"__run\"]) {\n feedback_source.metadata[\"__run\"] = {\n run_id: sourceRunId\n };\n }\n if ((feedback_source === null || feedback_source === void 0 ? void 0 : feedback_source.metadata) !== undefined && ((_feedback_source$meta = feedback_source.metadata[\"__run\"]) === null || _feedback_source$meta === void 0 ? void 0 : _feedback_source$meta.run_id) !== undefined) {\n assertUuid(feedback_source.metadata[\"__run\"].run_id);\n }\n const feedback = {\n id: feedbackId !== null && feedbackId !== void 0 ? feedbackId : uuid.v4(),\n run_id: runId,\n key,\n score,\n value,\n correction,\n comment,\n feedback_source: feedback_source,\n comparative_experiment_id: comparativeExperimentId,\n feedbackConfig,\n session_id: projectId\n };\n const url = `${_this68.apiUrl}/feedback`;\n const response = yield _this68.caller.call(_getFetchImplementation(), url, {\n method: \"POST\",\n headers: {\n ..._this68.headers,\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify(feedback),\n signal: AbortSignal.timeout(_this68.timeout_ms),\n ..._this68.fetchOptions\n });\n yield raiseForStatus(response, \"create feedback\", true);\n return feedback;\n })();\n }\n updateFeedback(feedbackId, {\n score,\n value,\n correction,\n comment\n }) {\n var _this69 = this;\n return _asyncToGenerator(function* () {\n const feedbackUpdate = {};\n if (score !== undefined && score !== null) {\n feedbackUpdate[\"score\"] = score;\n }\n if (value !== undefined && value !== null) {\n feedbackUpdate[\"value\"] = value;\n }\n if (correction !== undefined && correction !== null) {\n feedbackUpdate[\"correction\"] = correction;\n }\n if (comment !== undefined && comment !== null) {\n feedbackUpdate[\"comment\"] = comment;\n }\n assertUuid(feedbackId);\n const response = yield _this69.caller.call(_getFetchImplementation(), `${_this69.apiUrl}/feedback/${feedbackId}`, {\n method: \"PATCH\",\n headers: {\n ..._this69.headers,\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify(feedbackUpdate),\n signal: AbortSignal.timeout(_this69.timeout_ms),\n ..._this69.fetchOptions\n });\n yield raiseForStatus(response, \"update feedback\", true);\n })();\n }\n readFeedback(feedbackId) {\n var _this70 = this;\n return _asyncToGenerator(function* () {\n assertUuid(feedbackId);\n const path = `/feedback/${feedbackId}`;\n const response = yield _this70._get(path);\n return response;\n })();\n }\n deleteFeedback(feedbackId) {\n var _this71 = this;\n return _asyncToGenerator(function* () {\n assertUuid(feedbackId);\n const path = `/feedback/${feedbackId}`;\n const response = yield _this71.caller.call(_getFetchImplementation(), _this71.apiUrl + path, {\n method: \"DELETE\",\n headers: _this71.headers,\n signal: AbortSignal.timeout(_this71.timeout_ms),\n ..._this71.fetchOptions\n });\n yield raiseForStatus(response, `delete ${path}`);\n yield response.json();\n })();\n }\n listFeedback({\n runIds,\n feedbackKeys,\n feedbackSourceTypes\n } = {}) {\n var _this7 = this;\n return _wrapAsyncGenerator(function* () {\n const queryParams = new URLSearchParams();\n if (runIds) {\n queryParams.append(\"run\", runIds.join(\",\"));\n }\n if (feedbackKeys) {\n for (const key of feedbackKeys) {\n queryParams.append(\"key\", key);\n }\n }\n if (feedbackSourceTypes) {\n for (const type of feedbackSourceTypes) {\n queryParams.append(\"source\", type);\n }\n }\n var _iteratorAbruptCompletion7 = false;\n var _didIteratorError7 = false;\n var _iteratorError7;\n try {\n for (var _iterator7 = _asyncIterator(_this7._getPaginated(\"/feedback\", queryParams)), _step7; _iteratorAbruptCompletion7 = !(_step7 = yield _awaitAsyncGenerator(_iterator7.next())).done; _iteratorAbruptCompletion7 = false) {\n const feedbacks = _step7.value;\n {\n yield* _asyncGeneratorDelegate(_asyncIterator(feedbacks), _awaitAsyncGenerator);\n }\n }\n } catch (err) {\n _didIteratorError7 = true;\n _iteratorError7 = err;\n } finally {\n try {\n if (_iteratorAbruptCompletion7 && _iterator7.return != null) {\n yield _awaitAsyncGenerator(_iterator7.return());\n }\n } finally {\n if (_didIteratorError7) {\n throw _iteratorError7;\n }\n }\n }\n })();\n }\n /**\n * Creates a presigned feedback token and URL.\n *\n * The token can be used to authorize feedback metrics without\n * needing an API key. This is useful for giving browser-based\n * applications the ability to submit feedback without needing\n * to expose an API key.\n *\n * @param runId - The ID of the run.\n * @param feedbackKey - The feedback key.\n * @param options - Additional options for the token.\n * @param options.expiration - The expiration time for the token.\n *\n * @returns A promise that resolves to a FeedbackIngestToken.\n */\n createPresignedFeedbackToken(runId, feedbackKey, {\n expiration,\n feedbackConfig\n } = {}) {\n var _this72 = this;\n return _asyncToGenerator(function* () {\n const body = {\n run_id: runId,\n feedback_key: feedbackKey,\n feedback_config: feedbackConfig\n };\n if (expiration) {\n if (typeof expiration === \"string\") {\n body[\"expires_at\"] = expiration;\n } else if (expiration !== null && expiration !== void 0 && expiration.hours || expiration !== null && expiration !== void 0 && expiration.minutes || expiration !== null && expiration !== void 0 && expiration.days) {\n body[\"expires_in\"] = expiration;\n }\n } else {\n body[\"expires_in\"] = {\n hours: 3\n };\n }\n const response = yield _this72.caller.call(_getFetchImplementation(), `${_this72.apiUrl}/feedback/tokens`, {\n method: \"POST\",\n headers: {\n ..._this72.headers,\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify(body),\n signal: AbortSignal.timeout(_this72.timeout_ms),\n ..._this72.fetchOptions\n });\n const result = yield response.json();\n return result;\n })();\n }\n createComparativeExperiment({\n name,\n experimentIds,\n referenceDatasetId,\n createdAt,\n description,\n metadata,\n id\n }) {\n var _this73 = this;\n return _asyncToGenerator(function* () {\n var _ref6;\n if (experimentIds.length === 0) {\n throw new Error(\"At least one experiment is required\");\n }\n if (!referenceDatasetId) {\n referenceDatasetId = (yield _this73.readProject({\n projectId: experimentIds[0]\n })).reference_dataset_id;\n }\n if (!referenceDatasetId == null) {\n throw new Error(\"A reference dataset is required\");\n }\n const body = {\n id,\n name,\n experiment_ids: experimentIds,\n reference_dataset_id: referenceDatasetId,\n description,\n created_at: (_ref6 = createdAt !== null && createdAt !== void 0 ? createdAt : new Date()) === null || _ref6 === void 0 ? void 0 : _ref6.toISOString(),\n extra: {}\n };\n if (metadata) body.extra[\"metadata\"] = metadata;\n const response = yield _this73.caller.call(_getFetchImplementation(), `${_this73.apiUrl}/datasets/comparative`, {\n method: \"POST\",\n headers: {\n ..._this73.headers,\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify(body),\n signal: AbortSignal.timeout(_this73.timeout_ms),\n ..._this73.fetchOptions\n });\n return yield response.json();\n })();\n }\n /**\n * Retrieves a list of presigned feedback tokens for a given run ID.\n * @param runId The ID of the run.\n * @returns An async iterable of FeedbackIngestToken objects.\n */\n listPresignedFeedbackTokens(runId) {\n var _this8 = this;\n return _wrapAsyncGenerator(function* () {\n assertUuid(runId);\n const params = new URLSearchParams({\n run_id: runId\n });\n var _iteratorAbruptCompletion8 = false;\n var _didIteratorError8 = false;\n var _iteratorError8;\n try {\n for (var _iterator8 = _asyncIterator(_this8._getPaginated(\"/feedback/tokens\", params)), _step8; _iteratorAbruptCompletion8 = !(_step8 = yield _awaitAsyncGenerator(_iterator8.next())).done; _iteratorAbruptCompletion8 = false) {\n const tokens = _step8.value;\n {\n yield* _asyncGeneratorDelegate(_asyncIterator(tokens), _awaitAsyncGenerator);\n }\n }\n } catch (err) {\n _didIteratorError8 = true;\n _iteratorError8 = err;\n } finally {\n try {\n if (_iteratorAbruptCompletion8 && _iterator8.return != null) {\n yield _awaitAsyncGenerator(_iterator8.return());\n }\n } finally {\n if (_didIteratorError8) {\n throw _iteratorError8;\n }\n }\n }\n })();\n }\n _selectEvalResults(results) {\n let results_;\n if (\"results\" in results) {\n results_ = results.results;\n } else {\n results_ = [results];\n }\n return results_;\n }\n _logEvaluationFeedback(evaluatorResponse, run, sourceInfo) {\n var _this74 = this;\n return _asyncToGenerator(function* () {\n const evalResults = _this74._selectEvalResults(evaluatorResponse);\n const feedbacks = [];\n for (const res of evalResults) {\n let sourceInfo_ = sourceInfo || {};\n if (res.evaluatorInfo) {\n sourceInfo_ = {\n ...res.evaluatorInfo,\n ...sourceInfo_\n };\n }\n let runId_ = null;\n if (res.targetRunId) {\n runId_ = res.targetRunId;\n } else if (run) {\n runId_ = run.id;\n }\n feedbacks.push(yield _this74.createFeedback(runId_, res.key, {\n score: res.score,\n value: res.value,\n comment: res.comment,\n correction: res.correction,\n sourceInfo: sourceInfo_,\n sourceRunId: res.sourceRunId,\n feedbackConfig: res.feedbackConfig,\n feedbackSourceType: \"model\"\n }));\n }\n return [evalResults, feedbacks];\n })();\n }\n logEvaluationFeedback(evaluatorResponse, run, sourceInfo) {\n var _this75 = this;\n return _asyncToGenerator(function* () {\n const [results] = yield _this75._logEvaluationFeedback(evaluatorResponse, run, sourceInfo);\n return results;\n })();\n }\n /**\n * API for managing annotation queues\n */\n /**\n * List the annotation queues on the LangSmith API.\n * @param options - The options for listing annotation queues\n * @param options.queueIds - The IDs of the queues to filter by\n * @param options.name - The name of the queue to filter by\n * @param options.nameContains - The substring that the queue name should contain\n * @param options.limit - The maximum number of queues to return\n * @returns An iterator of AnnotationQueue objects\n */\n listAnnotationQueues(options = {}) {\n var _this9 = this;\n return _wrapAsyncGenerator(function* () {\n const {\n queueIds,\n name,\n nameContains,\n limit\n } = options;\n const params = new URLSearchParams();\n if (queueIds) {\n queueIds.forEach((id, i) => {\n assertUuid(id, `queueIds[${i}]`);\n params.append(\"ids\", id);\n });\n }\n if (name) params.append(\"name\", name);\n if (nameContains) params.append(\"name_contains\", nameContains);\n params.append(\"limit\", (limit !== undefined ? Math.min(limit, 100) : 100).toString());\n let count = 0;\n var _iteratorAbruptCompletion9 = false;\n var _didIteratorError9 = false;\n var _iteratorError9;\n try {\n for (var _iterator9 = _asyncIterator(_this9._getPaginated(\"/annotation-queues\", params)), _step9; _iteratorAbruptCompletion9 = !(_step9 = yield _awaitAsyncGenerator(_iterator9.next())).done; _iteratorAbruptCompletion9 = false) {\n const queues = _step9.value;\n {\n yield* _asyncGeneratorDelegate(_asyncIterator(queues), _awaitAsyncGenerator);\n count++;\n if (limit !== undefined && count >= limit) break;\n }\n }\n } catch (err) {\n _didIteratorError9 = true;\n _iteratorError9 = err;\n } finally {\n try {\n if (_iteratorAbruptCompletion9 && _iterator9.return != null) {\n yield _awaitAsyncGenerator(_iterator9.return());\n }\n } finally {\n if (_didIteratorError9) {\n throw _iteratorError9;\n }\n }\n }\n })();\n }\n /**\n * Create an annotation queue on the LangSmith API.\n * @param options - The options for creating an annotation queue\n * @param options.name - The name of the annotation queue\n * @param options.description - The description of the annotation queue\n * @param options.queueId - The ID of the annotation queue\n * @returns The created AnnotationQueue object\n */\n createAnnotationQueue(options) {\n var _this76 = this;\n return _asyncToGenerator(function* () {\n const {\n name,\n description,\n queueId\n } = options;\n const body = {\n name,\n description,\n id: queueId || uuid.v4()\n };\n const response = yield _this76.caller.call(_getFetchImplementation(), `${_this76.apiUrl}/annotation-queues`, {\n method: \"POST\",\n headers: {\n ..._this76.headers,\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify(Object.fromEntries(Object.entries(body).filter(([_, v]) => v !== undefined))),\n signal: AbortSignal.timeout(_this76.timeout_ms),\n ..._this76.fetchOptions\n });\n yield raiseForStatus(response, \"create annotation queue\");\n const data = yield response.json();\n return data;\n })();\n }\n /**\n * Read an annotation queue with the specified queue ID.\n * @param queueId - The ID of the annotation queue to read\n * @returns The AnnotationQueue object\n */\n readAnnotationQueue(queueId) {\n var _this77 = this;\n return _asyncToGenerator(function* () {\n // TODO: Replace when actual endpoint is added\n const queueIteratorResult = yield _this77.listAnnotationQueues({\n queueIds: [queueId]\n }).next();\n if (queueIteratorResult.done) {\n throw new Error(`Annotation queue with ID ${queueId} not found`);\n }\n return queueIteratorResult.value;\n })();\n }\n /**\n * Update an annotation queue with the specified queue ID.\n * @param queueId - The ID of the annotation queue to update\n * @param options - The options for updating the annotation queue\n * @param options.name - The new name for the annotation queue\n * @param options.description - The new description for the annotation queue\n */\n updateAnnotationQueue(queueId, options) {\n var _this78 = this;\n return _asyncToGenerator(function* () {\n const {\n name,\n description\n } = options;\n const response = yield _this78.caller.call(_getFetchImplementation(), `${_this78.apiUrl}/annotation-queues/${assertUuid(queueId, \"queueId\")}`, {\n method: \"PATCH\",\n headers: {\n ..._this78.headers,\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n name,\n description\n }),\n signal: AbortSignal.timeout(_this78.timeout_ms),\n ..._this78.fetchOptions\n });\n yield raiseForStatus(response, \"update annotation queue\");\n })();\n }\n /**\n * Delete an annotation queue with the specified queue ID.\n * @param queueId - The ID of the annotation queue to delete\n */\n deleteAnnotationQueue(queueId) {\n var _this79 = this;\n return _asyncToGenerator(function* () {\n const response = yield _this79.caller.call(_getFetchImplementation(), `${_this79.apiUrl}/annotation-queues/${assertUuid(queueId, \"queueId\")}`, {\n method: \"DELETE\",\n headers: {\n ..._this79.headers,\n Accept: \"application/json\"\n },\n signal: AbortSignal.timeout(_this79.timeout_ms),\n ..._this79.fetchOptions\n });\n yield raiseForStatus(response, \"delete annotation queue\");\n })();\n }\n /**\n * Add runs to an annotation queue with the specified queue ID.\n * @param queueId - The ID of the annotation queue\n * @param runIds - The IDs of the runs to be added to the annotation queue\n */\n addRunsToAnnotationQueue(queueId, runIds) {\n var _this80 = this;\n return _asyncToGenerator(function* () {\n const response = yield _this80.caller.call(_getFetchImplementation(), `${_this80.apiUrl}/annotation-queues/${assertUuid(queueId, \"queueId\")}/runs`, {\n method: \"POST\",\n headers: {\n ..._this80.headers,\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify(runIds.map((id, i) => assertUuid(id, `runIds[${i}]`).toString())),\n signal: AbortSignal.timeout(_this80.timeout_ms),\n ..._this80.fetchOptions\n });\n yield raiseForStatus(response, \"add runs to annotation queue\");\n })();\n }\n /**\n * Get a run from an annotation queue at the specified index.\n * @param queueId - The ID of the annotation queue\n * @param index - The index of the run to retrieve\n * @returns A Promise that resolves to a RunWithAnnotationQueueInfo object\n * @throws {Error} If the run is not found at the given index or for other API-related errors\n */\n getRunFromAnnotationQueue(queueId, index) {\n var _this81 = this;\n return _asyncToGenerator(function* () {\n const baseUrl = `/annotation-queues/${assertUuid(queueId, \"queueId\")}/run`;\n const response = yield _this81.caller.call(_getFetchImplementation(), `${_this81.apiUrl}${baseUrl}/${index}`, {\n method: \"GET\",\n headers: _this81.headers,\n signal: AbortSignal.timeout(_this81.timeout_ms),\n ..._this81.fetchOptions\n });\n yield raiseForStatus(response, \"get run from annotation queue\");\n return yield response.json();\n })();\n }\n _currentTenantIsOwner(owner) {\n var _this82 = this;\n return _asyncToGenerator(function* () {\n const settings = yield _this82._getSettings();\n return owner == \"-\" || settings.tenant_handle === owner;\n })();\n }\n _ownerConflictError(action, owner) {\n var _this83 = this;\n return _asyncToGenerator(function* () {\n const settings = yield _this83._getSettings();\n return new Error(`Cannot ${action} for another tenant.\\n\n Current tenant: ${settings.tenant_handle}\\n\n Requested tenant: ${owner}`);\n })();\n }\n _getLatestCommitHash(promptOwnerAndName) {\n var _this84 = this;\n return _asyncToGenerator(function* () {\n const res = yield _this84.caller.call(_getFetchImplementation(), `${_this84.apiUrl}/commits/${promptOwnerAndName}/?limit=${1}&offset=${0}`, {\n method: \"GET\",\n headers: _this84.headers,\n signal: AbortSignal.timeout(_this84.timeout_ms),\n ..._this84.fetchOptions\n });\n const json = yield res.json();\n if (!res.ok) {\n const detail = typeof json.detail === \"string\" ? json.detail : JSON.stringify(json.detail);\n const error = new Error(`Error ${res.status}: ${res.statusText}\\n${detail}`);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n error.statusCode = res.status;\n throw error;\n }\n if (json.commits.length === 0) {\n return undefined;\n }\n return json.commits[0].commit_hash;\n })();\n }\n _likeOrUnlikePrompt(promptIdentifier, like) {\n var _this85 = this;\n return _asyncToGenerator(function* () {\n const [owner, promptName, _] = parsePromptIdentifier(promptIdentifier);\n const response = yield _this85.caller.call(_getFetchImplementation(), `${_this85.apiUrl}/likes/${owner}/${promptName}`, {\n method: \"POST\",\n body: JSON.stringify({\n like: like\n }),\n headers: {\n ..._this85.headers,\n \"Content-Type\": \"application/json\"\n },\n signal: AbortSignal.timeout(_this85.timeout_ms),\n ..._this85.fetchOptions\n });\n yield raiseForStatus(response, `${like ? \"like\" : \"unlike\"} prompt`);\n return yield response.json();\n })();\n }\n _getPromptUrl(promptIdentifier) {\n var _this86 = this;\n return _asyncToGenerator(function* () {\n const [owner, promptName, commitHash] = parsePromptIdentifier(promptIdentifier);\n if (!(yield _this86._currentTenantIsOwner(owner))) {\n if (commitHash !== \"latest\") {\n return `${_this86.getHostUrl()}/hub/${owner}/${promptName}/${commitHash.substring(0, 8)}`;\n } else {\n return `${_this86.getHostUrl()}/hub/${owner}/${promptName}`;\n }\n } else {\n const settings = yield _this86._getSettings();\n if (commitHash !== \"latest\") {\n return `${_this86.getHostUrl()}/prompts/${promptName}/${commitHash.substring(0, 8)}?organizationId=${settings.id}`;\n } else {\n return `${_this86.getHostUrl()}/prompts/${promptName}?organizationId=${settings.id}`;\n }\n }\n })();\n }\n promptExists(promptIdentifier) {\n var _this87 = this;\n return _asyncToGenerator(function* () {\n const prompt = yield _this87.getPrompt(promptIdentifier);\n return !!prompt;\n })();\n }\n likePrompt(promptIdentifier) {\n var _this88 = this;\n return _asyncToGenerator(function* () {\n return _this88._likeOrUnlikePrompt(promptIdentifier, true);\n })();\n }\n unlikePrompt(promptIdentifier) {\n var _this89 = this;\n return _asyncToGenerator(function* () {\n return _this89._likeOrUnlikePrompt(promptIdentifier, false);\n })();\n }\n listCommits(promptOwnerAndName) {\n var _this10 = this;\n return _wrapAsyncGenerator(function* () {\n var _iteratorAbruptCompletion10 = false;\n var _didIteratorError10 = false;\n var _iteratorError10;\n try {\n for (var _iterator10 = _asyncIterator(_this10._getPaginated(`/commits/${promptOwnerAndName}/`, new URLSearchParams(), res => res.commits)), _step10; _iteratorAbruptCompletion10 = !(_step10 = yield _awaitAsyncGenerator(_iterator10.next())).done; _iteratorAbruptCompletion10 = false) {\n const commits = _step10.value;\n {\n yield* _asyncGeneratorDelegate(_asyncIterator(commits), _awaitAsyncGenerator);\n }\n }\n } catch (err) {\n _didIteratorError10 = true;\n _iteratorError10 = err;\n } finally {\n try {\n if (_iteratorAbruptCompletion10 && _iterator10.return != null) {\n yield _awaitAsyncGenerator(_iterator10.return());\n }\n } finally {\n if (_didIteratorError10) {\n throw _iteratorError10;\n }\n }\n }\n })();\n }\n listPrompts(options) {\n var _this11 = this;\n return _wrapAsyncGenerator(function* () {\n var _options$sortField;\n const params = new URLSearchParams();\n params.append(\"sort_field\", (_options$sortField = options === null || options === void 0 ? void 0 : options.sortField) !== null && _options$sortField !== void 0 ? _options$sortField : \"updated_at\");\n params.append(\"sort_direction\", \"desc\");\n params.append(\"is_archived\", (!!(options !== null && options !== void 0 && options.isArchived)).toString());\n if ((options === null || options === void 0 ? void 0 : options.isPublic) !== undefined) {\n params.append(\"is_public\", options.isPublic.toString());\n }\n if (options !== null && options !== void 0 && options.query) {\n params.append(\"query\", options.query);\n }\n var _iteratorAbruptCompletion11 = false;\n var _didIteratorError11 = false;\n var _iteratorError11;\n try {\n for (var _iterator11 = _asyncIterator(_this11._getPaginated(\"/repos\", params, res => res.repos)), _step11; _iteratorAbruptCompletion11 = !(_step11 = yield _awaitAsyncGenerator(_iterator11.next())).done; _iteratorAbruptCompletion11 = false) {\n const prompts = _step11.value;\n {\n yield* _asyncGeneratorDelegate(_asyncIterator(prompts), _awaitAsyncGenerator);\n }\n }\n } catch (err) {\n _didIteratorError11 = true;\n _iteratorError11 = err;\n } finally {\n try {\n if (_iteratorAbruptCompletion11 && _iterator11.return != null) {\n yield _awaitAsyncGenerator(_iterator11.return());\n }\n } finally {\n if (_didIteratorError11) {\n throw _iteratorError11;\n }\n }\n }\n })();\n }\n getPrompt(promptIdentifier) {\n var _this90 = this;\n return _asyncToGenerator(function* () {\n const [owner, promptName, _] = parsePromptIdentifier(promptIdentifier);\n const response = yield _this90.caller.call(_getFetchImplementation(), `${_this90.apiUrl}/repos/${owner}/${promptName}`, {\n method: \"GET\",\n headers: _this90.headers,\n signal: AbortSignal.timeout(_this90.timeout_ms),\n ..._this90.fetchOptions\n });\n if (response.status === 404) {\n return null;\n }\n yield raiseForStatus(response, \"get prompt\");\n const result = yield response.json();\n if (result.repo) {\n return result.repo;\n } else {\n return null;\n }\n })();\n }\n createPrompt(promptIdentifier, options) {\n var _this91 = this;\n return _asyncToGenerator(function* () {\n const settings = yield _this91._getSettings();\n if (options !== null && options !== void 0 && options.isPublic && !settings.tenant_handle) {\n throw new Error(`Cannot create a public prompt without first\\n\n creating a LangChain Hub handle. \n You can add a handle by creating a public prompt at:\\n\n https://smith.langchain.com/prompts`);\n }\n const [owner, promptName, _] = parsePromptIdentifier(promptIdentifier);\n if (!(yield _this91._currentTenantIsOwner(owner))) {\n throw yield _this91._ownerConflictError(\"create a prompt\", owner);\n }\n const data = {\n repo_handle: promptName,\n ...((options === null || options === void 0 ? void 0 : options.description) && {\n description: options.description\n }),\n ...((options === null || options === void 0 ? void 0 : options.readme) && {\n readme: options.readme\n }),\n ...((options === null || options === void 0 ? void 0 : options.tags) && {\n tags: options.tags\n }),\n is_public: !!(options !== null && options !== void 0 && options.isPublic)\n };\n const response = yield _this91.caller.call(_getFetchImplementation(), `${_this91.apiUrl}/repos/`, {\n method: \"POST\",\n headers: {\n ..._this91.headers,\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify(data),\n signal: AbortSignal.timeout(_this91.timeout_ms),\n ..._this91.fetchOptions\n });\n yield raiseForStatus(response, \"create prompt\");\n const {\n repo\n } = yield response.json();\n return repo;\n })();\n }\n createCommit(promptIdentifier, object, options) {\n var _this92 = this;\n return _asyncToGenerator(function* () {\n if (!(yield _this92.promptExists(promptIdentifier))) {\n throw new Error(\"Prompt does not exist, you must create it first.\");\n }\n const [owner, promptName, _] = parsePromptIdentifier(promptIdentifier);\n const resolvedParentCommitHash = (options === null || options === void 0 ? void 0 : options.parentCommitHash) === \"latest\" || !(options !== null && options !== void 0 && options.parentCommitHash) ? yield _this92._getLatestCommitHash(`${owner}/${promptName}`) : options === null || options === void 0 ? void 0 : options.parentCommitHash;\n const payload = {\n manifest: JSON.parse(JSON.stringify(object)),\n parent_commit: resolvedParentCommitHash\n };\n const response = yield _this92.caller.call(_getFetchImplementation(), `${_this92.apiUrl}/commits/${owner}/${promptName}`, {\n method: \"POST\",\n headers: {\n ..._this92.headers,\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify(payload),\n signal: AbortSignal.timeout(_this92.timeout_ms),\n ..._this92.fetchOptions\n });\n yield raiseForStatus(response, \"create commit\");\n const result = yield response.json();\n return _this92._getPromptUrl(`${owner}/${promptName}${result.commit_hash ? `:${result.commit_hash}` : \"\"}`);\n })();\n }\n updatePrompt(promptIdentifier, options) {\n var _this93 = this;\n return _asyncToGenerator(function* () {\n if (!(yield _this93.promptExists(promptIdentifier))) {\n throw new Error(\"Prompt does not exist, you must create it first.\");\n }\n const [owner, promptName] = parsePromptIdentifier(promptIdentifier);\n if (!(yield _this93._currentTenantIsOwner(owner))) {\n throw yield _this93._ownerConflictError(\"update a prompt\", owner);\n }\n const payload = {};\n if ((options === null || options === void 0 ? void 0 : options.description) !== undefined) payload.description = options.description;\n if ((options === null || options === void 0 ? void 0 : options.readme) !== undefined) payload.readme = options.readme;\n if ((options === null || options === void 0 ? void 0 : options.tags) !== undefined) payload.tags = options.tags;\n if ((options === null || options === void 0 ? void 0 : options.isPublic) !== undefined) payload.is_public = options.isPublic;\n if ((options === null || options === void 0 ? void 0 : options.isArchived) !== undefined) payload.is_archived = options.isArchived;\n // Check if payload is empty\n if (Object.keys(payload).length === 0) {\n throw new Error(\"No valid update options provided\");\n }\n const response = yield _this93.caller.call(_getFetchImplementation(), `${_this93.apiUrl}/repos/${owner}/${promptName}`, {\n method: \"PATCH\",\n body: JSON.stringify(payload),\n headers: {\n ..._this93.headers,\n \"Content-Type\": \"application/json\"\n },\n signal: AbortSignal.timeout(_this93.timeout_ms),\n ..._this93.fetchOptions\n });\n yield raiseForStatus(response, \"update prompt\");\n return response.json();\n })();\n }\n deletePrompt(promptIdentifier) {\n var _this94 = this;\n return _asyncToGenerator(function* () {\n if (!(yield _this94.promptExists(promptIdentifier))) {\n throw new Error(\"Prompt does not exist, you must create it first.\");\n }\n const [owner, promptName, _] = parsePromptIdentifier(promptIdentifier);\n if (!(yield _this94._currentTenantIsOwner(owner))) {\n throw yield _this94._ownerConflictError(\"delete a prompt\", owner);\n }\n const response = yield _this94.caller.call(_getFetchImplementation(), `${_this94.apiUrl}/repos/${owner}/${promptName}`, {\n method: \"DELETE\",\n headers: _this94.headers,\n signal: AbortSignal.timeout(_this94.timeout_ms),\n ..._this94.fetchOptions\n });\n return yield response.json();\n })();\n }\n pullPromptCommit(promptIdentifier, options) {\n var _this95 = this;\n return _asyncToGenerator(function* () {\n const [owner, promptName, commitHash] = parsePromptIdentifier(promptIdentifier);\n const serverInfo = yield _this95._getServerInfo();\n const useOptimization = isVersionGreaterOrEqual(serverInfo.version, \"0.5.23\");\n let passedCommitHash = commitHash;\n if (!useOptimization && commitHash === \"latest\") {\n const latestCommitHash = yield _this95._getLatestCommitHash(`${owner}/${promptName}`);\n if (!latestCommitHash) {\n throw new Error(\"No commits found\");\n } else {\n passedCommitHash = latestCommitHash;\n }\n }\n const response = yield _this95.caller.call(_getFetchImplementation(), `${_this95.apiUrl}/commits/${owner}/${promptName}/${passedCommitHash}${options !== null && options !== void 0 && options.includeModel ? \"?include_model=true\" : \"\"}`, {\n method: \"GET\",\n headers: _this95.headers,\n signal: AbortSignal.timeout(_this95.timeout_ms),\n ..._this95.fetchOptions\n });\n yield raiseForStatus(response, \"pull prompt commit\");\n const result = yield response.json();\n return {\n owner,\n repo: promptName,\n commit_hash: result.commit_hash,\n manifest: result.manifest,\n examples: result.examples\n };\n })();\n }\n /**\n * This method should not be used directly, use `import { pull } from \"langchain/hub\"` instead.\n * Using this method directly returns the JSON string of the prompt rather than a LangChain object.\n * @private\n */\n _pullPrompt(promptIdentifier, options) {\n var _this96 = this;\n return _asyncToGenerator(function* () {\n const promptObject = yield _this96.pullPromptCommit(promptIdentifier, {\n includeModel: options === null || options === void 0 ? void 0 : options.includeModel\n });\n const prompt = JSON.stringify(promptObject.manifest);\n return prompt;\n })();\n }\n pushPrompt(promptIdentifier, options) {\n var _this97 = this;\n return _asyncToGenerator(function* () {\n // Create or update prompt metadata\n if (yield _this97.promptExists(promptIdentifier)) {\n if (options && Object.keys(options).some(key => key !== \"object\")) {\n yield _this97.updatePrompt(promptIdentifier, {\n description: options === null || options === void 0 ? void 0 : options.description,\n readme: options === null || options === void 0 ? void 0 : options.readme,\n tags: options === null || options === void 0 ? void 0 : options.tags,\n isPublic: options === null || options === void 0 ? void 0 : options.isPublic\n });\n }\n } else {\n yield _this97.createPrompt(promptIdentifier, {\n description: options === null || options === void 0 ? void 0 : options.description,\n readme: options === null || options === void 0 ? void 0 : options.readme,\n tags: options === null || options === void 0 ? void 0 : options.tags,\n isPublic: options === null || options === void 0 ? void 0 : options.isPublic\n });\n }\n if (!(options !== null && options !== void 0 && options.object)) {\n return yield _this97._getPromptUrl(promptIdentifier);\n }\n // Create a commit with the new manifest\n const url = yield _this97.createCommit(promptIdentifier, options === null || options === void 0 ? void 0 : options.object, {\n parentCommitHash: options === null || options === void 0 ? void 0 : options.parentCommitHash\n });\n return url;\n })();\n }\n /**\n * Clone a public dataset to your own langsmith tenant.\n * This operation is idempotent. If you already have a dataset with the given name,\n * this function will do nothing.\n * @param {string} tokenOrUrl The token of the public dataset to clone.\n * @param {Object} [options] Additional options for cloning the dataset.\n * @param {string} [options.sourceApiUrl] The URL of the langsmith server where the data is hosted. Defaults to the API URL of your current client.\n * @param {string} [options.datasetName] The name of the dataset to create in your tenant. Defaults to the name of the public dataset.\n * @returns {Promise<void>}\n */\n clonePublicDataset(tokenOrUrl, options = {}) {\n var _this98 = this;\n return _asyncToGenerator(function* () {\n var _ds$inputs_schema_def, _ds$outputs_schema_de;\n const {\n sourceApiUrl = _this98.apiUrl,\n datasetName\n } = options;\n const [parsedApiUrl, tokenUuid] = _this98.parseTokenOrUrl(tokenOrUrl, sourceApiUrl);\n const sourceClient = new Client({\n apiUrl: parsedApiUrl,\n // Placeholder API key not needed anymore in most cases, but\n // some private deployments may have API key-based rate limiting\n // that would cause this to fail if we provide no value.\n apiKey: \"placeholder\"\n });\n const ds = yield sourceClient.readSharedDataset(tokenUuid);\n const finalDatasetName = datasetName || ds.name;\n try {\n if (yield _this98.hasDataset({\n datasetId: finalDatasetName\n })) {\n console.log(`Dataset ${finalDatasetName} already exists in your tenant. Skipping.`);\n return;\n }\n } catch (_) {\n // `.hasDataset` will throw an error if the dataset does not exist.\n // no-op in that case\n }\n // Fetch examples first, then create the dataset\n const examples = yield sourceClient.listSharedExamples(tokenUuid);\n const dataset = yield _this98.createDataset(finalDatasetName, {\n description: ds.description,\n dataType: ds.data_type || \"kv\",\n inputsSchema: (_ds$inputs_schema_def = ds.inputs_schema_definition) !== null && _ds$inputs_schema_def !== void 0 ? _ds$inputs_schema_def : undefined,\n outputsSchema: (_ds$outputs_schema_de = ds.outputs_schema_definition) !== null && _ds$outputs_schema_de !== void 0 ? _ds$outputs_schema_de : undefined\n });\n try {\n yield _this98.createExamples({\n inputs: examples.map(e => e.inputs),\n outputs: examples.flatMap(e => e.outputs ? [e.outputs] : []),\n datasetId: dataset.id\n });\n } catch (e) {\n console.error(`An error occurred while creating dataset ${finalDatasetName}. ` + \"You should delete it manually.\");\n throw e;\n }\n })();\n }\n parseTokenOrUrl(urlOrToken, apiUrl, numParts = 2, kind = \"dataset\") {\n // Try parsing as UUID\n try {\n assertUuid(urlOrToken); // Will throw if it's not a UUID.\n return [apiUrl, urlOrToken];\n } catch (_) {\n // no-op if it's not a uuid\n }\n // Parse as URL\n try {\n const parsedUrl = new URL(urlOrToken);\n const pathParts = parsedUrl.pathname.split(\"/\").filter(part => part !== \"\");\n if (pathParts.length >= numParts) {\n const tokenUuid = pathParts[pathParts.length - numParts];\n return [apiUrl, tokenUuid];\n } else {\n throw new Error(`Invalid public ${kind} URL: ${urlOrToken}`);\n }\n } catch (error) {\n throw new Error(`Invalid public ${kind} URL or token: ${urlOrToken}`);\n }\n }\n /**\n * Awaits all pending trace batches. Useful for environments where\n * you need to be sure that all tracing requests finish before execution ends,\n * such as serverless environments.\n *\n * @example\n * ```\n * import { Client } from \"langsmith\";\n *\n * const client = new Client();\n *\n * try {\n * // Tracing happens here\n * ...\n * } finally {\n * await client.awaitPendingTraceBatches();\n * }\n * ```\n *\n * @returns A promise that resolves once all currently pending traces have sent.\n */\n awaitPendingTraceBatches() {\n return Promise.all([...this.autoBatchQueue.items.map(({\n itemPromise\n }) => itemPromise), this.batchIngestCaller.queue.onIdle()]);\n }\n}","map":{"version":3,"names":["uuid","AsyncCaller","convertLangChainMessageToExample","isLangChainMessage","getEnvironmentVariable","getLangChainEnvVarsMetadata","getLangSmithEnvironmentVariable","getRuntimeEnvironment","__version__","assertUuid","warnOnce","isVersionGreaterOrEqual","parsePromptIdentifier","raiseForStatus","_getFetchImplementation","stringify","stringifyForTracing","mergeRuntimeEnvIntoRunCreate","run","_run$extra","_run$revision_id","runtimeEnv","envVars","extra","metadata","runtime","revision_id","getTracingSamplingRate","samplingRateStr","undefined","samplingRate","parseFloat","Error","isLocalhost","url","strippedUrl","replace","hostname","split","toArray","_x","_toArray","apply","arguments","_asyncToGenerator","iterable","result","_iteratorAbruptCompletion","_didIteratorError","_iteratorError","_iterator","_asyncIterator","_step","next","done","item","value","push","err","return","trimQuotes","str","trim","handle429","_ref","response","status","_response$headers$get","retryAfter","parseInt","headers","get","Promise","resolve","setTimeout","_x2","AutoBatchQueue","constructor","Object","defineProperty","enumerable","configurable","writable","peek","items","itemPromiseResolve","itemPromise","size","length","action","payload","sizeBytes","pop","upToSizeBytes","popped","poppedSizeBytes","_this$peek$size","_this$peek","shift","map","it","forEach","DEFAULT_BATCH_SIZE_LIMIT_BYTES","SERVER_INFO_REQUEST_TIMEOUT","Client","config","_trimQuotes","_config$apiUrl","_config$apiKey","_config$webUrl","_this$webUrl","_config$timeout_ms","_config$callerOptions","_config$traceBatchCon","_config$callerOptions2","_ref2","_config$hideInputs","_ref3","_config$hideOutputs","_config$autoBatchTrac","_config$blockOnRootRu","Set","defaultConfig","getDefaultClientConfig","tracingSampleRate","apiUrl","endsWith","slice","apiKey","webUrl","timeout_ms","caller","callerOptions","traceBatchConcurrency","batchIngestCaller","maxRetries","maxConcurrency","onFailedResponseHook","hideInputs","anonymizer","hideOutputs","autoBatchTracing","blockOnRootRunFinalization","batchSizeBytesLimit","fetchOptions","_getLangSmithEnvironm","getHostUrl","includes","processInputs","inputs","processOutputs","outputs","prepareRunCreateOrUpdateInputs","runParams","_getResponse","path","queryParams","_this12","_queryParams$toString","paramsString","toString","call","method","signal","AbortSignal","timeout","_get","_this13","json","_getPaginated","URLSearchParams","transform","_this","_wrapAsyncGenerator","offset","Number","limit","set","String","_awaitAsyncGenerator","_getCursorPaginatedList","body","requestMethod","dataKey","_this2","bodyParams","JSON","responseBody","cursors","cursor","_filterForSampling","runs","patch","sampled","filteredPostUuids","has","id","delete","trace_id","Math","random","add","_getBatchSizeLimitBytes","_this14","_ref4","_this14$batchSizeByte","_serverInfo$batch_ing","serverInfo","_ensureServerInfo","batch_ingest_config","size_limit_bytes","drainAutoBatchQueue","batchSizeLimit","autoBatchQueue","batch","_processBatch","catch","console","error","_this15","_serverInfo$batch_ing2","ingestParams","runCreates","filter","runUpdates","use_multipart_endpoint","multipartIngestRuns","batchIngestRuns","processRunOperation","_this16","clearTimeout","autoBatchTimeout","sizeLimitBytes","autoBatchAggregationDelayMs","_getServerInfo","_this17","Accept","_this18","_getServerInfoPromise","_this18$_serverInfo","_serverInfo","e","warn","then","_getSettings","_this19","settings","createRun","_this20","_run$start_time","session_name","project_name","runCreate","start_time","Date","now","dotted_order","mergedRunCreateParam","_this21","_runCreates$map","_runUpdates$map","preparedCreateParams","create","preparedUpdateParams","update","createById","reduce","params","standaloneUpdates","updateParam","values","rawBatch","post","batchChunks","k","key","batchItems","reverse","batchItem","_postBatchIngestRuns","_this22","_this23","allAttachments","preparedCreate","attachments","invalidRunCreate","find","invalidRunUpdate","runUpdate","accumulatedContext","accumulatedParts","payloads","originalPayload","events","fields","stringifiedPayload","name","Blob","type","entries","stringifiedValue","contentType","content","byteLength","_sendMultipartRequest","join","parts","context","_this24","boundary","chunks","part","arrayBuffer","res","message","updateRun","runId","_this25","data","end_time","parent_run_id","readRun","loadChildRuns","_this26","child_run_ids","_loadChildRuns","getRunUrl","projectOpts","_this27","sessionId","session_id","projectName","readProject","projectId","project","tenantId","_getTenantId","run_","app_path","baseUrl","_this28","childRuns","listRuns","treemap","sort","a","b","_a$dotted_order","_b$dotted_order","localeCompare","childRun","child_runs","props","_this3","parentRunId","traceId","referenceExampleId","startTime","executionOrder","isRoot","runType","query","traceFilter","treeFilter","select","projectIds","Array","isArray","projectNames","projectIds_","all","default_select","session","run_type","reference_example","trace_filter","tree_filter","execution_order","parent_run","toISOString","trace","is_root","runsYielded","_iteratorAbruptCompletion2","_didIteratorError2","_iteratorError2","_iterator2","_step2","newRuns","_asyncGeneratorDelegate","getRunStats","parentRun","referenceExampleIds","endTime","dataSourceType","_this29","data_source_type","filteredPayload","fromEntries","_","shareRun","shareId","_this30","run_id","share_token","v4","unshareRun","_this31","readRunSharedLink","_this32","listSharedRuns","shareToken","runIds","_this33","append","readDatasetSharedSchema","datasetId","datasetName","_this34","dataset","readDataset","shareSchema","shareDataset","_this35","dataset_id","unshareDataset","_this36","readSharedDataset","_this37","listSharedExamples","options","_this38","exampleIds","urlParams","v","ok","detail","statusText","example","_hostUrl","createProject","description","upsert","projectExtra","referenceDatasetId","_this39","upsert_","endpoint","updateProject","_this40","hasProject","_this41","includeStats","_this42","getProjectUrl","_this43","getDatasetUrl","_this44","_this45","_tenantId","_iteratorAbruptCompletion3","_didIteratorError3","_iteratorError3","_iterator3","_step3","projects","tenant_id","listProjects","nameContains","referenceDatasetName","referenceFree","_this4","_iteratorAbruptCompletion4","_didIteratorError4","_iteratorError4","_iterator4","_step4","deleteProject","_this46","projectId_","uploadCsv","csvFile","fileName","inputKeys","outputKeys","dataType","_this47","formData","FormData","createDataset","inputsSchema","outputsSchema","_this48","data_type","inputs_schema_definition","outputs_schema_definition","_this49","hasDataset","_this50","toLocaleLowerCase","diffDatasetVersions","fromVersion","toVersion","_this51","datasetId_","from_version","to_version","readDatasetOpenaiFinetuning","_this52","datasetText","text","line","parse","listDatasets","datasetIds","datasetNameContains","_this5","id_","_iteratorAbruptCompletion5","_didIteratorError5","_iteratorError5","_iterator5","_step5","datasets","updateDataset","_this53","_datasetId","deleteDataset","_this54","indexDataset","tag","_this55","similarExamples","_this56","createExample","createdAt","exampleId","sourceRunId","_this57","createdAt_","created_at","source_run_id","createExamples","_this58","sourceRunIds","formattedExamples","input","idx","splits","createLLMExample","generation","_this59","output","createChatExample","generations","_this60","finalInput","finalOutput","readExample","_this61","listExamples","asOf","inlineS3Urls","_this6","dataset_version","inlineS3Urls_","serializedMetadata","i","_iteratorAbruptCompletion6","_didIteratorError6","_iteratorError6","_iterator6","_step6","examples","deleteExample","_this62","updateExample","_this63","updateExamples","_this64","listDatasetSplits","_this65","updateDatasetSplits","splitName","remove","_this66","split_name","evaluateRun","evaluator","sourceInfo","referenceExample","_this67","reference_example_id","feedbackResult","feedbacks","_logEvaluationFeedback","createFeedback","score","correction","comment","feedbackSourceType","feedbackId","feedbackConfig","comparativeExperimentId","_this68","_feedback_source$meta","feedback_source","feedback","comparative_experiment_id","updateFeedback","_this69","feedbackUpdate","readFeedback","_this70","deleteFeedback","_this71","listFeedback","feedbackKeys","feedbackSourceTypes","_this7","_iteratorAbruptCompletion7","_didIteratorError7","_iteratorError7","_iterator7","_step7","createPresignedFeedbackToken","feedbackKey","expiration","_this72","feedback_key","feedback_config","hours","minutes","days","createComparativeExperiment","experimentIds","_this73","_ref6","reference_dataset_id","experiment_ids","listPresignedFeedbackTokens","_this8","_iteratorAbruptCompletion8","_didIteratorError8","_iteratorError8","_iterator8","_step8","tokens","_selectEvalResults","results","results_","evaluatorResponse","_this74","evalResults","sourceInfo_","evaluatorInfo","runId_","targetRunId","logEvaluationFeedback","_this75","listAnnotationQueues","_this9","queueIds","min","count","_iteratorAbruptCompletion9","_didIteratorError9","_iteratorError9","_iterator9","_step9","queues","createAnnotationQueue","_this76","queueId","readAnnotationQueue","_this77","queueIteratorResult","updateAnnotationQueue","_this78","deleteAnnotationQueue","_this79","addRunsToAnnotationQueue","_this80","getRunFromAnnotationQueue","index","_this81","_currentTenantIsOwner","owner","_this82","tenant_handle","_ownerConflictError","_this83","_getLatestCommitHash","promptOwnerAndName","_this84","statusCode","commits","commit_hash","_likeOrUnlikePrompt","promptIdentifier","like","_this85","promptName","_getPromptUrl","_this86","commitHash","substring","promptExists","_this87","prompt","getPrompt","likePrompt","_this88","unlikePrompt","_this89","listCommits","_this10","_iteratorAbruptCompletion10","_didIteratorError10","_iteratorError10","_iterator10","_step10","listPrompts","_this11","_options$sortField","sortField","isArchived","isPublic","_iteratorAbruptCompletion11","_didIteratorError11","_iteratorError11","_iterator11","repos","_step11","prompts","_this90","repo","createPrompt","_this91","repo_handle","readme","tags","is_public","createCommit","object","_this92","resolvedParentCommitHash","parentCommitHash","manifest","parent_commit","updatePrompt","_this93","is_archived","keys","deletePrompt","_this94","pullPromptCommit","_this95","useOptimization","version","passedCommitHash","latestCommitHash","includeModel","_pullPrompt","_this96","promptObject","pushPrompt","_this97","some","clonePublicDataset","tokenOrUrl","_this98","_ds$inputs_schema_def","_ds$outputs_schema_de","sourceApiUrl","parsedApiUrl","tokenUuid","parseTokenOrUrl","sourceClient","ds","finalDatasetName","log","flatMap","urlOrToken","numParts","kind","parsedUrl","URL","pathParts","pathname","awaitPendingTraceBatches","queue","onIdle"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/langsmith/dist/client.js"],"sourcesContent":["import * as uuid from \"uuid\";\nimport { AsyncCaller } from \"./utils/async_caller.js\";\nimport { convertLangChainMessageToExample, isLangChainMessage, } from \"./utils/messages.js\";\nimport { getEnvironmentVariable, getLangChainEnvVarsMetadata, getLangSmithEnvironmentVariable, getRuntimeEnvironment, } from \"./utils/env.js\";\nimport { __version__ } from \"./index.js\";\nimport { assertUuid } from \"./utils/_uuid.js\";\nimport { warnOnce } from \"./utils/warn.js\";\nimport { isVersionGreaterOrEqual, parsePromptIdentifier, } from \"./utils/prompts.js\";\nimport { raiseForStatus } from \"./utils/error.js\";\nimport { _getFetchImplementation } from \"./singletons/fetch.js\";\nimport { stringify as stringifyForTracing } from \"./utils/fast-safe-stringify/index.js\";\nexport function mergeRuntimeEnvIntoRunCreate(run) {\n const runtimeEnv = getRuntimeEnvironment();\n const envVars = getLangChainEnvVarsMetadata();\n const extra = run.extra ?? {};\n const metadata = extra.metadata;\n run.extra = {\n ...extra,\n runtime: {\n ...runtimeEnv,\n ...extra?.runtime,\n },\n metadata: {\n ...envVars,\n ...(envVars.revision_id || run.revision_id\n ? { revision_id: run.revision_id ?? envVars.revision_id }\n : {}),\n ...metadata,\n },\n };\n return run;\n}\nconst getTracingSamplingRate = () => {\n const samplingRateStr = getLangSmithEnvironmentVariable(\"TRACING_SAMPLING_RATE\");\n if (samplingRateStr === undefined) {\n return undefined;\n }\n const samplingRate = parseFloat(samplingRateStr);\n if (samplingRate < 0 || samplingRate > 1) {\n throw new Error(`LANGSMITH_TRACING_SAMPLING_RATE must be between 0 and 1 if set. Got: ${samplingRate}`);\n }\n return samplingRate;\n};\n// utility functions\nconst isLocalhost = (url) => {\n const strippedUrl = url.replace(\"http://\", \"\").replace(\"https://\", \"\");\n const hostname = strippedUrl.split(\"/\")[0].split(\":\")[0];\n return (hostname === \"localhost\" || hostname === \"127.0.0.1\" || hostname === \"::1\");\n};\nasync function toArray(iterable) {\n const result = [];\n for await (const item of iterable) {\n result.push(item);\n }\n return result;\n}\nfunction trimQuotes(str) {\n if (str === undefined) {\n return undefined;\n }\n return str\n .trim()\n .replace(/^\"(.*)\"$/, \"$1\")\n .replace(/^'(.*)'$/, \"$1\");\n}\nconst handle429 = async (response) => {\n if (response?.status === 429) {\n const retryAfter = parseInt(response.headers.get(\"retry-after\") ?? \"30\", 10) * 1000;\n if (retryAfter > 0) {\n await new Promise((resolve) => setTimeout(resolve, retryAfter));\n // Return directly after calling this check\n return true;\n }\n }\n // Fall back to existing status checks\n return false;\n};\nexport class AutoBatchQueue {\n constructor() {\n Object.defineProperty(this, \"items\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n Object.defineProperty(this, \"sizeBytes\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n }\n peek() {\n return this.items[0];\n }\n push(item) {\n let itemPromiseResolve;\n const itemPromise = new Promise((resolve) => {\n // Setting itemPromiseResolve is synchronous with promise creation:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/Promise\n itemPromiseResolve = resolve;\n });\n const size = stringifyForTracing(item.item).length;\n this.items.push({\n action: item.action,\n payload: item.item,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n itemPromiseResolve: itemPromiseResolve,\n itemPromise,\n size,\n });\n this.sizeBytes += size;\n return itemPromise;\n }\n pop(upToSizeBytes) {\n if (upToSizeBytes < 1) {\n throw new Error(\"Number of bytes to pop off may not be less than 1.\");\n }\n const popped = [];\n let poppedSizeBytes = 0;\n // Pop items until we reach or exceed the size limit\n while (poppedSizeBytes + (this.peek()?.size ?? 0) < upToSizeBytes &&\n this.items.length > 0) {\n const item = this.items.shift();\n if (item) {\n popped.push(item);\n poppedSizeBytes += item.size;\n this.sizeBytes -= item.size;\n }\n }\n // If there is an item on the queue we were unable to pop,\n // just return it as a single batch.\n if (popped.length === 0 && this.items.length > 0) {\n const item = this.items.shift();\n popped.push(item);\n poppedSizeBytes += item.size;\n this.sizeBytes -= item.size;\n }\n return [\n popped.map((it) => ({ action: it.action, item: it.payload })),\n () => popped.forEach((it) => it.itemPromiseResolve()),\n ];\n }\n}\n// 20 MB\nexport const DEFAULT_BATCH_SIZE_LIMIT_BYTES = 20_971_520;\nconst SERVER_INFO_REQUEST_TIMEOUT = 1000;\nexport class Client {\n constructor(config = {}) {\n Object.defineProperty(this, \"apiKey\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"apiUrl\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"webUrl\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"caller\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"batchIngestCaller\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"timeout_ms\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_tenantId\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n Object.defineProperty(this, \"hideInputs\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"hideOutputs\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"tracingSampleRate\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"filteredPostUuids\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new Set()\n });\n Object.defineProperty(this, \"autoBatchTracing\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: true\n });\n Object.defineProperty(this, \"autoBatchQueue\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new AutoBatchQueue()\n });\n Object.defineProperty(this, \"autoBatchTimeout\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"autoBatchAggregationDelayMs\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 250\n });\n Object.defineProperty(this, \"batchSizeBytesLimit\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"fetchOptions\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"settings\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"blockOnRootRunFinalization\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: getEnvironmentVariable(\"LANGSMITH_TRACING_BACKGROUND\") === \"false\"\n });\n Object.defineProperty(this, \"traceBatchConcurrency\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 5\n });\n Object.defineProperty(this, \"_serverInfo\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Object.defineProperty(this, \"_getServerInfoPromise\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n const defaultConfig = Client.getDefaultClientConfig();\n this.tracingSampleRate = getTracingSamplingRate();\n this.apiUrl = trimQuotes(config.apiUrl ?? defaultConfig.apiUrl) ?? \"\";\n if (this.apiUrl.endsWith(\"/\")) {\n this.apiUrl = this.apiUrl.slice(0, -1);\n }\n this.apiKey = trimQuotes(config.apiKey ?? defaultConfig.apiKey);\n this.webUrl = trimQuotes(config.webUrl ?? defaultConfig.webUrl);\n if (this.webUrl?.endsWith(\"/\")) {\n this.webUrl = this.webUrl.slice(0, -1);\n }\n this.timeout_ms = config.timeout_ms ?? 90_000;\n this.caller = new AsyncCaller(config.callerOptions ?? {});\n this.traceBatchConcurrency =\n config.traceBatchConcurrency ?? this.traceBatchConcurrency;\n if (this.traceBatchConcurrency < 1) {\n throw new Error(\"Trace batch concurrency must be positive.\");\n }\n this.batchIngestCaller = new AsyncCaller({\n maxRetries: 2,\n maxConcurrency: this.traceBatchConcurrency,\n ...(config.callerOptions ?? {}),\n onFailedResponseHook: handle429,\n });\n this.hideInputs =\n config.hideInputs ?? config.anonymizer ?? defaultConfig.hideInputs;\n this.hideOutputs =\n config.hideOutputs ?? config.anonymizer ?? defaultConfig.hideOutputs;\n this.autoBatchTracing = config.autoBatchTracing ?? this.autoBatchTracing;\n this.blockOnRootRunFinalization =\n config.blockOnRootRunFinalization ?? this.blockOnRootRunFinalization;\n this.batchSizeBytesLimit = config.batchSizeBytesLimit;\n this.fetchOptions = config.fetchOptions || {};\n }\n static getDefaultClientConfig() {\n const apiKey = getLangSmithEnvironmentVariable(\"API_KEY\");\n const apiUrl = getLangSmithEnvironmentVariable(\"ENDPOINT\") ??\n \"https://api.smith.langchain.com\";\n const hideInputs = getLangSmithEnvironmentVariable(\"HIDE_INPUTS\") === \"true\";\n const hideOutputs = getLangSmithEnvironmentVariable(\"HIDE_OUTPUTS\") === \"true\";\n return {\n apiUrl: apiUrl,\n apiKey: apiKey,\n webUrl: undefined,\n hideInputs: hideInputs,\n hideOutputs: hideOutputs,\n };\n }\n getHostUrl() {\n if (this.webUrl) {\n return this.webUrl;\n }\n else if (isLocalhost(this.apiUrl)) {\n this.webUrl = \"http://localhost:3000\";\n return this.webUrl;\n }\n else if (this.apiUrl.includes(\"/api\") &&\n !this.apiUrl.split(\".\", 1)[0].endsWith(\"api\")) {\n this.webUrl = this.apiUrl.replace(\"/api\", \"\");\n return this.webUrl;\n }\n else if (this.apiUrl.split(\".\", 1)[0].includes(\"dev\")) {\n this.webUrl = \"https://dev.smith.langchain.com\";\n return this.webUrl;\n }\n else if (this.apiUrl.split(\".\", 1)[0].includes(\"eu\")) {\n this.webUrl = \"https://eu.smith.langchain.com\";\n return this.webUrl;\n }\n else {\n this.webUrl = \"https://smith.langchain.com\";\n return this.webUrl;\n }\n }\n get headers() {\n const headers = {\n \"User-Agent\": `langsmith-js/${__version__}`,\n };\n if (this.apiKey) {\n headers[\"x-api-key\"] = `${this.apiKey}`;\n }\n return headers;\n }\n processInputs(inputs) {\n if (this.hideInputs === false) {\n return inputs;\n }\n if (this.hideInputs === true) {\n return {};\n }\n if (typeof this.hideInputs === \"function\") {\n return this.hideInputs(inputs);\n }\n return inputs;\n }\n processOutputs(outputs) {\n if (this.hideOutputs === false) {\n return outputs;\n }\n if (this.hideOutputs === true) {\n return {};\n }\n if (typeof this.hideOutputs === \"function\") {\n return this.hideOutputs(outputs);\n }\n return outputs;\n }\n prepareRunCreateOrUpdateInputs(run) {\n const runParams = { ...run };\n if (runParams.inputs !== undefined) {\n runParams.inputs = this.processInputs(runParams.inputs);\n }\n if (runParams.outputs !== undefined) {\n runParams.outputs = this.processOutputs(runParams.outputs);\n }\n return runParams;\n }\n async _getResponse(path, queryParams) {\n const paramsString = queryParams?.toString() ?? \"\";\n const url = `${this.apiUrl}${path}?${paramsString}`;\n const response = await this.caller.call(_getFetchImplementation(), url, {\n method: \"GET\",\n headers: this.headers,\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n await raiseForStatus(response, `Failed to fetch ${path}`);\n return response;\n }\n async _get(path, queryParams) {\n const response = await this._getResponse(path, queryParams);\n return response.json();\n }\n async *_getPaginated(path, queryParams = new URLSearchParams(), transform) {\n let offset = Number(queryParams.get(\"offset\")) || 0;\n const limit = Number(queryParams.get(\"limit\")) || 100;\n while (true) {\n queryParams.set(\"offset\", String(offset));\n queryParams.set(\"limit\", String(limit));\n const url = `${this.apiUrl}${path}?${queryParams}`;\n const response = await this.caller.call(_getFetchImplementation(), url, {\n method: \"GET\",\n headers: this.headers,\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n await raiseForStatus(response, `Failed to fetch ${path}`);\n const items = transform\n ? transform(await response.json())\n : await response.json();\n if (items.length === 0) {\n break;\n }\n yield items;\n if (items.length < limit) {\n break;\n }\n offset += items.length;\n }\n }\n async *_getCursorPaginatedList(path, body = null, requestMethod = \"POST\", dataKey = \"runs\") {\n const bodyParams = body ? { ...body } : {};\n while (true) {\n const response = await this.caller.call(_getFetchImplementation(), `${this.apiUrl}${path}`, {\n method: requestMethod,\n headers: { ...this.headers, \"Content-Type\": \"application/json\" },\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n body: JSON.stringify(bodyParams),\n });\n const responseBody = await response.json();\n if (!responseBody) {\n break;\n }\n if (!responseBody[dataKey]) {\n break;\n }\n yield responseBody[dataKey];\n const cursors = responseBody.cursors;\n if (!cursors) {\n break;\n }\n if (!cursors.next) {\n break;\n }\n bodyParams.cursor = cursors.next;\n }\n }\n _filterForSampling(runs, patch = false) {\n if (this.tracingSampleRate === undefined) {\n return runs;\n }\n if (patch) {\n const sampled = [];\n for (const run of runs) {\n if (!this.filteredPostUuids.has(run.id)) {\n sampled.push(run);\n }\n else {\n this.filteredPostUuids.delete(run.id);\n }\n }\n return sampled;\n }\n else {\n const sampled = [];\n for (const run of runs) {\n if ((run.id !== run.trace_id &&\n !this.filteredPostUuids.has(run.trace_id)) ||\n Math.random() < this.tracingSampleRate) {\n sampled.push(run);\n }\n else {\n this.filteredPostUuids.add(run.id);\n }\n }\n return sampled;\n }\n }\n async _getBatchSizeLimitBytes() {\n const serverInfo = await this._ensureServerInfo();\n return (this.batchSizeBytesLimit ??\n serverInfo.batch_ingest_config?.size_limit_bytes ??\n DEFAULT_BATCH_SIZE_LIMIT_BYTES);\n }\n drainAutoBatchQueue(batchSizeLimit) {\n while (this.autoBatchQueue.items.length > 0) {\n const [batch, done] = this.autoBatchQueue.pop(batchSizeLimit);\n if (!batch.length) {\n done();\n break;\n }\n void this._processBatch(batch, done).catch(console.error);\n }\n }\n async _processBatch(batch, done) {\n if (!batch.length) {\n done();\n return;\n }\n try {\n const ingestParams = {\n runCreates: batch\n .filter((item) => item.action === \"create\")\n .map((item) => item.item),\n runUpdates: batch\n .filter((item) => item.action === \"update\")\n .map((item) => item.item),\n };\n const serverInfo = await this._ensureServerInfo();\n if (serverInfo?.batch_ingest_config?.use_multipart_endpoint) {\n await this.multipartIngestRuns(ingestParams);\n }\n else {\n await this.batchIngestRuns(ingestParams);\n }\n }\n finally {\n done();\n }\n }\n async processRunOperation(item) {\n clearTimeout(this.autoBatchTimeout);\n this.autoBatchTimeout = undefined;\n if (item.action === \"create\") {\n item.item = mergeRuntimeEnvIntoRunCreate(item.item);\n }\n const itemPromise = this.autoBatchQueue.push(item);\n const sizeLimitBytes = await this._getBatchSizeLimitBytes();\n if (this.autoBatchQueue.sizeBytes > sizeLimitBytes) {\n this.drainAutoBatchQueue(sizeLimitBytes);\n }\n if (this.autoBatchQueue.items.length > 0) {\n this.autoBatchTimeout = setTimeout(() => {\n this.autoBatchTimeout = undefined;\n this.drainAutoBatchQueue(sizeLimitBytes);\n }, this.autoBatchAggregationDelayMs);\n }\n return itemPromise;\n }\n async _getServerInfo() {\n const response = await _getFetchImplementation()(`${this.apiUrl}/info`, {\n method: \"GET\",\n headers: { Accept: \"application/json\" },\n signal: AbortSignal.timeout(SERVER_INFO_REQUEST_TIMEOUT),\n ...this.fetchOptions,\n });\n await raiseForStatus(response, \"get server info\");\n return response.json();\n }\n async _ensureServerInfo() {\n if (this._getServerInfoPromise === undefined) {\n this._getServerInfoPromise = (async () => {\n if (this._serverInfo === undefined) {\n try {\n this._serverInfo = await this._getServerInfo();\n }\n catch (e) {\n console.warn(`[WARNING]: LangSmith failed to fetch info on supported operations. Falling back to batch operations and default limits.`);\n }\n }\n return this._serverInfo ?? {};\n })();\n }\n return this._getServerInfoPromise.then((serverInfo) => {\n if (this._serverInfo === undefined) {\n this._getServerInfoPromise = undefined;\n }\n return serverInfo;\n });\n }\n async _getSettings() {\n if (!this.settings) {\n this.settings = this._get(\"/settings\");\n }\n return await this.settings;\n }\n async createRun(run) {\n if (!this._filterForSampling([run]).length) {\n return;\n }\n const headers = { ...this.headers, \"Content-Type\": \"application/json\" };\n const session_name = run.project_name;\n delete run.project_name;\n const runCreate = this.prepareRunCreateOrUpdateInputs({\n session_name,\n ...run,\n start_time: run.start_time ?? Date.now(),\n });\n if (this.autoBatchTracing &&\n runCreate.trace_id !== undefined &&\n runCreate.dotted_order !== undefined) {\n void this.processRunOperation({\n action: \"create\",\n item: runCreate,\n }).catch(console.error);\n return;\n }\n const mergedRunCreateParam = mergeRuntimeEnvIntoRunCreate(runCreate);\n const response = await this.caller.call(_getFetchImplementation(), `${this.apiUrl}/runs`, {\n method: \"POST\",\n headers,\n body: stringifyForTracing(mergedRunCreateParam),\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n await raiseForStatus(response, \"create run\", true);\n }\n /**\n * Batch ingest/upsert multiple runs in the Langsmith system.\n * @param runs\n */\n async batchIngestRuns({ runCreates, runUpdates, }) {\n if (runCreates === undefined && runUpdates === undefined) {\n return;\n }\n let preparedCreateParams = runCreates?.map((create) => this.prepareRunCreateOrUpdateInputs(create)) ?? [];\n let preparedUpdateParams = runUpdates?.map((update) => this.prepareRunCreateOrUpdateInputs(update)) ?? [];\n if (preparedCreateParams.length > 0 && preparedUpdateParams.length > 0) {\n const createById = preparedCreateParams.reduce((params, run) => {\n if (!run.id) {\n return params;\n }\n params[run.id] = run;\n return params;\n }, {});\n const standaloneUpdates = [];\n for (const updateParam of preparedUpdateParams) {\n if (updateParam.id !== undefined && createById[updateParam.id]) {\n createById[updateParam.id] = {\n ...createById[updateParam.id],\n ...updateParam,\n };\n }\n else {\n standaloneUpdates.push(updateParam);\n }\n }\n preparedCreateParams = Object.values(createById);\n preparedUpdateParams = standaloneUpdates;\n }\n const rawBatch = {\n post: this._filterForSampling(preparedCreateParams),\n patch: this._filterForSampling(preparedUpdateParams, true),\n };\n if (!rawBatch.post.length && !rawBatch.patch.length) {\n return;\n }\n const batchChunks = {\n post: [],\n patch: [],\n };\n for (const k of [\"post\", \"patch\"]) {\n const key = k;\n const batchItems = rawBatch[key].reverse();\n let batchItem = batchItems.pop();\n while (batchItem !== undefined) {\n batchChunks[key].push(batchItem);\n batchItem = batchItems.pop();\n }\n }\n if (batchChunks.post.length > 0 || batchChunks.patch.length > 0) {\n await this._postBatchIngestRuns(stringifyForTracing(batchChunks));\n }\n }\n async _postBatchIngestRuns(body) {\n const headers = {\n ...this.headers,\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n };\n const response = await this.batchIngestCaller.call(_getFetchImplementation(), `${this.apiUrl}/runs/batch`, {\n method: \"POST\",\n headers,\n body: body,\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n await raiseForStatus(response, \"batch create run\", true);\n }\n /**\n * Batch ingest/upsert multiple runs in the Langsmith system.\n * @param runs\n */\n async multipartIngestRuns({ runCreates, runUpdates, }) {\n if (runCreates === undefined && runUpdates === undefined) {\n return;\n }\n // transform and convert to dicts\n const allAttachments = {};\n let preparedCreateParams = [];\n for (const create of runCreates ?? []) {\n const preparedCreate = this.prepareRunCreateOrUpdateInputs(create);\n if (preparedCreate.id !== undefined &&\n preparedCreate.attachments !== undefined) {\n allAttachments[preparedCreate.id] = preparedCreate.attachments;\n }\n delete preparedCreate.attachments;\n preparedCreateParams.push(preparedCreate);\n }\n let preparedUpdateParams = [];\n for (const update of runUpdates ?? []) {\n preparedUpdateParams.push(this.prepareRunCreateOrUpdateInputs(update));\n }\n // require trace_id and dotted_order\n const invalidRunCreate = preparedCreateParams.find((runCreate) => {\n return (runCreate.trace_id === undefined || runCreate.dotted_order === undefined);\n });\n if (invalidRunCreate !== undefined) {\n throw new Error(`Multipart ingest requires \"trace_id\" and \"dotted_order\" to be set when creating a run`);\n }\n const invalidRunUpdate = preparedUpdateParams.find((runUpdate) => {\n return (runUpdate.trace_id === undefined || runUpdate.dotted_order === undefined);\n });\n if (invalidRunUpdate !== undefined) {\n throw new Error(`Multipart ingest requires \"trace_id\" and \"dotted_order\" to be set when updating a run`);\n }\n // combine post and patch dicts where possible\n if (preparedCreateParams.length > 0 && preparedUpdateParams.length > 0) {\n const createById = preparedCreateParams.reduce((params, run) => {\n if (!run.id) {\n return params;\n }\n params[run.id] = run;\n return params;\n }, {});\n const standaloneUpdates = [];\n for (const updateParam of preparedUpdateParams) {\n if (updateParam.id !== undefined && createById[updateParam.id]) {\n createById[updateParam.id] = {\n ...createById[updateParam.id],\n ...updateParam,\n };\n }\n else {\n standaloneUpdates.push(updateParam);\n }\n }\n preparedCreateParams = Object.values(createById);\n preparedUpdateParams = standaloneUpdates;\n }\n if (preparedCreateParams.length === 0 &&\n preparedUpdateParams.length === 0) {\n return;\n }\n // send the runs in multipart requests\n const accumulatedContext = [];\n const accumulatedParts = [];\n for (const [method, payloads] of [\n [\"post\", preparedCreateParams],\n [\"patch\", preparedUpdateParams],\n ]) {\n for (const originalPayload of payloads) {\n // collect fields to be sent as separate parts\n const { inputs, outputs, events, attachments, ...payload } = originalPayload;\n const fields = { inputs, outputs, events };\n // encode the main run payload\n const stringifiedPayload = stringifyForTracing(payload);\n accumulatedParts.push({\n name: `${method}.${payload.id}`,\n payload: new Blob([stringifiedPayload], {\n type: `application/json; length=${stringifiedPayload.length}`, // encoding=gzip\n }),\n });\n // encode the fields we collected\n for (const [key, value] of Object.entries(fields)) {\n if (value === undefined) {\n continue;\n }\n const stringifiedValue = stringifyForTracing(value);\n accumulatedParts.push({\n name: `${method}.${payload.id}.${key}`,\n payload: new Blob([stringifiedValue], {\n type: `application/json; length=${stringifiedValue.length}`,\n }),\n });\n }\n // encode the attachments\n if (payload.id !== undefined) {\n const attachments = allAttachments[payload.id];\n if (attachments) {\n delete allAttachments[payload.id];\n for (const [name, [contentType, content]] of Object.entries(attachments)) {\n // Validate that the attachment name doesn't contain a '.'\n if (name.includes(\".\")) {\n console.warn(`Skipping attachment '${name}' for run ${payload.id}: Invalid attachment name. ` +\n `Attachment names must not contain periods ('.'). Please rename the attachment and try again.`);\n continue;\n }\n accumulatedParts.push({\n name: `attachment.${payload.id}.${name}`,\n payload: new Blob([content], {\n type: `${contentType}; length=${content.byteLength}`,\n }),\n });\n }\n }\n }\n // compute context\n accumulatedContext.push(`trace=${payload.trace_id},id=${payload.id}`);\n }\n }\n await this._sendMultipartRequest(accumulatedParts, accumulatedContext.join(\"; \"));\n }\n async _sendMultipartRequest(parts, context) {\n try {\n // Create multipart form data manually using Blobs\n const boundary = \"----LangSmithFormBoundary\" + Math.random().toString(36).slice(2);\n const chunks = [];\n for (const part of parts) {\n // Add field boundary\n chunks.push(new Blob([`--${boundary}\\r\\n`]));\n chunks.push(new Blob([\n `Content-Disposition: form-data; name=\"${part.name}\"\\r\\n`,\n `Content-Type: ${part.payload.type}\\r\\n\\r\\n`,\n ]));\n chunks.push(part.payload);\n chunks.push(new Blob([\"\\r\\n\"]));\n }\n // Add final boundary\n chunks.push(new Blob([`--${boundary}--\\r\\n`]));\n // Combine all chunks into a single Blob\n const body = new Blob(chunks);\n // Convert Blob to ArrayBuffer for compatibility\n const arrayBuffer = await body.arrayBuffer();\n const res = await this.batchIngestCaller.call(_getFetchImplementation(), `${this.apiUrl}/runs/multipart`, {\n method: \"POST\",\n headers: {\n ...this.headers,\n \"Content-Type\": `multipart/form-data; boundary=${boundary}`,\n },\n body: arrayBuffer,\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n await raiseForStatus(res, \"ingest multipart runs\", true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n catch (e) {\n console.warn(`${e.message.trim()}\\n\\nContext: ${context}`);\n }\n }\n async updateRun(runId, run) {\n assertUuid(runId);\n if (run.inputs) {\n run.inputs = this.processInputs(run.inputs);\n }\n if (run.outputs) {\n run.outputs = this.processOutputs(run.outputs);\n }\n // TODO: Untangle types\n const data = { ...run, id: runId };\n if (!this._filterForSampling([data], true).length) {\n return;\n }\n if (this.autoBatchTracing &&\n data.trace_id !== undefined &&\n data.dotted_order !== undefined) {\n if (run.end_time !== undefined &&\n data.parent_run_id === undefined &&\n this.blockOnRootRunFinalization) {\n // Trigger batches as soon as a root trace ends and wait to ensure trace finishes\n // in serverless environments.\n await this.processRunOperation({ action: \"update\", item: data }).catch(console.error);\n return;\n }\n else {\n void this.processRunOperation({ action: \"update\", item: data }).catch(console.error);\n }\n return;\n }\n const headers = { ...this.headers, \"Content-Type\": \"application/json\" };\n const response = await this.caller.call(_getFetchImplementation(), `${this.apiUrl}/runs/${runId}`, {\n method: \"PATCH\",\n headers,\n body: stringifyForTracing(run),\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n await raiseForStatus(response, \"update run\", true);\n }\n async readRun(runId, { loadChildRuns } = { loadChildRuns: false }) {\n assertUuid(runId);\n let run = await this._get(`/runs/${runId}`);\n if (loadChildRuns && run.child_run_ids) {\n run = await this._loadChildRuns(run);\n }\n return run;\n }\n async getRunUrl({ runId, run, projectOpts, }) {\n if (run !== undefined) {\n let sessionId;\n if (run.session_id) {\n sessionId = run.session_id;\n }\n else if (projectOpts?.projectName) {\n sessionId = (await this.readProject({ projectName: projectOpts?.projectName })).id;\n }\n else if (projectOpts?.projectId) {\n sessionId = projectOpts?.projectId;\n }\n else {\n const project = await this.readProject({\n projectName: getLangSmithEnvironmentVariable(\"PROJECT\") || \"default\",\n });\n sessionId = project.id;\n }\n const tenantId = await this._getTenantId();\n return `${this.getHostUrl()}/o/${tenantId}/projects/p/${sessionId}/r/${run.id}?poll=true`;\n }\n else if (runId !== undefined) {\n const run_ = await this.readRun(runId);\n if (!run_.app_path) {\n throw new Error(`Run ${runId} has no app_path`);\n }\n const baseUrl = this.getHostUrl();\n return `${baseUrl}${run_.app_path}`;\n }\n else {\n throw new Error(\"Must provide either runId or run\");\n }\n }\n async _loadChildRuns(run) {\n const childRuns = await toArray(this.listRuns({ id: run.child_run_ids }));\n const treemap = {};\n const runs = {};\n // TODO: make dotted order required when the migration finishes\n childRuns.sort((a, b) => (a?.dotted_order ?? \"\").localeCompare(b?.dotted_order ?? \"\"));\n for (const childRun of childRuns) {\n if (childRun.parent_run_id === null ||\n childRun.parent_run_id === undefined) {\n throw new Error(`Child run ${childRun.id} has no parent`);\n }\n if (!(childRun.parent_run_id in treemap)) {\n treemap[childRun.parent_run_id] = [];\n }\n treemap[childRun.parent_run_id].push(childRun);\n runs[childRun.id] = childRun;\n }\n run.child_runs = treemap[run.id] || [];\n for (const runId in treemap) {\n if (runId !== run.id) {\n runs[runId].child_runs = treemap[runId];\n }\n }\n return run;\n }\n /**\n * List runs from the LangSmith server.\n * @param projectId - The ID of the project to filter by.\n * @param projectName - The name of the project to filter by.\n * @param parentRunId - The ID of the parent run to filter by.\n * @param traceId - The ID of the trace to filter by.\n * @param referenceExampleId - The ID of the reference example to filter by.\n * @param startTime - The start time to filter by.\n * @param isRoot - Indicates whether to only return root runs.\n * @param runType - The run type to filter by.\n * @param error - Indicates whether to filter by error runs.\n * @param id - The ID of the run to filter by.\n * @param query - The query string to filter by.\n * @param filter - The filter string to apply to the run spans.\n * @param traceFilter - The filter string to apply on the root run of the trace.\n * @param limit - The maximum number of runs to retrieve.\n * @returns {AsyncIterable<Run>} - The runs.\n *\n * @example\n * // List all runs in a project\n * const projectRuns = client.listRuns({ projectName: \"<your_project>\" });\n *\n * @example\n * // List LLM and Chat runs in the last 24 hours\n * const todaysLLMRuns = client.listRuns({\n * projectName: \"<your_project>\",\n * start_time: new Date(Date.now() - 24 * 60 * 60 * 1000),\n * run_type: \"llm\",\n * });\n *\n * @example\n * // List traces in a project\n * const rootRuns = client.listRuns({\n * projectName: \"<your_project>\",\n * execution_order: 1,\n * });\n *\n * @example\n * // List runs without errors\n * const correctRuns = client.listRuns({\n * projectName: \"<your_project>\",\n * error: false,\n * });\n *\n * @example\n * // List runs by run ID\n * const runIds = [\n * \"a36092d2-4ad5-4fb4-9c0d-0dba9a2ed836\",\n * \"9398e6be-964f-4aa4-8ae9-ad78cd4b7074\",\n * ];\n * const selectedRuns = client.listRuns({ run_ids: runIds });\n *\n * @example\n * // List all \"chain\" type runs that took more than 10 seconds and had `total_tokens` greater than 5000\n * const chainRuns = client.listRuns({\n * projectName: \"<your_project>\",\n * filter: 'and(eq(run_type, \"chain\"), gt(latency, 10), gt(total_tokens, 5000))',\n * });\n *\n * @example\n * // List all runs called \"extractor\" whose root of the trace was assigned feedback \"user_score\" score of 1\n * const goodExtractorRuns = client.listRuns({\n * projectName: \"<your_project>\",\n * filter: 'eq(name, \"extractor\")',\n * traceFilter: 'and(eq(feedback_key, \"user_score\"), eq(feedback_score, 1))',\n * });\n *\n * @example\n * // List all runs that started after a specific timestamp and either have \"error\" not equal to null or a \"Correctness\" feedback score equal to 0\n * const complexRuns = client.listRuns({\n * projectName: \"<your_project>\",\n * filter: 'and(gt(start_time, \"2023-07-15T12:34:56Z\"), or(neq(error, null), and(eq(feedback_key, \"Correctness\"), eq(feedback_score, 0.0))))',\n * });\n *\n * @example\n * // List all runs where `tags` include \"experimental\" or \"beta\" and `latency` is greater than 2 seconds\n * const taggedRuns = client.listRuns({\n * projectName: \"<your_project>\",\n * filter: 'and(or(has(tags, \"experimental\"), has(tags, \"beta\")), gt(latency, 2))',\n * });\n */\n async *listRuns(props) {\n const { projectId, projectName, parentRunId, traceId, referenceExampleId, startTime, executionOrder, isRoot, runType, error, id, query, filter, traceFilter, treeFilter, limit, select, } = props;\n let projectIds = [];\n if (projectId) {\n projectIds = Array.isArray(projectId) ? projectId : [projectId];\n }\n if (projectName) {\n const projectNames = Array.isArray(projectName)\n ? projectName\n : [projectName];\n const projectIds_ = await Promise.all(projectNames.map((name) => this.readProject({ projectName: name }).then((project) => project.id)));\n projectIds.push(...projectIds_);\n }\n const default_select = [\n \"app_path\",\n \"child_run_ids\",\n \"completion_cost\",\n \"completion_tokens\",\n \"dotted_order\",\n \"end_time\",\n \"error\",\n \"events\",\n \"extra\",\n \"feedback_stats\",\n \"first_token_time\",\n \"id\",\n \"inputs\",\n \"name\",\n \"outputs\",\n \"parent_run_id\",\n \"parent_run_ids\",\n \"prompt_cost\",\n \"prompt_tokens\",\n \"reference_example_id\",\n \"run_type\",\n \"session_id\",\n \"start_time\",\n \"status\",\n \"tags\",\n \"total_cost\",\n \"total_tokens\",\n \"trace_id\",\n ];\n const body = {\n session: projectIds.length ? projectIds : null,\n run_type: runType,\n reference_example: referenceExampleId,\n query,\n filter,\n trace_filter: traceFilter,\n tree_filter: treeFilter,\n execution_order: executionOrder,\n parent_run: parentRunId,\n start_time: startTime ? startTime.toISOString() : null,\n error,\n id,\n limit,\n trace: traceId,\n select: select ? select : default_select,\n is_root: isRoot,\n };\n let runsYielded = 0;\n for await (const runs of this._getCursorPaginatedList(\"/runs/query\", body)) {\n if (limit) {\n if (runsYielded >= limit) {\n break;\n }\n if (runs.length + runsYielded > limit) {\n const newRuns = runs.slice(0, limit - runsYielded);\n yield* newRuns;\n break;\n }\n runsYielded += runs.length;\n yield* runs;\n }\n else {\n yield* runs;\n }\n }\n }\n async getRunStats({ id, trace, parentRun, runType, projectNames, projectIds, referenceExampleIds, startTime, endTime, error, query, filter, traceFilter, treeFilter, isRoot, dataSourceType, }) {\n let projectIds_ = projectIds || [];\n if (projectNames) {\n projectIds_ = [\n ...(projectIds || []),\n ...(await Promise.all(projectNames.map((name) => this.readProject({ projectName: name }).then((project) => project.id)))),\n ];\n }\n const payload = {\n id,\n trace,\n parent_run: parentRun,\n run_type: runType,\n session: projectIds_,\n reference_example: referenceExampleIds,\n start_time: startTime,\n end_time: endTime,\n error,\n query,\n filter,\n trace_filter: traceFilter,\n tree_filter: treeFilter,\n is_root: isRoot,\n data_source_type: dataSourceType,\n };\n // Remove undefined values from the payload\n const filteredPayload = Object.fromEntries(Object.entries(payload).filter(([_, value]) => value !== undefined));\n const response = await this.caller.call(_getFetchImplementation(), `${this.apiUrl}/runs/stats`, {\n method: \"POST\",\n headers: this.headers,\n body: JSON.stringify(filteredPayload),\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n const result = await response.json();\n return result;\n }\n async shareRun(runId, { shareId } = {}) {\n const data = {\n run_id: runId,\n share_token: shareId || uuid.v4(),\n };\n assertUuid(runId);\n const response = await this.caller.call(_getFetchImplementation(), `${this.apiUrl}/runs/${runId}/share`, {\n method: \"PUT\",\n headers: this.headers,\n body: JSON.stringify(data),\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n const result = await response.json();\n if (result === null || !(\"share_token\" in result)) {\n throw new Error(\"Invalid response from server\");\n }\n return `${this.getHostUrl()}/public/${result[\"share_token\"]}/r`;\n }\n async unshareRun(runId) {\n assertUuid(runId);\n const response = await this.caller.call(_getFetchImplementation(), `${this.apiUrl}/runs/${runId}/share`, {\n method: \"DELETE\",\n headers: this.headers,\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n await raiseForStatus(response, \"unshare run\", true);\n }\n async readRunSharedLink(runId) {\n assertUuid(runId);\n const response = await this.caller.call(_getFetchImplementation(), `${this.apiUrl}/runs/${runId}/share`, {\n method: \"GET\",\n headers: this.headers,\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n const result = await response.json();\n if (result === null || !(\"share_token\" in result)) {\n return undefined;\n }\n return `${this.getHostUrl()}/public/${result[\"share_token\"]}/r`;\n }\n async listSharedRuns(shareToken, { runIds, } = {}) {\n const queryParams = new URLSearchParams({\n share_token: shareToken,\n });\n if (runIds !== undefined) {\n for (const runId of runIds) {\n queryParams.append(\"id\", runId);\n }\n }\n assertUuid(shareToken);\n const response = await this.caller.call(_getFetchImplementation(), `${this.apiUrl}/public/${shareToken}/runs${queryParams}`, {\n method: \"GET\",\n headers: this.headers,\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n const runs = await response.json();\n return runs;\n }\n async readDatasetSharedSchema(datasetId, datasetName) {\n if (!datasetId && !datasetName) {\n throw new Error(\"Either datasetId or datasetName must be given\");\n }\n if (!datasetId) {\n const dataset = await this.readDataset({ datasetName });\n datasetId = dataset.id;\n }\n assertUuid(datasetId);\n const response = await this.caller.call(_getFetchImplementation(), `${this.apiUrl}/datasets/${datasetId}/share`, {\n method: \"GET\",\n headers: this.headers,\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n const shareSchema = await response.json();\n shareSchema.url = `${this.getHostUrl()}/public/${shareSchema.share_token}/d`;\n return shareSchema;\n }\n async shareDataset(datasetId, datasetName) {\n if (!datasetId && !datasetName) {\n throw new Error(\"Either datasetId or datasetName must be given\");\n }\n if (!datasetId) {\n const dataset = await this.readDataset({ datasetName });\n datasetId = dataset.id;\n }\n const data = {\n dataset_id: datasetId,\n };\n assertUuid(datasetId);\n const response = await this.caller.call(_getFetchImplementation(), `${this.apiUrl}/datasets/${datasetId}/share`, {\n method: \"PUT\",\n headers: this.headers,\n body: JSON.stringify(data),\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n const shareSchema = await response.json();\n shareSchema.url = `${this.getHostUrl()}/public/${shareSchema.share_token}/d`;\n return shareSchema;\n }\n async unshareDataset(datasetId) {\n assertUuid(datasetId);\n const response = await this.caller.call(_getFetchImplementation(), `${this.apiUrl}/datasets/${datasetId}/share`, {\n method: \"DELETE\",\n headers: this.headers,\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n await raiseForStatus(response, \"unshare dataset\", true);\n }\n async readSharedDataset(shareToken) {\n assertUuid(shareToken);\n const response = await this.caller.call(_getFetchImplementation(), `${this.apiUrl}/public/${shareToken}/datasets`, {\n method: \"GET\",\n headers: this.headers,\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n const dataset = await response.json();\n return dataset;\n }\n /**\n * Get shared examples.\n *\n * @param {string} shareToken The share token to get examples for. A share token is the UUID (or LangSmith URL, including UUID) generated when explicitly marking an example as public.\n * @param {Object} [options] Additional options for listing the examples.\n * @param {string[] | undefined} [options.exampleIds] A list of example IDs to filter by.\n * @returns {Promise<Example[]>} The shared examples.\n */\n async listSharedExamples(shareToken, options) {\n const params = {};\n if (options?.exampleIds) {\n params.id = options.exampleIds;\n }\n const urlParams = new URLSearchParams();\n Object.entries(params).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n value.forEach((v) => urlParams.append(key, v));\n }\n else {\n urlParams.append(key, value);\n }\n });\n const response = await this.caller.call(_getFetchImplementation(), `${this.apiUrl}/public/${shareToken}/examples?${urlParams.toString()}`, {\n method: \"GET\",\n headers: this.headers,\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n const result = await response.json();\n if (!response.ok) {\n if (\"detail\" in result) {\n throw new Error(`Failed to list shared examples.\\nStatus: ${response.status}\\nMessage: ${result.detail.join(\"\\n\")}`);\n }\n throw new Error(`Failed to list shared examples: ${response.status} ${response.statusText}`);\n }\n return result.map((example) => ({\n ...example,\n _hostUrl: this.getHostUrl(),\n }));\n }\n async createProject({ projectName, description = null, metadata = null, upsert = false, projectExtra = null, referenceDatasetId = null, }) {\n const upsert_ = upsert ? `?upsert=true` : \"\";\n const endpoint = `${this.apiUrl}/sessions${upsert_}`;\n const extra = projectExtra || {};\n if (metadata) {\n extra[\"metadata\"] = metadata;\n }\n const body = {\n name: projectName,\n extra,\n description,\n };\n if (referenceDatasetId !== null) {\n body[\"reference_dataset_id\"] = referenceDatasetId;\n }\n const response = await this.caller.call(_getFetchImplementation(), endpoint, {\n method: \"POST\",\n headers: { ...this.headers, \"Content-Type\": \"application/json\" },\n body: JSON.stringify(body),\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n await raiseForStatus(response, \"create project\");\n const result = await response.json();\n return result;\n }\n async updateProject(projectId, { name = null, description = null, metadata = null, projectExtra = null, endTime = null, }) {\n const endpoint = `${this.apiUrl}/sessions/${projectId}`;\n let extra = projectExtra;\n if (metadata) {\n extra = { ...(extra || {}), metadata };\n }\n const body = {\n name,\n extra,\n description,\n end_time: endTime ? new Date(endTime).toISOString() : null,\n };\n const response = await this.caller.call(_getFetchImplementation(), endpoint, {\n method: \"PATCH\",\n headers: { ...this.headers, \"Content-Type\": \"application/json\" },\n body: JSON.stringify(body),\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n await raiseForStatus(response, \"update project\");\n const result = await response.json();\n return result;\n }\n async hasProject({ projectId, projectName, }) {\n // TODO: Add a head request\n let path = \"/sessions\";\n const params = new URLSearchParams();\n if (projectId !== undefined && projectName !== undefined) {\n throw new Error(\"Must provide either projectName or projectId, not both\");\n }\n else if (projectId !== undefined) {\n assertUuid(projectId);\n path += `/${projectId}`;\n }\n else if (projectName !== undefined) {\n params.append(\"name\", projectName);\n }\n else {\n throw new Error(\"Must provide projectName or projectId\");\n }\n const response = await this.caller.call(_getFetchImplementation(), `${this.apiUrl}${path}?${params}`, {\n method: \"GET\",\n headers: this.headers,\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n // consume the response body to release the connection\n // https://undici.nodejs.org/#/?id=garbage-collection\n try {\n const result = await response.json();\n if (!response.ok) {\n return false;\n }\n // If it's OK and we're querying by name, need to check the list is not empty\n if (Array.isArray(result)) {\n return result.length > 0;\n }\n // projectId querying\n return true;\n }\n catch (e) {\n return false;\n }\n }\n async readProject({ projectId, projectName, includeStats, }) {\n let path = \"/sessions\";\n const params = new URLSearchParams();\n if (projectId !== undefined && projectName !== undefined) {\n throw new Error(\"Must provide either projectName or projectId, not both\");\n }\n else if (projectId !== undefined) {\n assertUuid(projectId);\n path += `/${projectId}`;\n }\n else if (projectName !== undefined) {\n params.append(\"name\", projectName);\n }\n else {\n throw new Error(\"Must provide projectName or projectId\");\n }\n if (includeStats !== undefined) {\n params.append(\"include_stats\", includeStats.toString());\n }\n const response = await this._get(path, params);\n let result;\n if (Array.isArray(response)) {\n if (response.length === 0) {\n throw new Error(`Project[id=${projectId}, name=${projectName}] not found`);\n }\n result = response[0];\n }\n else {\n result = response;\n }\n return result;\n }\n async getProjectUrl({ projectId, projectName, }) {\n if (projectId === undefined && projectName === undefined) {\n throw new Error(\"Must provide either projectName or projectId\");\n }\n const project = await this.readProject({ projectId, projectName });\n const tenantId = await this._getTenantId();\n return `${this.getHostUrl()}/o/${tenantId}/projects/p/${project.id}`;\n }\n async getDatasetUrl({ datasetId, datasetName, }) {\n if (datasetId === undefined && datasetName === undefined) {\n throw new Error(\"Must provide either datasetName or datasetId\");\n }\n const dataset = await this.readDataset({ datasetId, datasetName });\n const tenantId = await this._getTenantId();\n return `${this.getHostUrl()}/o/${tenantId}/datasets/${dataset.id}`;\n }\n async _getTenantId() {\n if (this._tenantId !== null) {\n return this._tenantId;\n }\n const queryParams = new URLSearchParams({ limit: \"1\" });\n for await (const projects of this._getPaginated(\"/sessions\", queryParams)) {\n this._tenantId = projects[0].tenant_id;\n return projects[0].tenant_id;\n }\n throw new Error(\"No projects found to resolve tenant.\");\n }\n async *listProjects({ projectIds, name, nameContains, referenceDatasetId, referenceDatasetName, referenceFree, metadata, } = {}) {\n const params = new URLSearchParams();\n if (projectIds !== undefined) {\n for (const projectId of projectIds) {\n params.append(\"id\", projectId);\n }\n }\n if (name !== undefined) {\n params.append(\"name\", name);\n }\n if (nameContains !== undefined) {\n params.append(\"name_contains\", nameContains);\n }\n if (referenceDatasetId !== undefined) {\n params.append(\"reference_dataset\", referenceDatasetId);\n }\n else if (referenceDatasetName !== undefined) {\n const dataset = await this.readDataset({\n datasetName: referenceDatasetName,\n });\n params.append(\"reference_dataset\", dataset.id);\n }\n if (referenceFree !== undefined) {\n params.append(\"reference_free\", referenceFree.toString());\n }\n if (metadata !== undefined) {\n params.append(\"metadata\", JSON.stringify(metadata));\n }\n for await (const projects of this._getPaginated(\"/sessions\", params)) {\n yield* projects;\n }\n }\n async deleteProject({ projectId, projectName, }) {\n let projectId_;\n if (projectId === undefined && projectName === undefined) {\n throw new Error(\"Must provide projectName or projectId\");\n }\n else if (projectId !== undefined && projectName !== undefined) {\n throw new Error(\"Must provide either projectName or projectId, not both\");\n }\n else if (projectId === undefined) {\n projectId_ = (await this.readProject({ projectName })).id;\n }\n else {\n projectId_ = projectId;\n }\n assertUuid(projectId_);\n const response = await this.caller.call(_getFetchImplementation(), `${this.apiUrl}/sessions/${projectId_}`, {\n method: \"DELETE\",\n headers: this.headers,\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n await raiseForStatus(response, `delete session ${projectId_} (${projectName})`, true);\n }\n async uploadCsv({ csvFile, fileName, inputKeys, outputKeys, description, dataType, name, }) {\n const url = `${this.apiUrl}/datasets/upload`;\n const formData = new FormData();\n formData.append(\"file\", csvFile, fileName);\n inputKeys.forEach((key) => {\n formData.append(\"input_keys\", key);\n });\n outputKeys.forEach((key) => {\n formData.append(\"output_keys\", key);\n });\n if (description) {\n formData.append(\"description\", description);\n }\n if (dataType) {\n formData.append(\"data_type\", dataType);\n }\n if (name) {\n formData.append(\"name\", name);\n }\n const response = await this.caller.call(_getFetchImplementation(), url, {\n method: \"POST\",\n headers: this.headers,\n body: formData,\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n await raiseForStatus(response, \"upload CSV\");\n const result = await response.json();\n return result;\n }\n async createDataset(name, { description, dataType, inputsSchema, outputsSchema, metadata, } = {}) {\n const body = {\n name,\n description,\n extra: metadata ? { metadata } : undefined,\n };\n if (dataType) {\n body.data_type = dataType;\n }\n if (inputsSchema) {\n body.inputs_schema_definition = inputsSchema;\n }\n if (outputsSchema) {\n body.outputs_schema_definition = outputsSchema;\n }\n const response = await this.caller.call(_getFetchImplementation(), `${this.apiUrl}/datasets`, {\n method: \"POST\",\n headers: { ...this.headers, \"Content-Type\": \"application/json\" },\n body: JSON.stringify(body),\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n await raiseForStatus(response, \"create dataset\");\n const result = await response.json();\n return result;\n }\n async readDataset({ datasetId, datasetName, }) {\n let path = \"/datasets\";\n // limit to 1 result\n const params = new URLSearchParams({ limit: \"1\" });\n if (datasetId !== undefined && datasetName !== undefined) {\n throw new Error(\"Must provide either datasetName or datasetId, not both\");\n }\n else if (datasetId !== undefined) {\n assertUuid(datasetId);\n path += `/${datasetId}`;\n }\n else if (datasetName !== undefined) {\n params.append(\"name\", datasetName);\n }\n else {\n throw new Error(\"Must provide datasetName or datasetId\");\n }\n const response = await this._get(path, params);\n let result;\n if (Array.isArray(response)) {\n if (response.length === 0) {\n throw new Error(`Dataset[id=${datasetId}, name=${datasetName}] not found`);\n }\n result = response[0];\n }\n else {\n result = response;\n }\n return result;\n }\n async hasDataset({ datasetId, datasetName, }) {\n try {\n await this.readDataset({ datasetId, datasetName });\n return true;\n }\n catch (e) {\n if (\n // eslint-disable-next-line no-instanceof/no-instanceof\n e instanceof Error &&\n e.message.toLocaleLowerCase().includes(\"not found\")) {\n return false;\n }\n throw e;\n }\n }\n async diffDatasetVersions({ datasetId, datasetName, fromVersion, toVersion, }) {\n let datasetId_ = datasetId;\n if (datasetId_ === undefined && datasetName === undefined) {\n throw new Error(\"Must provide either datasetName or datasetId\");\n }\n else if (datasetId_ !== undefined && datasetName !== undefined) {\n throw new Error(\"Must provide either datasetName or datasetId, not both\");\n }\n else if (datasetId_ === undefined) {\n const dataset = await this.readDataset({ datasetName });\n datasetId_ = dataset.id;\n }\n const urlParams = new URLSearchParams({\n from_version: typeof fromVersion === \"string\"\n ? fromVersion\n : fromVersion.toISOString(),\n to_version: typeof toVersion === \"string\" ? toVersion : toVersion.toISOString(),\n });\n const response = await this._get(`/datasets/${datasetId_}/versions/diff`, urlParams);\n return response;\n }\n async readDatasetOpenaiFinetuning({ datasetId, datasetName, }) {\n const path = \"/datasets\";\n if (datasetId !== undefined) {\n // do nothing\n }\n else if (datasetName !== undefined) {\n datasetId = (await this.readDataset({ datasetName })).id;\n }\n else {\n throw new Error(\"Must provide datasetName or datasetId\");\n }\n const response = await this._getResponse(`${path}/${datasetId}/openai_ft`);\n const datasetText = await response.text();\n const dataset = datasetText\n .trim()\n .split(\"\\n\")\n .map((line) => JSON.parse(line));\n return dataset;\n }\n async *listDatasets({ limit = 100, offset = 0, datasetIds, datasetName, datasetNameContains, metadata, } = {}) {\n const path = \"/datasets\";\n const params = new URLSearchParams({\n limit: limit.toString(),\n offset: offset.toString(),\n });\n if (datasetIds !== undefined) {\n for (const id_ of datasetIds) {\n params.append(\"id\", id_);\n }\n }\n if (datasetName !== undefined) {\n params.append(\"name\", datasetName);\n }\n if (datasetNameContains !== undefined) {\n params.append(\"name_contains\", datasetNameContains);\n }\n if (metadata !== undefined) {\n params.append(\"metadata\", JSON.stringify(metadata));\n }\n for await (const datasets of this._getPaginated(path, params)) {\n yield* datasets;\n }\n }\n /**\n * Update a dataset\n * @param props The dataset details to update\n * @returns The updated dataset\n */\n async updateDataset(props) {\n const { datasetId, datasetName, ...update } = props;\n if (!datasetId && !datasetName) {\n throw new Error(\"Must provide either datasetName or datasetId\");\n }\n const _datasetId = datasetId ?? (await this.readDataset({ datasetName })).id;\n assertUuid(_datasetId);\n const response = await this.caller.call(_getFetchImplementation(), `${this.apiUrl}/datasets/${_datasetId}`, {\n method: \"PATCH\",\n headers: { ...this.headers, \"Content-Type\": \"application/json\" },\n body: JSON.stringify(update),\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n await raiseForStatus(response, \"update dataset\");\n return (await response.json());\n }\n async deleteDataset({ datasetId, datasetName, }) {\n let path = \"/datasets\";\n let datasetId_ = datasetId;\n if (datasetId !== undefined && datasetName !== undefined) {\n throw new Error(\"Must provide either datasetName or datasetId, not both\");\n }\n else if (datasetName !== undefined) {\n const dataset = await this.readDataset({ datasetName });\n datasetId_ = dataset.id;\n }\n if (datasetId_ !== undefined) {\n assertUuid(datasetId_);\n path += `/${datasetId_}`;\n }\n else {\n throw new Error(\"Must provide datasetName or datasetId\");\n }\n const response = await this.caller.call(_getFetchImplementation(), this.apiUrl + path, {\n method: \"DELETE\",\n headers: this.headers,\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n await raiseForStatus(response, `delete ${path}`);\n await response.json();\n }\n async indexDataset({ datasetId, datasetName, tag, }) {\n let datasetId_ = datasetId;\n if (!datasetId_ && !datasetName) {\n throw new Error(\"Must provide either datasetName or datasetId\");\n }\n else if (datasetId_ && datasetName) {\n throw new Error(\"Must provide either datasetName or datasetId, not both\");\n }\n else if (!datasetId_) {\n const dataset = await this.readDataset({ datasetName });\n datasetId_ = dataset.id;\n }\n assertUuid(datasetId_);\n const data = {\n tag: tag,\n };\n const response = await this.caller.call(_getFetchImplementation(), `${this.apiUrl}/datasets/${datasetId_}/index`, {\n method: \"POST\",\n headers: { ...this.headers, \"Content-Type\": \"application/json\" },\n body: JSON.stringify(data),\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n await raiseForStatus(response, \"index dataset\");\n await response.json();\n }\n /**\n * Lets you run a similarity search query on a dataset.\n *\n * Requires the dataset to be indexed. Please see the `indexDataset` method to set up indexing.\n *\n * @param inputs The input on which to run the similarity search. Must have the\n * same schema as the dataset.\n *\n * @param datasetId The dataset to search for similar examples.\n *\n * @param limit The maximum number of examples to return. Will return the top `limit` most\n * similar examples in order of most similar to least similar. If no similar\n * examples are found, random examples will be returned.\n *\n * @param filter A filter string to apply to the search. Only examples will be returned that\n * match the filter string. Some examples of filters\n *\n * - eq(metadata.mykey, \"value\")\n * - and(neq(metadata.my.nested.key, \"value\"), neq(metadata.mykey, \"value\"))\n * - or(eq(metadata.mykey, \"value\"), eq(metadata.mykey, \"othervalue\"))\n *\n * @returns A list of similar examples.\n *\n *\n * @example\n * dataset_id = \"123e4567-e89b-12d3-a456-426614174000\"\n * inputs = {\"text\": \"How many people live in Berlin?\"}\n * limit = 5\n * examples = await client.similarExamples(inputs, dataset_id, limit)\n */\n async similarExamples(inputs, datasetId, limit, { filter, } = {}) {\n const data = {\n limit: limit,\n inputs: inputs,\n };\n if (filter !== undefined) {\n data[\"filter\"] = filter;\n }\n assertUuid(datasetId);\n const response = await this.caller.call(_getFetchImplementation(), `${this.apiUrl}/datasets/${datasetId}/search`, {\n method: \"POST\",\n headers: { ...this.headers, \"Content-Type\": \"application/json\" },\n body: JSON.stringify(data),\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n await raiseForStatus(response, \"fetch similar examples\");\n const result = await response.json();\n return result[\"examples\"];\n }\n async createExample(inputs, outputs, { datasetId, datasetName, createdAt, exampleId, metadata, split, sourceRunId, }) {\n let datasetId_ = datasetId;\n if (datasetId_ === undefined && datasetName === undefined) {\n throw new Error(\"Must provide either datasetName or datasetId\");\n }\n else if (datasetId_ !== undefined && datasetName !== undefined) {\n throw new Error(\"Must provide either datasetName or datasetId, not both\");\n }\n else if (datasetId_ === undefined) {\n const dataset = await this.readDataset({ datasetName });\n datasetId_ = dataset.id;\n }\n const createdAt_ = createdAt || new Date();\n const data = {\n dataset_id: datasetId_,\n inputs,\n outputs,\n created_at: createdAt_?.toISOString(),\n id: exampleId,\n metadata,\n split,\n source_run_id: sourceRunId,\n };\n const response = await this.caller.call(_getFetchImplementation(), `${this.apiUrl}/examples`, {\n method: \"POST\",\n headers: { ...this.headers, \"Content-Type\": \"application/json\" },\n body: JSON.stringify(data),\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n await raiseForStatus(response, \"create example\");\n const result = await response.json();\n return result;\n }\n async createExamples(props) {\n const { inputs, outputs, metadata, sourceRunIds, exampleIds, datasetId, datasetName, } = props;\n let datasetId_ = datasetId;\n if (datasetId_ === undefined && datasetName === undefined) {\n throw new Error(\"Must provide either datasetName or datasetId\");\n }\n else if (datasetId_ !== undefined && datasetName !== undefined) {\n throw new Error(\"Must provide either datasetName or datasetId, not both\");\n }\n else if (datasetId_ === undefined) {\n const dataset = await this.readDataset({ datasetName });\n datasetId_ = dataset.id;\n }\n const formattedExamples = inputs.map((input, idx) => {\n return {\n dataset_id: datasetId_,\n inputs: input,\n outputs: outputs ? outputs[idx] : undefined,\n metadata: metadata ? metadata[idx] : undefined,\n split: props.splits ? props.splits[idx] : undefined,\n id: exampleIds ? exampleIds[idx] : undefined,\n source_run_id: sourceRunIds ? sourceRunIds[idx] : undefined,\n };\n });\n const response = await this.caller.call(_getFetchImplementation(), `${this.apiUrl}/examples/bulk`, {\n method: \"POST\",\n headers: { ...this.headers, \"Content-Type\": \"application/json\" },\n body: JSON.stringify(formattedExamples),\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n await raiseForStatus(response, \"create examples\");\n const result = await response.json();\n return result;\n }\n async createLLMExample(input, generation, options) {\n return this.createExample({ input }, { output: generation }, options);\n }\n async createChatExample(input, generations, options) {\n const finalInput = input.map((message) => {\n if (isLangChainMessage(message)) {\n return convertLangChainMessageToExample(message);\n }\n return message;\n });\n const finalOutput = isLangChainMessage(generations)\n ? convertLangChainMessageToExample(generations)\n : generations;\n return this.createExample({ input: finalInput }, { output: finalOutput }, options);\n }\n async readExample(exampleId) {\n assertUuid(exampleId);\n const path = `/examples/${exampleId}`;\n return await this._get(path);\n }\n async *listExamples({ datasetId, datasetName, exampleIds, asOf, splits, inlineS3Urls, metadata, limit, offset, filter, } = {}) {\n let datasetId_;\n if (datasetId !== undefined && datasetName !== undefined) {\n throw new Error(\"Must provide either datasetName or datasetId, not both\");\n }\n else if (datasetId !== undefined) {\n datasetId_ = datasetId;\n }\n else if (datasetName !== undefined) {\n const dataset = await this.readDataset({ datasetName });\n datasetId_ = dataset.id;\n }\n else {\n throw new Error(\"Must provide a datasetName or datasetId\");\n }\n const params = new URLSearchParams({ dataset: datasetId_ });\n const dataset_version = asOf\n ? typeof asOf === \"string\"\n ? asOf\n : asOf?.toISOString()\n : undefined;\n if (dataset_version) {\n params.append(\"as_of\", dataset_version);\n }\n const inlineS3Urls_ = inlineS3Urls ?? true;\n params.append(\"inline_s3_urls\", inlineS3Urls_.toString());\n if (exampleIds !== undefined) {\n for (const id_ of exampleIds) {\n params.append(\"id\", id_);\n }\n }\n if (splits !== undefined) {\n for (const split of splits) {\n params.append(\"splits\", split);\n }\n }\n if (metadata !== undefined) {\n const serializedMetadata = JSON.stringify(metadata);\n params.append(\"metadata\", serializedMetadata);\n }\n if (limit !== undefined) {\n params.append(\"limit\", limit.toString());\n }\n if (offset !== undefined) {\n params.append(\"offset\", offset.toString());\n }\n if (filter !== undefined) {\n params.append(\"filter\", filter);\n }\n let i = 0;\n for await (const examples of this._getPaginated(\"/examples\", params)) {\n for (const example of examples) {\n yield example;\n i++;\n }\n if (limit !== undefined && i >= limit) {\n break;\n }\n }\n }\n async deleteExample(exampleId) {\n assertUuid(exampleId);\n const path = `/examples/${exampleId}`;\n const response = await this.caller.call(_getFetchImplementation(), this.apiUrl + path, {\n method: \"DELETE\",\n headers: this.headers,\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n await raiseForStatus(response, `delete ${path}`);\n await response.json();\n }\n async updateExample(exampleId, update) {\n assertUuid(exampleId);\n const response = await this.caller.call(_getFetchImplementation(), `${this.apiUrl}/examples/${exampleId}`, {\n method: \"PATCH\",\n headers: { ...this.headers, \"Content-Type\": \"application/json\" },\n body: JSON.stringify(update),\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n await raiseForStatus(response, \"update example\");\n const result = await response.json();\n return result;\n }\n async updateExamples(update) {\n const response = await this.caller.call(_getFetchImplementation(), `${this.apiUrl}/examples/bulk`, {\n method: \"PATCH\",\n headers: { ...this.headers, \"Content-Type\": \"application/json\" },\n body: JSON.stringify(update),\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n await raiseForStatus(response, \"update examples\");\n const result = await response.json();\n return result;\n }\n async listDatasetSplits({ datasetId, datasetName, asOf, }) {\n let datasetId_;\n if (datasetId === undefined && datasetName === undefined) {\n throw new Error(\"Must provide dataset name or ID\");\n }\n else if (datasetId !== undefined && datasetName !== undefined) {\n throw new Error(\"Must provide either datasetName or datasetId, not both\");\n }\n else if (datasetId === undefined) {\n const dataset = await this.readDataset({ datasetName });\n datasetId_ = dataset.id;\n }\n else {\n datasetId_ = datasetId;\n }\n assertUuid(datasetId_);\n const params = new URLSearchParams();\n const dataset_version = asOf\n ? typeof asOf === \"string\"\n ? asOf\n : asOf?.toISOString()\n : undefined;\n if (dataset_version) {\n params.append(\"as_of\", dataset_version);\n }\n const response = await this._get(`/datasets/${datasetId_}/splits`, params);\n return response;\n }\n async updateDatasetSplits({ datasetId, datasetName, splitName, exampleIds, remove = false, }) {\n let datasetId_;\n if (datasetId === undefined && datasetName === undefined) {\n throw new Error(\"Must provide dataset name or ID\");\n }\n else if (datasetId !== undefined && datasetName !== undefined) {\n throw new Error(\"Must provide either datasetName or datasetId, not both\");\n }\n else if (datasetId === undefined) {\n const dataset = await this.readDataset({ datasetName });\n datasetId_ = dataset.id;\n }\n else {\n datasetId_ = datasetId;\n }\n assertUuid(datasetId_);\n const data = {\n split_name: splitName,\n examples: exampleIds.map((id) => {\n assertUuid(id);\n return id;\n }),\n remove,\n };\n const response = await this.caller.call(_getFetchImplementation(), `${this.apiUrl}/datasets/${datasetId_}/splits`, {\n method: \"PUT\",\n headers: { ...this.headers, \"Content-Type\": \"application/json\" },\n body: JSON.stringify(data),\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n await raiseForStatus(response, \"update dataset splits\", true);\n }\n /**\n * @deprecated This method is deprecated and will be removed in future LangSmith versions, use `evaluate` from `langsmith/evaluation` instead.\n */\n async evaluateRun(run, evaluator, { sourceInfo, loadChildRuns, referenceExample, } = { loadChildRuns: false }) {\n warnOnce(\"This method is deprecated and will be removed in future LangSmith versions, use `evaluate` from `langsmith/evaluation` instead.\");\n let run_;\n if (typeof run === \"string\") {\n run_ = await this.readRun(run, { loadChildRuns });\n }\n else if (typeof run === \"object\" && \"id\" in run) {\n run_ = run;\n }\n else {\n throw new Error(`Invalid run type: ${typeof run}`);\n }\n if (run_.reference_example_id !== null &&\n run_.reference_example_id !== undefined) {\n referenceExample = await this.readExample(run_.reference_example_id);\n }\n const feedbackResult = await evaluator.evaluateRun(run_, referenceExample);\n const [_, feedbacks] = await this._logEvaluationFeedback(feedbackResult, run_, sourceInfo);\n return feedbacks[0];\n }\n async createFeedback(runId, key, { score, value, correction, comment, sourceInfo, feedbackSourceType = \"api\", sourceRunId, feedbackId, feedbackConfig, projectId, comparativeExperimentId, }) {\n if (!runId && !projectId) {\n throw new Error(\"One of runId or projectId must be provided\");\n }\n if (runId && projectId) {\n throw new Error(\"Only one of runId or projectId can be provided\");\n }\n const feedback_source = {\n type: feedbackSourceType ?? \"api\",\n metadata: sourceInfo ?? {},\n };\n if (sourceRunId !== undefined &&\n feedback_source?.metadata !== undefined &&\n !feedback_source.metadata[\"__run\"]) {\n feedback_source.metadata[\"__run\"] = { run_id: sourceRunId };\n }\n if (feedback_source?.metadata !== undefined &&\n feedback_source.metadata[\"__run\"]?.run_id !== undefined) {\n assertUuid(feedback_source.metadata[\"__run\"].run_id);\n }\n const feedback = {\n id: feedbackId ?? uuid.v4(),\n run_id: runId,\n key,\n score,\n value,\n correction,\n comment,\n feedback_source: feedback_source,\n comparative_experiment_id: comparativeExperimentId,\n feedbackConfig,\n session_id: projectId,\n };\n const url = `${this.apiUrl}/feedback`;\n const response = await this.caller.call(_getFetchImplementation(), url, {\n method: \"POST\",\n headers: { ...this.headers, \"Content-Type\": \"application/json\" },\n body: JSON.stringify(feedback),\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n await raiseForStatus(response, \"create feedback\", true);\n return feedback;\n }\n async updateFeedback(feedbackId, { score, value, correction, comment, }) {\n const feedbackUpdate = {};\n if (score !== undefined && score !== null) {\n feedbackUpdate[\"score\"] = score;\n }\n if (value !== undefined && value !== null) {\n feedbackUpdate[\"value\"] = value;\n }\n if (correction !== undefined && correction !== null) {\n feedbackUpdate[\"correction\"] = correction;\n }\n if (comment !== undefined && comment !== null) {\n feedbackUpdate[\"comment\"] = comment;\n }\n assertUuid(feedbackId);\n const response = await this.caller.call(_getFetchImplementation(), `${this.apiUrl}/feedback/${feedbackId}`, {\n method: \"PATCH\",\n headers: { ...this.headers, \"Content-Type\": \"application/json\" },\n body: JSON.stringify(feedbackUpdate),\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n await raiseForStatus(response, \"update feedback\", true);\n }\n async readFeedback(feedbackId) {\n assertUuid(feedbackId);\n const path = `/feedback/${feedbackId}`;\n const response = await this._get(path);\n return response;\n }\n async deleteFeedback(feedbackId) {\n assertUuid(feedbackId);\n const path = `/feedback/${feedbackId}`;\n const response = await this.caller.call(_getFetchImplementation(), this.apiUrl + path, {\n method: \"DELETE\",\n headers: this.headers,\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n await raiseForStatus(response, `delete ${path}`);\n await response.json();\n }\n async *listFeedback({ runIds, feedbackKeys, feedbackSourceTypes, } = {}) {\n const queryParams = new URLSearchParams();\n if (runIds) {\n queryParams.append(\"run\", runIds.join(\",\"));\n }\n if (feedbackKeys) {\n for (const key of feedbackKeys) {\n queryParams.append(\"key\", key);\n }\n }\n if (feedbackSourceTypes) {\n for (const type of feedbackSourceTypes) {\n queryParams.append(\"source\", type);\n }\n }\n for await (const feedbacks of this._getPaginated(\"/feedback\", queryParams)) {\n yield* feedbacks;\n }\n }\n /**\n * Creates a presigned feedback token and URL.\n *\n * The token can be used to authorize feedback metrics without\n * needing an API key. This is useful for giving browser-based\n * applications the ability to submit feedback without needing\n * to expose an API key.\n *\n * @param runId - The ID of the run.\n * @param feedbackKey - The feedback key.\n * @param options - Additional options for the token.\n * @param options.expiration - The expiration time for the token.\n *\n * @returns A promise that resolves to a FeedbackIngestToken.\n */\n async createPresignedFeedbackToken(runId, feedbackKey, { expiration, feedbackConfig, } = {}) {\n const body = {\n run_id: runId,\n feedback_key: feedbackKey,\n feedback_config: feedbackConfig,\n };\n if (expiration) {\n if (typeof expiration === \"string\") {\n body[\"expires_at\"] = expiration;\n }\n else if (expiration?.hours || expiration?.minutes || expiration?.days) {\n body[\"expires_in\"] = expiration;\n }\n }\n else {\n body[\"expires_in\"] = {\n hours: 3,\n };\n }\n const response = await this.caller.call(_getFetchImplementation(), `${this.apiUrl}/feedback/tokens`, {\n method: \"POST\",\n headers: { ...this.headers, \"Content-Type\": \"application/json\" },\n body: JSON.stringify(body),\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n const result = await response.json();\n return result;\n }\n async createComparativeExperiment({ name, experimentIds, referenceDatasetId, createdAt, description, metadata, id, }) {\n if (experimentIds.length === 0) {\n throw new Error(\"At least one experiment is required\");\n }\n if (!referenceDatasetId) {\n referenceDatasetId = (await this.readProject({\n projectId: experimentIds[0],\n })).reference_dataset_id;\n }\n if (!referenceDatasetId == null) {\n throw new Error(\"A reference dataset is required\");\n }\n const body = {\n id,\n name,\n experiment_ids: experimentIds,\n reference_dataset_id: referenceDatasetId,\n description,\n created_at: (createdAt ?? new Date())?.toISOString(),\n extra: {},\n };\n if (metadata)\n body.extra[\"metadata\"] = metadata;\n const response = await this.caller.call(_getFetchImplementation(), `${this.apiUrl}/datasets/comparative`, {\n method: \"POST\",\n headers: { ...this.headers, \"Content-Type\": \"application/json\" },\n body: JSON.stringify(body),\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n return await response.json();\n }\n /**\n * Retrieves a list of presigned feedback tokens for a given run ID.\n * @param runId The ID of the run.\n * @returns An async iterable of FeedbackIngestToken objects.\n */\n async *listPresignedFeedbackTokens(runId) {\n assertUuid(runId);\n const params = new URLSearchParams({ run_id: runId });\n for await (const tokens of this._getPaginated(\"/feedback/tokens\", params)) {\n yield* tokens;\n }\n }\n _selectEvalResults(results) {\n let results_;\n if (\"results\" in results) {\n results_ = results.results;\n }\n else {\n results_ = [results];\n }\n return results_;\n }\n async _logEvaluationFeedback(evaluatorResponse, run, sourceInfo) {\n const evalResults = this._selectEvalResults(evaluatorResponse);\n const feedbacks = [];\n for (const res of evalResults) {\n let sourceInfo_ = sourceInfo || {};\n if (res.evaluatorInfo) {\n sourceInfo_ = { ...res.evaluatorInfo, ...sourceInfo_ };\n }\n let runId_ = null;\n if (res.targetRunId) {\n runId_ = res.targetRunId;\n }\n else if (run) {\n runId_ = run.id;\n }\n feedbacks.push(await this.createFeedback(runId_, res.key, {\n score: res.score,\n value: res.value,\n comment: res.comment,\n correction: res.correction,\n sourceInfo: sourceInfo_,\n sourceRunId: res.sourceRunId,\n feedbackConfig: res.feedbackConfig,\n feedbackSourceType: \"model\",\n }));\n }\n return [evalResults, feedbacks];\n }\n async logEvaluationFeedback(evaluatorResponse, run, sourceInfo) {\n const [results] = await this._logEvaluationFeedback(evaluatorResponse, run, sourceInfo);\n return results;\n }\n /**\n * API for managing annotation queues\n */\n /**\n * List the annotation queues on the LangSmith API.\n * @param options - The options for listing annotation queues\n * @param options.queueIds - The IDs of the queues to filter by\n * @param options.name - The name of the queue to filter by\n * @param options.nameContains - The substring that the queue name should contain\n * @param options.limit - The maximum number of queues to return\n * @returns An iterator of AnnotationQueue objects\n */\n async *listAnnotationQueues(options = {}) {\n const { queueIds, name, nameContains, limit } = options;\n const params = new URLSearchParams();\n if (queueIds) {\n queueIds.forEach((id, i) => {\n assertUuid(id, `queueIds[${i}]`);\n params.append(\"ids\", id);\n });\n }\n if (name)\n params.append(\"name\", name);\n if (nameContains)\n params.append(\"name_contains\", nameContains);\n params.append(\"limit\", (limit !== undefined ? Math.min(limit, 100) : 100).toString());\n let count = 0;\n for await (const queues of this._getPaginated(\"/annotation-queues\", params)) {\n yield* queues;\n count++;\n if (limit !== undefined && count >= limit)\n break;\n }\n }\n /**\n * Create an annotation queue on the LangSmith API.\n * @param options - The options for creating an annotation queue\n * @param options.name - The name of the annotation queue\n * @param options.description - The description of the annotation queue\n * @param options.queueId - The ID of the annotation queue\n * @returns The created AnnotationQueue object\n */\n async createAnnotationQueue(options) {\n const { name, description, queueId } = options;\n const body = {\n name,\n description,\n id: queueId || uuid.v4(),\n };\n const response = await this.caller.call(_getFetchImplementation(), `${this.apiUrl}/annotation-queues`, {\n method: \"POST\",\n headers: { ...this.headers, \"Content-Type\": \"application/json\" },\n body: JSON.stringify(Object.fromEntries(Object.entries(body).filter(([_, v]) => v !== undefined))),\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n await raiseForStatus(response, \"create annotation queue\");\n const data = await response.json();\n return data;\n }\n /**\n * Read an annotation queue with the specified queue ID.\n * @param queueId - The ID of the annotation queue to read\n * @returns The AnnotationQueue object\n */\n async readAnnotationQueue(queueId) {\n // TODO: Replace when actual endpoint is added\n const queueIteratorResult = await this.listAnnotationQueues({\n queueIds: [queueId],\n }).next();\n if (queueIteratorResult.done) {\n throw new Error(`Annotation queue with ID ${queueId} not found`);\n }\n return queueIteratorResult.value;\n }\n /**\n * Update an annotation queue with the specified queue ID.\n * @param queueId - The ID of the annotation queue to update\n * @param options - The options for updating the annotation queue\n * @param options.name - The new name for the annotation queue\n * @param options.description - The new description for the annotation queue\n */\n async updateAnnotationQueue(queueId, options) {\n const { name, description } = options;\n const response = await this.caller.call(_getFetchImplementation(), `${this.apiUrl}/annotation-queues/${assertUuid(queueId, \"queueId\")}`, {\n method: \"PATCH\",\n headers: { ...this.headers, \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ name, description }),\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n await raiseForStatus(response, \"update annotation queue\");\n }\n /**\n * Delete an annotation queue with the specified queue ID.\n * @param queueId - The ID of the annotation queue to delete\n */\n async deleteAnnotationQueue(queueId) {\n const response = await this.caller.call(_getFetchImplementation(), `${this.apiUrl}/annotation-queues/${assertUuid(queueId, \"queueId\")}`, {\n method: \"DELETE\",\n headers: { ...this.headers, Accept: \"application/json\" },\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n await raiseForStatus(response, \"delete annotation queue\");\n }\n /**\n * Add runs to an annotation queue with the specified queue ID.\n * @param queueId - The ID of the annotation queue\n * @param runIds - The IDs of the runs to be added to the annotation queue\n */\n async addRunsToAnnotationQueue(queueId, runIds) {\n const response = await this.caller.call(_getFetchImplementation(), `${this.apiUrl}/annotation-queues/${assertUuid(queueId, \"queueId\")}/runs`, {\n method: \"POST\",\n headers: { ...this.headers, \"Content-Type\": \"application/json\" },\n body: JSON.stringify(runIds.map((id, i) => assertUuid(id, `runIds[${i}]`).toString())),\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n await raiseForStatus(response, \"add runs to annotation queue\");\n }\n /**\n * Get a run from an annotation queue at the specified index.\n * @param queueId - The ID of the annotation queue\n * @param index - The index of the run to retrieve\n * @returns A Promise that resolves to a RunWithAnnotationQueueInfo object\n * @throws {Error} If the run is not found at the given index or for other API-related errors\n */\n async getRunFromAnnotationQueue(queueId, index) {\n const baseUrl = `/annotation-queues/${assertUuid(queueId, \"queueId\")}/run`;\n const response = await this.caller.call(_getFetchImplementation(), `${this.apiUrl}${baseUrl}/${index}`, {\n method: \"GET\",\n headers: this.headers,\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n await raiseForStatus(response, \"get run from annotation queue\");\n return await response.json();\n }\n async _currentTenantIsOwner(owner) {\n const settings = await this._getSettings();\n return owner == \"-\" || settings.tenant_handle === owner;\n }\n async _ownerConflictError(action, owner) {\n const settings = await this._getSettings();\n return new Error(`Cannot ${action} for another tenant.\\n\n Current tenant: ${settings.tenant_handle}\\n\n Requested tenant: ${owner}`);\n }\n async _getLatestCommitHash(promptOwnerAndName) {\n const res = await this.caller.call(_getFetchImplementation(), `${this.apiUrl}/commits/${promptOwnerAndName}/?limit=${1}&offset=${0}`, {\n method: \"GET\",\n headers: this.headers,\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n const json = await res.json();\n if (!res.ok) {\n const detail = typeof json.detail === \"string\"\n ? json.detail\n : JSON.stringify(json.detail);\n const error = new Error(`Error ${res.status}: ${res.statusText}\\n${detail}`);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n error.statusCode = res.status;\n throw error;\n }\n if (json.commits.length === 0) {\n return undefined;\n }\n return json.commits[0].commit_hash;\n }\n async _likeOrUnlikePrompt(promptIdentifier, like) {\n const [owner, promptName, _] = parsePromptIdentifier(promptIdentifier);\n const response = await this.caller.call(_getFetchImplementation(), `${this.apiUrl}/likes/${owner}/${promptName}`, {\n method: \"POST\",\n body: JSON.stringify({ like: like }),\n headers: { ...this.headers, \"Content-Type\": \"application/json\" },\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n await raiseForStatus(response, `${like ? \"like\" : \"unlike\"} prompt`);\n return await response.json();\n }\n async _getPromptUrl(promptIdentifier) {\n const [owner, promptName, commitHash] = parsePromptIdentifier(promptIdentifier);\n if (!(await this._currentTenantIsOwner(owner))) {\n if (commitHash !== \"latest\") {\n return `${this.getHostUrl()}/hub/${owner}/${promptName}/${commitHash.substring(0, 8)}`;\n }\n else {\n return `${this.getHostUrl()}/hub/${owner}/${promptName}`;\n }\n }\n else {\n const settings = await this._getSettings();\n if (commitHash !== \"latest\") {\n return `${this.getHostUrl()}/prompts/${promptName}/${commitHash.substring(0, 8)}?organizationId=${settings.id}`;\n }\n else {\n return `${this.getHostUrl()}/prompts/${promptName}?organizationId=${settings.id}`;\n }\n }\n }\n async promptExists(promptIdentifier) {\n const prompt = await this.getPrompt(promptIdentifier);\n return !!prompt;\n }\n async likePrompt(promptIdentifier) {\n return this._likeOrUnlikePrompt(promptIdentifier, true);\n }\n async unlikePrompt(promptIdentifier) {\n return this._likeOrUnlikePrompt(promptIdentifier, false);\n }\n async *listCommits(promptOwnerAndName) {\n for await (const commits of this._getPaginated(`/commits/${promptOwnerAndName}/`, new URLSearchParams(), (res) => res.commits)) {\n yield* commits;\n }\n }\n async *listPrompts(options) {\n const params = new URLSearchParams();\n params.append(\"sort_field\", options?.sortField ?? \"updated_at\");\n params.append(\"sort_direction\", \"desc\");\n params.append(\"is_archived\", (!!options?.isArchived).toString());\n if (options?.isPublic !== undefined) {\n params.append(\"is_public\", options.isPublic.toString());\n }\n if (options?.query) {\n params.append(\"query\", options.query);\n }\n for await (const prompts of this._getPaginated(\"/repos\", params, (res) => res.repos)) {\n yield* prompts;\n }\n }\n async getPrompt(promptIdentifier) {\n const [owner, promptName, _] = parsePromptIdentifier(promptIdentifier);\n const response = await this.caller.call(_getFetchImplementation(), `${this.apiUrl}/repos/${owner}/${promptName}`, {\n method: \"GET\",\n headers: this.headers,\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n if (response.status === 404) {\n return null;\n }\n await raiseForStatus(response, \"get prompt\");\n const result = await response.json();\n if (result.repo) {\n return result.repo;\n }\n else {\n return null;\n }\n }\n async createPrompt(promptIdentifier, options) {\n const settings = await this._getSettings();\n if (options?.isPublic && !settings.tenant_handle) {\n throw new Error(`Cannot create a public prompt without first\\n\n creating a LangChain Hub handle. \n You can add a handle by creating a public prompt at:\\n\n https://smith.langchain.com/prompts`);\n }\n const [owner, promptName, _] = parsePromptIdentifier(promptIdentifier);\n if (!(await this._currentTenantIsOwner(owner))) {\n throw await this._ownerConflictError(\"create a prompt\", owner);\n }\n const data = {\n repo_handle: promptName,\n ...(options?.description && { description: options.description }),\n ...(options?.readme && { readme: options.readme }),\n ...(options?.tags && { tags: options.tags }),\n is_public: !!options?.isPublic,\n };\n const response = await this.caller.call(_getFetchImplementation(), `${this.apiUrl}/repos/`, {\n method: \"POST\",\n headers: { ...this.headers, \"Content-Type\": \"application/json\" },\n body: JSON.stringify(data),\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n await raiseForStatus(response, \"create prompt\");\n const { repo } = await response.json();\n return repo;\n }\n async createCommit(promptIdentifier, object, options) {\n if (!(await this.promptExists(promptIdentifier))) {\n throw new Error(\"Prompt does not exist, you must create it first.\");\n }\n const [owner, promptName, _] = parsePromptIdentifier(promptIdentifier);\n const resolvedParentCommitHash = options?.parentCommitHash === \"latest\" || !options?.parentCommitHash\n ? await this._getLatestCommitHash(`${owner}/${promptName}`)\n : options?.parentCommitHash;\n const payload = {\n manifest: JSON.parse(JSON.stringify(object)),\n parent_commit: resolvedParentCommitHash,\n };\n const response = await this.caller.call(_getFetchImplementation(), `${this.apiUrl}/commits/${owner}/${promptName}`, {\n method: \"POST\",\n headers: { ...this.headers, \"Content-Type\": \"application/json\" },\n body: JSON.stringify(payload),\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n await raiseForStatus(response, \"create commit\");\n const result = await response.json();\n return this._getPromptUrl(`${owner}/${promptName}${result.commit_hash ? `:${result.commit_hash}` : \"\"}`);\n }\n async updatePrompt(promptIdentifier, options) {\n if (!(await this.promptExists(promptIdentifier))) {\n throw new Error(\"Prompt does not exist, you must create it first.\");\n }\n const [owner, promptName] = parsePromptIdentifier(promptIdentifier);\n if (!(await this._currentTenantIsOwner(owner))) {\n throw await this._ownerConflictError(\"update a prompt\", owner);\n }\n const payload = {};\n if (options?.description !== undefined)\n payload.description = options.description;\n if (options?.readme !== undefined)\n payload.readme = options.readme;\n if (options?.tags !== undefined)\n payload.tags = options.tags;\n if (options?.isPublic !== undefined)\n payload.is_public = options.isPublic;\n if (options?.isArchived !== undefined)\n payload.is_archived = options.isArchived;\n // Check if payload is empty\n if (Object.keys(payload).length === 0) {\n throw new Error(\"No valid update options provided\");\n }\n const response = await this.caller.call(_getFetchImplementation(), `${this.apiUrl}/repos/${owner}/${promptName}`, {\n method: \"PATCH\",\n body: JSON.stringify(payload),\n headers: {\n ...this.headers,\n \"Content-Type\": \"application/json\",\n },\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n await raiseForStatus(response, \"update prompt\");\n return response.json();\n }\n async deletePrompt(promptIdentifier) {\n if (!(await this.promptExists(promptIdentifier))) {\n throw new Error(\"Prompt does not exist, you must create it first.\");\n }\n const [owner, promptName, _] = parsePromptIdentifier(promptIdentifier);\n if (!(await this._currentTenantIsOwner(owner))) {\n throw await this._ownerConflictError(\"delete a prompt\", owner);\n }\n const response = await this.caller.call(_getFetchImplementation(), `${this.apiUrl}/repos/${owner}/${promptName}`, {\n method: \"DELETE\",\n headers: this.headers,\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n return await response.json();\n }\n async pullPromptCommit(promptIdentifier, options) {\n const [owner, promptName, commitHash] = parsePromptIdentifier(promptIdentifier);\n const serverInfo = await this._getServerInfo();\n const useOptimization = isVersionGreaterOrEqual(serverInfo.version, \"0.5.23\");\n let passedCommitHash = commitHash;\n if (!useOptimization && commitHash === \"latest\") {\n const latestCommitHash = await this._getLatestCommitHash(`${owner}/${promptName}`);\n if (!latestCommitHash) {\n throw new Error(\"No commits found\");\n }\n else {\n passedCommitHash = latestCommitHash;\n }\n }\n const response = await this.caller.call(_getFetchImplementation(), `${this.apiUrl}/commits/${owner}/${promptName}/${passedCommitHash}${options?.includeModel ? \"?include_model=true\" : \"\"}`, {\n method: \"GET\",\n headers: this.headers,\n signal: AbortSignal.timeout(this.timeout_ms),\n ...this.fetchOptions,\n });\n await raiseForStatus(response, \"pull prompt commit\");\n const result = await response.json();\n return {\n owner,\n repo: promptName,\n commit_hash: result.commit_hash,\n manifest: result.manifest,\n examples: result.examples,\n };\n }\n /**\n * This method should not be used directly, use `import { pull } from \"langchain/hub\"` instead.\n * Using this method directly returns the JSON string of the prompt rather than a LangChain object.\n * @private\n */\n async _pullPrompt(promptIdentifier, options) {\n const promptObject = await this.pullPromptCommit(promptIdentifier, {\n includeModel: options?.includeModel,\n });\n const prompt = JSON.stringify(promptObject.manifest);\n return prompt;\n }\n async pushPrompt(promptIdentifier, options) {\n // Create or update prompt metadata\n if (await this.promptExists(promptIdentifier)) {\n if (options && Object.keys(options).some((key) => key !== \"object\")) {\n await this.updatePrompt(promptIdentifier, {\n description: options?.description,\n readme: options?.readme,\n tags: options?.tags,\n isPublic: options?.isPublic,\n });\n }\n }\n else {\n await this.createPrompt(promptIdentifier, {\n description: options?.description,\n readme: options?.readme,\n tags: options?.tags,\n isPublic: options?.isPublic,\n });\n }\n if (!options?.object) {\n return await this._getPromptUrl(promptIdentifier);\n }\n // Create a commit with the new manifest\n const url = await this.createCommit(promptIdentifier, options?.object, {\n parentCommitHash: options?.parentCommitHash,\n });\n return url;\n }\n /**\n * Clone a public dataset to your own langsmith tenant.\n * This operation is idempotent. If you already have a dataset with the given name,\n * this function will do nothing.\n \n * @param {string} tokenOrUrl The token of the public dataset to clone.\n * @param {Object} [options] Additional options for cloning the dataset.\n * @param {string} [options.sourceApiUrl] The URL of the langsmith server where the data is hosted. Defaults to the API URL of your current client.\n * @param {string} [options.datasetName] The name of the dataset to create in your tenant. Defaults to the name of the public dataset.\n * @returns {Promise<void>}\n */\n async clonePublicDataset(tokenOrUrl, options = {}) {\n const { sourceApiUrl = this.apiUrl, datasetName } = options;\n const [parsedApiUrl, tokenUuid] = this.parseTokenOrUrl(tokenOrUrl, sourceApiUrl);\n const sourceClient = new Client({\n apiUrl: parsedApiUrl,\n // Placeholder API key not needed anymore in most cases, but\n // some private deployments may have API key-based rate limiting\n // that would cause this to fail if we provide no value.\n apiKey: \"placeholder\",\n });\n const ds = await sourceClient.readSharedDataset(tokenUuid);\n const finalDatasetName = datasetName || ds.name;\n try {\n if (await this.hasDataset({ datasetId: finalDatasetName })) {\n console.log(`Dataset ${finalDatasetName} already exists in your tenant. Skipping.`);\n return;\n }\n }\n catch (_) {\n // `.hasDataset` will throw an error if the dataset does not exist.\n // no-op in that case\n }\n // Fetch examples first, then create the dataset\n const examples = await sourceClient.listSharedExamples(tokenUuid);\n const dataset = await this.createDataset(finalDatasetName, {\n description: ds.description,\n dataType: ds.data_type || \"kv\",\n inputsSchema: ds.inputs_schema_definition ?? undefined,\n outputsSchema: ds.outputs_schema_definition ?? undefined,\n });\n try {\n await this.createExamples({\n inputs: examples.map((e) => e.inputs),\n outputs: examples.flatMap((e) => (e.outputs ? [e.outputs] : [])),\n datasetId: dataset.id,\n });\n }\n catch (e) {\n console.error(`An error occurred while creating dataset ${finalDatasetName}. ` +\n \"You should delete it manually.\");\n throw e;\n }\n }\n parseTokenOrUrl(urlOrToken, apiUrl, numParts = 2, kind = \"dataset\") {\n // Try parsing as UUID\n try {\n assertUuid(urlOrToken); // Will throw if it's not a UUID.\n return [apiUrl, urlOrToken];\n }\n catch (_) {\n // no-op if it's not a uuid\n }\n // Parse as URL\n try {\n const parsedUrl = new URL(urlOrToken);\n const pathParts = parsedUrl.pathname\n .split(\"/\")\n .filter((part) => part !== \"\");\n if (pathParts.length >= numParts) {\n const tokenUuid = pathParts[pathParts.length - numParts];\n return [apiUrl, tokenUuid];\n }\n else {\n throw new Error(`Invalid public ${kind} URL: ${urlOrToken}`);\n }\n }\n catch (error) {\n throw new Error(`Invalid public ${kind} URL or token: ${urlOrToken}`);\n }\n }\n /**\n * Awaits all pending trace batches. Useful for environments where\n * you need to be sure that all tracing requests finish before execution ends,\n * such as serverless environments.\n *\n * @example\n * ```\n * import { Client } from \"langsmith\";\n *\n * const client = new Client();\n *\n * try {\n * // Tracing happens here\n * ...\n * } finally {\n * await client.awaitPendingTraceBatches();\n * }\n * ```\n *\n * @returns A promise that resolves once all currently pending traces have sent.\n */\n awaitPendingTraceBatches() {\n return Promise.all([\n ...this.autoBatchQueue.items.map(({ itemPromise }) => itemPromise),\n this.batchIngestCaller.queue.onIdle(),\n ]);\n }\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
|