{"version":3,"sources":["../node_modules/prom-client/lib/util.js","../node_modules/prom-client/lib/registry.js","../node_modules/prom-client/lib/validation.js","../node_modules/prom-client/lib/metric.js","../node_modules/prom-client/lib/exemplar.js","../node_modules/prom-client/lib/counter.js","../node_modules/prom-client/lib/gauge.js","../node_modules/prom-client/lib/histogram.js","../node_modules/bintrees/lib/treebase.js","../node_modules/bintrees/lib/rbtree.js","../node_modules/bintrees/lib/bintree.js","../node_modules/bintrees/index.js","../node_modules/tdigest/tdigest.js","../node_modules/prom-client/lib/timeWindowQuantiles.js","../node_modules/prom-client/lib/summary.js","../node_modules/prom-client/lib/pushgateway.js","../node_modules/prom-client/lib/bucketGenerators.js","../node_modules/@opentelemetry/api/src/platform/node/globalThis.ts","../node_modules/@opentelemetry/api/src/platform/node/index.ts","../node_modules/@opentelemetry/api/src/platform/index.ts","../node_modules/@opentelemetry/api/src/version.ts","../node_modules/@opentelemetry/api/src/internal/semver.ts","../node_modules/@opentelemetry/api/src/internal/global-utils.ts","../node_modules/@opentelemetry/api/src/diag/ComponentLogger.ts","../node_modules/@opentelemetry/api/src/diag/types.ts","../node_modules/@opentelemetry/api/src/diag/internal/logLevelLogger.ts","../node_modules/@opentelemetry/api/src/api/diag.ts","../node_modules/@opentelemetry/api/src/baggage/internal/baggage-impl.ts","../node_modules/@opentelemetry/api/src/baggage/internal/symbol.ts","../node_modules/@opentelemetry/api/src/baggage/utils.ts","../node_modules/@opentelemetry/api/src/context/context.ts","../node_modules/@opentelemetry/api/src/diag/consoleLogger.ts","../node_modules/@opentelemetry/api/src/metrics/NoopMeter.ts","../node_modules/@opentelemetry/api/src/metrics/Metric.ts","../node_modules/@opentelemetry/api/src/propagation/TextMapPropagator.ts","../node_modules/@opentelemetry/api/src/context/NoopContextManager.ts","../node_modules/@opentelemetry/api/src/api/context.ts","../node_modules/@opentelemetry/api/src/trace/trace_flags.ts","../node_modules/@opentelemetry/api/src/trace/invalid-span-constants.ts","../node_modules/@opentelemetry/api/src/trace/NonRecordingSpan.ts","../node_modules/@opentelemetry/api/src/trace/context-utils.ts","../node_modules/@opentelemetry/api/src/trace/spancontext-utils.ts","../node_modules/@opentelemetry/api/src/trace/NoopTracer.ts","../node_modules/@opentelemetry/api/src/trace/ProxyTracer.ts","../node_modules/@opentelemetry/api/src/trace/NoopTracerProvider.ts","../node_modules/@opentelemetry/api/src/trace/ProxyTracerProvider.ts","../node_modules/@opentelemetry/api/src/trace/SamplingResult.ts","../node_modules/@opentelemetry/api/src/trace/span_kind.ts","../node_modules/@opentelemetry/api/src/trace/status.ts","../node_modules/@opentelemetry/api/src/trace/internal/tracestate-validators.ts","../node_modules/@opentelemetry/api/src/trace/internal/tracestate-impl.ts","../node_modules/@opentelemetry/api/src/trace/internal/utils.ts","../node_modules/@opentelemetry/api/src/context-api.ts","../node_modules/@opentelemetry/api/src/diag-api.ts","../node_modules/@opentelemetry/api/src/metrics/NoopMeterProvider.ts","../node_modules/@opentelemetry/api/src/api/metrics.ts","../node_modules/@opentelemetry/api/src/metrics-api.ts","../node_modules/@opentelemetry/api/src/propagation/NoopTextMapPropagator.ts","../node_modules/@opentelemetry/api/src/baggage/context-helpers.ts","../node_modules/@opentelemetry/api/src/api/propagation.ts","../node_modules/@opentelemetry/api/src/propagation-api.ts","../node_modules/@opentelemetry/api/src/api/trace.ts","../node_modules/@opentelemetry/api/src/trace-api.ts","../node_modules/@opentelemetry/api/src/index.ts","../node_modules/prom-client/lib/metrics/processCpuTotal.js","../node_modules/prom-client/lib/metrics/processStartTime.js","../node_modules/prom-client/lib/metrics/osMemoryHeapLinux.js","../node_modules/prom-client/lib/metrics/helpers/safeMemoryUsage.js","../node_modules/prom-client/lib/metrics/osMemoryHeap.js","../node_modules/prom-client/lib/metrics/processOpenFileDescriptors.js","../node_modules/prom-client/lib/metrics/processMaxFileDescriptors.js","../node_modules/prom-client/lib/metrics/eventLoopLag.js","../node_modules/prom-client/lib/metrics/helpers/processMetricsHelpers.js","../node_modules/prom-client/lib/metrics/processHandles.js","../node_modules/prom-client/lib/metrics/processRequests.js","../node_modules/prom-client/lib/metrics/processResources.js","../node_modules/prom-client/lib/metrics/heapSizeAndUsed.js","../node_modules/prom-client/lib/metrics/heapSpacesSizeAndUsed.js","../node_modules/prom-client/lib/metrics/version.js","../node_modules/prom-client/lib/metrics/gc.js","../node_modules/prom-client/lib/defaultMetrics.js","../node_modules/prom-client/lib/metricAggregators.js","../node_modules/prom-client/lib/cluster.js","../node_modules/prom-client/index.js","../src/sdk/worker/metrics/PrometheusRegistry.ts","../src/sdk/worker/metrics/MetricsServer.ts","../src/sdk/createConductorClient/constants.ts","../src/sdk/createConductorClient/helpers/getUndiciHttp2FetchFn.ts","../src/sdk/createConductorClient/helpers/resolveFetchFn.ts","../src/sdk/createConductorClient/helpers/resolveOrkesConfig.ts","../src/open-api/generated/core/bodySerializer.gen.ts","../src/open-api/generated/core/serverSentEvents.gen.ts","../src/open-api/generated/core/pathSerializer.gen.ts","../src/open-api/generated/core/utils.gen.ts","../src/open-api/generated/core/auth.gen.ts","../src/open-api/generated/client/utils.gen.ts","../src/open-api/generated/client/client.gen.ts","../src/open-api/generated/client.gen.ts","../src/open-api/generated/sdk.gen.ts","../src/sdk/helpers/errors.ts","../src/sdk/createConductorClient/helpers/handleAuth.ts","../src/sdk/createConductorClient/helpers/fetchWithRetry.ts","../src/sdk/createConductorClient/helpers/addResourcesBackwardCompatibility.ts","../src/sdk/createConductorClient/createConductorClient.ts","../src/sdk/clients/application/ApplicationClient.ts","../src/sdk/clients/authorization/AuthorizationClient.ts","../src/sdk/clients/event/EventClient.ts","../src/sdk/clients/human/constants.ts","../src/sdk/clients/human/HumanExecutor.ts","../src/sdk/clients/integration/IntegrationClient.ts","../src/sdk/clients/metadata/MetadataClient.ts","../src/sdk/clients/prompt/PromptClient.ts","../src/sdk/clients/scheduler/SchedulerClient.ts","../src/sdk/clients/schema/SchemaClient.ts","../src/sdk/clients/secret/SecretClient.ts","../src/sdk/clients/service-registry/ServiceRegistryClient.ts","../src/sdk/clients/task/TaskClient.ts","../src/sdk/clients/template/TemplateClient.ts","../src/open-api/types.ts","../src/open-api/deprecated-types.ts","../src/sdk/clients/workflow/helpers/enhanceSignalResponse.ts","../src/sdk/clients/workflow/helpers/reverseFind.ts","../src/sdk/clients/workflow/helpers/isCompletedTaskMatchingType.ts","../src/sdk/clients/workflow/constants.ts","../src/sdk/clients/workflow/WorkflowExecutor.ts","../src/sdk/OrkesClients.ts","../src/sdk/helpers/logger.ts","../src/sdk/clients/worker/constants.ts","../src/sdk/clients/worker/Poller.ts","../src/sdk/clients/worker/types.ts","../src/sdk/clients/worker/helpers.ts","../src/sdk/clients/worker/events/EventDispatcher.ts","../src/sdk/clients/worker/exceptions/Exceptions.ts","../src/sdk/clients/worker/LeaseTracker.ts","../src/sdk/worker/context/TaskContext.ts","../src/sdk/clients/worker/TaskRunner.ts","../src/sdk/clients/worker/TaskManager.ts","../src/sdk/builders/tasks/doWhile.ts","../src/sdk/builders/tasks/dynamic.ts","../src/sdk/builders/tasks/dynamicFork.ts","../src/sdk/builders/tasks/event.ts","../src/sdk/generators/common.ts","../src/sdk/generators/SimpleTask.ts","../src/sdk/generators/DoWhileTask.ts","../src/sdk/generators/EventTask.ts","../src/sdk/generators/ForkJoin.ts","../src/sdk/generators/HttpTask.ts","../src/sdk/generators/InlineTask.ts","../src/sdk/generators/JsonJQTransform.ts","../src/sdk/generators/KafkaTask.ts","../src/sdk/generators/SubWorkflowTask.ts","../src/sdk/generators/SetVariableTask.ts","../src/sdk/generators/TerminateTask.ts","../src/sdk/generators/WaitTask.ts","../src/sdk/generators/SwitchTask.ts","../src/sdk/generators/WorkflowGenerator.ts","../src/sdk/generators/ForkJoinDynamicTask.ts","../src/sdk/generators/generator.ts","../src/sdk/generators/index.ts","../src/sdk/builders/tasks/forkJoin.ts","../src/sdk/builders/tasks/getDocument.ts","../src/sdk/builders/tasks/http.ts","../src/sdk/builders/tasks/httpPoll.ts","../src/sdk/builders/tasks/humanTask.ts","../src/sdk/builders/tasks/inline.ts","../src/sdk/builders/tasks/join.ts","../src/sdk/builders/tasks/jsonJq.ts","../src/sdk/builders/tasks/kafkaPublish.ts","../src/sdk/builders/tasks/setVariable.ts","../src/sdk/builders/tasks/simple.ts","../src/sdk/builders/tasks/startWorkflow.ts","../src/sdk/builders/tasks/subWorkflow.ts","../src/sdk/builders/tasks/switch.ts","../src/sdk/builders/tasks/terminate.ts","../src/sdk/builders/tasks/wait.ts","../src/sdk/builders/tasks/waitForWebhook.ts","../src/sdk/builders/tasks/llm/types.ts","../src/sdk/builders/tasks/llm/llmChatComplete.ts","../src/sdk/builders/tasks/llm/llmTextComplete.ts","../src/sdk/builders/tasks/llm/llmGenerateEmbeddings.ts","../src/sdk/builders/tasks/llm/llmIndexText.ts","../src/sdk/builders/tasks/llm/llmIndexDocument.ts","../src/sdk/builders/tasks/llm/llmSearchIndex.ts","../src/sdk/builders/tasks/llm/llmSearchEmbeddings.ts","../src/sdk/builders/tasks/llm/llmStoreEmbeddings.ts","../src/sdk/builders/tasks/llm/llmQueryEmbeddings.ts","../src/sdk/builders/tasks/llm/generateImage.ts","../src/sdk/builders/tasks/llm/generateAudio.ts","../src/sdk/builders/tasks/llm/callMcpTool.ts","../src/sdk/builders/tasks/llm/listMcpTools.ts","../src/sdk/builders/tasks/llm/promptHelpers.ts","../src/sdk/builders/tasks/pullWorkflowMessages.ts","../src/sdk/builders/workflow.ts","../src/sdk/builders/taskDefinition.ts","../src/sdk/builders/ConductorWorkflow.ts","../src/sdk/worker/core/TaskHandler.ts","../src/sdk/worker/config/WorkerConfig.ts","../src/sdk/worker/decorators/registry.ts","../src/sdk/worker/schema/decorators.ts","../src/sdk/worker/decorators/worker.ts","../src/sdk/worker/metrics/MetricsCollector.ts","../src/sdk/worker/metrics/index.ts","../src/sdk/worker/schema/generateJsonSchema.ts"],"sourcesContent":["'use strict';\n\nexports.getValueAsString = function getValueString(value) {\n\tif (Number.isNaN(value)) {\n\t\treturn 'Nan';\n\t} else if (!Number.isFinite(value)) {\n\t\tif (value < 0) {\n\t\t\treturn '-Inf';\n\t\t} else {\n\t\t\treturn '+Inf';\n\t\t}\n\t} else {\n\t\treturn `${value}`;\n\t}\n};\n\nexports.removeLabels = function removeLabels(\n\thashMap,\n\tlabels,\n\tsortedLabelNames,\n) {\n\tconst hash = hashObject(labels, sortedLabelNames);\n\tdelete hashMap[hash];\n};\n\nexports.setValue = function setValue(hashMap, value, labels) {\n\tconst hash = hashObject(labels);\n\thashMap[hash] = {\n\t\tvalue: typeof value === 'number' ? value : 0,\n\t\tlabels: labels || {},\n\t};\n\treturn hashMap;\n};\n\nexports.setValueDelta = function setValueDelta(\n\thashMap,\n\tdeltaValue,\n\tlabels,\n\thash = '',\n) {\n\tconst value = typeof deltaValue === 'number' ? deltaValue : 0;\n\tif (hashMap[hash]) {\n\t\thashMap[hash].value += value;\n\t} else {\n\t\thashMap[hash] = { value, labels };\n\t}\n\treturn hashMap;\n};\n\nexports.getLabels = function (labelNames, args) {\n\tif (typeof args[0] === 'object') {\n\t\treturn args[0];\n\t}\n\n\tif (labelNames.length !== args.length) {\n\t\tthrow new Error(\n\t\t\t`Invalid number of arguments (${args.length}): \"${args.join(\n\t\t\t\t', ',\n\t\t\t)}\" for label names (${labelNames.length}): \"${labelNames.join(', ')}\".`,\n\t\t);\n\t}\n\n\tconst acc = {};\n\tfor (let i = 0; i < labelNames.length; i++) {\n\t\tacc[labelNames[i]] = args[i];\n\t}\n\treturn acc;\n};\n\nfunction fastHashObject(keys, labels) {\n\tif (keys.length === 0) {\n\t\treturn '';\n\t}\n\n\tlet hash = '';\n\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tconst key = keys[i];\n\t\tconst value = labels[key];\n\t\tif (value === undefined) continue;\n\n\t\thash += `${key}:${value},`;\n\t}\n\n\treturn hash;\n}\n\nfunction hashObject(labels, labelNames) {\n\t// We don't actually need a hash here. We just need a string that\n\t// is unique for each possible labels object and consistent across\n\t// calls with equivalent labels objects.\n\n\tif (labelNames) {\n\t\treturn fastHashObject(labelNames, labels);\n\t}\n\n\tconst keys = Object.keys(labels);\n\tif (keys.length > 1) {\n\t\tkeys.sort(); // need consistency across calls\n\t}\n\n\treturn fastHashObject(keys, labels);\n}\nexports.hashObject = hashObject;\n\nexports.isObject = function isObject(obj) {\n\treturn obj !== null && typeof obj === 'object';\n};\n\nexports.nowTimestamp = function nowTimestamp() {\n\treturn Date.now() / 1000;\n};\n\nclass Grouper extends Map {\n\t/**\n\t * Adds the `value` to the `key`'s array of values.\n\t * @param {*} key Key to set.\n\t * @param {*} value Value to add to `key`'s array.\n\t * @returns {undefined} undefined.\n\t */\n\tadd(key, value) {\n\t\tif (this.has(key)) {\n\t\t\tthis.get(key).push(value);\n\t\t} else {\n\t\t\tthis.set(key, [value]);\n\t\t}\n\t}\n}\n\nexports.Grouper = Grouper;\n","'use strict';\n\nconst { getValueAsString } = require('./util');\n\nclass Registry {\n\tstatic get PROMETHEUS_CONTENT_TYPE() {\n\t\treturn 'text/plain; version=0.0.4; charset=utf-8';\n\t}\n\n\tstatic get OPENMETRICS_CONTENT_TYPE() {\n\t\treturn 'application/openmetrics-text; version=1.0.0; charset=utf-8';\n\t}\n\n\tconstructor(regContentType = Registry.PROMETHEUS_CONTENT_TYPE) {\n\t\tthis._metrics = {};\n\t\tthis._collectors = [];\n\t\tthis._defaultLabels = {};\n\t\tif (\n\t\t\tregContentType !== Registry.PROMETHEUS_CONTENT_TYPE &&\n\t\t\tregContentType !== Registry.OPENMETRICS_CONTENT_TYPE\n\t\t) {\n\t\t\tthrow new TypeError(`Content type ${regContentType} is unsupported`);\n\t\t}\n\t\tthis._contentType = regContentType;\n\t}\n\n\tgetMetricsAsArray() {\n\t\treturn Object.values(this._metrics);\n\t}\n\n\tasync getMetricsAsString(metrics) {\n\t\tconst metric =\n\t\t\ttypeof metrics.getForPromString === 'function'\n\t\t\t\t? await metrics.getForPromString()\n\t\t\t\t: await metrics.get();\n\n\t\tconst name = escapeString(metric.name);\n\t\tconst help = `# HELP ${name} ${escapeString(metric.help)}`;\n\t\tconst type = `# TYPE ${name} ${metric.type}`;\n\t\tconst values = [help, type];\n\n\t\tconst defaultLabels =\n\t\t\tObject.keys(this._defaultLabels).length > 0 ? this._defaultLabels : null;\n\n\t\tconst isOpenMetrics =\n\t\t\tthis.contentType === Registry.OPENMETRICS_CONTENT_TYPE;\n\n\t\tfor (const val of metric.values || []) {\n\t\t\tlet { metricName = name, labels = {} } = val;\n\t\t\tconst { sharedLabels = {} } = val;\n\t\t\tif (isOpenMetrics && metric.type === 'counter') {\n\t\t\t\tmetricName = `${metricName}_total`;\n\t\t\t}\n\n\t\t\tif (defaultLabels) {\n\t\t\t\tlabels = { ...labels, ...defaultLabels, ...labels };\n\t\t\t}\n\n\t\t\t// We have to flatten these separately to avoid duplicate labels appearing\n\t\t\t// between the base labels and the shared labels\n\t\t\tconst formattedLabels = formatLabels(labels, sharedLabels);\n\n\t\t\tconst flattenedShared = flattenSharedLabels(sharedLabels);\n\t\t\tconst labelParts = [...formattedLabels, flattenedShared].filter(Boolean);\n\t\t\tconst labelsString = labelParts.length ? `{${labelParts.join(',')}}` : '';\n\t\t\tlet fullMetricLine = `${metricName}${labelsString} ${getValueAsString(\n\t\t\t\tval.value,\n\t\t\t)}`;\n\n\t\t\tconst { exemplar } = val;\n\t\t\tif (exemplar && isOpenMetrics) {\n\t\t\t\tconst formattedExemplars = formatLabels(exemplar.labelSet);\n\t\t\t\tfullMetricLine += ` # {${formattedExemplars.join(\n\t\t\t\t\t',',\n\t\t\t\t)}} ${getValueAsString(exemplar.value)} ${exemplar.timestamp}`;\n\t\t\t}\n\t\t\tvalues.push(fullMetricLine);\n\t\t}\n\n\t\treturn values.join('\\n');\n\t}\n\n\tasync metrics() {\n\t\tconst isOpenMetrics =\n\t\t\tthis.contentType === Registry.OPENMETRICS_CONTENT_TYPE;\n\n\t\tconst promises = this.getMetricsAsArray().map(metric => {\n\t\t\tif (isOpenMetrics && metric.type === 'counter') {\n\t\t\t\tmetric.name = standardizeCounterName(metric.name);\n\t\t\t}\n\t\t\treturn this.getMetricsAsString(metric);\n\t\t});\n\n\t\tconst resolves = await Promise.all(promises);\n\n\t\treturn isOpenMetrics\n\t\t\t? `${resolves.join('\\n')}\\n# EOF\\n`\n\t\t\t: `${resolves.join('\\n\\n')}\\n`;\n\t}\n\n\tregisterMetric(metric) {\n\t\tif (this._metrics[metric.name] && this._metrics[metric.name] !== metric) {\n\t\t\tthrow new Error(\n\t\t\t\t`A metric with the name ${metric.name} has already been registered.`,\n\t\t\t);\n\t\t}\n\n\t\tthis._metrics[metric.name] = metric;\n\t}\n\n\tclear() {\n\t\tthis._metrics = {};\n\t\tthis._defaultLabels = {};\n\t}\n\n\tasync getMetricsAsJSON() {\n\t\tconst metrics = [];\n\t\tconst defaultLabelNames = Object.keys(this._defaultLabels);\n\n\t\tconst promises = [];\n\n\t\tfor (const metric of this.getMetricsAsArray()) {\n\t\t\tpromises.push(metric.get());\n\t\t}\n\n\t\tconst resolves = await Promise.all(promises);\n\n\t\tfor (const item of resolves) {\n\t\t\tif (item.values && defaultLabelNames.length > 0) {\n\t\t\t\tfor (const val of item.values) {\n\t\t\t\t\t// Make a copy before mutating\n\t\t\t\t\tval.labels = Object.assign({}, val.labels);\n\n\t\t\t\t\tfor (const labelName of defaultLabelNames) {\n\t\t\t\t\t\tval.labels[labelName] =\n\t\t\t\t\t\t\tval.labels[labelName] || this._defaultLabels[labelName];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tmetrics.push(item);\n\t\t}\n\n\t\treturn metrics;\n\t}\n\n\tremoveSingleMetric(name) {\n\t\tdelete this._metrics[name];\n\t}\n\n\tgetSingleMetricAsString(name) {\n\t\treturn this.getMetricsAsString(this._metrics[name]);\n\t}\n\n\tgetSingleMetric(name) {\n\t\treturn this._metrics[name];\n\t}\n\n\tsetDefaultLabels(labels) {\n\t\tthis._defaultLabels = labels;\n\t}\n\n\tresetMetrics() {\n\t\tfor (const metric in this._metrics) {\n\t\t\tthis._metrics[metric].reset();\n\t\t}\n\t}\n\n\tget contentType() {\n\t\treturn this._contentType;\n\t}\n\n\tsetContentType(metricsContentType) {\n\t\tif (\n\t\t\tmetricsContentType === Registry.OPENMETRICS_CONTENT_TYPE ||\n\t\t\tmetricsContentType === Registry.PROMETHEUS_CONTENT_TYPE\n\t\t) {\n\t\t\tthis._contentType = metricsContentType;\n\t\t} else {\n\t\t\tthrow new Error(`Content type ${metricsContentType} is unsupported`);\n\t\t}\n\t}\n\n\tstatic merge(registers) {\n\t\tconst regType = registers[0].contentType;\n\t\tfor (const reg of registers) {\n\t\t\tif (reg.contentType !== regType) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'Registers can only be merged if they have the same content type',\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tconst mergedRegistry = new Registry(regType);\n\n\t\tconst metricsToMerge = registers.reduce(\n\t\t\t(acc, reg) => acc.concat(reg.getMetricsAsArray()),\n\t\t\t[],\n\t\t);\n\n\t\tmetricsToMerge.forEach(mergedRegistry.registerMetric, mergedRegistry);\n\t\treturn mergedRegistry;\n\t}\n}\n\nfunction formatLabels(labels, exclude) {\n\tconst { hasOwnProperty } = Object.prototype;\n\tconst formatted = [];\n\tfor (const [name, value] of Object.entries(labels)) {\n\t\tif (!exclude || !hasOwnProperty.call(exclude, name)) {\n\t\t\tformatted.push(`${name}=\"${escapeLabelValue(value)}\"`);\n\t\t}\n\t}\n\treturn formatted;\n}\n\nconst sharedLabelCache = new WeakMap();\nfunction flattenSharedLabels(labels) {\n\tconst cached = sharedLabelCache.get(labels);\n\tif (cached) {\n\t\treturn cached;\n\t}\n\n\tconst formattedLabels = formatLabels(labels);\n\tconst flattened = formattedLabels.join(',');\n\tsharedLabelCache.set(labels, flattened);\n\treturn flattened;\n}\nfunction escapeLabelValue(str) {\n\tif (typeof str !== 'string') {\n\t\treturn str;\n\t}\n\treturn escapeString(str).replace(/\"/g, '\\\\\"');\n}\nfunction escapeString(str) {\n\treturn str.replace(/\\\\/g, '\\\\\\\\').replace(/\\n/g, '\\\\n');\n}\nfunction standardizeCounterName(name) {\n\treturn name.replace(/_total$/, '');\n}\n\nmodule.exports = Registry;\nmodule.exports.globalRegistry = new Registry();\n","'use strict';\n\nconst util = require('util');\n\n// These are from https://prometheus.io/docs/concepts/data_model/#metric-names-and-labels\nconst metricRegexp = /^[a-zA-Z_:][a-zA-Z0-9_:]*$/;\nconst labelRegexp = /^[a-zA-Z_][a-zA-Z0-9_]*$/;\n\nexports.validateMetricName = function (name) {\n\treturn metricRegexp.test(name);\n};\n\nexports.validateLabelName = function (names = []) {\n\treturn names.every(name => labelRegexp.test(name));\n};\n\nexports.validateLabel = function validateLabel(savedLabels, labels) {\n\tfor (const label in labels) {\n\t\tif (!savedLabels.includes(label)) {\n\t\t\tthrow new Error(\n\t\t\t\t`Added label \"${label}\" is not included in initial labelset: ${util.inspect(\n\t\t\t\t\tsavedLabels,\n\t\t\t\t)}`,\n\t\t\t);\n\t\t}\n\t}\n};\n","'use strict';\n\nconst Registry = require('./registry');\nconst { isObject } = require('./util');\nconst { validateMetricName, validateLabelName } = require('./validation');\n\n/**\n * @abstract\n */\nclass Metric {\n\tconstructor(config, defaults = {}) {\n\t\tif (!isObject(config)) {\n\t\t\tthrow new TypeError('constructor expected a config object');\n\t\t}\n\t\tObject.assign(\n\t\t\tthis,\n\t\t\t{\n\t\t\t\tlabelNames: [],\n\t\t\t\tregisters: [Registry.globalRegistry],\n\t\t\t\taggregator: 'sum',\n\t\t\t\tenableExemplars: false,\n\t\t\t},\n\t\t\tdefaults,\n\t\t\tconfig,\n\t\t);\n\t\tif (!this.registers) {\n\t\t\t// in case config.registers is `undefined`\n\t\t\tthis.registers = [Registry.globalRegistry];\n\t\t}\n\t\tif (!this.help) {\n\t\t\tthrow new Error('Missing mandatory help parameter');\n\t\t}\n\t\tif (!this.name) {\n\t\t\tthrow new Error('Missing mandatory name parameter');\n\t\t}\n\t\tif (!validateMetricName(this.name)) {\n\t\t\tthrow new Error('Invalid metric name');\n\t\t}\n\t\tif (!validateLabelName(this.labelNames)) {\n\t\t\tthrow new Error('Invalid label name');\n\t\t}\n\n\t\tif (this.collect && typeof this.collect !== 'function') {\n\t\t\tthrow new Error('Optional \"collect\" parameter must be a function');\n\t\t}\n\n\t\tif (this.labelNames) {\n\t\t\tthis.sortedLabelNames = [...this.labelNames].sort();\n\t\t} else {\n\t\t\tthis.sortedLabelNames = [];\n\t\t}\n\n\t\tthis.reset();\n\n\t\tfor (const register of this.registers) {\n\t\t\tif (\n\t\t\t\tthis.enableExemplars &&\n\t\t\t\tregister.contentType === Registry.PROMETHEUS_CONTENT_TYPE\n\t\t\t) {\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t'Exemplars are supported only on OpenMetrics registries',\n\t\t\t\t);\n\t\t\t}\n\t\t\tregister.registerMetric(this);\n\t\t}\n\t}\n\n\treset() {\n\t\t/* abstract */\n\t}\n}\n\nmodule.exports = { Metric };\n","'use strict';\n\n/**\n * Class representing an OpenMetrics exemplar.\n *\n * @property {object} labelSet\n * @property {number} value\n * @property {number} [timestamp]\n * */\nclass Exemplar {\n\tconstructor(labelSet = {}, value = null) {\n\t\tthis.labelSet = labelSet;\n\t\tthis.value = value;\n\t}\n\n\t/**\n\t * Validation for the label set format.\n\t * https://github.com/OpenObservability/OpenMetrics/blob/d99b705f611b75fec8f450b05e344e02eea6921d/specification/OpenMetrics.md#exemplars\n\t *\n\t * @param {object} labelSet - Exemplar labels.\n\t * @throws {RangeError}\n\t * @return {void}\n\t */\n\tvalidateExemplarLabelSet(labelSet) {\n\t\tlet res = '';\n\t\tfor (const [labelName, labelValue] of Object.entries(labelSet)) {\n\t\t\tres += `${labelName}${labelValue}`;\n\t\t}\n\t\tif (res.length > 128) {\n\t\t\tthrow new RangeError(\n\t\t\t\t'Label set size must be smaller than 128 UTF-8 chars',\n\t\t\t);\n\t\t}\n\t}\n}\n\nmodule.exports = Exemplar;\n","/**\n * Counter metric\n */\n'use strict';\n\nconst util = require('util');\nconst {\n\thashObject,\n\tisObject,\n\tgetLabels,\n\tremoveLabels,\n\tnowTimestamp,\n} = require('./util');\nconst { validateLabel } = require('./validation');\nconst { Metric } = require('./metric');\nconst Exemplar = require('./exemplar');\n\nclass Counter extends Metric {\n\tconstructor(config) {\n\t\tsuper(config);\n\t\tthis.type = 'counter';\n\t\tthis.defaultLabels = {};\n\t\tthis.defaultValue = 1;\n\t\tthis.defaultExemplarLabelSet = {};\n\t\tif (config.enableExemplars) {\n\t\t\tthis.enableExemplars = true;\n\t\t\tthis.inc = this.incWithExemplar;\n\t\t} else {\n\t\t\tthis.inc = this.incWithoutExemplar;\n\t\t}\n\t}\n\n\t/**\n\t * Increment counter\n\t * @param {object} labels - What label you want to be incremented\n\t * @param {Number} value - Value to increment, if omitted increment with 1\n\t * @returns {object} results - object with information about the inc operation\n\t * @returns {string} results.labelHash - hash representation of the labels\n\t */\n\tincWithoutExemplar(labels, value) {\n\t\tlet hash = '';\n\t\tif (isObject(labels)) {\n\t\t\thash = hashObject(labels, this.sortedLabelNames);\n\t\t\tvalidateLabel(this.labelNames, labels);\n\t\t} else {\n\t\t\tvalue = labels;\n\t\t\tlabels = {};\n\t\t}\n\n\t\tif (value && !Number.isFinite(value)) {\n\t\t\tthrow new TypeError(`Value is not a valid number: ${util.format(value)}`);\n\t\t}\n\t\tif (value < 0) {\n\t\t\tthrow new Error('It is not possible to decrease a counter');\n\t\t}\n\n\t\tif (value === null || value === undefined) value = 1;\n\n\t\tsetValue(this.hashMap, value, labels, hash);\n\n\t\treturn { labelHash: hash };\n\t}\n\n\t/**\n\t * Increment counter with exemplar, same as inc but accepts labels for an\n\t * exemplar.\n\t * If no label is provided the current exemplar labels are kept unchanged\n\t * (defaults to empty set).\n\t *\n\t * @param {object} incOpts - Object with options about what metric to increase\n\t * @param {object} incOpts.labels - What label you want to be incremented,\n\t *                                  defaults to null (metric with no labels)\n\t * @param {Number} incOpts.value - Value to increment, defaults to 1\n\t * @param {object} incOpts.exemplarLabels - Key-value  labels for the\n\t *                                          exemplar, defaults to empty set {}\n\t * @returns {void}\n\t */\n\tincWithExemplar({\n\t\tlabels = this.defaultLabels,\n\t\tvalue = this.defaultValue,\n\t\texemplarLabels = this.defaultExemplarLabelSet,\n\t} = {}) {\n\t\tconst res = this.incWithoutExemplar(labels, value);\n\t\tthis.updateExemplar(exemplarLabels, value, res.labelHash);\n\t}\n\n\tupdateExemplar(exemplarLabels, value, hash) {\n\t\tif (exemplarLabels === this.defaultExemplarLabelSet) return;\n\t\tif (!isObject(this.hashMap[hash].exemplar)) {\n\t\t\tthis.hashMap[hash].exemplar = new Exemplar();\n\t\t}\n\t\tthis.hashMap[hash].exemplar.validateExemplarLabelSet(exemplarLabels);\n\t\tthis.hashMap[hash].exemplar.labelSet = exemplarLabels;\n\t\tthis.hashMap[hash].exemplar.value = value ? value : 1;\n\t\tthis.hashMap[hash].exemplar.timestamp = nowTimestamp();\n\t}\n\n\t/**\n\t * Reset counter\n\t * @returns {void}\n\t */\n\treset() {\n\t\tthis.hashMap = {};\n\t\tif (this.labelNames.length === 0) {\n\t\t\tsetValue(this.hashMap, 0);\n\t\t}\n\t}\n\n\tasync get() {\n\t\tif (this.collect) {\n\t\t\tconst v = this.collect();\n\t\t\tif (v instanceof Promise) await v;\n\t\t}\n\n\t\treturn {\n\t\t\thelp: this.help,\n\t\t\tname: this.name,\n\t\t\ttype: this.type,\n\t\t\tvalues: Object.values(this.hashMap),\n\t\t\taggregator: this.aggregator,\n\t\t};\n\t}\n\n\tlabels(...args) {\n\t\tconst labels = getLabels(this.labelNames, args) || {};\n\t\treturn {\n\t\t\tinc: this.inc.bind(this, labels),\n\t\t};\n\t}\n\n\tremove(...args) {\n\t\tconst labels = getLabels(this.labelNames, args) || {};\n\t\tvalidateLabel(this.labelNames, labels);\n\t\treturn removeLabels.call(this, this.hashMap, labels, this.sortedLabelNames);\n\t}\n}\n\nfunction setValue(hashMap, value, labels = {}, hash = '') {\n\tif (hashMap[hash]) {\n\t\thashMap[hash].value += value;\n\t} else {\n\t\thashMap[hash] = { value, labels };\n\t}\n\treturn hashMap;\n}\n\nmodule.exports = Counter;\n","/**\n * Gauge metric\n */\n'use strict';\n\nconst util = require('util');\n\nconst {\n\tsetValue,\n\tsetValueDelta,\n\tgetLabels,\n\thashObject,\n\tisObject,\n\tremoveLabels,\n} = require('./util');\nconst { validateLabel } = require('./validation');\nconst { Metric } = require('./metric');\n\nclass Gauge extends Metric {\n\tconstructor(config) {\n\t\tsuper(config);\n\t\tthis.type = 'gauge';\n\t}\n\n\t/**\n\t * Set a gauge to a value\n\t * @param {object} labels - Object with labels and their values\n\t * @param {Number} value - Value to set the gauge to, must be positive\n\t * @returns {void}\n\t */\n\tset(labels, value) {\n\t\tvalue = getValueArg(labels, value);\n\t\tlabels = getLabelArg(labels);\n\t\tset(this, labels, value);\n\t}\n\n\t/**\n\t * Reset gauge\n\t * @returns {void}\n\t */\n\treset() {\n\t\tthis.hashMap = {};\n\t\tif (this.labelNames.length === 0) {\n\t\t\tsetValue(this.hashMap, 0, {});\n\t\t}\n\t}\n\n\t/**\n\t * Increment a gauge value\n\t * @param {object} labels - Object with labels where key is the label key and value is label value. Can only be one level deep\n\t * @param {Number} value - Value to increment - if omitted, increment with 1\n\t * @returns {void}\n\t */\n\tinc(labels, value) {\n\t\tvalue = getValueArg(labels, value);\n\t\tlabels = getLabelArg(labels);\n\t\tif (value === undefined) value = 1;\n\t\tsetDelta(this, labels, value);\n\t}\n\n\t/**\n\t * Decrement a gauge value\n\t * @param {object} labels - Object with labels where key is the label key and value is label value. Can only be one level deep\n\t * @param {Number} value - Value to decrement - if omitted, decrement with 1\n\t * @returns {void}\n\t */\n\tdec(labels, value) {\n\t\tvalue = getValueArg(labels, value);\n\t\tlabels = getLabelArg(labels);\n\t\tif (value === undefined) value = 1;\n\t\tsetDelta(this, labels, -value);\n\t}\n\n\t/**\n\t * Set the gauge to current unix epoch\n\t * @param {object} labels - Object with labels where key is the label key and value is label value. Can only be one level deep\n\t * @returns {void}\n\t */\n\tsetToCurrentTime(labels) {\n\t\tconst now = Date.now() / 1000;\n\t\tif (labels === undefined) {\n\t\t\tthis.set(now);\n\t\t} else {\n\t\t\tthis.set(labels, now);\n\t\t}\n\t}\n\n\t/**\n\t * Start a timer\n\t * @param {object} labels - Object with labels where key is the label key and value is label value. Can only be one level deep\n\t * @returns {function} - Invoke this function to set the duration in seconds since you started the timer.\n\t * @example\n\t * var done = gauge.startTimer();\n\t * makeXHRRequest(function(err, response) {\n\t *\tdone(); //Duration of the request will be saved\n\t * });\n\t */\n\tstartTimer(labels) {\n\t\tconst start = process.hrtime();\n\t\treturn endLabels => {\n\t\t\tconst delta = process.hrtime(start);\n\t\t\tconst value = delta[0] + delta[1] / 1e9;\n\t\t\tthis.set(Object.assign({}, labels, endLabels), value);\n\t\t\treturn value;\n\t\t};\n\t}\n\n\tasync get() {\n\t\tif (this.collect) {\n\t\t\tconst v = this.collect();\n\t\t\tif (v instanceof Promise) await v;\n\t\t}\n\t\treturn {\n\t\t\thelp: this.help,\n\t\t\tname: this.name,\n\t\t\ttype: this.type,\n\t\t\tvalues: Object.values(this.hashMap),\n\t\t\taggregator: this.aggregator,\n\t\t};\n\t}\n\n\t_getValue(labels) {\n\t\tconst hash = hashObject(labels || {}, this.sortedLabelNames);\n\t\treturn this.hashMap[hash] ? this.hashMap[hash].value : 0;\n\t}\n\n\tlabels(...args) {\n\t\tconst labels = getLabels(this.labelNames, args);\n\t\tvalidateLabel(this.labelNames, labels);\n\t\treturn {\n\t\t\tinc: this.inc.bind(this, labels),\n\t\t\tdec: this.dec.bind(this, labels),\n\t\t\tset: this.set.bind(this, labels),\n\t\t\tsetToCurrentTime: this.setToCurrentTime.bind(this, labels),\n\t\t\tstartTimer: this.startTimer.bind(this, labels),\n\t\t};\n\t}\n\n\tremove(...args) {\n\t\tconst labels = getLabels(this.labelNames, args);\n\t\tvalidateLabel(this.labelNames, labels);\n\t\tremoveLabels.call(this, this.hashMap, labels, this.sortedLabelNames);\n\t}\n}\n\nfunction set(gauge, labels, value) {\n\tif (typeof value !== 'number') {\n\t\tthrow new TypeError(`Value is not a valid number: ${util.format(value)}`);\n\t}\n\n\tvalidateLabel(gauge.labelNames, labels);\n\tsetValue(gauge.hashMap, value, labels);\n}\n\nfunction setDelta(gauge, labels, delta) {\n\tif (typeof delta !== 'number') {\n\t\tthrow new TypeError(`Delta is not a valid number: ${util.format(delta)}`);\n\t}\n\n\tvalidateLabel(gauge.labelNames, labels);\n\tconst hash = hashObject(labels, gauge.sortedLabelNames);\n\tsetValueDelta(gauge.hashMap, delta, labels, hash);\n}\n\nfunction getLabelArg(labels) {\n\treturn isObject(labels) ? labels : {};\n}\n\nfunction getValueArg(labels, value) {\n\treturn isObject(labels) ? value : labels;\n}\n\nmodule.exports = Gauge;\n","/**\n * Histogram\n */\n'use strict';\n\nconst util = require('util');\nconst {\n\tgetLabels,\n\thashObject,\n\tisObject,\n\tremoveLabels,\n\tnowTimestamp,\n} = require('./util');\nconst { validateLabel } = require('./validation');\nconst { Metric } = require('./metric');\nconst Exemplar = require('./exemplar');\n\nclass Histogram extends Metric {\n\tconstructor(config) {\n\t\tsuper(config, {\n\t\t\tbuckets: [0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1, 2.5, 5, 10],\n\t\t});\n\n\t\tthis.type = 'histogram';\n\t\tthis.defaultLabels = {};\n\t\tthis.defaultExemplarLabelSet = {};\n\t\tthis.enableExemplars = false;\n\n\t\tfor (const label of this.labelNames) {\n\t\t\tif (label === 'le') {\n\t\t\t\tthrow new Error('le is a reserved label keyword');\n\t\t\t}\n\t\t}\n\n\t\tthis.upperBounds = this.buckets;\n\t\tthis.bucketValues = this.upperBounds.reduce((acc, upperBound) => {\n\t\t\tacc[upperBound] = 0;\n\t\t\treturn acc;\n\t\t}, {});\n\n\t\tif (config.enableExemplars) {\n\t\t\tthis.enableExemplars = true;\n\t\t\tthis.bucketExemplars = this.upperBounds.reduce((acc, upperBound) => {\n\t\t\t\tacc[upperBound] = null;\n\t\t\t\treturn acc;\n\t\t\t}, {});\n\t\t\tObject.freeze(this.bucketExemplars);\n\t\t\tthis.observe = this.observeWithExemplar;\n\t\t} else {\n\t\t\tthis.observe = this.observeWithoutExemplar;\n\t\t}\n\n\t\tObject.freeze(this.bucketValues);\n\t\tObject.freeze(this.upperBounds);\n\n\t\tif (this.labelNames.length === 0) {\n\t\t\tthis.hashMap = {\n\t\t\t\t[hashObject({})]: createBaseValues(\n\t\t\t\t\t{},\n\t\t\t\t\tthis.bucketValues,\n\t\t\t\t\tthis.bucketExemplars,\n\t\t\t\t),\n\t\t\t};\n\t\t}\n\t}\n\n\t/**\n\t * Observe a value in histogram\n\t * @param {object} labels - Object with labels where key is the label key and value is label value. Can only be one level deep\n\t * @param {Number} value - Value to observe in the histogram\n\t * @returns {void}\n\t */\n\tobserveWithoutExemplar(labels, value) {\n\t\tobserve.call(this, labels === 0 ? 0 : labels || {})(value);\n\t}\n\n\tobserveWithExemplar({\n\t\tlabels = this.defaultLabels,\n\t\tvalue,\n\t\texemplarLabels = this.defaultExemplarLabelSet,\n\t} = {}) {\n\t\tobserve.call(this, labels === 0 ? 0 : labels || {})(value);\n\t\tthis.updateExemplar(labels, value, exemplarLabels);\n\t}\n\n\tupdateExemplar(labels, value, exemplarLabels) {\n\t\tif (Object.keys(exemplarLabels).length === 0) return;\n\t\tconst hash = hashObject(labels, this.sortedLabelNames);\n\t\tconst bound = findBound(this.upperBounds, value);\n\t\tconst { bucketExemplars } = this.hashMap[hash];\n\t\tlet exemplar = bucketExemplars[bound];\n\t\tif (!isObject(exemplar)) {\n\t\t\texemplar = new Exemplar();\n\t\t\tbucketExemplars[bound] = exemplar;\n\t\t}\n\t\texemplar.validateExemplarLabelSet(exemplarLabels);\n\t\texemplar.labelSet = exemplarLabels;\n\t\texemplar.value = value;\n\t\texemplar.timestamp = nowTimestamp();\n\t}\n\n\tasync get() {\n\t\tconst data = await this.getForPromString();\n\t\tdata.values = data.values.map(splayLabels);\n\t\treturn data;\n\t}\n\n\tasync getForPromString() {\n\t\tif (this.collect) {\n\t\t\tconst v = this.collect();\n\t\t\tif (v instanceof Promise) await v;\n\t\t}\n\t\tconst data = Object.values(this.hashMap);\n\t\tconst values = data\n\t\t\t.map(extractBucketValuesForExport(this))\n\t\t\t.reduce(addSumAndCountForExport(this), []);\n\n\t\treturn {\n\t\t\tname: this.name,\n\t\t\thelp: this.help,\n\t\t\ttype: this.type,\n\t\t\tvalues,\n\t\t\taggregator: this.aggregator,\n\t\t};\n\t}\n\n\treset() {\n\t\tthis.hashMap = {};\n\t}\n\n\t/**\n\t * Initialize the metrics for the given combination of labels to zero\n\t * @param {object} labels - Object with labels where key is the label key and value is label value. Can only be one level deep\n\t * @returns {void}\n\t */\n\tzero(labels) {\n\t\tconst hash = hashObject(labels, this.sortedLabelNames);\n\t\tthis.hashMap[hash] = createBaseValues(\n\t\t\tlabels,\n\t\t\tthis.bucketValues,\n\t\t\tthis.bucketExemplars,\n\t\t);\n\t}\n\n\t/**\n\t * Start a timer that could be used to logging durations\n\t * @param {object} labels - Object with labels where key is the label key and value is label value. Can only be one level deep\n\t * @param {object} exemplarLabels - Object with labels for exemplar where key is the label key and value is label value. Can only be one level deep\n\t * @returns {function} - Function to invoke when you want to stop the timer and observe the duration in seconds\n\t * @example\n\t * var end = histogram.startTimer();\n\t * makeExpensiveXHRRequest(function(err, res) {\n\t * \tconst duration = end(); //Observe the duration of expensiveXHRRequest and returns duration in seconds\n\t * \tconsole.log('Duration', duration);\n\t * });\n\t */\n\tstartTimer(labels, exemplarLabels) {\n\t\treturn this.enableExemplars\n\t\t\t? startTimerWithExemplar.call(this, labels, exemplarLabels)()\n\t\t\t: startTimer.call(this, labels)();\n\t}\n\n\tlabels(...args) {\n\t\tconst labels = getLabels(this.labelNames, args);\n\t\tvalidateLabel(this.labelNames, labels);\n\t\treturn {\n\t\t\tobserve: observe.call(this, labels),\n\t\t\tstartTimer: startTimer.call(this, labels),\n\t\t};\n\t}\n\n\tremove(...args) {\n\t\tconst labels = getLabels(this.labelNames, args);\n\t\tvalidateLabel(this.labelNames, labels);\n\t\tremoveLabels.call(this, this.hashMap, labels, this.sortedLabelNames);\n\t}\n}\n\nfunction startTimer(startLabels) {\n\treturn () => {\n\t\tconst start = process.hrtime();\n\t\treturn endLabels => {\n\t\t\tconst delta = process.hrtime(start);\n\t\t\tconst value = delta[0] + delta[1] / 1e9;\n\t\t\tthis.observe(Object.assign({}, startLabels, endLabels), value);\n\t\t\treturn value;\n\t\t};\n\t};\n}\n\nfunction startTimerWithExemplar(startLabels, startExemplarLabels) {\n\treturn () => {\n\t\tconst start = process.hrtime();\n\t\treturn (endLabels, endExemplarLabels) => {\n\t\t\tconst delta = process.hrtime(start);\n\t\t\tconst value = delta[0] + delta[1] / 1e9;\n\t\t\tthis.observe({\n\t\t\t\tlabels: Object.assign({}, startLabels, endLabels),\n\t\t\t\tvalue,\n\t\t\t\texemplarLabels: Object.assign(\n\t\t\t\t\t{},\n\t\t\t\t\tstartExemplarLabels,\n\t\t\t\t\tendExemplarLabels,\n\t\t\t\t),\n\t\t\t});\n\t\t\treturn value;\n\t\t};\n\t};\n}\n\nfunction setValuePair(labels, value, metricName, exemplar, sharedLabels = {}) {\n\treturn {\n\t\tlabels,\n\t\tsharedLabels,\n\t\tvalue,\n\t\tmetricName,\n\t\texemplar,\n\t};\n}\n\nfunction findBound(upperBounds, value) {\n\tfor (let i = 0; i < upperBounds.length; i++) {\n\t\tconst bound = upperBounds[i];\n\t\tif (value <= bound) {\n\t\t\treturn bound;\n\t\t}\n\t}\n\treturn -1;\n}\n\nfunction observe(labels) {\n\treturn value => {\n\t\tconst labelValuePair = convertLabelsAndValues(labels, value);\n\n\t\tvalidateLabel(this.labelNames, labelValuePair.labels);\n\t\tif (!Number.isFinite(labelValuePair.value)) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`Value is not a valid number: ${util.format(labelValuePair.value)}`,\n\t\t\t);\n\t\t}\n\n\t\tconst hash = hashObject(labelValuePair.labels, this.sortedLabelNames);\n\t\tlet valueFromMap = this.hashMap[hash];\n\t\tif (!valueFromMap) {\n\t\t\tvalueFromMap = createBaseValues(\n\t\t\t\tlabelValuePair.labels,\n\t\t\t\tthis.bucketValues,\n\t\t\t\tthis.bucketExemplars,\n\t\t\t);\n\t\t}\n\n\t\tconst b = findBound(this.upperBounds, labelValuePair.value);\n\n\t\tvalueFromMap.sum += labelValuePair.value;\n\t\tvalueFromMap.count += 1;\n\n\t\tif (Object.prototype.hasOwnProperty.call(valueFromMap.bucketValues, b)) {\n\t\t\tvalueFromMap.bucketValues[b] += 1;\n\t\t}\n\n\t\tthis.hashMap[hash] = valueFromMap;\n\t};\n}\n\nfunction createBaseValues(labels, bucketValues, bucketExemplars) {\n\tconst result = {\n\t\tlabels,\n\t\tbucketValues: { ...bucketValues },\n\t\tsum: 0,\n\t\tcount: 0,\n\t};\n\tif (bucketExemplars) {\n\t\tresult.bucketExemplars = { ...bucketExemplars };\n\t}\n\treturn result;\n}\n\nfunction convertLabelsAndValues(labels, value) {\n\treturn isObject(labels)\n\t\t? {\n\t\t\t\tlabels,\n\t\t\t\tvalue,\n\t\t\t}\n\t\t: {\n\t\t\t\tvalue: labels,\n\t\t\t\tlabels: {},\n\t\t\t};\n}\n\nfunction extractBucketValuesForExport(histogram) {\n\tconst name = `${histogram.name}_bucket`;\n\treturn bucketData => {\n\t\tlet acc = 0;\n\t\tconst buckets = histogram.upperBounds.map(upperBound => {\n\t\t\tacc += bucketData.bucketValues[upperBound];\n\t\t\treturn setValuePair(\n\t\t\t\t{ le: upperBound },\n\t\t\t\tacc,\n\t\t\t\tname,\n\t\t\t\tbucketData.bucketExemplars\n\t\t\t\t\t? bucketData.bucketExemplars[upperBound]\n\t\t\t\t\t: null,\n\t\t\t\tbucketData.labels,\n\t\t\t);\n\t\t});\n\t\treturn { buckets, data: bucketData };\n\t};\n}\n\nfunction addSumAndCountForExport(histogram) {\n\treturn (acc, d) => {\n\t\tacc.push(...d.buckets);\n\n\t\tconst infLabel = { le: '+Inf' };\n\t\tacc.push(\n\t\t\tsetValuePair(\n\t\t\t\tinfLabel,\n\t\t\t\td.data.count,\n\t\t\t\t`${histogram.name}_bucket`,\n\t\t\t\td.data.bucketExemplars ? d.data.bucketExemplars['-1'] : null,\n\t\t\t\td.data.labels,\n\t\t\t),\n\t\t\tsetValuePair(\n\t\t\t\t{},\n\t\t\t\td.data.sum,\n\t\t\t\t`${histogram.name}_sum`,\n\t\t\t\tundefined,\n\t\t\t\td.data.labels,\n\t\t\t),\n\t\t\tsetValuePair(\n\t\t\t\t{},\n\t\t\t\td.data.count,\n\t\t\t\t`${histogram.name}_count`,\n\t\t\t\tundefined,\n\t\t\t\td.data.labels,\n\t\t\t),\n\t\t);\n\t\treturn acc;\n\t};\n}\n\nfunction splayLabels(bucket) {\n\tconst { sharedLabels, labels, ...newBucket } = bucket;\n\tfor (const label of Object.keys(sharedLabels)) {\n\t\tlabels[label] = sharedLabels[label];\n\t}\n\tnewBucket.labels = labels;\n\treturn newBucket;\n}\n\nmodule.exports = Histogram;\n","\nfunction TreeBase() {}\n\n// removes all nodes from the tree\nTreeBase.prototype.clear = function() {\n    this._root = null;\n    this.size = 0;\n};\n\n// returns node data if found, null otherwise\nTreeBase.prototype.find = function(data) {\n    var res = this._root;\n\n    while(res !== null) {\n        var c = this._comparator(data, res.data);\n        if(c === 0) {\n            return res.data;\n        }\n        else {\n            res = res.get_child(c > 0);\n        }\n    }\n\n    return null;\n};\n\n// returns iterator to node if found, null otherwise\nTreeBase.prototype.findIter = function(data) {\n    var res = this._root;\n    var iter = this.iterator();\n\n    while(res !== null) {\n        var c = this._comparator(data, res.data);\n        if(c === 0) {\n            iter._cursor = res;\n            return iter;\n        }\n        else {\n            iter._ancestors.push(res);\n            res = res.get_child(c > 0);\n        }\n    }\n\n    return null;\n};\n\n// Returns an iterator to the tree node at or immediately after the item\nTreeBase.prototype.lowerBound = function(item) {\n    var cur = this._root;\n    var iter = this.iterator();\n    var cmp = this._comparator;\n\n    while(cur !== null) {\n        var c = cmp(item, cur.data);\n        if(c === 0) {\n            iter._cursor = cur;\n            return iter;\n        }\n        iter._ancestors.push(cur);\n        cur = cur.get_child(c > 0);\n    }\n\n    for(var i=iter._ancestors.length - 1; i >= 0; --i) {\n        cur = iter._ancestors[i];\n        if(cmp(item, cur.data) < 0) {\n            iter._cursor = cur;\n            iter._ancestors.length = i;\n            return iter;\n        }\n    }\n\n    iter._ancestors.length = 0;\n    return iter;\n};\n\n// Returns an iterator to the tree node immediately after the item\nTreeBase.prototype.upperBound = function(item) {\n    var iter = this.lowerBound(item);\n    var cmp = this._comparator;\n\n    while(iter.data() !== null && cmp(iter.data(), item) === 0) {\n        iter.next();\n    }\n\n    return iter;\n};\n\n// returns null if tree is empty\nTreeBase.prototype.min = function() {\n    var res = this._root;\n    if(res === null) {\n        return null;\n    }\n\n    while(res.left !== null) {\n        res = res.left;\n    }\n\n    return res.data;\n};\n\n// returns null if tree is empty\nTreeBase.prototype.max = function() {\n    var res = this._root;\n    if(res === null) {\n        return null;\n    }\n\n    while(res.right !== null) {\n        res = res.right;\n    }\n\n    return res.data;\n};\n\n// returns a null iterator\n// call next() or prev() to point to an element\nTreeBase.prototype.iterator = function() {\n    return new Iterator(this);\n};\n\n// calls cb on each node's data, in order\nTreeBase.prototype.each = function(cb) {\n    var it=this.iterator(), data;\n    while((data = it.next()) !== null) {\n        if(cb(data) === false) {\n            return;\n        }\n    }\n};\n\n// calls cb on each node's data, in reverse order\nTreeBase.prototype.reach = function(cb) {\n    var it=this.iterator(), data;\n    while((data = it.prev()) !== null) {\n        if(cb(data) === false) {\n            return;\n        }\n    }\n};\n\n\nfunction Iterator(tree) {\n    this._tree = tree;\n    this._ancestors = [];\n    this._cursor = null;\n}\n\nIterator.prototype.data = function() {\n    return this._cursor !== null ? this._cursor.data : null;\n};\n\n// if null-iterator, returns first node\n// otherwise, returns next node\nIterator.prototype.next = function() {\n    if(this._cursor === null) {\n        var root = this._tree._root;\n        if(root !== null) {\n            this._minNode(root);\n        }\n    }\n    else {\n        if(this._cursor.right === null) {\n            // no greater node in subtree, go up to parent\n            // if coming from a right child, continue up the stack\n            var save;\n            do {\n                save = this._cursor;\n                if(this._ancestors.length) {\n                    this._cursor = this._ancestors.pop();\n                }\n                else {\n                    this._cursor = null;\n                    break;\n                }\n            } while(this._cursor.right === save);\n        }\n        else {\n            // get the next node from the subtree\n            this._ancestors.push(this._cursor);\n            this._minNode(this._cursor.right);\n        }\n    }\n    return this._cursor !== null ? this._cursor.data : null;\n};\n\n// if null-iterator, returns last node\n// otherwise, returns previous node\nIterator.prototype.prev = function() {\n    if(this._cursor === null) {\n        var root = this._tree._root;\n        if(root !== null) {\n            this._maxNode(root);\n        }\n    }\n    else {\n        if(this._cursor.left === null) {\n            var save;\n            do {\n                save = this._cursor;\n                if(this._ancestors.length) {\n                    this._cursor = this._ancestors.pop();\n                }\n                else {\n                    this._cursor = null;\n                    break;\n                }\n            } while(this._cursor.left === save);\n        }\n        else {\n            this._ancestors.push(this._cursor);\n            this._maxNode(this._cursor.left);\n        }\n    }\n    return this._cursor !== null ? this._cursor.data : null;\n};\n\nIterator.prototype._minNode = function(start) {\n    while(start.left !== null) {\n        this._ancestors.push(start);\n        start = start.left;\n    }\n    this._cursor = start;\n};\n\nIterator.prototype._maxNode = function(start) {\n    while(start.right !== null) {\n        this._ancestors.push(start);\n        start = start.right;\n    }\n    this._cursor = start;\n};\n\nmodule.exports = TreeBase;\n\n","\nvar TreeBase = require('./treebase');\n\nfunction Node(data) {\n    this.data = data;\n    this.left = null;\n    this.right = null;\n    this.red = true;\n}\n\nNode.prototype.get_child = function(dir) {\n    return dir ? this.right : this.left;\n};\n\nNode.prototype.set_child = function(dir, val) {\n    if(dir) {\n        this.right = val;\n    }\n    else {\n        this.left = val;\n    }\n};\n\nfunction RBTree(comparator) {\n    this._root = null;\n    this._comparator = comparator;\n    this.size = 0;\n}\n\nRBTree.prototype = new TreeBase();\n\n// returns true if inserted, false if duplicate\nRBTree.prototype.insert = function(data) {\n    var ret = false;\n\n    if(this._root === null) {\n        // empty tree\n        this._root = new Node(data);\n        ret = true;\n        this.size++;\n    }\n    else {\n        var head = new Node(undefined); // fake tree root\n\n        var dir = 0;\n        var last = 0;\n\n        // setup\n        var gp = null; // grandparent\n        var ggp = head; // grand-grand-parent\n        var p = null; // parent\n        var node = this._root;\n        ggp.right = this._root;\n\n        // search down\n        while(true) {\n            if(node === null) {\n                // insert new node at the bottom\n                node = new Node(data);\n                p.set_child(dir, node);\n                ret = true;\n                this.size++;\n            }\n            else if(is_red(node.left) && is_red(node.right)) {\n                // color flip\n                node.red = true;\n                node.left.red = false;\n                node.right.red = false;\n            }\n\n            // fix red violation\n            if(is_red(node) && is_red(p)) {\n                var dir2 = ggp.right === gp;\n\n                if(node === p.get_child(last)) {\n                    ggp.set_child(dir2, single_rotate(gp, !last));\n                }\n                else {\n                    ggp.set_child(dir2, double_rotate(gp, !last));\n                }\n            }\n\n            var cmp = this._comparator(node.data, data);\n\n            // stop if found\n            if(cmp === 0) {\n                break;\n            }\n\n            last = dir;\n            dir = cmp < 0;\n\n            // update helpers\n            if(gp !== null) {\n                ggp = gp;\n            }\n            gp = p;\n            p = node;\n            node = node.get_child(dir);\n        }\n\n        // update root\n        this._root = head.right;\n    }\n\n    // make root black\n    this._root.red = false;\n\n    return ret;\n};\n\n// returns true if removed, false if not found\nRBTree.prototype.remove = function(data) {\n    if(this._root === null) {\n        return false;\n    }\n\n    var head = new Node(undefined); // fake tree root\n    var node = head;\n    node.right = this._root;\n    var p = null; // parent\n    var gp = null; // grand parent\n    var found = null; // found item\n    var dir = 1;\n\n    while(node.get_child(dir) !== null) {\n        var last = dir;\n\n        // update helpers\n        gp = p;\n        p = node;\n        node = node.get_child(dir);\n\n        var cmp = this._comparator(data, node.data);\n\n        dir = cmp > 0;\n\n        // save found node\n        if(cmp === 0) {\n            found = node;\n        }\n\n        // push the red node down\n        if(!is_red(node) && !is_red(node.get_child(dir))) {\n            if(is_red(node.get_child(!dir))) {\n                var sr = single_rotate(node, dir);\n                p.set_child(last, sr);\n                p = sr;\n            }\n            else if(!is_red(node.get_child(!dir))) {\n                var sibling = p.get_child(!last);\n                if(sibling !== null) {\n                    if(!is_red(sibling.get_child(!last)) && !is_red(sibling.get_child(last))) {\n                        // color flip\n                        p.red = false;\n                        sibling.red = true;\n                        node.red = true;\n                    }\n                    else {\n                        var dir2 = gp.right === p;\n\n                        if(is_red(sibling.get_child(last))) {\n                            gp.set_child(dir2, double_rotate(p, last));\n                        }\n                        else if(is_red(sibling.get_child(!last))) {\n                            gp.set_child(dir2, single_rotate(p, last));\n                        }\n\n                        // ensure correct coloring\n                        var gpc = gp.get_child(dir2);\n                        gpc.red = true;\n                        node.red = true;\n                        gpc.left.red = false;\n                        gpc.right.red = false;\n                    }\n                }\n            }\n        }\n    }\n\n    // replace and remove if found\n    if(found !== null) {\n        found.data = node.data;\n        p.set_child(p.right === node, node.get_child(node.left === null));\n        this.size--;\n    }\n\n    // update root and make it black\n    this._root = head.right;\n    if(this._root !== null) {\n        this._root.red = false;\n    }\n\n    return found !== null;\n};\n\nfunction is_red(node) {\n    return node !== null && node.red;\n}\n\nfunction single_rotate(root, dir) {\n    var save = root.get_child(!dir);\n\n    root.set_child(!dir, save.get_child(dir));\n    save.set_child(dir, root);\n\n    root.red = true;\n    save.red = false;\n\n    return save;\n}\n\nfunction double_rotate(root, dir) {\n    root.set_child(!dir, single_rotate(root.get_child(!dir), !dir));\n    return single_rotate(root, dir);\n}\n\nmodule.exports = RBTree;\n","\nvar TreeBase = require('./treebase');\n\nfunction Node(data) {\n    this.data = data;\n    this.left = null;\n    this.right = null;\n}\n\nNode.prototype.get_child = function(dir) {\n    return dir ? this.right : this.left;\n};\n\nNode.prototype.set_child = function(dir, val) {\n    if(dir) {\n        this.right = val;\n    }\n    else {\n        this.left = val;\n    }\n};\n\nfunction BinTree(comparator) {\n    this._root = null;\n    this._comparator = comparator;\n    this.size = 0;\n}\n\nBinTree.prototype = new TreeBase();\n\n// returns true if inserted, false if duplicate\nBinTree.prototype.insert = function(data) {\n    if(this._root === null) {\n        // empty tree\n        this._root = new Node(data);\n        this.size++;\n        return true;\n    }\n\n    var dir = 0;\n\n    // setup\n    var p = null; // parent\n    var node = this._root;\n\n    // search down\n    while(true) {\n        if(node === null) {\n            // insert new node at the bottom\n            node = new Node(data);\n            p.set_child(dir, node);\n            ret = true;\n            this.size++;\n            return true;\n        }\n\n        // stop if found\n        if(this._comparator(node.data, data) === 0) {\n            return false;\n        }\n\n        dir = this._comparator(node.data, data) < 0;\n\n        // update helpers\n        p = node;\n        node = node.get_child(dir);\n    }\n};\n\n// returns true if removed, false if not found\nBinTree.prototype.remove = function(data) {\n    if(this._root === null) {\n        return false;\n    }\n\n    var head = new Node(undefined); // fake tree root\n    var node = head;\n    node.right = this._root;\n    var p = null; // parent\n    var found = null; // found item\n    var dir = 1;\n\n    while(node.get_child(dir) !== null) {\n        p = node;\n        node = node.get_child(dir);\n        var cmp = this._comparator(data, node.data);\n        dir = cmp > 0;\n\n        if(cmp === 0) {\n            found = node;\n        }\n    }\n\n    if(found !== null) {\n        found.data = node.data;\n        p.set_child(p.right === node, node.get_child(node.left === null));\n\n        this._root = head.right;\n        this.size--;\n        return true;\n    }\n    else {\n        return false;\n    }\n};\n\nmodule.exports = BinTree;\n\n","module.exports = {\n    RBTree: require('./lib/rbtree'),\n    BinTree: require('./lib/bintree')\n};\n","//\n// TDigest:\n//\n// approximate distribution percentiles from a stream of reals\n//\nvar RBTree = require('bintrees').RBTree;\n\nfunction TDigest(delta, K, CX) {\n    // allocate a TDigest structure.\n    //\n    // delta is the compression factor, the max fraction of mass that\n    // can be owned by one centroid (bigger, up to 1.0, means more\n    // compression). delta=false switches off TDigest behavior and treats\n    // the distribution as discrete, with no merging and exact values\n    // reported.\n    //\n    // K is a size threshold that triggers recompression as the TDigest\n    // grows during input.  (Set it to 0 to disable automatic recompression)\n    //\n    // CX specifies how often to update cached cumulative totals used\n    // for quantile estimation during ingest (see cumulate()).  Set to\n    // 0 to use exact quantiles for each new point.\n    //\n    this.discrete = (delta === false);\n    this.delta = delta || 0.01;\n    this.K = (K === undefined) ? 25 : K;\n    this.CX = (CX === undefined) ? 1.1 : CX;\n    this.centroids = new RBTree(compare_centroid_means);\n    this.nreset = 0;\n    this.reset();\n}\n\nTDigest.prototype.reset = function() {\n    // prepare to digest new points.\n    //\n    this.centroids.clear();\n    this.n = 0;\n    this.nreset += 1;\n    this.last_cumulate = 0;\n};\n\nTDigest.prototype.size = function() {\n    return this.centroids.size;\n};\n\nTDigest.prototype.toArray = function(everything) {\n    // return {mean,n} of centroids as an array ordered by mean.\n    //\n    var result = [];\n    if (everything) {\n        this._cumulate(true); // be sure cumns are exact\n        this.centroids.each(function(c) { result.push(c); });\n    } else {\n        this.centroids.each(function(c) { result.push({mean:c.mean, n:c.n}); });\n    }\n    return result;\n};\n\nTDigest.prototype.summary = function() {\n    var approx = (this.discrete) ? \"exact \" : \"approximating \";\n    var s = [approx + this.n + \" samples using \" + this.size() + \" centroids\",\n             \"min = \"+this.percentile(0),\n             \"Q1  = \"+this.percentile(0.25),\n             \"Q2  = \"+this.percentile(0.5),\n             \"Q3  = \"+this.percentile(0.75),\n             \"max = \"+this.percentile(1.0)];\n    return s.join('\\n');\n};\n\nfunction compare_centroid_means(a, b) {\n    // order two centroids by mean.\n    //\n    return (a.mean > b.mean) ? 1 : (a.mean < b.mean) ? -1 : 0;\n}\n\nfunction compare_centroid_mean_cumns(a, b) {\n    // order two centroids by mean_cumn.\n    //\n    return (a.mean_cumn - b.mean_cumn);\n}\n\nTDigest.prototype.push = function(x, n) {\n    // incorporate value or array of values x, having count n into the\n    // TDigest. n defaults to 1.\n    //\n    n = n || 1;\n    x = Array.isArray(x) ? x : [x];\n    for (var i = 0 ; i < x.length ; i++) {\n        this._digest(x[i], n);\n    }\n};\n\nTDigest.prototype.push_centroid = function(c) {\n    // incorporate centroid or array of centroids c\n    //\n    c = Array.isArray(c) ? c : [c];\n    for (var i = 0 ; i < c.length ; i++) {\n        this._digest(c[i].mean, c[i].n);\n    }\n};\n\nTDigest.prototype._cumulate = function(exact) {\n    // update cumulative counts for each centroid\n    //\n    // exact: falsey means only cumulate after sufficient\n    // growth. During ingest, these counts are used as quantile\n    // estimates, and they work well even when somewhat out of\n    // date. (this is a departure from the publication, you may set CX\n    // to 0 to disable).\n    //\n    if (this.n === this.last_cumulate ||\n        !exact && this.CX && this.CX > (this.n / this.last_cumulate)) {\n        return;\n    }\n    var cumn = 0;\n    this.centroids.each(function(c) {\n        c.mean_cumn = cumn + c.n / 2; // half of n at the mean\n        cumn = c.cumn = cumn + c.n;\n    });\n    this.n = this.last_cumulate = cumn;\n};\n\nTDigest.prototype.find_nearest = function(x) {\n    // find the centroid closest to x. The assumption of\n    // unique means and a unique nearest centroid departs from the\n    // paper, see _digest() below\n    //\n    if (this.size() === 0) {\n        return null;\n    }\n    var iter = this.centroids.lowerBound({mean:x}); // x <= iter || iter==null\n    var c = (iter.data() === null) ? iter.prev() : iter.data();\n    if (c.mean === x || this.discrete) {\n        return c; // c is either x or a neighbor (discrete: no distance func)\n    }\n    var prev = iter.prev();\n    if (prev && Math.abs(prev.mean - x) < Math.abs(c.mean - x)) {\n        return prev;\n    } else {\n        return c;\n    }\n};\n\nTDigest.prototype._new_centroid = function(x, n, cumn) {\n    // create and insert a new centroid into the digest (don't update\n    // cumulatives).\n    //\n    var c = {mean:x, n:n, cumn:cumn};\n    this.centroids.insert(c);\n    this.n += n;\n    return c;\n};\n\nTDigest.prototype._addweight = function(nearest, x, n) {\n    // add weight at location x to nearest centroid.  adding x to\n    // nearest will not shift its relative position in the tree and\n    // require reinsertion.\n    //\n    if (x !== nearest.mean) {\n        nearest.mean += n * (x - nearest.mean) / (nearest.n + n);\n    }\n    nearest.cumn += n;\n    nearest.mean_cumn += n / 2;\n    nearest.n += n;\n    this.n += n;\n};\n\nTDigest.prototype._digest = function(x, n) {\n    // incorporate value x, having count n into the TDigest.\n    //\n    var min = this.centroids.min();\n    var max = this.centroids.max();\n    var nearest = this.find_nearest(x);\n    if (nearest && nearest.mean === x) {\n        // accumulate exact matches into the centroid without\n        // limit. this is a departure from the paper, made so\n        // centroids remain unique and code can be simple.\n        this._addweight(nearest, x, n);\n    } else if (nearest === min) {\n        this._new_centroid(x, n, 0); // new point around min boundary\n    } else if (nearest === max ) {\n        this._new_centroid(x, n, this.n); // new point around max boundary\n    } else if (this.discrete) {\n        this._new_centroid(x, n, nearest.cumn); // never merge\n    } else {\n        // conider a merge based on nearest centroid's capacity. if\n        // there's not room for all of n, don't bother merging any of\n        // it into nearest, as we'll have to make a new centroid\n        // anyway for the remainder (departure from the paper).\n        var p = nearest.mean_cumn / this.n;\n        var max_n = Math.floor(4 * this.n * this.delta * p * (1 - p));\n        if (max_n - nearest.n >= n) {\n            this._addweight(nearest, x, n);\n        } else {\n            this._new_centroid(x, n, nearest.cumn);\n        }\n    }\n    this._cumulate(false);\n    if (!this.discrete && this.K && this.size() > this.K / this.delta) {\n        // re-process the centroids and hope for some compression.\n        this.compress();\n    }\n};\n\nTDigest.prototype.bound_mean = function(x) {\n    // find centroids lower and upper such that lower.mean < x <\n    // upper.mean or lower.mean === x === upper.mean. Don't call\n    // this for x out of bounds.\n    //\n    var iter = this.centroids.upperBound({mean:x}); // x < iter\n    var lower = iter.prev();      // lower <= x\n    var upper = (lower.mean === x) ? lower : iter.next();\n    return [lower, upper];\n};\n\nTDigest.prototype.p_rank = function(x_or_xlist) {\n    // return approximate percentile-ranks (0..1) for data value x.\n    // or list of x.  calculated according to\n    // https://en.wikipedia.org/wiki/Percentile_rank\n    //\n    // (Note that in continuous mode, boundary sample values will\n    // report half their centroid weight inward from 0/1 as the\n    // percentile-rank. X values outside the observed range return\n    // 0/1)\n    //\n    // this triggers cumulate() if cumn's are out of date.\n    //\n    var xs = Array.isArray(x_or_xlist) ? x_or_xlist : [x_or_xlist];\n    var ps = xs.map(this._p_rank, this);\n    return Array.isArray(x_or_xlist) ? ps : ps[0];\n};\n\nTDigest.prototype._p_rank = function(x) {\n    if (this.size() === 0) {\n        return undefined;\n    } else if (x < this.centroids.min().mean) {\n        return 0.0;\n    } else if (x > this.centroids.max().mean) {\n        return 1.0;\n    }\n    // find centroids that bracket x and interpolate x's cumn from\n    // their cumn's.\n    this._cumulate(true); // be sure cumns are exact\n    var bound = this.bound_mean(x);\n    var lower = bound[0], upper = bound[1];\n    if (this.discrete) {\n        return lower.cumn / this.n;\n    } else {\n        var cumn = lower.mean_cumn;\n        if (lower !== upper) {\n            cumn += (x - lower.mean) * (upper.mean_cumn - lower.mean_cumn) / (upper.mean - lower.mean);\n        }\n        return cumn / this.n;\n    }\n};\n\nTDigest.prototype.bound_mean_cumn = function(cumn) {\n    // find centroids lower and upper such that lower.mean_cumn < x <\n    // upper.mean_cumn or lower.mean_cumn === x === upper.mean_cumn. Don't call\n    // this for cumn out of bounds.\n    //\n    // XXX because mean and mean_cumn give rise to the same sort order\n    // (up to identical means), use the mean rbtree for our search.\n    this.centroids._comparator = compare_centroid_mean_cumns;\n    var iter = this.centroids.upperBound({mean_cumn:cumn}); // cumn < iter\n    this.centroids._comparator = compare_centroid_means;\n    var lower = iter.prev();      // lower <= cumn\n    var upper = (lower && lower.mean_cumn === cumn) ? lower : iter.next();\n    return [lower, upper];\n};\n\nTDigest.prototype.percentile = function(p_or_plist) {\n    // for percentage p (0..1), or for each p in a list of ps, return\n    // the smallest data value q at which at least p percent of the\n    // observations <= q.\n    //\n    // for discrete distributions, this selects q using the Nearest\n    // Rank Method\n    // (https://en.wikipedia.org/wiki/Percentile#The_Nearest_Rank_method)\n    // (in scipy, same as percentile(...., interpolation='higher')\n    //\n    // for continuous distributions, interpolates data values between\n    // count-weighted bracketing means.\n    //\n    // this triggers cumulate() if cumn's are out of date.\n    //\n    var ps = Array.isArray(p_or_plist) ? p_or_plist : [p_or_plist];\n    var qs = ps.map(this._percentile, this);\n    return Array.isArray(p_or_plist) ? qs : qs[0];\n};\n\nTDigest.prototype._percentile = function(p) {\n    if (this.size() === 0) {\n        return undefined;\n    }\n    this._cumulate(true); // be sure cumns are exact\n    var h = this.n * p;\n    var bound = this.bound_mean_cumn(h);\n    var lower = bound[0], upper = bound[1];\n\n    if (upper === lower || lower === null || upper === null) {\n        return (lower || upper).mean;\n    } else if (!this.discrete) {\n        return lower.mean + (h - lower.mean_cumn) * (upper.mean - lower.mean) / (upper.mean_cumn - lower.mean_cumn);\n    } else if (h <= lower.cumn) {\n        return lower.mean;\n    } else {\n        return upper.mean;\n    }\n};\n\nfunction pop_random(choices) {\n    // remove and return an item randomly chosen from the array of choices\n    // (mutates choices)\n    //\n    var idx = Math.floor(Math.random() * choices.length);\n    return choices.splice(idx, 1)[0];\n}\n\nTDigest.prototype.compress = function() {\n    // TDigests experience worst case compression (none) when input\n    // increases monotonically.  Improve on any bad luck by\n    // reconsuming digest centroids as if they were weighted points\n    // while shuffling their order (and hope for the best).\n    //\n    if (this.compressing) {\n        return;\n    }\n    var points = this.toArray();\n    this.reset();\n    this.compressing = true;\n    while (points.length > 0) {\n        this.push_centroid(pop_random(points));\n    }\n    this._cumulate(true);\n    this.compressing = false;\n};\n\nfunction Digest(config) {\n    // allocate a distribution digest structure. This is an extension\n    // of a TDigest structure that starts in exact histogram (discrete)\n    // mode, and automatically switches to TDigest mode for large\n    // samples that appear to be from a continuous distribution.\n    //\n    this.config = config || {};\n    this.mode = this.config.mode || 'auto'; // disc, cont, auto\n    TDigest.call(this, this.mode === 'cont' ? config.delta : false);\n    this.digest_ratio = this.config.ratio || 0.9;\n    this.digest_thresh = this.config.thresh || 1000;\n    this.n_unique = 0;\n}\nDigest.prototype = Object.create(TDigest.prototype);\nDigest.prototype.constructor = Digest;\n\nDigest.prototype.push = function(x_or_xlist) {\n    TDigest.prototype.push.call(this, x_or_xlist);\n    this.check_continuous();\n};\n\nDigest.prototype._new_centroid = function(x, n, cumn) {\n    this.n_unique += 1;\n    TDigest.prototype._new_centroid.call(this, x, n, cumn);\n};\n\nDigest.prototype._addweight = function(nearest, x, n) {\n    if (nearest.n === 1) {\n        this.n_unique -= 1;\n    }\n    TDigest.prototype._addweight.call(this, nearest, x, n);\n};\n\nDigest.prototype.check_continuous = function() {\n    // while in 'auto' mode, if there are many unique elements, assume\n    // they are from a continuous distribution and switch to 'cont'\n    // mode (tdigest behavior). Return true on transition from\n    // disctete to continuous.\n    if (this.mode !== 'auto' || this.size() < this.digest_thresh) {\n        return false;\n    }\n    if (this.n_unique / this.size() > this.digest_ratio) {\n        this.mode = 'cont';\n        this.discrete = false;\n        this.delta = this.config.delta || 0.01;\n        this.compress();\n        return true;\n    }\n    return false;\n};\n\nmodule.exports = {\n    'TDigest': TDigest,\n    'Digest': Digest\n};\n","'use strict';\n\nconst { TDigest } = require('tdigest');\n\nclass TimeWindowQuantiles {\n\tconstructor(maxAgeSeconds, ageBuckets) {\n\t\tthis.maxAgeSeconds = maxAgeSeconds || 0;\n\t\tthis.ageBuckets = ageBuckets || 0;\n\n\t\tthis.shouldRotate = maxAgeSeconds && ageBuckets;\n\n\t\tthis.ringBuffer = Array(ageBuckets).fill(new TDigest());\n\t\tthis.currentBuffer = 0;\n\n\t\tthis.lastRotateTimestampMillis = Date.now();\n\t\tthis.durationBetweenRotatesMillis =\n\t\t\t(maxAgeSeconds * 1000) / ageBuckets || Infinity;\n\t}\n\n\tsize() {\n\t\tconst bucket = rotate.call(this);\n\t\treturn bucket.size();\n\t}\n\n\tpercentile(quantile) {\n\t\tconst bucket = rotate.call(this);\n\t\treturn bucket.percentile(quantile);\n\t}\n\n\tpush(value) {\n\t\trotate.call(this);\n\t\tthis.ringBuffer.forEach(bucket => {\n\t\t\tbucket.push(value);\n\t\t});\n\t}\n\n\treset() {\n\t\tthis.ringBuffer.forEach(bucket => {\n\t\t\tbucket.reset();\n\t\t});\n\t}\n\n\tcompress() {\n\t\tthis.ringBuffer.forEach(bucket => {\n\t\t\tbucket.compress();\n\t\t});\n\t}\n}\n\nfunction rotate() {\n\tlet timeSinceLastRotateMillis = Date.now() - this.lastRotateTimestampMillis;\n\twhile (\n\t\ttimeSinceLastRotateMillis > this.durationBetweenRotatesMillis &&\n\t\tthis.shouldRotate\n\t) {\n\t\tthis.ringBuffer[this.currentBuffer] = new TDigest();\n\n\t\tif (++this.currentBuffer >= this.ringBuffer.length) {\n\t\t\tthis.currentBuffer = 0;\n\t\t}\n\t\ttimeSinceLastRotateMillis -= this.durationBetweenRotatesMillis;\n\t\tthis.lastRotateTimestampMillis += this.durationBetweenRotatesMillis;\n\t}\n\treturn this.ringBuffer[this.currentBuffer];\n}\n\nmodule.exports = TimeWindowQuantiles;\n","/**\n * Summary\n */\n'use strict';\n\nconst util = require('util');\nconst { getLabels, hashObject, removeLabels } = require('./util');\nconst { validateLabel } = require('./validation');\nconst { Metric } = require('./metric');\nconst timeWindowQuantiles = require('./timeWindowQuantiles');\n\nconst DEFAULT_COMPRESS_COUNT = 1000; // every 1000 measurements\n\nclass Summary extends Metric {\n\tconstructor(config) {\n\t\tsuper(config, {\n\t\t\tpercentiles: [0.01, 0.05, 0.5, 0.9, 0.95, 0.99, 0.999],\n\t\t\tcompressCount: DEFAULT_COMPRESS_COUNT,\n\t\t\thashMap: {},\n\t\t});\n\n\t\tthis.type = 'summary';\n\n\t\tfor (const label of this.labelNames) {\n\t\t\tif (label === 'quantile')\n\t\t\t\tthrow new Error('quantile is a reserved label keyword');\n\t\t}\n\n\t\tif (this.labelNames.length === 0) {\n\t\t\tthis.hashMap = {\n\t\t\t\t[hashObject({})]: {\n\t\t\t\t\tlabels: {},\n\t\t\t\t\ttd: new timeWindowQuantiles(this.maxAgeSeconds, this.ageBuckets),\n\t\t\t\t\tcount: 0,\n\t\t\t\t\tsum: 0,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t}\n\n\t/**\n\t * Observe a value\n\t * @param {object} labels - Object with labels where key is the label key and value is label value. Can only be one level deep\n\t * @param {Number} value - Value to observe\n\t * @returns {void}\n\t */\n\tobserve(labels, value) {\n\t\tobserve.call(this, labels === 0 ? 0 : labels || {})(value);\n\t}\n\n\tasync get() {\n\t\tif (this.collect) {\n\t\t\tconst v = this.collect();\n\t\t\tif (v instanceof Promise) await v;\n\t\t}\n\t\tconst hashKeys = Object.keys(this.hashMap);\n\t\tconst values = [];\n\n\t\thashKeys.forEach(hashKey => {\n\t\t\tconst s = this.hashMap[hashKey];\n\t\t\tif (s) {\n\t\t\t\tif (this.pruneAgedBuckets && s.td.size() === 0) {\n\t\t\t\t\tdelete this.hashMap[hashKey];\n\t\t\t\t} else {\n\t\t\t\t\textractSummariesForExport(s, this.percentiles).forEach(v => {\n\t\t\t\t\t\tvalues.push(v);\n\t\t\t\t\t});\n\t\t\t\t\tvalues.push(getSumForExport(s, this));\n\t\t\t\t\tvalues.push(getCountForExport(s, this));\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn {\n\t\t\tname: this.name,\n\t\t\thelp: this.help,\n\t\t\ttype: this.type,\n\t\t\tvalues,\n\t\t\taggregator: this.aggregator,\n\t\t};\n\t}\n\n\treset() {\n\t\tconst data = Object.values(this.hashMap);\n\t\tdata.forEach(s => {\n\t\t\ts.td.reset();\n\t\t\ts.count = 0;\n\t\t\ts.sum = 0;\n\t\t});\n\t}\n\n\t/**\n\t * Start a timer that could be used to logging durations\n\t * @param {object} labels - Object with labels where key is the label key and value is label value. Can only be one level deep\n\t * @returns {function} - Function to invoke when you want to stop the timer and observe the duration in seconds\n\t * @example\n\t * var end = summary.startTimer();\n\t * makeExpensiveXHRRequest(function(err, res) {\n\t *\tend(); //Observe the duration of expensiveXHRRequest\n\t * });\n\t */\n\tstartTimer(labels) {\n\t\treturn startTimer.call(this, labels)();\n\t}\n\n\tlabels(...args) {\n\t\tconst labels = getLabels(this.labelNames, args);\n\t\tvalidateLabel(this.labelNames, labels);\n\t\treturn {\n\t\t\tobserve: observe.call(this, labels),\n\t\t\tstartTimer: startTimer.call(this, labels),\n\t\t};\n\t}\n\n\tremove(...args) {\n\t\tconst labels = getLabels(this.labelNames, args);\n\t\tvalidateLabel(this.labelNames, labels);\n\t\tremoveLabels.call(this, this.hashMap, labels, this.sortedLabelNames);\n\t}\n}\n\nfunction extractSummariesForExport(summaryOfLabels, percentiles) {\n\tsummaryOfLabels.td.compress();\n\n\treturn percentiles.map(percentile => {\n\t\tconst percentileValue = summaryOfLabels.td.percentile(percentile);\n\t\treturn {\n\t\t\tlabels: Object.assign({ quantile: percentile }, summaryOfLabels.labels),\n\t\t\tvalue: percentileValue ? percentileValue : 0,\n\t\t};\n\t});\n}\n\nfunction getCountForExport(value, summary) {\n\treturn {\n\t\tmetricName: `${summary.name}_count`,\n\t\tlabels: value.labels,\n\t\tvalue: value.count,\n\t};\n}\n\nfunction getSumForExport(value, summary) {\n\treturn {\n\t\tmetricName: `${summary.name}_sum`,\n\t\tlabels: value.labels,\n\t\tvalue: value.sum,\n\t};\n}\n\nfunction startTimer(startLabels) {\n\treturn () => {\n\t\tconst start = process.hrtime();\n\t\treturn endLabels => {\n\t\t\tconst delta = process.hrtime(start);\n\t\t\tconst value = delta[0] + delta[1] / 1e9;\n\t\t\tthis.observe(Object.assign({}, startLabels, endLabels), value);\n\t\t\treturn value;\n\t\t};\n\t};\n}\n\nfunction observe(labels) {\n\treturn value => {\n\t\tconst labelValuePair = convertLabelsAndValues(labels, value);\n\n\t\tvalidateLabel(this.labelNames, labels);\n\t\tif (!Number.isFinite(labelValuePair.value)) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`Value is not a valid number: ${util.format(labelValuePair.value)}`,\n\t\t\t);\n\t\t}\n\n\t\tconst hash = hashObject(labelValuePair.labels, this.sortedLabelNames);\n\t\tlet summaryOfLabel = this.hashMap[hash];\n\t\tif (!summaryOfLabel) {\n\t\t\tsummaryOfLabel = {\n\t\t\t\tlabels: labelValuePair.labels,\n\t\t\t\ttd: new timeWindowQuantiles(this.maxAgeSeconds, this.ageBuckets),\n\t\t\t\tcount: 0,\n\t\t\t\tsum: 0,\n\t\t\t};\n\t\t}\n\n\t\tsummaryOfLabel.td.push(labelValuePair.value);\n\t\tsummaryOfLabel.count++;\n\t\tif (summaryOfLabel.count % this.compressCount === 0) {\n\t\t\tsummaryOfLabel.td.compress();\n\t\t}\n\t\tsummaryOfLabel.sum += labelValuePair.value;\n\t\tthis.hashMap[hash] = summaryOfLabel;\n\t};\n}\n\nfunction convertLabelsAndValues(labels, value) {\n\tif (value === undefined) {\n\t\treturn {\n\t\t\tvalue: labels,\n\t\t\tlabels: {},\n\t\t};\n\t}\n\n\treturn {\n\t\tlabels,\n\t\tvalue,\n\t};\n}\n\nmodule.exports = Summary;\n","'use strict';\n\nconst url = require('url');\nconst http = require('http');\nconst https = require('https');\nconst { gzipSync } = require('zlib');\nconst { globalRegistry } = require('./registry');\n\nclass Pushgateway {\n\tconstructor(gatewayUrl, options, registry) {\n\t\tif (!registry) {\n\t\t\tregistry = globalRegistry;\n\t\t}\n\t\tthis.registry = registry;\n\t\tthis.gatewayUrl = gatewayUrl;\n\t\tconst { requireJobName, ...requestOptions } = {\n\t\t\trequireJobName: true,\n\t\t\t...options,\n\t\t};\n\t\tthis.requireJobName = requireJobName;\n\t\tthis.requestOptions = requestOptions;\n\t}\n\n\tpushAdd(params = {}) {\n\t\tif (this.requireJobName && !params.jobName) {\n\t\t\tthrow new Error('Missing jobName parameter');\n\t\t}\n\n\t\treturn useGateway.call(this, 'POST', params.jobName, params.groupings);\n\t}\n\n\tpush(params = {}) {\n\t\tif (this.requireJobName && !params.jobName) {\n\t\t\tthrow new Error('Missing jobName parameter');\n\t\t}\n\n\t\treturn useGateway.call(this, 'PUT', params.jobName, params.groupings);\n\t}\n\n\tdelete(params = {}) {\n\t\tif (this.requireJobName && !params.jobName) {\n\t\t\tthrow new Error('Missing jobName parameter');\n\t\t}\n\n\t\treturn useGateway.call(this, 'DELETE', params.jobName, params.groupings);\n\t}\n}\nasync function useGateway(method, job, groupings) {\n\t// `URL` first added in v6.13.0\n\t// eslint-disable-next-line n/no-deprecated-api\n\tconst gatewayUrlParsed = url.parse(this.gatewayUrl);\n\tconst gatewayUrlPath =\n\t\tgatewayUrlParsed.pathname && gatewayUrlParsed.pathname !== '/'\n\t\t\t? gatewayUrlParsed.pathname\n\t\t\t: '';\n\tconst jobPath = job\n\t\t? `/job/${encodeURIComponent(job)}${generateGroupings(groupings)}`\n\t\t: '';\n\tconst path = `${gatewayUrlPath}/metrics${jobPath}`;\n\n\t// eslint-disable-next-line n/no-deprecated-api\n\tconst target = url.resolve(this.gatewayUrl, path);\n\t// eslint-disable-next-line n/no-deprecated-api\n\tconst requestParams = url.parse(target);\n\tconst httpModule = isHttps(requestParams.href) ? https : http;\n\tconst options = Object.assign(requestParams, this.requestOptions, {\n\t\tmethod,\n\t});\n\n\treturn new Promise((resolve, reject) => {\n\t\tif (method === 'DELETE' && options.headers) {\n\t\t\tdelete options.headers['Content-Encoding'];\n\t\t}\n\t\tconst req = httpModule.request(options, resp => {\n\t\t\tlet body = '';\n\t\t\tresp.setEncoding('utf8');\n\t\t\tresp.on('data', chunk => {\n\t\t\t\tbody += chunk;\n\t\t\t});\n\t\t\tresp.on('end', () => {\n\t\t\t\tif (resp.statusCode >= 400) {\n\t\t\t\t\treject(\n\t\t\t\t\t\tnew Error(`push failed with status ${resp.statusCode}, ${body}`),\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tresolve({ resp, body });\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\treq.on('error', err => {\n\t\t\treject(err);\n\t\t});\n\n\t\treq.on('timeout', () => {\n\t\t\treq.destroy(new Error('Pushgateway request timed out'));\n\t\t});\n\n\t\tif (method !== 'DELETE') {\n\t\t\tthis.registry\n\t\t\t\t.metrics()\n\t\t\t\t.then(metrics => {\n\t\t\t\t\tif (\n\t\t\t\t\t\toptions.headers &&\n\t\t\t\t\t\toptions.headers['Content-Encoding'] === 'gzip'\n\t\t\t\t\t) {\n\t\t\t\t\t\tmetrics = gzipSync(metrics);\n\t\t\t\t\t}\n\t\t\t\t\treq.write(metrics);\n\t\t\t\t\treq.end();\n\t\t\t\t})\n\t\t\t\t.catch(err => {\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t} else {\n\t\t\treq.end();\n\t\t}\n\t});\n}\n\nfunction generateGroupings(groupings) {\n\tif (!groupings) {\n\t\treturn '';\n\t}\n\treturn Object.keys(groupings)\n\t\t.map(\n\t\t\tkey =>\n\t\t\t\t`/${encodeURIComponent(key)}/${encodeURIComponent(groupings[key])}`,\n\t\t)\n\t\t.join('');\n}\n\nfunction isHttps(href) {\n\treturn href.search(/^https/) !== -1;\n}\n\nmodule.exports = Pushgateway;\n","'use strict';\n\nexports.linearBuckets = (start, width, count) => {\n\tif (count < 1) {\n\t\tthrow new Error('Linear buckets needs a positive count');\n\t}\n\n\tconst buckets = new Array(count);\n\tfor (let i = 0; i < count; i++) {\n\t\tbuckets[i] = start + i * width;\n\t}\n\treturn buckets;\n};\n\nexports.exponentialBuckets = (start, factor, count) => {\n\tif (start <= 0) {\n\t\tthrow new Error('Exponential buckets needs a positive start');\n\t}\n\tif (count < 1) {\n\t\tthrow new Error('Exponential buckets needs a positive count');\n\t}\n\tif (factor <= 1) {\n\t\tthrow new Error('Exponential buckets needs a factor greater than 1');\n\t}\n\tconst buckets = new Array(count);\n\tfor (let i = 0; i < count; i++) {\n\t\tbuckets[i] = start;\n\t\tstart *= factor;\n\t}\n\treturn buckets;\n};\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** only globals that common to node and browsers are allowed */\n// eslint-disable-next-line node/no-unsupported-features/es-builtins\nexport const _globalThis = typeof globalThis === 'object' ? globalThis : global;\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './globalThis';\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './node';\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '1.9.0';\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { VERSION } from '../version';\n\nconst re = /^(\\d+)\\.(\\d+)\\.(\\d+)(-(.+))?$/;\n\n/**\n * Create a function to test an API version to see if it is compatible with the provided ownVersion.\n *\n * The returned function has the following semantics:\n * - Exact match is always compatible\n * - Major versions must match exactly\n *    - 1.x package cannot use global 2.x package\n *    - 2.x package cannot use global 1.x package\n * - The minor version of the API module requesting access to the global API must be less than or equal to the minor version of this API\n *    - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects\n *    - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3\n * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor\n * - Patch and build tag differences are not considered at this time\n *\n * @param ownVersion version which should be checked against\n */\nexport function _makeCompatibilityCheck(\n  ownVersion: string\n): (globalVersion: string) => boolean {\n  const acceptedVersions = new Set<string>([ownVersion]);\n  const rejectedVersions = new Set<string>();\n\n  const myVersionMatch = ownVersion.match(re);\n  if (!myVersionMatch) {\n    // we cannot guarantee compatibility so we always return noop\n    return () => false;\n  }\n\n  const ownVersionParsed = {\n    major: +myVersionMatch[1],\n    minor: +myVersionMatch[2],\n    patch: +myVersionMatch[3],\n    prerelease: myVersionMatch[4],\n  };\n\n  // if ownVersion has a prerelease tag, versions must match exactly\n  if (ownVersionParsed.prerelease != null) {\n    return function isExactmatch(globalVersion: string): boolean {\n      return globalVersion === ownVersion;\n    };\n  }\n\n  function _reject(v: string) {\n    rejectedVersions.add(v);\n    return false;\n  }\n\n  function _accept(v: string) {\n    acceptedVersions.add(v);\n    return true;\n  }\n\n  return function isCompatible(globalVersion: string): boolean {\n    if (acceptedVersions.has(globalVersion)) {\n      return true;\n    }\n\n    if (rejectedVersions.has(globalVersion)) {\n      return false;\n    }\n\n    const globalVersionMatch = globalVersion.match(re);\n    if (!globalVersionMatch) {\n      // cannot parse other version\n      // we cannot guarantee compatibility so we always noop\n      return _reject(globalVersion);\n    }\n\n    const globalVersionParsed = {\n      major: +globalVersionMatch[1],\n      minor: +globalVersionMatch[2],\n      patch: +globalVersionMatch[3],\n      prerelease: globalVersionMatch[4],\n    };\n\n    // if globalVersion has a prerelease tag, versions must match exactly\n    if (globalVersionParsed.prerelease != null) {\n      return _reject(globalVersion);\n    }\n\n    // major versions must match\n    if (ownVersionParsed.major !== globalVersionParsed.major) {\n      return _reject(globalVersion);\n    }\n\n    if (ownVersionParsed.major === 0) {\n      if (\n        ownVersionParsed.minor === globalVersionParsed.minor &&\n        ownVersionParsed.patch <= globalVersionParsed.patch\n      ) {\n        return _accept(globalVersion);\n      }\n\n      return _reject(globalVersion);\n    }\n\n    if (ownVersionParsed.minor <= globalVersionParsed.minor) {\n      return _accept(globalVersion);\n    }\n\n    return _reject(globalVersion);\n  };\n}\n\n/**\n * Test an API version to see if it is compatible with this API.\n *\n * - Exact match is always compatible\n * - Major versions must match exactly\n *    - 1.x package cannot use global 2.x package\n *    - 2.x package cannot use global 1.x package\n * - The minor version of the API module requesting access to the global API must be less than or equal to the minor version of this API\n *    - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects\n *    - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3\n * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor\n * - Patch and build tag differences are not considered at this time\n *\n * @param version version of the API requesting an instance of the global API\n */\nexport const isCompatible = _makeCompatibilityCheck(VERSION);\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { MeterProvider } from '../metrics/MeterProvider';\nimport { ContextManager } from '../context/types';\nimport { DiagLogger } from '../diag/types';\nimport { _globalThis } from '../platform';\nimport { TextMapPropagator } from '../propagation/TextMapPropagator';\nimport type { TracerProvider } from '../trace/tracer_provider';\nimport { VERSION } from '../version';\nimport { isCompatible } from './semver';\n\nconst major = VERSION.split('.')[0];\nconst GLOBAL_OPENTELEMETRY_API_KEY = Symbol.for(\n  `opentelemetry.js.api.${major}`\n);\n\nconst _global = _globalThis as OTelGlobal;\n\nexport function registerGlobal<Type extends keyof OTelGlobalAPI>(\n  type: Type,\n  instance: OTelGlobalAPI[Type],\n  diag: DiagLogger,\n  allowOverride = false\n): boolean {\n  const api = (_global[GLOBAL_OPENTELEMETRY_API_KEY] = _global[\n    GLOBAL_OPENTELEMETRY_API_KEY\n  ] ?? {\n    version: VERSION,\n  });\n\n  if (!allowOverride && api[type]) {\n    // already registered an API of this type\n    const err = new Error(\n      `@opentelemetry/api: Attempted duplicate registration of API: ${type}`\n    );\n    diag.error(err.stack || err.message);\n    return false;\n  }\n\n  if (api.version !== VERSION) {\n    // All registered APIs must be of the same version exactly\n    const err = new Error(\n      `@opentelemetry/api: Registration of version v${api.version} for ${type} does not match previously registered API v${VERSION}`\n    );\n    diag.error(err.stack || err.message);\n    return false;\n  }\n\n  api[type] = instance;\n  diag.debug(\n    `@opentelemetry/api: Registered a global for ${type} v${VERSION}.`\n  );\n\n  return true;\n}\n\nexport function getGlobal<Type extends keyof OTelGlobalAPI>(\n  type: Type\n): OTelGlobalAPI[Type] | undefined {\n  const globalVersion = _global[GLOBAL_OPENTELEMETRY_API_KEY]?.version;\n  if (!globalVersion || !isCompatible(globalVersion)) {\n    return;\n  }\n  return _global[GLOBAL_OPENTELEMETRY_API_KEY]?.[type];\n}\n\nexport function unregisterGlobal(type: keyof OTelGlobalAPI, diag: DiagLogger) {\n  diag.debug(\n    `@opentelemetry/api: Unregistering a global for ${type} v${VERSION}.`\n  );\n  const api = _global[GLOBAL_OPENTELEMETRY_API_KEY];\n\n  if (api) {\n    delete api[type];\n  }\n}\n\ntype OTelGlobal = {\n  [GLOBAL_OPENTELEMETRY_API_KEY]?: OTelGlobalAPI;\n};\n\ntype OTelGlobalAPI = {\n  version: string;\n\n  diag?: DiagLogger;\n  trace?: TracerProvider;\n  context?: ContextManager;\n  metrics?: MeterProvider;\n  propagation?: TextMapPropagator;\n};\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getGlobal } from '../internal/global-utils';\nimport { ComponentLoggerOptions, DiagLogger, DiagLogFunction } from './types';\n\n/**\n * Component Logger which is meant to be used as part of any component which\n * will add automatically additional namespace in front of the log message.\n * It will then forward all message to global diag logger\n * @example\n * const cLogger = diag.createComponentLogger({ namespace: '@opentelemetry/instrumentation-http' });\n * cLogger.debug('test');\n * // @opentelemetry/instrumentation-http test\n */\nexport class DiagComponentLogger implements DiagLogger {\n  private _namespace: string;\n\n  constructor(props: ComponentLoggerOptions) {\n    this._namespace = props.namespace || 'DiagComponentLogger';\n  }\n\n  public debug(...args: any[]): void {\n    return logProxy('debug', this._namespace, args);\n  }\n\n  public error(...args: any[]): void {\n    return logProxy('error', this._namespace, args);\n  }\n\n  public info(...args: any[]): void {\n    return logProxy('info', this._namespace, args);\n  }\n\n  public warn(...args: any[]): void {\n    return logProxy('warn', this._namespace, args);\n  }\n\n  public verbose(...args: any[]): void {\n    return logProxy('verbose', this._namespace, args);\n  }\n}\n\nfunction logProxy(\n  funcName: keyof DiagLogger,\n  namespace: string,\n  args: any\n): void {\n  const logger = getGlobal('diag');\n  // shortcut if logger not set\n  if (!logger) {\n    return;\n  }\n\n  args.unshift(namespace);\n  return logger[funcName](...(args as Parameters<DiagLogFunction>));\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport type DiagLogFunction = (message: string, ...args: unknown[]) => void;\n\n/**\n * Defines an internal diagnostic logger interface which is used to log internal diagnostic\n * messages, you can set the default diagnostic logger via the {@link DiagAPI} setLogger function.\n * API provided implementations include :-\n * - a No-Op {@link createNoopDiagLogger}\n * - a {@link DiagLogLevel} filtering wrapper {@link createLogLevelDiagLogger}\n * - a general Console {@link DiagConsoleLogger} version.\n */\nexport interface DiagLogger {\n  /** Log an error scenario that was not expected and caused the requested operation to fail. */\n  error: DiagLogFunction;\n\n  /**\n   * Log a warning scenario to inform the developer of an issues that should be investigated.\n   * The requested operation may or may not have succeeded or completed.\n   */\n  warn: DiagLogFunction;\n\n  /**\n   * Log a general informational message, this should not affect functionality.\n   * This is also the default logging level so this should NOT be used for logging\n   * debugging level information.\n   */\n  info: DiagLogFunction;\n\n  /**\n   * Log a general debug message that can be useful for identifying a failure.\n   * Information logged at this level may include diagnostic details that would\n   * help identify a failure scenario.\n   * For example: Logging the order of execution of async operations.\n   */\n  debug: DiagLogFunction;\n\n  /**\n   * Log a detailed (verbose) trace level logging that can be used to identify failures\n   * where debug level logging would be insufficient, this level of tracing can include\n   * input and output parameters and as such may include PII information passing through\n   * the API. As such it is recommended that this level of tracing should not be enabled\n   * in a production environment.\n   */\n  verbose: DiagLogFunction;\n}\n\n/**\n * Defines the available internal logging levels for the diagnostic logger, the numeric values\n * of the levels are defined to match the original values from the initial LogLevel to avoid\n * compatibility/migration issues for any implementation that assume the numeric ordering.\n */\nexport enum DiagLogLevel {\n  /** Diagnostic Logging level setting to disable all logging (except and forced logs) */\n  NONE = 0,\n\n  /** Identifies an error scenario */\n  ERROR = 30,\n\n  /** Identifies a warning scenario */\n  WARN = 50,\n\n  /** General informational log message */\n  INFO = 60,\n\n  /** General debug log message */\n  DEBUG = 70,\n\n  /**\n   * Detailed trace level logging should only be used for development, should only be set\n   * in a development environment.\n   */\n  VERBOSE = 80,\n\n  /** Used to set the logging level to include all logging */\n  ALL = 9999,\n}\n\n/**\n * Defines options for ComponentLogger\n */\nexport interface ComponentLoggerOptions {\n  namespace: string;\n}\n\nexport interface DiagLoggerOptions {\n  /**\n   * The {@link DiagLogLevel} used to filter logs sent to the logger.\n   *\n   * @defaultValue DiagLogLevel.INFO\n   */\n  logLevel?: DiagLogLevel;\n\n  /**\n   * Setting this value to `true` will suppress the warning message normally emitted when registering a logger when another logger is already registered.\n   */\n  suppressOverrideMessage?: boolean;\n}\n\nexport interface DiagLoggerApi {\n  /**\n   * Set the global DiagLogger and DiagLogLevel.\n   * If a global diag logger is already set, this will override it.\n   *\n   * @param logger - The {@link DiagLogger} instance to set as the default logger.\n   * @param options - A {@link DiagLoggerOptions} object. If not provided, default values will be set.\n   * @returns `true` if the logger was successfully registered, else `false`\n   */\n  setLogger(logger: DiagLogger, options?: DiagLoggerOptions): boolean;\n\n  /**\n   *\n   * @param logger - The {@link DiagLogger} instance to set as the default logger.\n   * @param logLevel - The {@link DiagLogLevel} used to filter logs sent to the logger. If not provided it will default to {@link DiagLogLevel.INFO}.\n   * @returns `true` if the logger was successfully registered, else `false`\n   */\n  setLogger(logger: DiagLogger, logLevel?: DiagLogLevel): boolean;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DiagLogFunction, DiagLogger, DiagLogLevel } from '../types';\n\nexport function createLogLevelDiagLogger(\n  maxLevel: DiagLogLevel,\n  logger: DiagLogger\n): DiagLogger {\n  if (maxLevel < DiagLogLevel.NONE) {\n    maxLevel = DiagLogLevel.NONE;\n  } else if (maxLevel > DiagLogLevel.ALL) {\n    maxLevel = DiagLogLevel.ALL;\n  }\n\n  // In case the logger is null or undefined\n  logger = logger || {};\n\n  function _filterFunc(\n    funcName: keyof DiagLogger,\n    theLevel: DiagLogLevel\n  ): DiagLogFunction {\n    const theFunc = logger[funcName];\n\n    if (typeof theFunc === 'function' && maxLevel >= theLevel) {\n      return theFunc.bind(logger);\n    }\n    return function () {};\n  }\n\n  return {\n    error: _filterFunc('error', DiagLogLevel.ERROR),\n    warn: _filterFunc('warn', DiagLogLevel.WARN),\n    info: _filterFunc('info', DiagLogLevel.INFO),\n    debug: _filterFunc('debug', DiagLogLevel.DEBUG),\n    verbose: _filterFunc('verbose', DiagLogLevel.VERBOSE),\n  };\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DiagComponentLogger } from '../diag/ComponentLogger';\nimport { createLogLevelDiagLogger } from '../diag/internal/logLevelLogger';\nimport {\n  ComponentLoggerOptions,\n  DiagLogFunction,\n  DiagLogger,\n  DiagLoggerApi,\n  DiagLogLevel,\n} from '../diag/types';\nimport {\n  getGlobal,\n  registerGlobal,\n  unregisterGlobal,\n} from '../internal/global-utils';\n\nconst API_NAME = 'diag';\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry internal\n * diagnostic API\n */\nexport class DiagAPI implements DiagLogger, DiagLoggerApi {\n  private static _instance?: DiagAPI;\n\n  /** Get the singleton instance of the DiagAPI API */\n  public static instance(): DiagAPI {\n    if (!this._instance) {\n      this._instance = new DiagAPI();\n    }\n\n    return this._instance;\n  }\n\n  /**\n   * Private internal constructor\n   * @private\n   */\n  private constructor() {\n    function _logProxy(funcName: keyof DiagLogger): DiagLogFunction {\n      return function (...args) {\n        const logger = getGlobal('diag');\n        // shortcut if logger not set\n        if (!logger) return;\n        return logger[funcName](...args);\n      };\n    }\n\n    // Using self local variable for minification purposes as 'this' cannot be minified\n    const self = this;\n\n    // DiagAPI specific functions\n\n    const setLogger: DiagLoggerApi['setLogger'] = (\n      logger,\n      optionsOrLogLevel = { logLevel: DiagLogLevel.INFO }\n    ) => {\n      if (logger === self) {\n        // There isn't much we can do here.\n        // Logging to the console might break the user application.\n        // Try to log to self. If a logger was previously registered it will receive the log.\n        const err = new Error(\n          'Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation'\n        );\n        self.error(err.stack ?? err.message);\n        return false;\n      }\n\n      if (typeof optionsOrLogLevel === 'number') {\n        optionsOrLogLevel = {\n          logLevel: optionsOrLogLevel,\n        };\n      }\n\n      const oldLogger = getGlobal('diag');\n      const newLogger = createLogLevelDiagLogger(\n        optionsOrLogLevel.logLevel ?? DiagLogLevel.INFO,\n        logger\n      );\n      // There already is an logger registered. We'll let it know before overwriting it.\n      if (oldLogger && !optionsOrLogLevel.suppressOverrideMessage) {\n        const stack = new Error().stack ?? '<failed to generate stacktrace>';\n        oldLogger.warn(`Current logger will be overwritten from ${stack}`);\n        newLogger.warn(\n          `Current logger will overwrite one already registered from ${stack}`\n        );\n      }\n\n      return registerGlobal('diag', newLogger, self, true);\n    };\n\n    self.setLogger = setLogger;\n\n    self.disable = () => {\n      unregisterGlobal(API_NAME, self);\n    };\n\n    self.createComponentLogger = (options: ComponentLoggerOptions) => {\n      return new DiagComponentLogger(options);\n    };\n\n    self.verbose = _logProxy('verbose');\n    self.debug = _logProxy('debug');\n    self.info = _logProxy('info');\n    self.warn = _logProxy('warn');\n    self.error = _logProxy('error');\n  }\n\n  public setLogger!: DiagLoggerApi['setLogger'];\n  /**\n   *\n   */\n  public createComponentLogger!: (\n    options: ComponentLoggerOptions\n  ) => DiagLogger;\n\n  // DiagLogger implementation\n  public verbose!: DiagLogFunction;\n  public debug!: DiagLogFunction;\n  public info!: DiagLogFunction;\n  public warn!: DiagLogFunction;\n  public error!: DiagLogFunction;\n\n  /**\n   * Unregister the global logger and return to Noop\n   */\n  public disable!: () => void;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Baggage, BaggageEntry } from '../types';\n\nexport class BaggageImpl implements Baggage {\n  private _entries: Map<string, BaggageEntry>;\n\n  constructor(entries?: Map<string, BaggageEntry>) {\n    this._entries = entries ? new Map(entries) : new Map();\n  }\n\n  getEntry(key: string): BaggageEntry | undefined {\n    const entry = this._entries.get(key);\n    if (!entry) {\n      return undefined;\n    }\n\n    return Object.assign({}, entry);\n  }\n\n  getAllEntries(): [string, BaggageEntry][] {\n    return Array.from(this._entries.entries()).map(([k, v]) => [k, v]);\n  }\n\n  setEntry(key: string, entry: BaggageEntry): BaggageImpl {\n    const newBaggage = new BaggageImpl(this._entries);\n    newBaggage._entries.set(key, entry);\n    return newBaggage;\n  }\n\n  removeEntry(key: string): BaggageImpl {\n    const newBaggage = new BaggageImpl(this._entries);\n    newBaggage._entries.delete(key);\n    return newBaggage;\n  }\n\n  removeEntries(...keys: string[]): BaggageImpl {\n    const newBaggage = new BaggageImpl(this._entries);\n    for (const key of keys) {\n      newBaggage._entries.delete(key);\n    }\n    return newBaggage;\n  }\n\n  clear(): BaggageImpl {\n    return new BaggageImpl();\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Symbol used to make BaggageEntryMetadata an opaque type\n */\nexport const baggageEntryMetadataSymbol = Symbol('BaggageEntryMetadata');\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DiagAPI } from '../api/diag';\nimport { BaggageImpl } from './internal/baggage-impl';\nimport { baggageEntryMetadataSymbol } from './internal/symbol';\nimport { Baggage, BaggageEntry, BaggageEntryMetadata } from './types';\n\nconst diag = DiagAPI.instance();\n\n/**\n * Create a new Baggage with optional entries\n *\n * @param entries An array of baggage entries the new baggage should contain\n */\nexport function createBaggage(\n  entries: Record<string, BaggageEntry> = {}\n): Baggage {\n  return new BaggageImpl(new Map(Object.entries(entries)));\n}\n\n/**\n * Create a serializable BaggageEntryMetadata object from a string.\n *\n * @param str string metadata. Format is currently not defined by the spec and has no special meaning.\n *\n */\nexport function baggageEntryMetadataFromString(\n  str: string\n): BaggageEntryMetadata {\n  if (typeof str !== 'string') {\n    diag.error(\n      `Cannot create baggage metadata from unknown type: ${typeof str}`\n    );\n    str = '';\n  }\n\n  return {\n    __TYPE__: baggageEntryMetadataSymbol,\n    toString() {\n      return str;\n    },\n  };\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Context } from './types';\n\n/** Get a key to uniquely identify a context value */\nexport function createContextKey(description: string) {\n  // The specification states that for the same input, multiple calls should\n  // return different keys. Due to the nature of the JS dependency management\n  // system, this creates problems where multiple versions of some package\n  // could hold different keys for the same property.\n  //\n  // Therefore, we use Symbol.for which returns the same key for the same input.\n  return Symbol.for(description);\n}\n\nclass BaseContext implements Context {\n  private _currentContext!: Map<symbol, unknown>;\n\n  /**\n   * Construct a new context which inherits values from an optional parent context.\n   *\n   * @param parentContext a context from which to inherit values\n   */\n  constructor(parentContext?: Map<symbol, unknown>) {\n    // for minification\n    const self = this;\n\n    self._currentContext = parentContext ? new Map(parentContext) : new Map();\n\n    self.getValue = (key: symbol) => self._currentContext.get(key);\n\n    self.setValue = (key: symbol, value: unknown): Context => {\n      const context = new BaseContext(self._currentContext);\n      context._currentContext.set(key, value);\n      return context;\n    };\n\n    self.deleteValue = (key: symbol): Context => {\n      const context = new BaseContext(self._currentContext);\n      context._currentContext.delete(key);\n      return context;\n    };\n  }\n\n  /**\n   * Get a value from the context.\n   *\n   * @param key key which identifies a context value\n   */\n  public getValue!: (key: symbol) => unknown;\n\n  /**\n   * Create a new context which inherits from this context and has\n   * the given key set to the given value.\n   *\n   * @param key context key for which to set the value\n   * @param value value to set for the given key\n   */\n  public setValue!: (key: symbol, value: unknown) => Context;\n\n  /**\n   * Return a new context which inherits from this context but does\n   * not contain a value for the given key.\n   *\n   * @param key context key for which to clear a value\n   */\n  public deleteValue!: (key: symbol) => Context;\n}\n\n/** The root context is used as the default parent context when there is no active context */\nexport const ROOT_CONTEXT: Context = new BaseContext();\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DiagLogger, DiagLogFunction } from './types';\n\ntype ConsoleMapKeys = 'error' | 'warn' | 'info' | 'debug' | 'trace';\nconst consoleMap: { n: keyof DiagLogger; c: ConsoleMapKeys }[] = [\n  { n: 'error', c: 'error' },\n  { n: 'warn', c: 'warn' },\n  { n: 'info', c: 'info' },\n  { n: 'debug', c: 'debug' },\n  { n: 'verbose', c: 'trace' },\n];\n\n/**\n * A simple Immutable Console based diagnostic logger which will output any messages to the Console.\n * If you want to limit the amount of logging to a specific level or lower use the\n * {@link createLogLevelDiagLogger}\n */\nexport class DiagConsoleLogger implements DiagLogger {\n  constructor() {\n    function _consoleFunc(funcName: ConsoleMapKeys): DiagLogFunction {\n      return function (...args) {\n        if (console) {\n          // Some environments only expose the console when the F12 developer console is open\n          // eslint-disable-next-line no-console\n          let theFunc = console[funcName];\n          if (typeof theFunc !== 'function') {\n            // Not all environments support all functions\n            // eslint-disable-next-line no-console\n            theFunc = console.log;\n          }\n\n          // One last final check\n          if (typeof theFunc === 'function') {\n            return theFunc.apply(console, args);\n          }\n        }\n      };\n    }\n\n    for (let i = 0; i < consoleMap.length; i++) {\n      this[consoleMap[i].n] = _consoleFunc(consoleMap[i].c);\n    }\n  }\n\n  /** Log an error scenario that was not expected and caused the requested operation to fail. */\n  public error!: DiagLogFunction;\n\n  /**\n   * Log a warning scenario to inform the developer of an issues that should be investigated.\n   * The requested operation may or may not have succeeded or completed.\n   */\n  public warn!: DiagLogFunction;\n\n  /**\n   * Log a general informational message, this should not affect functionality.\n   * This is also the default logging level so this should NOT be used for logging\n   * debugging level information.\n   */\n  public info!: DiagLogFunction;\n\n  /**\n   * Log a general debug message that can be useful for identifying a failure.\n   * Information logged at this level may include diagnostic details that would\n   * help identify a failure scenario. Useful scenarios would be to log the execution\n   * order of async operations\n   */\n  public debug!: DiagLogFunction;\n\n  /**\n   * Log a detailed (verbose) trace level logging that can be used to identify failures\n   * where debug level logging would be insufficient, this level of tracing can include\n   * input and output parameters and as such may include PII information passing through\n   * the API. As such it is recommended that this level of tracing should not be enabled\n   * in a production environment.\n   */\n  public verbose!: DiagLogFunction;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Meter } from './Meter';\nimport {\n  BatchObservableCallback,\n  Counter,\n  Gauge,\n  Histogram,\n  MetricAttributes,\n  MetricOptions,\n  Observable,\n  ObservableCallback,\n  ObservableCounter,\n  ObservableGauge,\n  ObservableUpDownCounter,\n  UpDownCounter,\n} from './Metric';\n\n/**\n * NoopMeter is a noop implementation of the {@link Meter} interface. It reuses\n * constant NoopMetrics for all of its methods.\n */\nexport class NoopMeter implements Meter {\n  constructor() {}\n\n  /**\n   * @see {@link Meter.createGauge}\n   */\n  createGauge(_name: string, _options?: MetricOptions): Gauge {\n    return NOOP_GAUGE_METRIC;\n  }\n\n  /**\n   * @see {@link Meter.createHistogram}\n   */\n  createHistogram(_name: string, _options?: MetricOptions): Histogram {\n    return NOOP_HISTOGRAM_METRIC;\n  }\n\n  /**\n   * @see {@link Meter.createCounter}\n   */\n  createCounter(_name: string, _options?: MetricOptions): Counter {\n    return NOOP_COUNTER_METRIC;\n  }\n\n  /**\n   * @see {@link Meter.createUpDownCounter}\n   */\n  createUpDownCounter(_name: string, _options?: MetricOptions): UpDownCounter {\n    return NOOP_UP_DOWN_COUNTER_METRIC;\n  }\n\n  /**\n   * @see {@link Meter.createObservableGauge}\n   */\n  createObservableGauge(\n    _name: string,\n    _options?: MetricOptions\n  ): ObservableGauge {\n    return NOOP_OBSERVABLE_GAUGE_METRIC;\n  }\n\n  /**\n   * @see {@link Meter.createObservableCounter}\n   */\n  createObservableCounter(\n    _name: string,\n    _options?: MetricOptions\n  ): ObservableCounter {\n    return NOOP_OBSERVABLE_COUNTER_METRIC;\n  }\n\n  /**\n   * @see {@link Meter.createObservableUpDownCounter}\n   */\n  createObservableUpDownCounter(\n    _name: string,\n    _options?: MetricOptions\n  ): ObservableUpDownCounter {\n    return NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC;\n  }\n\n  /**\n   * @see {@link Meter.addBatchObservableCallback}\n   */\n  addBatchObservableCallback(\n    _callback: BatchObservableCallback,\n    _observables: Observable[]\n  ): void {}\n\n  /**\n   * @see {@link Meter.removeBatchObservableCallback}\n   */\n  removeBatchObservableCallback(_callback: BatchObservableCallback): void {}\n}\n\nexport class NoopMetric {}\n\nexport class NoopCounterMetric extends NoopMetric implements Counter {\n  add(_value: number, _attributes: MetricAttributes): void {}\n}\n\nexport class NoopUpDownCounterMetric\n  extends NoopMetric\n  implements UpDownCounter\n{\n  add(_value: number, _attributes: MetricAttributes): void {}\n}\n\nexport class NoopGaugeMetric extends NoopMetric implements Gauge {\n  record(_value: number, _attributes: MetricAttributes): void {}\n}\n\nexport class NoopHistogramMetric extends NoopMetric implements Histogram {\n  record(_value: number, _attributes: MetricAttributes): void {}\n}\n\nexport class NoopObservableMetric {\n  addCallback(_callback: ObservableCallback) {}\n\n  removeCallback(_callback: ObservableCallback) {}\n}\n\nexport class NoopObservableCounterMetric\n  extends NoopObservableMetric\n  implements ObservableCounter {}\n\nexport class NoopObservableGaugeMetric\n  extends NoopObservableMetric\n  implements ObservableGauge {}\n\nexport class NoopObservableUpDownCounterMetric\n  extends NoopObservableMetric\n  implements ObservableUpDownCounter {}\n\nexport const NOOP_METER = new NoopMeter();\n\n// Synchronous instruments\nexport const NOOP_COUNTER_METRIC = new NoopCounterMetric();\nexport const NOOP_GAUGE_METRIC = new NoopGaugeMetric();\nexport const NOOP_HISTOGRAM_METRIC = new NoopHistogramMetric();\nexport const NOOP_UP_DOWN_COUNTER_METRIC = new NoopUpDownCounterMetric();\n\n// Asynchronous instruments\nexport const NOOP_OBSERVABLE_COUNTER_METRIC = new NoopObservableCounterMetric();\nexport const NOOP_OBSERVABLE_GAUGE_METRIC = new NoopObservableGaugeMetric();\nexport const NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC =\n  new NoopObservableUpDownCounterMetric();\n\n/**\n * Create a no-op Meter\n */\nexport function createNoopMeter(): Meter {\n  return NOOP_METER;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Attributes, AttributeValue } from '../common/Attributes';\nimport { Context } from '../context/types';\nimport { BatchObservableResult, ObservableResult } from './ObservableResult';\n\n/**\n * Advisory options influencing aggregation configuration parameters.\n * @experimental\n */\nexport interface MetricAdvice {\n  /**\n   * Hint the explicit bucket boundaries for SDK if the metric is been\n   * aggregated with a HistogramAggregator.\n   */\n  explicitBucketBoundaries?: number[];\n}\n\n/**\n * Options needed for metric creation\n */\nexport interface MetricOptions {\n  /**\n   * The description of the Metric.\n   * @default ''\n   */\n  description?: string;\n\n  /**\n   * The unit of the Metric values.\n   * @default ''\n   */\n  unit?: string;\n\n  /**\n   * Indicates the type of the recorded value.\n   * @default {@link ValueType.DOUBLE}\n   */\n  valueType?: ValueType;\n\n  /**\n   * The advice influencing aggregation configuration parameters.\n   * @experimental\n   */\n  advice?: MetricAdvice;\n}\n\n/** The Type of value. It describes how the data is reported. */\nexport enum ValueType {\n  INT,\n  DOUBLE,\n}\n\n/**\n * Counter is the most common synchronous instrument. This instrument supports\n * an `Add(increment)` function for reporting a sum, and is restricted to\n * non-negative increments. The default aggregation is Sum, as for any additive\n * instrument.\n *\n * Example uses for Counter:\n * <ol>\n *   <li> count the number of bytes received. </li>\n *   <li> count the number of requests completed. </li>\n *   <li> count the number of accounts created. </li>\n *   <li> count the number of checkpoints run. </li>\n *   <li> count the number of 5xx errors. </li>\n * <ol>\n */\nexport interface Counter<\n  AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n  /**\n   * Increment value of counter by the input. Inputs must not be negative.\n   */\n  add(value: number, attributes?: AttributesTypes, context?: Context): void;\n}\n\nexport interface UpDownCounter<\n  AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n  /**\n   * Increment value of counter by the input. Inputs may be negative.\n   */\n  add(value: number, attributes?: AttributesTypes, context?: Context): void;\n}\n\nexport interface Gauge<\n  AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n  /**\n   * Records a measurement.\n   */\n  record(value: number, attributes?: AttributesTypes, context?: Context): void;\n}\n\nexport interface Histogram<\n  AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n  /**\n   * Records a measurement. Value of the measurement must not be negative.\n   */\n  record(value: number, attributes?: AttributesTypes, context?: Context): void;\n}\n\n/**\n * @deprecated please use {@link Attributes}\n */\nexport type MetricAttributes = Attributes;\n\n/**\n * @deprecated please use {@link AttributeValue}\n */\nexport type MetricAttributeValue = AttributeValue;\n\n/**\n * The observable callback for Observable instruments.\n */\nexport type ObservableCallback<\n  AttributesTypes extends MetricAttributes = MetricAttributes,\n> = (\n  observableResult: ObservableResult<AttributesTypes>\n) => void | Promise<void>;\n\n/**\n * The observable callback for a batch of Observable instruments.\n */\nexport type BatchObservableCallback<\n  AttributesTypes extends MetricAttributes = MetricAttributes,\n> = (\n  observableResult: BatchObservableResult<AttributesTypes>\n) => void | Promise<void>;\n\nexport interface Observable<\n  AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n  /**\n   * Sets up a function that will be called whenever a metric collection is initiated.\n   *\n   * If the function is already in the list of callbacks for this Observable, the function is not added a second time.\n   */\n  addCallback(callback: ObservableCallback<AttributesTypes>): void;\n\n  /**\n   * Removes a callback previously registered with {@link Observable.addCallback}.\n   */\n  removeCallback(callback: ObservableCallback<AttributesTypes>): void;\n}\n\nexport type ObservableCounter<\n  AttributesTypes extends MetricAttributes = MetricAttributes,\n> = Observable<AttributesTypes>;\nexport type ObservableUpDownCounter<\n  AttributesTypes extends MetricAttributes = MetricAttributes,\n> = Observable<AttributesTypes>;\nexport type ObservableGauge<\n  AttributesTypes extends MetricAttributes = MetricAttributes,\n> = Observable<AttributesTypes>;\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Context } from '../context/types';\n\n/**\n * Injects `Context` into and extracts it from carriers that travel\n * in-band across process boundaries. Encoding is expected to conform to the\n * HTTP Header Field semantics. Values are often encoded as RPC/HTTP request\n * headers.\n *\n * The carrier of propagated data on both the client (injector) and server\n * (extractor) side is usually an object such as http headers. Propagation is\n * usually implemented via library-specific request interceptors, where the\n * client-side injects values and the server-side extracts them.\n */\nexport interface TextMapPropagator<Carrier = any> {\n  /**\n   * Injects values from a given `Context` into a carrier.\n   *\n   * OpenTelemetry defines a common set of format values (TextMapPropagator),\n   * and each has an expected `carrier` type.\n   *\n   * @param context the Context from which to extract values to transmit over\n   *     the wire.\n   * @param carrier the carrier of propagation fields, such as http request\n   *     headers.\n   * @param setter an optional {@link TextMapSetter}. If undefined, values will be\n   *     set by direct object assignment.\n   */\n  inject(\n    context: Context,\n    carrier: Carrier,\n    setter: TextMapSetter<Carrier>\n  ): void;\n\n  /**\n   * Given a `Context` and a carrier, extract context values from a\n   * carrier and return a new context, created from the old context, with the\n   * extracted values.\n   *\n   * @param context the Context from which to extract values to transmit over\n   *     the wire.\n   * @param carrier the carrier of propagation fields, such as http request\n   *     headers.\n   * @param getter an optional {@link TextMapGetter}. If undefined, keys will be all\n   *     own properties, and keys will be accessed by direct object access.\n   */\n  extract(\n    context: Context,\n    carrier: Carrier,\n    getter: TextMapGetter<Carrier>\n  ): Context;\n\n  /**\n   * Return a list of all fields which may be used by the propagator.\n   */\n  fields(): string[];\n}\n\n/**\n * A setter is specified by the caller to define a specific method\n * to set key/value pairs on the carrier within a propagator.\n */\nexport interface TextMapSetter<Carrier = any> {\n  /**\n   * Callback used to set a key/value pair on an object.\n   *\n   * Should be called by the propagator each time a key/value pair\n   * should be set, and should set that key/value pair on the propagator.\n   *\n   * @param carrier object or class which carries key/value pairs\n   * @param key string key to modify\n   * @param value value to be set to the key on the carrier\n   */\n  set(carrier: Carrier, key: string, value: string): void;\n}\n\n/**\n * A getter is specified by the caller to define a specific method\n * to get the value of a key from a carrier.\n */\nexport interface TextMapGetter<Carrier = any> {\n  /**\n   * Get a list of all keys available on the carrier.\n   *\n   * @param carrier\n   */\n  keys(carrier: Carrier): string[];\n\n  /**\n   * Get the value of a specific key from the carrier.\n   *\n   * @param carrier\n   * @param key\n   */\n  get(carrier: Carrier, key: string): undefined | string | string[];\n}\n\nexport const defaultTextMapGetter: TextMapGetter = {\n  get(carrier, key) {\n    if (carrier == null) {\n      return undefined;\n    }\n    return carrier[key];\n  },\n\n  keys(carrier) {\n    if (carrier == null) {\n      return [];\n    }\n    return Object.keys(carrier);\n  },\n};\n\nexport const defaultTextMapSetter: TextMapSetter = {\n  set(carrier, key, value) {\n    if (carrier == null) {\n      return;\n    }\n\n    carrier[key] = value;\n  },\n};\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ROOT_CONTEXT } from './context';\nimport * as types from './types';\n\nexport class NoopContextManager implements types.ContextManager {\n  active(): types.Context {\n    return ROOT_CONTEXT;\n  }\n\n  with<A extends unknown[], F extends (...args: A) => ReturnType<F>>(\n    _context: types.Context,\n    fn: F,\n    thisArg?: ThisParameterType<F>,\n    ...args: A\n  ): ReturnType<F> {\n    return fn.call(thisArg, ...args);\n  }\n\n  bind<T>(_context: types.Context, target: T): T {\n    return target;\n  }\n\n  enable(): this {\n    return this;\n  }\n\n  disable(): this {\n    return this;\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NoopContextManager } from '../context/NoopContextManager';\nimport { Context, ContextManager } from '../context/types';\nimport {\n  getGlobal,\n  registerGlobal,\n  unregisterGlobal,\n} from '../internal/global-utils';\nimport { DiagAPI } from './diag';\n\nconst API_NAME = 'context';\nconst NOOP_CONTEXT_MANAGER = new NoopContextManager();\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Context API\n */\nexport class ContextAPI {\n  private static _instance?: ContextAPI;\n\n  /** Empty private constructor prevents end users from constructing a new instance of the API */\n  private constructor() {}\n\n  /** Get the singleton instance of the Context API */\n  public static getInstance(): ContextAPI {\n    if (!this._instance) {\n      this._instance = new ContextAPI();\n    }\n\n    return this._instance;\n  }\n\n  /**\n   * Set the current context manager.\n   *\n   * @returns true if the context manager was successfully registered, else false\n   */\n  public setGlobalContextManager(contextManager: ContextManager): boolean {\n    return registerGlobal(API_NAME, contextManager, DiagAPI.instance());\n  }\n\n  /**\n   * Get the currently active context\n   */\n  public active(): Context {\n    return this._getContextManager().active();\n  }\n\n  /**\n   * Execute a function with an active context\n   *\n   * @param context context to be active during function execution\n   * @param fn function to execute in a context\n   * @param thisArg optional receiver to be used for calling fn\n   * @param args optional arguments forwarded to fn\n   */\n  public with<A extends unknown[], F extends (...args: A) => ReturnType<F>>(\n    context: Context,\n    fn: F,\n    thisArg?: ThisParameterType<F>,\n    ...args: A\n  ): ReturnType<F> {\n    return this._getContextManager().with(context, fn, thisArg, ...args);\n  }\n\n  /**\n   * Bind a context to a target function or event emitter\n   *\n   * @param context context to bind to the event emitter or function. Defaults to the currently active context\n   * @param target function or event emitter to bind\n   */\n  public bind<T>(context: Context, target: T): T {\n    return this._getContextManager().bind(context, target);\n  }\n\n  private _getContextManager(): ContextManager {\n    return getGlobal(API_NAME) || NOOP_CONTEXT_MANAGER;\n  }\n\n  /** Disable and remove the global context manager */\n  public disable() {\n    this._getContextManager().disable();\n    unregisterGlobal(API_NAME, DiagAPI.instance());\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport enum TraceFlags {\n  /** Represents no flag set. */\n  NONE = 0x0,\n  /** Bit to represent whether trace is sampled in trace flags. */\n  SAMPLED = 0x1 << 0,\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { SpanContext } from './span_context';\nimport { TraceFlags } from './trace_flags';\n\nexport const INVALID_SPANID = '0000000000000000';\nexport const INVALID_TRACEID = '00000000000000000000000000000000';\nexport const INVALID_SPAN_CONTEXT: SpanContext = {\n  traceId: INVALID_TRACEID,\n  spanId: INVALID_SPANID,\n  traceFlags: TraceFlags.NONE,\n};\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Exception } from '../common/Exception';\nimport { TimeInput } from '../common/Time';\nimport { SpanAttributes } from './attributes';\nimport { INVALID_SPAN_CONTEXT } from './invalid-span-constants';\nimport { Span } from './span';\nimport { SpanContext } from './span_context';\nimport { SpanStatus } from './status';\nimport { Link } from './link';\n\n/**\n * The NonRecordingSpan is the default {@link Span} that is used when no Span\n * implementation is available. All operations are no-op including context\n * propagation.\n */\nexport class NonRecordingSpan implements Span {\n  constructor(\n    private readonly _spanContext: SpanContext = INVALID_SPAN_CONTEXT\n  ) {}\n\n  // Returns a SpanContext.\n  spanContext(): SpanContext {\n    return this._spanContext;\n  }\n\n  // By default does nothing\n  setAttribute(_key: string, _value: unknown): this {\n    return this;\n  }\n\n  // By default does nothing\n  setAttributes(_attributes: SpanAttributes): this {\n    return this;\n  }\n\n  // By default does nothing\n  addEvent(_name: string, _attributes?: SpanAttributes): this {\n    return this;\n  }\n\n  addLink(_link: Link): this {\n    return this;\n  }\n\n  addLinks(_links: Link[]): this {\n    return this;\n  }\n\n  // By default does nothing\n  setStatus(_status: SpanStatus): this {\n    return this;\n  }\n\n  // By default does nothing\n  updateName(_name: string): this {\n    return this;\n  }\n\n  // By default does nothing\n  end(_endTime?: TimeInput): void {}\n\n  // isRecording always returns false for NonRecordingSpan.\n  isRecording(): boolean {\n    return false;\n  }\n\n  // By default does nothing\n  recordException(_exception: Exception, _time?: TimeInput): void {}\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createContextKey } from '../context/context';\nimport { Context } from '../context/types';\nimport { Span } from './span';\nimport { SpanContext } from './span_context';\nimport { NonRecordingSpan } from './NonRecordingSpan';\nimport { ContextAPI } from '../api/context';\n\n/**\n * span key\n */\nconst SPAN_KEY = createContextKey('OpenTelemetry Context Key SPAN');\n\n/**\n * Return the span if one exists\n *\n * @param context context to get span from\n */\nexport function getSpan(context: Context): Span | undefined {\n  return (context.getValue(SPAN_KEY) as Span) || undefined;\n}\n\n/**\n * Gets the span from the current context, if one exists.\n */\nexport function getActiveSpan(): Span | undefined {\n  return getSpan(ContextAPI.getInstance().active());\n}\n\n/**\n * Set the span on a context\n *\n * @param context context to use as parent\n * @param span span to set active\n */\nexport function setSpan(context: Context, span: Span): Context {\n  return context.setValue(SPAN_KEY, span);\n}\n\n/**\n * Remove current span stored in the context\n *\n * @param context context to delete span from\n */\nexport function deleteSpan(context: Context): Context {\n  return context.deleteValue(SPAN_KEY);\n}\n\n/**\n * Wrap span context in a NoopSpan and set as span in a new\n * context\n *\n * @param context context to set active span on\n * @param spanContext span context to be wrapped\n */\nexport function setSpanContext(\n  context: Context,\n  spanContext: SpanContext\n): Context {\n  return setSpan(context, new NonRecordingSpan(spanContext));\n}\n\n/**\n * Get the span context of the span if it exists.\n *\n * @param context context to get values from\n */\nexport function getSpanContext(context: Context): SpanContext | undefined {\n  return getSpan(context)?.spanContext();\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { INVALID_SPANID, INVALID_TRACEID } from './invalid-span-constants';\nimport { NonRecordingSpan } from './NonRecordingSpan';\nimport { Span } from './span';\nimport { SpanContext } from './span_context';\n\nconst VALID_TRACEID_REGEX = /^([0-9a-f]{32})$/i;\nconst VALID_SPANID_REGEX = /^[0-9a-f]{16}$/i;\n\nexport function isValidTraceId(traceId: string): boolean {\n  return VALID_TRACEID_REGEX.test(traceId) && traceId !== INVALID_TRACEID;\n}\n\nexport function isValidSpanId(spanId: string): boolean {\n  return VALID_SPANID_REGEX.test(spanId) && spanId !== INVALID_SPANID;\n}\n\n/**\n * Returns true if this {@link SpanContext} is valid.\n * @return true if this {@link SpanContext} is valid.\n */\nexport function isSpanContextValid(spanContext: SpanContext): boolean {\n  return (\n    isValidTraceId(spanContext.traceId) && isValidSpanId(spanContext.spanId)\n  );\n}\n\n/**\n * Wrap the given {@link SpanContext} in a new non-recording {@link Span}\n *\n * @param spanContext span context to be wrapped\n * @returns a new non-recording {@link Span} with the provided context\n */\nexport function wrapSpanContext(spanContext: SpanContext): Span {\n  return new NonRecordingSpan(spanContext);\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ContextAPI } from '../api/context';\nimport { Context } from '../context/types';\nimport { getSpanContext, setSpan } from '../trace/context-utils';\nimport { NonRecordingSpan } from './NonRecordingSpan';\nimport { Span } from './span';\nimport { isSpanContextValid } from './spancontext-utils';\nimport { SpanOptions } from './SpanOptions';\nimport { SpanContext } from './span_context';\nimport { Tracer } from './tracer';\n\nconst contextApi = ContextAPI.getInstance();\n\n/**\n * No-op implementations of {@link Tracer}.\n */\nexport class NoopTracer implements Tracer {\n  // startSpan starts a noop span.\n  startSpan(\n    name: string,\n    options?: SpanOptions,\n    context = contextApi.active()\n  ): Span {\n    const root = Boolean(options?.root);\n    if (root) {\n      return new NonRecordingSpan();\n    }\n\n    const parentFromContext = context && getSpanContext(context);\n\n    if (\n      isSpanContext(parentFromContext) &&\n      isSpanContextValid(parentFromContext)\n    ) {\n      return new NonRecordingSpan(parentFromContext);\n    } else {\n      return new NonRecordingSpan();\n    }\n  }\n\n  startActiveSpan<F extends (span: Span) => ReturnType<F>>(\n    name: string,\n    fn: F\n  ): ReturnType<F>;\n  startActiveSpan<F extends (span: Span) => ReturnType<F>>(\n    name: string,\n    opts: SpanOptions | undefined,\n    fn: F\n  ): ReturnType<F>;\n  startActiveSpan<F extends (span: Span) => ReturnType<F>>(\n    name: string,\n    opts: SpanOptions | undefined,\n    ctx: Context | undefined,\n    fn: F\n  ): ReturnType<F>;\n  startActiveSpan<F extends (span: Span) => ReturnType<F>>(\n    name: string,\n    arg2?: F | SpanOptions,\n    arg3?: F | Context,\n    arg4?: F\n  ): ReturnType<F> | undefined {\n    let opts: SpanOptions | undefined;\n    let ctx: Context | undefined;\n    let fn: F;\n\n    if (arguments.length < 2) {\n      return;\n    } else if (arguments.length === 2) {\n      fn = arg2 as F;\n    } else if (arguments.length === 3) {\n      opts = arg2 as SpanOptions | undefined;\n      fn = arg3 as F;\n    } else {\n      opts = arg2 as SpanOptions | undefined;\n      ctx = arg3 as Context | undefined;\n      fn = arg4 as F;\n    }\n\n    const parentContext = ctx ?? contextApi.active();\n    const span = this.startSpan(name, opts, parentContext);\n    const contextWithSpanSet = setSpan(parentContext, span);\n\n    return contextApi.with(contextWithSpanSet, fn, undefined, span);\n  }\n}\n\nfunction isSpanContext(spanContext: any): spanContext is SpanContext {\n  return (\n    typeof spanContext === 'object' &&\n    typeof spanContext['spanId'] === 'string' &&\n    typeof spanContext['traceId'] === 'string' &&\n    typeof spanContext['traceFlags'] === 'number'\n  );\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Context } from '../context/types';\nimport { NoopTracer } from './NoopTracer';\nimport { Span } from './span';\nimport { SpanOptions } from './SpanOptions';\nimport { Tracer } from './tracer';\nimport { TracerOptions } from './tracer_options';\n\nconst NOOP_TRACER = new NoopTracer();\n\n/**\n * Proxy tracer provided by the proxy tracer provider\n */\nexport class ProxyTracer implements Tracer {\n  // When a real implementation is provided, this will be it\n  private _delegate?: Tracer;\n\n  constructor(\n    private _provider: TracerDelegator,\n    public readonly name: string,\n    public readonly version?: string,\n    public readonly options?: TracerOptions\n  ) {}\n\n  startSpan(name: string, options?: SpanOptions, context?: Context): Span {\n    return this._getTracer().startSpan(name, options, context);\n  }\n\n  startActiveSpan<F extends (span: Span) => unknown>(\n    _name: string,\n    _options: F | SpanOptions,\n    _context?: F | Context,\n    _fn?: F\n  ): ReturnType<F> {\n    const tracer = this._getTracer();\n    return Reflect.apply(tracer.startActiveSpan, tracer, arguments);\n  }\n\n  /**\n   * Try to get a tracer from the proxy tracer provider.\n   * If the proxy tracer provider has no delegate, return a noop tracer.\n   */\n  private _getTracer() {\n    if (this._delegate) {\n      return this._delegate;\n    }\n\n    const tracer = this._provider.getDelegateTracer(\n      this.name,\n      this.version,\n      this.options\n    );\n\n    if (!tracer) {\n      return NOOP_TRACER;\n    }\n\n    this._delegate = tracer;\n    return this._delegate;\n  }\n}\n\nexport interface TracerDelegator {\n  getDelegateTracer(\n    name: string,\n    version?: string,\n    options?: TracerOptions\n  ): Tracer | undefined;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NoopTracer } from './NoopTracer';\nimport { Tracer } from './tracer';\nimport { TracerOptions } from './tracer_options';\nimport { TracerProvider } from './tracer_provider';\n\n/**\n * An implementation of the {@link TracerProvider} which returns an impotent\n * Tracer for all calls to `getTracer`.\n *\n * All operations are no-op.\n */\nexport class NoopTracerProvider implements TracerProvider {\n  getTracer(\n    _name?: string,\n    _version?: string,\n    _options?: TracerOptions\n  ): Tracer {\n    return new NoopTracer();\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Tracer } from './tracer';\nimport { TracerProvider } from './tracer_provider';\nimport { ProxyTracer } from './ProxyTracer';\nimport { NoopTracerProvider } from './NoopTracerProvider';\nimport { TracerOptions } from './tracer_options';\n\nconst NOOP_TRACER_PROVIDER = new NoopTracerProvider();\n\n/**\n * Tracer provider which provides {@link ProxyTracer}s.\n *\n * Before a delegate is set, tracers provided are NoOp.\n *   When a delegate is set, traces are provided from the delegate.\n *   When a delegate is set after tracers have already been provided,\n *   all tracers already provided will use the provided delegate implementation.\n */\nexport class ProxyTracerProvider implements TracerProvider {\n  private _delegate?: TracerProvider;\n\n  /**\n   * Get a {@link ProxyTracer}\n   */\n  getTracer(name: string, version?: string, options?: TracerOptions): Tracer {\n    return (\n      this.getDelegateTracer(name, version, options) ??\n      new ProxyTracer(this, name, version, options)\n    );\n  }\n\n  getDelegate(): TracerProvider {\n    return this._delegate ?? NOOP_TRACER_PROVIDER;\n  }\n\n  /**\n   * Set the delegate tracer provider\n   */\n  setDelegate(delegate: TracerProvider) {\n    this._delegate = delegate;\n  }\n\n  getDelegateTracer(\n    name: string,\n    version?: string,\n    options?: TracerOptions\n  ): Tracer | undefined {\n    return this._delegate?.getTracer(name, version, options);\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { SpanAttributes } from './attributes';\nimport { TraceState } from './trace_state';\n\n/**\n * @deprecated use the one declared in @opentelemetry/sdk-trace-base instead.\n * A sampling decision that determines how a {@link Span} will be recorded\n * and collected.\n */\nexport enum SamplingDecision {\n  /**\n   * `Span.isRecording() === false`, span will not be recorded and all events\n   * and attributes will be dropped.\n   */\n  NOT_RECORD,\n  /**\n   * `Span.isRecording() === true`, but `Sampled` flag in {@link TraceFlags}\n   * MUST NOT be set.\n   */\n  RECORD,\n  /**\n   * `Span.isRecording() === true` AND `Sampled` flag in {@link TraceFlags}\n   * MUST be set.\n   */\n  RECORD_AND_SAMPLED,\n}\n\n/**\n * @deprecated use the one declared in @opentelemetry/sdk-trace-base instead.\n * A sampling result contains a decision for a {@link Span} and additional\n * attributes the sampler would like to added to the Span.\n */\nexport interface SamplingResult {\n  /**\n   * A sampling decision, refer to {@link SamplingDecision} for details.\n   */\n  decision: SamplingDecision;\n  /**\n   * The list of attributes returned by SamplingResult MUST be immutable.\n   * Caller may call {@link Sampler}.shouldSample any number of times and\n   * can safely cache the returned value.\n   */\n  attributes?: Readonly<SpanAttributes>;\n  /**\n   * A {@link TraceState} that will be associated with the {@link Span} through\n   * the new {@link SpanContext}. Samplers SHOULD return the TraceState from\n   * the passed-in {@link Context} if they do not intend to change it. Leaving\n   * the value undefined will also leave the TraceState unchanged.\n   */\n  traceState?: TraceState;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport enum SpanKind {\n  /** Default value. Indicates that the span is used internally. */\n  INTERNAL = 0,\n\n  /**\n   * Indicates that the span covers server-side handling of an RPC or other\n   * remote request.\n   */\n  SERVER = 1,\n\n  /**\n   * Indicates that the span covers the client-side wrapper around an RPC or\n   * other remote request.\n   */\n  CLIENT = 2,\n\n  /**\n   * Indicates that the span describes producer sending a message to a\n   * broker. Unlike client and server, there is no direct critical path latency\n   * relationship between producer and consumer spans.\n   */\n  PRODUCER = 3,\n\n  /**\n   * Indicates that the span describes consumer receiving a message from a\n   * broker. Unlike client and server, there is no direct critical path latency\n   * relationship between producer and consumer spans.\n   */\n  CONSUMER = 4,\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport interface SpanStatus {\n  /** The status code of this message. */\n  code: SpanStatusCode;\n  /** A developer-facing error message. */\n  message?: string;\n}\n\n/**\n * An enumeration of status codes.\n */\nexport enum SpanStatusCode {\n  /**\n   * The default status.\n   */\n  UNSET = 0,\n  /**\n   * The operation has been validated by an Application developer or\n   * Operator to have completed successfully.\n   */\n  OK = 1,\n  /**\n   * The operation contains an error.\n   */\n  ERROR = 2,\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst VALID_KEY_CHAR_RANGE = '[_0-9a-z-*/]';\nconst VALID_KEY = `[a-z]${VALID_KEY_CHAR_RANGE}{0,255}`;\nconst VALID_VENDOR_KEY = `[a-z0-9]${VALID_KEY_CHAR_RANGE}{0,240}@[a-z]${VALID_KEY_CHAR_RANGE}{0,13}`;\nconst VALID_KEY_REGEX = new RegExp(`^(?:${VALID_KEY}|${VALID_VENDOR_KEY})$`);\nconst VALID_VALUE_BASE_REGEX = /^[ -~]{0,255}[!-~]$/;\nconst INVALID_VALUE_COMMA_EQUAL_REGEX = /,|=/;\n\n/**\n * Key is opaque string up to 256 characters printable. It MUST begin with a\n * lowercase letter, and can only contain lowercase letters a-z, digits 0-9,\n * underscores _, dashes -, asterisks *, and forward slashes /.\n * For multi-tenant vendor scenarios, an at sign (@) can be used to prefix the\n * vendor name. Vendors SHOULD set the tenant ID at the beginning of the key.\n * see https://www.w3.org/TR/trace-context/#key\n */\nexport function validateKey(key: string): boolean {\n  return VALID_KEY_REGEX.test(key);\n}\n\n/**\n * Value is opaque string up to 256 characters printable ASCII RFC0020\n * characters (i.e., the range 0x20 to 0x7E) except comma , and =.\n */\nexport function validateValue(value: string): boolean {\n  return (\n    VALID_VALUE_BASE_REGEX.test(value) &&\n    !INVALID_VALUE_COMMA_EQUAL_REGEX.test(value)\n  );\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TraceState } from '../trace_state';\nimport { validateKey, validateValue } from './tracestate-validators';\n\nconst MAX_TRACE_STATE_ITEMS = 32;\nconst MAX_TRACE_STATE_LEN = 512;\nconst LIST_MEMBERS_SEPARATOR = ',';\nconst LIST_MEMBER_KEY_VALUE_SPLITTER = '=';\n\n/**\n * TraceState must be a class and not a simple object type because of the spec\n * requirement (https://www.w3.org/TR/trace-context/#tracestate-field).\n *\n * Here is the list of allowed mutations:\n * - New key-value pair should be added into the beginning of the list\n * - The value of any key can be updated. Modified keys MUST be moved to the\n * beginning of the list.\n */\nexport class TraceStateImpl implements TraceState {\n  private _internalState: Map<string, string> = new Map();\n\n  constructor(rawTraceState?: string) {\n    if (rawTraceState) this._parse(rawTraceState);\n  }\n\n  set(key: string, value: string): TraceStateImpl {\n    // TODO: Benchmark the different approaches(map vs list) and\n    // use the faster one.\n    const traceState = this._clone();\n    if (traceState._internalState.has(key)) {\n      traceState._internalState.delete(key);\n    }\n    traceState._internalState.set(key, value);\n    return traceState;\n  }\n\n  unset(key: string): TraceStateImpl {\n    const traceState = this._clone();\n    traceState._internalState.delete(key);\n    return traceState;\n  }\n\n  get(key: string): string | undefined {\n    return this._internalState.get(key);\n  }\n\n  serialize(): string {\n    return this._keys()\n      .reduce((agg: string[], key) => {\n        agg.push(key + LIST_MEMBER_KEY_VALUE_SPLITTER + this.get(key));\n        return agg;\n      }, [])\n      .join(LIST_MEMBERS_SEPARATOR);\n  }\n\n  private _parse(rawTraceState: string) {\n    if (rawTraceState.length > MAX_TRACE_STATE_LEN) return;\n    this._internalState = rawTraceState\n      .split(LIST_MEMBERS_SEPARATOR)\n      .reverse() // Store in reverse so new keys (.set(...)) will be placed at the beginning\n      .reduce((agg: Map<string, string>, part: string) => {\n        const listMember = part.trim(); // Optional Whitespace (OWS) handling\n        const i = listMember.indexOf(LIST_MEMBER_KEY_VALUE_SPLITTER);\n        if (i !== -1) {\n          const key = listMember.slice(0, i);\n          const value = listMember.slice(i + 1, part.length);\n          if (validateKey(key) && validateValue(value)) {\n            agg.set(key, value);\n          } else {\n            // TODO: Consider to add warning log\n          }\n        }\n        return agg;\n      }, new Map());\n\n    // Because of the reverse() requirement, trunc must be done after map is created\n    if (this._internalState.size > MAX_TRACE_STATE_ITEMS) {\n      this._internalState = new Map(\n        Array.from(this._internalState.entries())\n          .reverse() // Use reverse same as original tracestate parse chain\n          .slice(0, MAX_TRACE_STATE_ITEMS)\n      );\n    }\n  }\n\n  private _keys(): string[] {\n    return Array.from(this._internalState.keys()).reverse();\n  }\n\n  private _clone(): TraceStateImpl {\n    const traceState = new TraceStateImpl();\n    traceState._internalState = new Map(this._internalState);\n    return traceState;\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TraceState } from '../trace_state';\nimport { TraceStateImpl } from './tracestate-impl';\n\nexport function createTraceState(rawTraceState?: string): TraceState {\n  return new TraceStateImpl(rawTraceState);\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { ContextAPI } from './api/context';\n/** Entrypoint for context API */\nexport const context = ContextAPI.getInstance();\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { DiagAPI } from './api/diag';\n/**\n * Entrypoint for Diag API.\n * Defines Diagnostic handler used for internal diagnostic logging operations.\n * The default provides a Noop DiagLogger implementation which may be changed via the\n * diag.setLogger(logger: DiagLogger) function.\n */\nexport const diag = DiagAPI.instance();\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Meter, MeterOptions } from './Meter';\nimport { MeterProvider } from './MeterProvider';\nimport { NOOP_METER } from './NoopMeter';\n\n/**\n * An implementation of the {@link MeterProvider} which returns an impotent Meter\n * for all calls to `getMeter`\n */\nexport class NoopMeterProvider implements MeterProvider {\n  getMeter(_name: string, _version?: string, _options?: MeterOptions): Meter {\n    return NOOP_METER;\n  }\n}\n\nexport const NOOP_METER_PROVIDER = new NoopMeterProvider();\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Meter, MeterOptions } from '../metrics/Meter';\nimport { MeterProvider } from '../metrics/MeterProvider';\nimport { NOOP_METER_PROVIDER } from '../metrics/NoopMeterProvider';\nimport {\n  getGlobal,\n  registerGlobal,\n  unregisterGlobal,\n} from '../internal/global-utils';\nimport { DiagAPI } from './diag';\n\nconst API_NAME = 'metrics';\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Metrics API\n */\nexport class MetricsAPI {\n  private static _instance?: MetricsAPI;\n\n  /** Empty private constructor prevents end users from constructing a new instance of the API */\n  private constructor() {}\n\n  /** Get the singleton instance of the Metrics API */\n  public static getInstance(): MetricsAPI {\n    if (!this._instance) {\n      this._instance = new MetricsAPI();\n    }\n\n    return this._instance;\n  }\n\n  /**\n   * Set the current global meter provider.\n   * Returns true if the meter provider was successfully registered, else false.\n   */\n  public setGlobalMeterProvider(provider: MeterProvider): boolean {\n    return registerGlobal(API_NAME, provider, DiagAPI.instance());\n  }\n\n  /**\n   * Returns the global meter provider.\n   */\n  public getMeterProvider(): MeterProvider {\n    return getGlobal(API_NAME) || NOOP_METER_PROVIDER;\n  }\n\n  /**\n   * Returns a meter from the global meter provider.\n   */\n  public getMeter(\n    name: string,\n    version?: string,\n    options?: MeterOptions\n  ): Meter {\n    return this.getMeterProvider().getMeter(name, version, options);\n  }\n\n  /** Remove the global meter provider */\n  public disable(): void {\n    unregisterGlobal(API_NAME, DiagAPI.instance());\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { MetricsAPI } from './api/metrics';\n/** Entrypoint for metrics API */\nexport const metrics = MetricsAPI.getInstance();\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Context } from '../context/types';\nimport { TextMapPropagator } from './TextMapPropagator';\n\n/**\n * No-op implementations of {@link TextMapPropagator}.\n */\nexport class NoopTextMapPropagator implements TextMapPropagator {\n  /** Noop inject function does nothing */\n  inject(_context: Context, _carrier: unknown): void {}\n  /** Noop extract function does nothing and returns the input context */\n  extract(context: Context, _carrier: unknown): Context {\n    return context;\n  }\n  fields(): string[] {\n    return [];\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ContextAPI } from '../api/context';\nimport { createContextKey } from '../context/context';\nimport { Context } from '../context/types';\nimport { Baggage } from './types';\n\n/**\n * Baggage key\n */\nconst BAGGAGE_KEY = createContextKey('OpenTelemetry Baggage Key');\n\n/**\n * Retrieve the current baggage from the given context\n *\n * @param {Context} Context that manage all context values\n * @returns {Baggage} Extracted baggage from the context\n */\nexport function getBaggage(context: Context): Baggage | undefined {\n  return (context.getValue(BAGGAGE_KEY) as Baggage) || undefined;\n}\n\n/**\n * Retrieve the current baggage from the active/current context\n *\n * @returns {Baggage} Extracted baggage from the context\n */\nexport function getActiveBaggage(): Baggage | undefined {\n  return getBaggage(ContextAPI.getInstance().active());\n}\n\n/**\n * Store a baggage in the given context\n *\n * @param {Context} Context that manage all context values\n * @param {Baggage} baggage that will be set in the actual context\n */\nexport function setBaggage(context: Context, baggage: Baggage): Context {\n  return context.setValue(BAGGAGE_KEY, baggage);\n}\n\n/**\n * Delete the baggage stored in the given context\n *\n * @param {Context} Context that manage all context values\n */\nexport function deleteBaggage(context: Context): Context {\n  return context.deleteValue(BAGGAGE_KEY);\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Context } from '../context/types';\nimport {\n  getGlobal,\n  registerGlobal,\n  unregisterGlobal,\n} from '../internal/global-utils';\nimport { NoopTextMapPropagator } from '../propagation/NoopTextMapPropagator';\nimport {\n  defaultTextMapGetter,\n  defaultTextMapSetter,\n  TextMapGetter,\n  TextMapPropagator,\n  TextMapSetter,\n} from '../propagation/TextMapPropagator';\nimport {\n  getBaggage,\n  getActiveBaggage,\n  setBaggage,\n  deleteBaggage,\n} from '../baggage/context-helpers';\nimport { createBaggage } from '../baggage/utils';\nimport { DiagAPI } from './diag';\n\nconst API_NAME = 'propagation';\nconst NOOP_TEXT_MAP_PROPAGATOR = new NoopTextMapPropagator();\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Propagation API\n */\nexport class PropagationAPI {\n  private static _instance?: PropagationAPI;\n\n  /** Empty private constructor prevents end users from constructing a new instance of the API */\n  private constructor() {}\n\n  /** Get the singleton instance of the Propagator API */\n  public static getInstance(): PropagationAPI {\n    if (!this._instance) {\n      this._instance = new PropagationAPI();\n    }\n\n    return this._instance;\n  }\n\n  /**\n   * Set the current propagator.\n   *\n   * @returns true if the propagator was successfully registered, else false\n   */\n  public setGlobalPropagator(propagator: TextMapPropagator): boolean {\n    return registerGlobal(API_NAME, propagator, DiagAPI.instance());\n  }\n\n  /**\n   * Inject context into a carrier to be propagated inter-process\n   *\n   * @param context Context carrying tracing data to inject\n   * @param carrier carrier to inject context into\n   * @param setter Function used to set values on the carrier\n   */\n  public inject<Carrier>(\n    context: Context,\n    carrier: Carrier,\n    setter: TextMapSetter<Carrier> = defaultTextMapSetter\n  ): void {\n    return this._getGlobalPropagator().inject(context, carrier, setter);\n  }\n\n  /**\n   * Extract context from a carrier\n   *\n   * @param context Context which the newly created context will inherit from\n   * @param carrier Carrier to extract context from\n   * @param getter Function used to extract keys from a carrier\n   */\n  public extract<Carrier>(\n    context: Context,\n    carrier: Carrier,\n    getter: TextMapGetter<Carrier> = defaultTextMapGetter\n  ): Context {\n    return this._getGlobalPropagator().extract(context, carrier, getter);\n  }\n\n  /**\n   * Return a list of all fields which may be used by the propagator.\n   */\n  public fields(): string[] {\n    return this._getGlobalPropagator().fields();\n  }\n\n  /** Remove the global propagator */\n  public disable() {\n    unregisterGlobal(API_NAME, DiagAPI.instance());\n  }\n\n  public createBaggage = createBaggage;\n\n  public getBaggage = getBaggage;\n\n  public getActiveBaggage = getActiveBaggage;\n\n  public setBaggage = setBaggage;\n\n  public deleteBaggage = deleteBaggage;\n\n  private _getGlobalPropagator(): TextMapPropagator {\n    return getGlobal(API_NAME) || NOOP_TEXT_MAP_PROPAGATOR;\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { PropagationAPI } from './api/propagation';\n/** Entrypoint for propagation API */\nexport const propagation = PropagationAPI.getInstance();\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  getGlobal,\n  registerGlobal,\n  unregisterGlobal,\n} from '../internal/global-utils';\nimport { ProxyTracerProvider } from '../trace/ProxyTracerProvider';\nimport {\n  isSpanContextValid,\n  wrapSpanContext,\n} from '../trace/spancontext-utils';\nimport { Tracer } from '../trace/tracer';\nimport { TracerProvider } from '../trace/tracer_provider';\nimport {\n  deleteSpan,\n  getActiveSpan,\n  getSpan,\n  getSpanContext,\n  setSpan,\n  setSpanContext,\n} from '../trace/context-utils';\nimport { DiagAPI } from './diag';\n\nconst API_NAME = 'trace';\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Tracing API\n */\nexport class TraceAPI {\n  private static _instance?: TraceAPI;\n\n  private _proxyTracerProvider = new ProxyTracerProvider();\n\n  /** Empty private constructor prevents end users from constructing a new instance of the API */\n  private constructor() {}\n\n  /** Get the singleton instance of the Trace API */\n  public static getInstance(): TraceAPI {\n    if (!this._instance) {\n      this._instance = new TraceAPI();\n    }\n\n    return this._instance;\n  }\n\n  /**\n   * Set the current global tracer.\n   *\n   * @returns true if the tracer provider was successfully registered, else false\n   */\n  public setGlobalTracerProvider(provider: TracerProvider): boolean {\n    const success = registerGlobal(\n      API_NAME,\n      this._proxyTracerProvider,\n      DiagAPI.instance()\n    );\n    if (success) {\n      this._proxyTracerProvider.setDelegate(provider);\n    }\n    return success;\n  }\n\n  /**\n   * Returns the global tracer provider.\n   */\n  public getTracerProvider(): TracerProvider {\n    return getGlobal(API_NAME) || this._proxyTracerProvider;\n  }\n\n  /**\n   * Returns a tracer from the global tracer provider.\n   */\n  public getTracer(name: string, version?: string): Tracer {\n    return this.getTracerProvider().getTracer(name, version);\n  }\n\n  /** Remove the global tracer provider */\n  public disable() {\n    unregisterGlobal(API_NAME, DiagAPI.instance());\n    this._proxyTracerProvider = new ProxyTracerProvider();\n  }\n\n  public wrapSpanContext = wrapSpanContext;\n\n  public isSpanContextValid = isSpanContextValid;\n\n  public deleteSpan = deleteSpan;\n\n  public getSpan = getSpan;\n\n  public getActiveSpan = getActiveSpan;\n\n  public getSpanContext = getSpanContext;\n\n  public setSpan = setSpan;\n\n  public setSpanContext = setSpanContext;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { TraceAPI } from './api/trace';\n/** Entrypoint for trace API */\nexport const trace = TraceAPI.getInstance();\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport { BaggageEntry, BaggageEntryMetadata, Baggage } from './baggage/types';\nexport { baggageEntryMetadataFromString } from './baggage/utils';\nexport { Exception } from './common/Exception';\nexport { HrTime, TimeInput } from './common/Time';\nexport { Attributes, AttributeValue } from './common/Attributes';\n\n// Context APIs\nexport { createContextKey, ROOT_CONTEXT } from './context/context';\nexport { Context, ContextManager } from './context/types';\nexport type { ContextAPI } from './api/context';\n\n// Diag APIs\nexport { DiagConsoleLogger } from './diag/consoleLogger';\nexport {\n  DiagLogFunction,\n  DiagLogger,\n  DiagLogLevel,\n  ComponentLoggerOptions,\n  DiagLoggerOptions,\n} from './diag/types';\nexport type { DiagAPI } from './api/diag';\n\n// Metrics APIs\nexport { createNoopMeter } from './metrics/NoopMeter';\nexport { MeterOptions, Meter } from './metrics/Meter';\nexport { MeterProvider } from './metrics/MeterProvider';\nexport {\n  ValueType,\n  Counter,\n  Gauge,\n  Histogram,\n  MetricOptions,\n  Observable,\n  ObservableCounter,\n  ObservableGauge,\n  ObservableUpDownCounter,\n  UpDownCounter,\n  BatchObservableCallback,\n  MetricAdvice,\n  MetricAttributes,\n  MetricAttributeValue,\n  ObservableCallback,\n} from './metrics/Metric';\nexport {\n  BatchObservableResult,\n  ObservableResult,\n} from './metrics/ObservableResult';\nexport type { MetricsAPI } from './api/metrics';\n\n// Propagation APIs\nexport {\n  TextMapPropagator,\n  TextMapSetter,\n  TextMapGetter,\n  defaultTextMapGetter,\n  defaultTextMapSetter,\n} from './propagation/TextMapPropagator';\nexport type { PropagationAPI } from './api/propagation';\n\n// Trace APIs\nexport { SpanAttributes, SpanAttributeValue } from './trace/attributes';\nexport { Link } from './trace/link';\nexport { ProxyTracer, TracerDelegator } from './trace/ProxyTracer';\nexport { ProxyTracerProvider } from './trace/ProxyTracerProvider';\nexport { Sampler } from './trace/Sampler';\nexport { SamplingDecision, SamplingResult } from './trace/SamplingResult';\nexport { SpanContext } from './trace/span_context';\nexport { SpanKind } from './trace/span_kind';\nexport { Span } from './trace/span';\nexport { SpanOptions } from './trace/SpanOptions';\nexport { SpanStatus, SpanStatusCode } from './trace/status';\nexport { TraceFlags } from './trace/trace_flags';\nexport { TraceState } from './trace/trace_state';\nexport { createTraceState } from './trace/internal/utils';\nexport { TracerProvider } from './trace/tracer_provider';\nexport { Tracer } from './trace/tracer';\nexport { TracerOptions } from './trace/tracer_options';\nexport {\n  isSpanContextValid,\n  isValidTraceId,\n  isValidSpanId,\n} from './trace/spancontext-utils';\nexport {\n  INVALID_SPANID,\n  INVALID_TRACEID,\n  INVALID_SPAN_CONTEXT,\n} from './trace/invalid-span-constants';\nexport type { TraceAPI } from './api/trace';\n\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { context } from './context-api';\nimport { diag } from './diag-api';\nimport { metrics } from './metrics-api';\nimport { propagation } from './propagation-api';\nimport { trace } from './trace-api';\n\n// Named export.\nexport { context, diag, metrics, propagation, trace };\n// Default export.\nexport default {\n  context,\n  diag,\n  metrics,\n  propagation,\n  trace,\n};\n","'use strict';\n\nconst OtelApi = require('@opentelemetry/api');\nconst Counter = require('../counter');\n\nconst PROCESS_CPU_USER_SECONDS = 'process_cpu_user_seconds_total';\nconst PROCESS_CPU_SYSTEM_SECONDS = 'process_cpu_system_seconds_total';\nconst PROCESS_CPU_SECONDS = 'process_cpu_seconds_total';\n\nmodule.exports = (registry, config = {}) => {\n\tconst registers = registry ? [registry] : undefined;\n\tconst namePrefix = config.prefix ? config.prefix : '';\n\tconst labels = config.labels ? config.labels : {};\n\tconst exemplars = config.enableExemplars ? config.enableExemplars : false;\n\tconst labelNames = Object.keys(labels);\n\n\tlet lastCpuUsage = process.cpuUsage();\n\n\tconst cpuUserUsageCounter = new Counter({\n\t\tname: namePrefix + PROCESS_CPU_USER_SECONDS,\n\t\thelp: 'Total user CPU time spent in seconds.',\n\t\tenableExemplars: exemplars,\n\t\tregisters,\n\t\tlabelNames,\n\t\t// Use this one metric's `collect` to set all metrics' values.\n\t\tcollect() {\n\t\t\tconst cpuUsage = process.cpuUsage();\n\n\t\t\tconst userUsageMicros = cpuUsage.user - lastCpuUsage.user;\n\t\t\tconst systemUsageMicros = cpuUsage.system - lastCpuUsage.system;\n\n\t\t\tlastCpuUsage = cpuUsage;\n\n\t\t\tif (this.enableExemplars) {\n\t\t\t\tlet exemplarLabels = {};\n\t\t\t\tconst currentSpan = OtelApi.trace.getSpan(OtelApi.context.active());\n\t\t\t\tif (currentSpan) {\n\t\t\t\t\texemplarLabels = {\n\t\t\t\t\t\ttraceId: currentSpan.spanContext().traceId,\n\t\t\t\t\t\tspanId: currentSpan.spanContext().spanId,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcpuUserUsageCounter.inc({\n\t\t\t\t\tlabels,\n\t\t\t\t\tvalue: userUsageMicros / 1e6,\n\t\t\t\t\texemplarLabels,\n\t\t\t\t});\n\t\t\t\tcpuSystemUsageCounter.inc({\n\t\t\t\t\tlabels,\n\t\t\t\t\tvalue: systemUsageMicros / 1e6,\n\t\t\t\t\texemplarLabels,\n\t\t\t\t});\n\t\t\t\tcpuUsageCounter.inc({\n\t\t\t\t\tlabels,\n\t\t\t\t\tvalue: (userUsageMicros + systemUsageMicros) / 1e6,\n\t\t\t\t\texemplarLabels,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tcpuUserUsageCounter.inc(labels, userUsageMicros / 1e6);\n\t\t\t\tcpuSystemUsageCounter.inc(labels, systemUsageMicros / 1e6);\n\t\t\t\tcpuUsageCounter.inc(\n\t\t\t\t\tlabels,\n\t\t\t\t\t(userUsageMicros + systemUsageMicros) / 1e6,\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t});\n\tconst cpuSystemUsageCounter = new Counter({\n\t\tname: namePrefix + PROCESS_CPU_SYSTEM_SECONDS,\n\t\thelp: 'Total system CPU time spent in seconds.',\n\t\tenableExemplars: exemplars,\n\t\tregisters,\n\t\tlabelNames,\n\t});\n\tconst cpuUsageCounter = new Counter({\n\t\tname: namePrefix + PROCESS_CPU_SECONDS,\n\t\thelp: 'Total user and system CPU time spent in seconds.',\n\t\tenableExemplars: exemplars,\n\t\tregisters,\n\t\tlabelNames,\n\t});\n};\n\nmodule.exports.metricNames = [\n\tPROCESS_CPU_USER_SECONDS,\n\tPROCESS_CPU_SYSTEM_SECONDS,\n\tPROCESS_CPU_SECONDS,\n];\n","'use strict';\n\nconst Gauge = require('../gauge');\nconst startInSeconds = Math.round(Date.now() / 1000 - process.uptime());\n\nconst PROCESS_START_TIME = 'process_start_time_seconds';\n\nmodule.exports = (registry, config = {}) => {\n\tconst namePrefix = config.prefix ? config.prefix : '';\n\tconst labels = config.labels ? config.labels : {};\n\tconst labelNames = Object.keys(labels);\n\n\tnew Gauge({\n\t\tname: namePrefix + PROCESS_START_TIME,\n\t\thelp: 'Start time of the process since unix epoch in seconds.',\n\t\tregisters: registry ? [registry] : undefined,\n\t\tlabelNames,\n\t\taggregator: 'omit',\n\t\tcollect() {\n\t\t\tthis.set(labels, startInSeconds);\n\t\t},\n\t});\n};\n\nmodule.exports.metricNames = [PROCESS_START_TIME];\n","'use strict';\n\nconst Gauge = require('../gauge');\nconst fs = require('fs');\n\nconst values = ['VmSize', 'VmRSS', 'VmData'];\n\nconst PROCESS_RESIDENT_MEMORY = 'process_resident_memory_bytes';\nconst PROCESS_VIRTUAL_MEMORY = 'process_virtual_memory_bytes';\nconst PROCESS_HEAP = 'process_heap_bytes';\n\nfunction structureOutput(input) {\n\treturn input.split('\\n').reduce((acc, string) => {\n\t\tif (!values.some(value => string.startsWith(value))) {\n\t\t\treturn acc;\n\t\t}\n\n\t\tconst split = string.split(':');\n\n\t\t// Get the value\n\t\tlet value = split[1].trim();\n\t\t// Remove trailing ` kb`\n\t\tvalue = value.substr(0, value.length - 3);\n\t\t// Make it into a number in bytes bytes\n\t\tvalue = Number(value) * 1024;\n\n\t\tacc[split[0]] = value;\n\n\t\treturn acc;\n\t}, {});\n}\n\nmodule.exports = (registry, config = {}) => {\n\tconst registers = registry ? [registry] : undefined;\n\tconst namePrefix = config.prefix ? config.prefix : '';\n\tconst labels = config.labels ? config.labels : {};\n\tconst labelNames = Object.keys(labels);\n\n\tconst residentMemGauge = new Gauge({\n\t\tname: namePrefix + PROCESS_RESIDENT_MEMORY,\n\t\thelp: 'Resident memory size in bytes.',\n\t\tregisters,\n\t\tlabelNames,\n\t\t// Use this one metric's `collect` to set all metrics' values.\n\t\tcollect() {\n\t\t\ttry {\n\t\t\t\t// Sync I/O is often problematic, but /proc isn't really I/O, it\n\t\t\t\t// a virtual filesystem that maps directly to in-kernel data\n\t\t\t\t// structures and never blocks.\n\t\t\t\t//\n\t\t\t\t// Node.js/libuv do this already for process.memoryUsage(), see:\n\t\t\t\t// - https://github.com/libuv/libuv/blob/a629688008694ed8022269e66826d4d6ec688b83/src/unix/linux-core.c#L506-L523\n\t\t\t\tconst stat = fs.readFileSync('/proc/self/status', 'utf8');\n\t\t\t\tconst structuredOutput = structureOutput(stat);\n\n\t\t\t\tresidentMemGauge.set(labels, structuredOutput.VmRSS);\n\t\t\t\tvirtualMemGauge.set(labels, structuredOutput.VmSize);\n\t\t\t\theapSizeMemGauge.set(labels, structuredOutput.VmData);\n\t\t\t} catch {\n\t\t\t\t// noop\n\t\t\t}\n\t\t},\n\t});\n\tconst virtualMemGauge = new Gauge({\n\t\tname: namePrefix + PROCESS_VIRTUAL_MEMORY,\n\t\thelp: 'Virtual memory size in bytes.',\n\t\tregisters,\n\t\tlabelNames,\n\t});\n\tconst heapSizeMemGauge = new Gauge({\n\t\tname: namePrefix + PROCESS_HEAP,\n\t\thelp: 'Process heap size in bytes.',\n\t\tregisters,\n\t\tlabelNames,\n\t});\n};\n\nmodule.exports.metricNames = [\n\tPROCESS_RESIDENT_MEMORY,\n\tPROCESS_VIRTUAL_MEMORY,\n\tPROCESS_HEAP,\n];\n","'use strict';\n\n// process.memoryUsage() can throw on some platforms, see #67\nfunction safeMemoryUsage() {\n\ttry {\n\t\treturn process.memoryUsage();\n\t} catch {\n\t\treturn;\n\t}\n}\n\nmodule.exports = safeMemoryUsage;\n","'use strict';\n\nconst Gauge = require('../gauge');\nconst linuxVariant = require('./osMemoryHeapLinux');\nconst safeMemoryUsage = require('./helpers/safeMemoryUsage');\n\nconst PROCESS_RESIDENT_MEMORY = 'process_resident_memory_bytes';\n\nfunction notLinuxVariant(registry, config = {}) {\n\tconst namePrefix = config.prefix ? config.prefix : '';\n\tconst labels = config.labels ? config.labels : {};\n\tconst labelNames = Object.keys(labels);\n\n\tnew Gauge({\n\t\tname: namePrefix + PROCESS_RESIDENT_MEMORY,\n\t\thelp: 'Resident memory size in bytes.',\n\t\tregisters: registry ? [registry] : undefined,\n\t\tlabelNames,\n\t\tcollect() {\n\t\t\tconst memUsage = safeMemoryUsage();\n\n\t\t\t// I don't think the other things returned from `process.memoryUsage()` is relevant to a standard export\n\t\t\tif (memUsage) {\n\t\t\t\tthis.set(labels, memUsage.rss);\n\t\t\t}\n\t\t},\n\t});\n}\n\nmodule.exports = (registry, config) =>\n\tprocess.platform === 'linux'\n\t\t? linuxVariant(registry, config)\n\t\t: notLinuxVariant(registry, config);\n\nmodule.exports.metricNames =\n\tprocess.platform === 'linux'\n\t\t? linuxVariant.metricNames\n\t\t: [PROCESS_RESIDENT_MEMORY];\n","'use strict';\n\nconst Gauge = require('../gauge');\nconst fs = require('fs');\nconst process = require('process');\n\nconst PROCESS_OPEN_FDS = 'process_open_fds';\n\nmodule.exports = (registry, config = {}) => {\n\tif (process.platform !== 'linux') {\n\t\treturn;\n\t}\n\n\tconst namePrefix = config.prefix ? config.prefix : '';\n\tconst labels = config.labels ? config.labels : {};\n\tconst labelNames = Object.keys(labels);\n\n\tnew Gauge({\n\t\tname: namePrefix + PROCESS_OPEN_FDS,\n\t\thelp: 'Number of open file descriptors.',\n\t\tregisters: registry ? [registry] : undefined,\n\t\tlabelNames,\n\t\tcollect() {\n\t\t\ttry {\n\t\t\t\tconst fds = fs.readdirSync('/proc/self/fd');\n\t\t\t\t// Minus 1 to not count the fd that was used by readdirSync(),\n\t\t\t\t// it's now closed.\n\t\t\t\tthis.set(labels, fds.length - 1);\n\t\t\t} catch {\n\t\t\t\t// noop\n\t\t\t}\n\t\t},\n\t});\n};\n\nmodule.exports.metricNames = [PROCESS_OPEN_FDS];\n","'use strict';\n\nconst Gauge = require('../gauge');\nconst fs = require('fs');\n\nconst PROCESS_MAX_FDS = 'process_max_fds';\n\nlet maxFds;\n\nmodule.exports = (registry, config = {}) => {\n\tif (maxFds === undefined) {\n\t\t// This will fail if a linux-like procfs is not available.\n\t\ttry {\n\t\t\tconst limits = fs.readFileSync('/proc/self/limits', 'utf8');\n\t\t\tconst lines = limits.split('\\n');\n\t\t\tfor (const line of lines) {\n\t\t\t\tif (line.startsWith('Max open files')) {\n\t\t\t\t\tconst parts = line.split(/  +/);\n\t\t\t\t\tmaxFds = Number(parts[1]);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch {\n\t\t\treturn;\n\t\t}\n\t}\n\n\tif (maxFds === undefined) return;\n\n\tconst namePrefix = config.prefix ? config.prefix : '';\n\tconst labels = config.labels ? config.labels : {};\n\tconst labelNames = Object.keys(labels);\n\n\tnew Gauge({\n\t\tname: namePrefix + PROCESS_MAX_FDS,\n\t\thelp: 'Maximum number of open file descriptors.',\n\t\tregisters: registry ? [registry] : undefined,\n\t\tlabelNames,\n\t\tcollect() {\n\t\t\tif (maxFds !== undefined) this.set(labels, maxFds);\n\t\t},\n\t});\n};\n\nmodule.exports.metricNames = [PROCESS_MAX_FDS];\n","'use strict';\n\nconst Gauge = require('../gauge');\n\n// Check if perf_hooks module is available\nlet perf_hooks;\ntry {\n\tperf_hooks = require('perf_hooks');\n} catch {\n\t// node version is too old\n}\n\n// Reported always.\nconst NODEJS_EVENTLOOP_LAG = 'nodejs_eventloop_lag_seconds';\n\n// Reported only when perf_hooks is available.\nconst NODEJS_EVENTLOOP_LAG_MIN = 'nodejs_eventloop_lag_min_seconds';\nconst NODEJS_EVENTLOOP_LAG_MAX = 'nodejs_eventloop_lag_max_seconds';\nconst NODEJS_EVENTLOOP_LAG_MEAN = 'nodejs_eventloop_lag_mean_seconds';\nconst NODEJS_EVENTLOOP_LAG_STDDEV = 'nodejs_eventloop_lag_stddev_seconds';\nconst NODEJS_EVENTLOOP_LAG_P50 = 'nodejs_eventloop_lag_p50_seconds';\nconst NODEJS_EVENTLOOP_LAG_P90 = 'nodejs_eventloop_lag_p90_seconds';\nconst NODEJS_EVENTLOOP_LAG_P99 = 'nodejs_eventloop_lag_p99_seconds';\n\nfunction reportEventloopLag(start, gauge, labels) {\n\tconst delta = process.hrtime(start);\n\tconst nanosec = delta[0] * 1e9 + delta[1];\n\tconst seconds = nanosec / 1e9;\n\n\tgauge.set(labels, seconds);\n}\n\nmodule.exports = (registry, config = {}) => {\n\tconst namePrefix = config.prefix ? config.prefix : '';\n\tconst labels = config.labels ? config.labels : {};\n\tconst labelNames = Object.keys(labels);\n\tconst registers = registry ? [registry] : undefined;\n\n\tlet collect = () => {\n\t\tconst start = process.hrtime();\n\t\tsetImmediate(reportEventloopLag, start, lag, labels);\n\t};\n\n\tif (perf_hooks && perf_hooks.monitorEventLoopDelay) {\n\t\ttry {\n\t\t\tconst histogram = perf_hooks.monitorEventLoopDelay({\n\t\t\t\tresolution: config.eventLoopMonitoringPrecision,\n\t\t\t});\n\t\t\thistogram.enable();\n\n\t\t\tcollect = () => {\n\t\t\t\tconst start = process.hrtime();\n\t\t\t\tsetImmediate(reportEventloopLag, start, lag, labels);\n\n\t\t\t\tlagMin.set(labels, histogram.min / 1e9);\n\t\t\t\tlagMax.set(labels, histogram.max / 1e9);\n\t\t\t\tlagMean.set(labels, histogram.mean / 1e9);\n\t\t\t\tlagStddev.set(labels, histogram.stddev / 1e9);\n\t\t\t\tlagP50.set(labels, histogram.percentile(50) / 1e9);\n\t\t\t\tlagP90.set(labels, histogram.percentile(90) / 1e9);\n\t\t\t\tlagP99.set(labels, histogram.percentile(99) / 1e9);\n\n\t\t\t\thistogram.reset();\n\t\t\t};\n\t\t} catch (e) {\n\t\t\tif (e.code === 'ERR_NOT_IMPLEMENTED') {\n\t\t\t\treturn; // Bun\n\t\t\t}\n\n\t\t\tthrow e;\n\t\t}\n\t}\n\n\tconst lag = new Gauge({\n\t\tname: namePrefix + NODEJS_EVENTLOOP_LAG,\n\t\thelp: 'Lag of event loop in seconds.',\n\t\tregisters,\n\t\tlabelNames,\n\t\taggregator: 'average',\n\t\t// Use this one metric's `collect` to set all metrics' values.\n\t\tcollect,\n\t});\n\tconst lagMin = new Gauge({\n\t\tname: namePrefix + NODEJS_EVENTLOOP_LAG_MIN,\n\t\thelp: 'The minimum recorded event loop delay.',\n\t\tregisters,\n\t\tlabelNames,\n\t\taggregator: 'min',\n\t});\n\tconst lagMax = new Gauge({\n\t\tname: namePrefix + NODEJS_EVENTLOOP_LAG_MAX,\n\t\thelp: 'The maximum recorded event loop delay.',\n\t\tregisters,\n\t\tlabelNames,\n\t\taggregator: 'max',\n\t});\n\tconst lagMean = new Gauge({\n\t\tname: namePrefix + NODEJS_EVENTLOOP_LAG_MEAN,\n\t\thelp: 'The mean of the recorded event loop delays.',\n\t\tregisters,\n\t\tlabelNames,\n\t\taggregator: 'average',\n\t});\n\tconst lagStddev = new Gauge({\n\t\tname: namePrefix + NODEJS_EVENTLOOP_LAG_STDDEV,\n\t\thelp: 'The standard deviation of the recorded event loop delays.',\n\t\tregisters,\n\t\tlabelNames,\n\t\taggregator: 'average',\n\t});\n\tconst lagP50 = new Gauge({\n\t\tname: namePrefix + NODEJS_EVENTLOOP_LAG_P50,\n\t\thelp: 'The 50th percentile of the recorded event loop delays.',\n\t\tregisters,\n\t\tlabelNames,\n\t\taggregator: 'average',\n\t});\n\tconst lagP90 = new Gauge({\n\t\tname: namePrefix + NODEJS_EVENTLOOP_LAG_P90,\n\t\thelp: 'The 90th percentile of the recorded event loop delays.',\n\t\tregisters,\n\t\tlabelNames,\n\t\taggregator: 'average',\n\t});\n\tconst lagP99 = new Gauge({\n\t\tname: namePrefix + NODEJS_EVENTLOOP_LAG_P99,\n\t\thelp: 'The 99th percentile of the recorded event loop delays.',\n\t\tregisters,\n\t\tlabelNames,\n\t\taggregator: 'average',\n\t});\n};\n\nmodule.exports.metricNames = [\n\tNODEJS_EVENTLOOP_LAG,\n\tNODEJS_EVENTLOOP_LAG_MIN,\n\tNODEJS_EVENTLOOP_LAG_MAX,\n\tNODEJS_EVENTLOOP_LAG_MEAN,\n\tNODEJS_EVENTLOOP_LAG_STDDEV,\n\tNODEJS_EVENTLOOP_LAG_P50,\n\tNODEJS_EVENTLOOP_LAG_P90,\n\tNODEJS_EVENTLOOP_LAG_P99,\n];\n","'use strict';\n\nfunction aggregateByObjectName(list) {\n\tconst data = {};\n\n\tfor (let i = 0; i < list.length; i++) {\n\t\tconst listElement = list[i];\n\n\t\tif (!listElement || typeof listElement.constructor === 'undefined') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (Object.hasOwnProperty.call(data, listElement.constructor.name)) {\n\t\t\tdata[listElement.constructor.name] += 1;\n\t\t} else {\n\t\t\tdata[listElement.constructor.name] = 1;\n\t\t}\n\t}\n\treturn data;\n}\n\nfunction updateMetrics(gauge, data, labels) {\n\tgauge.reset();\n\tfor (const key in data) {\n\t\tgauge.set(Object.assign({ type: key }, labels || {}), data[key]);\n\t}\n}\n\nmodule.exports = {\n\taggregateByObjectName,\n\tupdateMetrics,\n};\n","'use strict';\n\nconst { aggregateByObjectName } = require('./helpers/processMetricsHelpers');\nconst { updateMetrics } = require('./helpers/processMetricsHelpers');\nconst Gauge = require('../gauge');\n\nconst NODEJS_ACTIVE_HANDLES = 'nodejs_active_handles';\nconst NODEJS_ACTIVE_HANDLES_TOTAL = 'nodejs_active_handles_total';\n\nmodule.exports = (registry, config = {}) => {\n\t// Don't do anything if the function is removed in later nodes (exists in node@6-12...)\n\tif (typeof process._getActiveHandles !== 'function') {\n\t\treturn;\n\t}\n\n\tconst registers = registry ? [registry] : undefined;\n\tconst namePrefix = config.prefix ? config.prefix : '';\n\tconst labels = config.labels ? config.labels : {};\n\tconst labelNames = Object.keys(labels);\n\n\tnew Gauge({\n\t\tname: namePrefix + NODEJS_ACTIVE_HANDLES,\n\t\thelp: 'Number of active libuv handles grouped by handle type. Every handle type is C++ class name.',\n\t\tlabelNames: ['type', ...labelNames],\n\t\tregisters,\n\t\tcollect() {\n\t\t\tconst handles = process._getActiveHandles();\n\t\t\tupdateMetrics(this, aggregateByObjectName(handles), labels);\n\t\t},\n\t});\n\tnew Gauge({\n\t\tname: namePrefix + NODEJS_ACTIVE_HANDLES_TOTAL,\n\t\thelp: 'Total number of active handles.',\n\t\tregisters,\n\t\tlabelNames,\n\t\tcollect() {\n\t\t\tconst handles = process._getActiveHandles();\n\t\t\tthis.set(labels, handles.length);\n\t\t},\n\t});\n};\n\nmodule.exports.metricNames = [\n\tNODEJS_ACTIVE_HANDLES,\n\tNODEJS_ACTIVE_HANDLES_TOTAL,\n];\n","'use strict';\nconst Gauge = require('../gauge');\nconst { aggregateByObjectName } = require('./helpers/processMetricsHelpers');\nconst { updateMetrics } = require('./helpers/processMetricsHelpers');\n\nconst NODEJS_ACTIVE_REQUESTS = 'nodejs_active_requests';\nconst NODEJS_ACTIVE_REQUESTS_TOTAL = 'nodejs_active_requests_total';\n\nmodule.exports = (registry, config = {}) => {\n\t// Don't do anything if the function is removed in later nodes (exists in node@6)\n\tif (typeof process._getActiveRequests !== 'function') {\n\t\treturn;\n\t}\n\n\tconst namePrefix = config.prefix ? config.prefix : '';\n\tconst labels = config.labels ? config.labels : {};\n\tconst labelNames = Object.keys(labels);\n\n\tnew Gauge({\n\t\tname: namePrefix + NODEJS_ACTIVE_REQUESTS,\n\t\thelp: 'Number of active libuv requests grouped by request type. Every request type is C++ class name.',\n\t\tlabelNames: ['type', ...labelNames],\n\t\tregisters: registry ? [registry] : undefined,\n\t\tcollect() {\n\t\t\tconst requests = process._getActiveRequests();\n\t\t\tupdateMetrics(this, aggregateByObjectName(requests), labels);\n\t\t},\n\t});\n\n\tnew Gauge({\n\t\tname: namePrefix + NODEJS_ACTIVE_REQUESTS_TOTAL,\n\t\thelp: 'Total number of active requests.',\n\t\tregisters: registry ? [registry] : undefined,\n\t\tlabelNames,\n\t\tcollect() {\n\t\t\tconst requests = process._getActiveRequests();\n\t\t\tthis.set(labels, requests.length);\n\t\t},\n\t});\n};\n\nmodule.exports.metricNames = [\n\tNODEJS_ACTIVE_REQUESTS,\n\tNODEJS_ACTIVE_REQUESTS_TOTAL,\n];\n","'use strict';\nconst Gauge = require('../gauge');\nconst { updateMetrics } = require('./helpers/processMetricsHelpers');\n\nconst NODEJS_ACTIVE_RESOURCES = 'nodejs_active_resources';\nconst NODEJS_ACTIVE_RESOURCES_TOTAL = 'nodejs_active_resources_total';\n\nmodule.exports = (registry, config = {}) => {\n\t// Don't do anything if the function does not exist in previous nodes (exists in node@17.3.0)\n\tif (typeof process.getActiveResourcesInfo !== 'function') {\n\t\treturn;\n\t}\n\n\tconst namePrefix = config.prefix ? config.prefix : '';\n\tconst labels = config.labels ? config.labels : {};\n\tconst labelNames = Object.keys(labels);\n\n\tnew Gauge({\n\t\tname: namePrefix + NODEJS_ACTIVE_RESOURCES,\n\t\thelp: 'Number of active resources that are currently keeping the event loop alive, grouped by async resource type.',\n\t\tlabelNames: ['type', ...labelNames],\n\t\tregisters: registry ? [registry] : undefined,\n\t\tcollect() {\n\t\t\tconst resources = process.getActiveResourcesInfo();\n\n\t\t\tconst data = {};\n\n\t\t\tfor (let i = 0; i < resources.length; i++) {\n\t\t\t\tconst resource = resources[i];\n\n\t\t\t\tif (Object.hasOwn(data, resource)) {\n\t\t\t\t\tdata[resource] += 1;\n\t\t\t\t} else {\n\t\t\t\t\tdata[resource] = 1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tupdateMetrics(this, data, labels);\n\t\t},\n\t});\n\n\tnew Gauge({\n\t\tname: namePrefix + NODEJS_ACTIVE_RESOURCES_TOTAL,\n\t\thelp: 'Total number of active resources.',\n\t\tregisters: registry ? [registry] : undefined,\n\t\tlabelNames,\n\t\tcollect() {\n\t\t\tconst resources = process.getActiveResourcesInfo();\n\t\t\tthis.set(labels, resources.length);\n\t\t},\n\t});\n};\n\nmodule.exports.metricNames = [\n\tNODEJS_ACTIVE_RESOURCES,\n\tNODEJS_ACTIVE_RESOURCES_TOTAL,\n];\n","'use strict';\n\nconst Gauge = require('../gauge');\nconst safeMemoryUsage = require('./helpers/safeMemoryUsage');\n\nconst NODEJS_HEAP_SIZE_TOTAL = 'nodejs_heap_size_total_bytes';\nconst NODEJS_HEAP_SIZE_USED = 'nodejs_heap_size_used_bytes';\nconst NODEJS_EXTERNAL_MEMORY = 'nodejs_external_memory_bytes';\n\nmodule.exports = (registry, config = {}) => {\n\tif (typeof process.memoryUsage !== 'function') {\n\t\treturn;\n\t}\n\tconst labels = config.labels ? config.labels : {};\n\tconst labelNames = Object.keys(labels);\n\n\tconst registers = registry ? [registry] : undefined;\n\tconst namePrefix = config.prefix ? config.prefix : '';\n\tconst collect = () => {\n\t\tconst memUsage = safeMemoryUsage();\n\t\tif (memUsage) {\n\t\t\theapSizeTotal.set(labels, memUsage.heapTotal);\n\t\t\theapSizeUsed.set(labels, memUsage.heapUsed);\n\t\t\tif (memUsage.external !== undefined) {\n\t\t\t\texternalMemUsed.set(labels, memUsage.external);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst heapSizeTotal = new Gauge({\n\t\tname: namePrefix + NODEJS_HEAP_SIZE_TOTAL,\n\t\thelp: 'Process heap size from Node.js in bytes.',\n\t\tregisters,\n\t\tlabelNames,\n\t\t// Use this one metric's `collect` to set all metrics' values.\n\t\tcollect,\n\t});\n\tconst heapSizeUsed = new Gauge({\n\t\tname: namePrefix + NODEJS_HEAP_SIZE_USED,\n\t\thelp: 'Process heap size used from Node.js in bytes.',\n\t\tregisters,\n\t\tlabelNames,\n\t});\n\tconst externalMemUsed = new Gauge({\n\t\tname: namePrefix + NODEJS_EXTERNAL_MEMORY,\n\t\thelp: 'Node.js external memory size in bytes.',\n\t\tregisters,\n\t\tlabelNames,\n\t});\n};\n\nmodule.exports.metricNames = [\n\tNODEJS_HEAP_SIZE_TOTAL,\n\tNODEJS_HEAP_SIZE_USED,\n\tNODEJS_EXTERNAL_MEMORY,\n];\n","'use strict';\n\nconst Gauge = require('../gauge');\nconst v8 = require('v8');\n\nconst METRICS = ['total', 'used', 'available'];\nconst NODEJS_HEAP_SIZE = {};\n\nMETRICS.forEach(metricType => {\n\tNODEJS_HEAP_SIZE[metricType] = `nodejs_heap_space_size_${metricType}_bytes`;\n});\n\nmodule.exports = (registry, config = {}) => {\n\ttry {\n\t\tv8.getHeapSpaceStatistics();\n\t} catch (e) {\n\t\tif (e.code === 'ERR_NOT_IMPLEMENTED') {\n\t\t\treturn; // Bun\n\t\t}\n\t\tthrow e;\n\t}\n\tconst registers = registry ? [registry] : undefined;\n\tconst namePrefix = config.prefix ? config.prefix : '';\n\n\tconst labels = config.labels ? config.labels : {};\n\tconst labelNames = ['space', ...Object.keys(labels)];\n\n\tconst gauges = {};\n\n\tMETRICS.forEach(metricType => {\n\t\tgauges[metricType] = new Gauge({\n\t\t\tname: namePrefix + NODEJS_HEAP_SIZE[metricType],\n\t\t\thelp: `Process heap space size ${metricType} from Node.js in bytes.`,\n\t\t\tlabelNames,\n\t\t\tregisters,\n\t\t});\n\t});\n\n\t// Use this one metric's `collect` to set all metrics' values.\n\tgauges.total.collect = () => {\n\t\tfor (const space of v8.getHeapSpaceStatistics()) {\n\t\t\tconst spaceName = space.space_name.substr(\n\t\t\t\t0,\n\t\t\t\tspace.space_name.indexOf('_space'),\n\t\t\t);\n\n\t\t\tgauges.total.set({ space: spaceName, ...labels }, space.space_size);\n\t\t\tgauges.used.set({ space: spaceName, ...labels }, space.space_used_size);\n\t\t\tgauges.available.set(\n\t\t\t\t{ space: spaceName, ...labels },\n\t\t\t\tspace.space_available_size,\n\t\t\t);\n\t\t}\n\t};\n};\n\nmodule.exports.metricNames = Object.values(NODEJS_HEAP_SIZE);\n","'use strict';\n\nconst Gauge = require('../gauge');\nconst version = process.version;\nconst versionSegments = version.slice(1).split('.').map(Number);\n\nconst NODE_VERSION_INFO = 'nodejs_version_info';\n\nmodule.exports = (registry, config = {}) => {\n\tconst namePrefix = config.prefix ? config.prefix : '';\n\tconst labels = config.labels ? config.labels : {};\n\tconst labelNames = Object.keys(labels);\n\n\tnew Gauge({\n\t\tname: namePrefix + NODE_VERSION_INFO,\n\t\thelp: 'Node.js version info.',\n\t\tlabelNames: ['version', 'major', 'minor', 'patch', ...labelNames],\n\t\tregisters: registry ? [registry] : undefined,\n\t\taggregator: 'first',\n\t\tcollect() {\n\t\t\t// Needs to be in collect() so value is present even if reg is reset\n\t\t\tthis.labels(\n\t\t\t\tversion,\n\t\t\t\tversionSegments[0],\n\t\t\t\tversionSegments[1],\n\t\t\t\tversionSegments[2],\n\t\t\t\t...Object.values(labels),\n\t\t\t).set(1);\n\t\t},\n\t});\n};\n\nmodule.exports.metricNames = [NODE_VERSION_INFO];\n","'use strict';\nconst Histogram = require('../histogram');\n\nlet perf_hooks;\n\ntry {\n\t// eslint-disable-next-line\n\tperf_hooks = require('perf_hooks');\n} catch {\n\t// node version is too old\n}\n\nconst NODEJS_GC_DURATION_SECONDS = 'nodejs_gc_duration_seconds';\nconst DEFAULT_GC_DURATION_BUCKETS = [0.001, 0.01, 0.1, 1, 2, 5];\n\nconst kinds = [];\n\nif (perf_hooks && perf_hooks.constants) {\n\tkinds[perf_hooks.constants.NODE_PERFORMANCE_GC_MAJOR] = 'major';\n\tkinds[perf_hooks.constants.NODE_PERFORMANCE_GC_MINOR] = 'minor';\n\tkinds[perf_hooks.constants.NODE_PERFORMANCE_GC_INCREMENTAL] = 'incremental';\n\tkinds[perf_hooks.constants.NODE_PERFORMANCE_GC_WEAKCB] = 'weakcb';\n}\n\nmodule.exports = (registry, config = {}) => {\n\tif (!perf_hooks) {\n\t\treturn;\n\t}\n\n\tconst namePrefix = config.prefix ? config.prefix : '';\n\tconst labels = config.labels ? config.labels : {};\n\tconst labelNames = Object.keys(labels);\n\tconst buckets = config.gcDurationBuckets\n\t\t? config.gcDurationBuckets\n\t\t: DEFAULT_GC_DURATION_BUCKETS;\n\tconst gcHistogram = new Histogram({\n\t\tname: namePrefix + NODEJS_GC_DURATION_SECONDS,\n\t\thelp: 'Garbage collection duration by kind, one of major, minor, incremental or weakcb.',\n\t\tlabelNames: ['kind', ...labelNames],\n\t\tenableExemplars: false,\n\t\tbuckets,\n\t\tregisters: registry ? [registry] : undefined,\n\t});\n\n\tconst obs = new perf_hooks.PerformanceObserver(list => {\n\t\tconst entry = list.getEntries()[0];\n\t\t// Node < 16 uses entry.kind\n\t\t// Node >= 16 uses entry.detail.kind\n\t\t// See: https://nodejs.org/docs/latest-v16.x/api/deprecations.html#deprecations_dep0152_extension_performanceentry_properties\n\t\tconst kind = entry.detail ? kinds[entry.detail.kind] : kinds[entry.kind];\n\t\t// Convert duration from milliseconds to seconds\n\t\tgcHistogram.observe(Object.assign({ kind }, labels), entry.duration / 1000);\n\t});\n\n\tobs.observe({ entryTypes: ['gc'] });\n};\n\nmodule.exports.metricNames = [NODEJS_GC_DURATION_SECONDS];\n","'use strict';\n\nconst { isObject } = require('./util');\n\n// Default metrics.\nconst processCpuTotal = require('./metrics/processCpuTotal');\nconst processStartTime = require('./metrics/processStartTime');\nconst osMemoryHeap = require('./metrics/osMemoryHeap');\nconst processOpenFileDescriptors = require('./metrics/processOpenFileDescriptors');\nconst processMaxFileDescriptors = require('./metrics/processMaxFileDescriptors');\nconst eventLoopLag = require('./metrics/eventLoopLag');\nconst processHandles = require('./metrics/processHandles');\nconst processRequests = require('./metrics/processRequests');\nconst processResources = require('./metrics/processResources');\nconst heapSizeAndUsed = require('./metrics/heapSizeAndUsed');\nconst heapSpacesSizeAndUsed = require('./metrics/heapSpacesSizeAndUsed');\nconst version = require('./metrics/version');\nconst gc = require('./metrics/gc');\n\nconst metrics = {\n\tprocessCpuTotal,\n\tprocessStartTime,\n\tosMemoryHeap,\n\tprocessOpenFileDescriptors,\n\tprocessMaxFileDescriptors,\n\teventLoopLag,\n\t...(typeof process.getActiveResourcesInfo === 'function'\n\t\t? { processResources }\n\t\t: {}),\n\tprocessHandles,\n\tprocessRequests,\n\theapSizeAndUsed,\n\theapSpacesSizeAndUsed,\n\tversion,\n\tgc,\n};\nconst metricsList = Object.keys(metrics);\n\nmodule.exports = function collectDefaultMetrics(config) {\n\tif (config !== null && config !== undefined && !isObject(config)) {\n\t\tthrow new TypeError('config must be null, undefined, or an object');\n\t}\n\n\tconfig = { eventLoopMonitoringPrecision: 10, ...config };\n\n\tfor (const metric of Object.values(metrics)) {\n\t\tmetric(config.register, config);\n\t}\n};\n\nmodule.exports.metricsList = metricsList;\n","'use strict';\n\nconst { Grouper, hashObject } = require('./util');\n\n/**\n * Returns a new function that applies the `aggregatorFn` to the values.\n * @param {Function} aggregatorFn function to apply to values.\n * @return {Function} aggregator function\n */\nfunction AggregatorFactory(aggregatorFn) {\n\treturn metrics => {\n\t\tif (metrics.length === 0) return;\n\t\tconst result = {\n\t\t\thelp: metrics[0].help,\n\t\t\tname: metrics[0].name,\n\t\t\ttype: metrics[0].type,\n\t\t\tvalues: [],\n\t\t\taggregator: metrics[0].aggregator,\n\t\t};\n\t\t// Gather metrics by metricName and labels.\n\t\tconst byLabels = new Grouper();\n\t\tmetrics.forEach(metric => {\n\t\t\tmetric.values.forEach(value => {\n\t\t\t\tconst key = hashObject(value.labels);\n\t\t\t\tbyLabels.add(`${value.metricName}_${key}`, value);\n\t\t\t});\n\t\t});\n\t\t// Apply aggregator function to gathered metrics.\n\t\tbyLabels.forEach(values => {\n\t\t\tif (values.length === 0) return;\n\t\t\tconst valObj = {\n\t\t\t\tvalue: aggregatorFn(values),\n\t\t\t\tlabels: values[0].labels,\n\t\t\t};\n\t\t\tif (values[0].metricName) {\n\t\t\t\tvalObj.metricName = values[0].metricName;\n\t\t\t}\n\t\t\t// NB: Timestamps are omitted.\n\t\t\tresult.values.push(valObj);\n\t\t});\n\t\treturn result;\n\t};\n}\n// Export for users to define their own aggregation methods.\nexports.AggregatorFactory = AggregatorFactory;\n\n/**\n * Functions that can be used to aggregate metrics from multiple registries.\n */\nexports.aggregators = {\n\t/**\n\t * @return The sum of values.\n\t */\n\tsum: AggregatorFactory(v => v.reduce((p, c) => p + c.value, 0)),\n\t/**\n\t * @return The first value.\n\t */\n\tfirst: AggregatorFactory(v => v[0].value),\n\t/**\n\t * @return {undefined} Undefined; omits the metric.\n\t */\n\tomit: () => {},\n\t/**\n\t * @return The arithmetic mean of the values.\n\t */\n\taverage: AggregatorFactory(\n\t\tv => v.reduce((p, c) => p + c.value, 0) / v.length,\n\t),\n\t/**\n\t * @return The minimum of the values.\n\t */\n\tmin: AggregatorFactory(v =>\n\t\tv.reduce((p, c) => Math.min(p, c.value), Infinity),\n\t),\n\t/**\n\t * @return The maximum of the values.\n\t */\n\tmax: AggregatorFactory(v =>\n\t\tv.reduce((p, c) => Math.max(p, c.value), -Infinity),\n\t),\n};\n","'use strict';\n\n/**\n * Extends the Registry class with a `clusterMetrics` method that returns\n * aggregated metrics for all workers.\n *\n * In cluster workers, listens for and responds to requests for metrics by the\n * cluster master.\n */\n\nconst Registry = require('./registry');\nconst { Grouper } = require('./util');\nconst { aggregators } = require('./metricAggregators');\n// We need to lazy-load the 'cluster' module as some application servers -\n// namely Passenger - crash when it is imported.\nlet cluster = () => {\n\tconst data = require('cluster');\n\tcluster = () => data;\n\treturn data;\n};\n\nconst GET_METRICS_REQ = 'prom-client:getMetricsReq';\nconst GET_METRICS_RES = 'prom-client:getMetricsRes';\n\nlet registries = [Registry.globalRegistry];\nlet requestCtr = 0; // Concurrency control\nlet listenersAdded = false;\nconst requests = new Map(); // Pending requests for workers' local metrics.\n\nclass AggregatorRegistry extends Registry {\n\tconstructor(regContentType = Registry.PROMETHEUS_CONTENT_TYPE) {\n\t\tsuper(regContentType);\n\t\taddListeners();\n\t}\n\n\t/**\n\t * Gets aggregated metrics for all workers. The optional callback and\n\t * returned Promise resolve with the same value; either may be used.\n\t * @return {Promise<string>} Promise that resolves with the aggregated\n\t *   metrics.\n\t */\n\tclusterMetrics() {\n\t\tconst requestId = requestCtr++;\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet settled = false;\n\t\t\tfunction done(err, result) {\n\t\t\t\tif (settled) return;\n\t\t\t\tsettled = true;\n\t\t\t\tif (err) reject(err);\n\t\t\t\telse resolve(result);\n\t\t\t}\n\n\t\t\tconst request = {\n\t\t\t\tresponses: [],\n\t\t\t\tpending: 0,\n\t\t\t\tdone,\n\t\t\t\terrorTimeout: setTimeout(() => {\n\t\t\t\t\tconst err = new Error('Operation timed out.');\n\t\t\t\t\trequest.done(err);\n\t\t\t\t}, 5000),\n\t\t\t};\n\t\t\trequests.set(requestId, request);\n\n\t\t\tconst message = {\n\t\t\t\ttype: GET_METRICS_REQ,\n\t\t\t\trequestId,\n\t\t\t};\n\n\t\t\tfor (const id in cluster().workers) {\n\t\t\t\t// If the worker exits abruptly, it may still be in the workers\n\t\t\t\t// list but not able to communicate.\n\t\t\t\tif (cluster().workers[id].isConnected()) {\n\t\t\t\t\tcluster().workers[id].send(message);\n\t\t\t\t\trequest.pending++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (request.pending === 0) {\n\t\t\t\t// No workers were up\n\t\t\t\tclearTimeout(request.errorTimeout);\n\t\t\t\tprocess.nextTick(() => done(null, ''));\n\t\t\t}\n\t\t});\n\t}\n\n\tget contentType() {\n\t\treturn super.contentType;\n\t}\n\n\t/**\n\t * Creates a new Registry instance from an array of metrics that were\n\t * created by `registry.getMetricsAsJSON()`. Metrics are aggregated using\n\t * the method specified by their `aggregator` property, or by summation if\n\t * `aggregator` is undefined.\n\t * @param {Array} metricsArr Array of metrics, each of which created by\n\t *   `registry.getMetricsAsJSON()`.\n\t * @param {string} registryType content type of the new registry. Defaults\n\t * to PROMETHEUS_CONTENT_TYPE.\n\t * @return {Registry} aggregated registry.\n\t */\n\tstatic aggregate(\n\t\tmetricsArr,\n\t\tregistryType = Registry.PROMETHEUS_CONTENT_TYPE,\n\t) {\n\t\tconst aggregatedRegistry = new Registry();\n\t\tconst metricsByName = new Grouper();\n\n\t\taggregatedRegistry.setContentType(registryType);\n\n\t\t// Gather by name\n\t\tmetricsArr.forEach(metrics => {\n\t\t\tmetrics.forEach(metric => {\n\t\t\t\tmetricsByName.add(metric.name, metric);\n\t\t\t});\n\t\t});\n\n\t\t// Aggregate gathered metrics.\n\t\tmetricsByName.forEach(metrics => {\n\t\t\tconst aggregatorName = metrics[0].aggregator;\n\t\t\tconst aggregatorFn = aggregators[aggregatorName];\n\t\t\tif (typeof aggregatorFn !== 'function') {\n\t\t\t\tthrow new Error(`'${aggregatorName}' is not a defined aggregator.`);\n\t\t\t}\n\t\t\tconst aggregatedMetric = aggregatorFn(metrics);\n\t\t\t// NB: The 'omit' aggregator returns undefined.\n\t\t\tif (aggregatedMetric) {\n\t\t\t\tconst aggregatedMetricWrapper = Object.assign(\n\t\t\t\t\t{\n\t\t\t\t\t\tget: () => aggregatedMetric,\n\t\t\t\t\t},\n\t\t\t\t\taggregatedMetric,\n\t\t\t\t);\n\t\t\t\taggregatedRegistry.registerMetric(aggregatedMetricWrapper);\n\t\t\t}\n\t\t});\n\n\t\treturn aggregatedRegistry;\n\t}\n\n\t/**\n\t * Sets the registry or registries to be aggregated. Call from workers to\n\t * use a registry/registries other than the default global registry.\n\t * @param {Array<Registry>|Registry} regs Registry or registries to be\n\t *   aggregated.\n\t * @return {void}\n\t */\n\tstatic setRegistries(regs) {\n\t\tif (!Array.isArray(regs)) regs = [regs];\n\t\tregs.forEach(reg => {\n\t\t\tif (!(reg instanceof Registry)) {\n\t\t\t\tthrow new TypeError(`Expected Registry, got ${typeof reg}`);\n\t\t\t}\n\t\t});\n\t\tregistries = regs;\n\t}\n}\n\n/**\n * Adds event listeners for cluster aggregation. Idempotent (safe to call more\n * than once).\n * @return {void}\n */\nfunction addListeners() {\n\tif (listenersAdded) return;\n\tlistenersAdded = true;\n\n\tif (cluster().isMaster) {\n\t\t// Listen for worker responses to requests for local metrics\n\t\tcluster().on('message', (worker, message) => {\n\t\t\tif (message.type === GET_METRICS_RES) {\n\t\t\t\tconst request = requests.get(message.requestId);\n\n\t\t\t\tif (message.error) {\n\t\t\t\t\trequest.done(new Error(message.error));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tmessage.metrics.forEach(registry => request.responses.push(registry));\n\t\t\t\trequest.pending--;\n\n\t\t\t\tif (request.pending === 0) {\n\t\t\t\t\t// finalize\n\t\t\t\t\trequests.delete(message.requestId);\n\t\t\t\t\tclearTimeout(request.errorTimeout);\n\n\t\t\t\t\tconst registry = AggregatorRegistry.aggregate(request.responses);\n\t\t\t\t\tconst promString = registry.metrics();\n\t\t\t\t\trequest.done(null, promString);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tif (cluster().isWorker) {\n\t\t// Respond to master's requests for worker's local metrics.\n\t\tprocess.on('message', message => {\n\t\t\tif (message.type === GET_METRICS_REQ) {\n\t\t\t\tPromise.all(registries.map(r => r.getMetricsAsJSON()))\n\t\t\t\t\t.then(metrics => {\n\t\t\t\t\t\tprocess.send({\n\t\t\t\t\t\t\ttype: GET_METRICS_RES,\n\t\t\t\t\t\t\trequestId: message.requestId,\n\t\t\t\t\t\t\tmetrics,\n\t\t\t\t\t\t});\n\t\t\t\t\t})\n\t\t\t\t\t.catch(error => {\n\t\t\t\t\t\tprocess.send({\n\t\t\t\t\t\t\ttype: GET_METRICS_RES,\n\t\t\t\t\t\t\trequestId: message.requestId,\n\t\t\t\t\t\t\terror: error.message,\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n}\n\nmodule.exports = AggregatorRegistry;\n","/**\n * Prometheus client\n * @module Prometheus client\n */\n\n'use strict';\n\nexports.register = require('./lib/registry').globalRegistry;\nexports.Registry = require('./lib/registry');\nObject.defineProperty(exports, 'contentType', {\n\tconfigurable: false,\n\tenumerable: true,\n\tget() {\n\t\treturn exports.register.contentType;\n\t},\n\tset(value) {\n\t\texports.register.setContentType(value);\n\t},\n});\nexports.prometheusContentType = exports.Registry.PROMETHEUS_CONTENT_TYPE;\nexports.openMetricsContentType = exports.Registry.OPENMETRICS_CONTENT_TYPE;\nexports.validateMetricName = require('./lib/validation').validateMetricName;\n\nexports.Counter = require('./lib/counter');\nexports.Gauge = require('./lib/gauge');\nexports.Histogram = require('./lib/histogram');\nexports.Summary = require('./lib/summary');\nexports.Pushgateway = require('./lib/pushgateway');\n\nexports.linearBuckets = require('./lib/bucketGenerators').linearBuckets;\nexports.exponentialBuckets =\n\trequire('./lib/bucketGenerators').exponentialBuckets;\n\nexports.collectDefaultMetrics = require('./lib/defaultMetrics');\n\nexports.aggregators = require('./lib/metricAggregators').aggregators;\nexports.AggregatorRegistry = require('./lib/cluster');\n","/**\n * Optional adapter for the `prom-client` npm package.\n *\n * If `prom-client` is installed, this creates real Prometheus Counter and\n * Summary objects for native integration with Prometheus scraping.\n * The MetricsCollector uses this when `usePromClient: true` is set.\n *\n * Install: `npm install prom-client`\n *\n * @example\n * ```typescript\n * const metrics = new MetricsCollector({ usePromClient: true });\n * // Metrics are now registered in the default prom-client registry\n * // and will appear in prom-client's `register.metrics()` output.\n * ```\n */\n\n// prom-client types (minimal subset we use)\ninterface PromCounter {\n  inc(labels: Record<string, string>, value?: number): void;\n}\ninterface PromSummary {\n  observe(labels: Record<string, string>, value: number): void;\n}\ninterface PromRegistry {\n  metrics(): Promise<string>;\n  contentType: string;\n}\n\nexport class PrometheusRegistry {\n  private _counters = new Map<string, PromCounter>();\n  private _summaries = new Map<string, PromSummary>();\n  private _registry?: PromRegistry;\n  private _available = false;\n\n  async initialize(prefix: string): Promise<boolean> {\n    try {\n      const promClient = await import(\"prom-client\");\n      this._registry = promClient.register;\n      this.createMetrics(promClient, prefix);\n      this._available = true;\n      return true;\n    } catch {\n      // prom-client not installed — fall back to custom format\n      this._available = false;\n      return false;\n    }\n  }\n\n  get available(): boolean {\n    return this._available;\n  }\n\n  get contentType(): string {\n    return this._registry?.contentType ?? \"text/plain; version=0.0.4; charset=utf-8\";\n  }\n\n  async metrics(): Promise<string> {\n    if (!this._registry) return \"\";\n    return this._registry.metrics();\n  }\n\n  incrementCounter(name: string, labels: Record<string, string>, value = 1): void {\n    this._counters.get(name)?.inc(labels, value);\n  }\n\n  observeSummary(name: string, labels: Record<string, string>, value: number): void {\n    this._summaries.get(name)?.observe(labels, value);\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  private createMetrics(promClient: any, p: string): void {\n    const Counter = promClient.Counter;\n    const Summary = promClient.Summary;\n\n    // Labelled counters\n    const counterDefs: { key: string; name: string; help: string; labels: string[] }[] = [\n      { key: \"poll_total\", name: `${p}_task_poll_total`, help: \"Total task polls\", labels: [\"task_type\"] },\n      { key: \"poll_error_total\", name: `${p}_task_poll_error_total`, help: \"Total task poll errors\", labels: [\"task_type\"] },\n      { key: \"execute_total\", name: `${p}_task_execute_total`, help: \"Total task executions\", labels: [\"task_type\"] },\n      { key: \"execute_error_total\", name: `${p}_task_execute_error_total`, help: \"Total task execution errors\", labels: [\"task_type\"] },\n      { key: \"update_error_total\", name: `${p}_task_update_error_total`, help: \"Total task update failures\", labels: [\"task_type\"] },\n      { key: \"ack_error_total\", name: `${p}_task_ack_error_total`, help: \"Total task ack errors\", labels: [\"task_type\"] },\n      { key: \"queue_full_total\", name: `${p}_task_execution_queue_full_total`, help: \"Task execution queue full\", labels: [\"task_type\"] },\n      { key: \"paused_total\", name: `${p}_task_paused_total`, help: \"Task paused events\", labels: [\"task_type\"] },\n      { key: \"external_payload_total\", name: `${p}_external_payload_used_total`, help: \"External payload used\", labels: [\"payload_type\"] },\n      { key: \"uncaught_total\", name: `${p}_thread_uncaught_exceptions_total`, help: \"Uncaught exceptions\", labels: [] },\n      { key: \"restart_total\", name: `${p}_worker_restart_total`, help: \"Worker restarts\", labels: [] },\n      { key: \"wf_start_error_total\", name: `${p}_workflow_start_error_total`, help: \"Workflow start errors\", labels: [] },\n    ];\n\n    for (const def of counterDefs) {\n      this._counters.set(def.key, new Counter({\n        name: def.name,\n        help: def.help,\n        labelNames: def.labels,\n      }));\n    }\n\n    // Summaries\n    const summaryDefs: { key: string; name: string; help: string; labels: string[] }[] = [\n      { key: \"poll_time\", name: `${p}_task_poll_time`, help: \"Task poll duration (ms)\", labels: [\"task_type\"] },\n      { key: \"execute_time\", name: `${p}_task_execute_time`, help: \"Task execution duration (ms)\", labels: [\"task_type\"] },\n      { key: \"update_time\", name: `${p}_task_update_time`, help: \"Task update duration (ms)\", labels: [\"task_type\"] },\n      { key: \"result_size\", name: `${p}_task_result_size_bytes`, help: \"Task result size (bytes)\", labels: [\"task_type\"] },\n      { key: \"wf_input_size\", name: `${p}_workflow_input_size_bytes`, help: \"Workflow input size (bytes)\", labels: [\"workflow_type\"] },\n      { key: \"api_request\", name: `${p}_http_api_client_request`, help: \"API request duration (ms)\", labels: [\"endpoint\"] },\n    ];\n\n    const quantiles = [0.5, 0.75, 0.9, 0.95, 0.99];\n    for (const def of summaryDefs) {\n      this._summaries.set(def.key, new Summary({\n        name: def.name,\n        help: def.help,\n        labelNames: def.labels,\n        percentiles: quantiles,\n        maxAgeSeconds: 600,\n        ageBuckets: 5,\n      }));\n    }\n  }\n}\n","import { createServer, type Server, type IncomingMessage, type ServerResponse } from \"node:http\";\nimport type { MetricsCollector } from \"./MetricsCollector\";\n\n/**\n * Lightweight HTTP server exposing Prometheus metrics and a health check endpoint.\n *\n * Uses Node.js built-in `http` module — no external dependencies.\n *\n * Endpoints:\n * - `GET /metrics` — Prometheus text exposition format (`text/plain; version=0.0.4`)\n * - `GET /health` — JSON health check (`{\"status\":\"UP\"}`)\n *\n * @example\n * ```typescript\n * const collector = new MetricsCollector();\n * const server = new MetricsServer(collector, 9090);\n * await server.start();\n * // GET http://localhost:9090/metrics\n * // GET http://localhost:9090/health\n * await server.stop();\n * ```\n */\nexport class MetricsServer {\n  private readonly _collector: MetricsCollector;\n  private readonly _port: number;\n  private _server?: Server;\n\n  constructor(collector: MetricsCollector, port: number) {\n    this._collector = collector;\n    this._port = port;\n  }\n\n  /** Start listening on the configured port */\n  async start(): Promise<void> {\n    if (this._server) return;\n\n    this._server = createServer(\n      (req: IncomingMessage, res: ServerResponse) => {\n        if (req.method === \"GET\" && req.url === \"/metrics\") {\n          void this._collector.toPrometheusTextAsync().then((body) => {\n            res.writeHead(200, {\n              \"Content-Type\": this._collector.getContentType(),\n            });\n            res.end(body);\n          });\n          return;\n        } else if (req.method === \"GET\" && req.url === \"/health\") {\n          res.writeHead(200, { \"Content-Type\": \"application/json\" });\n          res.end(JSON.stringify({ status: \"UP\" }));\n        } else {\n          res.writeHead(404);\n          res.end(\"Not Found\");\n        }\n      }\n    );\n\n    const server = this._server;\n    return new Promise<void>((resolve, reject) => {\n      server.on(\"error\", reject);\n      server.listen(this._port, () => resolve());\n    });\n  }\n\n  /** Stop the HTTP server */\n  async stop(): Promise<void> {\n    if (!this._server) return;\n\n    const server = this._server;\n    return new Promise<void>((resolve, reject) => {\n      server.close((err) => {\n        this._server = undefined;\n        if (err) reject(err);\n        else resolve();\n      });\n    });\n  }\n}\n","export const REFRESH_TOKEN_IN_MILLISECONDS = 3600000; // 1 hour\nexport const MAX_HTTP2_CONNECTIONS = 10;\n\n// Token management\nexport const TOKEN_TTL_MS = 2_700_000; // 45 minutes - refresh token before it expires\nexport const MAX_AUTH_FAILURES = 5; // stop logging errors after this many consecutive failures\nexport const MAX_AUTH_BACKOFF_MS = 60_000; // 60s cap on exponential backoff\nexport const MAX_INITIAL_TOKEN_RETRIES = 3; // retry initial token request on transient failures\n\n// Fetch retry\nexport const MAX_TRANSPORT_RETRIES = 3;\nexport const DEFAULT_REQUEST_TIMEOUT_MS = 60_000; // 60 seconds\nexport const DEFAULT_CONNECT_TIMEOUT_MS = 10_000; // 10 seconds (matches Python SDK)\n","import { MAX_HTTP2_CONNECTIONS, DEFAULT_CONNECT_TIMEOUT_MS } from \"../constants\";\n// eslint-disable-next-line\n// @ts-ignore since undici is an optional dependency and could be missing\nimport type {\n  RequestInfo as UndiciRequestInfo,\n  RequestInit as UndiciRequestInit,\n  BodyInit as UndiciBodyInit,\n  HeadersInit as UndiciHeadersInit,\n} from \"undici\";\n\nexport interface UndiciHttp2Options {\n  maxHttpConnections?: number;\n  connectTimeoutMs?: number;\n  tlsCertPath?: string;\n  tlsKeyPath?: string;\n  tlsCaPath?: string;\n  proxyUrl?: string;\n  tlsInsecure?: boolean;\n  disableHttp2?: boolean;\n}\n\nexport const getUndiciHttp2FetchFn = async (\n  options: UndiciHttp2Options = {}\n) => {\n  const {\n    maxHttpConnections = MAX_HTTP2_CONNECTIONS,\n    connectTimeoutMs = DEFAULT_CONNECT_TIMEOUT_MS,\n    tlsCertPath,\n    tlsKeyPath,\n    tlsCaPath,\n    proxyUrl,\n    tlsInsecure,\n    disableHttp2,\n  } = options;\n\n  // eslint-disable-next-line\n  // @ts-ignore since undici is an optional dependency and could be missing\n  const undici = await import(\"undici\");\n  const { fetch: undiciFetch } = undici;\n\n  // Build connect options (TLS + connect timeout)\n  const connectOptions: Record<string, unknown> = {};\n  if (connectTimeoutMs) {\n    connectOptions.timeout = connectTimeoutMs;\n  }\n\n  // mTLS: read cert/key/ca files if provided\n  if (tlsCertPath || tlsKeyPath || tlsCaPath) {\n    const { readFileSync } = await import(\"node:fs\");\n    if (tlsCertPath) connectOptions.cert = readFileSync(tlsCertPath);\n    if (tlsKeyPath) connectOptions.key = readFileSync(tlsKeyPath);\n    if (tlsCaPath) connectOptions.ca = readFileSync(tlsCaPath);\n  }\n\n  // Disable TLS certificate verification (for self-signed certs in dev/staging)\n  if (tlsInsecure) {\n    connectOptions.rejectUnauthorized = false;\n  }\n\n  // Create the appropriate dispatcher (Agent or ProxyAgent)\n  let dispatcher: InstanceType<typeof undici.Agent>;\n  const agentOptions = {\n    allowH2: !disableHttp2,\n    connections: maxHttpConnections,\n    connect: Object.keys(connectOptions).length > 0 ? connectOptions : undefined,\n  };\n\n  if (proxyUrl) {\n    dispatcher = new undici.ProxyAgent({\n      uri: proxyUrl,\n      ...agentOptions,\n    });\n  } else {\n    dispatcher = new undici.Agent(agentOptions);\n  }\n\n  return ((input: UndiciRequestInfo | Request, init?: UndiciRequestInit) => {\n    if (input instanceof Request) {\n      const { url, method, headers, body, signal } = input;\n\n      return undiciFetch(url, {\n        method,\n        headers: headers as UndiciHeadersInit,\n        body: body as UndiciBodyInit,\n        duplex: body ? \"half\" : undefined,\n        signal,\n        ...init,\n        dispatcher,\n      });\n    }\n\n    return undiciFetch(input, { ...init, dispatcher });\n  }) as typeof fetch;\n};\n","import {\n  getUndiciHttp2FetchFn,\n  type UndiciHttp2Options,\n} from \"./getUndiciHttp2FetchFn\";\n\nexport const resolveFetchFn = async (\n  customFetch?: typeof fetch,\n  undiciOptions?: UndiciHttp2Options\n): Promise<typeof fetch> => {\n  if (customFetch) return customFetch;\n  if (process?.release?.name !== \"node\") return fetch;\n\n  try {\n    return await getUndiciHttp2FetchFn(undiciOptions);\n  } catch {\n    return fetch;\n  }\n};\n","import {\n  DEFAULT_CONNECT_TIMEOUT_MS,\n  DEFAULT_REQUEST_TIMEOUT_MS,\n  REFRESH_TOKEN_IN_MILLISECONDS,\n} from \"../constants\";\nimport type { OrkesApiConfig } from \"../../types\";\n\n/**\n * Parse an env var as a number, returning undefined if absent or NaN.\n * Unlike `Number(x) || fallback`, this correctly handles \"0\".\n */\nconst parseEnvNumber = (value: string | undefined): number | undefined => {\n  if (value === undefined || value === \"\") return undefined;\n  const num = Number(value);\n  return Number.isNaN(num) ? undefined : num;\n};\n\nconst parseEnvBoolean = (value: string | undefined): boolean | undefined => {\n  if (value === undefined || value === \"\") return undefined;\n  return value.toLowerCase() === \"true\" || value === \"1\";\n};\n\nexport const resolveOrkesConfig = (config?: Partial<OrkesApiConfig>) => {\n  let serverUrl = process.env.CONDUCTOR_SERVER_URL || config?.serverUrl;\n  if (serverUrl?.endsWith(\"/\")) serverUrl = serverUrl.slice(0, -1);\n  if (serverUrl?.endsWith(\"/api\")) serverUrl = serverUrl.slice(0, -4);\n\n  // Trim to avoid \"Invalid Access Key\" from trailing newlines when pasting into GitHub Secrets or .env\n  const keyId = (process.env.CONDUCTOR_AUTH_KEY || config?.keyId || \"\").trim();\n  const keySecret = (process.env.CONDUCTOR_AUTH_SECRET || config?.keySecret || \"\").trim();\n\n  if (!process.env.CONDUCTOR_AUTH_KEY) {\n    console.warn(\"CONDUCTOR_AUTH_KEY is not set\");\n  }\n\n  if (!process.env.CONDUCTOR_AUTH_SECRET) {\n    console.warn(\"CONDUCTOR_AUTH_SECRET is not set\");\n  }\n\n  return {\n    serverUrl,\n    keyId: keyId || undefined,\n    keySecret: keySecret || undefined,\n    maxHttp2Connections:\n      parseEnvNumber(process.env.CONDUCTOR_MAX_HTTP2_CONNECTIONS) ??\n      config?.maxHttp2Connections,\n    refreshTokenInterval:\n      parseEnvNumber(process.env.CONDUCTOR_REFRESH_TOKEN_INTERVAL) ??\n      config?.refreshTokenInterval ??\n      REFRESH_TOKEN_IN_MILLISECONDS,\n    logger: config?.logger,\n    requestTimeoutMs:\n      parseEnvNumber(process.env.CONDUCTOR_REQUEST_TIMEOUT_MS) ??\n      config?.requestTimeoutMs ??\n      DEFAULT_REQUEST_TIMEOUT_MS,\n    connectTimeoutMs:\n      parseEnvNumber(process.env.CONDUCTOR_CONNECT_TIMEOUT_MS) ??\n      config?.connectTimeoutMs ??\n      DEFAULT_CONNECT_TIMEOUT_MS,\n    tlsCertPath: process.env.CONDUCTOR_TLS_CERT_PATH || config?.tlsCertPath,\n    tlsKeyPath: process.env.CONDUCTOR_TLS_KEY_PATH || config?.tlsKeyPath,\n    tlsCaPath: process.env.CONDUCTOR_TLS_CA_PATH || config?.tlsCaPath,\n    proxyUrl: process.env.CONDUCTOR_PROXY_URL || config?.proxyUrl,\n    tlsInsecure:\n      parseEnvBoolean(process.env.CONDUCTOR_TLS_INSECURE) ??\n      config?.tlsInsecure,\n    disableHttp2:\n      parseEnvBoolean(process.env.CONDUCTOR_DISABLE_HTTP2) ??\n      config?.disableHttp2,\n  };\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type {\n  ArrayStyle,\n  ObjectStyle,\n  SerializerOptions,\n} from './pathSerializer.gen';\n\nexport type QuerySerializer = (query: Record<string, unknown>) => string;\n\nexport type BodySerializer = (body: any) => any;\n\nexport interface QuerySerializerOptions {\n  allowReserved?: boolean;\n  array?: SerializerOptions<ArrayStyle>;\n  object?: SerializerOptions<ObjectStyle>;\n}\n\nconst serializeFormDataPair = (\n  data: FormData,\n  key: string,\n  value: unknown,\n): void => {\n  if (typeof value === 'string' || value instanceof Blob) {\n    data.append(key, value);\n  } else if (value instanceof Date) {\n    data.append(key, value.toISOString());\n  } else {\n    data.append(key, JSON.stringify(value));\n  }\n};\n\nconst serializeUrlSearchParamsPair = (\n  data: URLSearchParams,\n  key: string,\n  value: unknown,\n): void => {\n  if (typeof value === 'string') {\n    data.append(key, value);\n  } else {\n    data.append(key, JSON.stringify(value));\n  }\n};\n\nexport const formDataBodySerializer = {\n  bodySerializer: <T extends Record<string, any> | Array<Record<string, any>>>(\n    body: T,\n  ): FormData => {\n    const data = new FormData();\n\n    Object.entries(body).forEach(([key, value]) => {\n      if (value === undefined || value === null) {\n        return;\n      }\n      if (Array.isArray(value)) {\n        value.forEach((v) => serializeFormDataPair(data, key, v));\n      } else {\n        serializeFormDataPair(data, key, value);\n      }\n    });\n\n    return data;\n  },\n};\n\nexport const jsonBodySerializer = {\n  bodySerializer: <T>(body: T): string =>\n    JSON.stringify(body, (_key, value) =>\n      typeof value === 'bigint' ? value.toString() : value,\n    ),\n};\n\nexport const urlSearchParamsBodySerializer = {\n  bodySerializer: <T extends Record<string, any> | Array<Record<string, any>>>(\n    body: T,\n  ): string => {\n    const data = new URLSearchParams();\n\n    Object.entries(body).forEach(([key, value]) => {\n      if (value === undefined || value === null) {\n        return;\n      }\n      if (Array.isArray(value)) {\n        value.forEach((v) => serializeUrlSearchParamsPair(data, key, v));\n      } else {\n        serializeUrlSearchParamsPair(data, key, value);\n      }\n    });\n\n    return data.toString();\n  },\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { Config } from './types.gen';\n\nexport type ServerSentEventsOptions<TData = unknown> = Omit<\n  RequestInit,\n  'method'\n> &\n  Pick<Config, 'method' | 'responseTransformer' | 'responseValidator'> & {\n    /**\n     * Fetch API implementation. You can use this option to provide a custom\n     * fetch instance.\n     *\n     * @default globalThis.fetch\n     */\n    fetch?: typeof fetch;\n    /**\n     * Implementing clients can call request interceptors inside this hook.\n     */\n    onRequest?: (url: string, init: RequestInit) => Promise<Request>;\n    /**\n     * Callback invoked when a network or parsing error occurs during streaming.\n     *\n     * This option applies only if the endpoint returns a stream of events.\n     *\n     * @param error The error that occurred.\n     */\n    onSseError?: (error: unknown) => void;\n    /**\n     * Callback invoked when an event is streamed from the server.\n     *\n     * This option applies only if the endpoint returns a stream of events.\n     *\n     * @param event Event streamed from the server.\n     * @returns Nothing (void).\n     */\n    onSseEvent?: (event: StreamEvent<TData>) => void;\n    serializedBody?: RequestInit['body'];\n    /**\n     * Default retry delay in milliseconds.\n     *\n     * This option applies only if the endpoint returns a stream of events.\n     *\n     * @default 3000\n     */\n    sseDefaultRetryDelay?: number;\n    /**\n     * Maximum number of retry attempts before giving up.\n     */\n    sseMaxRetryAttempts?: number;\n    /**\n     * Maximum retry delay in milliseconds.\n     *\n     * Applies only when exponential backoff is used.\n     *\n     * This option applies only if the endpoint returns a stream of events.\n     *\n     * @default 30000\n     */\n    sseMaxRetryDelay?: number;\n    /**\n     * Optional sleep function for retry backoff.\n     *\n     * Defaults to using `setTimeout`.\n     */\n    sseSleepFn?: (ms: number) => Promise<void>;\n    url: string;\n  };\n\nexport interface StreamEvent<TData = unknown> {\n  data: TData;\n  event?: string;\n  id?: string;\n  retry?: number;\n}\n\nexport type ServerSentEventsResult<\n  TData = unknown,\n  TReturn = void,\n  TNext = unknown,\n> = {\n  stream: AsyncGenerator<\n    TData extends Record<string, unknown> ? TData[keyof TData] : TData,\n    TReturn,\n    TNext\n  >;\n};\n\nexport const createSseClient = <TData = unknown>({\n  onRequest,\n  onSseError,\n  onSseEvent,\n  responseTransformer,\n  responseValidator,\n  sseDefaultRetryDelay,\n  sseMaxRetryAttempts,\n  sseMaxRetryDelay,\n  sseSleepFn,\n  url,\n  ...options\n}: ServerSentEventsOptions): ServerSentEventsResult<TData> => {\n  let lastEventId: string | undefined;\n\n  const sleep =\n    sseSleepFn ??\n    ((ms: number) => new Promise((resolve) => setTimeout(resolve, ms)));\n\n  const createStream = async function* () {\n    let retryDelay: number = sseDefaultRetryDelay ?? 3000;\n    let attempt = 0;\n    const signal = options.signal ?? new AbortController().signal;\n\n    while (true) {\n      if (signal.aborted) break;\n\n      attempt++;\n\n      const headers =\n        options.headers instanceof Headers\n          ? options.headers\n          : new Headers(options.headers as Record<string, string> | undefined);\n\n      if (lastEventId !== undefined) {\n        headers.set('Last-Event-ID', lastEventId);\n      }\n\n      try {\n        const requestInit: RequestInit = {\n          redirect: 'follow',\n          ...options,\n          body: options.serializedBody,\n          headers,\n          signal,\n        };\n        let request = new Request(url, requestInit);\n        if (onRequest) {\n          request = await onRequest(url, requestInit);\n        }\n        // fetch must be assigned here, otherwise it would throw the error:\n        // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation\n        const _fetch = options.fetch ?? globalThis.fetch;\n        const response = await _fetch(request);\n\n        if (!response.ok)\n          throw new Error(\n            `SSE failed: ${response.status} ${response.statusText}`,\n          );\n\n        if (!response.body) throw new Error('No body in SSE response');\n\n        const reader = response.body\n          .pipeThrough(new TextDecoderStream())\n          .getReader();\n\n        let buffer = '';\n\n        const abortHandler = () => {\n          try {\n            reader.cancel();\n          } catch {\n            // noop\n          }\n        };\n\n        signal.addEventListener('abort', abortHandler);\n\n        try {\n          while (true) {\n            const { done, value } = await reader.read();\n            if (done) break;\n            buffer += value;\n\n            const chunks = buffer.split('\\n\\n');\n            buffer = chunks.pop() ?? '';\n\n            for (const chunk of chunks) {\n              const lines = chunk.split('\\n');\n              const dataLines: Array<string> = [];\n              let eventName: string | undefined;\n\n              for (const line of lines) {\n                if (line.startsWith('data:')) {\n                  dataLines.push(line.replace(/^data:\\s*/, ''));\n                } else if (line.startsWith('event:')) {\n                  eventName = line.replace(/^event:\\s*/, '');\n                } else if (line.startsWith('id:')) {\n                  lastEventId = line.replace(/^id:\\s*/, '');\n                } else if (line.startsWith('retry:')) {\n                  const parsed = Number.parseInt(\n                    line.replace(/^retry:\\s*/, ''),\n                    10,\n                  );\n                  if (!Number.isNaN(parsed)) {\n                    retryDelay = parsed;\n                  }\n                }\n              }\n\n              let data: unknown;\n              let parsedJson = false;\n\n              if (dataLines.length) {\n                const rawData = dataLines.join('\\n');\n                try {\n                  data = JSON.parse(rawData);\n                  parsedJson = true;\n                } catch {\n                  data = rawData;\n                }\n              }\n\n              if (parsedJson) {\n                if (responseValidator) {\n                  await responseValidator(data);\n                }\n\n                if (responseTransformer) {\n                  data = await responseTransformer(data);\n                }\n              }\n\n              onSseEvent?.({\n                data,\n                event: eventName,\n                id: lastEventId,\n                retry: retryDelay,\n              });\n\n              if (dataLines.length) {\n                yield data as any;\n              }\n            }\n          }\n        } finally {\n          signal.removeEventListener('abort', abortHandler);\n          reader.releaseLock();\n        }\n\n        break; // exit loop on normal completion\n      } catch (error) {\n        // connection failed or aborted; retry after delay\n        onSseError?.(error);\n\n        if (\n          sseMaxRetryAttempts !== undefined &&\n          attempt >= sseMaxRetryAttempts\n        ) {\n          break; // stop after firing error\n        }\n\n        // exponential backoff: double retry each attempt, cap at 30s\n        const backoff = Math.min(\n          retryDelay * 2 ** (attempt - 1),\n          sseMaxRetryDelay ?? 30000,\n        );\n        await sleep(backoff);\n      }\n    }\n  };\n\n  const stream = createStream();\n\n  return { stream };\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\ninterface SerializeOptions<T>\n  extends SerializePrimitiveOptions,\n    SerializerOptions<T> {}\n\ninterface SerializePrimitiveOptions {\n  allowReserved?: boolean;\n  name: string;\n}\n\nexport interface SerializerOptions<T> {\n  /**\n   * @default true\n   */\n  explode: boolean;\n  style: T;\n}\n\nexport type ArrayStyle = 'form' | 'spaceDelimited' | 'pipeDelimited';\nexport type ArraySeparatorStyle = ArrayStyle | MatrixStyle;\ntype MatrixStyle = 'label' | 'matrix' | 'simple';\nexport type ObjectStyle = 'form' | 'deepObject';\ntype ObjectSeparatorStyle = ObjectStyle | MatrixStyle;\n\ninterface SerializePrimitiveParam extends SerializePrimitiveOptions {\n  value: string;\n}\n\nexport const separatorArrayExplode = (style: ArraySeparatorStyle) => {\n  switch (style) {\n    case 'label':\n      return '.';\n    case 'matrix':\n      return ';';\n    case 'simple':\n      return ',';\n    default:\n      return '&';\n  }\n};\n\nexport const separatorArrayNoExplode = (style: ArraySeparatorStyle) => {\n  switch (style) {\n    case 'form':\n      return ',';\n    case 'pipeDelimited':\n      return '|';\n    case 'spaceDelimited':\n      return '%20';\n    default:\n      return ',';\n  }\n};\n\nexport const separatorObjectExplode = (style: ObjectSeparatorStyle) => {\n  switch (style) {\n    case 'label':\n      return '.';\n    case 'matrix':\n      return ';';\n    case 'simple':\n      return ',';\n    default:\n      return '&';\n  }\n};\n\nexport const serializeArrayParam = ({\n  allowReserved,\n  explode,\n  name,\n  style,\n  value,\n}: SerializeOptions<ArraySeparatorStyle> & {\n  value: unknown[];\n}) => {\n  if (!explode) {\n    const joinedValues = (\n      allowReserved ? value : value.map((v) => encodeURIComponent(v as string))\n    ).join(separatorArrayNoExplode(style));\n    switch (style) {\n      case 'label':\n        return `.${joinedValues}`;\n      case 'matrix':\n        return `;${name}=${joinedValues}`;\n      case 'simple':\n        return joinedValues;\n      default:\n        return `${name}=${joinedValues}`;\n    }\n  }\n\n  const separator = separatorArrayExplode(style);\n  const joinedValues = value\n    .map((v) => {\n      if (style === 'label' || style === 'simple') {\n        return allowReserved ? v : encodeURIComponent(v as string);\n      }\n\n      return serializePrimitiveParam({\n        allowReserved,\n        name,\n        value: v as string,\n      });\n    })\n    .join(separator);\n  return style === 'label' || style === 'matrix'\n    ? separator + joinedValues\n    : joinedValues;\n};\n\nexport const serializePrimitiveParam = ({\n  allowReserved,\n  name,\n  value,\n}: SerializePrimitiveParam) => {\n  if (value === undefined || value === null) {\n    return '';\n  }\n\n  if (typeof value === 'object') {\n    throw new Error(\n      'Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.',\n    );\n  }\n\n  return `${name}=${allowReserved ? value : encodeURIComponent(value)}`;\n};\n\nexport const serializeObjectParam = ({\n  allowReserved,\n  explode,\n  name,\n  style,\n  value,\n  valueOnly,\n}: SerializeOptions<ObjectSeparatorStyle> & {\n  value: Record<string, unknown> | Date;\n  valueOnly?: boolean;\n}) => {\n  if (value instanceof Date) {\n    return valueOnly ? value.toISOString() : `${name}=${value.toISOString()}`;\n  }\n\n  if (style !== 'deepObject' && !explode) {\n    let values: string[] = [];\n    Object.entries(value).forEach(([key, v]) => {\n      values = [\n        ...values,\n        key,\n        allowReserved ? (v as string) : encodeURIComponent(v as string),\n      ];\n    });\n    const joinedValues = values.join(',');\n    switch (style) {\n      case 'form':\n        return `${name}=${joinedValues}`;\n      case 'label':\n        return `.${joinedValues}`;\n      case 'matrix':\n        return `;${name}=${joinedValues}`;\n      default:\n        return joinedValues;\n    }\n  }\n\n  const separator = separatorObjectExplode(style);\n  const joinedValues = Object.entries(value)\n    .map(([key, v]) =>\n      serializePrimitiveParam({\n        allowReserved,\n        name: style === 'deepObject' ? `${name}[${key}]` : key,\n        value: v as string,\n      }),\n    )\n    .join(separator);\n  return style === 'label' || style === 'matrix'\n    ? separator + joinedValues\n    : joinedValues;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { BodySerializer, QuerySerializer } from './bodySerializer.gen';\nimport {\n  type ArraySeparatorStyle,\n  serializeArrayParam,\n  serializeObjectParam,\n  serializePrimitiveParam,\n} from './pathSerializer.gen';\n\nexport interface PathSerializer {\n  path: Record<string, unknown>;\n  url: string;\n}\n\nexport const PATH_PARAM_RE = /\\{[^{}]+\\}/g;\n\nexport const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => {\n  let url = _url;\n  const matches = _url.match(PATH_PARAM_RE);\n  if (matches) {\n    for (const match of matches) {\n      let explode = false;\n      let name = match.substring(1, match.length - 1);\n      let style: ArraySeparatorStyle = 'simple';\n\n      if (name.endsWith('*')) {\n        explode = true;\n        name = name.substring(0, name.length - 1);\n      }\n\n      if (name.startsWith('.')) {\n        name = name.substring(1);\n        style = 'label';\n      } else if (name.startsWith(';')) {\n        name = name.substring(1);\n        style = 'matrix';\n      }\n\n      const value = path[name];\n\n      if (value === undefined || value === null) {\n        continue;\n      }\n\n      if (Array.isArray(value)) {\n        url = url.replace(\n          match,\n          serializeArrayParam({ explode, name, style, value }),\n        );\n        continue;\n      }\n\n      if (typeof value === 'object') {\n        url = url.replace(\n          match,\n          serializeObjectParam({\n            explode,\n            name,\n            style,\n            value: value as Record<string, unknown>,\n            valueOnly: true,\n          }),\n        );\n        continue;\n      }\n\n      if (style === 'matrix') {\n        url = url.replace(\n          match,\n          `;${serializePrimitiveParam({\n            name,\n            value: value as string,\n          })}`,\n        );\n        continue;\n      }\n\n      const replaceValue = encodeURIComponent(\n        style === 'label' ? `.${value as string}` : (value as string),\n      );\n      url = url.replace(match, replaceValue);\n    }\n  }\n  return url;\n};\n\nexport const getUrl = ({\n  baseUrl,\n  path,\n  query,\n  querySerializer,\n  url: _url,\n}: {\n  baseUrl?: string;\n  path?: Record<string, unknown>;\n  query?: Record<string, unknown>;\n  querySerializer: QuerySerializer;\n  url: string;\n}) => {\n  const pathUrl = _url.startsWith('/') ? _url : `/${_url}`;\n  let url = (baseUrl ?? '') + pathUrl;\n  if (path) {\n    url = defaultPathSerializer({ path, url });\n  }\n  let search = query ? querySerializer(query) : '';\n  if (search.startsWith('?')) {\n    search = search.substring(1);\n  }\n  if (search) {\n    url += `?${search}`;\n  }\n  return url;\n};\n\nexport function getValidRequestBody(options: {\n  body?: unknown;\n  bodySerializer?: BodySerializer | null;\n  serializedBody?: unknown;\n}) {\n  const hasBody = options.body !== undefined;\n  const isSerializedBody = hasBody && options.bodySerializer;\n\n  if (isSerializedBody) {\n    if ('serializedBody' in options) {\n      const hasSerializedBody =\n        options.serializedBody !== undefined && options.serializedBody !== '';\n\n      return hasSerializedBody ? options.serializedBody : null;\n    }\n\n    // not all clients implement a serializedBody property (i.e. client-axios)\n    return options.body !== '' ? options.body : null;\n  }\n\n  // plain/text body\n  if (hasBody) {\n    return options.body;\n  }\n\n  // no body was provided\n  return undefined;\n}\n","// This file is auto-generated by @hey-api/openapi-ts\n\nexport type AuthToken = string | undefined;\n\nexport interface Auth {\n  /**\n   * Which part of the request do we use to send the auth?\n   *\n   * @default 'header'\n   */\n  in?: 'header' | 'query' | 'cookie';\n  /**\n   * Header or query parameter name.\n   *\n   * @default 'Authorization'\n   */\n  name?: string;\n  scheme?: 'basic' | 'bearer';\n  type: 'apiKey' | 'http';\n}\n\nexport const getAuthToken = async (\n  auth: Auth,\n  callback: ((auth: Auth) => Promise<AuthToken> | AuthToken) | AuthToken,\n): Promise<string | undefined> => {\n  const token =\n    typeof callback === 'function' ? await callback(auth) : callback;\n\n  if (!token) {\n    return;\n  }\n\n  if (auth.scheme === 'bearer') {\n    return `Bearer ${token}`;\n  }\n\n  if (auth.scheme === 'basic') {\n    return `Basic ${btoa(token)}`;\n  }\n\n  return token;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { getAuthToken } from '../core/auth.gen';\nimport type { QuerySerializerOptions } from '../core/bodySerializer.gen';\nimport { jsonBodySerializer } from '../core/bodySerializer.gen';\nimport {\n  serializeArrayParam,\n  serializeObjectParam,\n  serializePrimitiveParam,\n} from '../core/pathSerializer.gen';\nimport { getUrl } from '../core/utils.gen';\nimport type { Client, ClientOptions, Config, RequestOptions } from './types.gen';\n\nexport const createQuerySerializer = <T = unknown>({\n  allowReserved,\n  array,\n  object,\n}: QuerySerializerOptions = {}) => {\n  const querySerializer = (queryParams: T) => {\n    const search: string[] = [];\n    if (queryParams && typeof queryParams === 'object') {\n      for (const name in queryParams) {\n        const value = queryParams[name];\n\n        if (value === undefined || value === null) {\n          continue;\n        }\n\n        if (Array.isArray(value)) {\n          const serializedArray = serializeArrayParam({\n            allowReserved,\n            explode: true,\n            name,\n            style: 'form',\n            value,\n            ...array,\n          });\n          if (serializedArray) search.push(serializedArray);\n        } else if (typeof value === 'object') {\n          const serializedObject = serializeObjectParam({\n            allowReserved,\n            explode: true,\n            name,\n            style: 'deepObject',\n            value: value as Record<string, unknown>,\n            ...object,\n          });\n          if (serializedObject) search.push(serializedObject);\n        } else {\n          const serializedPrimitive = serializePrimitiveParam({\n            allowReserved,\n            name,\n            value: value as string,\n          });\n          if (serializedPrimitive) search.push(serializedPrimitive);\n        }\n      }\n    }\n    return search.join('&');\n  };\n  return querySerializer;\n};\n\n/**\n * Infers parseAs value from provided Content-Type header.\n */\nexport const getParseAs = (\n  contentType: string | null,\n): Exclude<Config['parseAs'], 'auto'> => {\n  if (!contentType) {\n    // If no Content-Type header is provided, the best we can do is return the raw response body,\n    // which is effectively the same as the 'stream' option.\n    return 'stream';\n  }\n\n  const cleanContent = contentType.split(';')[0]?.trim();\n\n  if (!cleanContent) {\n    return;\n  }\n\n  if (\n    cleanContent.startsWith('application/json') ||\n    cleanContent.endsWith('+json')\n  ) {\n    return 'json';\n  }\n\n  if (cleanContent === 'multipart/form-data') {\n    return 'formData';\n  }\n\n  if (\n    ['application/', 'audio/', 'image/', 'video/'].some((type) =>\n      cleanContent.startsWith(type),\n    )\n  ) {\n    return 'blob';\n  }\n\n  if (cleanContent.startsWith('text/')) {\n    return 'text';\n  }\n\n  return;\n};\n\nconst checkForExistence = (\n  options: Pick<RequestOptions, 'auth' | 'query'> & {\n    headers: Headers;\n  },\n  name?: string,\n): boolean => {\n  if (!name) {\n    return false;\n  }\n  if (\n    options.headers.has(name) ||\n    options.query?.[name] ||\n    options.headers.get('Cookie')?.includes(`${name}=`)\n  ) {\n    return true;\n  }\n  return false;\n};\n\nexport const setAuthParams = async ({\n  security,\n  ...options\n}: Pick<Required<RequestOptions>, 'security'> &\n  Pick<RequestOptions, 'auth' | 'query'> & {\n    headers: Headers;\n  }) => {\n  for (const auth of security) {\n    if (checkForExistence(options, auth.name)) {\n      continue;\n    }\n\n    const token = await getAuthToken(auth, options.auth);\n\n    if (!token) {\n      continue;\n    }\n\n    const name = auth.name ?? 'Authorization';\n\n    switch (auth.in) {\n      case 'query':\n        if (!options.query) {\n          options.query = {};\n        }\n        options.query[name] = token;\n        break;\n      case 'cookie':\n        options.headers.append('Cookie', `${name}=${token}`);\n        break;\n      case 'header':\n      default:\n        options.headers.set(name, token);\n        break;\n    }\n  }\n};\n\nexport const buildUrl: Client['buildUrl'] = (options) =>\n  getUrl({\n    baseUrl: options.baseUrl as string,\n    path: options.path,\n    query: options.query,\n    querySerializer:\n      typeof options.querySerializer === 'function'\n        ? options.querySerializer\n        : createQuerySerializer(options.querySerializer),\n    url: options.url,\n  });\n\nexport const mergeConfigs = (a: Config, b: Config): Config => {\n  const config = { ...a, ...b };\n  if (config.baseUrl?.endsWith('/')) {\n    config.baseUrl = config.baseUrl.substring(0, config.baseUrl.length - 1);\n  }\n  config.headers = mergeHeaders(a.headers, b.headers);\n  return config;\n};\n\nconst headersEntries = (headers: Headers): Array<[string, string]> => {\n  const entries: Array<[string, string]> = [];\n  headers.forEach((value, key) => {\n    entries.push([key, value]);\n  });\n  return entries;\n};\n\nexport const mergeHeaders = (\n  ...headers: Array<Required<Config>['headers'] | undefined>\n): Headers => {\n  const mergedHeaders = new Headers();\n  for (const header of headers) {\n    if (!header) {\n      continue;\n    }\n\n    const iterator =\n      header instanceof Headers\n        ? headersEntries(header)\n        : Object.entries(header);\n\n    for (const [key, value] of iterator) {\n      if (value === null) {\n        mergedHeaders.delete(key);\n      } else if (Array.isArray(value)) {\n        for (const v of value) {\n          mergedHeaders.append(key, v as string);\n        }\n      } else if (value !== undefined) {\n        // assume object headers are meant to be JSON stringified, i.e. their\n        // content value in OpenAPI specification is 'application/json'\n        mergedHeaders.set(\n          key,\n          typeof value === 'object' ? JSON.stringify(value) : (value as string),\n        );\n      }\n    }\n  }\n  return mergedHeaders;\n};\n\ntype ErrInterceptor<Err, Res, Req, Options> = (\n  error: Err,\n  response: Res,\n  request: Req,\n  options: Options,\n) => Err | Promise<Err>;\n\ntype ReqInterceptor<Req, Options> = (\n  request: Req,\n  options: Options,\n) => Req | Promise<Req>;\n\ntype ResInterceptor<Res, Req, Options> = (\n  response: Res,\n  request: Req,\n  options: Options,\n) => Res | Promise<Res>;\n\nclass Interceptors<Interceptor> {\n  fns: Array<Interceptor | null> = [];\n\n  clear(): void {\n    this.fns = [];\n  }\n\n  eject(id: number | Interceptor): void {\n    const index = this.getInterceptorIndex(id);\n    if (this.fns[index]) {\n      this.fns[index] = null;\n    }\n  }\n\n  exists(id: number | Interceptor): boolean {\n    const index = this.getInterceptorIndex(id);\n    return Boolean(this.fns[index]);\n  }\n\n  getInterceptorIndex(id: number | Interceptor): number {\n    if (typeof id === 'number') {\n      return this.fns[id] ? id : -1;\n    }\n    return this.fns.indexOf(id);\n  }\n\n  update(\n    id: number | Interceptor,\n    fn: Interceptor,\n  ): number | Interceptor | false {\n    const index = this.getInterceptorIndex(id);\n    if (this.fns[index]) {\n      this.fns[index] = fn;\n      return id;\n    }\n    return false;\n  }\n\n  use(fn: Interceptor): number {\n    this.fns.push(fn);\n    return this.fns.length - 1;\n  }\n}\n\nexport interface Middleware<Req, Res, Err, Options> {\n  error: Interceptors<ErrInterceptor<Err, Res, Req, Options>>;\n  request: Interceptors<ReqInterceptor<Req, Options>>;\n  response: Interceptors<ResInterceptor<Res, Req, Options>>;\n}\n\nexport const createInterceptors = <Req, Res, Err, Options>(): Middleware<\n  Req,\n  Res,\n  Err,\n  Options\n> => ({\n  error: new Interceptors<ErrInterceptor<Err, Res, Req, Options>>(),\n  request: new Interceptors<ReqInterceptor<Req, Options>>(),\n  response: new Interceptors<ResInterceptor<Res, Req, Options>>(),\n});\n\nconst defaultQuerySerializer = createQuerySerializer({\n  allowReserved: false,\n  array: {\n    explode: true,\n    style: 'form',\n  },\n  object: {\n    explode: true,\n    style: 'deepObject',\n  },\n});\n\nconst defaultHeaders = {\n  'Content-Type': 'application/json',\n};\n\nexport const createConfig = <T extends ClientOptions = ClientOptions>(\n  override: Config<Omit<ClientOptions, keyof T> & T> = {},\n): Config<Omit<ClientOptions, keyof T> & T> => ({\n  ...jsonBodySerializer,\n  headers: defaultHeaders,\n  parseAs: 'auto',\n  querySerializer: defaultQuerySerializer,\n  ...override,\n});\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { createSseClient } from '../core/serverSentEvents.gen';\nimport type { HttpMethod } from '../core/types.gen';\nimport { getValidRequestBody } from '../core/utils.gen';\nimport type {\n  Client,\n  Config,\n  RequestOptions,\n  ResolvedRequestOptions,\n} from './types.gen';\nimport {\n  buildUrl,\n  createConfig,\n  createInterceptors,\n  getParseAs,\n  mergeConfigs,\n  mergeHeaders,\n  setAuthParams,\n} from './utils.gen';\n\ntype ReqInit = Omit<RequestInit, 'body' | 'headers'> & {\n  body?: any;\n  headers: ReturnType<typeof mergeHeaders>;\n};\n\nexport const createClient = (config: Config = {}): Client => {\n  let _config = mergeConfigs(createConfig(), config);\n\n  const getConfig = (): Config => ({ ..._config });\n\n  const setConfig = (config: Config): Config => {\n    _config = mergeConfigs(_config, config);\n    return getConfig();\n  };\n\n  const interceptors = createInterceptors<\n    Request,\n    Response,\n    unknown,\n    ResolvedRequestOptions\n  >();\n\n  const beforeRequest = async (options: RequestOptions) => {\n    const opts = {\n      ..._config,\n      ...options,\n      fetch: options.fetch ?? _config.fetch ?? globalThis.fetch,\n      headers: mergeHeaders(_config.headers, options.headers),\n      serializedBody: undefined,\n    };\n\n    if (opts.security) {\n      await setAuthParams({\n        ...opts,\n        security: opts.security,\n      });\n    }\n\n    if (opts.requestValidator) {\n      await opts.requestValidator(opts);\n    }\n\n    if (opts.body !== undefined && opts.bodySerializer) {\n      opts.serializedBody = opts.bodySerializer(opts.body);\n    }\n\n    // remove Content-Type header if body is empty to avoid sending invalid requests\n    if (opts.body === undefined || opts.serializedBody === '') {\n      opts.headers.delete('Content-Type');\n    }\n\n    const url = buildUrl(opts);\n\n    return { opts, url };\n  };\n\n  const request: Client['request'] = async (options) => {\n    // @ts-expect-error\n    const { opts, url } = await beforeRequest(options);\n    const requestInit: ReqInit = {\n      redirect: 'follow',\n      ...opts,\n      body: getValidRequestBody(opts),\n    };\n\n    let request = new Request(url, requestInit);\n\n    for (const fn of interceptors.request.fns) {\n      if (fn) {\n        request = await fn(request, opts);\n      }\n    }\n\n    // fetch must be assigned here, otherwise it would throw the error:\n    // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation\n    const _fetch = opts.fetch!;\n    let response = await _fetch(request);\n\n    for (const fn of interceptors.response.fns) {\n      if (fn) {\n        response = await fn(response, request, opts);\n      }\n    }\n\n    const result = {\n      request,\n      response,\n    };\n\n    if (response.ok) {\n      const parseAs =\n        (opts.parseAs === 'auto'\n          ? getParseAs(response.headers.get('Content-Type'))\n          : opts.parseAs) ?? 'json';\n\n      if (\n        response.status === 204 ||\n        response.headers.get('Content-Length') === '0'\n      ) {\n        let emptyData: any;\n        switch (parseAs) {\n          case 'arrayBuffer':\n          case 'blob':\n          case 'text':\n            emptyData = await response[parseAs]();\n            break;\n          case 'formData':\n            emptyData = new FormData();\n            break;\n          case 'stream':\n            emptyData = response.body;\n            break;\n          case 'json':\n          default:\n            emptyData = {};\n            break;\n        }\n        return opts.responseStyle === 'data'\n          ? emptyData\n          : {\n              data: emptyData,\n              ...result,\n            };\n      }\n\n      let data: any;\n      switch (parseAs) {\n        case 'arrayBuffer':\n        case 'blob':\n        case 'formData':\n        case 'json':\n        case 'text':\n          data = await response[parseAs]();\n          break;\n        case 'stream':\n          return opts.responseStyle === 'data'\n            ? response.body\n            : {\n                data: response.body,\n                ...result,\n              };\n      }\n\n      if (parseAs === 'json') {\n        if (opts.responseValidator) {\n          await opts.responseValidator(data);\n        }\n\n        if (opts.responseTransformer) {\n          data = await opts.responseTransformer(data);\n        }\n      }\n\n      return opts.responseStyle === 'data'\n        ? data\n        : {\n            data,\n            ...result,\n          };\n    }\n\n    const textError = await response.text();\n    let jsonError: unknown;\n\n    try {\n      jsonError = JSON.parse(textError);\n    } catch {\n      // noop\n    }\n\n    const error = jsonError ?? textError;\n    let finalError = error;\n\n    for (const fn of interceptors.error.fns) {\n      if (fn) {\n        finalError = (await fn(error, response, request, opts)) as string;\n      }\n    }\n\n    finalError = finalError || ({} as string);\n\n    if (opts.throwOnError) {\n      throw finalError;\n    }\n\n    // TODO: we probably want to return error and improve types\n    return opts.responseStyle === 'data'\n      ? undefined\n      : {\n          error: finalError,\n          ...result,\n        };\n  };\n\n  const makeMethodFn =\n    (method: Uppercase<HttpMethod>) => (options: RequestOptions) =>\n      request({ ...options, method });\n\n  const makeSseFn =\n    (method: Uppercase<HttpMethod>) => async (options: RequestOptions) => {\n      const { opts, url } = await beforeRequest(options);\n      return createSseClient({\n        ...opts,\n        body: opts.body as BodyInit | null | undefined,\n        headers: opts.headers as unknown as Record<string, string>,\n        method,\n        onRequest: async (url, init) => {\n          let request = new Request(url, init);\n          for (const fn of interceptors.request.fns) {\n            if (fn) {\n              request = await fn(request, opts);\n            }\n          }\n          return request;\n        },\n        url,\n      });\n    };\n\n  return {\n    buildUrl,\n    connect: makeMethodFn('CONNECT'),\n    delete: makeMethodFn('DELETE'),\n    get: makeMethodFn('GET'),\n    getConfig,\n    head: makeMethodFn('HEAD'),\n    interceptors,\n    options: makeMethodFn('OPTIONS'),\n    patch: makeMethodFn('PATCH'),\n    post: makeMethodFn('POST'),\n    put: makeMethodFn('PUT'),\n    request,\n    setConfig,\n    sse: {\n      connect: makeSseFn('CONNECT'),\n      delete: makeSseFn('DELETE'),\n      get: makeSseFn('GET'),\n      head: makeSseFn('HEAD'),\n      options: makeSseFn('OPTIONS'),\n      patch: makeSseFn('PATCH'),\n      post: makeSseFn('POST'),\n      put: makeSseFn('PUT'),\n      trace: makeSseFn('TRACE'),\n    },\n    trace: makeMethodFn('TRACE'),\n  } as Client;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { type ClientOptions, type Config, createClient, createConfig } from './client';\nimport type { ClientOptions as ClientOptions2 } from './types.gen';\n\n/**\n * The `createClientConfig()` function will be called on client initialization\n * and the returned object will become the client's initial configuration.\n *\n * You may want to initialize your client this way instead of calling\n * `setConfig()`. This is useful for example if you're using Next.js\n * to ensure your client always has the correct values.\n */\nexport type CreateClientConfig<T extends ClientOptions = ClientOptions2> = (override?: Config<ClientOptions & T>) => Config<Required<ClientOptions> & T>;\n\nexport const client = createClient(createConfig<ClientOptions2>({\n    baseUrl: 'https://sdkdev.orkesconductor.io'\n}));\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { Client, Options as Options2, TDataShape } from './client';\nimport { client } from './client.gen';\nimport type { AddEventHandlerData, AddEventHandlerResponses, AddOrUpdateMethodData, AddOrUpdateMethodResponses, AddOrUpdateServiceData, AddOrUpdateServiceResponses, AddRoleToApplicationUserData, AddRoleToApplicationUserResponses, AddTaskTagData, AddTaskTagResponses, AddUsersToGroupData, AddUsersToGroupResponses, AddUserToGroupData, AddUserToGroupResponses, AddWorkflowTagData, AddWorkflowTagResponses, AllData, AllResponses, AllVerboseData, AllVerboseResponses, AssignAndClaimData, AssignAndClaimResponses, AssociatePromptWithIntegrationData, AssociatePromptWithIntegrationResponses, BackPopulateFullTextIndexData, BackPopulateFullTextIndexResponses, BatchPollData, BatchPollResponses, CheckPermissionsData, CheckPermissionsResponses, ClaimTaskData, ClaimTaskResponses, ClearLocalCacheData, ClearLocalCacheResponses, ClearRedisCacheData, ClearRedisCacheResponses, ClearTaskExecutionCacheData, ClearTaskExecutionCacheResponses, CloseCircuitBreakerData, CloseCircuitBreakerResponses, CreateAccessKeyData, CreateAccessKeyResponses, CreateApplicationData, CreateApplicationResponses, CreateData, CreateMessageTemplatesData, CreateMessageTemplatesResponses, CreateOrUpdateEnvVariableData, CreateOrUpdateEnvVariableResponses, CreateResponses, CreateWebhookData, CreateWebhookResponses, DecideData, DecideResponses, Delete1Data, Delete1Responses, DeleteAccessKeyData, DeleteAccessKeyResponses, DeleteApplicationData, DeleteApplicationResponses, DeleteData, DeleteEnvVariableData, DeleteEnvVariableResponses, DeleteGroupData, DeleteGroupResponses, DeleteIntegrationApiData, DeleteIntegrationApiResponses, DeleteIntegrationProviderData, DeleteIntegrationProviderResponses, DeleteMessageTemplate1Data, DeleteMessageTemplate1Responses, DeleteMessageTemplateData, DeleteMessageTemplateResponses, DeleteProtoData, DeleteProtoResponses, DeleteQueueConfigData, DeleteQueueConfigResponses, DeleteResponses, DeleteScheduleData, DeleteScheduleResponses, DeleteSchemaByNameAndVersionData, DeleteSchemaByNameAndVersionResponses, DeleteSchemaByNameData, DeleteSchemaByNameResponses, DeleteSecretData, DeleteSecretResponses, DeleteTagForApplicationData, DeleteTagForApplicationResponses, DeleteTagForEnvVarData, DeleteTagForEnvVarResponses, DeleteTagForEventHandlerData, DeleteTagForEventHandlerResponses, DeleteTagForIntegrationData, DeleteTagForIntegrationProviderData, DeleteTagForIntegrationProviderResponses, DeleteTagForIntegrationResponses, DeleteTagForPromptTemplateData, DeleteTagForPromptTemplateResponses, DeleteTagForScheduleData, DeleteTagForScheduleResponses, DeleteTagForSecretData, DeleteTagForSecretResponses, DeleteTagForUserFormTemplateData, DeleteTagForUserFormTemplateResponses, DeleteTagForWebhookData, DeleteTagForWebhookResponses, DeleteTaskFromHumanTaskRecords1Data, DeleteTaskFromHumanTaskRecords1Responses, DeleteTaskFromHumanTaskRecordsData, DeleteTaskFromHumanTaskRecordsResponses, DeleteTaskTagData, DeleteTaskTagResponses, DeleteTemplateByNameData, DeleteTemplateByNameResponses, DeleteTemplatesByNameAndVersionData, DeleteTemplatesByNameAndVersionResponses, DeleteUserData, DeleteUserResponses, DeleteWebhookData, DeleteWebhookResponses, DeleteWorkflowTagData, DeleteWorkflowTagResponses, DiscoverData, DiscoverResponses, DoCheckData, DoCheckResponses, ExecuteWorkflowAsApiData, ExecuteWorkflowAsApiResponses, ExecuteWorkflowAsGetApiData, ExecuteWorkflowAsGetApiResponses, ExecuteWorkflowData, ExecuteWorkflowResponses, GenerateTokenData, GenerateTokenResponses, Get1Data, Get1Responses, Get2Data, Get2Responses, Get3Data, Get3Responses, GetAccessKeysData, GetAccessKeysResponses, GetAllData, GetAllIntegrationsData, GetAllIntegrationsResponses, GetAllPollDataData, GetAllPollDataResponses, GetAllProtosData, GetAllProtosResponses, GetAllResponses, GetAllSchedulesData, GetAllSchedulesResponses, GetAllSchemasData, GetAllSchemasResponses, GetAllTemplatesData, GetAllTemplatesResponses, GetAllWebhookData, GetAllWebhookResponses, GetAppByAccessKeyIdData, GetAppByAccessKeyIdResponses, GetApplicationData, GetApplicationResponses, GetCircuitBreakerStatusData, GetCircuitBreakerStatusResponses, GetConductorTaskByIdData, GetConductorTaskByIdResponses, GetData, GetEventHandlerByNameData, GetEventHandlerByNameResponses, GetEventHandlersData, GetEventHandlersForEvent1Data, GetEventHandlersForEvent1Responses, GetEventHandlersForEvent2Data, GetEventHandlersForEvent2Responses, GetEventHandlersForEventData, GetEventHandlersForEventResponses, GetEventHandlersResponses, GetEventsData, GetEventsResponses, GetExecutionStatusData, GetExecutionStatusResponses, GetExecutionStatusTaskListData, GetExecutionStatusTaskListResponses, GetGrantedPermissions1Data, GetGrantedPermissions1Responses, GetGrantedPermissionsData, GetGrantedPermissionsResponses, GetGroupData, GetGroupResponses, GetIntegrationApiData, GetIntegrationApiResponses, GetIntegrationApisData, GetIntegrationApisResponses, GetIntegrationAvailableApisData, GetIntegrationAvailableApisResponses, GetIntegrationDefData, GetIntegrationDefResponses, GetIntegrationProviderData, GetIntegrationProviderDefsData, GetIntegrationProviderDefsResponses, GetIntegrationProviderResponses, GetIntegrationProvidersData, GetIntegrationProvidersResponses, GetMessagesData, GetMessagesResponses, GetMessageTemplateData, GetMessageTemplateResponses, GetMessageTemplatesData, GetMessageTemplatesResponses, GetMessageTemplateVersionsData, GetMessageTemplateVersionsResponses, GetNextFewSchedulesData, GetNextFewSchedulesResponses, GetPermissionsData, GetPermissionsResponses, GetPollDataData, GetPollDataResponses, GetPromptsWithIntegrationData, GetPromptsWithIntegrationResponses, GetProtoDataData, GetProtoDataResponses, GetProvidersAndIntegrationsData, GetProvidersAndIntegrationsResponses, GetQueueConfigData, GetQueueConfigResponses, GetQueueNamesData, GetQueueNamesResponses, GetRedisUsageData, GetRedisUsageResponses, GetRegisteredServicesData, GetRegisteredServicesResponses, GetResponses, GetRunningWorkflowData, GetRunningWorkflowResponses, GetScheduleData, GetScheduleResponses, GetSchedulesByTagData, GetSchedulesByTagResponses, GetSchemaByNameAndVersionData, GetSchemaByNameAndVersionResponses, GetSchemaByNameWithLatestVersion1Data, GetSchemaByNameWithLatestVersion1Responses, GetSchemaByNameWithLatestVersionData, GetSchemaByNameWithLatestVersionResponses, GetSecretData, GetSecretResponses, GetServiceData, GetServiceResponses, GetTags1Data, GetTags1Responses, GetTagsData, GetTagsForApplicationData, GetTagsForApplicationResponses, GetTagsForEnvVarData, GetTagsForEnvVarResponses, GetTagsForEventHandlerData, GetTagsForEventHandlerResponses, GetTagsForIntegrationData, GetTagsForIntegrationProviderData, GetTagsForIntegrationProviderResponses, GetTagsForIntegrationResponses, GetTagsForPromptTemplateData, GetTagsForPromptTemplateResponses, GetTagsForScheduleData, GetTagsForScheduleResponses, GetTagsForUserFormTemplateData, GetTagsForUserFormTemplateResponses, GetTagsForWebhookData, GetTagsForWebhookResponses, GetTagsResponses, GetTask1Data, GetTask1Responses, GetTaskData, GetTaskDefData, GetTaskDefResponses, GetTaskDefsData, GetTaskDefsResponses, GetTaskDisplayNamesData, GetTaskDisplayNamesResponses, GetTaskLogsData, GetTaskLogsResponses, GetTaskResponses, GetTaskTagsData, GetTaskTagsResponses, GetTemplateByNameAndVersionData, GetTemplateByNameAndVersionResponses, GetTemplateByTaskIdData, GetTemplateByTaskIdResponses, GetTokenLimitData, GetTokenLimitResponses, GetTokenUsageData, GetTokenUsageResponses, GetUserData, GetUserInfoData, GetUserInfoResponses, GetUserResponses, GetUsersInGroupData, GetUsersInGroupResponses, GetVersionData, GetVersionResponses, GetWebhookData, GetWebhookResponses, GetWorkflowDefsData, GetWorkflowDefsResponses, GetWorkflows1Data, GetWorkflows1Responses, GetWorkflows2Data, GetWorkflows2Responses, GetWorkflowsData, GetWorkflowsResponses, GetWorkflowStatusSummaryData, GetWorkflowStatusSummaryResponses, GetWorkflowTagsData, GetWorkflowTagsResponses, GrantPermissionsData, GrantPermissionsResponses, HandleIncomingEventData, HandleIncomingEventResponses, HandleWebhook1Data, HandleWebhook1Responses, HandleWebhookData, HandleWebhookResponses, JumpToTaskData, JumpToTaskResponses, ListAllSecretNamesData, ListAllSecretNamesResponses, ListApplicationsData, ListApplicationsResponses, ListGroupsData, ListGroupsResponses, ListSecretsThatUserCanGrantAccessToData, ListSecretsThatUserCanGrantAccessToResponses, ListSecretsWithTagsThatUserCanGrantAccessToData, ListSecretsWithTagsThatUserCanGrantAccessToResponses, ListUsersData, ListUsersResponses, LogData, LogResponses, NamesData, NamesResponses, OpenCircuitBreakerData, OpenCircuitBreakerResponses, PauseAllSchedulesData, PauseAllSchedulesResponses, PauseScheduleData, PauseScheduleResponses, PauseSchedulesData, PauseSchedulesResponses, PauseWorkflow1Data, PauseWorkflow1Responses, PauseWorkflowData, PauseWorkflowResponses, PollData2, PollResponses, PutQueueConfigData, PutQueueConfigResponses, PutSecretData, PutSecretResponses, PutTagForApplicationData, PutTagForApplicationResponses, PutTagForEnvVarData, PutTagForEnvVarResponses, PutTagForEventHandlerData, PutTagForEventHandlerResponses, PutTagForIntegrationData, PutTagForIntegrationProviderData, PutTagForIntegrationProviderResponses, PutTagForIntegrationResponses, PutTagForPromptTemplateData, PutTagForPromptTemplateResponses, PutTagForScheduleData, PutTagForScheduleResponses, PutTagForSecretData, PutTagForSecretResponses, PutTagForUserFormTemplateData, PutTagForUserFormTemplateResponses, PutTagForWebhookData, PutTagForWebhookResponses, ReassignTaskData, ReassignTaskResponses, RecordEventStatsData, RecordEventStatsResponses, RegisterIntegrationData, RegisterIntegrationResponses, RegisterTaskDefData, RegisterTaskDefResponses, ReleaseTaskData, ReleaseTaskResponses, RemoveEventHandlerStatusData, RemoveEventHandlerStatusResponses, RemoveMethodData, RemoveMethodResponses, RemovePermissionsData, RemovePermissionsResponses, RemoveRoleFromApplicationUserData, RemoveRoleFromApplicationUserResponses, RemoveServiceData, RemoveServiceResponses, RemoveUserFromGroupData, RemoveUserFromGroupResponses, RemoveUsersFromGroupData, RemoveUsersFromGroupResponses, RequeueAllExecutionRecordsData, RequeueAllExecutionRecordsResponses, RequeuePendingTaskData, RequeuePendingTaskResponses, RequeueSweepData, RequeueSweepResponses, RerunData, RerunResponses, ResetWorkflowData, ResetWorkflowResponses, Restart1Data, Restart1Responses, RestartData, RestartResponses, ResumeAllSchedulesData, ResumeAllSchedulesResponses, ResumeScheduleData, ResumeScheduleResponses, ResumeSchedulesData, ResumeSchedulesResponses, ResumeWorkflow1Data, ResumeWorkflow1Responses, ResumeWorkflowData, ResumeWorkflowResponses, Retry1Data, Retry1Responses, RetryData, RetryResponses, Save1Data, Save1Responses, SaveAllIntegrationsData, SaveAllIntegrationsResponses, SaveData, SaveIntegrationApiData, SaveIntegrationApiResponses, SaveIntegrationProviderData, SaveIntegrationProviderResponses, SaveMessageTemplateData, SaveMessageTemplateResponses, SaveResponses, SaveScheduleData, SaveScheduleResponses, SaveTemplateData, SaveTemplateResponses, SaveTemplatesData, SaveTemplatesResponses, Search1Data, Search1Responses, Search2Data, Search2Responses, SearchData, SearchResponses, SearchV2Data, SearchV2Responses, SecretExistsData, SecretExistsResponses, SetProtoDataData, SetProtoDataResponses, SetTaskTagsData, SetTaskTagsResponses, SetWorkflowTagsData, SetWorkflowTagsResponses, SignalWorkflowTaskASyncData, SignalWorkflowTaskASyncResponses, SignalWorkflowTaskSyncData, SignalWorkflowTaskSyncResponses, Size1Data, Size1Responses, SizeData, SizeResponses, SkipTaskData, SkipTaskFromWorkflowData, SkipTaskFromWorkflowResponses, SkipTaskResponses, StartWorkflow1Data, StartWorkflow1Responses, StartWorkflowAsyncData, StartWorkflowAsyncResponses, StartWorkflowData, StartWorkflowResponses, Terminate1Data, Terminate1Responses, TerminateData, TerminateResponses, TestConnectivityData, TestConnectivityResponses, TestData, TestMessageTemplateData, TestMessageTemplateResponses, TestResponses, TestWorkflowData, TestWorkflowResponses, ToggleAccessKeyStatusData, ToggleAccessKeyStatusResponses, UnregisterTaskDefData, UnregisterTaskDefResponses, UnregisterWorkflowDefData, UnregisterWorkflowDefResponses, UpdateApplicationData, UpdateApplicationResponses, UpdateData, UpdateEventHandlerData, UpdateEventHandlerResponses, UpdateMessageTemplateData, UpdateMessageTemplateResponses, UpdateResponses, UpdateTask1Data, UpdateTask1Responses, UpdateTaskData, UpdateTaskDefData, UpdateTaskDefResponses, UpdateTaskOutputByRefData, UpdateTaskOutputByRefResponses, UpdateTaskOutputData, UpdateTaskOutputResponses, UpdateTaskResponses, UpdateTaskSyncData, UpdateTaskSyncResponses, UpdateTaskV2Data, UpdateTaskV2Responses, UpdateTokenLimitData, UpdateTokenLimitResponses, UpdateWebhookData, UpdateWebhookResponses, UpdateWorkflowAndTaskStateData, UpdateWorkflowAndTaskStateResponses, UpdateWorkflowStateData, UpdateWorkflowStateResponses, UpgradeRunningWorkflowToVersionData, UpgradeRunningWorkflowToVersionResponses, UploadBpmnFileData, UploadBpmnFileResponses, UploadWorkflowsAndTasksDefinitionsToS3Data, UploadWorkflowsAndTasksDefinitionsToS3Responses, UpsertGroupData, UpsertGroupResponses, UpsertUserData, UpsertUserResponses, VerifyAndRepairWorkflowConsistencyData, VerifyAndRepairWorkflowConsistencyResponses, ViewData, ViewResponses } from './types.gen';\n\nexport type Options<TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean> = Options2<TData, ThrowOnError> & {\n    /**\n     * You can provide a client instance returned by `createClient()` instead of\n     * individual options. This might be also useful if you want to implement a\n     * custom client.\n     */\n    client?: Client;\n    /**\n     * You can pass arbitrary values through the `meta` object. This can be\n     * used to access values that aren't defined as part of the SDK function.\n     */\n    meta?: Record<string, unknown>;\n};\n\nexport class AdminResource {\n    /**\n     * Remove execution cached values for the task\n     */\n    public static clearTaskExecutionCache<ThrowOnError extends boolean = false>(options: Options<ClearTaskExecutionCacheData, ThrowOnError>) {\n        return (options.client ?? client).post<ClearTaskExecutionCacheResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/admin/cache/clear/{taskDefName}',\n            ...options\n        });\n    }\n    \n    /**\n     * Verify and repair workflow consistency\n     */\n    public static verifyAndRepairWorkflowConsistency<ThrowOnError extends boolean = false>(options: Options<VerifyAndRepairWorkflowConsistencyData, ThrowOnError>) {\n        return (options.client ?? client).post<VerifyAndRepairWorkflowConsistencyResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/admin/consistency/verifyAndRepair/{workflowId}',\n            ...options\n        });\n    }\n    \n    /**\n     * Get details of redis usage\n     */\n    public static getRedisUsage<ThrowOnError extends boolean = false>(options?: Options<GetRedisUsageData, ThrowOnError>) {\n        return (options?.client ?? client).get<GetRedisUsageResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/admin/redisUsage',\n            ...options\n        });\n    }\n    \n    /**\n     * Queue up all the running workflows for sweep\n     */\n    public static requeueSweep<ThrowOnError extends boolean = false>(options: Options<RequeueSweepData, ThrowOnError>) {\n        return (options.client ?? client).post<RequeueSweepResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/admin/sweep/requeue/{workflowId}',\n            ...options\n        });\n    }\n    \n    /**\n     * Get the list of pending tasks for a given task type\n     */\n    public static view<ThrowOnError extends boolean = false>(options: Options<ViewData, ThrowOnError>) {\n        return (options.client ?? client).get<ViewResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/admin/task/{tasktype}',\n            ...options\n        });\n    }\n}\n\nexport class ApplicationResource {\n    /**\n     * Get all applications\n     */\n    public static listApplications<ThrowOnError extends boolean = false>(options?: Options<ListApplicationsData, ThrowOnError>) {\n        return (options?.client ?? client).get<ListApplicationsResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/applications',\n            ...options\n        });\n    }\n    \n    /**\n     * Create an application\n     */\n    public static createApplication<ThrowOnError extends boolean = false>(options: Options<CreateApplicationData, ThrowOnError>) {\n        return (options.client ?? client).post<CreateApplicationResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/applications',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Get application id by access key id\n     */\n    public static getAppByAccessKeyId<ThrowOnError extends boolean = false>(options: Options<GetAppByAccessKeyIdData, ThrowOnError>) {\n        return (options.client ?? client).get<GetAppByAccessKeyIdResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/applications/key/{accessKeyId}',\n            ...options\n        });\n    }\n    \n    /**\n     * Delete an access key\n     */\n    public static deleteAccessKey<ThrowOnError extends boolean = false>(options: Options<DeleteAccessKeyData, ThrowOnError>) {\n        return (options.client ?? client).delete<DeleteAccessKeyResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/applications/{applicationId}/accessKeys/{keyId}',\n            ...options\n        });\n    }\n    \n    /**\n     * Toggle the status of an access key\n     */\n    public static toggleAccessKeyStatus<ThrowOnError extends boolean = false>(options: Options<ToggleAccessKeyStatusData, ThrowOnError>) {\n        return (options.client ?? client).post<ToggleAccessKeyStatusResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/applications/{applicationId}/accessKeys/{keyId}/status',\n            ...options\n        });\n    }\n    \n    public static removeRoleFromApplicationUser<ThrowOnError extends boolean = false>(options: Options<RemoveRoleFromApplicationUserData, ThrowOnError>) {\n        return (options.client ?? client).delete<RemoveRoleFromApplicationUserResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/applications/{applicationId}/roles/{role}',\n            ...options\n        });\n    }\n    \n    public static addRoleToApplicationUser<ThrowOnError extends boolean = false>(options: Options<AddRoleToApplicationUserData, ThrowOnError>) {\n        return (options.client ?? client).post<AddRoleToApplicationUserResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/applications/{applicationId}/roles/{role}',\n            ...options\n        });\n    }\n    \n    /**\n     * Delete an application\n     */\n    public static deleteApplication<ThrowOnError extends boolean = false>(options: Options<DeleteApplicationData, ThrowOnError>) {\n        return (options.client ?? client).delete<DeleteApplicationResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/applications/{id}',\n            ...options\n        });\n    }\n    \n    /**\n     * Get an application by id\n     */\n    public static getApplication<ThrowOnError extends boolean = false>(options: Options<GetApplicationData, ThrowOnError>) {\n        return (options.client ?? client).get<GetApplicationResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/applications/{id}',\n            ...options\n        });\n    }\n    \n    /**\n     * Update an application\n     */\n    public static updateApplication<ThrowOnError extends boolean = false>(options: Options<UpdateApplicationData, ThrowOnError>) {\n        return (options.client ?? client).put<UpdateApplicationResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/applications/{id}',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Get application's access keys\n     */\n    public static getAccessKeys<ThrowOnError extends boolean = false>(options: Options<GetAccessKeysData, ThrowOnError>) {\n        return (options.client ?? client).get<GetAccessKeysResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/applications/{id}/accessKeys',\n            ...options\n        });\n    }\n    \n    /**\n     * Create an access key for an application\n     */\n    public static createAccessKey<ThrowOnError extends boolean = false>(options: Options<CreateAccessKeyData, ThrowOnError>) {\n        return (options.client ?? client).post<CreateAccessKeyResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/applications/{id}/accessKeys',\n            ...options\n        });\n    }\n    \n    /**\n     * Delete a tag for application\n     */\n    public static deleteTagForApplication<ThrowOnError extends boolean = false>(options: Options<DeleteTagForApplicationData, ThrowOnError>) {\n        return (options.client ?? client).delete<DeleteTagForApplicationResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/applications/{id}/tags',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Get tags by application\n     */\n    public static getTagsForApplication<ThrowOnError extends boolean = false>(options: Options<GetTagsForApplicationData, ThrowOnError>) {\n        return (options.client ?? client).get<GetTagsForApplicationResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/applications/{id}/tags',\n            ...options\n        });\n    }\n    \n    /**\n     * Put a tag to application\n     */\n    public static putTagForApplication<ThrowOnError extends boolean = false>(options: Options<PutTagForApplicationData, ThrowOnError>) {\n        return (options.client ?? client).put<PutTagForApplicationResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/applications/{id}/tags',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n}\n\nexport class AuthorizationResource {\n    /**\n     * Remove user's access over the target\n     */\n    public static removePermissions<ThrowOnError extends boolean = false>(options: Options<RemovePermissionsData, ThrowOnError>) {\n        return (options.client ?? client).delete<RemovePermissionsResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/auth/authorization',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Grant access to a user over the target\n     */\n    public static grantPermissions<ThrowOnError extends boolean = false>(options: Options<GrantPermissionsData, ThrowOnError>) {\n        return (options.client ?? client).post<GrantPermissionsResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/auth/authorization',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Get the access that have been granted over the given object\n     */\n    public static getPermissions<ThrowOnError extends boolean = false>(options: Options<GetPermissionsData, ThrowOnError>) {\n        return (options.client ?? client).get<GetPermissionsResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/auth/authorization/{type}/{id}',\n            ...options\n        });\n    }\n}\n\nexport class EnvironmentResource {\n    /**\n     * List all the environment variables\n     */\n    public static getAll<ThrowOnError extends boolean = false>(options?: Options<GetAllData, ThrowOnError>) {\n        return (options?.client ?? client).get<GetAllResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/environment',\n            ...options\n        });\n    }\n    \n    /**\n     * Delete an environment variable (requires metadata or admin role)\n     */\n    public static deleteEnvVariable<ThrowOnError extends boolean = false>(options: Options<DeleteEnvVariableData, ThrowOnError>) {\n        return (options.client ?? client).delete<DeleteEnvVariableResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/environment/{key}',\n            ...options\n        });\n    }\n    \n    /**\n     * Get the environment value by key\n     */\n    public static get3<ThrowOnError extends boolean = false>(options: Options<Get3Data, ThrowOnError>) {\n        return (options.client ?? client).get<Get3Responses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/environment/{key}',\n            ...options\n        });\n    }\n    \n    /**\n     * Create or update an environment variable (requires metadata or admin role)\n     */\n    public static createOrUpdateEnvVariable<ThrowOnError extends boolean = false>(options: Options<CreateOrUpdateEnvVariableData, ThrowOnError>) {\n        return (options.client ?? client).put<CreateOrUpdateEnvVariableResponses, unknown, ThrowOnError>({\n            bodySerializer: null,\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/environment/{key}',\n            ...options,\n            headers: {\n                'Content-Type': 'text/plain',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Delete a tag for environment variable name\n     */\n    public static deleteTagForEnvVar<ThrowOnError extends boolean = false>(options: Options<DeleteTagForEnvVarData, ThrowOnError>) {\n        return (options.client ?? client).delete<DeleteTagForEnvVarResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/environment/{name}/tags',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Get tags by environment variable name\n     */\n    public static getTagsForEnvVar<ThrowOnError extends boolean = false>(options: Options<GetTagsForEnvVarData, ThrowOnError>) {\n        return (options.client ?? client).get<GetTagsForEnvVarResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/environment/{name}/tags',\n            ...options\n        });\n    }\n    \n    /**\n     * Put a tag to environment variable name\n     */\n    public static putTagForEnvVar<ThrowOnError extends boolean = false>(options: Options<PutTagForEnvVarData, ThrowOnError>) {\n        return (options.client ?? client).put<PutTagForEnvVarResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/environment/{name}/tags',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n}\n\nexport class EventResource {\n    /**\n     * Get all the event handlers\n     */\n    public static getEventHandlers<ThrowOnError extends boolean = false>(options?: Options<GetEventHandlersData, ThrowOnError>) {\n        return (options?.client ?? client).get<GetEventHandlersResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/event',\n            ...options\n        });\n    }\n    \n    /**\n     * Add a new event handler.\n     */\n    public static addEventHandler<ThrowOnError extends boolean = false>(options: Options<AddEventHandlerData, ThrowOnError>) {\n        return (options.client ?? client).post<AddEventHandlerResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/event',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Update an existing event handler.\n     */\n    public static updateEventHandler<ThrowOnError extends boolean = false>(options: Options<UpdateEventHandlerData, ThrowOnError>) {\n        return (options.client ?? client).put<UpdateEventHandlerResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/event',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Handle an incoming event\n     */\n    public static handleIncomingEvent<ThrowOnError extends boolean = false>(options: Options<HandleIncomingEventData, ThrowOnError>) {\n        return (options.client ?? client).post<HandleIncomingEventResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/event/handleIncomingEvent',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Get event handler by name\n     */\n    public static test<ThrowOnError extends boolean = false>(options?: Options<TestData, ThrowOnError>) {\n        return (options?.client ?? client).get<TestResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/event/handler/',\n            ...options\n        });\n    }\n    \n    /**\n     * Get event handler by name\n     */\n    public static getEventHandlerByName<ThrowOnError extends boolean = false>(options: Options<GetEventHandlerByNameData, ThrowOnError>) {\n        return (options.client ?? client).get<GetEventHandlerByNameResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/event/handler/{name}',\n            ...options\n        });\n    }\n    \n    /**\n     * Get all queue configs\n     */\n    public static getQueueNames<ThrowOnError extends boolean = false>(options?: Options<GetQueueNamesData, ThrowOnError>) {\n        return (options?.client ?? client).get<GetQueueNamesResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/event/queue/config',\n            ...options\n        });\n    }\n    \n    /**\n     * Delete queue config by name\n     */\n    public static deleteQueueConfig<ThrowOnError extends boolean = false>(options: Options<DeleteQueueConfigData, ThrowOnError>) {\n        return (options.client ?? client).delete<DeleteQueueConfigResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/event/queue/config/{queueType}/{queueName}',\n            ...options\n        });\n    }\n    \n    /**\n     * Get queue config by name\n     */\n    public static getQueueConfig<ThrowOnError extends boolean = false>(options: Options<GetQueueConfigData, ThrowOnError>) {\n        return (options.client ?? client).get<GetQueueConfigResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/event/queue/config/{queueType}/{queueName}',\n            ...options\n        });\n    }\n    \n    /**\n     * Create or update queue config by name\n     *\n     * @deprecated\n     */\n    public static putQueueConfig<ThrowOnError extends boolean = false>(options: Options<PutQueueConfigData, ThrowOnError>) {\n        return (options.client ?? client).put<PutQueueConfigResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/event/queue/config/{queueType}/{queueName}',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Test connectivity for a given queue using a workflow with EVENT task and an EventHandler\n     */\n    public static testConnectivity<ThrowOnError extends boolean = false>(options: Options<TestConnectivityData, ThrowOnError>) {\n        return (options.client ?? client).post<TestConnectivityResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/event/queue/connectivity',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Get event handlers for a given event\n     */\n    public static getEventHandlersForEvent<ThrowOnError extends boolean = false>(options: Options<GetEventHandlersForEventData, ThrowOnError>) {\n        return (options.client ?? client).get<GetEventHandlersForEventResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/event/{event}',\n            ...options\n        });\n    }\n    \n    /**\n     * Remove an event handler\n     */\n    public static removeEventHandlerStatus<ThrowOnError extends boolean = false>(options: Options<RemoveEventHandlerStatusData, ThrowOnError>) {\n        return (options.client ?? client).delete<RemoveEventHandlerStatusResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/event/{name}',\n            ...options\n        });\n    }\n    \n    /**\n     * Delete a tag for event handler\n     */\n    public static deleteTagForEventHandler<ThrowOnError extends boolean = false>(options: Options<DeleteTagForEventHandlerData, ThrowOnError>) {\n        return (options.client ?? client).delete<DeleteTagForEventHandlerResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/event/{name}/tags',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Get tags by event handler\n     */\n    public static getTagsForEventHandler<ThrowOnError extends boolean = false>(options: Options<GetTagsForEventHandlerData, ThrowOnError>) {\n        return (options.client ?? client).get<GetTagsForEventHandlerResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/event/{name}/tags',\n            ...options\n        });\n    }\n    \n    /**\n     * Put a tag to event handler\n     */\n    public static putTagForEventHandler<ThrowOnError extends boolean = false>(options: Options<PutTagForEventHandlerData, ThrowOnError>) {\n        return (options.client ?? client).put<PutTagForEventHandlerResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/event/{name}/tags',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n}\n\nexport class EventExecutionResource {\n    /**\n     * Get All active Event Handlers\n     */\n    public static getEventHandlersForEvent1<ThrowOnError extends boolean = false>(options?: Options<GetEventHandlersForEvent1Data, ThrowOnError>) {\n        return (options?.client ?? client).get<GetEventHandlersForEvent1Responses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/event/execution',\n            ...options\n        });\n    }\n    \n    /**\n     * Get event handlers for a given event\n     */\n    public static getEventHandlersForEvent2<ThrowOnError extends boolean = false>(options: Options<GetEventHandlersForEvent2Data, ThrowOnError>) {\n        return (options.client ?? client).get<GetEventHandlersForEvent2Responses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/event/execution/{eventHandlerName}',\n            ...options\n        });\n    }\n}\n\nexport class EventMessageResource {\n    /**\n     * Get all event handlers with statistics\n     */\n    public static getEvents<ThrowOnError extends boolean = false>(options?: Options<GetEventsData, ThrowOnError>) {\n        return (options?.client ?? client).get<GetEventsResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/event/message',\n            ...options\n        });\n    }\n    \n    /**\n     * Get event messages for a given event\n     */\n    public static getMessages<ThrowOnError extends boolean = false>(options: Options<GetMessagesData, ThrowOnError>) {\n        return (options.client ?? client).get<GetMessagesResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/event/message/{event}',\n            ...options\n        });\n    }\n}\n\nexport class GlobalSchemaResource {\n    /**\n     * Save schema\n     */\n    public static save1<ThrowOnError extends boolean = false>(options: Options<Save1Data, ThrowOnError>) {\n        return (options.client ?? client).post<Save1Responses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/global_schema',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Get schema by name with latest version\n     */\n    public static getSchemaByNameWithLatestVersion1<ThrowOnError extends boolean = false>(options: Options<GetSchemaByNameWithLatestVersion1Data, ThrowOnError>) {\n        return (options.client ?? client).get<GetSchemaByNameWithLatestVersion1Responses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/global_schema/{name}',\n            ...options\n        });\n    }\n}\n\nexport class GroupResource {\n    /**\n     * Get all groups\n     */\n    public static listGroups<ThrowOnError extends boolean = false>(options?: Options<ListGroupsData, ThrowOnError>) {\n        return (options?.client ?? client).get<ListGroupsResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/groups',\n            ...options\n        });\n    }\n    \n    /**\n     * Get the permissions this group has over workflows and tasks\n     */\n    public static getGrantedPermissions1<ThrowOnError extends boolean = false>(options: Options<GetGrantedPermissions1Data, ThrowOnError>) {\n        return (options.client ?? client).get<GetGrantedPermissions1Responses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/groups/{groupId}/permissions',\n            ...options\n        });\n    }\n    \n    /**\n     * Remove users from group\n     */\n    public static removeUsersFromGroup<ThrowOnError extends boolean = false>(options: Options<RemoveUsersFromGroupData, ThrowOnError>) {\n        return (options.client ?? client).delete<RemoveUsersFromGroupResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/groups/{groupId}/users',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Add users to group\n     */\n    public static addUsersToGroup<ThrowOnError extends boolean = false>(options: Options<AddUsersToGroupData, ThrowOnError>) {\n        return (options.client ?? client).post<AddUsersToGroupResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/groups/{groupId}/users',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Remove user from group\n     */\n    public static removeUserFromGroup<ThrowOnError extends boolean = false>(options: Options<RemoveUserFromGroupData, ThrowOnError>) {\n        return (options.client ?? client).delete<RemoveUserFromGroupResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/groups/{groupId}/users/{userId}',\n            ...options\n        });\n    }\n    \n    /**\n     * Add user to group\n     */\n    public static addUserToGroup<ThrowOnError extends boolean = false>(options: Options<AddUserToGroupData, ThrowOnError>) {\n        return (options.client ?? client).post<AddUserToGroupResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/groups/{groupId}/users/{userId}',\n            ...options\n        });\n    }\n    \n    /**\n     * Delete a group\n     */\n    public static deleteGroup<ThrowOnError extends boolean = false>(options: Options<DeleteGroupData, ThrowOnError>) {\n        return (options.client ?? client).delete<DeleteGroupResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/groups/{id}',\n            ...options\n        });\n    }\n    \n    /**\n     * Get a group by id\n     */\n    public static getGroup<ThrowOnError extends boolean = false>(options: Options<GetGroupData, ThrowOnError>) {\n        return (options.client ?? client).get<GetGroupResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/groups/{id}',\n            ...options\n        });\n    }\n    \n    /**\n     * Create or update a group\n     */\n    public static upsertGroup<ThrowOnError extends boolean = false>(options: Options<UpsertGroupData, ThrowOnError>) {\n        return (options.client ?? client).put<UpsertGroupResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/groups/{id}',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Get all users in group\n     */\n    public static getUsersInGroup<ThrowOnError extends boolean = false>(options: Options<GetUsersInGroupData, ThrowOnError>) {\n        return (options.client ?? client).get<GetUsersInGroupResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/groups/{id}/users',\n            ...options\n        });\n    }\n}\n\nexport class HumanTask {\n    /**\n     * API for backpopulating index data\n     */\n    public static backPopulateFullTextIndex<ThrowOnError extends boolean = false>(options: Options<BackPopulateFullTextIndexData, ThrowOnError>) {\n        return (options.client ?? client).get<BackPopulateFullTextIndexResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/human/tasks/backPopulateFullTextIndex',\n            ...options\n        });\n    }\n    \n    /**\n     * If the workflow is disconnected from tasks, this API can be used to clean up (in bulk)\n     */\n    public static deleteTaskFromHumanTaskRecords<ThrowOnError extends boolean = false>(options: Options<DeleteTaskFromHumanTaskRecordsData, ThrowOnError>) {\n        return (options.client ?? client).delete<DeleteTaskFromHumanTaskRecordsResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/human/tasks/delete',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * If the workflow is disconnected from tasks, this API can be used to clean up\n     */\n    public static deleteTaskFromHumanTaskRecords1<ThrowOnError extends boolean = false>(options: Options<DeleteTaskFromHumanTaskRecords1Data, ThrowOnError>) {\n        return (options.client ?? client).delete<DeleteTaskFromHumanTaskRecords1Responses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/human/tasks/delete/{taskId}',\n            ...options\n        });\n    }\n    \n    /**\n     * Get list of task display names applicable for the user\n     */\n    public static getTaskDisplayNames<ThrowOnError extends boolean = false>(options: Options<GetTaskDisplayNamesData, ThrowOnError>) {\n        return (options.client ?? client).get<GetTaskDisplayNamesResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/human/tasks/getTaskDisplayNames',\n            ...options\n        });\n    }\n    \n    /**\n     * Search human tasks\n     */\n    public static search<ThrowOnError extends boolean = false>(options: Options<SearchData, ThrowOnError>) {\n        return (options.client ?? client).post<SearchResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/human/tasks/search',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Update task output, optionally complete\n     */\n    public static updateTaskOutputByRef<ThrowOnError extends boolean = false>(options: Options<UpdateTaskOutputByRefData, ThrowOnError>) {\n        return (options.client ?? client).post<UpdateTaskOutputByRefResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/human/tasks/update/taskRef',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Get a task\n     */\n    public static getTask1<ThrowOnError extends boolean = false>(options: Options<GetTask1Data, ThrowOnError>) {\n        return (options.client ?? client).get<GetTask1Responses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/human/tasks/{taskId}',\n            ...options\n        });\n    }\n    \n    /**\n     * Claim a task by authenticated Conductor user\n     */\n    public static claimTask<ThrowOnError extends boolean = false>(options: Options<ClaimTaskData, ThrowOnError>) {\n        return (options.client ?? client).post<ClaimTaskResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/human/tasks/{taskId}/claim',\n            ...options\n        });\n    }\n    \n    /**\n     * Claim a task to an external user\n     */\n    public static assignAndClaim<ThrowOnError extends boolean = false>(options: Options<AssignAndClaimData, ThrowOnError>) {\n        return (options.client ?? client).post<AssignAndClaimResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/human/tasks/{taskId}/externalUser/{userId}',\n            ...options\n        });\n    }\n    \n    /**\n     * Reassign a task without completing it\n     */\n    public static reassignTask<ThrowOnError extends boolean = false>(options: Options<ReassignTaskData, ThrowOnError>) {\n        return (options.client ?? client).post<ReassignTaskResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/human/tasks/{taskId}/reassign',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Release a task without completing it\n     */\n    public static releaseTask<ThrowOnError extends boolean = false>(options: Options<ReleaseTaskData, ThrowOnError>) {\n        return (options.client ?? client).post<ReleaseTaskResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/human/tasks/{taskId}/release',\n            ...options\n        });\n    }\n    \n    /**\n     * If a task is assigned to a user, this API can be used to skip that assignment and move to the next assignee\n     */\n    public static skipTask<ThrowOnError extends boolean = false>(options: Options<SkipTaskData, ThrowOnError>) {\n        return (options.client ?? client).post<SkipTaskResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/human/tasks/{taskId}/skip',\n            ...options\n        });\n    }\n    \n    /**\n     * Update task output, optionally complete\n     */\n    public static updateTaskOutput<ThrowOnError extends boolean = false>(options: Options<UpdateTaskOutputData, ThrowOnError>) {\n        return (options.client ?? client).post<UpdateTaskOutputResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/human/tasks/{taskId}/update',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * List all user form templates or get templates by name, or a template by name and version\n     */\n    public static getAllTemplates<ThrowOnError extends boolean = false>(options?: Options<GetAllTemplatesData, ThrowOnError>) {\n        return (options?.client ?? client).get<GetAllTemplatesResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/human/template',\n            ...options\n        });\n    }\n    \n    /**\n     * Save user form template\n     */\n    public static saveTemplate<ThrowOnError extends boolean = false>(options: Options<SaveTemplateData, ThrowOnError>) {\n        return (options.client ?? client).post<SaveTemplateResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/human/template',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Save user form template\n     */\n    public static saveTemplates<ThrowOnError extends boolean = false>(options: Options<SaveTemplatesData, ThrowOnError>) {\n        return (options.client ?? client).post<SaveTemplatesResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/human/template/bulk',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Get user form by human task id\n     */\n    public static getTemplateByTaskId<ThrowOnError extends boolean = false>(options: Options<GetTemplateByTaskIdData, ThrowOnError>) {\n        return (options.client ?? client).get<GetTemplateByTaskIdResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/human/template/{humanTaskId}',\n            ...options\n        });\n    }\n    \n    /**\n     * Delete all versions of user form template by name\n     */\n    public static deleteTemplateByName<ThrowOnError extends boolean = false>(options: Options<DeleteTemplateByNameData, ThrowOnError>) {\n        return (options.client ?? client).delete<DeleteTemplateByNameResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/human/template/{name}',\n            ...options\n        });\n    }\n    \n    /**\n     * Delete a version of form template by name\n     */\n    public static deleteTemplatesByNameAndVersion<ThrowOnError extends boolean = false>(options: Options<DeleteTemplatesByNameAndVersionData, ThrowOnError>) {\n        return (options.client ?? client).delete<DeleteTemplatesByNameAndVersionResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/human/template/{name}/{version}',\n            ...options\n        });\n    }\n    \n    /**\n     * Get user form template by name and version\n     */\n    public static getTemplateByNameAndVersion<ThrowOnError extends boolean = false>(options: Options<GetTemplateByNameAndVersionData, ThrowOnError>) {\n        return (options.client ?? client).get<GetTemplateByNameAndVersionResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/human/template/{name}/{version}',\n            ...options\n        });\n    }\n}\n\nexport class HumanTaskResource {\n    /**\n     * Get Conductor task by id (for human tasks only)\n     */\n    public static getConductorTaskById<ThrowOnError extends boolean = false>(options: Options<GetConductorTaskByIdData, ThrowOnError>) {\n        return (options.client ?? client).get<GetConductorTaskByIdResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/human/tasks/{taskId}/conductorTask',\n            ...options\n        });\n    }\n}\n\nexport class UserForm {\n    /**\n     * List all user form templates or get templates by name, or a template by name and version\n     */\n    public static getAllTemplates<ThrowOnError extends boolean = false>(options?: Options<GetAllTemplatesData, ThrowOnError>) {\n        return (options?.client ?? client).get<GetAllTemplatesResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/human/template',\n            ...options\n        });\n    }\n    \n    /**\n     * Save user form template\n     */\n    public static saveTemplate<ThrowOnError extends boolean = false>(options: Options<SaveTemplateData, ThrowOnError>) {\n        return (options.client ?? client).post<SaveTemplateResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/human/template',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Save user form template\n     */\n    public static saveTemplates<ThrowOnError extends boolean = false>(options: Options<SaveTemplatesData, ThrowOnError>) {\n        return (options.client ?? client).post<SaveTemplatesResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/human/template/bulk',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Get user form by human task id\n     */\n    public static getTemplateByTaskId<ThrowOnError extends boolean = false>(options: Options<GetTemplateByTaskIdData, ThrowOnError>) {\n        return (options.client ?? client).get<GetTemplateByTaskIdResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/human/template/{humanTaskId}',\n            ...options\n        });\n    }\n    \n    /**\n     * Delete all versions of user form template by name\n     */\n    public static deleteTemplateByName<ThrowOnError extends boolean = false>(options: Options<DeleteTemplateByNameData, ThrowOnError>) {\n        return (options.client ?? client).delete<DeleteTemplateByNameResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/human/template/{name}',\n            ...options\n        });\n    }\n    \n    /**\n     * Get user form template by name and version\n     */\n    public static getTemplateByNameAndVersion<ThrowOnError extends boolean = false>(options: Options<GetTemplateByNameAndVersionData, ThrowOnError>) {\n        return (options.client ?? client).get<GetTemplateByNameAndVersionResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/human/template/{name}/{version}',\n            ...options\n        });\n    }\n}\n\nexport class UserFormTemplateResource {\n    /**\n     * Delete a tag for template name\n     */\n    public static deleteTagForUserFormTemplate<ThrowOnError extends boolean = false>(options: Options<DeleteTagForUserFormTemplateData, ThrowOnError>) {\n        return (options.client ?? client).delete<DeleteTagForUserFormTemplateResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/human/template/{name}/tags',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Get tags by template name\n     */\n    public static getTagsForUserFormTemplate<ThrowOnError extends boolean = false>(options: Options<GetTagsForUserFormTemplateData, ThrowOnError>) {\n        return (options.client ?? client).get<GetTagsForUserFormTemplateResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/human/template/{name}/tags',\n            ...options\n        });\n    }\n    \n    /**\n     * Put a tag to template name\n     */\n    public static putTagForUserFormTemplate<ThrowOnError extends boolean = false>(options: Options<PutTagForUserFormTemplateData, ThrowOnError>) {\n        return (options.client ?? client).put<PutTagForUserFormTemplateResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/human/template/{name}/tags',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n}\n\nexport class IntegrationResource {\n    /**\n     * Get all Integrations\n     */\n    public static getAllIntegrations<ThrowOnError extends boolean = false>(options?: Options<GetAllIntegrationsData, ThrowOnError>) {\n        return (options?.client ?? client).get<GetAllIntegrationsResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/integrations/',\n            ...options\n        });\n    }\n    \n    /**\n     * Save all Integrations\n     */\n    public static saveAllIntegrations<ThrowOnError extends boolean = false>(options: Options<SaveAllIntegrationsData, ThrowOnError>) {\n        return (options.client ?? client).post<SaveAllIntegrationsResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/integrations/',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Get Integrations Providers and Integrations combo\n     */\n    public static getProvidersAndIntegrations<ThrowOnError extends boolean = false>(options?: Options<GetProvidersAndIntegrationsData, ThrowOnError>) {\n        return (options?.client ?? client).get<GetProvidersAndIntegrationsResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/integrations/all',\n            ...options\n        });\n    }\n    \n    /**\n     * Get Integration provider definitions\n     */\n    public static getIntegrationProviderDefs<ThrowOnError extends boolean = false>(options?: Options<GetIntegrationProviderDefsData, ThrowOnError>) {\n        return (options?.client ?? client).get<GetIntegrationProviderDefsResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/integrations/def',\n            ...options\n        });\n    }\n    \n    /**\n     * upsert an integration definition\n     */\n    public static registerIntegration<ThrowOnError extends boolean = false>(options: Options<RegisterIntegrationData, ThrowOnError>) {\n        return (options.client ?? client).post<RegisterIntegrationResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/integrations/def/register',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Get an integration definition\n     */\n    public static getIntegrationDef<ThrowOnError extends boolean = false>(options: Options<GetIntegrationDefData, ThrowOnError>) {\n        return (options.client ?? client).get<GetIntegrationDefResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/integrations/def/{name}',\n            ...options\n        });\n    }\n    \n    /**\n     * Record Event Stats\n     */\n    public static recordEventStats<ThrowOnError extends boolean = false>(options: Options<RecordEventStatsData, ThrowOnError>) {\n        return (options.client ?? client).post<RecordEventStatsResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/integrations/eventStats/{type}',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Get all Integrations Providers\n     */\n    public static getIntegrationProviders<ThrowOnError extends boolean = false>(options?: Options<GetIntegrationProvidersData, ThrowOnError>) {\n        return (options?.client ?? client).get<GetIntegrationProvidersResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/integrations/provider',\n            ...options\n        });\n    }\n    \n    /**\n     * Get the list of prompt templates associated with an integration\n     */\n    public static getPromptsWithIntegration<ThrowOnError extends boolean = false>(options: Options<GetPromptsWithIntegrationData, ThrowOnError>) {\n        return (options.client ?? client).get<GetPromptsWithIntegrationResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/integrations/provider/{integration_provider}/integration/{integration_name}/prompt',\n            ...options\n        });\n    }\n    \n    /**\n     * Associate a Prompt Template with an Integration\n     */\n    public static associatePromptWithIntegration<ThrowOnError extends boolean = false>(options: Options<AssociatePromptWithIntegrationData, ThrowOnError>) {\n        return (options.client ?? client).post<AssociatePromptWithIntegrationResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/integrations/provider/{integration_provider}/integration/{integration_name}/prompt/{prompt_name}',\n            ...options\n        });\n    }\n    \n    /**\n     * Delete an Integration Provider\n     */\n    public static deleteIntegrationProvider<ThrowOnError extends boolean = false>(options: Options<DeleteIntegrationProviderData, ThrowOnError>) {\n        return (options.client ?? client).delete<DeleteIntegrationProviderResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/integrations/provider/{name}',\n            ...options\n        });\n    }\n    \n    /**\n     * Get Integration provider\n     */\n    public static getIntegrationProvider<ThrowOnError extends boolean = false>(options: Options<GetIntegrationProviderData, ThrowOnError>) {\n        return (options.client ?? client).get<GetIntegrationProviderResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/integrations/provider/{name}',\n            ...options\n        });\n    }\n    \n    /**\n     * Create or Update Integration provider\n     */\n    public static saveIntegrationProvider<ThrowOnError extends boolean = false>(options: Options<SaveIntegrationProviderData, ThrowOnError>) {\n        return (options.client ?? client).post<SaveIntegrationProviderResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/integrations/provider/{name}',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Get Integrations of an Integration Provider\n     */\n    public static getIntegrationApis<ThrowOnError extends boolean = false>(options: Options<GetIntegrationApisData, ThrowOnError>) {\n        return (options.client ?? client).get<GetIntegrationApisResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/integrations/provider/{name}/integration',\n            ...options\n        });\n    }\n    \n    /**\n     * Get Integrations Available for an Integration Provider\n     */\n    public static getIntegrationAvailableApis<ThrowOnError extends boolean = false>(options: Options<GetIntegrationAvailableApisData, ThrowOnError>) {\n        return (options.client ?? client).get<GetIntegrationAvailableApisResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/integrations/provider/{name}/integration/all',\n            ...options\n        });\n    }\n    \n    /**\n     * Delete an Integration\n     */\n    public static deleteIntegrationApi<ThrowOnError extends boolean = false>(options: Options<DeleteIntegrationApiData, ThrowOnError>) {\n        return (options.client ?? client).delete<DeleteIntegrationApiResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/integrations/provider/{name}/integration/{integration_name}',\n            ...options\n        });\n    }\n    \n    /**\n     * Get Integration details\n     */\n    public static getIntegrationApi<ThrowOnError extends boolean = false>(options: Options<GetIntegrationApiData, ThrowOnError>) {\n        return (options.client ?? client).get<GetIntegrationApiResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/integrations/provider/{name}/integration/{integration_name}',\n            ...options\n        });\n    }\n    \n    /**\n     * Create or Update Integration\n     */\n    public static saveIntegrationApi<ThrowOnError extends boolean = false>(options: Options<SaveIntegrationApiData, ThrowOnError>) {\n        return (options.client ?? client).post<SaveIntegrationApiResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/integrations/provider/{name}/integration/{integration_name}',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Delete a tag for Integration\n     */\n    public static deleteTagForIntegration<ThrowOnError extends boolean = false>(options: Options<DeleteTagForIntegrationData, ThrowOnError>) {\n        return (options.client ?? client).delete<DeleteTagForIntegrationResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/integrations/provider/{name}/integration/{integration_name}/tags',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Get tags by Integration\n     */\n    public static getTagsForIntegration<ThrowOnError extends boolean = false>(options: Options<GetTagsForIntegrationData, ThrowOnError>) {\n        return (options.client ?? client).get<GetTagsForIntegrationResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/integrations/provider/{name}/integration/{integration_name}/tags',\n            ...options\n        });\n    }\n    \n    /**\n     * Put a tag to Integration\n     */\n    public static putTagForIntegration<ThrowOnError extends boolean = false>(options: Options<PutTagForIntegrationData, ThrowOnError>) {\n        return (options.client ?? client).put<PutTagForIntegrationResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/integrations/provider/{name}/integration/{integration_name}/tags',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Delete a tag for Integration Provider\n     */\n    public static deleteTagForIntegrationProvider<ThrowOnError extends boolean = false>(options: Options<DeleteTagForIntegrationProviderData, ThrowOnError>) {\n        return (options.client ?? client).delete<DeleteTagForIntegrationProviderResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/integrations/provider/{name}/tags',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Get tags by Integration Provider\n     */\n    public static getTagsForIntegrationProvider<ThrowOnError extends boolean = false>(options: Options<GetTagsForIntegrationProviderData, ThrowOnError>) {\n        return (options.client ?? client).get<GetTagsForIntegrationProviderResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/integrations/provider/{name}/tags',\n            ...options\n        });\n    }\n    \n    /**\n     * Put a tag to Integration Provider\n     */\n    public static putTagForIntegrationProvider<ThrowOnError extends boolean = false>(options: Options<PutTagForIntegrationProviderData, ThrowOnError>) {\n        return (options.client ?? client).put<PutTagForIntegrationProviderResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/integrations/provider/{name}/tags',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n}\n\nexport class Llm {\n    /**\n     * Get the Token Limit for an integration\n     */\n    public static getTokenLimit<ThrowOnError extends boolean = false>(options: Options<GetTokenLimitData, ThrowOnError>) {\n        return (options.client ?? client).get<GetTokenLimitResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/integrations/llm/{name}/token',\n            ...options\n        });\n    }\n    \n    /**\n     * Register Token Limit for an integration\n     */\n    public static updateTokenLimit<ThrowOnError extends boolean = false>(options: Options<UpdateTokenLimitData, ThrowOnError>) {\n        return (options.client ?? client).post<UpdateTokenLimitResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/integrations/llm/{name}/token',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Get Token Usage by Integration provider\n     */\n    public static getTokenUsage<ThrowOnError extends boolean = false>(options: Options<GetTokenUsageData, ThrowOnError>) {\n        return (options.client ?? client).get<GetTokenUsageResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/integrations/llm/{name}/token/history',\n            ...options\n        });\n    }\n}\n\nexport class LimitsResource {\n    public static get2<ThrowOnError extends boolean = false>(options?: Options<Get2Data, ThrowOnError>) {\n        return (options?.client ?? client).get<Get2Responses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/limits',\n            ...options\n        });\n    }\n}\n\nexport class Tags {\n    /**\n     * List all tags\n     */\n    public static getTags1<ThrowOnError extends boolean = false>(options?: Options<GetTags1Data, ThrowOnError>) {\n        return (options?.client ?? client).get<GetTags1Responses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/metadata/tags',\n            ...options\n        });\n    }\n    \n    /**\n     * Removes the tag of the task\n     */\n    public static deleteTaskTag<ThrowOnError extends boolean = false>(options: Options<DeleteTaskTagData, ThrowOnError>) {\n        return (options.client ?? client).delete<DeleteTaskTagResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/metadata/task/{taskName}/tags',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Returns all the tags of the task\n     */\n    public static getTaskTags<ThrowOnError extends boolean = false>(options: Options<GetTaskTagsData, ThrowOnError>) {\n        return (options.client ?? client).get<GetTaskTagsResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/metadata/task/{taskName}/tags',\n            ...options\n        });\n    }\n    \n    /**\n     * Adds the tag to the task\n     */\n    public static addTaskTag<ThrowOnError extends boolean = false>(options: Options<AddTaskTagData, ThrowOnError>) {\n        return (options.client ?? client).post<AddTaskTagResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/metadata/task/{taskName}/tags',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Sets (replaces existing) the tags to the task\n     */\n    public static setTaskTags<ThrowOnError extends boolean = false>(options: Options<SetTaskTagsData, ThrowOnError>) {\n        return (options.client ?? client).put<SetTaskTagsResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/metadata/task/{taskName}/tags',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Removes the tag of the workflow\n     */\n    public static deleteWorkflowTag<ThrowOnError extends boolean = false>(options: Options<DeleteWorkflowTagData, ThrowOnError>) {\n        return (options.client ?? client).delete<DeleteWorkflowTagResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/metadata/workflow/{name}/tags',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Returns all the tags of the workflow\n     */\n    public static getWorkflowTags<ThrowOnError extends boolean = false>(options: Options<GetWorkflowTagsData, ThrowOnError>) {\n        return (options.client ?? client).get<GetWorkflowTagsResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/metadata/workflow/{name}/tags',\n            ...options\n        });\n    }\n    \n    /**\n     * Adds the tag to the workflow\n     */\n    public static addWorkflowTag<ThrowOnError extends boolean = false>(options: Options<AddWorkflowTagData, ThrowOnError>) {\n        return (options.client ?? client).post<AddWorkflowTagResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/metadata/workflow/{name}/tags',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Set (replaces all existing) the tags of the workflow\n     */\n    public static setWorkflowTags<ThrowOnError extends boolean = false>(options: Options<SetWorkflowTagsData, ThrowOnError>) {\n        return (options.client ?? client).put<SetWorkflowTagsResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/metadata/workflow/{name}/tags',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n}\n\nexport class MetadataResource {\n    /**\n     * Gets all task definition\n     */\n    public static getTaskDefs<ThrowOnError extends boolean = false>(options?: Options<GetTaskDefsData, ThrowOnError>) {\n        return (options?.client ?? client).get<GetTaskDefsResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/metadata/taskdefs',\n            ...options\n        });\n    }\n    \n    /**\n     * Create or update task definition(s)\n     */\n    public static registerTaskDef<ThrowOnError extends boolean = false>(options: Options<RegisterTaskDefData, ThrowOnError>) {\n        return (options.client ?? client).post<RegisterTaskDefResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/metadata/taskdefs',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Update an existing task\n     */\n    public static updateTaskDef<ThrowOnError extends boolean = false>(options: Options<UpdateTaskDefData, ThrowOnError>) {\n        return (options.client ?? client).put<UpdateTaskDefResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/metadata/taskdefs',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Remove a task definition\n     */\n    public static unregisterTaskDef<ThrowOnError extends boolean = false>(options: Options<UnregisterTaskDefData, ThrowOnError>) {\n        return (options.client ?? client).delete<UnregisterTaskDefResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/metadata/taskdefs/{tasktype}',\n            ...options\n        });\n    }\n    \n    /**\n     * Gets the task definition\n     */\n    public static getTaskDef<ThrowOnError extends boolean = false>(options: Options<GetTaskDefData, ThrowOnError>) {\n        return (options.client ?? client).get<GetTaskDefResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/metadata/taskdefs/{tasktype}',\n            ...options\n        });\n    }\n    \n    /**\n     * Retrieves all workflow definition along with blueprint\n     */\n    public static getWorkflowDefs<ThrowOnError extends boolean = false>(options?: Options<GetWorkflowDefsData, ThrowOnError>) {\n        return (options?.client ?? client).get<GetWorkflowDefsResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/metadata/workflow',\n            ...options\n        });\n    }\n    \n    /**\n     * Create a new workflow definition\n     */\n    public static create<ThrowOnError extends boolean = false>(options: Options<CreateData, ThrowOnError>) {\n        return (options.client ?? client).post<CreateResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/metadata/workflow',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Create or update workflow definition(s)\n     */\n    public static update<ThrowOnError extends boolean = false>(options: Options<UpdateData, ThrowOnError>) {\n        return (options.client ?? client).put<UpdateResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/metadata/workflow',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Imports bpmn workflow\n     */\n    public static uploadBpmnFile<ThrowOnError extends boolean = false>(options: Options<UploadBpmnFileData, ThrowOnError>) {\n        return (options.client ?? client).post<UploadBpmnFileResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/metadata/workflow-importer/import-bpm',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Upload all workflows and tasks definitions to Object storage if configured\n     */\n    public static uploadWorkflowsAndTasksDefinitionsToS3<ThrowOnError extends boolean = false>(options?: Options<UploadWorkflowsAndTasksDefinitionsToS3Data, ThrowOnError>) {\n        return (options?.client ?? client).post<UploadWorkflowsAndTasksDefinitionsToS3Responses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/metadata/workflow-task-defs/upload',\n            ...options\n        });\n    }\n    \n    /**\n     * Retrieves workflow definition along with blueprint\n     */\n    public static get1<ThrowOnError extends boolean = false>(options: Options<Get1Data, ThrowOnError>) {\n        return (options.client ?? client).get<Get1Responses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/metadata/workflow/{name}',\n            ...options\n        });\n    }\n    \n    /**\n     * Removes workflow definition. It does not remove workflows associated with the definition.\n     */\n    public static unregisterWorkflowDef<ThrowOnError extends boolean = false>(options: Options<UnregisterWorkflowDefData, ThrowOnError>) {\n        return (options.client ?? client).delete<UnregisterWorkflowDefResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/metadata/workflow/{name}/{version}',\n            ...options\n        });\n    }\n}\n\nexport class WebhooksConfigResource {\n    public static getAllWebhook<ThrowOnError extends boolean = false>(options?: Options<GetAllWebhookData, ThrowOnError>) {\n        return (options?.client ?? client).get<GetAllWebhookResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/metadata/webhook',\n            ...options\n        });\n    }\n    \n    public static createWebhook<ThrowOnError extends boolean = false>(options: Options<CreateWebhookData, ThrowOnError>) {\n        return (options.client ?? client).post<CreateWebhookResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/metadata/webhook',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    public static deleteWebhook<ThrowOnError extends boolean = false>(options: Options<DeleteWebhookData, ThrowOnError>) {\n        return (options.client ?? client).delete<DeleteWebhookResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/metadata/webhook/{id}',\n            ...options\n        });\n    }\n    \n    public static getWebhook<ThrowOnError extends boolean = false>(options: Options<GetWebhookData, ThrowOnError>) {\n        return (options.client ?? client).get<GetWebhookResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/metadata/webhook/{id}',\n            ...options\n        });\n    }\n    \n    public static updateWebhook<ThrowOnError extends boolean = false>(options: Options<UpdateWebhookData, ThrowOnError>) {\n        return (options.client ?? client).put<UpdateWebhookResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/metadata/webhook/{id}',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Delete a tag for webhook id\n     */\n    public static deleteTagForWebhook<ThrowOnError extends boolean = false>(options: Options<DeleteTagForWebhookData, ThrowOnError>) {\n        return (options.client ?? client).delete<DeleteTagForWebhookResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/metadata/webhook/{id}/tags',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Get tags by webhook id\n     */\n    public static getTagsForWebhook<ThrowOnError extends boolean = false>(options: Options<GetTagsForWebhookData, ThrowOnError>) {\n        return (options.client ?? client).get<GetTagsForWebhookResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/metadata/webhook/{id}/tags',\n            ...options\n        });\n    }\n    \n    /**\n     * Put a tag to webhook id\n     */\n    public static putTagForWebhook<ThrowOnError extends boolean = false>(options: Options<PutTagForWebhookData, ThrowOnError>) {\n        return (options.client ?? client).put<PutTagForWebhookResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/metadata/webhook/{id}/tags',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n}\n\nexport class PromptResource {\n    /**\n     * Get Templates\n     */\n    public static getMessageTemplates<ThrowOnError extends boolean = false>(options?: Options<GetMessageTemplatesData, ThrowOnError>) {\n        return (options?.client ?? client).get<GetMessageTemplatesResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/prompts',\n            ...options\n        });\n    }\n    \n    /**\n     * Create message templates in bulk\n     */\n    public static createMessageTemplates<ThrowOnError extends boolean = false>(options: Options<CreateMessageTemplatesData, ThrowOnError>) {\n        return (options.client ?? client).post<CreateMessageTemplatesResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/prompts/',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Test Prompt Template\n     */\n    public static testMessageTemplate<ThrowOnError extends boolean = false>(options: Options<TestMessageTemplateData, ThrowOnError>) {\n        return (options.client ?? client).post<TestMessageTemplateResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/prompts/test',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Delete Template\n     */\n    public static deleteMessageTemplate<ThrowOnError extends boolean = false>(options: Options<DeleteMessageTemplateData, ThrowOnError>) {\n        return (options.client ?? client).delete<DeleteMessageTemplateResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/prompts/{name}',\n            ...options\n        });\n    }\n    \n    /**\n     * Get Template\n     */\n    public static getMessageTemplate<ThrowOnError extends boolean = false>(options: Options<GetMessageTemplateData, ThrowOnError>) {\n        return (options.client ?? client).get<GetMessageTemplateResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/prompts/{name}',\n            ...options\n        });\n    }\n    \n    /**\n     * Create or Update a template\n     */\n    public static saveMessageTemplate<ThrowOnError extends boolean = false>(options: Options<SaveMessageTemplateData, ThrowOnError>) {\n        return (options.client ?? client).post<SaveMessageTemplateResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/prompts/{name}',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Create a template\n     */\n    public static updateMessageTemplate<ThrowOnError extends boolean = false>(options: Options<UpdateMessageTemplateData, ThrowOnError>) {\n        return (options.client ?? client).put<UpdateMessageTemplateResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/prompts/{name}',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Delete a tag for Prompt Template\n     */\n    public static deleteTagForPromptTemplate<ThrowOnError extends boolean = false>(options: Options<DeleteTagForPromptTemplateData, ThrowOnError>) {\n        return (options.client ?? client).delete<DeleteTagForPromptTemplateResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/prompts/{name}/tags',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Get tags by Prompt Template\n     */\n    public static getTagsForPromptTemplate<ThrowOnError extends boolean = false>(options: Options<GetTagsForPromptTemplateData, ThrowOnError>) {\n        return (options.client ?? client).get<GetTagsForPromptTemplateResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/prompts/{name}/tags',\n            ...options\n        });\n    }\n    \n    /**\n     * Put a tag to Prompt Template\n     */\n    public static putTagForPromptTemplate<ThrowOnError extends boolean = false>(options: Options<PutTagForPromptTemplateData, ThrowOnError>) {\n        return (options.client ?? client).put<PutTagForPromptTemplateResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/prompts/{name}/tags',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Get all versions of a Template\n     */\n    public static getMessageTemplateVersions<ThrowOnError extends boolean = false>(options: Options<GetMessageTemplateVersionsData, ThrowOnError>) {\n        return (options.client ?? client).get<GetMessageTemplateVersionsResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/prompts/{name}/versions',\n            ...options\n        });\n    }\n    \n    /**\n     * Delete Template\n     */\n    public static deleteMessageTemplate1<ThrowOnError extends boolean = false>(options: Options<DeleteMessageTemplate1Data, ThrowOnError>) {\n        return (options.client ?? client).delete<DeleteMessageTemplate1Responses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/prompts/{name}/versions/{version}',\n            ...options\n        });\n    }\n}\n\nexport class QueueAdminResource {\n    /**\n     * Get Queue Names\n     */\n    public static names<ThrowOnError extends boolean = false>(options?: Options<NamesData, ThrowOnError>) {\n        return (options?.client ?? client).get<NamesResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/queue/',\n            ...options\n        });\n    }\n    \n    /**\n     * Get the queue length\n     */\n    public static size1<ThrowOnError extends boolean = false>(options?: Options<Size1Data, ThrowOnError>) {\n        return (options?.client ?? client).get<Size1Responses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/queue/size',\n            ...options\n        });\n    }\n}\n\nexport class ServiceRegistryResource {\n    public static getRegisteredServices<ThrowOnError extends boolean = false>(options?: Options<GetRegisteredServicesData, ThrowOnError>) {\n        return (options?.client ?? client).get<GetRegisteredServicesResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/registry/service',\n            ...options\n        });\n    }\n    \n    public static addOrUpdateService<ThrowOnError extends boolean = false>(options: Options<AddOrUpdateServiceData, ThrowOnError>) {\n        return (options.client ?? client).post<AddOrUpdateServiceResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/registry/service',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    public static getAllProtos<ThrowOnError extends boolean = false>(options: Options<GetAllProtosData, ThrowOnError>) {\n        return (options.client ?? client).get<GetAllProtosResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/registry/service/protos/{registryName}',\n            ...options\n        });\n    }\n    \n    public static deleteProto<ThrowOnError extends boolean = false>(options: Options<DeleteProtoData, ThrowOnError>) {\n        return (options.client ?? client).delete<DeleteProtoResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/registry/service/protos/{registryName}/{filename}',\n            ...options\n        });\n    }\n    \n    public static getProtoData<ThrowOnError extends boolean = false>(options: Options<GetProtoDataData, ThrowOnError>) {\n        return (options.client ?? client).get<GetProtoDataResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/registry/service/protos/{registryName}/{filename}',\n            ...options\n        });\n    }\n    \n    public static setProtoData<ThrowOnError extends boolean = false>(options: Options<SetProtoDataData, ThrowOnError>) {\n        return (options.client ?? client).post<SetProtoDataResponses, unknown, ThrowOnError>({\n            bodySerializer: null,\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/registry/service/protos/{registryName}/{filename}',\n            ...options,\n            headers: {\n                'Content-Type': 'application/octet-stream',\n                ...options.headers\n            }\n        });\n    }\n    \n    public static removeService<ThrowOnError extends boolean = false>(options: Options<RemoveServiceData, ThrowOnError>) {\n        return (options.client ?? client).delete<RemoveServiceResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/registry/service/{name}',\n            ...options\n        });\n    }\n    \n    public static getService<ThrowOnError extends boolean = false>(options: Options<GetServiceData, ThrowOnError>) {\n        return (options.client ?? client).get<GetServiceResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/registry/service/{name}',\n            ...options\n        });\n    }\n    \n    public static closeCircuitBreaker<ThrowOnError extends boolean = false>(options: Options<CloseCircuitBreakerData, ThrowOnError>) {\n        return (options.client ?? client).post<CloseCircuitBreakerResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/registry/service/{name}/circuit-breaker/close',\n            ...options\n        });\n    }\n    \n    public static openCircuitBreaker<ThrowOnError extends boolean = false>(options: Options<OpenCircuitBreakerData, ThrowOnError>) {\n        return (options.client ?? client).post<OpenCircuitBreakerResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/registry/service/{name}/circuit-breaker/open',\n            ...options\n        });\n    }\n    \n    public static getCircuitBreakerStatus<ThrowOnError extends boolean = false>(options: Options<GetCircuitBreakerStatusData, ThrowOnError>) {\n        return (options.client ?? client).get<GetCircuitBreakerStatusResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/registry/service/{name}/circuit-breaker/status',\n            ...options\n        });\n    }\n    \n    public static discover<ThrowOnError extends boolean = false>(options: Options<DiscoverData, ThrowOnError>) {\n        return (options.client ?? client).get<DiscoverResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/registry/service/{name}/discover',\n            ...options\n        });\n    }\n    \n    public static removeMethod<ThrowOnError extends boolean = false>(options: Options<RemoveMethodData, ThrowOnError>) {\n        return (options.client ?? client).delete<RemoveMethodResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/registry/service/{registryName}/methods',\n            ...options\n        });\n    }\n    \n    public static addOrUpdateMethod<ThrowOnError extends boolean = false>(options: Options<AddOrUpdateMethodData, ThrowOnError>) {\n        return (options.client ?? client).post<AddOrUpdateMethodResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/registry/service/{registryName}/methods',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n}\n\nexport class SchedulerResource {\n    /**\n     * Pause all scheduling in a single conductor server instance (for debugging only)\n     */\n    public static pauseAllSchedules<ThrowOnError extends boolean = false>(options?: Options<PauseAllSchedulesData, ThrowOnError>) {\n        return (options?.client ?? client).get<PauseAllSchedulesResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/scheduler/admin/pause',\n            ...options\n        });\n    }\n    \n    /**\n     * Requeue all execution records\n     */\n    public static requeueAllExecutionRecords<ThrowOnError extends boolean = false>(options?: Options<RequeueAllExecutionRecordsData, ThrowOnError>) {\n        return (options?.client ?? client).get<RequeueAllExecutionRecordsResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/scheduler/admin/requeue',\n            ...options\n        });\n    }\n    \n    /**\n     * Resume all scheduling\n     */\n    public static resumeAllSchedules<ThrowOnError extends boolean = false>(options?: Options<ResumeAllSchedulesData, ThrowOnError>) {\n        return (options?.client ?? client).get<ResumeAllSchedulesResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/scheduler/admin/resume',\n            ...options\n        });\n    }\n    \n    /**\n     * Get list of the next x (default 3, max 5) execution times for a scheduler\n     */\n    public static getNextFewSchedules<ThrowOnError extends boolean = false>(options: Options<GetNextFewSchedulesData, ThrowOnError>) {\n        return (options.client ?? client).get<GetNextFewSchedulesResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/scheduler/nextFewSchedules',\n            ...options\n        });\n    }\n    \n    /**\n     * Get all existing workflow schedules and optionally filter by workflow name\n     */\n    public static getAllSchedules<ThrowOnError extends boolean = false>(options?: Options<GetAllSchedulesData, ThrowOnError>) {\n        return (options?.client ?? client).get<GetAllSchedulesResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/scheduler/schedules',\n            ...options\n        });\n    }\n    \n    /**\n     * Create or update a schedule for a specified workflow with a corresponding start workflow request\n     */\n    public static saveSchedule<ThrowOnError extends boolean = false>(options: Options<SaveScheduleData, ThrowOnError>) {\n        return (options.client ?? client).post<SaveScheduleResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/scheduler/schedules',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Get schedules by tag\n     */\n    public static getSchedulesByTag<ThrowOnError extends boolean = false>(options: Options<GetSchedulesByTagData, ThrowOnError>) {\n        return (options.client ?? client).get<GetSchedulesByTagResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/scheduler/schedules/tags',\n            ...options\n        });\n    }\n    \n    /**\n     * Deletes an existing workflow schedule by name\n     */\n    public static deleteSchedule<ThrowOnError extends boolean = false>(options: Options<DeleteScheduleData, ThrowOnError>) {\n        return (options.client ?? client).delete<DeleteScheduleResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/scheduler/schedules/{name}',\n            ...options\n        });\n    }\n    \n    /**\n     * Get an existing workflow schedule by name\n     */\n    public static getSchedule<ThrowOnError extends boolean = false>(options: Options<GetScheduleData, ThrowOnError>) {\n        return (options.client ?? client).get<GetScheduleResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/scheduler/schedules/{name}',\n            ...options\n        });\n    }\n    \n    /**\n     * Pauses an existing schedule by name\n     */\n    public static pauseSchedule<ThrowOnError extends boolean = false>(options: Options<PauseScheduleData, ThrowOnError>) {\n        return (options.client ?? client).get<PauseScheduleResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/scheduler/schedules/{name}/pause',\n            ...options\n        });\n    }\n    \n    /**\n     * Resume a paused schedule by name\n     */\n    public static resumeSchedule<ThrowOnError extends boolean = false>(options: Options<ResumeScheduleData, ThrowOnError>) {\n        return (options.client ?? client).get<ResumeScheduleResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/scheduler/schedules/{name}/resume',\n            ...options\n        });\n    }\n    \n    /**\n     * Delete a tag for schedule\n     */\n    public static deleteTagForSchedule<ThrowOnError extends boolean = false>(options: Options<DeleteTagForScheduleData, ThrowOnError>) {\n        return (options.client ?? client).delete<DeleteTagForScheduleResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/scheduler/schedules/{name}/tags',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Get tags by schedule\n     */\n    public static getTagsForSchedule<ThrowOnError extends boolean = false>(options: Options<GetTagsForScheduleData, ThrowOnError>) {\n        return (options.client ?? client).get<GetTagsForScheduleResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/scheduler/schedules/{name}/tags',\n            ...options\n        });\n    }\n    \n    /**\n     * Put a tag to schedule\n     */\n    public static putTagForSchedule<ThrowOnError extends boolean = false>(options: Options<PutTagForScheduleData, ThrowOnError>) {\n        return (options.client ?? client).put<PutTagForScheduleResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/scheduler/schedules/{name}/tags',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Search for workflow executions based on payload and other parameters\n     *\n     * use sort options as sort=<field>:ASC|DESC e.g. sort=name&sort=workflowId:DESC. If order is not specified, defaults to ASC.\n     */\n    public static searchV2<ThrowOnError extends boolean = false>(options?: Options<SearchV2Data, ThrowOnError>) {\n        return (options?.client ?? client).get<SearchV2Responses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/scheduler/search/executions',\n            ...options\n        });\n    }\n}\n\nexport class SchedulerBulkResource {\n    /**\n     * Pause the list of schedules\n     */\n    public static pauseSchedules<ThrowOnError extends boolean = false>(options: Options<PauseSchedulesData, ThrowOnError>) {\n        return (options.client ?? client).put<PauseSchedulesResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/scheduler/bulk/pause',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Resume the list of schedules\n     */\n    public static resumeSchedules<ThrowOnError extends boolean = false>(options: Options<ResumeSchedulesData, ThrowOnError>) {\n        return (options.client ?? client).put<ResumeSchedulesResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/scheduler/bulk/resume',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n}\n\nexport class SchemaResource {\n    /**\n     * Get all schemas\n     */\n    public static getAllSchemas<ThrowOnError extends boolean = false>(options?: Options<GetAllSchemasData, ThrowOnError>) {\n        return (options?.client ?? client).get<GetAllSchemasResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/schema',\n            ...options\n        });\n    }\n    \n    /**\n     * Save schema\n     */\n    public static save<ThrowOnError extends boolean = false>(options: Options<SaveData, ThrowOnError>) {\n        return (options.client ?? client).post<SaveResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/schema',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Delete all versions of schema by name\n     */\n    public static deleteSchemaByName<ThrowOnError extends boolean = false>(options: Options<DeleteSchemaByNameData, ThrowOnError>) {\n        return (options.client ?? client).delete<DeleteSchemaByNameResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/schema/{name}',\n            ...options\n        });\n    }\n    \n    /**\n     * Get schema by name with latest version\n     */\n    public static getSchemaByNameWithLatestVersion<ThrowOnError extends boolean = false>(options: Options<GetSchemaByNameWithLatestVersionData, ThrowOnError>) {\n        return (options.client ?? client).get<GetSchemaByNameWithLatestVersionResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/schema/{name}',\n            ...options\n        });\n    }\n    \n    /**\n     * Delete a version of schema by name\n     */\n    public static deleteSchemaByNameAndVersion<ThrowOnError extends boolean = false>(options: Options<DeleteSchemaByNameAndVersionData, ThrowOnError>) {\n        return (options.client ?? client).delete<DeleteSchemaByNameAndVersionResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/schema/{name}/{version}',\n            ...options\n        });\n    }\n    \n    /**\n     * Get schema by name and version\n     */\n    public static getSchemaByNameAndVersion<ThrowOnError extends boolean = false>(options: Options<GetSchemaByNameAndVersionData, ThrowOnError>) {\n        return (options.client ?? client).get<GetSchemaByNameAndVersionResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/schema/{name}/{version}',\n            ...options\n        });\n    }\n}\n\nexport class SecretResource {\n    /**\n     * List all secret names user can grant access to\n     */\n    public static listSecretsThatUserCanGrantAccessTo<ThrowOnError extends boolean = false>(options?: Options<ListSecretsThatUserCanGrantAccessToData, ThrowOnError>) {\n        return (options?.client ?? client).get<ListSecretsThatUserCanGrantAccessToResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/secrets',\n            ...options\n        });\n    }\n    \n    /**\n     * List all secret names\n     */\n    public static listAllSecretNames<ThrowOnError extends boolean = false>(options?: Options<ListAllSecretNamesData, ThrowOnError>) {\n        return (options?.client ?? client).post<ListAllSecretNamesResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/secrets',\n            ...options\n        });\n    }\n    \n    /**\n     * List all secret names along with tags user can grant access to\n     */\n    public static listSecretsWithTagsThatUserCanGrantAccessTo<ThrowOnError extends boolean = false>(options?: Options<ListSecretsWithTagsThatUserCanGrantAccessToData, ThrowOnError>) {\n        return (options?.client ?? client).get<ListSecretsWithTagsThatUserCanGrantAccessToResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/secrets-v2',\n            ...options\n        });\n    }\n    \n    /**\n     * Clear local cache\n     */\n    public static clearLocalCache<ThrowOnError extends boolean = false>(options?: Options<ClearLocalCacheData, ThrowOnError>) {\n        return (options?.client ?? client).get<ClearLocalCacheResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/secrets/clearLocalCache',\n            ...options\n        });\n    }\n    \n    /**\n     * Clear redis cache\n     */\n    public static clearRedisCache<ThrowOnError extends boolean = false>(options?: Options<ClearRedisCacheData, ThrowOnError>) {\n        return (options?.client ?? client).get<ClearRedisCacheResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/secrets/clearRedisCache',\n            ...options\n        });\n    }\n    \n    /**\n     * Delete a secret value by key\n     */\n    public static deleteSecret<ThrowOnError extends boolean = false>(options: Options<DeleteSecretData, ThrowOnError>) {\n        return (options.client ?? client).delete<DeleteSecretResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/secrets/{key}',\n            ...options\n        });\n    }\n    \n    /**\n     * Get secret value by key\n     */\n    public static getSecret<ThrowOnError extends boolean = false>(options: Options<GetSecretData, ThrowOnError>) {\n        return (options.client ?? client).get<GetSecretResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/secrets/{key}',\n            ...options\n        });\n    }\n    \n    /**\n     * Put a secret value by key\n     */\n    public static putSecret<ThrowOnError extends boolean = false>(options: Options<PutSecretData, ThrowOnError>) {\n        return (options.client ?? client).put<PutSecretResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/secrets/{key}',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Check if secret exists\n     */\n    public static secretExists<ThrowOnError extends boolean = false>(options: Options<SecretExistsData, ThrowOnError>) {\n        return (options.client ?? client).get<SecretExistsResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/secrets/{key}/exists',\n            ...options\n        });\n    }\n    \n    /**\n     * Delete tags of the secret\n     */\n    public static deleteTagForSecret<ThrowOnError extends boolean = false>(options: Options<DeleteTagForSecretData, ThrowOnError>) {\n        return (options.client ?? client).delete<DeleteTagForSecretResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/secrets/{key}/tags',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Get tags by secret\n     */\n    public static getTags<ThrowOnError extends boolean = false>(options: Options<GetTagsData, ThrowOnError>) {\n        return (options.client ?? client).get<GetTagsResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/secrets/{key}/tags',\n            ...options\n        });\n    }\n    \n    /**\n     * Tag a secret\n     */\n    public static putTagForSecret<ThrowOnError extends boolean = false>(options: Options<PutTagForSecretData, ThrowOnError>) {\n        return (options.client ?? client).put<PutTagForSecretResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/secrets/{key}/tags',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n}\n\nexport class TaskResource {\n    /**\n     * Update a task\n     */\n    public static updateTask<ThrowOnError extends boolean = false>(options: Options<UpdateTaskData, ThrowOnError>) {\n        return (options.client ?? client).post<UpdateTaskResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/tasks',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Batch poll for a task of a certain type\n     */\n    public static batchPoll<ThrowOnError extends boolean = false>(options: Options<BatchPollData, ThrowOnError>) {\n        return (options.client ?? client).get<BatchPollResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/tasks/poll/batch/{tasktype}',\n            ...options\n        });\n    }\n    \n    /**\n     * Poll for a task of a certain type\n     */\n    public static poll<ThrowOnError extends boolean = false>(options: Options<PollData2, ThrowOnError>) {\n        return (options.client ?? client).get<PollResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/tasks/poll/{tasktype}',\n            ...options\n        });\n    }\n    \n    /**\n     * Get the details about each queue\n     */\n    public static all<ThrowOnError extends boolean = false>(options?: Options<AllData, ThrowOnError>) {\n        return (options?.client ?? client).get<AllResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/tasks/queue/all',\n            ...options\n        });\n    }\n    \n    /**\n     * Get the details about each queue\n     */\n    public static allVerbose<ThrowOnError extends boolean = false>(options?: Options<AllVerboseData, ThrowOnError>) {\n        return (options?.client ?? client).get<AllVerboseResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/tasks/queue/all/verbose',\n            ...options\n        });\n    }\n    \n    /**\n     * Get the last poll data for a given task type\n     */\n    public static getPollData<ThrowOnError extends boolean = false>(options: Options<GetPollDataData, ThrowOnError>) {\n        return (options.client ?? client).get<GetPollDataResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/tasks/queue/polldata',\n            ...options\n        });\n    }\n    \n    /**\n     * Get the last poll data for all task types\n     */\n    public static getAllPollData<ThrowOnError extends boolean = false>(options?: Options<GetAllPollDataData, ThrowOnError>) {\n        return (options?.client ?? client).get<GetAllPollDataResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/tasks/queue/polldata/all',\n            ...options\n        });\n    }\n    \n    /**\n     * Requeue pending tasks\n     */\n    public static requeuePendingTask<ThrowOnError extends boolean = false>(options: Options<RequeuePendingTaskData, ThrowOnError>) {\n        return (options.client ?? client).post<RequeuePendingTaskResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/tasks/queue/requeue/{taskType}',\n            ...options\n        });\n    }\n    \n    /**\n     * Get Task type queue sizes\n     */\n    public static size<ThrowOnError extends boolean = false>(options?: Options<SizeData, ThrowOnError>) {\n        return (options?.client ?? client).get<SizeResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/tasks/queue/sizes',\n            ...options\n        });\n    }\n    \n    /**\n     * Search for tasks based in payload and other parameters\n     *\n     * use sort options as sort=<field>:ASC|DESC e.g. sort=name&sort=workflowId:DESC. If order is not specified, defaults to ASC\n     */\n    public static search2<ThrowOnError extends boolean = false>(options?: Options<Search2Data, ThrowOnError>) {\n        return (options?.client ?? client).get<Search2Responses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/tasks/search',\n            ...options\n        });\n    }\n    \n    /**\n     * Update a task\n     */\n    public static updateTaskV2<ThrowOnError extends boolean = false>(options: Options<UpdateTaskV2Data, ThrowOnError>) {\n        return (options.client ?? client).post<UpdateTaskV2Responses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/tasks/update-v2',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Get task by Id\n     */\n    public static getTask<ThrowOnError extends boolean = false>(options: Options<GetTaskData, ThrowOnError>) {\n        return (options.client ?? client).get<GetTaskResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/tasks/{taskId}',\n            ...options\n        });\n    }\n    \n    /**\n     * Get Task Execution Logs\n     */\n    public static getTaskLogs<ThrowOnError extends boolean = false>(options: Options<GetTaskLogsData, ThrowOnError>) {\n        return (options.client ?? client).get<GetTaskLogsResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/tasks/{taskId}/log',\n            ...options\n        });\n    }\n    \n    /**\n     * Log Task Execution Details\n     */\n    public static log<ThrowOnError extends boolean = false>(options: Options<LogData, ThrowOnError>) {\n        return (options.client ?? client).post<LogResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/tasks/{taskId}/log',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Update running task in the workflow with given status and output asynchronously\n     */\n    public static signalWorkflowTaskASync<ThrowOnError extends boolean = false>(options: Options<SignalWorkflowTaskASyncData, ThrowOnError>) {\n        return (options.client ?? client).post<SignalWorkflowTaskASyncResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/tasks/{workflowId}/{status}/signal',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Update running task in the workflow with given status and output synchronously and return back updated workflow\n     */\n    public static signalWorkflowTaskSync<ThrowOnError extends boolean = false>(options: Options<SignalWorkflowTaskSyncData, ThrowOnError>) {\n        return (options.client ?? client).post<SignalWorkflowTaskSyncResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/tasks/{workflowId}/{status}/signal/sync',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Update a task By Ref Name. The output data is merged if data from a previous API call already exists.\n     */\n    public static updateTask1<ThrowOnError extends boolean = false>(options: Options<UpdateTask1Data, ThrowOnError>) {\n        return (options.client ?? client).post<UpdateTask1Responses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/tasks/{workflowId}/{taskRefName}/{status}',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Update a task By Ref Name synchronously. The output data is merged if data from a previous API call already exists.\n     */\n    public static updateTaskSync<ThrowOnError extends boolean = false>(options: Options<UpdateTaskSyncData, ThrowOnError>) {\n        return (options.client ?? client).post<UpdateTaskSyncResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/tasks/{workflowId}/{taskRefName}/{status}/sync',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n}\n\nexport class TokenResource {\n    /**\n     * Generate JWT with the given access key\n     */\n    public static generateToken<ThrowOnError extends boolean = false>(options: Options<GenerateTokenData, ThrowOnError>) {\n        return (options.client ?? client).post<GenerateTokenResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/token',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Get the user info from the token\n     */\n    public static getUserInfo<ThrowOnError extends boolean = false>(options?: Options<GetUserInfoData, ThrowOnError>) {\n        return (options?.client ?? client).get<GetUserInfoResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/token/userInfo',\n            ...options\n        });\n    }\n}\n\nexport class UserResource {\n    /**\n     * Get all users\n     */\n    public static listUsers<ThrowOnError extends boolean = false>(options?: Options<ListUsersData, ThrowOnError>) {\n        return (options?.client ?? client).get<ListUsersResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/users',\n            ...options\n        });\n    }\n    \n    /**\n     * Delete a user\n     */\n    public static deleteUser<ThrowOnError extends boolean = false>(options: Options<DeleteUserData, ThrowOnError>) {\n        return (options.client ?? client).delete<DeleteUserResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/users/{id}',\n            ...options\n        });\n    }\n    \n    /**\n     * Get a user by id\n     */\n    public static getUser<ThrowOnError extends boolean = false>(options: Options<GetUserData, ThrowOnError>) {\n        return (options.client ?? client).get<GetUserResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/users/{id}',\n            ...options\n        });\n    }\n    \n    /**\n     * Create or update a user\n     */\n    public static upsertUser<ThrowOnError extends boolean = false>(options: Options<UpsertUserData, ThrowOnError>) {\n        return (options.client ?? client).put<UpsertUserResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/users/{id}',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Get the permissions this user has over workflows and tasks\n     */\n    public static checkPermissions<ThrowOnError extends boolean = false>(options: Options<CheckPermissionsData, ThrowOnError>) {\n        return (options.client ?? client).get<CheckPermissionsResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/users/{userId}/checkPermissions',\n            ...options\n        });\n    }\n    \n    /**\n     * Get the permissions this user has over workflows and tasks\n     */\n    public static getGrantedPermissions<ThrowOnError extends boolean = false>(options: Options<GetGrantedPermissionsData, ThrowOnError>) {\n        return (options.client ?? client).get<GetGrantedPermissionsResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/users/{userId}/permissions',\n            ...options\n        });\n    }\n}\n\nexport class VersionResource {\n    /**\n     * Get the server's version\n     */\n    public static getVersion<ThrowOnError extends boolean = false>(options?: Options<GetVersionData, ThrowOnError>) {\n        return (options?.client ?? client).get<GetVersionResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/version',\n            ...options\n        });\n    }\n}\n\nexport class WorkflowResource {\n    /**\n     * Start a new workflow with StartWorkflowRequest, which allows task to be executed in a domain\n     */\n    public static startWorkflow<ThrowOnError extends boolean = false>(options: Options<StartWorkflowData, ThrowOnError>) {\n        return (options.client ?? client).post<StartWorkflowResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/workflow',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Lists workflows for the given correlation id list and workflow name list\n     */\n    public static getWorkflows1<ThrowOnError extends boolean = false>(options: Options<GetWorkflows1Data, ThrowOnError>) {\n        return (options.client ?? client).post<GetWorkflows1Responses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/workflow/correlated/batch',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Starts the decision task for a workflow\n     */\n    public static decide<ThrowOnError extends boolean = false>(options: Options<DecideData, ThrowOnError>) {\n        return (options.client ?? client).put<DecideResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/workflow/decide/{workflowId}',\n            ...options\n        });\n    }\n    \n    /**\n     * Execute a workflow synchronously with input and outputs using get api\n     *\n     * @deprecated\n     */\n    public static executeWorkflowAsGetApi<ThrowOnError extends boolean = false>(options: Options<ExecuteWorkflowAsGetApiData, ThrowOnError>) {\n        return (options.client ?? client).get<ExecuteWorkflowAsGetApiResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/workflow/execute/{name}',\n            ...options\n        });\n    }\n    \n    /**\n     * Execute a workflow synchronously with input and outputs\n     *\n     * @deprecated\n     */\n    public static executeWorkflowAsApi<ThrowOnError extends boolean = false>(options: Options<ExecuteWorkflowAsApiData, ThrowOnError>) {\n        return (options.client ?? client).post<ExecuteWorkflowAsApiResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/workflow/execute/{name}',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Execute a workflow synchronously\n     */\n    public static executeWorkflow<ThrowOnError extends boolean = false>(options: Options<ExecuteWorkflowData, ThrowOnError>) {\n        return (options.client ?? client).post<ExecuteWorkflowResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/workflow/execute/{name}/{version}',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Retrieve all the running workflows\n     */\n    public static getRunningWorkflow<ThrowOnError extends boolean = false>(options: Options<GetRunningWorkflowData, ThrowOnError>) {\n        return (options.client ?? client).get<GetRunningWorkflowResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/workflow/running/{name}',\n            ...options\n        });\n    }\n    \n    /**\n     * Search for workflow executions based on payload and other parameters\n     *\n     * Search for workflow executions based on payload and other parameters.\n     * The query parameter accepts exact matches using `=` and `IN` on the following fields: `workflowId`, `correlationId`, `taskId`, `workflowType`, `taskType`, and `status`.\n     * Matches using `=` can be written as `taskType = HTTP`.\n     * Matches using `IN` are written as `status IN (SCHEDULED, IN_PROGRESS)`.\n     * The 'startTime' and 'modifiedTime' field uses unix timestamps and accepts queries using `<` and `>`, for example `startTime < 1696143600000`.\n     * Queries can be combined using `AND`, for example `taskType = HTTP AND status = SCHEDULED`.\n     *\n     */\n    public static search1<ThrowOnError extends boolean = false>(options?: Options<Search1Data, ThrowOnError>) {\n        return (options?.client ?? client).get<Search1Responses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/workflow/search',\n            ...options\n        });\n    }\n    \n    /**\n     * Start a new workflow asynchronously. Returns the ID of the workflow instance that can be later used for tracking\n     */\n    public static startWorkflowAsync<ThrowOnError extends boolean = false>(options: Options<StartWorkflowAsyncData, ThrowOnError>) {\n        return (options.client ?? client).post<StartWorkflowAsyncResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/workflow/start/{name}/{version}',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Test workflow execution using mock data\n     */\n    public static testWorkflow<ThrowOnError extends boolean = false>(options: Options<TestWorkflowData, ThrowOnError>) {\n        return (options.client ?? client).post<TestWorkflowResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/workflow/test',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Start a new workflow. Returns the ID of the workflow instance that can be later used for tracking\n     */\n    public static startWorkflow1<ThrowOnError extends boolean = false>(options: Options<StartWorkflow1Data, ThrowOnError>) {\n        return (options.client ?? client).post<StartWorkflow1Responses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/workflow/{name}',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Lists workflows for the given correlation id list\n     */\n    public static getWorkflows<ThrowOnError extends boolean = false>(options: Options<GetWorkflowsData, ThrowOnError>) {\n        return (options.client ?? client).post<GetWorkflowsResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/workflow/{name}/correlated',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Lists workflows for the given correlation id\n     */\n    public static getWorkflows2<ThrowOnError extends boolean = false>(options: Options<GetWorkflows2Data, ThrowOnError>) {\n        return (options.client ?? client).get<GetWorkflows2Responses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/workflow/{name}/correlated/{correlationId}',\n            ...options\n        });\n    }\n    \n    /**\n     * Terminate workflow execution\n     */\n    public static terminate1<ThrowOnError extends boolean = false>(options: Options<Terminate1Data, ThrowOnError>) {\n        return (options.client ?? client).delete<Terminate1Responses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/workflow/{workflowId}',\n            ...options\n        });\n    }\n    \n    /**\n     * Gets the workflow by workflow (execution) id\n     */\n    public static getExecutionStatus<ThrowOnError extends boolean = false>(options: Options<GetExecutionStatusData, ThrowOnError>) {\n        return (options.client ?? client).get<GetExecutionStatusResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/workflow/{workflowId}',\n            ...options\n        });\n    }\n    \n    /**\n     * Jump workflow execution to given task\n     *\n     * Jump workflow execution to given task.\n     */\n    public static jumpToTask<ThrowOnError extends boolean = false>(options: Options<JumpToTaskData, ThrowOnError>) {\n        return (options.client ?? client).post<JumpToTaskResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/workflow/{workflowId}/jump/{taskReferenceName}',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Pauses the workflow\n     */\n    public static pauseWorkflow<ThrowOnError extends boolean = false>(options: Options<PauseWorkflowData, ThrowOnError>) {\n        return (options.client ?? client).put<PauseWorkflowResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/workflow/{workflowId}/pause',\n            ...options\n        });\n    }\n    \n    /**\n     * Removes the workflow from the system\n     */\n    public static delete1<ThrowOnError extends boolean = false>(options: Options<Delete1Data, ThrowOnError>) {\n        return (options.client ?? client).delete<Delete1Responses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/workflow/{workflowId}/remove',\n            ...options\n        });\n    }\n    \n    /**\n     * Reruns the workflow from a specific task\n     */\n    public static rerun<ThrowOnError extends boolean = false>(options: Options<RerunData, ThrowOnError>) {\n        return (options.client ?? client).post<RerunResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/workflow/{workflowId}/rerun',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Resets callback times of all non-terminal SIMPLE tasks to 0\n     */\n    public static resetWorkflow<ThrowOnError extends boolean = false>(options: Options<ResetWorkflowData, ThrowOnError>) {\n        return (options.client ?? client).post<ResetWorkflowResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/workflow/{workflowId}/resetcallbacks',\n            ...options\n        });\n    }\n    \n    /**\n     * Restarts a completed workflow\n     */\n    public static restart<ThrowOnError extends boolean = false>(options: Options<RestartData, ThrowOnError>) {\n        return (options.client ?? client).post<RestartResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/workflow/{workflowId}/restart',\n            ...options\n        });\n    }\n    \n    /**\n     * Resumes the workflow\n     */\n    public static resumeWorkflow<ThrowOnError extends boolean = false>(options: Options<ResumeWorkflowData, ThrowOnError>) {\n        return (options.client ?? client).put<ResumeWorkflowResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/workflow/{workflowId}/resume',\n            ...options\n        });\n    }\n    \n    /**\n     * Retries the last failed task\n     */\n    public static retry<ThrowOnError extends boolean = false>(options: Options<RetryData, ThrowOnError>) {\n        return (options.client ?? client).post<RetryResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/workflow/{workflowId}/retry',\n            ...options\n        });\n    }\n    \n    /**\n     * Skips a given task from a current running workflow\n     */\n    public static skipTaskFromWorkflow<ThrowOnError extends boolean = false>(options: Options<SkipTaskFromWorkflowData, ThrowOnError>) {\n        return (options.client ?? client).put<SkipTaskFromWorkflowResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/workflow/{workflowId}/skiptask/{taskReferenceName}',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Update a workflow state by updating variables or in progress task\n     *\n     * Updates the workflow variables, tasks and triggers evaluation.\n     */\n    public static updateWorkflowAndTaskState<ThrowOnError extends boolean = false>(options: Options<UpdateWorkflowAndTaskStateData, ThrowOnError>) {\n        return (options.client ?? client).post<UpdateWorkflowAndTaskStateResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/workflow/{workflowId}/state',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Gets the workflow by workflow (execution) id\n     */\n    public static getWorkflowStatusSummary<ThrowOnError extends boolean = false>(options: Options<GetWorkflowStatusSummaryData, ThrowOnError>) {\n        return (options.client ?? client).get<GetWorkflowStatusSummaryResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/workflow/{workflowId}/status',\n            ...options\n        });\n    }\n    \n    /**\n     * Gets the workflow tasks by workflow (execution) id\n     */\n    public static getExecutionStatusTaskList<ThrowOnError extends boolean = false>(options: Options<GetExecutionStatusTaskListData, ThrowOnError>) {\n        return (options.client ?? client).get<GetExecutionStatusTaskListResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/workflow/{workflowId}/tasks',\n            ...options\n        });\n    }\n    \n    /**\n     * Upgrade running workflow to newer version\n     *\n     * Upgrade running workflow to newer version\n     */\n    public static upgradeRunningWorkflowToVersion<ThrowOnError extends boolean = false>(options: Options<UpgradeRunningWorkflowToVersionData, ThrowOnError>) {\n        return (options.client ?? client).post<UpgradeRunningWorkflowToVersionResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/workflow/{workflowId}/upgrade',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Update workflow variables\n     *\n     * Updates the workflow variables and triggers evaluation.\n     */\n    public static updateWorkflowState<ThrowOnError extends boolean = false>(options: Options<UpdateWorkflowStateData, ThrowOnError>) {\n        return (options.client ?? client).post<UpdateWorkflowStateResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/workflow/{workflowId}/variables',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n}\n\nexport class WorkflowBulkResource {\n    /**\n     * Permanently remove workflows from the system\n     */\n    public static delete<ThrowOnError extends boolean = false>(options: Options<DeleteData, ThrowOnError>) {\n        return (options.client ?? client).post<DeleteResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/workflow/bulk/delete',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Pause the list of workflows\n     */\n    public static pauseWorkflow1<ThrowOnError extends boolean = false>(options: Options<PauseWorkflow1Data, ThrowOnError>) {\n        return (options.client ?? client).put<PauseWorkflow1Responses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/workflow/bulk/pause',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Restart the list of completed workflow\n     */\n    public static restart1<ThrowOnError extends boolean = false>(options: Options<Restart1Data, ThrowOnError>) {\n        return (options.client ?? client).post<Restart1Responses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/workflow/bulk/restart',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Resume the list of workflows\n     */\n    public static resumeWorkflow1<ThrowOnError extends boolean = false>(options: Options<ResumeWorkflow1Data, ThrowOnError>) {\n        return (options.client ?? client).put<ResumeWorkflow1Responses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/workflow/bulk/resume',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Retry the last failed task for each workflow from the list\n     */\n    public static retry1<ThrowOnError extends boolean = false>(options: Options<Retry1Data, ThrowOnError>) {\n        return (options.client ?? client).post<Retry1Responses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/workflow/bulk/retry',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n    \n    /**\n     * Terminate workflows execution\n     */\n    public static terminate<ThrowOnError extends boolean = false>(options: Options<TerminateData, ThrowOnError>) {\n        return (options.client ?? client).post<TerminateResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/api/workflow/bulk/terminate',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n}\n\nexport class ContextController {\n    public static get<ThrowOnError extends boolean = false>(options?: Options<GetData, ThrowOnError>) {\n        return (options?.client ?? client).get<GetResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/context.js',\n            ...options\n        });\n    }\n}\n\nexport class HealthCheckResource {\n    public static doCheck<ThrowOnError extends boolean = false>(options?: Options<DoCheckData, ThrowOnError>) {\n        return (options?.client ?? client).get<DoCheckResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/health',\n            ...options\n        });\n    }\n}\n\nexport class IncomingWebhookResource {\n    public static handleWebhook1<ThrowOnError extends boolean = false>(options: Options<HandleWebhook1Data, ThrowOnError>) {\n        return (options.client ?? client).get<HandleWebhook1Responses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/webhook/{id}',\n            ...options\n        });\n    }\n    \n    public static handleWebhook<ThrowOnError extends boolean = false>(options: Options<HandleWebhookData, ThrowOnError>) {\n        return (options.client ?? client).post<HandleWebhookResponses, unknown, ThrowOnError>({\n            security: [\n                {\n                    name: 'X-Authorization',\n                    type: 'apiKey'\n                }\n            ],\n            url: '/webhook/{id}',\n            ...options,\n            headers: {\n                'Content-Type': 'application/json',\n                ...options.headers\n            }\n        });\n    }\n}\n","export class ConductorSdkError extends Error {\n  private _trace;\n  private __proto__: unknown;\n\n  constructor(message?: string, innerError?: Error) {\n    super(message);\n    this.name = \"[Conductor SDK Error]\";\n    this._trace = innerError;\n    const actualProto = new.target.prototype;\n\n    if (Object.setPrototypeOf) {\n      Object.setPrototypeOf(this, actualProto);\n    } else {\n      this.__proto__ = actualProto;\n    }\n  }\n}\n\nexport function handleSdkError(\n  error?: unknown,\n  customMessage?: string,\n  strategy?: \"throw\"\n): never;\nexport function handleSdkError(\n  error?: unknown,\n  customMessage?: string,\n  strategy?: \"log\"\n): void;\nexport function handleSdkError(\n  error?: unknown,\n  customMessage?: string,\n  strategy: \"throw\" | \"log\" = \"throw\"\n): void | never {\n  const innerError = error instanceof Error ? error : undefined;\n\n  const messageFromError =\n    error && typeof error === \"object\" && \"message\" in error\n      ? String((error as { message: unknown }).message)\n      : undefined;\n\n  const fullMessage =\n    customMessage && messageFromError\n      ? `${customMessage}: ${messageFromError}`\n      : customMessage || messageFromError || \"Unknown error\";\n\n  if (strategy === \"log\") {\n    console.error(`[Conductor SDK Error]: ${fullMessage}\\n`, innerError);\n  } else {\n    throw new ConductorSdkError(fullMessage, innerError);\n  }\n}\n\n","import type { Client } from \"../../../open-api/generated/client/types.gen\";\nimport { TokenResource } from \"../../../open-api/generated\";\nimport { ConductorSdkError } from \"../../helpers/errors\";\nimport type { ConductorLogger } from \"../../helpers/logger\";\nimport {\n  TOKEN_TTL_MS,\n  MAX_AUTH_FAILURES,\n  MAX_AUTH_BACKOFF_MS,\n  MAX_INITIAL_TOKEN_RETRIES,\n} from \"../constants\";\n\nexport interface HandleAuthResult {\n  refreshToken: () => Promise<string | undefined>;\n  stopBackgroundRefresh: () => void;\n}\n\nexport const handleAuth = async (\n  openApiClient: Client,\n  keyId: string,\n  keySecret: string,\n  refreshTokenInterval: number,\n  logger?: ConductorLogger\n): Promise<HandleAuthResult | undefined> => {\n  let token: string | undefined;\n  let tokenObtainedAt = 0;\n  let isOss = false;\n  let consecutiveFailures = 0;\n  let lastRefreshFailureAt = 0;\n\n  // Mutex: if a refresh is already in flight, callers await the same promise\n  // instead of firing a second concurrent request.\n  let refreshInFlight: Promise<string | undefined> | null = null;\n\n  const getNewToken = async (): Promise<string | undefined> => {\n    const { data, error, response } = await TokenResource.generateToken({\n      body: { keyId, keySecret },\n      client: openApiClient,\n      throwOnError: false,\n    });\n\n    if (response?.status === 404) {\n      isOss = true;\n      logger?.info(\"Conductor OSS detected (no /token endpoint), proceeding without auth\");\n      return undefined;\n    }\n\n    if (error || !data?.token) {\n      // Parse auth error code from response body (Python SDK checks EXPIRED_TOKEN, INVALID_TOKEN)\n      const errorCode =\n        error && typeof error === \"object\" && \"error\" in error\n          ? String((error as { error: unknown }).error)\n          : undefined;\n      if (errorCode) {\n        logger?.debug(`Auth error code from server: ${errorCode}`);\n      }\n\n      const statusHint =\n        response?.status != null ? ` (HTTP ${response.status})` : \"\";\n      const message =\n        error && typeof error === \"object\" && \"message\" in error\n          ? String((error as { message: unknown }).message) + statusHint\n          : error && typeof error === \"object\" && \"error\" in error\n            ? String((error as { error: unknown }).error) + statusHint\n            : `Unknown error${statusHint}`;\n      throw new ConductorSdkError(\n        `Failed to generate authorization token: ${message}`,\n        error instanceof Error ? error : undefined\n      );\n    }\n\n    token = data.token as string;\n    tokenObtainedAt = Date.now();\n    return token;\n  };\n\n  /**\n   * Guarded version of getNewToken that prevents concurrent calls.\n   * If a refresh is already in flight, callers coalesce onto the same promise.\n   */\n  const getNewTokenGuarded = async (): Promise<string | undefined> => {\n    if (refreshInFlight) return refreshInFlight;\n    refreshInFlight = getNewToken().finally(() => {\n      refreshInFlight = null;\n    });\n    return refreshInFlight;\n  };\n\n  /**\n   * Calculate the exponential backoff delay for the current failure count.\n   * Returns 2^(failures-1) * 1000ms, capped at MAX_AUTH_BACKOFF_MS.\n   */\n  const getBackoffMs = (failures: number): number => {\n    return Math.min(Math.pow(2, failures - 1) * 1000, MAX_AUTH_BACKOFF_MS);\n  };\n\n  /**\n   * Check if we should skip a refresh attempt due to backoff.\n   * Returns true if not enough time has passed since the last failure.\n   */\n  const shouldBackoff = (): boolean => {\n    if (consecutiveFailures === 0 || lastRefreshFailureAt === 0) return false;\n    const backoffMs = getBackoffMs(consecutiveFailures);\n    return Date.now() - lastRefreshFailureAt < backoffMs;\n  };\n\n  const refreshToken = async (): Promise<string | undefined> => {\n    if (isOss) return undefined;\n    if (shouldBackoff()) return token; // respect backoff, fall back to current token\n    try {\n      const newToken = await getNewTokenGuarded();\n      consecutiveFailures = 0;\n      return newToken;\n    } catch {\n      consecutiveFailures++;\n      lastRefreshFailureAt = Date.now();\n      return token; // fall back to current token\n    }\n  };\n\n  // Initial auth with retry (no mutex needed -- nothing else is running yet)\n  for (let attempt = 1; attempt <= MAX_INITIAL_TOKEN_RETRIES; attempt++) {\n    try {\n      await getNewToken();\n      break;\n    } catch (e) {\n      if (isOss) {\n        return undefined;\n      }\n      if (attempt < MAX_INITIAL_TOKEN_RETRIES) {\n        const backoffMs = getBackoffMs(attempt);\n        logger?.warn?.(\n          `Initial token request failed (attempt ${attempt}/${MAX_INITIAL_TOKEN_RETRIES}), ` +\n            `retrying in ${backoffMs}ms`\n        );\n        await new Promise((resolve) => setTimeout(resolve, backoffMs));\n      } else {\n        logger?.error(\"Initial token generation failed after all retries\", e);\n        throw e;\n      }\n    }\n  }\n\n  if (isOss) {\n    return undefined;\n  }\n\n  // Set auth as a callback so token is checked before each request\n  openApiClient.setConfig({\n    auth: async () => {\n      if (isOss) return undefined;\n      // If token is close to expiry, refresh inline before the request\n      if (Date.now() - tokenObtainedAt >= TOKEN_TTL_MS) {\n        if (!shouldBackoff()) {\n          try {\n            await getNewTokenGuarded();\n            consecutiveFailures = 0;\n          } catch {\n            consecutiveFailures++;\n            lastRefreshFailureAt = Date.now();\n            logger?.warn?.(\"Pre-request token refresh failed, using existing token\");\n          }\n        }\n      }\n      return token;\n    },\n  });\n\n  // Background refresh -- use the shorter of the configured interval and 80% of token TTL\n  // to ensure the token is refreshed before it expires\n  const effectiveRefreshInterval = Math.min(\n    refreshTokenInterval,\n    Math.floor(TOKEN_TTL_MS * 0.8)\n  );\n\n  let refreshIntervalHandle: ReturnType<typeof setInterval> | undefined;\n\n  if (effectiveRefreshInterval > 0) {\n    refreshIntervalHandle = setInterval(async () => {\n      if (isOss) return;\n\n      // Skip this tick if we're in backoff\n      if (shouldBackoff()) {\n        return;\n      }\n\n      try {\n        await getNewTokenGuarded();\n        consecutiveFailures = 0;\n      } catch {\n        consecutiveFailures++;\n        lastRefreshFailureAt = Date.now();\n        if (consecutiveFailures >= MAX_AUTH_FAILURES) {\n          logger?.error(\n            `Token refresh has failed ${consecutiveFailures} consecutive times. ` +\n              `Next retry backed off ${getBackoffMs(consecutiveFailures)}ms. ` +\n              \"Pre-request TTL check will attempt refresh before next API call.\"\n          );\n        } else {\n          logger?.warn?.(\n            `Token refresh failed (attempt ${consecutiveFailures}/${MAX_AUTH_FAILURES}), ` +\n              `backing off ${getBackoffMs(consecutiveFailures)}ms`\n          );\n        }\n      }\n    }, effectiveRefreshInterval);\n  }\n\n  const stopBackgroundRefresh = () => {\n    if (refreshIntervalHandle !== undefined) {\n      clearInterval(refreshIntervalHandle);\n      refreshIntervalHandle = undefined;\n    }\n  };\n\n  return { refreshToken, stopBackgroundRefresh };\n};\n","type Input = Parameters<typeof fetch>[0];\ntype Init = Parameters<typeof fetch>[1];\n\nexport interface RetryFetchOptions {\n  onAuthFailure?: () => Promise<string | undefined>;\n  requestTimeoutMs?: number;\n  maxRateLimitRetries?: number; // default 5\n  maxTransportRetries?: number; // default 3\n  initialRetryDelay?: number; // default 1000ms\n}\n\nconst isTimeoutError = (error: unknown): boolean => {\n  if (error instanceof DOMException && error.name === \"AbortError\") return true;\n  if (error instanceof Error && error.name === \"TimeoutError\") return true;\n  if (error instanceof Error && error.name === \"AbortError\") return true;\n  return false;\n};\n\n// AbortSignal.timeout and AbortSignal.any are available in Node 18+ and Node 20+ respectively,\n// but may not be in the TypeScript DOM lib types.\nconst AbortSignalWithExtensions = AbortSignal as typeof AbortSignal & {\n  timeout?: (ms: number) => AbortSignal;\n  any?: (signals: AbortSignal[]) => AbortSignal;\n};\n\nexport const applyTimeout = (\n  init: Init | undefined,\n  timeoutMs: number\n): Init => {\n  const existingSignal = init?.signal;\n\n  if (!AbortSignalWithExtensions.timeout) {\n    // Runtime doesn't support AbortSignal.timeout, skip timeout\n    return init ?? {};\n  }\n\n  const timeoutSignal = AbortSignalWithExtensions.timeout(timeoutMs);\n\n  if (!existingSignal) {\n    return { ...init, signal: timeoutSignal };\n  }\n\n  // Combine existing signal with timeout signal\n  if (typeof AbortSignalWithExtensions.any === \"function\") {\n    return { ...init, signal: AbortSignalWithExtensions.any([existingSignal, timeoutSignal]) };\n  }\n\n  // Fallback for Node 18 (no AbortSignal.any)\n  const controller = new AbortController();\n  const onAbort = () => controller.abort(existingSignal.reason ?? timeoutSignal.reason);\n\n  if (existingSignal.aborted || timeoutSignal.aborted) {\n    controller.abort(existingSignal.reason ?? timeoutSignal.reason);\n  } else {\n    existingSignal.addEventListener(\"abort\", onAbort, { once: true });\n    timeoutSignal.addEventListener(\"abort\", onAbort, { once: true });\n  }\n\n  return { ...init, signal: controller.signal };\n};\n\n/**\n * Check if a 401/403 response indicates a token problem (expired or invalid)\n * vs a permission error that should NOT trigger a token refresh.\n *\n * The Conductor server returns error codes in the JSON body:\n *   { \"error\": \"EXPIRED_TOKEN\", \"message\": \"...\" }  -> token problem, refresh\n *   { \"error\": \"INVALID_TOKEN\", \"message\": \"...\" }  -> token problem, refresh\n *   { \"error\": \"...\", \"message\": \"...\" }             -> permission denied, don't refresh\n *\n * Matches the Python SDK behavior: only refresh+retry for EXPIRED_TOKEN or INVALID_TOKEN.\n */\nconst TOKEN_ERROR_CODES = new Set([\"EXPIRED_TOKEN\", \"INVALID_TOKEN\"]);\n\nconst isTokenError = async (response: Response): Promise<boolean> => {\n  try {\n    // Clone to avoid consuming the body for downstream callers\n    const body = await response.clone().json();\n    const errorCode =\n      body && typeof body === \"object\" && \"error\" in body\n        ? String(body.error)\n        : \"\";\n    return TOKEN_ERROR_CODES.has(errorCode);\n  } catch {\n    // If the body isn't JSON or can't be parsed, treat 401 as a likely token error\n    // (safe default: attempt one refresh). 403 without a parseable body is more\n    // likely a permission error, so don't retry.\n    return response.status === 401;\n  }\n};\n\n/** Add ±10% jitter to prevent thundering herd on retries */\nconst withJitter = (delayMs: number): number => {\n  const jitter = delayMs * 0.1 * (2 * Math.random() - 1);\n  return Math.max(0, Math.round(delayMs + jitter));\n};\n\nexport const retryFetch = async (\n  input: Input,\n  init: Init,\n  fetchFn: typeof fetch,\n  options: RetryFetchOptions = {}\n): Promise<Response> => {\n  const {\n    onAuthFailure,\n    requestTimeoutMs,\n    maxRateLimitRetries = 5,\n    maxTransportRetries = 3,\n    initialRetryDelay = 1000,\n  } = options;\n\n  const effectiveInit = requestTimeoutMs\n    ? applyTimeout(init, requestTimeoutMs)\n    : init;\n\n  // Request bodies are single-use ReadableStreams. Clone Request inputs\n  // before each attempt so retries get a fresh body stream.\n  // this prevents errors like: \"Failed to register workflow: Response body object should not be disturbed or locked\"\n  const freshInput = (): Input =>\n    input instanceof Request ? input.clone() : input;\n\n  let lastError: unknown;\n\n  // Transport retry loop\n  for (let transportAttempt = 0; transportAttempt <= maxTransportRetries; transportAttempt++) {\n    let response: Response;\n    try {\n      response = await fetchFn(freshInput(), effectiveInit);\n    } catch (error) {\n      // Timeout/abort errors should NOT be retried\n      if (isTimeoutError(error)) {\n        throw error;\n      }\n      // Transport error - retry with linear backoff\n      lastError = error;\n      if (transportAttempt < maxTransportRetries) {\n        await new Promise((resolve) =>\n          setTimeout(resolve, withJitter(initialRetryDelay * (transportAttempt + 1)))\n        );\n        continue;\n      }\n      throw error;\n    }\n\n    // Rate limit retry (429)\n    if (response.status === 429) {\n      let rateLimitResponse = response;\n      let delay = initialRetryDelay;\n      for (let rlAttempt = 0; rlAttempt < maxRateLimitRetries; rlAttempt++) {\n        await new Promise((resolve) => setTimeout(resolve, withJitter(delay)));\n        rateLimitResponse = await fetchFn(freshInput(), effectiveInit);\n        if (rateLimitResponse.status !== 429) {\n          return rateLimitResponse;\n        }\n        delay *= 2;\n      }\n      return rateLimitResponse;\n    }\n\n    // Auth failure retry (401/403) - only refresh+retry when the error is a token\n    // problem (EXPIRED_TOKEN or INVALID_TOKEN). Permission errors should propagate\n    // immediately without wasting a token refresh + retry round-trip.\n    if (\n      (response.status === 401 || response.status === 403) &&\n      onAuthFailure &&\n      (await isTokenError(response))\n    ) {\n      const newToken = await onAuthFailure();\n      if (newToken) {\n        // Clone request with updated auth header\n        const retryInit = {\n          ...effectiveInit,\n          headers: new Headers(effectiveInit?.headers),\n        };\n        retryInit.headers.set(\"X-Authorization\", newToken);\n        return await fetchFn(freshInput(), retryInit);\n      }\n    }\n\n    return response;\n  }\n\n  // Should not reach here, but just in case\n  throw lastError ?? new Error(\"Fetch retry exhausted\");\n};\n\nexport const wrapFetchWithRetry = (\n  fetchFn: typeof fetch,\n  options?: RetryFetchOptions\n): typeof fetch => {\n  return (input: Input, init?: Init): Promise<Response> => {\n    return retryFetch(input, init, fetchFn, options);\n  };\n};\n","/* eslint-disable */\n// disable linter since related old functionality was not properly typed\n// Legacy compatibility layer: This file provides backward compatibility for the old resource-based API.\n// The legacy API is maintained for existing users, but new code should use the modern API methods.\n\nimport type { SignalResponse } from \"../../../open-api\";\nimport type { Client } from \"../../../open-api/generated/client/types.gen\";\nimport {\n  EventResource,\n  HumanTask,\n  HumanTaskResource,\n  UserForm,\n  MetadataResource,\n  ServiceRegistryResource,\n  SchedulerResource,\n  TaskResource,\n  TokenResource,\n  WorkflowResource,\n  WorkflowBulkResource,\n  HealthCheckResource,\n} from \"../../../open-api/generated\";\n\nconst warn = () => {\n  console.warn(\n    \"[Conductor SDK Legacy API] You are using the legacy resource-based API. This API is maintained for backward compatibility. For new code, use higher-level clients (EventClient, TaskClient) or Resource classes directly.\"\n  );\n};\n\n/* everything this function does is add resources with related methods -\n   originally available in the old OpenAPI-generated client -\n   to the new client by mapping them to newly generated methods */\nexport const addResourcesBackwardCompatibility = (client: Client) => {\n  const eventResource = {\n    /**\n     * @deprecated\n     */\n    getQueueConfig: async (queueType: string, queueName: string) => {\n      warn();\n      const { data } = await EventResource.getQueueConfig({\n        client,\n        path: { queueType, queueName },\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    putQueueConfig: async (\n      queueType: string,\n      queueName: string,\n      body: string\n    ) => {\n      warn();\n      await EventResource.putQueueConfig({\n        client,\n        path: { queueType, queueName },\n        body,\n        throwOnError: true,\n      });\n    },\n    /**\n     * @deprecated\n     */\n    deleteQueueConfig: async (queueType: string, queueName: string) => {\n      warn();\n      await EventResource.deleteQueueConfig({\n        client,\n        path: { queueType, queueName },\n        throwOnError: true,\n      });\n    },\n    /**\n     * @deprecated\n     */\n    getEventHandlers: async () => {\n      warn();\n      const { data } = await EventResource.getEventHandlers({\n        client,\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    updateEventHandler: async (body: any) => {\n      warn();\n      await EventResource.updateEventHandler({\n        client,\n        body,\n        throwOnError: true,\n      });\n    },\n    /**\n     * @deprecated\n     */\n    addEventHandler: async (body: any) => {\n      warn();\n      await EventResource.addEventHandler({\n        client,\n        body,\n        throwOnError: true,\n      });\n    },\n    /**\n     * @deprecated\n     */\n    getQueueNames: async () => {\n      warn();\n      const { data } = await EventResource.getQueueNames({\n        client,\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    removeEventHandlerStatus: async (name: string) => {\n      warn();\n      await EventResource.removeEventHandlerStatus({\n        client,\n        path: { name },\n        throwOnError: true,\n      });\n    },\n    /**\n     * @deprecated\n     */\n    getEventHandlersForEvent: async (event: string, activeOnly = true) => {\n      warn();\n      const { data } = await EventResource.getEventHandlersForEvent({\n        client,\n        path: { event },\n        query: { activeOnly },\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    deleteTagForEventHandler: async (name: string, body: any[]) => {\n      warn();\n      await EventResource.deleteTagForEventHandler({\n        client,\n        path: { name },\n        body,\n        throwOnError: true,\n      });\n    },\n    /**\n     * @deprecated\n     */\n    getTagsForEventHandler: async (name: string) => {\n      warn();\n      const { data } = await EventResource.getTagsForEventHandler({\n        client,\n        path: { name },\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    putTagForEventHandler: async (name: string, body: any[]) => {\n      warn();\n      await EventResource.putTagForEventHandler({\n        client,\n        path: { name },\n        body,\n        throwOnError: true,\n      });\n    },\n  };\n  const healthCheckResource = {\n    doCheck: async () => {\n      warn();\n      const { data } = await HealthCheckResource.doCheck({\n        client,\n        throwOnError: true,\n      });\n      return data;\n    },\n  };\n  const metadataResource = {\n    getTaskDef: async (tasktype: string, metadata = false) => {\n      warn();\n      const { data } = await MetadataResource.getTaskDef({\n        client,\n        path: { tasktype },\n        query: { metadata },\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    unregisterTaskDef: async (tasktype: string) => {\n      warn();\n      await MetadataResource.unregisterTaskDef({\n        client,\n        path: { tasktype },\n        throwOnError: true,\n      });\n    },\n    /**\n     * @deprecated\n     */\n    getAllWorkflows: async (\n      access = \"READ\",\n      metadata = false,\n      tagKey?: string,\n      tagValue?: string\n    ) => {\n      warn();\n      const { data } = await MetadataResource.getWorkflowDefs({\n        client,\n        query: { access, metadata, tagKey, tagValue },\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    update: async (requestBody: any[], overwrite = true) => {\n      warn();\n      await MetadataResource.update({\n        client,\n        body: requestBody,\n        query: { overwrite },\n        throwOnError: true,\n      });\n    },\n    /**\n     * @deprecated\n     */\n    create: async (requestBody: any, overwrite = false) => {\n      warn();\n      await MetadataResource.create({\n        client,\n        body: requestBody,\n        query: { overwrite },\n        throwOnError: true,\n      });\n    },\n    /**\n     * @deprecated\n     */\n    getTaskDefs: async (\n      access = \"READ\",\n      metadata = false,\n      tagKey?: string,\n      tagValue?: string\n    ) => {\n      warn();\n      const { data } = await MetadataResource.getTaskDefs({\n        client,\n        query: { access, metadata, tagKey, tagValue },\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    updateTaskDef: async (requestBody: any) => {\n      warn();\n      await MetadataResource.updateTaskDef({\n        client,\n        body: requestBody,\n        throwOnError: true,\n      });\n    },\n    /**\n     * @deprecated\n     */\n    registerTaskDef: async (requestBody: any[]) => {\n      warn();\n      await MetadataResource.registerTaskDef({\n        client,\n        body: requestBody,\n        throwOnError: true,\n      });\n    },\n    /**\n     * @deprecated\n     */\n    unregisterWorkflowDef: async (name: string, version: number) => {\n      warn();\n      await MetadataResource.unregisterWorkflowDef({\n        client,\n        path: { name, version },\n        throwOnError: true,\n      });\n    },\n    /**\n     * @deprecated\n     */\n    get: async (name: string, version?: number, metadata = false) => {\n      warn();\n      const { data } = await MetadataResource.get1({\n        client,\n        path: { name },\n        query: { version, metadata },\n        throwOnError: true,\n      });\n      return data;\n    },\n  };\n  const schedulerResource = {\n    getSchedule: async (name: string) => {\n      warn();\n      const { data } = await SchedulerResource.getSchedule({\n        client,\n        path: { name },\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    deleteSchedule: async (name: string) => {\n      warn();\n      await SchedulerResource.deleteSchedule({\n        client,\n        path: { name },\n        throwOnError: true,\n      });\n    },\n    /**\n     * @deprecated\n     */\n    getNextFewSchedules: async (\n      cronExpression: string,\n      scheduleStartTime?: number,\n      scheduleEndTime?: number,\n      limit = 3\n    ) => {\n      warn();\n      const { data } = await SchedulerResource.getNextFewSchedules({\n        client,\n        query: { cronExpression, scheduleStartTime, scheduleEndTime, limit },\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    pauseSchedule: async (name: string) => {\n      warn();\n      await SchedulerResource.pauseSchedule({\n        client,\n        path: { name },\n        throwOnError: true,\n      });\n    },\n    /**\n     * @deprecated\n     */\n    pauseAllSchedules: async () => {\n      warn();\n      const { data } = await SchedulerResource.pauseAllSchedules({\n        client,\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    resumeSchedule: async (name: string) => {\n      warn();\n      await SchedulerResource.resumeSchedule({\n        client,\n        path: { name },\n        throwOnError: true,\n      });\n    },\n    /**\n     * @deprecated\n     */\n    requeueAllExecutionRecords: async () => {\n      warn();\n      const { data } = await SchedulerResource.requeueAllExecutionRecords({\n        client,\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    resumeAllSchedules: async () => {\n      warn();\n      const { data } = await SchedulerResource.resumeAllSchedules({\n        client,\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    getAllSchedules: async (workflowName?: string) => {\n      warn();\n      const { data } = await SchedulerResource.getAllSchedules({\n        client,\n        query: { workflowName },\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    saveSchedule: async (requestBody: any) => {\n      warn();\n      await SchedulerResource.saveSchedule({\n        client,\n        body: requestBody,\n        throwOnError: true,\n      });\n    },\n    /**\n     * @deprecated\n     */\n    searchV21: async (\n      start?: number,\n      size = 100,\n      sort?: string,\n      freeText = \"*\",\n      query?: string\n    ) => {\n      warn();\n      const { data } = await SchedulerResource.searchV2({\n        client,\n        query: { start, size, sort, freeText, query },\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    testTimeout: async () => {\n      warn();\n      const { data } = await client.get({\n        security: [\n          {\n            name: \"X-Authorization\",\n            type: \"apiKey\",\n          },\n        ],\n        url: \"/api/scheduler/test/timeout\",\n        throwOnError: true,\n      });\n      return data as any;\n    },\n  };\n\n  const tokenResource = {\n    generateToken: async (requestBody: any) => {\n      warn();\n      const { data } = await TokenResource.generateToken({\n        client,\n        body: requestBody,\n        throwOnError: true,\n      });\n      return data;\n    },\n\n    getUserInfo: async (claims = false) => {\n      warn();\n      const { data } = await TokenResource.getUserInfo({\n        client,\n        query: { claims },\n        throwOnError: true,\n      });\n      return data;\n    },\n  };\n\n  const workflowBulkResource = {\n    retry: async (requestBody: any[]) => {\n      warn();\n      const { data } = await WorkflowBulkResource.retry1({\n        client,\n        body: requestBody,\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    restart: async (requestBody: any[], useLatestDefinitions = false) => {\n      warn();\n      const { data } = await WorkflowBulkResource.restart1({\n        client,\n        body: requestBody,\n        query: { useLatestDefinitions },\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    terminate: async (requestBody: any[], reason?: string) => {\n      warn();\n      const { data } = await WorkflowBulkResource.terminate({\n        client,\n        body: requestBody,\n        query: { reason },\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    resumeWorkflow: async (requestBody: any[]) => {\n      warn();\n      const { data } = await WorkflowBulkResource.resumeWorkflow1({\n        client,\n        body: requestBody,\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    pauseWorkflow1: async (requestBody: any[]) => {\n      warn();\n      const { data } = await WorkflowBulkResource.pauseWorkflow1({\n        client,\n        body: requestBody,\n        throwOnError: true,\n      });\n      return data;\n    },\n  };\n\n  const workflowResource = {\n    getRunningWorkflow: async (\n      name: string,\n      version = 1,\n      startTime?: number,\n      endTime?: number\n    ) => {\n      warn();\n      const { data } = await WorkflowResource.getRunningWorkflow({\n        client,\n        path: { name },\n        query: { version, startTime, endTime },\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    executeWorkflow: async (\n      body: any,\n      name: string,\n      version: number,\n      requestId?: string,\n      waitUntilTaskRef?: string,\n      waitForSeconds?: number,\n      consistency?: any,\n      returnStrategy?: any\n    ) => {\n      warn();\n      const { data } = await WorkflowResource.executeWorkflow({\n        client,\n        path: { name, version },\n        query: {\n          requestId,\n          waitUntilTaskRef,\n          waitForSeconds,\n          consistency,\n          returnStrategy,\n        },\n        body,\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    startWorkflow: async (requestBody: any) => {\n      warn();\n      const { data } = await WorkflowResource.startWorkflow({\n        client,\n        body: requestBody,\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    decide: async (workflowId: string) => {\n      warn();\n      await WorkflowResource.decide({\n        client,\n        path: { workflowId },\n        throwOnError: true,\n      });\n    },\n    /**\n     * @deprecated\n     */\n    rerun: async (workflowId: string, requestBody: any) => {\n      warn();\n      const { data } = await WorkflowResource.rerun({\n        client,\n        path: { workflowId },\n        body: requestBody,\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    searchV21: async (\n      start?: number,\n      size = 100,\n      sort?: string,\n      freeText = \"*\",\n      query?: string\n    ) => {\n      warn();\n      const { data } = await client.get({\n        security: [\n          {\n            name: \"X-Authorization\",\n            type: \"apiKey\",\n          },\n        ],\n        url: \"/api/workflow/search-v2\",\n        query: { start, size, sort, freeText, query },\n        throwOnError: true,\n      });\n      return data as any;\n    },\n    /**\n     * @deprecated\n     */\n    pauseWorkflow: async (workflowId: string) => {\n      warn();\n      await WorkflowResource.pauseWorkflow({\n        client,\n        path: { workflowId },\n        throwOnError: true,\n      });\n    },\n    /**\n     * @deprecated\n     */\n    skipTaskFromWorkflow: async (\n      workflowId: string,\n      taskReferenceName: string,\n      requestBody?: any\n    ) => {\n      warn();\n      await WorkflowResource.skipTaskFromWorkflow({\n        client,\n        path: { workflowId, taskReferenceName },\n        body: requestBody,\n        throwOnError: true,\n      });\n    },\n    /**\n     * @deprecated\n     */\n    getWorkflows: async (\n      name: string,\n      requestBody: any[],\n      includeClosed = false,\n      includeTasks = false\n    ) => {\n      warn();\n      const { data } = await WorkflowResource.getWorkflows({\n        client,\n        path: { name },\n        query: { includeClosed, includeTasks },\n        body: requestBody,\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    getWorkflowStatusSummary: async (\n      workflowId: string,\n      includeOutput = false,\n      includeVariables = false\n    ) => {\n      warn();\n      const { data } = await WorkflowResource.getWorkflowStatusSummary({\n        client,\n        path: { workflowId },\n        query: { includeOutput, includeVariables },\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    getWorkflows1: async (\n      name: string,\n      correlationId: string,\n      includeClosed = false,\n      includeTasks = false\n    ) => {\n      warn();\n      const { data } = await WorkflowResource.getWorkflows2({\n        client,\n        path: { name, correlationId },\n        query: { includeClosed, includeTasks },\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    retry1: async (workflowId: string, resumeSubworkflowTasks = false) => {\n      warn();\n      await WorkflowResource.retry({\n        client,\n        path: { workflowId },\n        query: { resumeSubworkflowTasks },\n        throwOnError: true,\n      });\n    },\n    /**\n     * @deprecated\n     */\n    getExecutionStatus: async (workflowId: string, includeTasks = true) => {\n      warn();\n      const { data } = await WorkflowResource.getExecutionStatus({\n        client,\n        path: { workflowId },\n        query: { includeTasks },\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    terminate1: async (workflowId: string, reason?: string) => {\n      warn();\n      await WorkflowResource.terminate1({\n        client,\n        path: { workflowId },\n        query: { reason },\n        throwOnError: true,\n      });\n    },\n    /**\n     * @deprecated\n     */\n    resumeWorkflow: async (workflowId: string) => {\n      warn();\n      await WorkflowResource.resumeWorkflow({\n        client,\n        path: { workflowId },\n        throwOnError: true,\n      });\n    },\n    /**\n     * @deprecated\n     */\n    delete: async (workflowId: string, archiveWorkflow = true) => {\n      warn();\n      await WorkflowResource.delete1({\n        client,\n        path: { workflowId },\n        query: { archiveWorkflow },\n        throwOnError: true,\n      });\n    },\n    /**\n     * @deprecated\n     */\n    searchWorkflowsByTasks: async (\n      start?: number,\n      size = 100,\n      sort?: string,\n      freeText = \"*\",\n      query?: string\n    ) => {\n      warn();\n      const { data } = await client.get({\n        security: [\n          {\n            name: \"X-Authorization\",\n            type: \"apiKey\",\n          },\n        ],\n        url: \"/api/workflow/search-by-tasks\",\n        query: { start, size, sort, freeText, query },\n        throwOnError: true,\n      });\n      return data as any;\n    },\n    /**\n     * @deprecated\n     */\n    getExternalStorageLocation: async (\n      path: string,\n      operation: string,\n      payloadType: string\n    ) => {\n      warn();\n      const { data } = await client.get({\n        security: [\n          {\n            name: \"X-Authorization\",\n            type: \"apiKey\",\n          },\n        ],\n        url: \"/api/workflow/externalstoragelocation\",\n        query: { path, operation, payloadType },\n        throwOnError: true,\n      });\n      return data as any;\n    },\n    /**\n     * @deprecated\n     */\n    startWorkflow1: async (\n      name: string,\n      requestBody: any,\n      version?: number,\n      correlationId?: string,\n      priority?: number\n    ) => {\n      warn();\n      const { data } = await WorkflowResource.startWorkflow1({\n        client,\n        path: { name },\n        query: { version, correlationId, priority },\n        body: requestBody,\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    restart1: async (workflowId: string, useLatestDefinitions = false) => {\n      warn();\n      await WorkflowResource.restart({\n        client,\n        path: { workflowId },\n        query: { useLatestDefinitions },\n        throwOnError: true,\n      });\n    },\n    /**\n     * @deprecated\n     */\n    search1: async (\n      queryId?: string,\n      start?: number,\n      size = 100,\n      sort?: string,\n      freeText = \"*\",\n      query?: string,\n      skipCache = false\n    ) => {\n      warn();\n      const { data } = await client.get({\n        security: [\n          {\n            name: \"X-Authorization\",\n            type: \"apiKey\",\n          },\n        ],\n        url: \"/api/workflow/search\",\n        query: { queryId, start, size, sort, freeText, query, skipCache },\n        throwOnError: true,\n      });\n      return data as any;\n    },\n    /**\n     * @deprecated\n     */\n    searchWorkflowsByTasksV2: async (\n      start?: number,\n      size = 100,\n      sort?: string,\n      freeText = \"*\",\n      query?: string\n    ) => {\n      warn();\n      const { data } = await client.get({\n        security: [\n          {\n            name: \"X-Authorization\",\n            type: \"apiKey\",\n          },\n        ],\n        url: \"/api/workflow/search-by-tasks-v2\",\n        query: { start, size, sort, freeText, query },\n        throwOnError: true,\n      });\n      return data as any;\n    },\n    /**\n     * @deprecated\n     */\n    resetWorkflow: async (workflowId: string) => {\n      warn();\n      await WorkflowResource.resetWorkflow({\n        client,\n        path: { workflowId },\n        throwOnError: true,\n      });\n    },\n    /**\n     * @deprecated\n     */\n    testWorkflow: async (requestBody: any) => {\n      warn();\n      const { data } = await WorkflowResource.testWorkflow({\n        client,\n        body: requestBody,\n        throwOnError: true,\n      });\n      return data;\n    },\n  };\n\n  const serviceRegistryResource = {\n    getRegisteredServices: async () => {\n      warn();\n      const { data } = await ServiceRegistryResource.getRegisteredServices({\n        client,\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    removeService: async (name: string) => {\n      warn();\n      await ServiceRegistryResource.removeService({\n        client,\n        path: { name },\n        throwOnError: true,\n      });\n    },\n    /**\n     * @deprecated\n     */\n    getService: async (name: string) => {\n      warn();\n      const { data } = await ServiceRegistryResource.getService({\n        client,\n        path: { name },\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    openCircuitBreaker: async (name: string) => {\n      warn();\n      const { data } = await ServiceRegistryResource.openCircuitBreaker({\n        client,\n        path: { name },\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    closeCircuitBreaker: async (name: string) => {\n      warn();\n      const { data } = await ServiceRegistryResource.closeCircuitBreaker({\n        client,\n        path: { name },\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    getCircuitBreakerStatus: async (name: string) => {\n      warn();\n      const { data } = await ServiceRegistryResource.getCircuitBreakerStatus({\n        client,\n        path: { name },\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    addOrUpdateService: async (serviceRegistry: any) => {\n      warn();\n      await ServiceRegistryResource.addOrUpdateService({\n        client,\n        body: serviceRegistry,\n        throwOnError: true,\n      });\n    },\n    /**\n     * @deprecated\n     */\n    addOrUpdateServiceMethod: async (registryName: string, method: any) => {\n      warn();\n      await ServiceRegistryResource.addOrUpdateMethod({\n        client,\n        path: { registryName },\n        body: method,\n        throwOnError: true,\n      });\n    },\n    /**\n     * @deprecated\n     */\n    removeMethod: async (\n      registryName: string,\n      serviceName: string,\n      method: string,\n      methodType: string\n    ) => {\n      warn();\n      await ServiceRegistryResource.removeMethod({\n        client,\n        path: { registryName },\n        query: { serviceName, method, methodType },\n        throwOnError: true,\n      });\n    },\n    /**\n     * @deprecated\n     */\n    getProtoData: async (registryName: string, filename: string) => {\n      warn();\n      const { data } = await ServiceRegistryResource.getProtoData({\n        client,\n        path: { registryName, filename },\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    setProtoData: async (registryName: string, filename: string, data: any) => {\n      warn();\n      await ServiceRegistryResource.setProtoData({\n        client,\n        path: { registryName, filename },\n        body: data,\n        throwOnError: true,\n      });\n    },\n    /**\n     * @deprecated\n     */\n    deleteProto: async (registryName: string, filename: string) => {\n      warn();\n      await ServiceRegistryResource.deleteProto({\n        client,\n        path: { registryName, filename },\n        throwOnError: true,\n      });\n    },\n    /**\n     * @deprecated\n     */\n    getAllProtos: async (registryName: string) => {\n      warn();\n      const { data } = await ServiceRegistryResource.getAllProtos({\n        client,\n        path: { registryName },\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    discover: async (name: string, create = false) => {\n      warn();\n      const { data } = await ServiceRegistryResource.discover({\n        client,\n        path: { name },\n        query: { create },\n        throwOnError: true,\n      });\n      return data;\n    },\n  };\n\n  const humanTaskResource = {\n    getConductorTaskById: async (taskId: string) => {\n      warn();\n      const { data } = await HumanTaskResource.getConductorTaskById({\n        client,\n        path: { taskId },\n        throwOnError: true,\n      });\n      return data;\n    },\n  };\n  const humanTask = {\n    deleteTaskFromHumanTaskRecords: async (requestBody: any[]) => {\n      warn();\n      await HumanTask.deleteTaskFromHumanTaskRecords({\n        client,\n        body: requestBody,\n        throwOnError: true,\n      });\n    },\n    /**\n     * @deprecated\n     */\n    deleteTaskFromHumanTaskRecords1: async (taskId: string) => {\n      warn();\n      await HumanTask.deleteTaskFromHumanTaskRecords1({\n        client,\n        path: { taskId },\n        throwOnError: true,\n      });\n    },\n    /**\n     * @deprecated\n     */\n    search: async (requestBody: any) => {\n      warn();\n      const { data } = await HumanTask.search({\n        client,\n        body: requestBody,\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    updateTaskOutputByRef: async (\n      workflowId: string,\n      taskRefName: string,\n      requestBody: any,\n      complete = false,\n      iteration?: any[]\n    ) => {\n      warn();\n      const { data } = await HumanTask.updateTaskOutputByRef({\n        client,\n        query: {\n          workflowId,\n          taskRefName,\n          complete,\n          iteration,\n        },\n        body: requestBody,\n        throwOnError: true,\n      });\n      return data as any;\n    },\n    /**\n     * @deprecated\n     */\n    getTask1: async (taskId: string) => {\n      warn();\n      const { data } = await HumanTask.getTask1({\n        client,\n        path: { taskId },\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    claimTask: async (\n      taskId: string,\n      overrideAssignment = false,\n      withTemplate = false\n    ) => {\n      warn();\n      const { data } = await HumanTask.claimTask({\n        client,\n        path: { taskId },\n        query: { overrideAssignment, withTemplate },\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    assignAndClaim: async (\n      taskId: string,\n      userId: string,\n      overrideAssignment = false,\n      withTemplate = false\n    ) => {\n      warn();\n      const { data } = await HumanTask.assignAndClaim({\n        client,\n        path: { taskId, userId },\n        query: { overrideAssignment, withTemplate },\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    reassignTask: async (taskId: string, requestBody: any[]) => {\n      warn();\n      await HumanTask.reassignTask({\n        client,\n        path: { taskId },\n        body: requestBody,\n        throwOnError: true,\n      });\n    },\n    /**\n     * @deprecated\n     */\n    releaseTask: async (taskId: string) => {\n      warn();\n      await HumanTask.releaseTask({\n        client,\n        path: { taskId },\n        throwOnError: true,\n      });\n    },\n    /**\n     * @deprecated\n     */\n    skipTask: async (taskId: string, reason?: string) => {\n      warn();\n      await HumanTask.skipTask({\n        client,\n        path: { taskId },\n        query: { reason },\n        throwOnError: true,\n      });\n    },\n    /**\n     * @deprecated\n     */\n    updateTaskOutput: async (\n      taskId: string,\n      requestBody: any,\n      complete = false\n    ) => {\n      warn();\n      await HumanTask.updateTaskOutput({\n        client,\n        path: { taskId },\n        query: { complete },\n        body: requestBody,\n        throwOnError: true,\n      });\n    },\n    /**\n     * @deprecated\n     */\n    getAllTemplates: async (name?: string, version?: number) => {\n      warn();\n      const { data } = await UserForm.getAllTemplates({\n        client,\n        query: { name, version },\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    saveTemplate: async (requestBody: any, newVersion = false) => {\n      warn();\n      const { data } = await UserForm.saveTemplate({\n        client,\n        query: { newVersion },\n        body: requestBody,\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    saveTemplates: async (requestBody: any[], newVersion = false) => {\n      warn();\n      const { data } = await UserForm.saveTemplates({\n        client,\n        query: { newVersion },\n        body: requestBody,\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    deleteTemplateByName: async (name: string) => {\n      warn();\n      await UserForm.deleteTemplateByName({\n        client,\n        path: { name },\n        throwOnError: true,\n      });\n    },\n    /**\n     * @deprecated\n     */\n    deleteTemplatesByNameAndVersion: async (name: string, version: number) => {\n      warn();\n      await HumanTask.deleteTemplatesByNameAndVersion({\n        client,\n        path: { name, version },\n        throwOnError: true,\n      });\n    },\n    /**\n     * @deprecated\n     */\n    getTemplateByNameAndVersion: async (name: string, version: number) => {\n      warn();\n      const { data } = await UserForm.getTemplateByNameAndVersion({\n        client,\n        path: { name, version },\n        throwOnError: true,\n      });\n      return data;\n    },\n  };\n\n  const taskResource = {\n    poll: async (tasktype: string, workerid?: string, domain?: string) => {\n      warn();\n      const { data } = await TaskResource.poll({\n        client,\n        path: { tasktype },\n        query: { workerid, domain },\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    allVerbose: async () => {\n      warn();\n      const { data } = await TaskResource.allVerbose({\n        client,\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    updateTask: async (\n      workflowId: string,\n      taskRefName: string,\n      status:\n        | \"IN_PROGRESS\"\n        | \"FAILED\"\n        | \"FAILED_WITH_TERMINAL_ERROR\"\n        | \"COMPLETED\",\n      requestBody: any\n    ) => {\n      warn();\n      const { data } = await TaskResource.updateTask1({\n        client,\n        path: { workflowId, taskRefName, status },\n        body: requestBody,\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    getTask: async (taskId: string) => {\n      warn();\n      const { data } = await TaskResource.getTask({\n        client,\n        path: { taskId },\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    all: async () => {\n      warn();\n      const { data } = await TaskResource.all({\n        client,\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    requeuePendingTask: async (taskType: string) => {\n      warn();\n      const { data } = await TaskResource.requeuePendingTask({\n        client,\n        path: { taskType },\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    search: async (\n      start?: number,\n      size = 100,\n      sort?: string,\n      freeText = \"*\",\n      query?: string\n    ) => {\n      warn();\n      const { data } = await TaskResource.search2({\n        client,\n        query: { start, size, sort, freeText, query },\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    searchV22: async (\n      start?: number,\n      size = 100,\n      sort?: string,\n      freeText = \"*\",\n      query?: string\n    ) => {\n      warn();\n      const { data } = await client.get({\n        security: [\n          {\n            name: \"X-Authorization\",\n            type: \"apiKey\",\n          },\n        ],\n        url: \"/api/tasks/search-v2\",\n        query: { start, size, sort, freeText, query },\n        throwOnError: true,\n      });\n      return data as any;\n    },\n    /**\n     * @deprecated\n     */\n    getPollData: async (taskType: string) => {\n      warn();\n      const { data } = await TaskResource.getPollData({\n        client,\n        query: { taskType },\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    getTaskLogs: async (taskId: string) => {\n      warn();\n      const { data } = await TaskResource.getTaskLogs({\n        client,\n        path: { taskId },\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    log: async (taskId: string, requestBody: string) => {\n      warn();\n      await TaskResource.log({\n        client,\n        path: { taskId },\n        body: requestBody,\n        throwOnError: true,\n      });\n    },\n    /**\n     * @deprecated\n     */\n    getAllPollData: async () => {\n      warn();\n      const { data } = await TaskResource.getAllPollData({\n        client,\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    batchPoll: async (\n      tasktype: string,\n      workerid?: string,\n      domain?: string,\n      count = 1,\n      timeout = 100\n    ) => {\n      warn();\n      const { data } = await TaskResource.batchPoll({\n        client,\n        path: { tasktype },\n        query: { workerid, domain, count, timeout },\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    updateTask1: async (requestBody: any) => {\n      warn();\n      const { data } = await TaskResource.updateTask({\n        client,\n        body: requestBody,\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    size1: async (taskType?: string[]) => {\n      warn();\n      const { data } = await TaskResource.size({\n        client,\n        query: { taskType },\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    getExternalStorageLocation1: async (\n      path: string,\n      operation: string,\n      payloadType: string\n    ) => {\n      warn();\n      const { data } = await client.get({\n        security: [\n          {\n            name: \"X-Authorization\",\n            type: \"apiKey\",\n          },\n        ],\n        url: \"/api/tasks/externalstoragelocation\",\n        query: { path, operation, payloadType },\n        throwOnError: true,\n      });\n      return data as any;\n    },\n    /**\n     * @deprecated\n     */\n    updateTaskSync: async (\n      workflowId: string,\n      taskRefName: string,\n      status: any,\n      output: any,\n      workerId?: string\n    ) => {\n      warn();\n      const { data } = await TaskResource.updateTaskSync({\n        client,\n        path: { workflowId, taskRefName, status },\n        query: { workerid: workerId },\n        body: output,\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    signal: async (\n      workflowId: string,\n      status: any,\n      output: any,\n      returnStrategy: any = \"TARGET_WORKFLOW\"\n    ) => {\n      warn();\n      const { data } = await TaskResource.signalWorkflowTaskSync({\n        client,\n        path: { workflowId, status },\n        query: { returnStrategy },\n        body: output,\n        throwOnError: true,\n      });\n      return data;\n    },\n    /**\n     * @deprecated\n     */\n    signalAsync: async (workflowId: string, status: any, output: any) => {\n      warn();\n      const { data } = await TaskResource.signalWorkflowTaskASync({\n        client,\n        path: { workflowId, status },\n        body: output,\n        throwOnError: true,\n      });\n      return data as SignalResponse;\n    },\n  };\n\n  return {\n    ...client,\n    eventResource,\n    healthCheckResource,\n    metadataResource,\n    schedulerResource,\n    tokenResource,\n    workflowBulkResource,\n    workflowResource,\n    serviceRegistryResource,\n    humanTaskResource,\n    humanTask,\n    taskResource,\n  };\n};\n","import {\n  handleAuth,\n  resolveFetchFn,\n  resolveOrkesConfig,\n  wrapFetchWithRetry,\n} from \"./helpers\";\nimport type { OrkesApiConfig } from \"../types\";\nimport { createClient } from \"../../open-api/generated/client\";\nimport { addResourcesBackwardCompatibility } from \"./helpers/addResourcesBackwardCompatibility\";\n\n/**\n * Creates a Conductor client with authentication and configuration\n *\n * @param config (optional) OrkesApiConfig with keyId and keySecret\n * @param customFetch (optional) custom fetch function\n * @returns Client\n */\nexport const createConductorClient = async (\n  config?: OrkesApiConfig,\n  customFetch?: typeof fetch\n) => {\n  const {\n    serverUrl,\n    keyId,\n    keySecret,\n    maxHttp2Connections,\n    refreshTokenInterval,\n    logger,\n    requestTimeoutMs,\n    connectTimeoutMs,\n    tlsCertPath,\n    tlsKeyPath,\n    tlsCaPath,\n    proxyUrl,\n    tlsInsecure,\n    disableHttp2,\n  } = resolveOrkesConfig(config);\n\n  if (!serverUrl) throw new Error(\"Conductor server URL is not set\");\n\n  const baseFetchFn = await resolveFetchFn(customFetch, {\n    maxHttpConnections: maxHttp2Connections,\n    connectTimeoutMs,\n    tlsCertPath,\n    tlsKeyPath,\n    tlsCaPath,\n    proxyUrl,\n    tlsInsecure,\n    disableHttp2,\n  });\n\n  // Start with retry + timeout on fetch (no auth failure callback yet)\n  const openApiClient = createClient({\n    baseUrl: serverUrl,\n    fetch: wrapFetchWithRetry(baseFetchFn, { requestTimeoutMs }),\n    throwOnError: true,\n  });\n\n  let authResult: Awaited<ReturnType<typeof handleAuth>> | undefined;\n  if (keyId && keySecret) {\n    authResult = await handleAuth(\n      openApiClient,\n      keyId,\n      keySecret,\n      refreshTokenInterval,\n      logger\n    );\n  }\n\n  // Upgrade fetch with auth failure callback now that auth is set up.\n  // This replaces the initial wrapper, adding onAuthFailure for 401/403 retry.\n  if (authResult) {\n    openApiClient.setConfig({\n      fetch: wrapFetchWithRetry(baseFetchFn, {\n        onAuthFailure: authResult.refreshToken,\n        requestTimeoutMs,\n      }),\n    });\n  }\n\n  // Legacy compatibility: Adds resource-based API methods for backward compatibility.\n  // The modern API is available directly on openApiClient, but legacy methods are maintained.\n  return addResourcesBackwardCompatibility(openApiClient);\n};\n","import { ApplicationResource } from \"../../../open-api/generated\";\nimport { handleSdkError } from \"../../helpers/errors\";\nimport type {\n  Client,\n  Tag,\n  ExtendedConductorApplication,\n  AccessKey,\n  AccessKeyInfo,\n  ApplicationRole,\n} from \"../../../open-api\";\n\nexport class ApplicationClient {\n  public readonly _client: Client;\n\n  constructor(client: Client) {\n    this._client = client;\n  }\n\n  /**\n   * Get all applications\n   * @returns {Promise<ExtendedConductorApplication[]>}\n   * @throws {ConductorSdkError}\n   */\n  public async getAllApplications(): Promise<ExtendedConductorApplication[]> {\n    try {\n      const { data } = await ApplicationResource.listApplications({\n        client: this._client,\n        throwOnError: true,\n      });\n\n      return data as ExtendedConductorApplication[]; // TODO: remove cast after OpenApi spec type update\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to get all applications`);\n    }\n  }\n\n  /**\n   * Create an application\n   * @param {string} applicationName\n   * @returns {Promise<ExtendedConductorApplication>}\n   * @throws {ConductorSdkError}\n   */\n  public async createApplication(\n    applicationName: string\n  ): Promise<ExtendedConductorApplication> {\n    try {\n      const { data } = await ApplicationResource.createApplication({\n        body: { name: applicationName },\n        client: this._client,\n        throwOnError: true,\n      });\n\n      return data as unknown as ExtendedConductorApplication; // TODO: remove cast after OpenApi spec type update\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to create application`);\n    }\n  }\n\n  /**\n   * Get application by access key id\n   * @param {string} accessKeyId\n   * @returns {Promise<ExtendedConductorApplication>}\n   * @throws {ConductorSdkError}\n   */\n  public async getAppByAccessKeyId(\n    accessKeyId: string\n  ): Promise<ExtendedConductorApplication> {\n    try {\n      const { data } = await ApplicationResource.getAppByAccessKeyId({\n        path: { accessKeyId },\n        client: this._client,\n        throwOnError: true,\n      });\n\n      return data as unknown as ExtendedConductorApplication; // TODO: remove cast after OpenApi spec type update\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to get application by access key id: ${accessKeyId}`\n      );\n    }\n  }\n\n  /**\n   * Delete an access key\n   * @param {string} applicationId\n   * @param {string} keyId\n   * @returns {Promise<void>}\n   * @throws {ConductorSdkError}\n   */\n  public async deleteAccessKey(\n    applicationId: string,\n    keyId: string\n  ): Promise<void> {\n    try {\n      await ApplicationResource.deleteAccessKey({\n        path: { applicationId, keyId },\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to delete access key ${keyId} for application ${applicationId}`\n      );\n    }\n  }\n\n  /**\n   * Toggle the status of an access key\n   * @param {string} applicationId\n   * @param {string} keyId\n   * @returns {Promise<AccessKeyInfo>}\n   * @throws {ConductorSdkError}\n   */\n  public async toggleAccessKeyStatus(\n    applicationId: string,\n    keyId: string\n  ): Promise<AccessKeyInfo> {\n    try {\n      const { data } = await ApplicationResource.toggleAccessKeyStatus({\n        path: { applicationId, keyId },\n        client: this._client,\n        throwOnError: true,\n      });\n\n      return data as unknown as AccessKeyInfo; // TODO: remove cast after OpenApi spec type update\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to toggle access key status ${keyId} for application ${applicationId}`\n      );\n    }\n  }\n\n  /**\n   * Remove role from application user\n   * @param {string} applicationId\n   * @param {string} role\n   * @returns {Promise<void>}\n   * @throws {ConductorSdkError}\n   */\n  public async removeRoleFromApplicationUser(\n    applicationId: string,\n    role: string\n  ): Promise<void> {\n    try {\n      await ApplicationResource.removeRoleFromApplicationUser({\n        path: { applicationId, role },\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to remove role ${role} from application user ${applicationId}`\n      );\n    }\n  }\n\n  /**\n   * Add role to application\n   * @param {string} applicationId\n   * @param {ApplicationRole} role\n   * @returns {Promise<void>}\n   * @throws {ConductorSdkError}\n   */\n  public async addApplicationRole(\n    applicationId: string,\n    role: ApplicationRole\n  ): Promise<void> {\n    try {\n      await ApplicationResource.addRoleToApplicationUser({\n        path: { applicationId, role },\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to add role ${role} to application user ${applicationId}`\n      );\n    }\n  }\n\n  /**\n   * Delete an application\n   * @param {string} applicationId\n   * @returns {Promise<void>}\n   * @throws {ConductorSdkError}\n   */\n  public async deleteApplication(applicationId: string): Promise<void> {\n    try {\n      await ApplicationResource.deleteApplication({\n        path: { id: applicationId },\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to delete application: ${applicationId}`);\n    }\n  }\n\n  /**\n   * Get an application by id\n   * @param {string} applicationId\n   * @returns {Promise<ExtendedConductorApplication>}\n   * @throws {ConductorSdkError}\n   */\n  public async getApplication(\n    applicationId: string\n  ): Promise<ExtendedConductorApplication> {\n    try {\n      const { data } = await ApplicationResource.getApplication({\n        path: { id: applicationId },\n        client: this._client,\n        throwOnError: true,\n      });\n\n      return data as unknown as ExtendedConductorApplication; // TODO: remove cast after OpenApi spec type update\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to get application: ${applicationId}`);\n    }\n  }\n\n  /**\n   * Update an application\n   * @param {string} applicationId\n   * @param {string} newApplicationName\n   * @returns {Promise<ExtendedConductorApplication>}\n   * @throws {ConductorSdkError}\n   */\n  public async updateApplication(\n    applicationId: string,\n    newApplicationName: string\n  ): Promise<ExtendedConductorApplication> {\n    try {\n      const { data } = await ApplicationResource.updateApplication({\n        path: { id: applicationId },\n        body: { name: newApplicationName },\n        client: this._client,\n        throwOnError: true,\n      });\n\n      return data as unknown as ExtendedConductorApplication; // TODO: remove cast after OpenApi spec type update\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to update application ${applicationId}`);\n    }\n  }\n\n  /**\n   * Get application's access keys\n   * @param {string} applicationId\n   * @returns {Promise<AccessKeyInfo[]>}\n   * @throws {ConductorSdkError}\n   */\n  public async getAccessKeys(applicationId: string): Promise<AccessKeyInfo[]> {\n    try {\n      const { data } = await ApplicationResource.getAccessKeys({\n        path: { id: applicationId },\n        client: this._client,\n        throwOnError: true,\n      });\n\n      return data as unknown as AccessKeyInfo[]; // TODO: remove cast after OpenApi spec update\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to get access keys for application: ${applicationId}`\n      );\n    }\n  }\n\n  /**\n   * Create an access key for an application\n   * @param {string} applicationId\n   * @returns {Promise<AccessKey>}\n   * @throws {ConductorSdkError}\n   */\n  public async createAccessKey(applicationId: string): Promise<AccessKey> {\n    try {\n      const { data } = await ApplicationResource.createAccessKey({\n        path: { id: applicationId },\n        client: this._client,\n        throwOnError: true,\n      });\n\n      return data as unknown as AccessKey; // TODO: remove cast after OpenApi spec update\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to create access key for application: ${applicationId}`\n      );\n    }\n  }\n\n  /**\n   * Delete application tags\n   * @param {string} applicationId\n   * @param {Tag[]} tags\n   * @returns {Promise<void>}\n   * @throws {ConductorSdkError}\n   */\n  public async deleteApplicationTags(\n    applicationId: string,\n    tags: Tag[]\n  ): Promise<void> {\n    try {\n      await ApplicationResource.deleteTagForApplication({\n        path: { id: applicationId },\n        body: tags,\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to delete tags for application: ${applicationId}`\n      );\n    }\n  }\n\n  /**\n   * Delete a single application tag\n   * @param {string} applicationId\n   * @param {Tag} tag\n   * @returns {Promise<void>}\n   * @throws {ConductorSdkError}\n   */\n  public async deleteApplicationTag(\n    applicationId: string,\n    tag: Tag\n  ): Promise<void> {\n    try {\n      await ApplicationResource.deleteTagForApplication({\n        path: { id: applicationId },\n        body: [tag],\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to delete a tag for application: ${applicationId}`\n      );\n    }\n  }\n\n  /**\n   * Get application tags\n   * @param {string} applicationId\n   * @returns {Promise<Tag[]>}\n   * @throws {ConductorSdkError}\n   */\n  public async getApplicationTags(applicationId: string): Promise<Tag[]> {\n    try {\n      const { data } = await ApplicationResource.getTagsForApplication({\n        path: { id: applicationId },\n        client: this._client,\n        throwOnError: true,\n      });\n\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to get tags for application: ${applicationId}`\n      );\n    }\n  }\n\n  /**\n   * Add application tags\n   * @param {string} applicationId\n   * @param {Tag[]} tags\n   * @returns {Promise<void>}\n   * @throws {ConductorSdkError}\n   */\n  public async addApplicationTags(\n    applicationId: string,\n    tags: Tag[]\n  ): Promise<void> {\n    try {\n      await ApplicationResource.putTagForApplication({\n        path: { id: applicationId },\n        body: tags,\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to add application tags: ${applicationId}`);\n    }\n  }\n\n  /**\n   * Add a single application tag\n   * @param {string} applicationId\n   * @param {Tag} tag\n   * @returns {Promise<void>}\n   * @throws {ConductorSdkError}\n   */\n  public async addApplicationTag(\n    applicationId: string,\n    tag: Tag\n  ): Promise<void> {\n    try {\n      await ApplicationResource.putTagForApplication({\n        path: { id: applicationId },\n        body: [tag],\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to add an application tag: ${applicationId}`\n      );\n    }\n  }\n}\n","import type {\n  Client,\n  ExtendedConductorUser,\n  ExtendedGroup,\n} from \"../../../open-api\";\nimport type {\n  AuthorizationRequest,\n  GrantedAccessResponse,\n  UpsertGroupRequest,\n  UpsertUserRequest,\n} from \"../../../open-api/generated\";\nimport {\n  AuthorizationResource,\n  GroupResource,\n  UserResource,\n} from \"../../../open-api/generated\";\nimport { handleSdkError } from \"../../helpers/errors\";\n\nexport class AuthorizationClient {\n  public readonly _client: Client;\n\n  constructor(client: Client) {\n    this._client = client;\n  }\n\n  // ==================== Permission Management ====================\n\n  /**\n   * Grant permissions to a subject for a target\n   * @param request - The authorization request\n   */\n  public async grantPermissions(\n    request: AuthorizationRequest\n  ): Promise<void> {\n    try {\n      await AuthorizationResource.grantPermissions({\n        body: request,\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to grant permissions\");\n    }\n  }\n\n  /**\n   * Get permissions for a resource\n   * @param type - The resource type\n   * @param id - The resource ID\n   * @returns The permissions object\n   */\n  public async getPermissions(\n    type:\n      | \"WORKFLOW\"\n      | \"WORKFLOW_DEF\"\n      | \"WORKFLOW_SCHEDULE\"\n      | \"EVENT_HANDLER\"\n      | \"TASK_DEF\"\n      | \"TASK_REF_NAME\"\n      | \"TASK_ID\"\n      | \"APPLICATION\"\n      | \"USER\"\n      | \"SECRET_NAME\"\n      | \"ENV_VARIABLE\"\n      | \"TAG\"\n      | \"DOMAIN\"\n      | \"INTEGRATION_PROVIDER\"\n      | \"INTEGRATION\"\n      | \"PROMPT\"\n      | \"USER_FORM_TEMPLATE\"\n      | \"SCHEMA\"\n      | \"CLUSTER_CONFIG\"\n      | \"WEBHOOK\",\n    id: string\n  ): Promise<Record<string, unknown>> {\n    try {\n      const { data } = await AuthorizationResource.getPermissions({\n        path: { type, id },\n        client: this._client,\n        throwOnError: true,\n      });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to get permissions for ${type} '${id}'`);\n    }\n  }\n\n  /**\n   * Remove permissions from a subject for a target\n   * @param request - The authorization request\n   */\n  public async removePermissions(\n    request: AuthorizationRequest\n  ): Promise<void> {\n    try {\n      await AuthorizationResource.removePermissions({\n        body: request,\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to remove permissions\");\n    }\n  }\n\n  // ==================== User Management ====================\n\n  /**\n   * Create or update a user\n   * @param id - The user ID\n   * @param request - The upsert user request\n   * @returns The user object\n   */\n  public async upsertUser(\n    id: string,\n    request: UpsertUserRequest\n  ): Promise<ExtendedConductorUser> {\n    try {\n      const { data } = await UserResource.upsertUser({\n        path: { id },\n        body: request,\n        client: this._client,\n        throwOnError: true,\n      });\n      return data as ExtendedConductorUser;\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to upsert user '${id}'`);\n    }\n  }\n\n  /**\n   * Get a user by ID\n   * @param id - The user ID\n   * @returns The user object\n   */\n  public async getUser(id: string): Promise<ExtendedConductorUser> {\n    try {\n      const { data } = await UserResource.getUser({\n        path: { id },\n        client: this._client,\n        throwOnError: true,\n      });\n      return data as ExtendedConductorUser;\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to get user '${id}'`);\n    }\n  }\n\n  /**\n   * List all users\n   * @param apps - Whether to include application users\n   * @returns Array of users\n   */\n  public async listUsers(apps = false): Promise<ExtendedConductorUser[]> {\n    try {\n      const { data } = await UserResource.listUsers({\n        query: { apps },\n        client: this._client,\n        throwOnError: true,\n      });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to list users\");\n    }\n  }\n\n  /**\n   * Delete a user\n   * @param id - The user ID\n   */\n  public async deleteUser(id: string): Promise<void> {\n    try {\n      await UserResource.deleteUser({\n        path: { id },\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to delete user '${id}'`);\n    }\n  }\n\n  /**\n   * Check permissions for a user\n   * @param userId - The user ID\n   * @param type - The resource type\n   * @param id - The resource ID\n   * @returns The permissions check result\n   */\n  public async checkPermissions(\n    userId: string,\n    type: string,\n    id: string\n  ): Promise<Record<string, unknown>> {\n    try {\n      const { data } = await UserResource.checkPermissions({\n        path: { userId },\n        query: { type, id },\n        client: this._client,\n        throwOnError: true,\n      });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to check permissions for user '${userId}'`\n      );\n    }\n  }\n\n  /**\n   * Get granted permissions for a user\n   * @param userId - The user ID\n   * @returns The granted permissions\n   */\n  public async getGrantedPermissionsForUser(\n    userId: string\n  ): Promise<GrantedAccessResponse> {\n    try {\n      const { data } = await UserResource.getGrantedPermissions({\n        path: { userId },\n        client: this._client,\n        throwOnError: true,\n      });\n      return data as GrantedAccessResponse;\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to get granted permissions for user '${userId}'`\n      );\n    }\n  }\n\n  // ==================== Group Management ====================\n\n  /**\n   * Create or update a group\n   * @param id - The group ID\n   * @param request - The upsert group request\n   * @returns The group object\n   */\n  public async upsertGroup(\n    id: string,\n    request: UpsertGroupRequest\n  ): Promise<ExtendedGroup> {\n    try {\n      const { data } = await GroupResource.upsertGroup({\n        path: { id },\n        body: request,\n        client: this._client,\n        throwOnError: true,\n      });\n      return data as ExtendedGroup;\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to upsert group '${id}'`);\n    }\n  }\n\n  /**\n   * Get a group by ID\n   * @param id - The group ID\n   * @returns The group object\n   */\n  public async getGroup(id: string): Promise<ExtendedGroup> {\n    try {\n      const { data } = await GroupResource.getGroup({\n        path: { id },\n        client: this._client,\n        throwOnError: true,\n      });\n      return data as ExtendedGroup;\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to get group '${id}'`);\n    }\n  }\n\n  /**\n   * List all groups\n   * @returns Array of groups\n   */\n  public async listGroups(): Promise<ExtendedGroup[]> {\n    try {\n      const { data } = await GroupResource.listGroups({\n        client: this._client,\n        throwOnError: true,\n      });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to list groups\");\n    }\n  }\n\n  /**\n   * Delete a group\n   * @param id - The group ID\n   */\n  public async deleteGroup(id: string): Promise<void> {\n    try {\n      await GroupResource.deleteGroup({\n        path: { id },\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to delete group '${id}'`);\n    }\n  }\n\n  /**\n   * Add a user to a group\n   * @param groupId - The group ID\n   * @param userId - The user ID\n   */\n  public async addUserToGroup(\n    groupId: string,\n    userId: string\n  ): Promise<void> {\n    try {\n      await GroupResource.addUserToGroup({\n        path: { groupId, userId },\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to add user '${userId}' to group '${groupId}'`\n      );\n    }\n  }\n\n  /**\n   * Add multiple users to a group\n   * @param groupId - The group ID\n   * @param userIds - Array of user IDs\n   */\n  public async addUsersToGroup(\n    groupId: string,\n    userIds: string[]\n  ): Promise<void> {\n    try {\n      await GroupResource.addUsersToGroup({\n        path: { groupId },\n        body: userIds,\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to add users to group '${groupId}'`);\n    }\n  }\n\n  /**\n   * Get users in a group\n   * @param id - The group ID\n   * @returns The users in the group\n   */\n  public async getUsersInGroup(\n    id: string\n  ): Promise<ExtendedConductorUser[]> {\n    try {\n      const { data } = await GroupResource.getUsersInGroup({\n        path: { id },\n        client: this._client,\n        throwOnError: true,\n      });\n      return data as unknown as ExtendedConductorUser[];\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to get users in group '${id}'`);\n    }\n  }\n\n  /**\n   * Remove a user from a group\n   * @param groupId - The group ID\n   * @param userId - The user ID\n   */\n  public async removeUserFromGroup(\n    groupId: string,\n    userId: string\n  ): Promise<void> {\n    try {\n      await GroupResource.removeUserFromGroup({\n        path: { groupId, userId },\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to remove user '${userId}' from group '${groupId}'`\n      );\n    }\n  }\n\n  /**\n   * Remove multiple users from a group\n   * @param groupId - The group ID\n   * @param userIds - Array of user IDs\n   */\n  public async removeUsersFromGroup(\n    groupId: string,\n    userIds: string[]\n  ): Promise<void> {\n    try {\n      await GroupResource.removeUsersFromGroup({\n        path: { groupId },\n        body: userIds,\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to remove users from group '${groupId}'`\n      );\n    }\n  }\n\n  /**\n   * Get granted permissions for a group\n   * @param groupId - The group ID\n   * @returns The granted access response\n   */\n  public async getGrantedPermissionsForGroup(\n    groupId: string\n  ): Promise<GrantedAccessResponse> {\n    try {\n      const { data } = await GroupResource.getGrantedPermissions1({\n        path: { groupId },\n        client: this._client,\n        throwOnError: true,\n      });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to get granted permissions for group '${groupId}'`\n      );\n    }\n  }\n}\n","import {\n  EventResource,\n  EventExecutionResource,\n  EventMessageResource,\n} from \"../../../open-api/generated\";\nimport { handleSdkError } from \"../../helpers/errors\";\nimport type {\n  Client,\n  EventHandler,\n  ExtendedEventExecution,\n  EventMessage,\n  SearchResultHandledEventResponse,\n  Tag,\n  ConnectivityTestInput,\n  ConnectivityTestResult,\n} from \"../../../open-api\";\n\nexport class EventClient {\n  public readonly _client: Client;\n\n  constructor(client: Client) {\n    this._client = client;\n  }\n\n  /**\n   * Get all the event handlers\n   * @returns {Promise<EventHandler[]>}\n   * @throws {ConductorSdkError}\n   */\n  public async getAllEventHandlers(): Promise<EventHandler[]> {\n    try {\n      const { data } = await EventResource.getEventHandlers({\n        client: this._client,\n        throwOnError: true,\n      });\n\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to get all event handlers`);\n    }\n  }\n\n  /**\n   * Add event handlers\n   * @param {EventHandler[]} eventHandlers\n   * @returns {Promise<void>}\n   * @throws {ConductorSdkError}\n   */\n  public async addEventHandlers(eventHandlers: EventHandler[]): Promise<void> {\n    try {\n      await EventResource.addEventHandler({\n        body: eventHandlers,\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to add event handlers`);\n    }\n  }\n\n  /**\n   * Add an event handler\n   * @param {EventHandler} eventHandler\n   * @returns {Promise<void>}\n   * @throws {ConductorSdkError}\n   */\n  public async addEventHandler(eventHandler: EventHandler): Promise<void> {\n    try {\n      await EventResource.addEventHandler({\n        body: [eventHandler],\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to add event handler`);\n    }\n  }\n\n  /**\n   * Update an event handler\n   * @param {EventHandler} eventHandler\n   * @returns {Promise<void>}\n   * @throws {ConductorSdkError}\n   */\n  public async updateEventHandler(eventHandler: EventHandler): Promise<void> {\n    try {\n      await EventResource.updateEventHandler({\n        body: eventHandler,\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to update event handler`);\n    }\n  }\n\n  /**\n   * Handle an incoming event\n   * @param {Record<string, string>} data\n   * @returns {Promise<void>}\n   * @throws {ConductorSdkError}\n   */\n  public async handleIncomingEvent(\n    data: Record<string, string>\n  ): Promise<void> {\n    try {\n      await EventResource.handleIncomingEvent({\n        body: data,\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to handle incoming event`);\n    }\n  }\n\n  /**\n   * Get an event handler by name\n   * @param {string} eventHandlerName\n   * @returns {Promise<EventHandler>}\n   * @throws {ConductorSdkError}\n   */\n  public async getEventHandlerByName(\n    eventHandlerName: string\n  ): Promise<EventHandler> {\n    try {\n      const { response, data } = await EventResource.getEventHandlerByName({\n        client: this._client,\n        throwOnError: true,\n        path: { name: eventHandlerName },\n      });\n\n      if (response.headers.get(\"content-length\") === \"0\") {\n        throw new Error(\"Response is empty\");\n      }\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to get event handler by name ${eventHandlerName}`\n      );\n    }\n  }\n\n  /**\n   * Get all queue configs\n   * @returns {Promise<Record<string, string>>}\n   * @throws {ConductorSdkError}\n   */\n  public async getAllQueueConfigs(): Promise<Record<string, string>> {\n    try {\n      const { data } = await EventResource.getQueueNames({\n        client: this._client,\n        throwOnError: true,\n      });\n\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to get all queue configs`);\n    }\n  }\n\n  /**\n   * Delete queue config\n   * @param {string} queueType\n   * @param {string} queueName\n   * @returns {Promise<void>}\n   * @throws {ConductorSdkError}\n   */\n  public async deleteQueueConfig(\n    queueType: string,\n    queueName: string\n  ): Promise<void> {\n    try {\n      await EventResource.deleteQueueConfig({\n        path: { queueType, queueName },\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to delete queue config ${queueType} ${queueName}`\n      );\n    }\n  }\n\n  /**\n   * Get queue config\n   * @param {string} queueType\n   * @param {string} queueName\n   * @returns {Promise<Record<string, unknown>>}\n   * @throws {ConductorSdkError}\n   */\n  public async getQueueConfig(\n    queueType: string,\n    queueName: string\n  ): Promise<Record<string, unknown>> {\n    try {\n      const { data } = await EventResource.getQueueConfig({\n        path: { queueType, queueName },\n        client: this._client,\n        throwOnError: true,\n      });\n\n      if (Object.keys(data).length === 0) {\n        throw new Error(\"Response is empty\");\n      }\n\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to get queue config`);\n    }\n  }\n\n  /**\n   * Get event handlers for a given event\n   * @param {string} event\n   * @param {boolean} [activeOnly=false] Only return active handlers.\n   * @returns {Promise<EventHandler[]>}\n   * @throws {ConductorSdkError}\n   */\n  public async getEventHandlersForEvent(\n    event: string,\n    activeOnly = false\n  ): Promise<EventHandler[]> {\n    try {\n      const { data } = await EventResource.getEventHandlersForEvent({\n        client: this._client,\n        throwOnError: true,\n        path: { event },\n        query: { activeOnly },\n      });\n\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to get event handlers for event: ${event}`);\n    }\n  }\n\n  /**\n   * Remove an event handler by name\n   * @param {string} name\n   * @returns {Promise<void>}\n   * @throws {ConductorSdkError}\n   */\n  public async removeEventHandler(name: string): Promise<void> {\n    try {\n      await EventResource.removeEventHandlerStatus({\n        client: this._client,\n        throwOnError: true,\n        path: { name },\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to remove event handler: ${name}`);\n    }\n  }\n\n  /**\n   * Get tags for an event handler\n   * @param {string} name\n   * @returns {Promise<Tag[]>}\n   * @throws {ConductorSdkError}\n   */\n  public async getTagsForEventHandler(name: string): Promise<Tag[]> {\n    try {\n      const { data } = await EventResource.getTagsForEventHandler({\n        client: this._client,\n        throwOnError: true,\n        path: { name },\n      });\n\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to get tags for event handler: ${name}`);\n    }\n  }\n\n  /**\n   * Put tags for an event handler\n   * @param {string} name\n   * @param {Tag[]} tags\n   * @returns {Promise<void>}\n   * @throws {ConductorSdkError}\n   */\n  public async putTagForEventHandler(name: string, tags: Tag[]): Promise<void> {\n    try {\n      await EventResource.putTagForEventHandler({\n        client: this._client,\n        throwOnError: true,\n        path: { name },\n        body: tags,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to put tags for event handler: ${name}`);\n    }\n  }\n\n  /**\n   * Delete tags for an event handler\n   * @param {string} name\n   * @param {Tag[]} tags\n   * @returns {Promise<void>}\n   * @throws {ConductorSdkError}\n   */\n  public async deleteTagsForEventHandler(\n    name: string,\n    tags: Tag[]\n  ): Promise<void> {\n    try {\n      await EventResource.deleteTagForEventHandler({\n        client: this._client,\n        throwOnError: true,\n        path: { name },\n        body: tags,\n      });\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to delete tags for an event handler: ${name}`\n      );\n    }\n  }\n\n  /**\n   * Delete a tag for an event handler\n   * @param {string} name\n   * @param {Tag} tag\n   * @returns {Promise<void>}\n   * @throws {ConductorSdkError}\n   */\n  public async deleteTagForEventHandler(name: string, tag: Tag): Promise<void> {\n    try {\n      await EventResource.deleteTagForEventHandler({\n        client: this._client,\n        throwOnError: true,\n        path: { name },\n        body: [tag],\n      });\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to delete a tag for an event handler: ${name}`\n      );\n    }\n  }\n\n  /**\n   * Test connectivity for a given queue using a workflow with EVENT task and an EventHandler\n   * @param {ConnectivityTestInput} input\n   * @returns {Promise<ConnectivityTestResult>}\n   * @throws {ConductorSdkError}\n   */\n  public async testConnectivity(\n    input: ConnectivityTestInput\n  ): Promise<ConnectivityTestResult> {\n    try {\n      const { data } = await EventResource.testConnectivity({\n        client: this._client,\n        throwOnError: true,\n        body: input,\n      });\n\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to test connectivity`);\n    }\n  }\n\n  /**\n   * Create or update queue config by name\n   * @deprecated Prefer server's newer endpoints if available\n   * @param {string} queueType\n   * @param {string} queueName\n   * @param {string} config\n   * @returns {Promise<void>}\n   * @throws {ConductorSdkError}\n   */\n  public async putQueueConfig(\n    queueType: string,\n    queueName: string,\n    config: string\n  ): Promise<void> {\n    try {\n      await EventResource.putQueueConfig({\n        client: this._client,\n        throwOnError: true,\n        path: { queueType, queueName },\n        body: config,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to put queue config`);\n    }\n  }\n\n  /**\n   * Test endpoint (as exposed by API)\n   * @returns {Promise<EventHandler>}\n   * @throws {ConductorSdkError}\n   */\n  public async test(): Promise<EventHandler> {\n    try {\n      const { data } = await EventResource.test({\n        client: this._client,\n        throwOnError: true,\n      });\n\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to call test endpoint`);\n    }\n  }\n\n  /**\n   * Get all active event handlers (execution view)\n   * @returns {Promise<SearchResultHandledEventResponse>}\n   * @throws {ConductorSdkError}\n   */\n  public async getAllActiveEventHandlers(): Promise<SearchResultHandledEventResponse> {\n    try {\n      const { data } = await EventExecutionResource.getEventHandlersForEvent1({\n        client: this._client,\n        throwOnError: true,\n      });\n\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to get all active event handlers (execution view)`\n      );\n    }\n  }\n\n  /**\n   * Get event executions for a specific handler\n   * @param {string} eventHandlerName\n   * @param {number} [from] Pagination cursor\n   * @returns {Promise<ExtendedEventExecution[]>}\n   * @throws {ConductorSdkError}\n   */\n  public async getEventExecutions(\n    eventHandlerName: string,\n    from?: number\n  ): Promise<ExtendedEventExecution[]> {\n    try {\n      const { data } = await EventExecutionResource.getEventHandlersForEvent2({\n        client: this._client,\n        throwOnError: true,\n        path: { eventHandlerName },\n        query: { from },\n      });\n\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to get event executions for handler: ${eventHandlerName}`\n      );\n    }\n  }\n\n  /**\n   * Get all event handlers with statistics (messages view)\n   * @param {number} [from] Pagination cursor\n   * @returns {Promise<SearchResultHandledEventResponse>}\n   * @throws {ConductorSdkError}\n   */\n  public async getEventHandlersWithStats(\n    from?: number\n  ): Promise<SearchResultHandledEventResponse> {\n    try {\n      const { data } = await EventMessageResource.getEvents({\n        client: this._client,\n        throwOnError: true,\n        query: { from },\n      });\n\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to get event handlers statistics`);\n    }\n  }\n\n  /**\n   * Get event messages for a given event\n   * @param {string} event\n   * @param {number} [from] Pagination cursor\n   * @returns {Promise<EventMessage[]>}\n   * @throws {ConductorSdkError}\n   */\n  public async getEventMessages(\n    event: string,\n    from?: number\n  ): Promise<EventMessage[]> {\n    try {\n      const { data } = await EventMessageResource.getMessages({\n        client: this._client,\n        throwOnError: true,\n        path: { event },\n        query: { from },\n      });\n\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to get event messages for event: ${event}`);\n    }\n  }\n}\n","import { HumanTaskSearch } from \"../../../open-api\";\n\nexport const EMPTY_SEARCH: HumanTaskSearch = {\n  size: 15,\n  states: [],\n  taskInputQuery: \"\",\n  taskOutputQuery: \"\",\n  definitionNames: [],\n  taskRefNames: [],\n  claimants: [],\n  assignees: [],\n  start: 0,\n};\n\nexport const DEFAULT_POLL_INTERVAL = { pollInterval: 100, maxPollTimes: 20 };\n","import type {\n  Client,\n  HumanTaskSearch,\n  HumanTaskEntry,\n  HumanTaskTemplate,\n} from \"../../../open-api\";\nimport { HumanTask } from \"../../../open-api/generated\";\nimport { handleSdkError } from \"../../helpers/errors\";\nimport { DEFAULT_POLL_INTERVAL, EMPTY_SEARCH } from \"./constants\";\nimport { ClaimTaskOptions, PollIntervalOptions, UserType } from \"./types\";\n\nexport class HumanExecutor {\n  public readonly _client: Client;\n\n  constructor(client: Client) {\n    this._client = client;\n  }\n\n  /**\n   * @deprecated use search instead\n   * Takes a set of filter parameters. return matches of human tasks for that set of parameters\n   * @param state\n   * @param assignee\n   * @param assigneeType\n   * @param claimedBy\n   * @param taskName\n   * @param freeText\n   * @param includeInputOutput\n   * @returns\n   */\n  public async getTasksByFilter(\n    state: \"PENDING\" | \"ASSIGNED\" | \"IN_PROGRESS\" | \"COMPLETED\" | \"TIMED_OUT\",\n    assignee?: string,\n    assigneeType?:\n      | \"EXTERNAL_USER\"\n      | \"EXTERNAL_GROUP\"\n      | \"CONDUCTOR_USER\"\n      | \"CONDUCTOR_GROUP\",\n    claimedBy?: string,\n    taskName?: string,\n    taskInputQuery?: string,\n    taskOutputQuery?: string\n  ): Promise<HumanTaskEntry[]> {\n    const [claimedUserType, claimedUser] = claimedBy?.split(\":\") ?? [];\n\n    if (claimedUserType && !claimedUser) {\n      throw new Error(\"claimedBy should be in the format of <userType>:<user>\");\n    }\n\n    const response = await this.search({\n      states: [state],\n      assignees: assignee ? [{ userType: assigneeType, user: assignee }] : [],\n      claimants: claimedBy\n        ? [{ userType: claimedUserType as UserType, user: claimedUser }]\n        : [],\n      taskRefNames: taskName ? [taskName] : [],\n      taskInputQuery,\n      taskOutputQuery,\n    });\n\n    return response;\n  }\n\n  /**\n   * Takes a set of filter parameters. return matches of human tasks for that set of parameters\n   * @param state\n   * @param assignee\n   * @param assigneeType\n   * @param claimedBy\n   * @param taskName\n   * @param freeText\n   * @param includeInputOutput\n   * @returns Promise<HumanTaskEntry[]>\n   */\n  public async search(\n    searchParams: Partial<HumanTaskSearch>\n  ): Promise<HumanTaskEntry[]> {\n    const search = { ...EMPTY_SEARCH, ...searchParams };\n    try {\n      const { data } = await HumanTask.search({\n        client: this._client,\n        body: search,\n        throwOnError: true,\n      });\n\n      if (data?.results != undefined) {\n        return data.results;\n      }\n      return [];\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to search human tasks\");\n    }\n  }\n\n  /**\n   * Takes a set of filter parameters. An polling interval options. will poll until the task returns a result\n   * @param state\n   * @param assignee\n   * @param assigneeType\n   * @param claimedBy\n   * @param taskName\n   * @param freeText\n   * @param includeInputOutput\n   * @returns Promise<HumanTaskEntry[]>\n   */\n  public async pollSearch(\n    searchParams: Partial<HumanTaskSearch>,\n    {\n      pollInterval = 100,\n      maxPollTimes = 20,\n    }: PollIntervalOptions = DEFAULT_POLL_INTERVAL\n  ): Promise<HumanTaskEntry[]> {\n    try {\n      let pollCount = 0;\n      while (pollCount < maxPollTimes) {\n        const response = await this.search(searchParams);\n        if (response.length > 0) {\n          return response;\n        }\n        await new Promise((resolve) => setTimeout(resolve, pollInterval));\n        pollCount++;\n      }\n      return [];\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to poll search human tasks\");\n    }\n  }\n\n  /**\n   * Returns task for a given task id\n   * @param taskId\n   * @returns\n   */\n  public async getTaskById(taskId: string): Promise<HumanTaskEntry> {\n    try {\n      const { data } = await HumanTask.getTask1({\n        client: this._client,\n        path: { taskId },\n        throwOnError: true,\n      });\n\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to get human task '${taskId}'`);\n    }\n  }\n\n  /**\n   * Assigns taskId to assignee. If the task is already assigned to another user, this will fail.\n   * @param taskId\n   * @param assignee\n   * @returns\n   */\n  public async claimTaskAsExternalUser(\n    taskId: string,\n    assignee: string,\n    options?: ClaimTaskOptions\n  ): Promise<HumanTaskEntry> {\n    try {\n      const { data } = await HumanTask.assignAndClaim({\n        client: this._client,\n        path: { taskId, userId: assignee },\n        query: {\n          overrideAssignment: options?.overrideAssignment,\n          withTemplate: options?.withTemplate,\n        },\n        throwOnError: true,\n      });\n\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to claim human task '${taskId}' as external user '${assignee}'`\n      );\n    }\n  }\n\n  /**\n   * Claim task as conductor user\n   * @param taskId\n   * @returns\n   */\n  public async claimTaskAsConductorUser(\n    taskId: string,\n    options?: ClaimTaskOptions\n  ): Promise<HumanTaskEntry> {\n    try {\n      const { data } = await HumanTask.claimTask({\n        client: this._client,\n        path: { taskId },\n        query: {\n          overrideAssignment: options?.overrideAssignment,\n          withTemplate: options?.withTemplate,\n        },\n        throwOnError: true,\n      });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to claim human task '${taskId}' as conductor user`\n      );\n    }\n  }\n\n  /**\n   * Claim task as conductor user\n   * @param taskId\n   * @param assignee\n   * @returns\n   */\n  public async releaseTask(taskId: string) {\n    try {\n      await HumanTask.releaseTask({\n        client: this._client,\n        path: { taskId },\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to release human task '${taskId}'`);\n    }\n  }\n\n  /**\n   * Returns a HumanTaskTemplateEntry for a given name and version\n   * @param templateId\n   * @returns\n   */\n  public async getTemplateByNameVersion(\n    name: string,\n    version: number\n  ): Promise<HumanTaskTemplate> {\n    try {\n      const { data } = await HumanTask.getTemplateByNameAndVersion({\n        client: this._client,\n        path: { name, version },\n        throwOnError: true,\n      });\n\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to get template '${name}' version ${version}`\n      );\n    }\n  }\n\n  /**\n   * @deprecated use getTemplate instead. name will be used as id here with version 1\n   * Returns a HumanTaskTemplateEntry for a given templateId\n   * @param templateId\n   * @returns\n   */\n  public async getTemplateById(\n    templateNameVersionOne: string\n  ): Promise<HumanTaskTemplate> {\n    return this.getTemplateByNameVersion(templateNameVersionOne, 1);\n  }\n\n  /**\n   * Takes a taskId and a partial body. will update with given body\n   * @param taskId\n   * @param requestBody\n   */\n  public async updateTaskOutput(\n    taskId: string,\n    requestBody: Record<string, Record<string, unknown>>\n  ): Promise<void> {\n    try {\n      await HumanTask.updateTaskOutput({\n        client: this._client,\n        path: { taskId },\n        body: requestBody,\n        query: { complete: false },\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed update human task '${taskId}' output`);\n    }\n  }\n\n  /**\n   * Takes a taskId and an optional partial body. will complete the task with the given body\n   * @param taskId\n   * @param requestBody\n   */\n  public async completeTask(\n    taskId: string,\n    requestBody: Record<string, Record<string, unknown>> = {}\n  ) {\n    try {\n      await HumanTask.updateTaskOutput({\n        client: this._client,\n        path: { taskId },\n        body: requestBody,\n        query: { complete: true },\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to complete human task '${taskId}'`);\n    }\n  }\n}\n","import type {\n  Client,\n  Tag,\n  ExtendedIntegrationApiUpdate,\n} from \"../../../open-api\";\nimport type {\n  Integration,\n  IntegrationApi,\n  IntegrationDef,\n  IntegrationUpdate,\n  MessageTemplate,\n} from \"../../../open-api/generated\";\nimport { IntegrationResource } from \"../../../open-api/generated\";\nimport { handleSdkError } from \"../../helpers/errors\";\n\nexport class IntegrationClient {\n  public readonly _client: Client;\n\n  constructor(client: Client) {\n    this._client = client;\n  }\n\n  // ==================== Integration Provider Management ====================\n\n  /**\n   * Save (create or update) an integration provider\n   * @param name - The provider name\n   * @param integration - The integration configuration\n   */\n  public async saveIntegrationProvider(\n    name: string,\n    integration: IntegrationUpdate\n  ): Promise<void> {\n    try {\n      await IntegrationResource.saveIntegrationProvider({\n        path: { name },\n        body: integration,\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to save integration provider '${name}'`\n      );\n    }\n  }\n\n  /**\n   * Get an integration provider by name\n   * @param name - The provider name\n   * @returns The integration provider\n   */\n  public async getIntegrationProvider(\n    name: string\n  ): Promise<Integration> {\n    try {\n      const { data } = await IntegrationResource.getIntegrationProvider({\n        path: { name },\n        client: this._client,\n        throwOnError: true,\n      });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to get integration provider '${name}'`\n      );\n    }\n  }\n\n  /**\n   * Get all integration providers\n   * @returns Array of integrations representing providers\n   */\n  public async getIntegrationProviders(): Promise<Integration[]> {\n    try {\n      const { data } = await IntegrationResource.getIntegrationProviders({\n        client: this._client,\n        throwOnError: true,\n      });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to get integration providers\");\n    }\n  }\n\n  /**\n   * Delete an integration provider\n   * @param name - The provider name\n   */\n  public async deleteIntegrationProvider(name: string): Promise<void> {\n    try {\n      await IntegrationResource.deleteIntegrationProvider({\n        path: { name },\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to delete integration provider '${name}'`\n      );\n    }\n  }\n\n  // ==================== Integration API Management ====================\n\n  /**\n   * Save (create or update) an integration API\n   * @param providerName - The provider name\n   * @param integrationName - The integration name\n   * @param api - The integration API configuration\n   */\n  public async saveIntegrationApi(\n    providerName: string,\n    integrationName: string,\n    api: ExtendedIntegrationApiUpdate\n  ): Promise<void> {\n    try {\n      await IntegrationResource.saveIntegrationApi({\n        path: { name: providerName, integration_name: integrationName },\n        body: api,\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to save integration API '${integrationName}' for provider '${providerName}'`\n      );\n    }\n  }\n\n  /**\n   * Get an integration API\n   * @param providerName - The provider name\n   * @param integrationName - The integration name\n   * @returns The integration API\n   */\n  public async getIntegrationApi(\n    providerName: string,\n    integrationName: string\n  ): Promise<IntegrationApi> {\n    try {\n      const { data } = await IntegrationResource.getIntegrationApi({\n        path: { name: providerName, integration_name: integrationName },\n        client: this._client,\n        throwOnError: true,\n      });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to get integration API '${integrationName}' for provider '${providerName}'`\n      );\n    }\n  }\n\n  /**\n   * Get all integration APIs for a provider\n   * @param providerName - The provider name\n   * @returns Array of integration APIs\n   */\n  public async getIntegrationApis(\n    providerName: string\n  ): Promise<IntegrationApi[]> {\n    try {\n      const { data } = await IntegrationResource.getIntegrationApis({\n        path: { name: providerName },\n        client: this._client,\n        throwOnError: true,\n      });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to get integration APIs for provider '${providerName}'`\n      );\n    }\n  }\n\n  /**\n   * Delete an integration API\n   * @param providerName - The provider name\n   * @param integrationName - The integration name\n   */\n  public async deleteIntegrationApi(\n    providerName: string,\n    integrationName: string\n  ): Promise<void> {\n    try {\n      await IntegrationResource.deleteIntegrationApi({\n        path: { name: providerName, integration_name: integrationName },\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to delete integration API '${integrationName}' for provider '${providerName}'`\n      );\n    }\n  }\n\n  // ==================== Integration Queries ====================\n\n  /**\n   * Get all integrations\n   * @param category - Optional category filter\n   * @param activeOnly - Whether to return only active integrations\n   * @returns Array of integrations\n   */\n  public async getIntegrations(\n    category?: string,\n    activeOnly?: boolean\n  ): Promise<Integration[]> {\n    try {\n      const { data } = await IntegrationResource.getAllIntegrations({\n        query: { category, activeOnly },\n        client: this._client,\n        throwOnError: true,\n      });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to get integrations\");\n    }\n  }\n\n  /**\n   * Get integration provider definitions\n   * @returns Array of integration definitions\n   */\n  public async getIntegrationProviderDefs(): Promise<IntegrationDef[]> {\n    try {\n      const { data } = await IntegrationResource.getIntegrationProviderDefs({\n        client: this._client,\n        throwOnError: true,\n      });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to get integration provider definitions\");\n    }\n  }\n\n  /**\n   * Get providers and integrations\n   * @param type - Optional type filter\n   * @param activeOnly - Whether to return only active\n   * @returns Array of provider and integration info\n   */\n  public async getProvidersAndIntegrations(\n    type?: string,\n    activeOnly?: boolean\n  ): Promise<string[]> {\n    try {\n      const { data } = await IntegrationResource.getProvidersAndIntegrations({\n        query: { type, activeOnly },\n        client: this._client,\n        throwOnError: true,\n      });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to get providers and integrations\");\n    }\n  }\n\n  /**\n   * Get available APIs for a provider\n   * @param providerName - The provider name\n   * @returns Array of available APIs\n   */\n  public async getIntegrationAvailableApis(\n    providerName: string\n  ): Promise<string[]> {\n    try {\n      const { data } = await IntegrationResource.getIntegrationAvailableApis({\n        path: { name: providerName },\n        client: this._client,\n        throwOnError: true,\n      });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to get available APIs for provider '${providerName}'`\n      );\n    }\n  }\n\n  // ==================== Prompt Association ====================\n\n  /**\n   * Associate a prompt with an integration\n   * @param providerName - The integration provider name\n   * @param integrationName - The integration name\n   * @param promptName - The prompt template name\n   */\n  public async associatePromptWithIntegration(\n    providerName: string,\n    integrationName: string,\n    promptName: string\n  ): Promise<void> {\n    try {\n      await IntegrationResource.associatePromptWithIntegration({\n        path: {\n          integration_provider: providerName,\n          integration_name: integrationName,\n          prompt_name: promptName,\n        },\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to associate prompt '${promptName}' with integration '${integrationName}'`\n      );\n    }\n  }\n\n  /**\n   * Get prompts associated with an integration\n   * @param providerName - The integration provider name\n   * @param integrationName - The integration name\n   * @returns Array of associated prompt templates\n   */\n  public async getPromptsWithIntegration(\n    providerName: string,\n    integrationName: string\n  ): Promise<MessageTemplate[]> {\n    try {\n      const { data } = await IntegrationResource.getPromptsWithIntegration({\n        path: {\n          integration_provider: providerName,\n          integration_name: integrationName,\n        },\n        client: this._client,\n        throwOnError: true,\n      });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to get prompts for integration '${integrationName}'`\n      );\n    }\n  }\n\n  // ==================== Integration Tags ====================\n\n  /**\n   * Set tags for an integration\n   * @param providerName - The provider name\n   * @param integrationName - The integration name\n   * @param tags - The tags to set\n   */\n  public async setIntegrationTags(\n    providerName: string,\n    integrationName: string,\n    tags: Tag[]\n  ): Promise<void> {\n    try {\n      await IntegrationResource.putTagForIntegration({\n        path: { name: providerName, integration_name: integrationName },\n        body: tags,\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to set tags for integration '${integrationName}'`\n      );\n    }\n  }\n\n  /**\n   * Get tags for an integration\n   * @param providerName - The provider name\n   * @param integrationName - The integration name\n   * @returns Array of tags\n   */\n  public async getIntegrationTags(\n    providerName: string,\n    integrationName: string\n  ): Promise<Tag[]> {\n    try {\n      const { data } = await IntegrationResource.getTagsForIntegration({\n        path: { name: providerName, integration_name: integrationName },\n        client: this._client,\n        throwOnError: true,\n      });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to get tags for integration '${integrationName}'`\n      );\n    }\n  }\n\n  /**\n   * Delete tags from an integration\n   * @param providerName - The provider name\n   * @param integrationName - The integration name\n   * @param tags - The tags to delete\n   */\n  public async deleteIntegrationTags(\n    providerName: string,\n    integrationName: string,\n    tags: Tag[]\n  ): Promise<void> {\n    try {\n      await IntegrationResource.deleteTagForIntegration({\n        path: { name: providerName, integration_name: integrationName },\n        body: tags,\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to delete tags from integration '${integrationName}'`\n      );\n    }\n  }\n\n  // ==================== Provider Tags ====================\n\n  /**\n   * Set tags for an integration provider\n   * @param providerName - The provider name\n   * @param tags - The tags to set\n   */\n  public async setProviderTags(\n    providerName: string,\n    tags: Tag[]\n  ): Promise<void> {\n    try {\n      await IntegrationResource.putTagForIntegrationProvider({\n        path: { name: providerName },\n        body: tags,\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to set tags for provider '${providerName}'`\n      );\n    }\n  }\n\n  /**\n   * Get tags for an integration provider\n   * @param providerName - The provider name\n   * @returns Array of tags\n   */\n  public async getProviderTags(providerName: string): Promise<Tag[]> {\n    try {\n      const { data } =\n        await IntegrationResource.getTagsForIntegrationProvider({\n          path: { name: providerName },\n          client: this._client,\n          throwOnError: true,\n        });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to get tags for provider '${providerName}'`\n      );\n    }\n  }\n\n  /**\n   * Delete tags from an integration provider\n   * @param providerName - The provider name\n   * @param tags - The tags to delete\n   */\n  public async deleteProviderTags(\n    providerName: string,\n    tags: Tag[]\n  ): Promise<void> {\n    try {\n      await IntegrationResource.deleteTagForIntegrationProvider({\n        path: { name: providerName },\n        body: tags,\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to delete tags from provider '${providerName}'`\n      );\n    }\n  }\n}\n","import { MetadataResource, Tags } from \"../../../open-api/generated\";\nimport { handleSdkError } from \"../../helpers/errors\";\nimport type {\n  Client,\n  ExtendedTaskDef,\n  ExtendedWorkflowDef,\n  RateLimitConfig,\n  Tag,\n  TaskDef,\n  WorkflowDef,\n} from \"../../../open-api\";\nimport type { ExtendedRateLimitConfig } from \"../../../open-api/types\";\nimport type { ExtendedTaskDef as OpenApiExtendedTaskDef } from \"../../../open-api/generated/types.gen\";\n\nexport class MetadataClient {\n  public readonly _client: Client;\n\n  constructor(client: Client) {\n    this._client = client;\n  }\n\n  /**\n   * Unregisters an existing task definition by name\n   *\n   * @param name\n   * @returns\n   */\n  public async unregisterTask(name: string): Promise<void> {\n    try {\n      await MetadataResource.unregisterTaskDef({\n        path: { tasktype: name },\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to unregister task '${name}'`);\n    }\n  }\n\n  /**\n   * Registers a new task definition\n   *\n   * @param taskDef\n   * @returns\n   */\n  public async registerTask(taskDef: ExtendedTaskDef): Promise<void> {\n    return this.registerTasks([taskDef]);\n  }\n\n  /**\n   * Registers multiple task definitions (array)\n   *\n   * @param taskDefs\n   * @returns\n   */\n  public async registerTasks(taskDefs: ExtendedTaskDef[]): Promise<void> {\n    try {\n      await MetadataResource.registerTaskDef({\n        body: [...(taskDefs as OpenApiExtendedTaskDef[])], // todo: remove casting after OpenApi spec is fixed\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to register task definitions\");\n    }\n  }\n\n  /**\n   * Update an existing task definition\n   *\n   * @param taskDef\n   * @returns\n   */\n  public async updateTask(taskDef: ExtendedTaskDef): Promise<void> {\n    try {\n      await MetadataResource.updateTaskDef({\n        body: taskDef as OpenApiExtendedTaskDef, // todo: remove casting after OpenApi spec is fixed\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to update task definition\");\n    }\n  }\n\n  /**\n   * Get an existing task definition\n   *\n   * @param taskName\n   * @returns\n   */\n  public async getTask(taskName: string): Promise<TaskDef> {\n    try {\n      const { data } = await MetadataResource.getTaskDef({\n        path: { tasktype: taskName },\n        client: this._client,\n        throwOnError: true,\n      });\n\n      return data as TaskDef; // todo: remove casting after OpenApi spec is fixed\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to get task '${taskName}'`);\n    }\n  }\n\n  /**\n   * Creates or updates (overwrite: true) a workflow definition\n   *\n   * @param workflowDef\n   * @param overwrite\n   * @returns\n   */\n  public async registerWorkflowDef(\n    workflowDef: ExtendedWorkflowDef,\n    overwrite = false\n  ): Promise<void> {\n    try {\n      await MetadataResource.create({\n        body: workflowDef,\n        query: {\n          overwrite,\n        },\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to register workflow definition\");\n    }\n  }\n\n  /**\n   * Creates or updates (overwrite: true) a workflow definition\n   *\n   * @param workflowDef\n   * @param overwrite\n   * @returns\n   */\n  public async getWorkflowDef(\n    name: string,\n    version?: number,\n    metadata = false\n  ): Promise<WorkflowDef> {\n    try {\n      const { data } = await MetadataResource.get1({\n        path: { name },\n        query: { metadata, version },\n        client: this._client,\n        throwOnError: true,\n      });\n\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to get workflow definition '${name}'`);\n    }\n  }\n\n  /**\n   * Unregister (overwrite: true) a workflow definition\n   *\n   * @param workflowDef\n   * @param overwrite\n   * @returns\n   */\n  public async unregisterWorkflow(\n    workflowName: string,\n    version = 1\n  ): Promise<void> {\n    try {\n      await MetadataResource.unregisterWorkflowDef({\n        path: { name: workflowName, version },\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to unregister workflow '${workflowName}'`);\n    }\n  }\n\n  /**\n   * Get all task definitions\n   * @returns Array of all task definitions\n   */\n  public async getAllTaskDefs(): Promise<TaskDef[]> {\n    try {\n      const { data } = await MetadataResource.getTaskDefs({\n        client: this._client,\n        throwOnError: true,\n      });\n      return data as TaskDef[];\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to get all task definitions\");\n    }\n  }\n\n  /**\n   * Get all workflow definitions\n   * @returns Array of all workflow definitions\n   */\n  public async getAllWorkflowDefs(): Promise<WorkflowDef[]> {\n    try {\n      const { data } = await MetadataResource.getWorkflowDefs({\n        client: this._client,\n        throwOnError: true,\n      });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to get all workflow definitions\");\n    }\n  }\n\n  /**\n   * Add a tag to a workflow definition\n   * @param tag - The tag to add\n   * @param name - The workflow definition name\n   */\n  public async addWorkflowTag(tag: Tag, name: string): Promise<void> {\n    try {\n      await Tags.addWorkflowTag({\n        path: { name },\n        body: tag,\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to add tag to workflow '${name}'`\n      );\n    }\n  }\n\n  /**\n   * Delete a tag from a workflow definition\n   * @param tag - The tag to delete\n   * @param name - The workflow definition name\n   */\n  public async deleteWorkflowTag(tag: Tag, name: string): Promise<void> {\n    try {\n      await Tags.deleteWorkflowTag({\n        path: { name },\n        body: tag,\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to delete tag from workflow '${name}'`\n      );\n    }\n  }\n\n  /**\n   * Get all tags for a workflow definition\n   * @param name - The workflow definition name\n   * @returns Array of tags\n   */\n  public async getWorkflowTags(name: string): Promise<Tag[]> {\n    try {\n      const { data } = await Tags.getWorkflowTags({\n        path: { name },\n        client: this._client,\n        throwOnError: true,\n      });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to get tags for workflow '${name}'`\n      );\n    }\n  }\n\n  /**\n   * Set (replace all existing) tags for a workflow definition\n   * @param tags - The tags to set\n   * @param name - The workflow definition name\n   */\n  public async setWorkflowTags(tags: Tag[], name: string): Promise<void> {\n    try {\n      await Tags.setWorkflowTags({\n        path: { name },\n        body: tags,\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to set tags for workflow '${name}'`\n      );\n    }\n  }\n\n  /**\n   * Add a tag to a task definition\n   * @param tag - The tag to add\n   * @param taskName - The task definition name\n   */\n  public async addTaskTag(tag: Tag, taskName: string): Promise<void> {\n    try {\n      await Tags.addTaskTag({\n        path: { taskName },\n        body: tag,\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to add tag to task '${taskName}'`\n      );\n    }\n  }\n\n  /**\n   * Delete a tag from a task definition\n   * @param tag - The tag to delete\n   * @param taskName - The task definition name\n   */\n  public async deleteTaskTag(tag: Tag, taskName: string): Promise<void> {\n    try {\n      await Tags.deleteTaskTag({\n        path: { taskName },\n        body: tag,\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to delete tag from task '${taskName}'`\n      );\n    }\n  }\n\n  /**\n   * Get all tags for a task definition\n   * @param taskName - The task definition name\n   * @returns Array of tags\n   */\n  public async getTaskTags(taskName: string): Promise<Tag[]> {\n    try {\n      const { data } = await Tags.getTaskTags({\n        path: { taskName },\n        client: this._client,\n        throwOnError: true,\n      });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to get tags for task '${taskName}'`\n      );\n    }\n  }\n\n  /**\n   * Set (replace all existing) tags for a task definition\n   * @param tags - The tags to set\n   * @param taskName - The task definition name\n   */\n  public async setTaskTags(tags: Tag[], taskName: string): Promise<void> {\n    try {\n      await Tags.setTaskTags({\n        path: { taskName },\n        body: tags,\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to set tags for task '${taskName}'`\n      );\n    }\n  }\n\n  // ── Rate Limit APIs ────────────────────────────────────────────\n  // These endpoints are not in the OpenAPI spec yet, so we use raw\n  // HTTP calls matching the Python SDK's MetadataClient.\n\n  /**\n   * Set the rate limit configuration for a workflow\n   * @param rateLimitConfig - Rate limit configuration\n   * @param name - Workflow definition name\n   */\n  public async setWorkflowRateLimit(\n    rateLimitConfig: RateLimitConfig | ExtendedRateLimitConfig,\n    name: string\n  ): Promise<void> {\n    try {\n      await this._client.put({\n        url: `/api/metadata/workflow/${encodeURIComponent(name)}/rate-limit`,\n        body: rateLimitConfig,\n        headers: { \"Content-Type\": \"application/json\" },\n        security: [{ name: \"X-Authorization\", type: \"apiKey\" }],\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to set rate limit for workflow '${name}'`\n      );\n    }\n  }\n\n  /**\n   * Get the rate limit configuration for a workflow\n   * @param name - Workflow definition name\n   * @returns Rate limit configuration or undefined if not set\n   */\n  public async getWorkflowRateLimit(\n    name: string\n  ): Promise<RateLimitConfig | ExtendedRateLimitConfig | undefined> {\n    try {\n      const { data } = await this._client.get({\n        url: `/api/metadata/workflow/${encodeURIComponent(name)}/rate-limit`,\n        security: [{ name: \"X-Authorization\", type: \"apiKey\" }],\n        throwOnError: true,\n      });\n      return data as RateLimitConfig;\n    } catch (error: unknown) {\n      // 404 means no rate limit set — return undefined\n      const status =\n        error && typeof error === \"object\" && \"status\" in error\n          ? (error as { status: number }).status\n          : undefined;\n      if (status === 404) {\n        return undefined;\n      }\n      handleSdkError(\n        error,\n        `Failed to get rate limit for workflow '${name}'`\n      );\n    }\n  }\n\n  /**\n   * Remove the rate limit configuration for a workflow\n   * @param name - Workflow definition name\n   */\n  public async removeWorkflowRateLimit(name: string): Promise<void> {\n    try {\n      await this._client.delete({\n        url: `/api/metadata/workflow/${encodeURIComponent(name)}/rate-limit`,\n        security: [{ name: \"X-Authorization\", type: \"apiKey\" }],\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to remove rate limit for workflow '${name}'`\n      );\n    }\n  }\n}\n","import type { Client, Tag } from \"../../../open-api\";\nimport type {\n  MessageTemplate,\n  PromptTemplateTestRequest,\n} from \"../../../open-api/generated\";\nimport { PromptResource } from \"../../../open-api/generated\";\nimport { handleSdkError } from \"../../helpers/errors\";\n\nexport class PromptClient {\n  public readonly _client: Client;\n\n  constructor(client: Client) {\n    this._client = client;\n  }\n\n  /**\n   * Save a prompt template\n   * @param name - The prompt name\n   * @param description - Description of the prompt\n   * @param template - The prompt template text\n   * @param models - Optional array of model names\n   */\n  public async savePrompt(\n    name: string,\n    description: string,\n    template: string,\n    models?: string[]\n  ): Promise<void> {\n    try {\n      await PromptResource.saveMessageTemplate({\n        path: { name },\n        body: template,\n        query: { description, models },\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to save prompt '${name}'`);\n    }\n  }\n\n  /**\n   * Update a prompt template\n   * @param name - The prompt name\n   * @param description - Description of the prompt\n   * @param template - The prompt template text\n   * @param models - Optional array of model names\n   */\n  public async updatePrompt(\n    name: string,\n    description: string,\n    template: string,\n    models?: string[]\n  ): Promise<void> {\n    try {\n      await PromptResource.updateMessageTemplate({\n        path: { name },\n        body: template,\n        query: { description, models },\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to update prompt '${name}'`);\n    }\n  }\n\n  /**\n   * Get a prompt template by name\n   * @param name - The prompt name\n   * @returns The message template\n   */\n  public async getPrompt(name: string): Promise<MessageTemplate> {\n    try {\n      const { data } = await PromptResource.getMessageTemplate({\n        path: { name },\n        client: this._client,\n        throwOnError: true,\n      });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to get prompt '${name}'`);\n    }\n  }\n\n  /**\n   * Get all prompt templates\n   * @returns Array of message templates\n   */\n  public async getPrompts(): Promise<MessageTemplate[]> {\n    try {\n      const { data } = await PromptResource.getMessageTemplates({\n        client: this._client,\n        throwOnError: true,\n      });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to get prompts\");\n    }\n  }\n\n  /**\n   * Delete a prompt template\n   * @param name - The prompt name\n   */\n  public async deletePrompt(name: string): Promise<void> {\n    try {\n      await PromptResource.deleteMessageTemplate({\n        path: { name },\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to delete prompt '${name}'`);\n    }\n  }\n\n  /**\n   * Test a prompt template against an LLM\n   * @param testRequest - The test request containing prompt text, variables, model info, etc.\n   * @returns The LLM response string\n   */\n  public async testPrompt(\n    testRequest: PromptTemplateTestRequest\n  ): Promise<string> {\n    try {\n      const { data } = await PromptResource.testMessageTemplate({\n        body: testRequest,\n        client: this._client,\n        throwOnError: true,\n      });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to test prompt\");\n    }\n  }\n\n  /**\n   * Get tags for a prompt template\n   * @param name - The prompt name\n   * @returns Array of tags\n   */\n  public async getPromptTags(name: string): Promise<Tag[]> {\n    try {\n      const { data } = await PromptResource.getTagsForPromptTemplate({\n        path: { name },\n        client: this._client,\n        throwOnError: true,\n      });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to get tags for prompt '${name}'`);\n    }\n  }\n\n  /**\n   * Set tags for a prompt template\n   * @param name - The prompt name\n   * @param tags - The tags to set\n   */\n  public async setPromptTags(name: string, tags: Tag[]): Promise<void> {\n    try {\n      await PromptResource.putTagForPromptTemplate({\n        path: { name },\n        body: tags,\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to set tags for prompt '${name}'`);\n    }\n  }\n\n  /**\n   * Delete tags from a prompt template\n   * @param name - The prompt name\n   * @param tags - The tags to delete\n   */\n  public async deletePromptTags(name: string, tags: Tag[]): Promise<void> {\n    try {\n      await PromptResource.deleteTagForPromptTemplate({\n        path: { name },\n        body: tags,\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to delete tags from prompt '${name}'`);\n    }\n  }\n}\n","import type {\n  Client,\n  SaveScheduleRequest,\n  SearchResultWorkflowScheduleExecutionModel,\n  Tag,\n  WorkflowSchedule,\n  WorkflowScheduleModel,\n} from \"../../../open-api\";\nimport { SchedulerResource } from \"../../../open-api/generated\";\nimport { handleSdkError } from \"../../helpers/errors\";\n\nexport class SchedulerClient {\n  public readonly _client: Client;\n\n  constructor(client: Client) {\n    this._client = client;\n  }\n\n  /**\n   * Create or update a schedule for a specified workflow with a corresponding start workflow request\n   * @param requestBody\n   * @returns\n   */\n  public async saveSchedule(param: SaveScheduleRequest): Promise<void> {\n    try {\n      await SchedulerResource.saveSchedule({\n        body: param,\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to save schedule\");\n    }\n  }\n\n  /**\n   * Searches for existing scheduler execution based on below parameters\n   *\n   * @param start\n   * @param size\n   * @param sort\n   * @param freeText\n   * @param query\n   * @returns SearchResultWorkflowScheduleExecutionModel\n   */\n  public async search(\n    start: number,\n    size = 100,\n    sort = \"\",\n    freeText = \"*\",\n    query?: string\n  ): Promise<SearchResultWorkflowScheduleExecutionModel> {\n    try {\n      const { data } = await SchedulerResource.searchV2({\n        query: { start, size, sort, freeText, query },\n        client: this._client,\n        throwOnError: true,\n      });\n\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to search schedules\");\n    }\n  }\n\n  /**\n   * Get an existing schedule by name\n   * @param name\n   * @returns WorkflowSchedule\n   */\n  public async getSchedule(name: string): Promise<WorkflowSchedule> {\n    try {\n      const { data } = await SchedulerResource.getSchedule({\n        path: { name },\n        client: this._client,\n        throwOnError: true,\n      });\n\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to get schedule '${name}'`);\n    }\n  }\n\n  /**\n   * Pauses an existing schedule by name\n   * @param name\n   * @returns\n   */\n  public async pauseSchedule(name: string): Promise<void> {\n    try {\n      await SchedulerResource.pauseSchedule({\n        path: { name },\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to pause schedule '${name}'`);\n    }\n  }\n\n  /**\n   * Resume a paused schedule by name\n   *\n   * @param name\n   * @returns\n   */\n  public async resumeSchedule(name: string): Promise<void> {\n    try {\n      await SchedulerResource.resumeSchedule({\n        path: { name },\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to resume schedule '${name}'`);\n    }\n  }\n\n  /**\n   * Deletes an existing scheduler execution by name\n   *\n   * @param name\n   * @returns\n   */\n  public async deleteSchedule(name: string): Promise<void> {\n    try {\n      await SchedulerResource.deleteSchedule({\n        path: { name },\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to delete schedule '${name}'`);\n    }\n  }\n\n  /**\n   * Get all existing workflow schedules and optionally filter by workflow name\n   * @param workflowName\n   * @returns Array<WorkflowScheduleModel>\n   */\n  public async getAllSchedules(\n    workflowName?: string\n  ): Promise<WorkflowScheduleModel[]> {\n    try {\n      const { data } = await SchedulerResource.getAllSchedules({\n        query: { workflowName },\n        client: this._client,\n        throwOnError: true,\n      });\n\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to get all schedules\");\n    }\n  }\n\n  /**\n   * Get list of the next x (default 3, max 5) execution times for a scheduler\n   * @param cronExpression\n   * @param scheduleStartTime\n   * @param scheduleEndTime\n   * @param limit\n   * @returns number OK\n   * @throws ApiError\n   */\n  public async getNextFewSchedules(\n    cronExpression: string,\n    scheduleStartTime?: number,\n    scheduleEndTime?: number,\n    limit = 3\n  ): Promise<number[]> {\n    try {\n      const { data } = await SchedulerResource.getNextFewSchedules({\n        query: { cronExpression, scheduleStartTime, scheduleEndTime, limit },\n        client: this._client,\n        throwOnError: true,\n      });\n\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to get next few schedules\");\n    }\n  }\n\n  /**\n   * Pause all scheduling in a single conductor server instance (for debugging only)\n   * @returns any OK\n   * @throws ApiError\n   */\n  public async pauseAllSchedules(): Promise<void> {\n    try {\n      await SchedulerResource.pauseAllSchedules({\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to pause all schedules\");\n    }\n  }\n\n  /**\n   * Requeue all execution records\n   * @returns any OK\n   * @throws ApiError\n   */\n  public async requeueAllExecutionRecords(): Promise<void> {\n    try {\n      await SchedulerResource.requeueAllExecutionRecords({\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to requeue all execution records\");\n    }\n  }\n\n  /**\n   * Resume all scheduling\n   * @returns any OK\n   * @throws ApiError\n   */\n  public async resumeAllSchedules(): Promise<void> {\n    try {\n      await SchedulerResource.resumeAllSchedules({\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to resume all schedules\");\n    }\n  }\n\n  /**\n   * Set tags for a schedule\n   * @param tags - The tags to set\n   * @param name - The schedule name\n   */\n  public async setSchedulerTags(tags: Tag[], name: string): Promise<void> {\n    try {\n      await SchedulerResource.putTagForSchedule({\n        path: { name },\n        body: tags,\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to set tags for schedule '${name}'`);\n    }\n  }\n\n  /**\n   * Get tags for a schedule\n   * @param name - The schedule name\n   * @returns Array of tags\n   */\n  public async getSchedulerTags(name: string): Promise<Tag[]> {\n    try {\n      const { data } = await SchedulerResource.getTagsForSchedule({\n        path: { name },\n        client: this._client,\n        throwOnError: true,\n      });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to get tags for schedule '${name}'`);\n    }\n  }\n\n  /**\n   * Delete tags from a schedule\n   * @param tags - The tags to delete\n   * @param name - The schedule name\n   */\n  public async deleteSchedulerTags(tags: Tag[], name: string): Promise<void> {\n    try {\n      await SchedulerResource.deleteTagForSchedule({\n        path: { name },\n        body: tags,\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to delete tags from schedule '${name}'`);\n    }\n  }\n}\n","import type { Client } from \"../../../open-api\";\nimport type { SchemaDef } from \"../../../open-api/generated\";\nimport { SchemaResource } from \"../../../open-api/generated\";\nimport { handleSdkError } from \"../../helpers/errors\";\n\nexport class SchemaClient {\n  public readonly _client: Client;\n\n  constructor(client: Client) {\n    this._client = client;\n  }\n\n  /**\n   * Register (create or update) schemas\n   * @param schemas - Array of schema definitions to register\n   * @param newVersion - Whether to create a new version\n   */\n  public async registerSchema(\n    schemas: SchemaDef[],\n    newVersion = false\n  ): Promise<void> {\n    try {\n      await SchemaResource.save({\n        body: schemas,\n        query: { newVersion },\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to register schema\");\n    }\n  }\n\n  /**\n   * Get a schema by name and version\n   * @param name - The schema name\n   * @param version - The schema version\n   * @returns The schema definition\n   */\n  public async getSchema(name: string, version: number): Promise<SchemaDef> {\n    try {\n      const { data } = await SchemaResource.getSchemaByNameAndVersion({\n        path: { name, version },\n        client: this._client,\n        throwOnError: true,\n      });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to get schema '${name}' version ${version}`\n      );\n    }\n  }\n\n  /**\n   * Get the latest version of a schema by name\n   * @param name - The schema name\n   * @returns The schema definition\n   */\n  public async getSchemaByName(name: string): Promise<SchemaDef> {\n    try {\n      const { data } =\n        await SchemaResource.getSchemaByNameWithLatestVersion({\n          path: { name },\n          client: this._client,\n          throwOnError: true,\n        });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to get schema '${name}'`);\n    }\n  }\n\n  /**\n   * Get all schemas\n   * @returns Array of all schema definitions\n   */\n  public async getAllSchemas(): Promise<SchemaDef[]> {\n    try {\n      const { data } = await SchemaResource.getAllSchemas({\n        client: this._client,\n        throwOnError: true,\n      });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to get all schemas\");\n    }\n  }\n\n  /**\n   * Delete a specific version of a schema\n   * @param name - The schema name\n   * @param version - The schema version\n   */\n  public async deleteSchema(name: string, version: number): Promise<void> {\n    try {\n      await SchemaResource.deleteSchemaByNameAndVersion({\n        path: { name, version },\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to delete schema '${name}' version ${version}`\n      );\n    }\n  }\n\n  /**\n   * Delete all versions of a schema by name\n   * @param name - The schema name\n   */\n  public async deleteSchemaByName(name: string): Promise<void> {\n    try {\n      await SchemaResource.deleteSchemaByName({\n        path: { name },\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to delete schema '${name}'`);\n    }\n  }\n}\n","import type { Client, Tag } from \"../../../open-api\";\nimport { SecretResource } from \"../../../open-api/generated\";\nimport { handleSdkError } from \"../../helpers/errors\";\n\nexport class SecretClient {\n  public readonly _client: Client;\n\n  constructor(client: Client) {\n    this._client = client;\n  }\n\n  /**\n   * Store a secret value\n   * @param key - The secret key\n   * @param value - The secret value\n   */\n  public async putSecret(key: string, value: string): Promise<void> {\n    try {\n      await SecretResource.putSecret({\n        path: { key },\n        body: value,\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to put secret '${key}'`);\n    }\n  }\n\n  /**\n   * Get a secret value\n   * @param key - The secret key\n   * @returns The secret value\n   */\n  public async getSecret(key: string): Promise<string> {\n    try {\n      const { data } = await SecretResource.getSecret({\n        path: { key },\n        client: this._client,\n        throwOnError: true,\n      });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to get secret '${key}'`);\n    }\n  }\n\n  /**\n   * Delete a secret\n   * @param key - The secret key\n   */\n  public async deleteSecret(key: string): Promise<void> {\n    try {\n      await SecretResource.deleteSecret({\n        path: { key },\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to delete secret '${key}'`);\n    }\n  }\n\n  /**\n   * List all secret names\n   * @returns Array of secret names\n   */\n  public async listAllSecretNames(): Promise<string[]> {\n    try {\n      const { data } = await SecretResource.listAllSecretNames({\n        client: this._client,\n        throwOnError: true,\n      });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to list all secret names\");\n    }\n  }\n\n  /**\n   * List secrets that the user can grant access to\n   * @returns Array of secret names\n   */\n  public async listSecretsThatUserCanGrantAccessTo(): Promise<string[]> {\n    try {\n      const { data } =\n        await SecretResource.listSecretsThatUserCanGrantAccessTo({\n          client: this._client,\n          throwOnError: true,\n        });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        \"Failed to list secrets that user can grant access to\"\n      );\n    }\n  }\n\n  /**\n   * Check if a secret exists\n   * @param key - The secret key\n   * @returns Whether the secret exists\n   */\n  public async secretExists(key: string): Promise<boolean> {\n    try {\n      const { data } = await SecretResource.secretExists({\n        path: { key },\n        client: this._client,\n        throwOnError: true,\n      });\n      // The API returns an object; a successful response means the secret exists\n      return data !== undefined && data !== null;\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to check if secret '${key}' exists`);\n    }\n  }\n\n  /**\n   * Set tags for a secret\n   * @param tags - The tags to set\n   * @param key - The secret key\n   */\n  public async setSecretTags(tags: Tag[], key: string): Promise<void> {\n    try {\n      await SecretResource.putTagForSecret({\n        path: { key },\n        body: tags,\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to set tags for secret '${key}'`);\n    }\n  }\n\n  /**\n   * Get tags for a secret\n   * @param key - The secret key\n   * @returns Array of tags\n   */\n  public async getSecretTags(key: string): Promise<Tag[]> {\n    try {\n      const { data } = await SecretResource.getTags({\n        path: { key },\n        client: this._client,\n        throwOnError: true,\n      });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to get tags for secret '${key}'`);\n    }\n  }\n\n  /**\n   * Delete tags from a secret\n   * @param tags - The tags to delete\n   * @param key - The secret key\n   */\n  public async deleteSecretTags(tags: Tag[], key: string): Promise<void> {\n    try {\n      await SecretResource.deleteTagForSecret({\n        path: { key },\n        body: tags,\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to delete tags from secret '${key}'`);\n    }\n  }\n}\n","import { ServiceRegistryResource } from \"../../../open-api/generated\";\nimport type {\n  Client,\n  CircuitBreakerTransitionResponse,\n  ProtoRegistryEntry,\n  ServiceMethod,\n  ServiceRegistry,\n} from \"../../../open-api\";\nimport { handleSdkError } from \"../../helpers/errors\";\n\n/**\n * Client for interacting with the Service Registry API\n */\nexport class ServiceRegistryClient {\n  public readonly _client: Client;\n\n  constructor(client: Client) {\n    this._client = client;\n  }\n\n  /**\n   * Retrieve all registered services\n   * @returns Array of all registered services\n   */\n  public async getRegisteredServices(): Promise<ServiceRegistry[]> {\n    try {\n      const { data } = await ServiceRegistryResource.getRegisteredServices({\n        client: this._client,\n        throwOnError: true,\n      });\n\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to get registered services\");\n    }\n  }\n\n  /**\n   * Remove a service by name\n   * @param name The name of the service to remove\n   * @returns Promise that resolves when service is removed\n   */\n  public async removeService(name: string): Promise<void> {\n    try {\n      await ServiceRegistryResource.removeService({\n        client: this._client,\n        path: { name },\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to remove service '${name}'`);\n    }\n  }\n\n  /**\n   * Get a service by name\n   * @param name The name of the service to retrieve\n   * @returns The requested service registry\n   */\n  public async getService(name: string): Promise<ServiceRegistry | undefined> {\n    try {\n      const { data } = await ServiceRegistryResource.getService({\n        client: this._client,\n        path: { name },\n        throwOnError: true,\n      });\n\n      // OpenAPI client returns response.body (ReadableStream) when response has no Content-Type (e.g. 200 empty)\n      if (data != null && typeof (data as ReadableStream).getReader === \"function\") {\n        return undefined;\n      }\n      if (typeof data === \"object\") {\n        return Object.keys(data).length ? data : undefined;\n      }\n      return undefined;\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to get service '${name}'`);\n    }\n  }\n\n  /**\n   * Open the circuit breaker for a service\n   * @param name The name of the service\n   * @returns Response with circuit breaker status\n   */\n  public async openCircuitBreaker(\n    name: string\n  ): Promise<CircuitBreakerTransitionResponse> {\n    try {\n      const { data } = await ServiceRegistryResource.openCircuitBreaker({\n        client: this._client,\n        path: { name },\n        throwOnError: true,\n      });\n\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to open circuit breaker for service '${name}'`\n      );\n    }\n  }\n\n  /**\n   * Close the circuit breaker for a service\n   * @param name The name of the service\n   * @returns Response with circuit breaker status\n   */\n  public async closeCircuitBreaker(\n    name: string\n  ): Promise<CircuitBreakerTransitionResponse> {\n    try {\n      const { data } = await ServiceRegistryResource.closeCircuitBreaker({\n        client: this._client,\n        path: { name },\n        throwOnError: true,\n      });\n\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to close circuit breaker for service '${name}'`\n      );\n    }\n  }\n\n  /**\n   * Get circuit breaker status for a service\n   * @param name The name of the service\n   * @returns Response with circuit breaker status\n   */\n  public async getCircuitBreakerStatus(\n    name: string\n  ): Promise<CircuitBreakerTransitionResponse> {\n    try {\n      const { data } = await ServiceRegistryResource.getCircuitBreakerStatus({\n        client: this._client,\n        path: { name },\n        throwOnError: true,\n      });\n\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to get circuit breaker status for service '${name}'`\n      );\n    }\n  }\n\n  /**\n   * Add or update a service registry\n   * @param serviceRegistry The service registry to add or update\n   * @returns Promise that resolves when service is added or updated\n   */\n  public async addOrUpdateService(\n    serviceRegistry: ServiceRegistry\n  ): Promise<void> {\n    try {\n      await ServiceRegistryResource.addOrUpdateService({\n        client: this._client,\n        body: serviceRegistry,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to add or update service\");\n    }\n  }\n\n  /**\n   * Add or update a service method\n   * @param registryName The name of the registry\n   * @param method The service method to add or update\n   * @returns Promise that resolves when method is added or updated\n   */\n  public async addOrUpdateServiceMethod(\n    registryName: string,\n    method: ServiceMethod\n  ): Promise<void> {\n    try {\n      await ServiceRegistryResource.addOrUpdateMethod({\n        client: this._client,\n        path: { registryName },\n        body: method,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to add or update service method for registry '${registryName}'`\n      );\n    }\n  }\n\n  /**\n   * Remove a service method\n   * @param registryName The name of the registry\n   * @param serviceName The name of the service\n   * @param method The name of the method\n   * @param methodType The type of the method\n   * @returns Promise that resolves when method is removed\n   */\n  public async removeMethod(\n    registryName: string,\n    serviceName: string,\n    method: string,\n    methodType: string\n  ): Promise<void> {\n    try {\n      await ServiceRegistryResource.removeMethod({\n        client: this._client,\n        path: { registryName },\n        query: { serviceName, method, methodType },\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to remove method '${method}' from service '${serviceName}'`\n      );\n    }\n  }\n\n  /**\n   * Get proto data\n   * @param registryName The name of the registry\n   * @param filename The name of the proto file\n   * @returns The proto file data as a Blob\n   */\n  public async getProtoData(\n    registryName: string,\n    filename: string\n  ): Promise<Blob> {\n    try {\n      const { data } = await ServiceRegistryResource.getProtoData({\n        client: this._client,\n        path: { registryName, filename },\n        throwOnError: true,\n      });\n\n      return data as unknown as Blob; // todo: remove casting after OpenApi spec is fixed\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to get proto data '${filename}' from registry '${registryName}'`\n      );\n    }\n  }\n\n  /**\n   * Set proto data\n   * @param registryName The name of the registry\n   * @param filename The name of the proto file\n   * @param data The proto file data\n   * @returns Promise that resolves when proto data is set\n   */\n  public async setProtoData(\n    registryName: string,\n    filename: string,\n    data: Blob\n  ): Promise<void> {\n    try {\n      await ServiceRegistryResource.setProtoData({\n        client: this._client,\n        path: { registryName, filename },\n        body: data as unknown as string, // todo: remove casting after OpenApi spec is fixed (byte -> binary)\n        bodySerializer: (body: Blob) => body,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to set proto data '${filename}' for registry '${registryName}'`\n      );\n    }\n  }\n\n  /**\n   * Delete a proto file\n   * @param registryName The name of the registry\n   * @param filename The name of the proto file\n   * @returns Promise that resolves when proto file is deleted\n   */\n  public async deleteProto(\n    registryName: string,\n    filename: string\n  ): Promise<void> {\n    try {\n      await ServiceRegistryResource.deleteProto({\n        client: this._client,\n        path: { registryName, filename },\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to delete proto '${filename}' from registry '${registryName}'`\n      );\n    }\n  }\n\n  /**\n   * Get all proto files for a registry\n   * @param registryName The name of the registry\n   * @returns List of proto registry entries\n   */\n  public async getAllProtos(\n    registryName: string\n  ): Promise<ProtoRegistryEntry[]> {\n    try {\n      const { data } = await ServiceRegistryResource.getAllProtos({\n        client: this._client,\n        path: { registryName },\n        throwOnError: true,\n      });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to get all protos for registry '${registryName}'`\n      );\n    }\n  }\n\n  /**\n   * Discover service methods\n   * @param name The name of the service\n   * @param create Whether to create the discovered methods (defaults to false)\n   * @returns The discovered service methods\n   */\n  public async discover(\n    name: string,\n    create = false\n  ): Promise<ServiceMethod[]> {\n    try {\n      const { data } = await ServiceRegistryResource.discover({\n        client: this._client,\n        path: { name },\n        query: { create },\n        throwOnError: true,\n      });\n\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to discover service methods for '${name}'`);\n    }\n  }\n}\n","import { TaskResultStatus } from \"../../types\";\nimport { handleSdkError } from \"../../helpers/errors\";\nimport type {\n  Client,\n  PollData,\n  SearchResultTaskSummary,\n  Task,\n  TaskExecLog,\n  Workflow,\n} from \"../../../open-api\";\nimport { TaskResource } from \"../../../open-api/generated\";\n\nexport class TaskClient {\n  public readonly _client: Client;\n\n  constructor(client: Client) {\n    this._client = client;\n  }\n\n  /**\n   * Searches for existing scheduler execution based on below parameters\n   *\n   * @param start\n   * @param size\n   * @param sort\n   * @param freeText\n   * @param query\n   * @returns SearchResultWorkflowScheduleExecutionModel\n   */\n  public async search(\n    start: number,\n    size: number,\n    sort = \"\",\n    freeText: string,\n    query: string\n  ): Promise<SearchResultTaskSummary> {\n    try {\n      const { data } = await TaskResource.search2({\n        query: { start, size, sort, freeText, query },\n        client: this._client,\n        throwOnError: true,\n      });\n\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to search tasks\");\n    }\n  }\n\n  /**\n   * Get an existing schedule by Id\n   * @param taskId\n   * @returns Task\n   */\n  public async getTask(taskId: string): Promise<Task> {\n    try {\n      const { data } = await TaskResource.getTask({\n        path: { taskId },\n        client: this._client,\n        throwOnError: true,\n      });\n\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to get task '${taskId}'`);\n    }\n  }\n\n  /**\n   * Update task result status\n   *\n   * @param workflowId\n   * @param taskReferenceName\n   * @param status\n   * @param outputData\n   * @param workerId\n   * @returns\n   */\n  public async updateTaskResult(\n    workflowId: string,\n    taskRefName: string,\n    status: TaskResultStatus,\n    outputData: Record<string, unknown>\n  ): Promise<string> {\n    try {\n      const { data } = await TaskResource.updateTask1({\n        body: {\n          outputData,\n        },\n        path: {\n          workflowId,\n          taskRefName,\n          status,\n        },\n        client: this._client,\n        throwOnError: true,\n      });\n\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to update task '${taskRefName}' result for workflow '${workflowId}'`\n      );\n    }\n  }\n\n  /**\n   * Add a log entry to a task\n   * @param taskId - The task ID\n   * @param message - The log message\n   */\n  public async addTaskLog(taskId: string, message: string): Promise<void> {\n    try {\n      await TaskResource.log({\n        path: { taskId },\n        body: message,\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to add log to task '${taskId}'`);\n    }\n  }\n\n  /**\n   * Get logs for a task\n   * @param taskId - The task ID\n   * @returns Array of task execution logs\n   */\n  public async getTaskLogs(taskId: string): Promise<TaskExecLog[]> {\n    try {\n      const { data } = await TaskResource.getTaskLogs({\n        path: { taskId },\n        client: this._client,\n        throwOnError: true,\n      });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to get logs for task '${taskId}'`);\n    }\n  }\n\n  /**\n   * Get queue sizes for task types\n   * @param taskType - Optional array of task types to filter by\n   * @returns Map of task type to queue size\n   */\n  public async getQueueSizeForTask(\n    taskType?: string[]\n  ): Promise<Record<string, number>> {\n    try {\n      const { data } = await TaskResource.size({\n        query: { taskType },\n        client: this._client,\n        throwOnError: true,\n      });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to get queue sizes\");\n    }\n  }\n\n  /**\n   * Get poll data for a task type\n   * @param taskType - The task type\n   * @returns Array of poll data\n   */\n  public async getTaskPollData(taskType: string): Promise<PollData[]> {\n    try {\n      const { data } = await TaskResource.getPollData({\n        query: { taskType },\n        client: this._client,\n        throwOnError: true,\n      });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to get poll data for task type '${taskType}'`\n      );\n    }\n  }\n\n  /**\n   * Updates a task by reference name synchronously and returns the complete workflow\n   * @param workflowId - The workflow instance ID\n   * @param taskRefName - The task reference name\n   * @param status - The task status\n   * @param output - The task output data\n   * @param workerId - Optional worker ID\n   * @returns The updated workflow\n   */\n  public async updateTaskSync(\n    workflowId: string,\n    taskRefName: string,\n    status: \"IN_PROGRESS\" | \"FAILED\" | \"FAILED_WITH_TERMINAL_ERROR\" | \"COMPLETED\",\n    output: Record<string, unknown>,\n    workerId?: string\n  ): Promise<Workflow> {\n    try {\n      const { data } = await TaskResource.updateTaskSync({\n        path: { workflowId, taskRefName, status },\n        body: output,\n        query: { workerid: workerId },\n        client: this._client,\n        throwOnError: true,\n      });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to update task '${taskRefName}' synchronously for workflow '${workflowId}'`\n      );\n    }\n  }\n}\n","import type { HumanTaskTemplate } from \"../../../open-api\";\nimport { HumanTask } from \"../../../open-api/generated\";\nimport type { Client } from \"../../../open-api\";\nimport { handleSdkError } from \"../../helpers/errors\";\n\nexport class TemplateClient {\n  public readonly _client: Client;\n\n  constructor(client: Client) {\n    this._client = client;\n  }\n\n  /**\n   * Register a new human task template\n   *\n   * @param template\n   * @returns\n   */\n  public async registerTemplate(\n    template: HumanTaskTemplate,\n    asNewVersion = false\n  ): Promise<HumanTaskTemplate> {\n    try {\n      const { data } = await HumanTask.saveTemplate({\n        body: template,\n        query: {\n          newVersion: asNewVersion,\n        },\n        client: this._client,\n        throwOnError: true,\n      });\n\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to register template\");\n    }\n  }\n}\n","import type {\n  ExtendedTaskDef as OpenApiExtendedTaskDef,\n  SignalResponse as OpenApiSignalResponse,\n  Task,\n  ExtendedConductorApplication as OpenApiExtendedConductorApplication,\n  Tag,\n  ConductorUser as OpenApiConductorUser,\n  Group as OpenApiGroup,\n  IntegrationApiUpdate as OpenApiIntegrationApiUpdate,\n  RateLimitConfig as OpenApiRateLimitConfig,\n  BulkResponse as OpenApiBulkResponse,\n  TaskSummary as OpenApiTaskSummary,\n} from \"./generated\";\n\nexport interface CommonTaskDef {\n  name: string;\n  taskReferenceName: string;\n}\n\nexport enum Consistency {\n  SYNCHRONOUS = \"SYNCHRONOUS\",\n  DURABLE = \"DURABLE\",\n  REGION_DURABLE = \"REGION_DURABLE\",\n}\n\nexport enum ReturnStrategy {\n  TARGET_WORKFLOW = \"TARGET_WORKFLOW\",\n  BLOCKING_WORKFLOW = \"BLOCKING_WORKFLOW\",\n  BLOCKING_TASK = \"BLOCKING_TASK\",\n  BLOCKING_TASK_INPUT = \"BLOCKING_TASK_INPUT\",\n}\n\nexport enum TaskResultStatusEnum {\n  IN_PROGRESS = \"IN_PROGRESS\",\n  FAILED = \"FAILED\",\n  FAILED_WITH_TERMINAL_ERROR = \"FAILED_WITH_TERMINAL_ERROR\",\n  COMPLETED = \"COMPLETED\",\n}\n\nexport enum TaskType {\n  START = \"START\",\n  SIMPLE = \"SIMPLE\",\n  DYNAMIC = \"DYNAMIC\",\n  FORK_JOIN = \"FORK_JOIN\",\n  FORK_JOIN_DYNAMIC = \"FORK_JOIN_DYNAMIC\",\n  DECISION = \"DECISION\",\n  SWITCH = \"SWITCH\",\n  JOIN = \"JOIN\",\n  DO_WHILE = \"DO_WHILE\",\n  SUB_WORKFLOW = \"SUB_WORKFLOW\",\n  START_WORKFLOW = \"START_WORKFLOW\",\n  EVENT = \"EVENT\",\n  WAIT = \"WAIT\",\n  WAIT_FOR_WEBHOOK = \"WAIT_FOR_WEBHOOK\",\n  USER_DEFINED = \"USER_DEFINED\",\n  HTTP = \"HTTP\",\n  HTTP_POLL = \"HTTP_POLL\",\n  HUMAN = \"HUMAN\",\n  LAMBDA = \"LAMBDA\",\n  INLINE = \"INLINE\",\n  EXCLUSIVE_JOIN = \"EXCLUSIVE_JOIN\",\n  TERMINAL = \"TERMINAL\",\n  TERMINATE = \"TERMINATE\",\n  KAFKA_PUBLISH = \"KAFKA_PUBLISH\",\n  JSON_JQ_TRANSFORM = \"JSON_JQ_TRANSFORM\",\n  SET_VARIABLE = \"SET_VARIABLE\",\n  GET_DOCUMENT = \"GET_DOCUMENT\",\n  LLM_CHAT_COMPLETE = \"LLM_CHAT_COMPLETE\",\n  LLM_TEXT_COMPLETE = \"LLM_TEXT_COMPLETE\",\n  LLM_GENERATE_EMBEDDINGS = \"LLM_GENERATE_EMBEDDINGS\",\n  LLM_INDEX_TEXT = \"LLM_INDEX_TEXT\",\n  LLM_SEARCH_INDEX = \"LLM_SEARCH_INDEX\",\n  LLM_SEARCH_EMBEDDINGS = \"LLM_SEARCH_EMBEDDINGS\",\n  LLM_STORE_EMBEDDINGS = \"LLM_STORE_EMBEDDINGS\",\n  LLM_GET_EMBEDDINGS = \"LLM_GET_EMBEDDINGS\",\n  GENERATE_IMAGE = \"GENERATE_IMAGE\",\n  GENERATE_AUDIO = \"GENERATE_AUDIO\",\n  CALL_MCP_TOOL = \"CALL_MCP_TOOL\",\n  LIST_MCP_TOOLS = \"LIST_MCP_TOOLS\",\n  PULL_WORKFLOW_MESSAGES = \"PULL_WORKFLOW_MESSAGES\",\n}\n\nexport enum ServiceType {\n  HTTP = \"HTTP\",\n  MCP_REMOTE = \"MCP_REMOTE\",\n  gRPC = \"gRPC\",\n}\n\nexport type TaskDefTypes =\n  | SimpleTaskDef\n  | DoWhileTaskDef\n  | EventTaskDef\n  | ForkJoinTaskDef\n  | ForkJoinDynamicDef\n  | HttpTaskDef\n  | InlineTaskDef\n  | JsonJQTransformTaskDef\n  | KafkaPublishTaskDef\n  | SetVariableTaskDef\n  | SubWorkflowTaskDef\n  | SwitchTaskDef\n  | TerminateTaskDef\n  | JoinTaskDef\n  | WaitTaskDef\n  | PullWorkflowMessagesTaskDef;\n\nexport interface DoWhileTaskDef extends CommonTaskDef {\n  inputParameters: Record<string, unknown>;\n  type: TaskType.DO_WHILE;\n  startDelay?: number;\n  optional?: boolean;\n  asyncComplete?: boolean;\n  loopCondition: string;\n  loopOver: TaskDefTypes[];\n}\n\nexport interface EventTaskDef extends CommonTaskDef {\n  type: TaskType.EVENT;\n  sink: string;\n  asyncComplete?: boolean;\n  optional?: boolean;\n}\n\nexport interface ForkJoinTaskDef extends CommonTaskDef {\n  type: TaskType.FORK_JOIN;\n  inputParameters?: Record<string, string>;\n  forkTasks: TaskDefTypes[][];\n}\n\nexport interface JoinTaskDef extends CommonTaskDef {\n  type: TaskType.JOIN;\n  inputParameters?: Record<string, string>;\n  joinOn: string[];\n  optional?: boolean;\n  asyncComplete?: boolean;\n}\n\nexport interface ForkJoinDynamicDef extends CommonTaskDef {\n  inputParameters: {\n    dynamicTasks: TaskDefTypes[] | string;\n    dynamicTasksInput: Record<string, unknown> | string;\n  };\n  type: TaskType.FORK_JOIN_DYNAMIC;\n  dynamicForkTasksParam: string; // not string \"dynamicTasks\",\n  dynamicForkTasksInputParamName: string; // not string \"dynamicTasksInput\",\n  startDelay?: number;\n  optional?: boolean;\n  asyncComplete?: boolean;\n}\nexport interface HttpInputParameters {\n  uri: string;\n  method: \"GET\" | \"PUT\" | \"POST\" | \"DELETE\" | \"OPTIONS\" | \"HEAD\";\n  accept?: string;\n  contentType?: string;\n  headers?: Record<string, string>;\n  body?: unknown;\n  connectionTimeOut?: number;\n  readTimeOut?: string;\n}\n\nexport interface HttpTaskDef extends CommonTaskDef {\n  inputParameters: {\n    [x: string]: unknown;\n    http_request: HttpInputParameters;\n  };\n  type: TaskType.HTTP;\n  asyncComplete?: boolean;\n  optional?: boolean;\n}\n\nexport interface InlineTaskInputParameters {\n  evaluatorType: \"javascript\" | \"graaljs\";\n  expression: string;\n  [x: string]: unknown;\n}\n\nexport interface InlineTaskDef extends CommonTaskDef {\n  type: TaskType.INLINE;\n  inputParameters: InlineTaskInputParameters;\n  optional?: boolean;\n}\n\ninterface ContainingQueryExpression {\n  queryExpression: string;\n  [x: string | number | symbol]: unknown;\n}\n\nexport interface JsonJQTransformTaskDef extends CommonTaskDef {\n  type: TaskType.JSON_JQ_TRANSFORM;\n  inputParameters: ContainingQueryExpression;\n  optional?: boolean;\n}\n\nexport interface KafkaPublishInputParameters {\n  topic: string;\n  value: string;\n  bootStrapServers: string;\n  headers: Record<string, string>;\n  key: string;\n  keySerializer: string;\n}\n\nexport interface KafkaPublishTaskDef extends CommonTaskDef {\n  inputParameters: {\n    kafka_request: KafkaPublishInputParameters;\n  };\n  type: TaskType.KAFKA_PUBLISH;\n  optional?: boolean;\n}\n\nexport interface SetVariableTaskDef extends CommonTaskDef {\n  type: TaskType.SET_VARIABLE;\n  inputParameters: Record<string, unknown>;\n  optional?: boolean;\n}\n\nexport interface SimpleTaskDef extends CommonTaskDef {\n  type: TaskType.SIMPLE;\n  inputParameters?: Record<string, unknown>;\n  optional?: boolean;\n}\n\nexport interface SubWorkflowTaskDef extends CommonTaskDef {\n  type: TaskType.SUB_WORKFLOW;\n  inputParameters?: Record<string, unknown>;\n  subWorkflowParam: {\n    name: string;\n    version?: number;\n    taskToDomain?: Record<string, string>;\n  };\n  optional?: boolean;\n}\n\nexport interface SwitchTaskDef extends CommonTaskDef {\n  inputParameters: Record<string, unknown>;\n  type: TaskType.SWITCH;\n  decisionCases: Record<string, TaskDefTypes[]>;\n  defaultCase: TaskDefTypes[];\n  evaluatorType: \"value-param\" | \"javascript\";\n  expression: string;\n  optional?: boolean;\n}\n\nexport interface TerminateTaskDef extends CommonTaskDef {\n  inputParameters: {\n    terminationStatus: \"COMPLETED\" | \"FAILED\";\n    workflowOutput?: Record<string, string>;\n    terminationReason?: string;\n  };\n  type: TaskType.TERMINATE;\n  startDelay?: number;\n}\n\nexport interface WaitTaskDef extends CommonTaskDef {\n  type: TaskType.WAIT;\n  inputParameters: {\n    duration?: string;\n    until?: string;\n  };\n  optional?: boolean;\n}\n\nexport interface PullWorkflowMessagesTaskDef extends CommonTaskDef {\n  type: TaskType.PULL_WORKFLOW_MESSAGES;\n  inputParameters: {\n    batchSize: number;\n  };\n  optional?: boolean;\n}\n\n// TODO: need to remove this once OpenAPI spec is fixed\nexport interface ExtendedTaskDef\n  extends Omit<\n    OpenApiExtendedTaskDef,\n    \"timeoutSeconds\" | \"totalTimeoutSeconds\"\n  > {\n  totalTimeoutSeconds?: number;\n  timeoutSeconds?: number;\n}\n\n// TODO: need to remove this once OpenAPI spec is fixed\nexport interface SignalResponse extends OpenApiSignalResponse {\n  // ========== COMMON FIELDS IN ALL RESPONSES ==========\n  priority?: number;\n  variables?: Record<string, unknown>;\n\n  // ========== FIELDS SPECIFIC TO TARGET_WORKFLOW & BLOCKING_WORKFLOW ==========\n  tasks?: Task[];\n  createdBy?: string;\n  createTime?: number;\n  status?: string;\n  updateTime?: number;\n\n  // ========== FIELDS SPECIFIC TO BLOCKING_TASK & BLOCKING_TASK_INPUT ==========\n  taskType?: string;\n  taskId?: string;\n  referenceTaskName?: string;\n  retryCount?: number;\n  taskDefName?: string;\n  retriedTaskId?: string;\n  workflowType?: string;\n  reasonForIncompletion?: string;\n}\n\n// TODO: need to remove this once AccessKey type is added to OpenAPI spec\nexport interface AccessKey {\n  id: string;\n  secret: string;\n}\n\n// TODO: need to remove this once type is added to OpenAPI spec\nexport interface AccessKeyInfo {\n  id: string;\n  createdAt: number;\n  status: \"ACTIVE\" | \"INACTIVE\";\n}\n\n// TODO: need to remove this once ApplicationRole type is added to OpenAPI spec\nexport type ApplicationRole =\n  | \"ADMIN\"\n  | \"UNRESTRICTED_WORKER\"\n  | \"METADATA_MANAGER\"\n  | \"WORKFLOW_MANAGER\"\n  | \"APPLICATION_MANAGER\"\n  | \"USER\"\n  | \"USER_READ_ONLY\"\n  | \"WORKER\"\n  | \"APPLICATION_CREATOR\"\n  | \"METADATA_API\"\n  | \"PROMPT_MANAGER\";\n\n// TODO: need to remove this once ExtendedConductorApplication type is corrected in OpenAPI spec\nexport interface ExtendedConductorApplication\n  extends Required<Omit<OpenApiExtendedConductorApplication, \"tags\">> {\n  tags?: Tag[];\n}\n\n// TODO: remove these once OpenAPI spec includes these fields\n\n/** Extended ConductorUser with fields present in Python SDK but missing from OpenAPI spec */\nexport interface ExtendedConductorUser extends OpenApiConductorUser {\n  contactInformation?: Record<string, string>;\n  namespace?: string;\n}\n\n/** Extended Group with fields present in Python SDK but missing from OpenAPI spec */\nexport interface ExtendedGroup extends OpenApiGroup {\n  contactInformation?: Record<string, string>;\n}\n\n/** Extended IntegrationApiUpdate with fields present in Python SDK but missing from OpenAPI spec */\nexport interface ExtendedIntegrationApiUpdate\n  extends OpenApiIntegrationApiUpdate {\n  maxTokens?: number;\n  frequency?: string;\n}\n\n/** Extended RateLimitConfig with fields present in Python SDK but missing from OpenAPI spec */\nexport interface ExtendedRateLimitConfig extends OpenApiRateLimitConfig {\n  tag?: string;\n  concurrentExecutionLimit?: number;\n}\n\n/** Extended BulkResponse with fields present in Python SDK but missing from OpenAPI spec */\nexport interface ExtendedBulkResponse extends OpenApiBulkResponse {\n  message?: string;\n}\n\n/** Extended TaskSummary with fields present in Python SDK but missing from OpenAPI spec */\nexport interface ExtendedTaskSummary extends OpenApiTaskSummary {\n  domain?: string;\n}\n","/* eslint-disable */\n// Legacy compatibility types: This file provides backward compatibility types.\n// These types are maintained for legacy users and will not be removed.\n// ------------------------------start------------------------------\nimport type {\n  HumanTaskEntry,\n  ScrollableSearchResultWorkflowSummary,\n  Workflow,\n  TaskListSearchResultSummary,\n} from \"./generated\";\nimport type { Client } from \"./generated/client\";\n\n// DEPRECATED\nexport type TimeoutPolicy = {\n  type: string;\n};\n\n// DEPRECATED\nexport type Terminate = TimeoutPolicy & {\n  timeoutSeconds?: number;\n};\n\n// DEPRECATED\nexport type HTScrollableSearchResultHumanTaskEntry = {\n  queryId?: string;\n  results?: HumanTaskEntry[];\n};\n\n// DEPRECATED\nexport type StartWorkflow = {\n  name?: string;\n  version?: number;\n  correlationId?: string;\n  input?: Record<string, any>;\n  taskToDomain?: Record<string, string>;\n};\n\n// DEPRECATED\nexport type SearchResultWorkflowSummary = ScrollableSearchResultWorkflowSummary;\n\n// DEPRECATED\nexport type SearchResultWorkflow = {\n  totalHits?: number;\n  results?: Array<Workflow>;\n};\n\n// DEPRECATED\nexport type SearchResultTask = TaskListSearchResultSummary;\n\n// DEPRECATED\nexport type ExternalStorageLocation = {\n  uri?: string;\n  path?: string;\n};\n\n// DEPRECATED\nexport interface OnCancel {\n  readonly isResolved: boolean;\n  readonly isRejected: boolean;\n  readonly isCancelled: boolean;\n\n  (cancelHandler: () => void): void;\n}\n\n// DEPRECATED\nexport type ApiRequestOptions = {\n  readonly method:\n    | \"GET\"\n    | \"PUT\"\n    | \"POST\"\n    | \"DELETE\"\n    | \"OPTIONS\"\n    | \"HEAD\"\n    | \"PATCH\";\n  readonly url: string;\n  readonly path?: Record<string, any>;\n  readonly cookies?: Record<string, any>;\n  readonly headers?: Record<string, any>;\n  readonly query?: Record<string, any>;\n  readonly formData?: Record<string, any>;\n  readonly body?: any;\n  readonly mediaType?: string;\n  readonly responseHeader?: string;\n  readonly errors?: Record<number, string>;\n};\n\n// DEPRECATED\ntype Resolver<T> = (options: ApiRequestOptions) => Promise<T>;\nexport type OpenAPIConfig = {\n  BASE: string;\n  VERSION: string;\n  WITH_CREDENTIALS: boolean;\n  CREDENTIALS: \"include\" | \"omit\" | \"same-origin\";\n  TOKEN?: string | Resolver<string> | undefined;\n  USERNAME?: string | Resolver<string> | undefined;\n  PASSWORD?: string | Resolver<string> | undefined;\n  HEADERS?: Headers | Resolver<Headers> | undefined;\n  ENCODE_PATH?: ((path: string) => string) | undefined;\n};\n\n// DEPRECATED\nexport type ApiResult = {\n  readonly url: string;\n  readonly ok: boolean;\n  readonly status: number;\n  readonly statusText: string;\n  readonly body: any;\n};\n\n// DEPRECATED\nexport class ApiError extends Error {\n  public readonly url: string;\n  public readonly status: number;\n  public readonly statusText: string;\n  public readonly body: any;\n  public readonly request: ApiRequestOptions;\n\n  constructor(\n    request: ApiRequestOptions,\n    response: ApiResult,\n    message: string\n  ) {\n    super(message);\n\n    this.name = \"ApiError\";\n    this.url = response.url;\n    this.status = response.status;\n    this.statusText = response.statusText;\n    this.body = response.body;\n    this.request = request;\n  }\n}\n\n// DEPRECATED\nexport type ConductorClient = Client;\n\n// DEPRECATED\nexport class CancelError extends Error {\n  constructor(message: string) {\n    super(message);\n    this.name = \"CancelError\";\n  }\n\n  public get isCancelled(): boolean {\n    return true;\n  }\n}\n\n// DEPRECATED\nexport class CancelablePromise<T> implements Promise<T> {\n  #isResolved: boolean;\n  #isRejected: boolean;\n  #isCancelled: boolean;\n  readonly #cancelHandlers: (() => void)[];\n  readonly #promise: Promise<T>;\n  #resolve?: (value: T | PromiseLike<T>) => void;\n  #reject?: (reason?: any) => void;\n\n  constructor(\n    executor: (\n      resolve: (value: T | PromiseLike<T>) => void,\n      reject: (reason?: any) => void,\n      onCancel: OnCancel\n    ) => void\n  ) {\n    this.#isResolved = false;\n    this.#isRejected = false;\n    this.#isCancelled = false;\n    this.#cancelHandlers = [];\n    this.#promise = new Promise<T>((resolve, reject) => {\n      this.#resolve = resolve;\n      this.#reject = reject;\n\n      const onResolve = (value: T | PromiseLike<T>): void => {\n        if (this.#isResolved || this.#isRejected || this.#isCancelled) {\n          return;\n        }\n        this.#isResolved = true;\n        if (this.#resolve) this.#resolve(value);\n      };\n\n      const onReject = (reason?: any): void => {\n        if (this.#isResolved || this.#isRejected || this.#isCancelled) {\n          return;\n        }\n        this.#isRejected = true;\n        if (this.#reject) this.#reject(reason);\n      };\n\n      const onCancel = (cancelHandler: () => void): void => {\n        if (this.#isResolved || this.#isRejected || this.#isCancelled) {\n          return;\n        }\n        this.#cancelHandlers.push(cancelHandler);\n      };\n\n      Object.defineProperty(onCancel, \"isResolved\", {\n        get: (): boolean => this.#isResolved,\n      });\n\n      Object.defineProperty(onCancel, \"isRejected\", {\n        get: (): boolean => this.#isRejected,\n      });\n\n      Object.defineProperty(onCancel, \"isCancelled\", {\n        get: (): boolean => this.#isCancelled,\n      });\n\n      return executor(onResolve, onReject, onCancel as OnCancel);\n    });\n  }\n\n  get [Symbol.toStringTag]() {\n    return \"Cancellable Promise\";\n  }\n\n  public then<TResult1 = T, TResult2 = never>(\n    onFulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null,\n    onRejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null\n  ): Promise<TResult1 | TResult2> {\n    return this.#promise.then(onFulfilled, onRejected);\n  }\n\n  public catch<TResult = never>(\n    onRejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null\n  ): Promise<T | TResult> {\n    return this.#promise.catch(onRejected);\n  }\n\n  public finally(onFinally?: (() => void) | null): Promise<T> {\n    return this.#promise.finally(onFinally);\n  }\n\n  public cancel(): void {\n    if (this.#isResolved || this.#isRejected || this.#isCancelled) {\n      return;\n    }\n    this.#isCancelled = true;\n    if (this.#cancelHandlers.length) {\n      try {\n        for (const cancelHandler of this.#cancelHandlers) {\n          cancelHandler();\n        }\n      } catch (error) {\n        console.warn(\"Cancellation threw an error\", error);\n        return;\n      }\n    }\n    this.#cancelHandlers.length = 0;\n    if (this.#reject) this.#reject(new CancelError(\"Request aborted\"));\n  }\n\n  public get isCancelled(): boolean {\n    return this.#isCancelled;\n  }\n}\n\n// DEPRECATED\nexport abstract class BaseHttpRequest {\n  constructor(public readonly config: OpenAPIConfig) {}\n\n  public abstract request<T>(options: ApiRequestOptions): CancelablePromise<T>;\n}\n// ------------------------------end------------------------------\n","import type { SignalResponse, Task, Workflow } from \"../../../../open-api\";\nimport type { EnhancedSignalResponse } from \"../types\";\n\nexport const enhanceSignalResponse = (\n  response: SignalResponse\n): EnhancedSignalResponse => {\n  return {\n    ...response,\n    // ========== CHECK METHODS ==========\n\n    /**\n     * Returns true if the response contains target workflow details\n     */\n    isTargetWorkflow(): boolean {\n      return this.responseType === \"TARGET_WORKFLOW\";\n    },\n\n    /**\n     * Returns true if the response contains blocking workflow details\n     */\n    isBlockingWorkflow(): boolean {\n      return this.responseType === \"BLOCKING_WORKFLOW\";\n    },\n\n    /**\n     * Returns true if the response contains blocking task details\n     */\n    isBlockingTask(): boolean {\n      return this.responseType === \"BLOCKING_TASK\";\n    },\n\n    /**\n     * Returns true if the response contains blocking task input\n     */\n    isBlockingTaskInput(): boolean {\n      return this.responseType === \"BLOCKING_TASK_INPUT\";\n    },\n\n    // ========== EXTRACTION METHODS ==========\n\n    /**\n     * Extracts workflow details from a SignalResponse\n     * @throws Error if the response type doesn't contain workflow details\n     */\n    getWorkflow(): Workflow {\n      if (!this.isTargetWorkflow() && !this.isBlockingWorkflow()) {\n        throw new Error(\n          `Response type ${this.responseType} does not contain workflow details`\n        );\n      }\n\n      return {\n        workflowId: this.workflowId,\n        status: this.status,\n        tasks: this.tasks || [],\n        createdBy: this.createdBy,\n        createTime: this.createTime,\n        updateTime: this.updateTime,\n        input: this.input || {},\n        output: this.output || {},\n        variables: this.variables || {},\n        priority: this.priority,\n      } as Workflow;\n    },\n\n    /**\n     * Extracts task details from a SignalResponse\n     * @throws Error if the response type doesn't contain task details\n     */\n    getBlockingTask(): Task {\n      if (!this.isBlockingTask() && !this.isBlockingTaskInput()) {\n        throw new Error(\n          `Response type ${this.responseType} does not contain task details`\n        );\n      }\n\n      return {\n        taskId: this.taskId,\n        taskType: this.taskType,\n        taskDefName: this.taskDefName,\n        referenceTaskName: this.referenceTaskName,\n        retryCount: this.retryCount || 0,\n        status: this.status,\n        inputData: this.input || {},\n        outputData: this.output || {},\n        workflowInstanceId: this.workflowId,\n        workflowType: this.workflowType,\n      } as Task;\n    },\n\n    /**\n     * Extracts task input from a SignalResponse\n     * Only valid for BLOCKING_TASK_INPUT responses\n     * @throws Error if the response type doesn't contain task input details\n     */\n    getTaskInput(): Record<string, unknown> {\n      if (!this.isBlockingTaskInput()) {\n        throw new Error(\n          `Response type ${this.responseType} does not contain task input details`\n        );\n      }\n\n      return this.input || {};\n    },\n\n    // ========== UTILITY METHODS ==========\n\n    /**\n     * Get the workflow ID from the response\n     */\n    getWorkflowId(): string {\n      return this.workflowId || this.targetWorkflowId || \"\";\n    },\n\n    /**\n     * Get the target workflow ID from the response\n     */\n    getTargetWorkflowId(): string {\n      return this.targetWorkflowId || this.workflowId || \"\";\n    },\n\n    /**\n     * Check if the response has workflow data\n     */\n    hasWorkflowData(): boolean {\n      return this.isTargetWorkflow() || this.isBlockingWorkflow();\n    },\n\n    /**\n     * Check if the response has task data\n     */\n    hasTaskData(): boolean {\n      return this.isBlockingTask() || this.isBlockingTaskInput();\n    },\n\n    /**\n     * Get response type as string\n     */\n    getResponseType(): string {\n      return this.responseType || \"\";\n    },\n\n    /**\n     * Check if the workflow/task is in a terminal state\n     */\n    isTerminal(): boolean {\n      const terminalStates = [\"COMPLETED\", \"FAILED\", \"TERMINATED\", \"TIMED_OUT\"];\n      return terminalStates.includes(this.status || \"\");\n    },\n\n    /**\n     * Check if the workflow/task is currently running\n     */\n    isRunning(): boolean {\n      return this.status === \"RUNNING\";\n    },\n\n    /**\n     * Check if the workflow/task is paused\n     */\n    isPaused(): boolean {\n      return this.status === \"PAUSED\";\n    },\n\n    /**\n     * Get a summary of the response for logging\n     */\n    getSummary(): string {\n      const parts = [\n        `type=${this.responseType}`,\n        `workflowId=${this.workflowId}`,\n        `status=${this.status}`,\n      ];\n\n      if (this.hasTaskData()) {\n        parts.push(`taskId=${this.taskId}`);\n        parts.push(`taskType=${this.taskType}`);\n      }\n\n      if (this.hasWorkflowData() && this.tasks) {\n        parts.push(`tasksCount=${this.tasks.length}`);\n      }\n\n      return `SignalResponse{${parts.join(\", \")}}`;\n    },\n\n    /**\n     * Convert to JSON for debugging (excludes large objects)\n     */\n    toDebugJSON(): Record<string, unknown> {\n      return {\n        responseType: this.responseType,\n        workflowId: this.workflowId,\n        targetWorkflowId: this.targetWorkflowId,\n        targetWorkflowStatus: this.targetWorkflowStatus,\n        status: this.status,\n        taskId: this.taskId,\n        taskType: this.taskType,\n        referenceTaskName: this.referenceTaskName,\n        createTime: this.createTime,\n        updateTime: this.updateTime,\n        priority: this.priority,\n        retryCount: this.retryCount,\n        tasksCount: this.tasks?.length,\n        hasInput: Boolean(this.input && Object.keys(this.input).length > 0),\n        hasOutput: Boolean(this.output && Object.keys(this.output).length > 0),\n        hasVariables: Boolean(\n          this.variables && Object.keys(this.variables).length > 0\n        ),\n      };\n    },\n\n    /**\n     * String representation for debugging\n     */\n    toString(): string {\n      return this.getSummary();\n    },\n  };\n};\n","export function reverseFind<T>(\n  array: T[],\n  predicate: (a: T, idx?: number, arr?: T[]) => boolean\n): T | undefined {\n  for (let i = array.length - 1; i >= 0; i--) {\n    if (predicate(array[i], i, array)) {\n      return array[i];\n    }\n  }\n  return undefined;\n}\n","import { Task } from \"../../../../open-api\";\nimport { TaskFinderPredicate } from \"../types\";\n\nexport const isCompletedTaskMatchingType =\n  (taskType: string): TaskFinderPredicate =>\n  (task: Task) =>\n    task.status === \"COMPLETED\" && task.taskType === taskType;\n","export const RETRY_TIME_IN_MILLISECONDS = 10000;\n","import {\n  Client,\n  Consistency,\n  ReturnStrategy,\n  TaskResultStatusEnum,\n  WorkflowDef,\n  RerunWorkflowRequest,\n  ScrollableSearchResultWorkflowSummary,\n  SkipTaskRequest,\n  StartWorkflowRequest,\n  Task,\n  Workflow,\n  WorkflowRun,\n  WorkflowStatus,\n} from \"../../../open-api\";\nimport type {\n  CorrelationIdsSearchRequest,\n  WorkflowTestRequest,\n  WorkflowStateUpdate,\n} from \"../../../open-api/generated\";\nimport {\n  MetadataResource,\n  TaskResource,\n  WorkflowResource,\n} from \"../../../open-api/generated\";\nimport { TaskResultOutputData, TaskResultStatus } from \"../../types\";\nimport { EnhancedSignalResponse, TaskFinderPredicate } from \"./types\";\nimport { handleSdkError } from \"../../helpers/errors\";\nimport { enhanceSignalResponse } from \"./helpers/enhanceSignalResponse\";\nimport { reverseFind } from \"./helpers/reverseFind\";\nimport { isCompletedTaskMatchingType } from \"./helpers/isCompletedTaskMatchingType\";\nimport { RETRY_TIME_IN_MILLISECONDS } from \"./constants\";\n\nexport class WorkflowExecutor {\n  public readonly _client: Client;\n\n  constructor(client: Client) {\n    this._client = client;\n  }\n\n  /**\n   * Will persist a workflow in conductor\n   * @param override If true will override the existing workflow with the definition\n   * @param workflow Complete workflow definition\n   * @returns null\n   */\n\n  public async registerWorkflow(\n    override: boolean,\n    workflow: WorkflowDef\n  ): Promise<void> {\n    try {\n      // Clone so the HTTP client never receives a body it may have already read/locked\n      // (avoids \"Response body object should not be disturbed or locked\" in some environments).\n      await MetadataResource.create({\n        body: JSON.parse(JSON.stringify(workflow)) as WorkflowDef,\n        query: { overwrite: override },\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to register workflow\");\n    }\n  }\n\n  /**\n   * Takes a StartWorkflowRequest. returns a Promise<string> with the workflowInstanceId of the running workflow\n   * @param workflowRequest\n   * @returns\n   */\n  public async startWorkflow(\n    workflowRequest: StartWorkflowRequest\n  ): Promise<string> {\n    try {\n      const { data } = await WorkflowResource.startWorkflow({\n        body: workflowRequest,\n        client: this._client,\n        throwOnError: true,\n      });\n\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to start workflow\");\n    }\n  }\n\n  /**\n   * Execute a workflow synchronously (original method - backward compatible)\n   */\n  public async executeWorkflow(\n    workflowRequest: StartWorkflowRequest,\n    name: string,\n    version: number,\n    requestId: string,\n    waitUntilTaskRef?: string\n  ): Promise<WorkflowRun>;\n\n  /**\n   * Execute a workflow with return strategy support (new method)\n   */\n  public async executeWorkflow(\n    workflowRequest: StartWorkflowRequest,\n    name: string,\n    version: number,\n    requestId: string,\n    waitUntilTaskRef: string,\n    waitForSeconds: number,\n    consistency: Consistency,\n    returnStrategy: ReturnStrategy\n  ): Promise<EnhancedSignalResponse>;\n\n  // Implementation\n  public async executeWorkflow(\n    workflowRequest: StartWorkflowRequest,\n    name: string,\n    version: number,\n    requestId: string,\n    waitUntilTaskRef = \"\",\n    waitForSeconds?: number,\n    consistency?: Consistency,\n    returnStrategy?: ReturnStrategy\n  ): Promise<WorkflowRun | EnhancedSignalResponse> {\n    try {\n      const { data } = await WorkflowResource.executeWorkflow({\n        body: workflowRequest,\n        path: {\n          name,\n          version,\n        },\n        query: {\n          requestId,\n          waitUntilTaskRef,\n          waitForSeconds,\n          consistency,\n          returnStrategy,\n        },\n        client: this._client,\n        throwOnError: true,\n      });\n\n      return enhanceSignalResponse(data);\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to execute workflow\");\n    }\n  }\n\n  public startWorkflows(\n    workflowsRequest: StartWorkflowRequest[]\n  ): Promise<string>[] {\n    try {\n      return workflowsRequest.map((req) => this.startWorkflow(req));\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to start workflows\");\n    }\n  }\n\n  public async goBackToTask(\n    workflowInstanceId: string,\n    taskFinderPredicate: TaskFinderPredicate,\n    rerunWorkflowRequestOverrides: Partial<RerunWorkflowRequest> = {}\n  ): Promise<void> {\n    try {\n      const executedTasks =\n        (await this.getExecution(workflowInstanceId))?.tasks ?? [];\n      const maybePreviousTask = reverseFind<Task>(\n        executedTasks,\n        taskFinderPredicate\n      );\n\n      if (!maybePreviousTask) {\n        throw new Error(\"Task not found\");\n      }\n\n      await this.reRun(workflowInstanceId, {\n        //taskInput: previousTask.inputData,\n        ...rerunWorkflowRequestOverrides,\n        reRunFromTaskId: maybePreviousTask.taskId,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to go back to task\");\n    }\n  }\n\n  public async goBackToFirstTaskMatchingType(\n    workflowInstanceId: string,\n    taskType: string\n  ): Promise<void> {\n    try {\n      return this.goBackToTask(\n        workflowInstanceId,\n        isCompletedTaskMatchingType(taskType)\n      );\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to go back to first task matching type\");\n    }\n  }\n\n  /**\n   * Takes an workflowInstanceId and an includeTasks and an optional retry parameter returns the whole execution status.\n   * If includeTasks flag is provided. Details of tasks execution will be returned as well,\n   * retry specifies the amount of retrys before throwing an error.\n   *\n   * @param workflowInstanceId\n   * @param includeTasks\n   * @param retry\n   * @returns\n   */\n  public async getWorkflow(\n    workflowInstanceId: string,\n    includeTasks: boolean,\n    retry = 0\n  ): Promise<Workflow> {\n    try {\n      const { data: workflowStatus } =\n        await WorkflowResource.getExecutionStatus({\n          path: { workflowId: workflowInstanceId },\n          query: { includeTasks },\n          client: this._client,\n          throwOnError: true,\n        });\n\n      return workflowStatus;\n    } catch (error: unknown) {\n      const status =\n        error && typeof error === \"object\" && \"status\" in error\n          ? (error.status as number)\n          : undefined;\n      const isRetryableError =\n        status !== undefined && [500, 404, 403].includes(status);\n      if (!isRetryableError || retry === 0) {\n        handleSdkError(error, \"Failed to get workflow\");\n      }\n    }\n\n    await new Promise((res) =>\n      setTimeout(() => res(true), RETRY_TIME_IN_MILLISECONDS)\n    );\n\n    return this.getWorkflow(workflowInstanceId, includeTasks, retry - 1);\n  }\n\n  /**\n   *  Returns a summary of the current workflow status.\n   *\n   * @param workflowInstanceId current running workflow\n   * @param includeOutput flag to include output\n   * @param includeVariables flag to include variable\n   * @returns Promise<WorkflowStatus>\n   */\n  public async getWorkflowStatus(\n    workflowInstanceId: string,\n    includeOutput: boolean,\n    includeVariables: boolean\n  ): Promise<WorkflowStatus> {\n    try {\n      const { data } = await WorkflowResource.getWorkflowStatusSummary({\n        path: { workflowId: workflowInstanceId },\n        query: { includeOutput, includeVariables },\n        client: this._client,\n        throwOnError: true,\n      });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to get workflow '${workflowInstanceId}' status`\n      );\n    }\n  }\n\n  /**\n   *  Returns a summary of the current workflow status.\n   *\n   * @param workflowInstanceId current running workflow\n   * @param includeOutput flag to include output\n   * @param includeVariables flag to include variable\n   * @returns Promise<WorkflowStatus>\n   */\n  public async getExecution(\n    workflowInstanceId: string,\n    includeTasks = true\n  ): Promise<Workflow> {\n    try {\n      const { data } = await WorkflowResource.getExecutionStatus({\n        path: { workflowId: workflowInstanceId },\n        query: { includeTasks },\n        client: this._client,\n        throwOnError: true,\n      });\n\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to get execution for '${workflowInstanceId}'`\n      );\n    }\n  }\n\n  /**\n   * Pauses a running workflow\n   * @param workflowInstanceId current workflow execution\n   * @returns\n   */\n  public async pause(workflowInstanceId: string): Promise<void> {\n    try {\n      await WorkflowResource.pauseWorkflow({\n        path: { workflowId: workflowInstanceId },\n        client: this._client,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to pause workflow '${workflowInstanceId}'`);\n    }\n  }\n\n  /**\n   * Reruns workflowInstanceId workflow. with new parameters\n   *\n   * @param workflowInstanceId current workflow execution\n   * @param rerunWorkflowRequest Rerun Workflow Execution Request\n   * @returns\n   */\n  public async reRun(\n    workflowInstanceId: string,\n    rerunWorkflowRequest: Partial<RerunWorkflowRequest> = {}\n  ): Promise<string> {\n    try {\n      const { data } = await WorkflowResource.rerun({\n        path: { workflowId: workflowInstanceId },\n        body: rerunWorkflowRequest,\n        client: this._client,\n        throwOnError: true,\n      });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to rerun workflow '${workflowInstanceId}'`);\n    }\n  }\n\n  /**\n   * Restarts workflow with workflowInstanceId, if useLatestDefinition uses last defintion\n   * @param workflowInstanceId\n   * @param useLatestDefinitions\n   * @returns\n   */\n  public async restart(\n    workflowInstanceId: string,\n    useLatestDefinitions: boolean\n  ): Promise<void> {\n    try {\n      const { data } = await WorkflowResource.restart({\n        path: { workflowId: workflowInstanceId },\n        query: { useLatestDefinitions },\n        client: this._client,\n        throwOnError: true,\n      });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to restart workflow '${workflowInstanceId}'`\n      );\n    }\n  }\n\n  /**\n   * Resumes a previously paused execution\n   *\n   * @param workflowInstanceId Running workflow workflowInstanceId\n   * @returns\n   */\n  public async resume(workflowInstanceId: string): Promise<void> {\n    try {\n      await WorkflowResource.resumeWorkflow({\n        path: { workflowId: workflowInstanceId },\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to resume workflow '${workflowInstanceId}'`\n      );\n    }\n  }\n\n  /**\n   * Retrys workflow from last failing task\n   * if resumeSubworkflowTasks is true will resume tasks in spawned subworkflows\n   *\n   * @param workflowInstanceId\n   * @param resumeSubworkflowTasks\n   * @returns\n   */\n  public async retry(\n    workflowInstanceId: string,\n    resumeSubworkflowTasks: boolean\n  ): Promise<void> {\n    try {\n      await WorkflowResource.retry({\n        path: { workflowId: workflowInstanceId },\n        query: { resumeSubworkflowTasks },\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to retry workflow '${workflowInstanceId}'`);\n    }\n  }\n\n  /**\n   * Searches for existing workflows given the following querys\n   *\n   * @param start\n   * @param size\n   * @param query\n   * @param freeText\n   * @param sort\n   * @param skipCache\n   * @returns\n   */\n  public async search(\n    start: number,\n    size: number,\n    query: string,\n    freeText: string,\n    sort = \"\",\n    skipCache = false\n  ): Promise<ScrollableSearchResultWorkflowSummary> {\n    try {\n      const { data } = await WorkflowResource.search1({\n        query: { start, size, sort, freeText, query, skipCache },\n        client: this._client,\n        throwOnError: true,\n      });\n\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to search workflows\");\n    }\n  }\n\n  /**\n   * Skips a task of a running workflow.\n   * by providing a skipTaskRequest you can set the input and the output of the skipped tasks\n   * @param workflowInstanceId\n   * @param taskReferenceName\n   * @param skipTaskRequest\n   * @returns\n   */\n  public async skipTasksFromWorkflow(\n    workflowInstanceId: string,\n    taskReferenceName: string,\n    skipTaskRequest: Partial<SkipTaskRequest>\n  ): Promise<void> {\n    try {\n      await WorkflowResource.skipTaskFromWorkflow({\n        path: { workflowId: workflowInstanceId, taskReferenceName },\n        body: skipTaskRequest,\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to skip task '${taskReferenceName}' in workflow '${workflowInstanceId}'`\n      );\n    }\n  }\n\n  /**\n   * Takes an workflowInstanceId, and terminates a running workflow\n   * @param workflowInstanceId\n   * @param reason\n   * @returns\n   */\n  public async terminate(\n    workflowInstanceId: string,\n    reason: string\n  ): Promise<void> {\n    try {\n      await WorkflowResource.terminate1({\n        path: { workflowId: workflowInstanceId },\n        query: { reason },\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to terminate workflow '${workflowInstanceId}'`\n      );\n    }\n  }\n\n  /**\n   * Takes a taskId and a workflowInstanceId. Will update the task for the corresponding taskId\n   * @param taskId\n   * @param workflowInstanceId\n   * @param taskStatus\n   * @param taskOutput\n   * @returns\n   */\n  public async updateTask(\n    taskId: string,\n    workflowInstanceId: string,\n    taskStatus: TaskResultStatus,\n    outputData: TaskResultOutputData\n  ): Promise<string> {\n    const taskUpdates = { status: taskStatus, taskId, workflowInstanceId };\n    try {\n      const { data } = await TaskResource.updateTask({\n        body: { outputData, ...taskUpdates },\n        client: this._client,\n        throwOnError: true,\n      });\n\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to update task\");\n    }\n  }\n\n  /**\n   * Updates a task by reference Name\n   * @param taskReferenceName\n   * @param workflowInstanceId\n   * @param status\n   * @param taskOutput\n   * @returns\n   */\n  public async updateTaskByRefName(\n    taskReferenceName: string,\n    workflowInstanceId: string,\n    status: TaskResultStatus,\n    taskOutput: TaskResultOutputData\n  ): Promise<string> {\n    try {\n      const { data } = await TaskResource.updateTask1({\n        path: {\n          workflowId: workflowInstanceId,\n          taskRefName: taskReferenceName,\n          status,\n        },\n        body: taskOutput,\n        client: this._client,\n        throwOnError: true,\n      });\n\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to update task by reference name\");\n    }\n  }\n\n  /**\n   *\n   * @param taskId\n   * @returns\n   */\n  public async getTask(taskId: string): Promise<Task> {\n    try {\n      const { data } = await TaskResource.getTask({\n        path: { taskId },\n        client: this._client,\n        throwOnError: true,\n      });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to get task '${taskId}'`);\n    }\n  }\n\n  /**\n   * Updates a task by reference name synchronously and returns the complete workflow\n   * @param taskReferenceName\n   * @param workflowInstanceId\n   * @param status\n   * @param taskOutput\n   * @param workerId - Optional\n   * @returns Promise<Workflow>\n   */\n  public async updateTaskSync(\n    taskReferenceName: string,\n    workflowInstanceId: string,\n    status: TaskResultStatusEnum,\n    taskOutput: TaskResultOutputData,\n    workerId?: string\n  ): Promise<Workflow> {\n    try {\n      const { data } = await TaskResource.updateTaskSync({\n        path: {\n          workflowId: workflowInstanceId,\n          taskRefName: taskReferenceName,\n          status,\n        },\n        body: { taskOutput },\n        query: { workerid: workerId },\n        client: this._client,\n        throwOnError: true,\n      });\n\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to update task synchronously\");\n    }\n  }\n\n  /**\n   * Signals a workflow task and returns data based on the specified return strategy\n   * @param workflowInstanceId - Workflow instance ID to signal\n   * @param status - Task status to set\n   * @param taskOutput - Output data for the task\n   * @param returnStrategy - Optional strategy for what data to return (defaults to TARGET_WORKFLOW)\n   * @returns Promise<SignalResponse> with data based on the return strategy\n   */\n  public async signal(\n    workflowInstanceId: string,\n    status: TaskResultStatusEnum,\n    taskOutput: TaskResultOutputData,\n    returnStrategy: ReturnStrategy = ReturnStrategy.TARGET_WORKFLOW\n  ): Promise<EnhancedSignalResponse> {\n    try {\n      const { data } = await TaskResource.signalWorkflowTaskSync({\n        path: { workflowId: workflowInstanceId, status },\n        body: { taskOutput },\n        query: { returnStrategy },\n        client: this._client,\n        throwOnError: true,\n      });\n\n      return enhanceSignalResponse(data);\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to signal workflow\");\n    }\n  }\n\n  /**\n   * Signals a workflow task asynchronously (fire-and-forget)\n   * @param workflowInstanceId - Workflow instance ID to signal\n   * @param status - Task status to set\n   * @param taskOutput - Output data for the task\n   * @returns Promise<void>\n   */\n  public async signalAsync(\n    workflowInstanceId: string,\n    status: TaskResultStatusEnum,\n    taskOutput: TaskResultOutputData\n  ): Promise<void> {\n    try {\n      await TaskResource.signalWorkflowTaskASync({\n        path: { workflowId: workflowInstanceId, status },\n        body: { taskOutput },\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to signal workflow '${workflowInstanceId}' asynchronously`\n      );\n    }\n  }\n\n  /**\n   * Deletes a workflow execution\n   * @param workflowId - The workflow instance ID to delete\n   * @param archiveWorkflow - Whether to archive the workflow before deletion\n   */\n  public async deleteWorkflow(\n    workflowId: string,\n    archiveWorkflow = true\n  ): Promise<void> {\n    try {\n      await WorkflowResource.delete1({\n        path: { workflowId },\n        query: { archiveWorkflow },\n        client: this._client,\n        throwOnError: true,\n      });\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to delete workflow '${workflowId}'`\n      );\n    }\n  }\n\n  /**\n   * Gets workflows by correlation IDs\n   * @param request - Correlation IDs search request containing workflow names and correlation IDs\n   * @param includeClosed - Whether to include closed workflows\n   * @param includeTasks - Whether to include task details\n   * @returns Map of correlation ID to array of matching workflows\n   */\n  public async getByCorrelationIds(\n    request: CorrelationIdsSearchRequest,\n    includeClosed = false,\n    includeTasks = false\n  ): Promise<Record<string, Workflow[]>> {\n    try {\n      const { data } = await WorkflowResource.getWorkflows1({\n        body: request,\n        query: { includeClosed, includeTasks },\n        client: this._client,\n        throwOnError: true,\n      });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to get workflows by correlation IDs\");\n    }\n  }\n\n  /**\n   * Tests a workflow execution with mock data\n   * @param testRequest - The workflow test request containing workflow definition and mock task outputs\n   * @returns The simulated workflow execution result\n   */\n  public async testWorkflow(\n    testRequest: WorkflowTestRequest\n  ): Promise<Workflow> {\n    try {\n      const { data } = await WorkflowResource.testWorkflow({\n        body: testRequest,\n        client: this._client,\n        throwOnError: true,\n      });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, \"Failed to test workflow\");\n    }\n  }\n\n  /**\n   * Updates workflow variables\n   * @param workflowId - The workflow instance ID\n   * @param variables - The variables to update\n   * @returns The updated workflow\n   */\n  public async updateVariables(\n    workflowId: string,\n    variables: Record<string, unknown>\n  ): Promise<Workflow> {\n    try {\n      const { data } = await WorkflowResource.updateWorkflowState({\n        path: { workflowId },\n        body: variables,\n        client: this._client,\n        throwOnError: true,\n      });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to update variables for workflow '${workflowId}'`\n      );\n    }\n  }\n\n  /**\n   * Updates the workflow state (task result + variables) and optionally waits for further execution\n   * @param workflowId - The workflow instance ID\n   * @param updateRequest - The state update request containing task result and/or variables\n   * @param requestId - A unique request ID for idempotency\n   * @param waitUntilTaskRef - Optional task reference name to wait until\n   * @param waitForSeconds - Optional number of seconds to wait\n   * @returns The workflow run status after the update\n   */\n  public async updateState(\n    workflowId: string,\n    updateRequest: WorkflowStateUpdate,\n    requestId: string,\n    waitUntilTaskRef?: string,\n    waitForSeconds?: number\n  ): Promise<WorkflowRun> {\n    try {\n      const { data } = await WorkflowResource.updateWorkflowAndTaskState({\n        path: { workflowId },\n        body: updateRequest,\n        query: { requestId, waitUntilTaskRef, waitForSeconds },\n        client: this._client,\n        throwOnError: true,\n      });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(\n        error,\n        `Failed to update state for workflow '${workflowId}'`\n      );\n    }\n  }\n\n  /**\n   * Starts a workflow by name with input directly (without a StartWorkflowRequest object)\n   * @param name - The workflow name\n   * @param input - The workflow input data\n   * @param version - Optional workflow version\n   * @param correlationId - Optional correlation ID\n   * @param priority - Optional priority\n   * @returns The workflow instance ID\n   */\n  public async startWorkflowByName(\n    name: string,\n    input: Record<string, unknown>,\n    version?: number,\n    correlationId?: string,\n    priority?: number\n  ): Promise<string> {\n    try {\n      const { data } = await WorkflowResource.startWorkflow1({\n        path: { name },\n        body: input,\n        query: { version, correlationId, priority },\n        client: this._client,\n        throwOnError: true,\n      });\n      return data;\n    } catch (error: unknown) {\n      handleSdkError(error, `Failed to start workflow '${name}'`);\n    }\n  }\n}\n","import type { Client } from \"../open-api\";\nimport type { OrkesApiConfig } from \"./types\";\nimport { createConductorClient } from \"./createConductorClient\";\nimport { ApplicationClient } from \"./clients/application\";\nimport { AuthorizationClient } from \"./clients/authorization\";\nimport { EventClient } from \"./clients/event\";\nimport { HumanExecutor } from \"./clients/human\";\nimport { IntegrationClient } from \"./clients/integration\";\nimport { MetadataClient } from \"./clients/metadata\";\nimport { PromptClient } from \"./clients/prompt\";\nimport { SchedulerClient } from \"./clients/scheduler\";\nimport { SchemaClient } from \"./clients/schema\";\nimport { SecretClient } from \"./clients/secret\";\nimport { ServiceRegistryClient } from \"./clients/service-registry\";\nimport { TaskClient } from \"./clients/task\";\nimport { TemplateClient } from \"./clients/template\";\nimport { WorkflowExecutor } from \"./clients/workflow\";\n\n/**\n * Factory class that provides access to all Conductor client instances.\n * Equivalent to Python SDK's `OrkesClients`.\n *\n * Usage:\n * ```typescript\n * const clients = await OrkesClients.from({ serverUrl, keyId, keySecret });\n * const workflowClient = clients.getWorkflowClient();\n * const metadataClient = clients.getMetadataClient();\n * ```\n */\nexport class OrkesClients {\n  private readonly _client: Client;\n\n  constructor(client: Client) {\n    this._client = client;\n  }\n\n  /**\n   * Creates an OrkesClients instance from configuration.\n   * Handles authentication and connection setup.\n   */\n  static async from(config?: OrkesApiConfig): Promise<OrkesClients> {\n    const client = await createConductorClient(config);\n    return new OrkesClients(client);\n  }\n\n  /** Returns the underlying HTTP client */\n  getClient(): Client {\n    return this._client;\n  }\n\n  getWorkflowClient(): WorkflowExecutor {\n    return new WorkflowExecutor(this._client);\n  }\n\n  getMetadataClient(): MetadataClient {\n    return new MetadataClient(this._client);\n  }\n\n  getTaskClient(): TaskClient {\n    return new TaskClient(this._client);\n  }\n\n  getSchedulerClient(): SchedulerClient {\n    return new SchedulerClient(this._client);\n  }\n\n  getSecretClient(): SecretClient {\n    return new SecretClient(this._client);\n  }\n\n  getSchemaClient(): SchemaClient {\n    return new SchemaClient(this._client);\n  }\n\n  getAuthorizationClient(): AuthorizationClient {\n    return new AuthorizationClient(this._client);\n  }\n\n  getIntegrationClient(): IntegrationClient {\n    return new IntegrationClient(this._client);\n  }\n\n  getPromptClient(): PromptClient {\n    return new PromptClient(this._client);\n  }\n\n  getApplicationClient(): ApplicationClient {\n    return new ApplicationClient(this._client);\n  }\n\n  getEventClient(): EventClient {\n    return new EventClient(this._client);\n  }\n\n  getHumanClient(): HumanExecutor {\n    return new HumanExecutor(this._client);\n  }\n\n  getTemplateClient(): TemplateClient {\n    return new TemplateClient(this._client);\n  }\n\n  getServiceRegistryClient(): ServiceRegistryClient {\n    return new ServiceRegistryClient(this._client);\n  }\n}\n","export interface ConductorLogger {\n  info(...args: unknown[]): void\n  error(...args: unknown[]): void\n  debug(...args: unknown[]): void\n  warn?(...args: unknown[]): void\n}\n\nexport type ConductorLogLevel = keyof typeof LOG_LEVELS\nexport interface DefaultLoggerConfig {\n  level?: ConductorLogLevel,\n  tags?: object[]\n}\n\nconst LOG_LEVELS = {\n  DEBUG: 10,\n  INFO: 30,\n  WARN: 40,\n  ERROR: 60\n} as const\n\n\n/*\nThis provides an easy way to get up and running without worrying about configuring a logging framework.\nIdeally, users that care can easily override with any compatible logger (e.g. pino, etc)\n */\nexport class DefaultLogger implements ConductorLogger {\n  private readonly tags: object[]\n  private readonly level: number\n\n  constructor(config: DefaultLoggerConfig = {}) {\n    const {level, tags = []} = config\n    this.tags = tags\n    if (level && level in LOG_LEVELS) {\n      this.level = LOG_LEVELS[level]\n    } else {\n      this.level = LOG_LEVELS.INFO\n    }\n  }\n\n  private log (level: ConductorLogLevel, ...args: unknown[]) {\n    let resolvedLevel: number\n    let name = level\n    if (level in LOG_LEVELS) {\n      resolvedLevel = LOG_LEVELS[level]\n    } else {\n      name = \"INFO\"\n      resolvedLevel = LOG_LEVELS.INFO\n    }\n    if (resolvedLevel >= this.level) {\n      console.log(name, ...this.tags, ...args)\n    }\n  }\n\n  info = (...args: unknown[]): void => {\n    this.log(\"INFO\", ...args)\n  }\n\n  debug = (...args: unknown[]): void => {\n    this.log(\"DEBUG\", ...args)\n  }\n\n  warn = (...args: unknown[]): void => {\n    this.log(\"WARN\", ...args)\n  }\n\n  error =(...args: unknown[]): void => {\n    this.log(\"ERROR\", ...args)\n  }\n}\n\nexport const noopLogger: ConductorLogger = {\n  //eslint-disable-next-line\n  debug: (...args: unknown[]) => {},\n  //eslint-disable-next-line\n  info: (...args: unknown[]) => {},\n  //eslint-disable-next-line\n  warn: (...args: unknown[]) => {},\n  //eslint-disable-next-line\n  error: (...args: unknown[]) => {},\n};\n","export const DEFAULT_POLL_INTERVAL = 100;\nexport const DEFAULT_CONCURRENCY = 1;\nexport const DEFAULT_WARN_AT_O = 100;\nexport const DEFAULT_BATCH_POLLING_TIMEOUT = 100;\nexport const DEFAULT_ERROR_MESSAGE = \"An unknown error occurred\";\nexport const MAX_RETRIES = 4;\n\n// Adaptive backoff for empty polls (matching Python SDK)\n// Backoff sequence: 1ms, 2ms, 4ms, 8ms, 16ms, 32ms, 64ms, 128ms, 256ms, 512ms, 1024ms\n// Then capped at pollInterval\nexport const ADAPTIVE_BACKOFF_BASE_MS = 1;\nexport const ADAPTIVE_BACKOFF_MAX_EXPONENT = 10; // 2^10 = 1024ms cap\n\n// Auth failure backoff (matching Python SDK: 2^N seconds, capped at 60s)\nexport const AUTH_BACKOFF_MAX_SECONDS = 60;\n\n// Health monitoring\nexport const HEALTH_CHECK_INTERVAL_MS = 5000;\nexport const RESTART_BACKOFF_BASE_MS = 1000;\nexport const RESTART_BACKOFF_MAX_MS = 60000;\n\n// Lease extension (heartbeat) — matches Python SDK / Java SDK source\nexport const LEASE_EXTEND_RETRY_COUNT = 3;\nexport const LEASE_EXTEND_DURATION_FACTOR = 0.8;\nexport const HEARTBEAT_CHECK_INTERVAL_MS = 100;\nexport const HEARTBEAT_RETRY_DELAY_MS = 500;\n","import { ConductorLogger, noopLogger } from \"../../helpers/logger\";\nimport {\n  DEFAULT_POLL_INTERVAL,\n  DEFAULT_WARN_AT_O,\n  DEFAULT_CONCURRENCY,\n  ADAPTIVE_BACKOFF_BASE_MS,\n  ADAPTIVE_BACKOFF_MAX_EXPONENT,\n  AUTH_BACKOFF_MAX_SECONDS,\n} from \"./constants\";\nimport { PollerOptions } from \"./types\";\n\n/** HTTP status codes treated as auth failures */\nconst AUTH_HTTP_STATUS_CODES = [401, 403];\n\nexport class Poller<T> {\n  private timeoutHandler?: NodeJS.Timeout;\n  private pollFunction: (count: number) => Promise<T[] | undefined>;\n  private performWorkFunction: (work: T) => Promise<void>;\n  private polling = false;\n  private _tasksInProcess = 0;\n  private _counterAtO = 0;\n  private _pollerId = \"\";\n\n  // Adaptive backoff state\n  private _consecutiveEmptyPolls = 0;\n  private _lastPollTime = 0;\n\n  // Auth failure backoff state\n  private _authFailures = 0;\n  private _lastAuthFailureAt = 0;\n\n  options: PollerOptions = {\n    pollInterval: DEFAULT_POLL_INTERVAL,\n    concurrency: DEFAULT_CONCURRENCY,\n    warnAtO: DEFAULT_WARN_AT_O,\n    adaptiveBackoff: true,\n    paused: false,\n  };\n  logger: ConductorLogger = noopLogger;\n\n  constructor(\n    pollerId: string,\n    pollFunction: (count: number) => Promise<T[] | undefined>,\n    performWorkFunction: (work: T) => Promise<void>,\n    pollerOptions?: Partial<PollerOptions>,\n    logger?: ConductorLogger\n  ) {\n    this._pollerId = pollerId;\n    this.pollFunction = pollFunction;\n    this.performWorkFunction = performWorkFunction;\n    this.options = { ...this.options, ...pollerOptions };\n    this.logger = logger || noopLogger;\n\n    // Ensure concurrency is a valid number\n    if (\n      typeof this.options.concurrency !== \"number\" ||\n      isNaN(this.options.concurrency) ||\n      this.options.concurrency < 1\n    ) {\n      this.logger.info(\n        `Invalid concurrency value (${this.options.concurrency}) for poller ${pollerId}. Using default: ${DEFAULT_CONCURRENCY}`\n      );\n      this.options.concurrency = DEFAULT_CONCURRENCY;\n    }\n  }\n\n  get isPolling() {\n    return this.polling;\n  }\n\n  get tasksInProcess() {\n    return this._tasksInProcess;\n  }\n\n  get consecutiveEmptyPolls() {\n    return this._consecutiveEmptyPolls;\n  }\n\n  get authFailures() {\n    return this._authFailures;\n  }\n\n  /**\n   * Starts polling for work\n   */\n  startPolling = () => {\n    if (this.polling) {\n      throw new Error(\"Runner is already started\");\n    }\n    this._tasksInProcess = 0;\n    this._consecutiveEmptyPolls = 0;\n    this._authFailures = 0;\n    this._lastPollTime = 0;\n    this._lastAuthFailureAt = 0;\n    this.polling = true;\n    this.poll();\n  };\n\n  /**\n   * Stops Polling for work\n   */\n  stopPolling = async () => {\n    this.polling = false;\n    clearTimeout(this.timeoutHandler);\n  };\n\n  private performWork = async (work: T) => {\n    await this.performWorkFunction(work);\n    this._tasksInProcess--;\n  };\n\n  updateOptions(options: Partial<PollerOptions>) {\n    const newOptions = { ...this.options, ...options };\n    this.options = newOptions;\n  }\n\n  /**\n   * Detect if an error is an authentication/authorization failure.\n   */\n  private isAuthError(error: unknown): boolean {\n    if (!error || typeof error !== \"object\") return false;\n\n    // Check for status property\n    const errObj = error as Record<string, unknown>;\n    const status = errObj.status ?? errObj.statusCode;\n    if (typeof status === \"number\" && AUTH_HTTP_STATUS_CODES.includes(status)) {\n      return true;\n    }\n\n    // Check for response.status (fetch-style errors)\n    const response = errObj.response;\n    if (response && typeof response === \"object\") {\n      const respStatus = (response as Record<string, unknown>).status;\n      if (\n        typeof respStatus === \"number\" &&\n        AUTH_HTTP_STATUS_CODES.includes(respStatus)\n      ) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  /**\n   * Calculate adaptive backoff delay for empty polls.\n   *\n   * Matches Python SDK: min(BASE_MS * 2^min(count, MAX_EXPONENT), pollInterval)\n   * Sequence: 1ms, 2ms, 4ms, 8ms, 16ms, ... 1024ms, then capped at pollInterval\n   */\n  private calculateAdaptiveDelay(): number {\n    if (this._consecutiveEmptyPolls <= 0) return 0;\n    const capped = Math.min(\n      this._consecutiveEmptyPolls,\n      ADAPTIVE_BACKOFF_MAX_EXPONENT\n    );\n    const delay = ADAPTIVE_BACKOFF_BASE_MS * Math.pow(2, capped);\n    return Math.min(delay, this.options.pollInterval ?? DEFAULT_POLL_INTERVAL);\n  }\n\n  /**\n   * Calculate auth failure backoff delay in milliseconds.\n   *\n   * Matches Python SDK: min(2^failures, 60) seconds\n   */\n  private calculateAuthBackoffMs(): number {\n    if (this._authFailures <= 0) return 0;\n    const backoffSeconds = Math.min(\n      Math.pow(2, this._authFailures),\n      AUTH_BACKOFF_MAX_SECONDS\n    );\n    return backoffSeconds * 1000;\n  }\n\n  /** Promise-based sleep that resolves immediately if polling has stopped */\n  private sleep(ms: number): Promise<void> {\n    return new Promise((r) =>\n      this.isPolling\n        ? (this.timeoutHandler = setTimeout(() => r(), ms))\n        : r()\n    );\n  }\n\n  private poll = async () => {\n    while (this.isPolling) {\n      try {\n        // 1. PAUSED CHECK\n        if (this.options.paused) {\n          this.logger.debug(\n            `Worker ${this._pollerId} is paused, skipping poll`\n          );\n          await this.sleep(\n            this.options.pollInterval ?? DEFAULT_POLL_INTERVAL\n          );\n          continue;\n        }\n\n        // 2. AUTH FAILURE BACKOFF\n        if (this._authFailures > 0) {\n          const authBackoffMs = this.calculateAuthBackoffMs();\n          const timeSinceFailure = Date.now() - this._lastAuthFailureAt;\n          if (timeSinceFailure < authBackoffMs) {\n            this.logger.debug(\n              `Auth backoff active for ${this._pollerId}: ${Math.round(authBackoffMs - timeSinceFailure)}ms remaining (failures: ${this._authFailures})`\n            );\n            await this.sleep(\n              Math.min(100, authBackoffMs - timeSinceFailure)\n            );\n            continue;\n          }\n        }\n\n        // 3. CAPACITY CHECK\n        const rawCount =\n          (this.options.concurrency ?? DEFAULT_CONCURRENCY) -\n          this._tasksInProcess;\n        const count = Math.max(\n          0,\n          Number.isFinite(rawCount) ? rawCount : DEFAULT_CONCURRENCY\n        );\n\n        if (count === 0 || !Number.isFinite(count)) {\n          this.logger.debug(\n            \"Max in process reached, Will skip polling for \" + this._pollerId\n          );\n          this._counterAtO++;\n          if (this._counterAtO > (this.options.warnAtO ?? 100)) {\n            this.logger.info(\n              `Not polling anything because in process tasks is maxed as concurrency level. ${this._pollerId}`\n            );\n          }\n        } else {\n          // 4. ADAPTIVE BACKOFF for empty polls\n          if (\n            this.options.adaptiveBackoff !== false &&\n            this._consecutiveEmptyPolls > 0\n          ) {\n            const adaptiveDelay = this.calculateAdaptiveDelay();\n            const timeSinceLastPoll = Date.now() - this._lastPollTime;\n            if (timeSinceLastPoll < adaptiveDelay) {\n              await this.sleep(adaptiveDelay - timeSinceLastPoll);\n              continue;\n            }\n          }\n\n          // 5. POLL\n          this._counterAtO = 0;\n          this._lastPollTime = Date.now();\n          const tasksResult: T[] | undefined =\n            await this.pollFunction(count);\n          this._tasksInProcess =\n            this._tasksInProcess + (tasksResult ?? []).length;\n\n          if (tasksResult && tasksResult.length > 0) {\n            // Tasks received — reset counters\n            this._consecutiveEmptyPolls = 0;\n          } else {\n            // No tasks — increment empty poll counter\n            this._consecutiveEmptyPolls++;\n          }\n\n          // Successful poll (even if empty) — reset auth failures\n          this._authFailures = 0;\n\n          // 6. DISPATCH (fire-and-forget)\n          tasksResult?.forEach(this.performWork);\n        }\n      } catch (error: unknown) {\n        if (this.isAuthError(error)) {\n          this._authFailures++;\n          this._lastAuthFailureAt = Date.now();\n          this.logger.error(\n            `Auth failure (${this._authFailures}) polling for ${this._pollerId}: ${\n              error instanceof Error ? error.message : \"Unknown error\"\n            }`\n          );\n        } else {\n          this.logger.error(\n            `Error polling for tasks: ${\n              error instanceof Error ? error.message : \"Unknown error\"\n            }`,\n            error\n          );\n        }\n      }\n\n      // 7. SLEEP between poll cycles\n      await this.sleep(\n        this.options.pollInterval ?? DEFAULT_POLL_INTERVAL\n      );\n    }\n  };\n}\n","import type { ConductorLogger } from \"../../helpers/logger\";\nimport type { Task, TaskResult } from \"../../../open-api\";\nimport type { Client } from \"../../../open-api/generated/client/types.gen\";\nimport type { TaskRunnerEventsListener } from \"./events\";\n\nexport type TaskErrorHandler = (error: Error, task?: Task) => void;\n\n/**\n * Return type for long-running tasks.\n *\n * When a worker returns this, the task is sent to Conductor with IN_PROGRESS status\n * and Conductor will re-queue the task after `callbackAfterSeconds`.\n *\n * @example\n * ```typescript\n * @worker({ taskDefName: \"long_running_task\" })\n * async function longTask(task: Task): Promise<TaskInProgressResult | TaskResult> {\n *   if (!isReady()) {\n *     return { status: \"IN_PROGRESS\", callbackAfterSeconds: 30, outputData: { progress: 50 } };\n *   }\n *   return { status: \"COMPLETED\", outputData: { result: \"done\" } };\n * }\n * ```\n */\nexport interface TaskInProgressResult {\n  status: \"IN_PROGRESS\";\n  callbackAfterSeconds: number;\n  outputData?: Record<string, unknown>;\n}\n\n/**\n * Type guard for TaskInProgressResult.\n */\nexport function isTaskInProgress(\n  result: unknown\n): result is TaskInProgressResult {\n  return (\n    typeof result === \"object\" &&\n    result !== null &&\n    \"status\" in result &&\n    (result as Record<string, unknown>).status === \"IN_PROGRESS\" &&\n    \"callbackAfterSeconds\" in result &&\n    typeof (result as Record<string, unknown>).callbackAfterSeconds === \"number\"\n  );\n}\n\nexport interface ConductorWorker {\n  taskDefName: string;\n  execute: (\n    task: Task\n  ) => Promise<\n    Omit<TaskResult, \"workflowInstanceId\" | \"taskId\"> | TaskInProgressResult\n  >;\n  domain?: string;\n  /** Number of polling instances to run concurrently */\n  concurrency?: number;\n  pollInterval?: number;\n  /** Enable automatic lease extension (heartbeat) for long-running tasks. Default: false. */\n  leaseExtendEnabled?: boolean;\n}\n\nexport interface TaskRunnerOptions {\n  workerID: string;\n  domain: string | undefined;\n  pollInterval?: number;\n  concurrency?: number;\n  batchPollingTimeout?: number;\n}\n\nexport interface RunnerArgs {\n  worker: ConductorWorker;\n  client: Client;\n  options: TaskRunnerOptions;\n  logger?: ConductorLogger;\n  onError?: TaskErrorHandler;\n  concurrency?: number;\n  maxRetries?: number;\n  eventListeners?: TaskRunnerEventsListener[];\n}\n\nexport interface PollerOptions {\n  pollInterval?: number;\n  concurrency: number;\n  warnAtO?: number;\n  /** Enable adaptive backoff for empty polls (default: true) */\n  adaptiveBackoff?: boolean;\n  /** Whether this poller is paused (default: false) */\n  paused?: boolean;\n}\n\n/**\n * Configuration for health monitoring of worker processes.\n */\nexport interface HealthMonitorConfig {\n  /** Interval between health checks in ms (default: 5000) */\n  healthCheckIntervalMs?: number;\n  /** Maximum restart attempts, 0 = unlimited (default: 0) */\n  maxRestartAttempts?: number;\n  /** Whether health monitoring is enabled (default: true) */\n  enabled?: boolean;\n}\n\nexport type TaskManagerOptions = TaskRunnerOptions;\n\nexport interface TaskManagerConfig {\n  logger?: ConductorLogger;\n  options?: Partial<TaskManagerOptions>;\n  onError?: TaskErrorHandler;\n  maxRetries?: number;\n  eventListeners?: TaskRunnerEventsListener[];\n}\n\nexport type OptionEntries = [\n  keyof TaskRunnerOptions,\n  string | number | undefined\n][];\n","import os from \"os\";\nimport {\n  OptionEntries,\n  TaskErrorHandler,\n  TaskManagerOptions,\n  TaskRunnerOptions,\n} from \"./types\";\n\n/**\n * Compares if the new options are really new\n * @param oldOptions\n * @param newOptions\n */\nexport const optionEquals = (\n  oldOptions: Partial<TaskRunnerOptions>,\n  newOptions: Partial<TaskRunnerOptions>\n) => {\n  const newOptionEntries = Object.entries(newOptions) as OptionEntries;\n  const oldOptionsEntries = Object.entries(oldOptions) as OptionEntries;\n\n  return (\n    newOptionEntries.length === oldOptionsEntries.length &&\n    newOptionEntries.every(\n      ([key, value]) => (oldOptions[key] as unknown) === value\n    )\n  );\n};\n\nexport function getWorkerId(options: Partial<TaskManagerOptions>) {\n  return options.workerID ?? os.hostname();\n}\n\n//eslint-disable-next-line\nexport const noopErrorHandler: TaskErrorHandler = (error: Error) => {};\n","import type { ConductorLogger } from \"../../../helpers/logger\";\nimport type {\n  TaskRunnerEvent,\n  PollStarted,\n  PollCompleted,\n  PollFailure,\n  TaskExecutionStarted,\n  TaskExecutionCompleted,\n  TaskExecutionFailure,\n  TaskUpdateCompleted,\n  TaskUpdateFailure,\n} from \"./types\";\n\n/**\n * Interface for task runner event listeners.\n * \n * All methods are optional - implement only the events you need to handle.\n * Listener failures are isolated and will not affect task execution.\n */\nexport interface TaskRunnerEventsListener {\n  /**\n   * Called when task polling begins.\n   */\n  onPollStarted?(event: PollStarted): void | Promise<void>;\n\n  /**\n   * Called when task polling completes successfully.\n   */\n  onPollCompleted?(event: PollCompleted): void | Promise<void>;\n\n  /**\n   * Called when task polling fails.\n   */\n  onPollFailure?(event: PollFailure): void | Promise<void>;\n\n  /**\n   * Called when task execution begins.\n   */\n  onTaskExecutionStarted?(event: TaskExecutionStarted): void | Promise<void>;\n\n  /**\n   * Called when task execution completes successfully.\n   */\n  onTaskExecutionCompleted?(\n    event: TaskExecutionCompleted\n  ): void | Promise<void>;\n\n  /**\n   * Called when task execution fails.\n   */\n  onTaskExecutionFailure?(event: TaskExecutionFailure): void | Promise<void>;\n\n  /**\n   * Called when task update completes successfully.\n   */\n  onTaskUpdateCompleted?(event: TaskUpdateCompleted): void | Promise<void>;\n\n  /**\n   * Called when task update fails after all retry attempts.\n   * This is a CRITICAL event that may require operational intervention.\n   */\n  onTaskUpdateFailure?(event: TaskUpdateFailure): void | Promise<void>;\n}\n\n/**\n * Event dispatcher for task runner events.\n * \n * Provides a decoupled event system for observability and metrics collection.\n * Events are published asynchronously and listener failures are isolated.\n */\nexport class EventDispatcher {\n  private listeners: TaskRunnerEventsListener[] = [];\n  private logger?: ConductorLogger;\n\n  constructor(logger?: ConductorLogger) {\n    this.logger = logger;\n  }\n\n  /**\n   * Register an event listener.\n   * \n   * @param listener - The listener to register\n   */\n  register(listener: TaskRunnerEventsListener): void {\n    this.listeners.push(listener);\n  }\n\n  /**\n   * Unregister an event listener.\n   * \n   * @param listener - The listener to unregister\n   */\n  unregister(listener: TaskRunnerEventsListener): void {\n    const index = this.listeners.indexOf(listener);\n    if (index !== -1) {\n      this.listeners.splice(index, 1);\n    }\n  }\n\n  /**\n   * Publish a PollStarted event.\n   */\n  async publishPollStarted(event: PollStarted): Promise<void> {\n    await this.publishEvent(\"onPollStarted\", event);\n  }\n\n  /**\n   * Publish a PollCompleted event.\n   */\n  async publishPollCompleted(event: PollCompleted): Promise<void> {\n    await this.publishEvent(\"onPollCompleted\", event);\n  }\n\n  /**\n   * Publish a PollFailure event.\n   */\n  async publishPollFailure(event: PollFailure): Promise<void> {\n    await this.publishEvent(\"onPollFailure\", event);\n  }\n\n  /**\n   * Publish a TaskExecutionStarted event.\n   */\n  async publishTaskExecutionStarted(\n    event: TaskExecutionStarted\n  ): Promise<void> {\n    await this.publishEvent(\"onTaskExecutionStarted\", event);\n  }\n\n  /**\n   * Publish a TaskExecutionCompleted event.\n   */\n  async publishTaskExecutionCompleted(\n    event: TaskExecutionCompleted\n  ): Promise<void> {\n    await this.publishEvent(\"onTaskExecutionCompleted\", event);\n  }\n\n  /**\n   * Publish a TaskExecutionFailure event.\n   */\n  async publishTaskExecutionFailure(\n    event: TaskExecutionFailure\n  ): Promise<void> {\n    await this.publishEvent(\"onTaskExecutionFailure\", event);\n  }\n\n  /**\n   * Publish a TaskUpdateCompleted event.\n   */\n  async publishTaskUpdateCompleted(event: TaskUpdateCompleted): Promise<void> {\n    await this.publishEvent(\"onTaskUpdateCompleted\", event);\n  }\n\n  /**\n   * Publish a TaskUpdateFailure event.\n   */\n  async publishTaskUpdateFailure(event: TaskUpdateFailure): Promise<void> {\n    await this.publishEvent(\"onTaskUpdateFailure\", event);\n  }\n\n  /**\n   * Internal method to publish events to all registered listeners.\n   * Listener failures are caught and logged to prevent affecting task execution.\n   */\n  private async publishEvent<K extends keyof TaskRunnerEventsListener>(\n    method: K,\n    event: TaskRunnerEvent\n  ): Promise<void> {\n    // Early return if no listeners registered (zero overhead)\n    if (this.listeners.length === 0) {\n      return;\n    }\n\n    // Publish to all listeners asynchronously\n    const promises = this.listeners\n      .filter((listener) => listener[method])\n      .map(async (listener) => {\n        try {\n          const handler = listener[method];\n          if (handler) {\n            await handler.call(listener, event as never);\n          }\n        } catch (error) {\n          // Isolate listener failures - don't affect task execution\n          const msg = `Event listener failed for ${method}: ${error instanceof Error ? error.message : error}`;\n          if (this.logger) {\n            this.logger.error(msg);\n          } else {\n            console.error(msg);\n          }\n        }\n      });\n\n    // Wait for all listeners to complete (or fail)\n    await Promise.allSettled(promises);\n  }\n}\n","/**\n * Custom exception types for worker error handling.\n */\n\n/**\n * Exception indicating a non-retryable task failure.\n * \n * When thrown from a worker's execute function, the task will be marked as\n * FAILED_WITH_TERMINAL_ERROR and will NOT be retried, regardless of the\n * task definition's retry_count setting.\n * \n * Use this for permanent failures where retry would produce the same result:\n * - Business validation failures (invalid data format)\n * - Authorization failures (user lacks permission)\n * - Resource not found (entity doesn't exist)\n * - Configuration errors (missing required config)\n * - Data integrity violations (constraint violations)\n * - Unsupported operations (feature not available)\n * \n * @example\n * ```typescript\n * async function validateOrder(task: Task) {\n *   const order = await getOrder(task.inputData.orderId);\n *   \n *   if (!order) {\n *     // Order doesn't exist - retry won't help\n *     throw new NonRetryableException(`Order ${task.inputData.orderId} not found`);\n *   }\n *   \n *   if (order.status === 'CANCELLED') {\n *     // Business rule - retry won't help\n *     throw new NonRetryableException('Cannot process cancelled order');\n *   }\n *   \n *   return { status: 'COMPLETED', outputData: { validated: true } };\n * }\n * ```\n */\nexport class NonRetryableException extends Error {\n  constructor(message: string) {\n    super(message);\n    this.name = \"NonRetryableException\";\n    \n    // Maintains proper stack trace for where our error was thrown (only available on V8)\n    if (Error.captureStackTrace) {\n      Error.captureStackTrace(this, NonRetryableException);\n    }\n  }\n}\n","import type { Task } from \"../../../open-api\";\nimport type { ConductorLogger } from \"../../helpers/logger\";\nimport {\n  HEARTBEAT_CHECK_INTERVAL_MS,\n  HEARTBEAT_RETRY_DELAY_MS,\n  LEASE_EXTEND_DURATION_FACTOR,\n  LEASE_EXTEND_RETRY_COUNT,\n} from \"./constants\";\n\nexport interface LeaseInfo {\n  readonly taskId: string;\n  readonly workflowInstanceId: string;\n  readonly responseTimeoutSeconds: number;\n  /** Date.now() at task start or last successful heartbeat. Managed internally by LeaseTracker. */\n  readonly lastHeartbeatTime: number;\n  readonly intervalMs: number;\n  /** True while a heartbeat chain is in-flight. Managed internally by LeaseTracker. */\n  readonly isHeartbeating: boolean;\n}\n\n/** Mutable view used only inside LeaseTracker. */\ntype MutableLeaseInfo = { -readonly [K in keyof LeaseInfo]: LeaseInfo[K] };\n\n/**\n * Tracks active task leases and sends periodic heartbeats to keep them alive.\n *\n * The check interval (100ms) runs independently of the polling loop — heartbeats\n * fire even when all concurrency slots are occupied.\n *\n * Python SDK parity:\n *   - LEASE_EXTEND_DURATION_FACTOR = 0.8  (80% of responseTimeoutSeconds)\n *   - LEASE_EXTEND_RETRY_COUNT = 3\n *   - interval < 1000ms → skip tracking  (matches Python `if interval < 1: return`)\n *   - Heartbeat uses v1 updateTask endpoint, not v2\n */\nexport class LeaseTracker {\n  private leases = new Map<string, MutableLeaseInfo>();\n  private timer: ReturnType<typeof setInterval> | null = null;\n\n  constructor(\n    /**\n     * Injected from TaskRunner. Calls TaskResource.updateTask (v1) with extendLease=true.\n     * workerId is added by the closure in TaskRunner, not by LeaseTracker.\n     */\n    private readonly sendHeartbeatFn: (\n      taskId: string,\n      workflowInstanceId: string\n    ) => Promise<void>,\n    private readonly logger: ConductorLogger\n  ) {}\n\n  /**\n   * Track a task lease.\n   * No-op if responseTimeoutSeconds is falsy or computed interval < 1000ms.\n   */\n  track(task: Task): void {\n    const timeout = task.responseTimeoutSeconds;\n    if (!timeout || timeout <= 0) return;\n\n    const intervalMs = timeout * LEASE_EXTEND_DURATION_FACTOR * 1000;\n    if (intervalMs < 1000) return;\n\n    if (!task.taskId || !task.workflowInstanceId) return;\n\n    this.leases.set(task.taskId, {\n      taskId: task.taskId,\n      workflowInstanceId: task.workflowInstanceId,\n      responseTimeoutSeconds: timeout,\n      lastHeartbeatTime: Date.now(),\n      intervalMs,\n      isHeartbeating: false,\n    });\n  }\n\n  /** Remove a task from lease tracking. No-op if taskId is not tracked. */\n  untrack(taskId: string): void {\n    this.leases.delete(taskId);\n  }\n\n  /**\n   * Start the heartbeat check interval.\n   * Idempotent — safe to call multiple times.\n   */\n  start(): void {\n    if (this.timer !== null) return;\n    this.timer = setInterval(() => {\n      void this.sendDueHeartbeats();\n    }, HEARTBEAT_CHECK_INTERVAL_MS);\n    // Prevent the interval from blocking clean process exit\n    this.timer.unref?.();\n  }\n\n  /** Stop the heartbeat check interval. */\n  stop(): void {\n    if (this.timer !== null) {\n      clearInterval(this.timer);\n      this.timer = null;\n    }\n  }\n\n  private async sendDueHeartbeats(): Promise<void> {\n    const now = Date.now();\n    for (const [, info] of this.leases as Map<string, MutableLeaseInfo>) {\n      // isHeartbeating guard prevents concurrent heartbeat chains for the same task\n      // (the 100ms check interval would otherwise launch a new chain every tick while retries are in flight)\n      if (now - info.lastHeartbeatTime >= info.intervalMs && !info.isHeartbeating) {\n        info.isHeartbeating = true;\n        void this.sendHeartbeat(info);\n      }\n    }\n  }\n\n  private async sendHeartbeat(info: MutableLeaseInfo): Promise<void> {\n    try {\n      for (let attempt = 0; attempt < LEASE_EXTEND_RETRY_COUNT; attempt++) {\n        try {\n          await this.sendHeartbeatFn(info.taskId, info.workflowInstanceId);\n          // Update timestamp only on success, only if still the current entry\n          if (this.leases.get(info.taskId) === info) {\n            info.lastHeartbeatTime = Date.now();\n          }\n          return;\n        } catch (err) {\n          this.logger.error(\n            `Heartbeat attempt ${attempt + 1}/${LEASE_EXTEND_RETRY_COUNT} failed for task ${info.taskId}: ${(err as Error)?.message ?? String(err)}`\n          );\n          if (attempt < LEASE_EXTEND_RETRY_COUNT - 1) {\n            await new Promise((resolve) => setTimeout(resolve, HEARTBEAT_RETRY_DELAY_MS));\n          }\n        }\n      }\n      // All retries exhausted — log but do not remove from tracking or fail the task\n      this.logger.error(\n        `All ${LEASE_EXTEND_RETRY_COUNT} heartbeat retries exhausted for task ${info.taskId}. Task may timeout on server.`\n      );\n    } finally {\n      // Only release guard if we're still the current entry for this taskId\n      if (this.leases.get(info.taskId) === info) {\n        info.isHeartbeating = false;\n      }\n    }\n  }\n}\n","import { AsyncLocalStorage } from \"node:async_hooks\";\nimport type { Task, TaskExecLog } from \"../../../open-api\";\n\n/**\n * TaskContext provides async-local context during task execution.\n *\n * This is the JavaScript equivalent of Python's contextvars-based\n * `get_task_context()`. Each task execution runs in its own async context,\n * so `getTaskContext()` returns the context for the currently executing task.\n *\n * @example\n * ```typescript\n * @worker({ taskDefName: \"my_task\" })\n * async function myTask(task: Task) {\n *   const ctx = getTaskContext();\n *   ctx?.addLog(\"Starting processing\");\n *\n *   if (needsMoreTime) {\n *     ctx?.setCallbackAfter(30);\n *     return { status: \"IN_PROGRESS\", callbackAfterSeconds: 30 };\n *   }\n *\n *   return { status: \"COMPLETED\", outputData: { result: \"done\" } };\n * }\n * ```\n */\nexport class TaskContext {\n  private _task: Task;\n  private _logs: TaskExecLog[] = [];\n  private _callbackAfterSeconds?: number;\n  private _output?: Record<string, unknown>;\n\n  constructor(task: Task) {\n    this._task = task;\n  }\n\n  /** Get the task ID */\n  getTaskId(): string | undefined {\n    return this._task.taskId;\n  }\n\n  /** Get the workflow instance ID */\n  getWorkflowInstanceId(): string | undefined {\n    return this._task.workflowInstanceId;\n  }\n\n  /** Get the retry count for this task (0 for first attempt) */\n  getRetryCount(): number {\n    return this._task.retryCount ?? 0;\n  }\n\n  /** Get the poll count for this task */\n  getPollCount(): number {\n    return this._task.pollCount ?? 0;\n  }\n\n  /** Get the full task input data */\n  getInput(): Record<string, unknown> {\n    return this._task.inputData ?? {};\n  }\n\n  /** Get the task definition name */\n  getTaskDefName(): string | undefined {\n    return this._task.taskDefName;\n  }\n\n  /** Get the workflow task type (e.g., SIMPLE, HTTP, SUB_WORKFLOW) */\n  getWorkflowTaskType(): string | undefined {\n    return this._task.taskType;\n  }\n\n  /** Get the full task object */\n  getTask(): Task {\n    return this._task;\n  }\n\n  /**\n   * Add an execution log entry.\n   * Logs are merged into the task result when execution completes.\n   */\n  addLog(message: string): void {\n    this._logs.push({\n      log: message,\n      createdTime: Date.now(),\n      taskId: this._task.taskId,\n    });\n  }\n\n  /** Get all accumulated logs */\n  getLogs(): TaskExecLog[] {\n    return [...this._logs];\n  }\n\n  /**\n   * Set callback-after seconds.\n   * Tells Conductor to re-queue the task after the specified number of seconds.\n   */\n  setCallbackAfter(seconds: number): void {\n    this._callbackAfterSeconds = seconds;\n  }\n\n  /** Get the callback-after value (if set) */\n  getCallbackAfterSeconds(): number | undefined {\n    return this._callbackAfterSeconds;\n  }\n\n  /**\n   * Set intermediate output data.\n   * Merged into the final task result.\n   */\n  setOutput(data: Record<string, unknown>): void {\n    this._output = data;\n  }\n\n  /** Get intermediate output data (if set) */\n  getOutput(): Record<string, unknown> | undefined {\n    return this._output;\n  }\n}\n\n// AsyncLocalStorage instance — one per process\nconst taskContextStorage = new AsyncLocalStorage<TaskContext>();\n\n/**\n * Get the current task context.\n *\n * Must be called from within a task execution callback.\n * Returns `undefined` if called outside of a task execution.\n */\nexport function getTaskContext(): TaskContext | undefined {\n  return taskContextStorage.getStore();\n}\n\n/**\n * Run a function within a task context.\n * Used internally by TaskRunner to wrap task execution.\n *\n * @internal\n */\nexport function runWithTaskContext<T>(\n  task: Task,\n  fn: (ctx: TaskContext) => Promise<T>\n): Promise<T> {\n  const context = new TaskContext(task);\n  return taskContextStorage.run(context, () => fn(context));\n}\n","import { ConductorLogger, noopLogger } from \"../../helpers/logger\";\nimport type { Client, Task, TaskResult } from \"../../../open-api\";\nimport { TaskResource } from \"../../../open-api/generated\";\nimport { Poller } from \"./Poller\";\nimport {\n  DEFAULT_POLL_INTERVAL,\n  DEFAULT_BATCH_POLLING_TIMEOUT,\n  DEFAULT_CONCURRENCY,\n  MAX_RETRIES,\n  DEFAULT_ERROR_MESSAGE,\n} from \"./constants\";\nimport {\n  TaskErrorHandler,\n  TaskRunnerOptions,\n  RunnerArgs,\n  ConductorWorker,\n  isTaskInProgress,\n} from \"./types\";\nimport { noopErrorHandler, optionEquals } from \"./helpers\";\nimport { EventDispatcher } from \"./events/EventDispatcher\";\nimport { NonRetryableException } from \"./exceptions\";\nimport { LeaseTracker } from \"./LeaseTracker\";\nimport { runWithTaskContext } from \"../../worker/context\";\n\nconst defaultRunnerOptions: Required<TaskRunnerOptions> = {\n  workerID: \"\",\n  pollInterval: DEFAULT_POLL_INTERVAL,\n  domain: undefined,\n  concurrency: DEFAULT_CONCURRENCY,\n  batchPollingTimeout: DEFAULT_BATCH_POLLING_TIMEOUT,\n};\n\n/**\n * Responsible for polling and executing tasks from a queue.\n *\n * Because a `poll` in conductor \"pops\" a task off of a conductor queue,\n * each runner participates in the poll -> work -> update loop.\n * We could potentially split this work into a separate \"poller\" and \"worker\" pools\n * but that could lead to picking up more work than the pool of workers are actually able to handle.\n *\n */\nexport class TaskRunner {\n  _client: Client;\n  worker: ConductorWorker;\n  private logger: ConductorLogger;\n  private options: TaskRunnerOptions;\n  errorHandler: TaskErrorHandler;\n  private poller: Poller<Task>;\n  private maxRetries: number;\n  private eventDispatcher: EventDispatcher;\n  private leaseTracker: LeaseTracker;\n\n  constructor({\n    worker,\n    client,\n    options,\n    logger = noopLogger,\n    onError: errorHandler = noopErrorHandler,\n    maxRetries = MAX_RETRIES,\n    eventListeners = [],\n  }: RunnerArgs) {\n    this._client = client;\n    this.maxRetries = maxRetries;\n    this.logger = logger;\n    this.worker = worker;\n    this.options = { ...defaultRunnerOptions, ...options };\n    this.errorHandler = errorHandler;\n\n    // Initialize event dispatcher and register listeners\n    this.eventDispatcher = new EventDispatcher(this.logger);\n    eventListeners.forEach((listener) => {\n      this.eventDispatcher.register(listener);\n    });\n\n    this.leaseTracker = new LeaseTracker(\n      async (taskId: string, workflowInstanceId: string) => {\n        await TaskResource.updateTask({\n          client: this._client,\n          body: {\n            taskId,\n            workflowInstanceId,\n            status: \"IN_PROGRESS\",\n            extendLease: true,\n            workerId: this.options.workerID,\n          },\n          throwOnError: true,\n        });\n      },\n      this.logger\n    );\n\n    this.poller = new Poller(\n      worker.taskDefName,\n      this.batchPoll,\n      this.executeTask,\n      {\n        concurrency: worker.concurrency ?? this.options.concurrency,\n        pollInterval: worker.pollInterval ?? this.options.pollInterval,\n      },\n      this.logger\n    );\n  }\n\n  get isPolling() {\n    return this.poller.isPolling;\n  }\n\n  /**\n   * Starts polling for work\n   */\n  startPolling = () => {\n    this.leaseTracker.start();\n    this.poller.startPolling();\n    this.logger.info(\n      `TaskWorker ${this.worker.taskDefName} initialized with concurrency of ${this.poller.options.concurrency} and poll interval of ${this.poller.options.pollInterval}`\n    );\n  };\n  /**\n   * Stops Polling for work\n   */\n  stopPolling = async () => {\n    this.leaseTracker.stop();\n    await this.poller.stopPolling();\n  };\n\n  updateOptions(options: Partial<TaskRunnerOptions>) {\n    const newOptions = { ...this.options, ...options };\n    const isOptionsUpdated = !optionEquals(this.options, newOptions);\n\n    if (isOptionsUpdated) {\n      this.poller.updateOptions({\n        concurrency: newOptions.concurrency,\n        pollInterval: newOptions.pollInterval,\n      });\n      this.logger.info(\n        `TaskWorker ${this.worker.taskDefName} configuration updated with concurrency of ${this.poller.options.concurrency} and poll interval of ${this.poller.options.pollInterval}`\n      );\n    }\n\n    this.options = newOptions;\n  }\n\n  /** Pause or unpause the worker's polling */\n  setPaused(paused: boolean): void {\n    this.poller.updateOptions({ paused });\n    this.logger.info(\n      `Worker ${this.worker.taskDefName} ${paused ? \"paused\" : \"resumed\"}`\n    );\n  }\n\n  get isPaused(): boolean {\n    return this.poller.options.paused ?? false;\n  }\n\n  get getOptions(): TaskRunnerOptions {\n    return this.options;\n  }\n\n  private batchPoll = async (count: number): Promise<Task[] | undefined> => {\n    const { workerID } = this.options;\n    const startTime = Date.now();\n\n    // Publish PollStarted event\n    await this.eventDispatcher.publishPollStarted({\n      taskType: this.worker.taskDefName,\n      workerId: workerID,\n      pollCount: count,\n      timestamp: new Date(),\n    });\n\n    try {\n      const { data: tasks } = await TaskResource.batchPoll({\n        client: this._client,\n        path: {\n          tasktype: this.worker.taskDefName,\n        },\n        query: {\n          workerid: workerID,\n          domain: this.worker.domain ?? this.options.domain,\n          count,\n          timeout: this.options.batchPollingTimeout ?? 100,\n        },\n      });\n\n      const durationMs = Date.now() - startTime;\n\n      // Publish PollCompleted event\n      await this.eventDispatcher.publishPollCompleted({\n        taskType: this.worker.taskDefName,\n        durationMs,\n        tasksReceived: tasks?.length ?? 0,\n        timestamp: new Date(),\n      });\n\n      return tasks;\n    } catch (error) {\n      const durationMs = Date.now() - startTime;\n\n      // Publish PollFailure event\n      await this.eventDispatcher.publishPollFailure({\n        taskType: this.worker.taskDefName,\n        durationMs,\n        cause: error as Error,\n        timestamp: new Date(),\n      });\n\n      throw error;\n    }\n  };\n\n  /**\n   * Probed once per process. null = unknown, true = v2 endpoint available,\n   * false = legacy server (no /api/tasks/update-v2 endpoint).\n   */\n  private static updateV2Available: boolean | null = null;\n\n  updateTaskWithRetry = async (\n    task: Task,\n    taskResult: TaskResult\n  ): Promise<Task | undefined> => {\n    const { workerID } = this.options;\n    let retryCount = 0;\n    let lastError: Error | null = null;\n\n    while (retryCount < this.maxRetries) {\n      try {\n        if (process.env.CI) {\n          console.log(\n            `[TaskRunner] Submitting task result taskId=${taskResult.taskId} workflowId=${taskResult.workflowInstanceId} taskType=${this.worker.taskDefName} attempt=${retryCount + 1}/${this.maxRetries}`\n          );\n        }\n        const updateStart = Date.now();\n\n        if (TaskRunner.updateV2Available === false) {\n          // Already detected a legacy server — skip the probe, call legacy directly.\n          await TaskResource.updateTask({\n            client: this._client,\n            body: { ...taskResult, workerId: workerID },\n            throwOnError: true,\n          });\n          const updateDurationMs = Date.now() - updateStart;\n          if (process.env.CI) {\n            console.log(\n              `[TaskRunner] Task result accepted (legacy) taskId=${taskResult.taskId} durationMs=${updateDurationMs}`\n            );\n          }\n          await this.eventDispatcher.publishTaskUpdateCompleted({\n            taskType: this.worker.taskDefName,\n            taskId: taskResult.taskId ?? \"\",\n            workerId: workerID,\n            workflowInstanceId: taskResult.workflowInstanceId,\n            durationMs: updateDurationMs,\n            timestamp: new Date(),\n          });\n          // Legacy /api/tasks does not return a next task for chaining.\n          return undefined;\n        }\n\n        // Try v2 endpoint (preferred: supports task chaining).\n        // Use throwOnError: false so we can inspect the HTTP status directly\n        // and fall back on 404/405 without consuming a retry slot.\n        const {\n          data: nextTask,\n          error,\n          response,\n        } = await TaskResource.updateTaskV2({\n          client: this._client,\n          body: { ...taskResult, workerId: workerID },\n          throwOnError: false,\n        });\n\n        if (response.status === 404 || response.status === 405) {\n          // Endpoint absent or wrong method — switch to legacy for all future calls.\n          if (TaskRunner.updateV2Available === null) {\n            console.log(\n              `[TaskRunner] /api/tasks/update-v2 not available (HTTP ${response.status}), ` +\n                `falling back to legacy /api/tasks endpoint`\n            );\n            TaskRunner.updateV2Available = false;\n          }\n          // Immediately fall back without counting this as a retry failure.\n          await TaskResource.updateTask({\n            client: this._client,\n            body: { ...taskResult, workerId: workerID },\n            throwOnError: true,\n          });\n          const updateDurationMs = Date.now() - updateStart;\n          if (process.env.CI) {\n            console.log(\n              `[TaskRunner] Task result accepted (legacy) taskId=${taskResult.taskId} durationMs=${updateDurationMs}`\n            );\n          }\n          await this.eventDispatcher.publishTaskUpdateCompleted({\n            taskType: this.worker.taskDefName,\n            taskId: taskResult.taskId ?? \"\",\n            workerId: workerID,\n            workflowInstanceId: taskResult.workflowInstanceId,\n            durationMs: updateDurationMs,\n            timestamp: new Date(),\n          });\n          return undefined;\n        }\n\n        if (!response.ok) {\n          throw (\n            (error as Error | undefined) ??\n            new Error(`Task update failed with HTTP ${response.status}`)\n          );\n        }\n\n        // v2 success — record capability on first probe\n        if (TaskRunner.updateV2Available === null) {\n          TaskRunner.updateV2Available = true;\n        }\n        const updateDurationMs = Date.now() - updateStart;\n        if (process.env.CI) {\n          console.log(\n            `[TaskRunner] Task result accepted taskId=${taskResult.taskId} durationMs=${updateDurationMs}`\n          );\n        }\n        await this.eventDispatcher.publishTaskUpdateCompleted({\n          taskType: this.worker.taskDefName,\n          taskId: taskResult.taskId ?? \"\",\n          workerId: workerID,\n          workflowInstanceId: taskResult.workflowInstanceId,\n          durationMs: updateDurationMs,\n          timestamp: new Date(),\n        });\n        return nextTask ?? undefined;\n      } catch (error: unknown) {\n        lastError = error as Error;\n        this.errorHandler(lastError, task);\n        this.logger.error(\n          `Error updating task ${taskResult.taskId} on retry ${retryCount + 1}/${this.maxRetries}`,\n          error\n        );\n        console.log(\n          `[TaskRunner] Task update failed taskId=${taskResult.taskId} attempt=${retryCount + 1}/${this.maxRetries} error=${(lastError as Error)?.message ?? String(error)}`\n        );\n        retryCount++;\n\n        if (retryCount < this.maxRetries) {\n          // Exponential backoff: 10s, 20s, 30s\n          const delayMs = retryCount * 10 * 1000;\n          await new Promise((r) => setTimeout(() => r(true), delayMs));\n        }\n      }\n    }\n\n    // All retries exhausted - publish critical TaskUpdateFailure event\n    this.logger.error(\n      `CRITICAL: Task update failed after ${retryCount} retries. Task result LOST for task_id=${taskResult.taskId}`\n    );\n\n    await this.eventDispatcher.publishTaskUpdateFailure({\n      taskType: this.worker.taskDefName,\n      taskId: taskResult.taskId ?? \"\",\n      workerId: workerID,\n      workflowInstanceId: taskResult.workflowInstanceId,\n      cause: lastError ?? new Error(\"Task update failed after all retries\"),\n      retryCount,\n      taskResult,\n      timestamp: new Date(),\n    });\n\n    return undefined;\n  };\n\n  private isValidTask(task: Task): boolean {\n    return !!(task.workflowInstanceId && task.taskId);\n  }\n\n  /**\n   * Entry point for task execution with V2 chaining.\n   *\n   * When updateTaskV2 returns a next task in its response, we immediately\n   * execute it without going back through the poll cycle. This eliminates\n   * one HTTP round-trip + sleep per task when there is a backlog.\n   */\n  private executeTask = async (task: Task) => {\n    let currentTask: Task | undefined = task;\n\n    while (currentTask) {\n      if (!this.isValidTask(currentTask)) {\n        this.logger.error(\n          `Task missing required fields: workflowInstanceId=${currentTask.workflowInstanceId}, taskId=${currentTask.taskId}`\n        );\n        return;\n      }\n\n      const nextTask = await this.executeOneTask(currentTask);\n\n      // Stop chaining if polling stopped or paused\n      if (!this.isPolling || this.isPaused) {\n        return;\n      }\n\n      // Yield to the event loop between chained tasks to prevent starvation\n      if (nextTask) {\n        this.logger.debug(\n          `Chaining to next task ${nextTask.taskId} from V2 response (skipping poll cycle)`\n        );\n        await new Promise<void>((resolve) => setTimeout(resolve, 0));\n      }\n\n      currentTask = nextTask;\n    }\n  };\n\n  /**\n   * Execute a single task and return the next task from V2 response (if any).\n   */\n  private executeOneTask = async (task: Task): Promise<Task | undefined> => {\n    const { workerID } = this.options;\n    // Safe: caller (executeTask) already validated these via isValidTask()\n    const taskId = task.taskId as string;\n    const workflowInstanceId = task.workflowInstanceId as string;\n    const startTime = Date.now();\n\n    // Publish TaskExecutionStarted event\n    await this.eventDispatcher.publishTaskExecutionStarted({\n      taskType: this.worker.taskDefName,\n      taskId,\n      workerId: workerID,\n      workflowInstanceId,\n      timestamp: new Date(),\n    });\n\n    // Track lease before execution (no-op if leaseExtendEnabled=false or interval too short)\n    if (this.worker.leaseExtendEnabled) {\n      this.leaseTracker.track(task);\n    }\n\n    try {\n      // Wrap execution in TaskContext (AsyncLocalStorage)\n      const { result, context } = await runWithTaskContext(\n        task,\n        async (ctx) => {\n          const r = await this.worker.execute(task);\n          return { result: r, context: ctx };\n        }\n      );\n\n      const durationMs = Date.now() - startTime;\n\n      // Handle TaskInProgress return\n      if (isTaskInProgress(result)) {\n        // Untrack immediately — execution done, task handed back to Conductor for re-queue\n        this.leaseTracker.untrack(taskId);\n        const contextLogs = context.getLogs();\n        const nextTask = await this.updateTaskWithRetry(task, {\n          workflowInstanceId,\n          taskId,\n          status: \"IN_PROGRESS\",\n          callbackAfterSeconds: result.callbackAfterSeconds,\n          outputData:\n            result.outputData ?? context.getOutput() ?? {},\n          logs: contextLogs.length > 0 ? contextLogs : undefined,\n        });\n\n        // Publish completion event for IN_PROGRESS\n        await this.eventDispatcher.publishTaskExecutionCompleted({\n          taskType: this.worker.taskDefName,\n          taskId,\n          workerId: workerID,\n          workflowInstanceId,\n          durationMs,\n          timestamp: new Date(),\n        });\n\n        this.logger.debug(\n          `Task ${taskId} returned IN_PROGRESS, callback after ${result.callbackAfterSeconds}s`\n        );\n        return nextTask;\n      }\n\n      // Regular completion path — merge context data\n      const merged = { ...result };\n\n      // Merge context logs\n      const contextLogs = context.getLogs();\n      if (contextLogs.length > 0) {\n        merged.logs = [...(merged.logs ?? []), ...contextLogs];\n      }\n\n      // Merge context callbackAfterSeconds\n      const ctxCallback = context.getCallbackAfterSeconds();\n      if (\n        ctxCallback !== undefined &&\n        merged.callbackAfterSeconds === undefined\n      ) {\n        merged.callbackAfterSeconds = ctxCallback;\n      }\n\n      // Merge context output (context output is base, result output overrides)\n      const ctxOutput = context.getOutput();\n      if (ctxOutput !== undefined) {\n        merged.outputData = { ...ctxOutput, ...merged.outputData };\n      }\n\n      // Calculate output size if possible\n      const outputSizeBytes = merged.outputData\n        ? JSON.stringify(merged.outputData).length\n        : undefined;\n\n      // Untrack immediately — execution done, update will follow\n      this.leaseTracker.untrack(taskId);\n\n      // Publish TaskExecutionCompleted event\n      await this.eventDispatcher.publishTaskExecutionCompleted({\n        taskType: this.worker.taskDefName,\n        taskId,\n        workerId: workerID,\n        workflowInstanceId,\n        durationMs,\n        outputSizeBytes,\n        timestamp: new Date(),\n      });\n      const nextTask = await this.updateTaskWithRetry(task, {\n        ...merged,\n        workflowInstanceId,\n        taskId,\n      });\n      this.logger.debug(`Task has executed successfully ${taskId}`);\n      return nextTask;\n    } catch (error: unknown) {\n      // Untrack immediately on failure — execution done, update will follow\n      this.leaseTracker.untrack(taskId);\n      const durationMs = Date.now() - startTime;\n      const err = error as Error;\n\n      // Publish TaskExecutionFailure event\n      await this.eventDispatcher.publishTaskExecutionFailure({\n        taskType: this.worker.taskDefName,\n        taskId,\n        workerId: workerID,\n        workflowInstanceId,\n        cause: err,\n        durationMs,\n        timestamp: new Date(),\n      });\n\n      // Determine task status based on exception type\n      const isNonRetryable = err instanceof NonRetryableException;\n      const status = isNonRetryable ? \"FAILED_WITH_TERMINAL_ERROR\" : \"FAILED\";\n\n      if (isNonRetryable) {\n        this.logger.error(\n          `Task ${taskId} failed with terminal error (no retry): ${err.message}`\n        );\n      }\n\n      // Include error stack trace in task logs for debugging in Conductor UI\n      const errorLogs = [\n        {\n          log: `${err.name}: ${err.message}${err.stack ? \"\\n\" + err.stack : \"\"}`,\n          createdTime: Date.now(),\n          taskId,\n        },\n      ];\n\n      const nextTask = await this.updateTaskWithRetry(task, {\n        workflowInstanceId,\n        taskId,\n        reasonForIncompletion:\n          (error as Record<string, string>)?.message ?? DEFAULT_ERROR_MESSAGE,\n        status,\n        outputData: {},\n        logs: errorLogs,\n      });\n      this.errorHandler(err, task);\n      this.logger.error(`Error executing ${taskId}`, error);\n\n      // Even on failure, chain to next task — the failure was for THIS task\n      return nextTask;\n    }\n  };\n\n  handleUnknownError = (unknownError: unknown) => {\n    let message = \"\";\n    let stack: string | undefined = \"\";\n    if (unknownError && typeof unknownError === \"object\") {\n      if (\"stack\" in unknownError) {\n        stack = (unknownError as Error).stack;\n      }\n      if (\"message\" in unknownError) {\n        message = (unknownError as Error).message;\n      }\n    } else if (typeof unknownError === \"string\") {\n      message = unknownError;\n    }\n    this.logger.error(\n      `Error for ${this.worker.taskDefName}: error: ${message}, stack: ${stack}`\n    );\n  };\n}\n","import { TaskRunner } from \"./TaskRunner\";\nimport { ConductorLogger, DefaultLogger } from \"../../helpers/logger\";\nimport type { Client } from \"../../../open-api\";\nimport {\n  DEFAULT_POLL_INTERVAL,\n  DEFAULT_BATCH_POLLING_TIMEOUT,\n  DEFAULT_CONCURRENCY,\n  MAX_RETRIES,\n} from \"./constants\";\nimport {\n  TaskErrorHandler,\n  TaskManagerConfig,\n  TaskManagerOptions,\n  ConductorWorker,\n} from \"./types\";\nimport { getWorkerId, noopErrorHandler } from \"./helpers\";\nimport type { TaskRunnerEventsListener } from \"./events\";\n\nconst defaultManagerOptions: Required<TaskManagerOptions> = {\n  workerID: \"\",\n  pollInterval: DEFAULT_POLL_INTERVAL,\n  domain: undefined,\n  concurrency: DEFAULT_CONCURRENCY,\n  batchPollingTimeout: DEFAULT_BATCH_POLLING_TIMEOUT,\n};\n\n/**\n * Responsible for initializing and managing the runners that poll and work different task queues.\n */\nexport class TaskManager {\n  private workerRunners = new Map<string, TaskRunner>();\n  private readonly client: Client;\n  private readonly logger: ConductorLogger;\n  private readonly errorHandler: TaskErrorHandler;\n  private workers: ConductorWorker[];\n  readonly options: Required<TaskManagerOptions>;\n  private polling = false;\n  private maxRetries: number = MAX_RETRIES;\n  private eventListeners: TaskRunnerEventsListener[];\n\n  constructor(\n    client: Client,\n    workers: ConductorWorker[],\n    config: TaskManagerConfig = {}\n  ) {\n    if (!workers) {\n      throw new Error(\n        \"No workers supplied to TaskManager. Please pass an array of workers.\"\n      );\n    }\n    this.client = client;\n    this.logger = config.logger ?? new DefaultLogger();\n    this.maxRetries = config.maxRetries ?? MAX_RETRIES;\n    this.errorHandler = config.onError ?? noopErrorHandler;\n    this.workers = workers;\n    this.eventListeners = config.eventListeners ?? [];\n    const providedOptions = config.options ?? {};\n    this.options = {\n      ...defaultManagerOptions,\n      ...providedOptions,\n      workerID: getWorkerId(providedOptions),\n    };\n  }\n\n  private workerManagerWorkerOptions = (\n    worker: ConductorWorker\n  ): Required<TaskManagerOptions> => {\n    return {\n      ...this.options,\n      concurrency: worker.concurrency ?? this.options.concurrency,\n      pollInterval: worker.pollInterval ?? this.options.pollInterval,\n      domain: worker.domain ?? this.options.domain,\n    };\n  };\n\n  get isPolling() {\n    return this.polling;\n  }\n\n  updatePollingOptionForWorker = (\n    workerTaskDefName: string,\n    options: Partial<TaskManagerOptions>\n  ) => {\n    const maybeRunner = this.workerRunners.get(workerTaskDefName);\n\n    if (maybeRunner != null) {\n      maybeRunner.updateOptions(options);\n    } else {\n      this.logger.info(\n        `No runner found for worker with taskDefName: ${workerTaskDefName}`\n      );\n    }\n  };\n\n  /**\n   * new options will get merged to existing options\n   * @param options new options to update polling options\n   */\n  updatePollingOptions = (options: Partial<TaskManagerOptions>) => {\n    this.workers.forEach((worker) => {\n      const newOptions = {\n        ...this.workerManagerWorkerOptions(worker),\n        ...options,\n      };\n      this.updatePollingOptionForWorker(worker.taskDefName, newOptions);\n    });\n    this.options.concurrency = options.concurrency ?? this.options.concurrency;\n    this.options.pollInterval =\n      options.pollInterval ?? this.options.pollInterval;\n  };\n\n  sanityCheck = () => {\n    if (this.workers.length === 0) {\n      throw new Error(\"No workers supplied to TaskManager\");\n    }\n    const workerIDs = new Set();\n    for (const item of this.workers) {\n      if (workerIDs.has(item.taskDefName)) {\n        throw new Error(`Duplicate worker taskDefName: ${item.taskDefName}`);\n      }\n      workerIDs.add(item.taskDefName);\n    }\n  };\n\n  /**\n   * Start polling for tasks\n   */\n  startPolling = () => {\n    this.sanityCheck();\n    this.workers.forEach((worker) => {\n      const options = this.workerManagerWorkerOptions(worker);\n      const runner = new TaskRunner({\n        worker,\n        options,\n        client: this.client,\n        logger: this.logger,\n        onError: this.errorHandler,\n        maxRetries: this.maxRetries,\n        eventListeners: this.eventListeners,\n      });\n      runner.startPolling();\n      this.workerRunners.set(worker.taskDefName, runner);\n    });\n    this.polling = true;\n  };\n  /**\n   * Stops polling for tasks\n   */\n  stopPolling = async () => {\n    for (const [workerTaskDefName, runner] of this.workerRunners) {\n      this.logger.debug(`Stopping taskDefName=${workerTaskDefName}`);\n      await runner.stopPolling();\n      this.workerRunners.delete(workerTaskDefName);\n    }\n    this.polling = false;\n  };\n}\n","import { TaskType, DoWhileTaskDef, TaskDefTypes } from \"../../../open-api\";\n\nexport const doWhileTask = (\n  taskRefName: string,\n  terminationCondition: string,\n  tasks: TaskDefTypes[],\n  optional?: boolean\n): DoWhileTaskDef => ({\n  name: taskRefName,\n  taskReferenceName: taskRefName,\n  loopCondition: terminationCondition,\n  inputParameters: {},\n  type: TaskType.DO_WHILE,\n  loopOver: tasks,\n  optional,\n});\n\nconst loopForCondition = (taskRefName: string, valueKey: string) =>\n  `if ( $.${taskRefName}['iteration'] < $.${valueKey} ) { true; } else { false; }`;\n\nexport const newLoopTask = (\n  taskRefName: string,\n  iterations: number,\n  tasks: TaskDefTypes[],\n  optional?: boolean\n): DoWhileTaskDef => ({\n  name: taskRefName,\n  taskReferenceName: taskRefName,\n  loopCondition: loopForCondition(taskRefName, \"value\"),\n  inputParameters: {\n    value: iterations,\n  },\n  type: TaskType.DO_WHILE,\n  loopOver: tasks,\n  optional,\n});\n","import type { WorkflowTask } from \"../../../open-api\";\nimport { TaskType } from \"../../../open-api\";\n\nexport const dynamicTask = (\n  taskReferenceName: string,\n  dynamicTaskName: string,\n  dynamicTaskParam = \"taskToExecute\",\n  optional?: boolean\n): WorkflowTask => ({\n  name: taskReferenceName,\n  taskReferenceName,\n  type: TaskType.DYNAMIC,\n  dynamicTaskNameParam: dynamicTaskParam,\n  inputParameters: {\n    [dynamicTaskParam]: dynamicTaskName,\n  },\n  optional,\n});\n","import { TaskType, ForkJoinDynamicDef, TaskDefTypes } from \"../../../open-api\";\n\nexport const dynamicForkTask = (\n  taskReferenceName: string,\n  preForkTasks: TaskDefTypes[] = [],\n  dynamicTasksInput = \"\",\n  optional?: boolean\n): ForkJoinDynamicDef => ({\n  name: taskReferenceName,\n  taskReferenceName,\n  inputParameters: {\n    dynamicTasks: preForkTasks,\n    dynamicTasksInput,\n  },\n  type: TaskType.FORK_JOIN_DYNAMIC,\n  dynamicForkTasksParam: \"dynamicTasks\",\n  dynamicForkTasksInputParamName: \"dynamicTasksInput\",\n  optional,\n});\n","import { TaskType, EventTaskDef } from \"../../../open-api\";\n\nexport const eventTask = (\n  taskReferenceName: string,\n  eventPrefix: string,\n  eventSuffix: string,\n  optional?: boolean\n): EventTaskDef => ({\n  name: taskReferenceName,\n  taskReferenceName,\n  sink: `${eventPrefix}:${eventSuffix}`,\n  type: TaskType.EVENT,\n  optional,\n});\n\nexport const sqsEventTask = (\n  taskReferenceName: string,\n  queueName: string,\n  optional?: boolean\n) => eventTask(taskReferenceName, \"sqs\", queueName, optional);\n\nexport const conductorEventTask = (\n  taskReferenceName: string,\n  eventName: string,\n  optional?: boolean\n) => eventTask(taskReferenceName, \"conductor\", eventName, optional);\n","export const randomChars = (n = 7): string =>\n  (Math.random() + 1).toString(36).substring(n);\n\nexport const workflowNameGenerator = () => `workflow___${randomChars(7)}`;\n\nexport const taskNameGenerator = (taskType: string) =>\n  `${taskType}__task_${randomChars(7)}`;\n\nexport const taskReferenceNameGenerator = (taskName: string) =>\n  `${taskName}_ref`;\n\ninterface MaybeOverrides {\n  name?: string;\n}\n\nexport const nameTaskNameGenerator = (\n  taskType: string,\n  maybeOverrides: MaybeOverrides = {}\n) => {\n  const name = maybeOverrides?.name ?? taskNameGenerator(taskType);\n  return {\n    name,\n    taskReferenceName: taskReferenceNameGenerator(name),\n  };\n};\n\nexport function mapArrValues<T, R>(\n  arrayTransformer: (a: T[]) => R[],\n  mapWithValues: Record<string, T[]>\n) {\n  return Object.fromEntries(\n    Object.entries(mapWithValues).map(([key, value]: [string, T[]]) => [\n      key,\n      arrayTransformer(value),\n    ])\n  );\n}\n","import { SimpleTaskDef, TaskType } from \"../../open-api\";\nimport { nameTaskNameGenerator } from \"./common\";\n\n/**\n * Takes an optional partial SimpleTaskDef\n * generates a task replacing default values with provided overrides\n *\n * @param overrides overrides for defaults\n * @returns a fully defined task\n */\nexport const generateSimpleTask = (\n  overrides: Partial<SimpleTaskDef> = {}\n): SimpleTaskDef => ({\n  ...nameTaskNameGenerator(\"simple\", overrides),\n  inputParameters: {},\n  ...overrides,\n  type: TaskType.SIMPLE,\n});\n","import { TaskType, DoWhileTaskDef } from \"../../open-api\";\nimport { DoWhileTaskDefGen, NestedTaskMapper } from \"./types\";\nimport { nameTaskNameGenerator } from \"./common\";\n\nexport const generateDoWhileTask = (\n  overrides: Partial<DoWhileTaskDefGen> = {},\n  nestedTasksMapper: NestedTaskMapper\n): DoWhileTaskDef => ({\n  ...nameTaskNameGenerator(\"doWhile\", overrides),\n  inputParameters: {},\n  startDelay: 0,\n  optional: false,\n  asyncComplete: false,\n  loopCondition:\"\",\n  ...overrides,\n  loopOver: nestedTasksMapper(overrides?.loopOver || []),\n  type: TaskType.DO_WHILE,\n});\n","import { EventTaskDef, TaskType } from \"../../open-api\";\nimport { nameTaskNameGenerator } from \"./common\";\n\n/**\n * Takes an optional partial EventTaskDef\n * generates a task replacing default/fake values with provided overrides\n *\n * @param overrides overrides for defaults\n * @returns a fully defined task\n */\nexport const generateEventTask = (\n  overrides: Partial<EventTaskDef> = {}\n): EventTaskDef => ({\n  ...nameTaskNameGenerator(\"event\", overrides),\n  sink: \"sqs:sqs_queue_name\",\n  asyncComplete: false,\n  ...overrides,\n  type: TaskType.EVENT,\n});\n","import { ForkJoinTaskDef, JoinTaskDef, TaskType } from \"../../open-api/\";\nimport { nameTaskNameGenerator } from \"./common\";\nimport { ForkJoinTaskDefGen, NestedTaskMapper } from \"./types\";\n\nexport const generateForkJoinTask = (\n  overrides: Partial<ForkJoinTaskDefGen> = {},\n  nestedMapper: NestedTaskMapper\n): ForkJoinTaskDef => ({\n  ...nameTaskNameGenerator(\"forkJoin\", overrides),\n  inputParameters: {},\n  ...overrides,\n  type: TaskType.FORK_JOIN,\n  forkTasks: (overrides?.forkTasks || []).map(nestedMapper),\n});\n\nexport const generateJoinTask = (\n  overrides: Partial<JoinTaskDef> = {}\n): JoinTaskDef => ({\n  ...nameTaskNameGenerator(\"join\", overrides),\n  inputParameters: {},\n  joinOn: [],\n  ...overrides,\n  type: TaskType.JOIN,\n});\n","import { HttpTaskDef, TaskType } from \"../../open-api\";\nimport { nameTaskNameGenerator } from \"./common\";\n\n/**\n * Takes an optional partial HttpTaskDef\n * generates a task replacing default/fake values with provided overrides\n *\n * @param overrides overrides for defaults\n * @returns a fully defined task\n */\nexport const generateHTTPTask = (\n overrides: Partial<HttpTaskDef> = {}\n): HttpTaskDef => ({\n  ...nameTaskNameGenerator(\"httpTask\", overrides),\n  inputParameters: {\n    http_request: {\n      uri: \"https://jsonplaceholder.typicode.com/posts/${workflow.input.queryid}\",\n      method: \"GET\",\n    },\n  },\n  asyncComplete: false,\n  ...overrides,\n  type: TaskType.HTTP,\n});\n","import {\n  InlineTaskDef,\n  TaskType,\n  InlineTaskInputParameters,\n} from \"../../open-api\";\nimport { InlineTaskDefGen, InlineTaskInputParametersGen } from \"./types\";\nimport { nameTaskNameGenerator } from \"./common\";\n\nconst defaultInputParams: InlineTaskInputParameters = {\n  value: \"${workflow.input.value}\",\n  evaluatorType: \"graaljs\",\n  expression: \"true\",\n};\n\nexport const generateEvaluationCode = (\n  inputParametersPartial: Partial<InlineTaskInputParametersGen> = {}\n): InlineTaskInputParameters => {\n  const inlinePartialDefJavascript = inputParametersPartial;\n  const inlineExpression = inlinePartialDefJavascript?.expression;\n  if (\n    inlineExpression !== undefined &&\n    typeof inlineExpression === \"function\"\n  ) {\n    const resultingFunction = inlineExpression();\n\n    if (typeof resultingFunction !== \"function\") {\n      throw new Error(\"Inline expression function must return a function\");\n    }\n\n    const resultingFunctionAsString = resultingFunction.toString();\n\n    const toReturn: InlineTaskInputParameters = {\n      evaluatorType: \"graaljs\",\n      ...(inputParametersPartial || { value: \"true\" }),\n      expression: `(${resultingFunctionAsString})();`,\n    };\n    return toReturn;\n  }\n  return {\n    ...defaultInputParams,\n    evaluatorType: \"graaljs\",\n    ...inputParametersPartial,\n  } as InlineTaskInputParameters;\n};\n\n/**\n * Takes an optional partial InlineTaskDefGen\n * generates a task replacing default/fake values with provided overrides\n *\n * <b>note</b> that the inputParameters.expression can be either a string containing javascript\n * or a function thar returns an ES5 function\n *\n * @param overrides overrides for defaults\n * @returns a fully defined task\n */\nexport const generateInlineTask = (\n  override: Partial<InlineTaskDefGen> = {}\n): InlineTaskDef => ({\n  ...nameTaskNameGenerator(\"inline\", override),\n  ...override,\n  inputParameters: generateEvaluationCode(override?.inputParameters || {}),\n  type: TaskType.INLINE,\n});\n","import { JsonJQTransformTaskDef, TaskType } from \"../../open-api\";\nimport { nameTaskNameGenerator } from \"./common\";\n\n/**\n * Takes an optional partial JsonJQTransformTaskDef\n * generates a task replacing default/fake values with provided overrides\n *\n * @param overrides overrides for defaults\n * @returns a fully defined task\n */\nexport const generateJQTransformTask = (\n  overrides: Partial<JsonJQTransformTaskDef> = {}\n): JsonJQTransformTaskDef => ({\n  ...nameTaskNameGenerator(\"jqTransform\", overrides),\n  inputParameters: {\n    key1: {\n      value1: [\"a\", \"b\"],\n    },\n    key2: {\n      value2: [\"c\", \"d\"],\n    },\n    queryExpression: \"{ key3: (.key1.value1 + .key2.value2) }\",\n  },\n  ...overrides,\n  type: TaskType.JSON_JQ_TRANSFORM,\n});\n","import { KafkaPublishTaskDef, TaskType } from \"../../open-api\";\nimport { nameTaskNameGenerator } from \"./common\";\n\n/**\n * Takes an optional partial KafkaPublishTaskDef\n * generates a task replacing default/fake values with provided overrides\n *\n * @param overrides overrides for defaults\n * @returns a fully defined task\n */\nexport const generateKafkaPublishTask = (\n  overrides: Partial<KafkaPublishTaskDef> = {}\n): KafkaPublishTaskDef => ({\n  ...nameTaskNameGenerator(\"kafka\", overrides),\n  inputParameters: {\n    kafka_request: {\n      topic: \"topic\",\n      value: \"\",\n      bootStrapServers: \"localhost:9092\",\n      headers: {},\n      key: \"123\",\n      keySerializer: \"org.apache.kafka.common.serialization.IntegerSerializer\",\n    },\n  },\n  ...overrides,\n  type: TaskType.KAFKA_PUBLISH,\n});\n","import { SubWorkflowTaskDef, TaskType } from \"../../open-api\";\nimport { nameTaskNameGenerator } from \"./common\";\n\n/**\n * Takes an optional partial SubWorkflowTaskDef\n * generates a task replacing default/fake values with provided overrides\n *\n * @param overrides overrides for defaults\n * @returns a fully defined task\n */\nexport const generateSubWorkflowTask = (\n  overrides: Partial<SubWorkflowTaskDef> = {}\n): SubWorkflowTaskDef => ({\n  ...nameTaskNameGenerator(\"subWorkflow\", overrides),\n  inputParameters: {},\n  subWorkflowParam: {\n    name: \"name\",\n    version: 1,\n    taskToDomain: {},\n  },\n  ...overrides,\n  type: TaskType.SUB_WORKFLOW,\n});\n","import { SetVariableTaskDef, TaskType } from \"../../open-api\";\nimport { nameTaskNameGenerator } from \"./common\";\n\n/**\n * Takes an optional partial SetVariableTaskDef\n * generates a task replacing default/fake values with provided overrides\n *\n * @param overrides overrides for defaults\n * @returns a fully defined task\n */\nexport const generateSetVariableTask = (\n  overrides: Partial<SetVariableTaskDef> = {}\n): SetVariableTaskDef => ({\n  ...nameTaskNameGenerator(\"setVariable\", overrides),\n  inputParameters: {},\n  ...overrides,\n  type: TaskType.SET_VARIABLE,\n});\n","import { TerminateTaskDef, TaskType } from \"../../open-api\";\nimport { nameTaskNameGenerator } from \"./common\";\n\n/**\n * Takes an optional partial TerminateTaskDef\n * generates a task replacing default/fake values with provided overrides\n *\n * @param overrides overrides for defaults\n * @returns a fully defined task\n */\nexport const generateTerminateTask = (\n  overrides: Partial<TerminateTaskDef> = {}\n): TerminateTaskDef => ({\n  ...nameTaskNameGenerator(\"terminate\", overrides),\n  inputParameters: {\n    terminationStatus: \"COMPLETED\",\n    workflowOutput: {},\n  },\n  startDelay: 0,\n  ...overrides,\n  type: TaskType.TERMINATE,\n});\n","import { WaitTaskDef, TaskType } from \"../../open-api\";\nimport { nameTaskNameGenerator } from \"./common\";\n\n/**\n * Takes an optional partial WaitTaskDef\n * generates a task replacing default/fake values with provided overrides\n *\n * @param overrides overrides for defaults\n * @returns a fully defined task\n */\nexport const generateWaitTask = (\n  overrides: Partial<WaitTaskDef> = {}\n): WaitTaskDef => ({\n  ...nameTaskNameGenerator(\"wait\", overrides),\n  ...overrides,\n  inputParameters:{},\n  type: TaskType.WAIT,\n});\n","import { SwitchTaskDef, TaskType, TaskDefTypes } from \"../../open-api\";\nimport { nameTaskNameGenerator, mapArrValues } from \"./common\";\nimport { NestedTaskMapper, SwitchTaskDefGen } from \"./types\";\n\ninterface DefinedCases {\n  decisionCases: Record<string, TaskDefTypes[]>;\n  defaultCase: TaskDefTypes[];\n}\n\nconst fillSwitchTaskBranches = (\n  task: Partial<SwitchTaskDefGen>,\n  mapper: NestedTaskMapper\n): DefinedCases => ({\n  decisionCases: mapArrValues(mapper, task?.decisionCases || {}),\n  defaultCase: mapper(task?.defaultCase || []),\n});\n\nexport const generateSwitchTask = (\n  overrides: Partial<SwitchTaskDefGen> = {},\n  nestedTasksMapper: NestedTaskMapper\n): SwitchTaskDef => ({\n  ...nameTaskNameGenerator(\"switch\", overrides),\n  inputParameters: {\n    switchCaseValue: \"\",\n  },\n  evaluatorType: \"value-param\",\n  expression: \"switchCaseValue\",\n  ...overrides,\n  ...fillSwitchTaskBranches(overrides, nestedTasksMapper),\n  type: TaskType.SWITCH,\n});\n","import { WorkflowDef } from \"../../open-api\";\n\nexport const workflowGenerator = (\n  overrides: Partial<WorkflowDef>\n): WorkflowDef => ({\n  name: \"NewWorkflow_3nxbi\",\n  description:\n    \"Edit or extend this sample workflow. Set the workflow name to get started\",\n  version: 1,\n  tasks: [],\n  inputParameters: [],\n  outputParameters: {},\n  schemaVersion: 2,\n  restartable: true,\n  workflowStatusListenerEnabled: false,\n  ownerEmail: \"james.stuart@orkes.io\",\n  timeoutPolicy: \"ALERT_ONLY\",\n  timeoutSeconds: 0,\n  ...overrides,\n});\n","import { ForkJoinDynamicDef, TaskType } from \"../../open-api\";\nimport { nameTaskNameGenerator } from \"./common\";\n\nexport const generateForkJoinDynamic = (\n  overrides: Partial<ForkJoinDynamicDef> = {}\n): ForkJoinDynamicDef => ({\n  ...nameTaskNameGenerator(\"forkJoinDynamic\", overrides),\n  inputParameters: {\n    dynamicTasks: \"\",\n    dynamicTasksInput: \"\",\n  },\n  dynamicForkTasksParam: \"dynamicTasks\",\n  dynamicForkTasksInputParamName: \"dynamicTasksInput\",\n  startDelay: 0,\n  optional: false,\n  asyncComplete: false,\n  ...overrides,\n  type: TaskType.FORK_JOIN_DYNAMIC,\n});\n","import { workflowGenerator } from \"./WorkflowGenerator\";\nimport { WorkflowDefGen, TaskDefTypesGen } from \"./types\";\nimport { generateSimpleTask } from \"./SimpleTask\";\nimport { generateDoWhileTask } from \"./DoWhileTask\";\nimport { generateEventTask } from \"./EventTask\";\nimport { generateForkJoinTask, generateJoinTask } from \"./ForkJoin\";\nimport { generateForkJoinDynamic } from \"./ForkJoinDynamicTask\";\nimport { generateHTTPTask } from \"./HttpTask\";\nimport { generateInlineTask } from \"./InlineTask\";\nimport { generateJQTransformTask } from \"./JsonJQTransform\";\nimport { generateKafkaPublishTask } from \"./KafkaTask\";\nimport { generateSubWorkflowTask } from \"./SubWorkflowTask\";\nimport { generateSetVariableTask } from \"./SetVariableTask\";\nimport { generateTerminateTask } from \"./TerminateTask\";\nimport { generateWaitTask } from \"./WaitTask\";\nimport { generateSwitchTask } from \"./SwitchTask\";\nimport { SimpleTaskDef, TaskDefTypes, TaskType } from \"../../open-api\";\n\nconst filledTaskDef = (task: Partial<TaskDefTypesGen>): TaskDefTypes => {\n  const taskType = task.type;\n  switch (taskType) {\n    case TaskType.SWITCH:\n      return generateSwitchTask(task, taskGenMapper);\n    case TaskType.SIMPLE:\n      return generateSimpleTask(task);\n    case TaskType.DO_WHILE:\n      return generateDoWhileTask(task, taskGenMapper);\n    case TaskType.EVENT:\n      return generateEventTask(task);\n    case TaskType.FORK_JOIN:\n      return generateForkJoinTask(task, taskGenMapper);\n    case TaskType.FORK_JOIN_DYNAMIC:\n      return generateForkJoinDynamic(task);\n    case TaskType.HTTP:\n      return generateHTTPTask(task);\n    case TaskType.INLINE:\n      return generateInlineTask(task);\n    case TaskType.JOIN:\n      return generateJoinTask(task);\n    case TaskType.JSON_JQ_TRANSFORM:\n      return generateJQTransformTask(task);\n    case TaskType.KAFKA_PUBLISH:\n      return generateKafkaPublishTask(task);\n    case TaskType.SUB_WORKFLOW:\n      return generateSubWorkflowTask(task);\n    case TaskType.SET_VARIABLE:\n      return generateSetVariableTask(task);\n    case TaskType.TERMINATE:\n      return generateTerminateTask(task);\n    case TaskType.WAIT:\n      return generateWaitTask(task);\n    default:\n      return generateSimpleTask(task as SimpleTaskDef);\n  }\n};\n\nexport const taskGenMapper = (\n  tasks: Partial<TaskDefTypesGen>[]\n): TaskDefTypes[] =>\n  tasks.reduce((acc: TaskDefTypes[], task, idx: number): TaskDefTypes[] => {\n    const filledTask = filledTaskDef(task);\n    const maybeNextTask = tasks.length >= idx + 1 ? tasks[idx + 1] : undefined;\n\n    return acc.concat(maybeAddJoinTask(filledTask, maybeNextTask));\n  }, []);\n\nconst maybeAddJoinTask = (\n  currentTask: TaskDefTypes,\n  maybeNextTask?: Partial<TaskDefTypesGen>\n) => {\n  if (\n    (currentTask.type === TaskType.FORK_JOIN ||\n      currentTask.type === TaskType.FORK_JOIN_DYNAMIC) &&\n    maybeNextTask != null &&\n    maybeNextTask.type !== TaskType.JOIN\n  ) {\n    return [currentTask, generateJoinTask({})];\n  }\n  return currentTask;\n};\n\n/**\n * Takes an optional partial WorkflowDefGen\n * generates a workflow replacing default/fake values with provided overrides\n *\n * @param overrides overrides for defaults\n * @returns a fully defined task\n */\nexport const generate = (overrides: Partial<WorkflowDefGen>) => {\n  const maybeTasks: Partial<TaskDefTypesGen>[] = overrides.tasks || [];\n  const generatedTasks: TaskDefTypes[] = taskGenMapper(maybeTasks);\n  return workflowGenerator({ ...overrides, tasks: generatedTasks });\n};\n","import { generateSimpleTask } from \"./SimpleTask\";\nimport { generateDoWhileTask as doWhileGenerateInner } from \"./DoWhileTask\";\nimport { generateEventTask } from \"./EventTask\";\nimport {\n  generateForkJoinTask as generateForkJoinTaskInner,\n  generateJoinTask,\n} from \"./ForkJoin\";\nimport { generateHTTPTask } from \"./HttpTask\";\nimport { generateInlineTask } from \"./InlineTask\";\nimport { generateJQTransformTask } from \"./JsonJQTransform\";\nimport { generateKafkaPublishTask } from \"./KafkaTask\";\nimport { generateSubWorkflowTask } from \"./SubWorkflowTask\";\nimport { generateSetVariableTask } from \"./SetVariableTask\";\nimport { generateTerminateTask } from \"./TerminateTask\";\nimport { generateWaitTask } from \"./WaitTask\";\nimport { generateSwitchTask as innerGenerateSwitchTask } from \"./SwitchTask\";\n\nimport { taskGenMapper, generate } from \"./generator\";\nimport {\n  SwitchTaskDefGen,\n  NestedTaskMapper,\n  DoWhileTaskDefGen,\n  ForkJoinTaskDefGen,\n} from \"./types\";\n/**\n * Takes an optional partial SwitchTaskDefGen and an optional nestedMapper\n * generates a task replacing default/fake values with provided overrides\n *\n * @param overrides overrides for defaults\n * @param nestedTasksMapper function to run on array of nested tasks\n * @returns a fully defined task\n */\nconst generateSwitchTask = (\n  overrides: Partial<SwitchTaskDefGen> = {},\n  nestedTasksMapper: NestedTaskMapper = taskGenMapper\n) => innerGenerateSwitchTask(overrides, nestedTasksMapper);\n\n/**\n * Takes an optional partial DoWhileTaskDefGen and an optional nestedMapper\n * generates a task replacing default/fake values with provided overrides\n *\n * @param overrides overrides for defaults\n * @param nestedTasksMapper function to run on array of nested tasks\n * @returns a fully defined task\n */\nconst generateDoWhileTask = (\n  overrides: Partial<DoWhileTaskDefGen> = {},\n  nestedTasksMapper: NestedTaskMapper = taskGenMapper\n) => doWhileGenerateInner(overrides, nestedTasksMapper);\n\n/**\n * Takes an optional partial DoWhileTaskDefGen and an optional nestedMapper\n * generates a task replacing default/fake values with provided overrides\n *\n * @param overrides overrides for defaults\n * @param nestedTasksMapper function to run on array of nested tasks\n * @returns a fully defined task\n */\nconst generateForkJoinTask = (\n  overrides: Partial<ForkJoinTaskDefGen> = {},\n  nestedMapper: NestedTaskMapper = taskGenMapper\n) => generateForkJoinTaskInner(overrides, nestedMapper);\n\nexport {\n  generateSimpleTask,\n  generateDoWhileTask,\n  generateEventTask,\n  generateForkJoinTask,\n  generateJoinTask,\n  generateHTTPTask,\n  generateInlineTask,\n  generateJQTransformTask,\n  generateKafkaPublishTask,\n  generateSubWorkflowTask,\n  generateSetVariableTask,\n  generateTerminateTask,\n  generateWaitTask,\n  generateSwitchTask,\n  generate,\n  taskGenMapper,\n};\n","import {\n  TaskType,\n  ForkJoinTaskDef,\n  TaskDefTypes,\n  JoinTaskDef,\n} from \"../../../open-api\";\nimport { generateJoinTask } from \"../../generators\";\n\nexport const forkTask = (\n  taskReferenceName: string,\n  forkTasks: TaskDefTypes[]\n): ForkJoinTaskDef => ({\n  taskReferenceName,\n  name: taskReferenceName,\n  type: TaskType.FORK_JOIN,\n  forkTasks: [forkTasks],\n});\n\nexport const forkTaskJoin = (\n  taskReferenceName: string,\n  forkTasks: TaskDefTypes[],\n  optional?: boolean\n): [ForkJoinTaskDef, JoinTaskDef] => [\n  forkTask(taskReferenceName, forkTasks),\n  generateJoinTask({ name: `${taskReferenceName}_join`, optional }),\n];\n","import type { WorkflowTask } from \"../../../open-api\";\nimport { TaskType } from \"../../../open-api\";\n\nexport interface GetDocumentOptions {\n  /** Media type of the document (e.g. \"application/pdf\") */\n  mediaType?: string;\n  optional?: boolean;\n}\n\nexport const getDocumentTask = (\n  taskReferenceName: string,\n  url: string,\n  options?: GetDocumentOptions\n): WorkflowTask => ({\n  name: taskReferenceName,\n  taskReferenceName,\n  type: TaskType.GET_DOCUMENT,\n  inputParameters: {\n    url,\n    ...(options?.mediaType !== undefined && { mediaType: options.mediaType }),\n  },\n  optional: options?.optional,\n});\n","import { TaskType, HttpTaskDef, HttpInputParameters } from \"../../../open-api\";\n\nexport const httpTask = (\n  taskReferenceName: string,\n  inputParameters: HttpInputParameters,\n  asyncComplete?: boolean,\n  optional?: boolean\n): HttpTaskDef => ({\n  name: taskReferenceName,\n  taskReferenceName,\n  inputParameters: {\n    http_request: inputParameters,\n  },\n  asyncComplete,\n  optional,\n  type: TaskType.HTTP,\n});\n","import type { WorkflowTask, HttpInputParameters } from \"../../../open-api\";\nimport { TaskType } from \"../../../open-api\";\n\nexport interface HttpPollInputParameters {\n  http_request: HttpInputParameters;\n  /** Polling interval in seconds */\n  pollingInterval?: number;\n  /** Polling strategy: FIXED or LINEAR_BACKOFF */\n  pollingStrategy?: \"FIXED\" | \"LINEAR_BACKOFF\";\n  /** Condition expression to terminate polling (e.g. \"$.status === 'COMPLETED'\") */\n  terminationCondition?: string;\n}\n\nexport const httpPollTask = (\n  taskReferenceName: string,\n  inputParameters: HttpPollInputParameters,\n  optional?: boolean\n): WorkflowTask => ({\n  name: taskReferenceName,\n  taskReferenceName,\n  type: TaskType.HTTP_POLL,\n  inputParameters: inputParameters as unknown as Record<string, unknown>,\n  optional,\n});\n","import type { WorkflowTask } from \"../../../open-api\";\nimport { TaskType } from \"../../../open-api\";\n\nexport type AssignmentCompletionStrategy = \"LEAVE_OPEN\" | \"TERMINATE\";\n\nexport interface HumanTaskOptions {\n  displayName?: string;\n  formTemplate?: string;\n  formVersion?: number;\n  assignmentCompletionStrategy?: AssignmentCompletionStrategy;\n  assignee?: { userType: \"EXTERNAL_USER\" | \"EXTERNAL_GROUP\"; user: string };\n  optional?: boolean;\n}\n\nexport const humanTask = (\n  taskReferenceName: string,\n  options?: HumanTaskOptions\n): WorkflowTask => {\n  const humanTaskDef: Record<string, unknown> = {};\n\n  if (options?.assignmentCompletionStrategy !== undefined) {\n    humanTaskDef.assignmentCompletionStrategy =\n      options.assignmentCompletionStrategy;\n  }\n  if (options?.displayName !== undefined) {\n    humanTaskDef.displayName = options.displayName;\n  }\n  if (options?.formTemplate !== undefined) {\n    humanTaskDef.userFormTemplate = {\n      name: options.formTemplate,\n      version: options.formVersion ?? 0,\n    };\n  }\n  if (options?.assignee !== undefined) {\n    humanTaskDef.assignee = {\n      userType: options.assignee.userType,\n      user: options.assignee.user,\n    };\n  }\n\n  return {\n    name: taskReferenceName,\n    taskReferenceName,\n    type: TaskType.HUMAN,\n    inputParameters: {\n      __humanTaskDefinition: humanTaskDef,\n    },\n    optional: options?.optional,\n  };\n};\n","import { TaskType, InlineTaskDef } from \"../../../open-api\";\n\nexport const inlineTask = (\n  taskReferenceName: string,\n  script: string,\n  evaluatorType: \"javascript\" | \"graaljs\" = \"javascript\",\n  optional?: boolean\n): InlineTaskDef => ({\n  name: taskReferenceName,\n  taskReferenceName,\n  inputParameters: {\n    evaluatorType,\n    expression: script,\n  },\n  type: TaskType.INLINE,\n  optional,\n});\n","import { TaskType, JoinTaskDef } from \"../../../open-api\";\n\nexport const joinTask = (\n  taskReferenceName: string,\n  joinOn: string[],\n  optional?: boolean\n): JoinTaskDef => ({\n  name: taskReferenceName,\n  taskReferenceName,\n  joinOn,\n  type: TaskType.JOIN,\n  optional,\n});\n","import { TaskType, JsonJQTransformTaskDef } from \"../../../open-api\";\n\nexport const jsonJqTask = (\n  taskReferenceName: string,\n  script: string,\n  optional?: boolean\n): JsonJQTransformTaskDef => ({\n  name: taskReferenceName,\n  taskReferenceName,\n  type: TaskType.JSON_JQ_TRANSFORM,\n  inputParameters: {\n    queryExpression: script,\n  },\n  optional,\n});\n","import {\n  TaskType,\n  KafkaPublishTaskDef,\n  KafkaPublishInputParameters,\n} from \"../../../open-api\";\n\nexport const kafkaPublishTask = (\n  taskReferenceName: string,\n  kafka_request: KafkaPublishInputParameters,\n  optional?: boolean\n): KafkaPublishTaskDef => ({\n  taskReferenceName,\n  name: taskReferenceName,\n  type: TaskType.KAFKA_PUBLISH,\n  inputParameters: {\n    kafka_request,\n  },\n  optional,\n});\n","import { TaskType, SetVariableTaskDef } from \"../../../open-api\";\n\nexport const setVariableTask = (\n  taskReferenceName: string,\n  inputParameters: Record<string, unknown>,\n  optional?: boolean\n): SetVariableTaskDef => ({\n  name: taskReferenceName,\n  taskReferenceName,\n  type: TaskType.SET_VARIABLE,\n  inputParameters,\n  optional,\n});\n","import { TaskType, SimpleTaskDef } from \"../../../open-api\";\n\nexport const simpleTask = (\n  taskReferenceName: string,\n  name: string,\n  inputParameters: Record<string, unknown>,\n  optional?: boolean\n): SimpleTaskDef => ({\n  name,\n  taskReferenceName,\n  inputParameters,\n  type: TaskType.SIMPLE,\n  optional,\n});\n","import type { WorkflowTask } from \"../../../open-api\";\nimport { TaskType } from \"../../../open-api\";\n\nexport const startWorkflowTask = (\n  taskReferenceName: string,\n  workflowName: string,\n  input?: Record<string, unknown>,\n  version?: number,\n  correlationId?: string,\n  optional?: boolean\n): WorkflowTask => ({\n  name: taskReferenceName,\n  taskReferenceName,\n  type: TaskType.START_WORKFLOW,\n  inputParameters: {\n    startWorkflow: {\n      name: workflowName,\n      version,\n      input,\n      correlationId,\n    },\n  },\n  optional,\n});\n","import { TaskType, SubWorkflowTaskDef } from \"../../../open-api\";\n\nexport const subWorkflowTask = (\n  taskReferenceName: string,\n  workflowName: string,\n  version?: number,\n  optional?: boolean\n): SubWorkflowTaskDef => ({\n  name: taskReferenceName,\n  taskReferenceName,\n  subWorkflowParam: {\n    name: workflowName,\n    version,\n  },\n  type: TaskType.SUB_WORKFLOW,\n  optional,\n});\n","import { TaskType, SwitchTaskDef, TaskDefTypes } from \"../../../open-api\";\n\nexport const switchTask = (\n  taskReferenceName: string,\n  expression: string,\n  decisionCases: Record<string, TaskDefTypes[]> = {},\n  defaultCase: TaskDefTypes[] = [],\n  optional?: boolean\n): SwitchTaskDef => ({\n  name: taskReferenceName,\n  taskReferenceName,\n  decisionCases,\n  evaluatorType: \"value-param\",\n  inputParameters: {\n    switchCaseValue: expression,\n  },\n  expression: \"switchCaseValue\",\n  defaultCase,\n  type: TaskType.SWITCH,\n  optional,\n});\n","import { TaskType, TerminateTaskDef } from \"../../../open-api\";\nexport const terminateTask = (\n  taskReferenceName: string,\n  status: \"COMPLETED\" | \"FAILED\",\n  terminationReason?: string\n): TerminateTaskDef => ({\n  name: taskReferenceName,\n  taskReferenceName,\n  inputParameters: {\n    terminationStatus: status,\n    terminationReason,\n  },\n  type: TaskType.TERMINATE,\n});\n","import { TaskType, WaitTaskDef } from \"../../../open-api\";\n\nexport const waitTaskDuration = (\n  taskReferenceName: string,\n  duration: string,\n  optional?: boolean\n): WaitTaskDef => ({\n  name: taskReferenceName,\n  taskReferenceName,\n  inputParameters: {\n    duration,\n  },\n  type: TaskType.WAIT,\n  optional,\n});\n\nexport const waitTaskUntil = (\n  taskReferenceName: string,\n  until: string,\n  optional?: boolean\n): WaitTaskDef => ({\n  name: taskReferenceName,\n  taskReferenceName,\n  inputParameters: {\n    until,\n  },\n  type: TaskType.WAIT,\n  optional,\n});\n","import type { WorkflowTask } from \"../../../open-api\";\nimport { TaskType } from \"../../../open-api\";\n\nexport interface WaitForWebhookOptions {\n  /** Match conditions for incoming webhook (key-value pairs) */\n  matches?: Record<string, unknown>;\n  optional?: boolean;\n}\n\nexport const waitForWebhookTask = (\n  taskReferenceName: string,\n  options?: WaitForWebhookOptions\n): WorkflowTask => ({\n  name: taskReferenceName,\n  taskReferenceName,\n  type: TaskType.WAIT_FOR_WEBHOOK,\n  inputParameters: {\n    ...options?.matches,\n  },\n  optional: options?.optional,\n});\n","// ── Enums ─────────────────────────────────────────────────────────\n\nexport enum Role {\n  USER = \"user\",\n  ASSISTANT = \"assistant\",\n  SYSTEM = \"system\",\n  TOOL_CALL = \"tool_call\",\n  TOOL = \"tool\",\n}\n\n/** LLM provider identifiers matching the Python SDK's LLMProvider enum. */\nexport enum LLMProvider {\n  OPEN_AI = \"openai\",\n  AZURE_OPEN_AI = \"azure_openai\",\n  VERTEX_AI = \"vertex_ai\",\n  HUGGING_FACE = \"huggingface\",\n  ANTHROPIC = \"anthropic\",\n  BEDROCK = \"bedrock\",\n  COHERE = \"cohere\",\n  GROK = \"Grok\",\n  MISTRAL = \"mistral\",\n  OLLAMA = \"ollama\",\n  PERPLEXITY = \"perplexity\",\n}\n\n/** Vector database identifiers matching the Python SDK's VectorDB enum. */\nexport enum VectorDB {\n  PINECONE_DB = \"pineconedb\",\n  WEAVIATE_DB = \"weaviatedb\",\n  POSTGRES_VECTOR_DB = \"pgvectordb\",\n  MONGO_VECTOR_DB = \"mongovectordb\",\n}\n\n// ── Message & Tool Types ──────────────────────────────────────────\n\nexport interface ToolCall {\n  name: string;\n  taskReferenceName?: string;\n  type?: string;\n  inputParameters?: Record<string, unknown>;\n  output?: Record<string, unknown>;\n}\n\nexport interface ChatMessage {\n  role: Role;\n  message: string;\n  media?: string[];\n  mimeType?: string;\n  toolCalls?: ToolCall[];\n}\n\nexport interface ToolSpec {\n  name: string;\n  type?: string;\n  description?: string;\n  inputSchema?: Record<string, unknown>;\n  outputSchema?: Record<string, unknown>;\n}\n\n// ── Model Types ───────────────────────────────────────────────────\n\nexport interface EmbeddingModel {\n  provider: string;\n  model: string;\n}\n\nexport interface LlmCompletionParams {\n  temperature?: number;\n  topP?: number;\n  topK?: number;\n  maxTokens?: number;\n  frequencyPenalty?: number;\n  presencePenalty?: number;\n  stopWords?: string[];\n  maxResults?: number;\n}\n\n// ── Integration Config Types ──────────────────────────────────────\n\n/** Base configuration for AI integrations. */\nexport interface IntegrationConfig {\n  provider: string;\n  description?: string;\n  [key: string]: unknown;\n}\n\n/** OpenAI integration configuration. */\nexport interface OpenAIConfig extends IntegrationConfig {\n  provider: \"openai\";\n  apiKey: string;\n  organizationId?: string;\n}\n\n/** Azure OpenAI integration configuration. */\nexport interface AzureOpenAIConfig extends IntegrationConfig {\n  provider: \"azure_openai\";\n  apiKey: string;\n  endpoint: string;\n  deploymentName?: string;\n}\n\n/** Weaviate vector database configuration. */\nexport interface WeaviateConfig extends IntegrationConfig {\n  provider: \"weaviatedb\";\n  apiKey: string;\n  endpoint: string;\n}\n\n/** Pinecone vector database configuration. */\nexport interface PineconeConfig extends IntegrationConfig {\n  provider: \"pineconedb\";\n  apiKey: string;\n  environment?: string;\n  projectName?: string;\n}\n","import type { WorkflowTask } from \"../../../../open-api\";\nimport { TaskType } from \"../../../../open-api\";\nimport type { ChatMessage, LlmCompletionParams, ToolSpec } from \"./types\";\n\nexport interface LlmChatCompleteOptions extends LlmCompletionParams {\n  messages?: ChatMessage[];\n  instructionsTemplate?: string;\n  promptVariables?: Record<string, unknown>;\n  promptVersion?: number;\n  userInput?: string;\n  tools?: ToolSpec[];\n  jsonOutput?: boolean;\n  outputSchema?: Record<string, unknown>;\n  outputMimeType?: string;\n  outputLocation?: string;\n  googleSearchRetrieval?: boolean;\n  inputSchema?: Record<string, unknown>;\n  thinkingTokenLimit?: number;\n  reasoningEffort?: string;\n  voice?: string;\n  participants?: string[];\n}\n\nexport const llmChatCompleteTask = (\n  taskReferenceName: string,\n  provider: string,\n  model: string,\n  options?: LlmChatCompleteOptions\n): WorkflowTask => ({\n  name: taskReferenceName,\n  taskReferenceName,\n  type: TaskType.LLM_CHAT_COMPLETE,\n  inputParameters: {\n    llmProvider: provider,\n    model,\n    ...options,\n  },\n});\n","import type { WorkflowTask } from \"../../../../open-api\";\nimport { TaskType } from \"../../../../open-api\";\nimport type { LlmCompletionParams } from \"./types\";\n\nexport interface LlmTextCompleteOptions extends LlmCompletionParams {\n  promptVariables?: Record<string, unknown>;\n  promptVersion?: number;\n  jsonOutput?: boolean;\n}\n\nexport const llmTextCompleteTask = (\n  taskReferenceName: string,\n  provider: string,\n  model: string,\n  promptName: string,\n  options?: LlmTextCompleteOptions\n): WorkflowTask => ({\n  name: taskReferenceName,\n  taskReferenceName,\n  type: TaskType.LLM_TEXT_COMPLETE,\n  inputParameters: {\n    llmProvider: provider,\n    model,\n    promptName,\n    ...options,\n  },\n});\n","import type { WorkflowTask } from \"../../../../open-api\";\nimport { TaskType } from \"../../../../open-api\";\n\nexport interface LlmGenerateEmbeddingsOptions {\n  instructions?: string;\n  dimensions?: number;\n}\n\nexport const llmGenerateEmbeddingsTask = (\n  taskReferenceName: string,\n  provider: string,\n  model: string,\n  text: string,\n  options?: LlmGenerateEmbeddingsOptions\n): WorkflowTask => ({\n  name: taskReferenceName,\n  taskReferenceName,\n  type: TaskType.LLM_GENERATE_EMBEDDINGS,\n  inputParameters: {\n    llmProvider: provider,\n    model,\n    text,\n    ...options,\n  },\n});\n","import type { WorkflowTask } from \"../../../../open-api\";\nimport { TaskType } from \"../../../../open-api\";\nimport type { EmbeddingModel } from \"./types\";\n\nexport interface LlmIndexTextOptions {\n  namespace?: string;\n  metadata?: Record<string, unknown>;\n  url?: string;\n  chunkSize?: number;\n  chunkOverlap?: number;\n  dimensions?: number;\n}\n\nexport const llmIndexTextTask = (\n  taskReferenceName: string,\n  vectorDb: string,\n  index: string,\n  embeddingModel: EmbeddingModel,\n  text: string,\n  docId: string,\n  options?: LlmIndexTextOptions\n): WorkflowTask => ({\n  name: taskReferenceName,\n  taskReferenceName,\n  type: TaskType.LLM_INDEX_TEXT,\n  inputParameters: {\n    vectorDB: vectorDb,\n    index,\n    embeddingModelProvider: embeddingModel.provider,\n    embeddingModel: embeddingModel.model,\n    text,\n    docId,\n    ...options,\n  },\n});\n","import type { WorkflowTask } from \"../../../../open-api\";\nimport { TaskType } from \"../../../../open-api\";\nimport type { EmbeddingModel } from \"./types\";\n\nexport interface LlmIndexDocumentOptions {\n  namespace?: string;\n  chunkSize?: number;\n  chunkOverlap?: number;\n  docId?: string;\n  metadata?: Record<string, unknown>;\n  dimensions?: number;\n}\n\nexport const llmIndexDocumentTask = (\n  taskReferenceName: string,\n  vectorDb: string,\n  index: string,\n  embeddingModel: EmbeddingModel,\n  url: string,\n  mediaType: string,\n  options?: LlmIndexDocumentOptions\n): WorkflowTask => ({\n  name: taskReferenceName,\n  taskReferenceName,\n  type: TaskType.LLM_INDEX_TEXT,\n  inputParameters: {\n    vectorDB: vectorDb,\n    index,\n    embeddingModelProvider: embeddingModel.provider,\n    embeddingModel: embeddingModel.model,\n    url,\n    mediaType,\n    ...options,\n  },\n});\n","import type { WorkflowTask } from \"../../../../open-api\";\nimport { TaskType } from \"../../../../open-api\";\nimport type { EmbeddingModel } from \"./types\";\n\nexport interface LlmSearchIndexOptions {\n  namespace?: string;\n  maxResults?: number;\n  dimensions?: number;\n}\n\nexport const llmSearchIndexTask = (\n  taskReferenceName: string,\n  vectorDb: string,\n  index: string,\n  embeddingModel: EmbeddingModel,\n  query: string,\n  options?: LlmSearchIndexOptions\n): WorkflowTask => ({\n  name: taskReferenceName,\n  taskReferenceName,\n  type: TaskType.LLM_SEARCH_INDEX,\n  inputParameters: {\n    vectorDB: vectorDb,\n    index,\n    embeddingModelProvider: embeddingModel.provider,\n    embeddingModel: embeddingModel.model,\n    query,\n    ...options,\n  },\n});\n","import type { WorkflowTask } from \"../../../../open-api\";\nimport { TaskType } from \"../../../../open-api\";\n\nexport interface LlmSearchEmbeddingsOptions {\n  namespace?: string;\n  maxResults?: number;\n}\n\nexport const llmSearchEmbeddingsTask = (\n  taskReferenceName: string,\n  vectorDb: string,\n  index: string,\n  embeddings: number[],\n  options?: LlmSearchEmbeddingsOptions\n): WorkflowTask => ({\n  name: taskReferenceName,\n  taskReferenceName,\n  type: TaskType.LLM_SEARCH_EMBEDDINGS,\n  inputParameters: {\n    vectorDB: vectorDb,\n    index,\n    embeddings,\n    ...options,\n  },\n});\n","import type { WorkflowTask } from \"../../../../open-api\";\nimport { TaskType } from \"../../../../open-api\";\n\nexport interface LlmStoreEmbeddingsOptions {\n  namespace?: string;\n  docId?: string;\n  metadata?: Record<string, unknown>;\n}\n\nexport const llmStoreEmbeddingsTask = (\n  taskReferenceName: string,\n  vectorDb: string,\n  index: string,\n  embeddings: number[],\n  options?: LlmStoreEmbeddingsOptions\n): WorkflowTask => ({\n  name: taskReferenceName,\n  taskReferenceName,\n  type: TaskType.LLM_STORE_EMBEDDINGS,\n  inputParameters: {\n    vectorDB: vectorDb,\n    index,\n    embeddings,\n    ...options,\n  },\n});\n","import type { WorkflowTask } from \"../../../../open-api\";\nimport { TaskType } from \"../../../../open-api\";\n\nexport interface LlmQueryEmbeddingsOptions {\n  namespace?: string;\n}\n\nexport const llmQueryEmbeddingsTask = (\n  taskReferenceName: string,\n  vectorDb: string,\n  index: string,\n  embeddings: number[],\n  options?: LlmQueryEmbeddingsOptions\n): WorkflowTask => ({\n  name: taskReferenceName,\n  taskReferenceName,\n  type: TaskType.LLM_GET_EMBEDDINGS,\n  inputParameters: {\n    vectorDB: vectorDb,\n    index,\n    embeddings,\n    ...options,\n  },\n});\n","import type { WorkflowTask } from \"../../../../open-api\";\nimport { TaskType } from \"../../../../open-api\";\n\nexport interface GenerateImageOptions {\n  imageCount?: number;\n  width?: number;\n  height?: number;\n}\n\nexport const generateImageTask = (\n  taskReferenceName: string,\n  provider: string,\n  model: string,\n  prompt: string,\n  options?: GenerateImageOptions\n): WorkflowTask => ({\n  name: taskReferenceName,\n  taskReferenceName,\n  type: TaskType.GENERATE_IMAGE,\n  inputParameters: {\n    llmProvider: provider,\n    model,\n    prompt,\n    ...options,\n  },\n});\n","import type { WorkflowTask } from \"../../../../open-api\";\nimport { TaskType } from \"../../../../open-api\";\n\nexport interface GenerateAudioOptions {\n  text?: string;\n  voice?: string;\n  speed?: number;\n}\n\nexport const generateAudioTask = (\n  taskReferenceName: string,\n  provider: string,\n  model: string,\n  options?: GenerateAudioOptions\n): WorkflowTask => ({\n  name: taskReferenceName,\n  taskReferenceName,\n  type: TaskType.GENERATE_AUDIO,\n  inputParameters: {\n    llmProvider: provider,\n    model,\n    ...options,\n  },\n});\n","import type { WorkflowTask } from \"../../../../open-api\";\nimport { TaskType } from \"../../../../open-api\";\n\nexport interface CallMcpToolOptions {\n  inputParameters?: Record<string, unknown>;\n}\n\nexport const callMcpToolTask = (\n  taskReferenceName: string,\n  mcpServer: string,\n  method: string,\n  options?: CallMcpToolOptions\n): WorkflowTask => ({\n  name: taskReferenceName,\n  taskReferenceName,\n  type: TaskType.CALL_MCP_TOOL,\n  inputParameters: {\n    mcpServer,\n    method,\n    ...options?.inputParameters,\n  },\n});\n","import type { WorkflowTask } from \"../../../../open-api\";\nimport { TaskType } from \"../../../../open-api\";\n\nexport interface ListMcpToolsOptions {\n  filter?: string;\n}\n\nexport const listMcpToolsTask = (\n  taskReferenceName: string,\n  mcpServer: string,\n  options?: ListMcpToolsOptions\n): WorkflowTask => ({\n  name: taskReferenceName,\n  taskReferenceName,\n  type: TaskType.LIST_MCP_TOOLS,\n  inputParameters: {\n    mcpServer,\n    ...options,\n  },\n});\n","import type { WorkflowTask } from \"../../../../open-api\";\n\n/**\n * Set a single prompt variable on an LLM task.\n * Returns a new task with the variable applied to inputParameters.promptVariables.\n *\n * @example\n * ```typescript\n * const task = withPromptVariable(\n *   llmChatCompleteTask(\"ref\", \"openai\", \"gpt-4\"),\n *   \"context\",\n *   \"${workflow.input.context}\"\n * );\n * ```\n */\nexport const withPromptVariable = (\n  task: WorkflowTask,\n  variable: string,\n  value: unknown\n): WorkflowTask => ({\n  ...task,\n  inputParameters: {\n    ...task.inputParameters,\n    promptVariables: {\n      ...(task.inputParameters?.promptVariables as\n        | Record<string, unknown>\n        | undefined),\n      [variable]: value,\n    },\n  },\n});\n\n/**\n * Set multiple prompt variables on an LLM task at once.\n * Returns a new task with all variables merged into inputParameters.promptVariables.\n *\n * @example\n * ```typescript\n * const task = withPromptVariables(\n *   llmTextCompleteTask(\"ref\", \"openai\", \"gpt-4\", \"my_prompt\"),\n *   {\n *     context: \"${workflow.input.context}\",\n *     query: \"${workflow.input.query}\",\n *   }\n * );\n * ```\n */\nexport const withPromptVariables = (\n  task: WorkflowTask,\n  variables: Record<string, unknown>\n): WorkflowTask => ({\n  ...task,\n  inputParameters: {\n    ...task.inputParameters,\n    promptVariables: {\n      ...(task.inputParameters?.promptVariables as\n        | Record<string, unknown>\n        | undefined),\n      ...variables,\n    },\n  },\n});\n","import { TaskType, PullWorkflowMessagesTaskDef } from \"../../../open-api\";\n\n/**\n * Consume messages from the workflow's message queue (WMQ).\n *\n * When messages are available, the task completes with:\n *   output.messages — list of WorkflowMessage objects\n *   output.count    — number of messages returned\n *\n * When the queue is empty, the task stays IN_PROGRESS and is re-evaluated\n * after ~1 second (non-blocking polling behavior).\n *\n * @param taskReferenceName - Unique task reference name within the workflow\n * @param batchSize - Max messages to dequeue per execution (default 1, server cap ~100)\n * @param optional - Whether the task is optional (default undefined)\n */\nexport const pullWorkflowMessages = (\n  taskReferenceName: string,\n  batchSize: number = 1,\n  optional?: boolean\n): PullWorkflowMessagesTaskDef => ({\n  name: taskReferenceName,\n  taskReferenceName,\n  type: TaskType.PULL_WORKFLOW_MESSAGES,\n  inputParameters: { batchSize },\n  optional,\n});\n","import type { TaskDefTypes, WorkflowDef } from \"../../open-api\";\n\nexport const workflow = (name: string, tasks: TaskDefTypes[]): WorkflowDef => ({\n  name,\n  version: 1,\n  tasks,\n  inputParameters: [],\n  timeoutSeconds: 0,\n});\n","import type { TaskDef as OpenApiTaskDef, ExtendedTaskDef } from \"../../open-api\";\n\nexport const taskDefinition = ({\n  name,\n  ownerApp = \"\",\n  description = \"\",\n  retryCount = 3,\n  timeoutSeconds = 3600,\n  inputKeys = [],\n  outputKeys = [],\n  timeoutPolicy = \"TIME_OUT_WF\",\n  retryLogic = \"FIXED\",\n  retryDelaySeconds = 60,\n  responseTimeoutSeconds = 600,\n  concurrentExecLimit = 0,\n  inputTemplate = {},\n  rateLimitPerFrequency = 0,\n  rateLimitFrequencyInSeconds = 1,\n  ownerEmail = \"\",\n  pollTimeoutSeconds = 3600,\n  backoffScaleFactor = 1,\n}: ExtendedTaskDef): OpenApiTaskDef =>\n  ({\n    name,\n    ownerApp,\n    description,\n    retryCount,\n    timeoutSeconds,\n    inputKeys,\n    outputKeys,\n    timeoutPolicy,\n    retryLogic,\n    retryDelaySeconds,\n    responseTimeoutSeconds,\n    concurrentExecLimit,\n    inputTemplate,\n    rateLimitPerFrequency,\n    rateLimitFrequencyInSeconds,\n    ownerEmail,\n    pollTimeoutSeconds,\n    backoffScaleFactor,\n  } as OpenApiTaskDef);\n","import type {\n  WorkflowDef,\n  WorkflowTask,\n  WorkflowRun,\n  StartWorkflowRequest,\n} from \"../../open-api\";\nimport { TaskType } from \"../../open-api\";\nimport type { WorkflowExecutor } from \"../clients/workflow/WorkflowExecutor\";\n\n/**\n * Fluent workflow builder matching the Python SDK's ConductorWorkflow pattern.\n *\n * Provides method chaining for building, configuring, registering, and\n * executing workflows.\n *\n * @example\n * ```typescript\n * const wf = new ConductorWorkflow(executor, \"order_flow\")\n *   .add(simpleTask(\"validate_ref\", \"validate_order\", {}))\n *   .add(simpleTask(\"charge_ref\", \"charge_payment\", {}))\n *   .add(simpleTask(\"confirm_ref\", \"send_confirmation\", {}))\n *   .timeoutSeconds(3600)\n *   .outputParameters({ orderId: \"${workflow.input.orderId}\" });\n *\n * await wf.register(true);\n * const run = await wf.execute({ orderId: \"123\" });\n * ```\n */\nexport class ConductorWorkflow {\n  private readonly _executor: WorkflowExecutor;\n  private readonly _name: string;\n  private _version: number;\n  private _description?: string;\n  private _tasks: WorkflowTask[] = [];\n  private _timeoutPolicy?: \"TIME_OUT_WF\" | \"ALERT_ONLY\";\n  private _timeoutSeconds = 60;\n  private _ownerEmail?: string;\n  private _failureWorkflow = \"\";\n  private _restartable = true;\n  private _inputParameters: string[] = [];\n  private _inputTemplate: Record<string, unknown> = {};\n  private _outputParameters: Record<string, unknown> = {};\n  private _variables: Record<string, unknown> = {};\n  private _workflowStatusListenerEnabled = false;\n  private _workflowStatusListenerSink?: string;\n  private _forkCounter = 0;\n\n  constructor(\n    executor: WorkflowExecutor,\n    name: string,\n    version?: number,\n    description?: string\n  ) {\n    this._executor = executor;\n    this._name = name;\n    this._version = version ?? 1;\n    this._description = description;\n  }\n\n  /** Get the workflow name */\n  getName(): string {\n    return this._name;\n  }\n\n  /** Get the workflow version */\n  getVersion(): number {\n    return this._version;\n  }\n\n  // ── Task Building ───────────────────────────────────────────────\n\n  /** Append one or more tasks sequentially */\n  add(task: WorkflowTask | WorkflowTask[]): this {\n    if (Array.isArray(task)) {\n      this._tasks.push(...task);\n    } else {\n      this._tasks.push(task);\n    }\n    return this;\n  }\n\n  /** Add parallel fork branches with an auto-generated join */\n  fork(branches: WorkflowTask[][]): this {\n    this._forkCounter++;\n    const forkRefName = `__fork_${this._forkCounter}`;\n    const joinRefName = `__join_${this._forkCounter}`;\n\n    const joinOn = branches.map((branch) => {\n      const lastTask = branch[branch.length - 1];\n      return lastTask?.taskReferenceName ?? \"\";\n    });\n\n    this._tasks.push({\n      name: forkRefName,\n      taskReferenceName: forkRefName,\n      type: TaskType.FORK_JOIN,\n      forkTasks: branches,\n    });\n\n    this._tasks.push({\n      name: joinRefName,\n      taskReferenceName: joinRefName,\n      type: TaskType.JOIN,\n      joinOn,\n    });\n\n    return this;\n  }\n\n  /**\n   * Convert this workflow into a SUB_WORKFLOW task with the full definition\n   * embedded inline, matching Python SDK's `InlineSubWorkflowTask`.\n   *\n   * This allows composing workflows without pre-registering the child workflow.\n   *\n   * @param taskReferenceName - Reference name for the sub-workflow task\n   */\n  toSubWorkflowTask(taskReferenceName: string): WorkflowTask {\n    const def = this.toWorkflowDef();\n    const subWorkflowParam: Record<string, unknown> = {\n      name: this._name,\n      version: this._version,\n      workflowDefinition: def,\n    };\n    return {\n      name: taskReferenceName,\n      taskReferenceName,\n      type: TaskType.SUB_WORKFLOW,\n      subWorkflowParam:\n        subWorkflowParam as unknown as WorkflowTask[\"subWorkflowParam\"],\n      inputParameters: {},\n    };\n  }\n\n  // ── Configuration ───────────────────────────────────────────────\n\n  description(desc: string): this {\n    this._description = desc;\n    return this;\n  }\n\n  version(v: number): this {\n    this._version = v;\n    return this;\n  }\n\n  timeoutPolicy(policy: \"TIME_OUT_WF\" | \"ALERT_ONLY\"): this {\n    this._timeoutPolicy = policy;\n    return this;\n  }\n\n  timeoutSeconds(n: number): this {\n    this._timeoutSeconds = n;\n    return this;\n  }\n\n  ownerEmail(email: string): this {\n    this._ownerEmail = email;\n    return this;\n  }\n\n  failureWorkflow(name: string): this {\n    this._failureWorkflow = name;\n    return this;\n  }\n\n  restartable(val: boolean): this {\n    this._restartable = val;\n    return this;\n  }\n\n  /** Set the list of input parameter names */\n  inputParameters(params: string[]): this {\n    this._inputParameters = params;\n    return this;\n  }\n\n  /** Set the input template (default values/expressions for inputs) */\n  inputTemplate(template: Record<string, unknown>): this {\n    this._inputTemplate = template;\n    return this;\n  }\n\n  /** Alias for inputTemplate — set workflow input defaults */\n  workflowInput(input: Record<string, unknown>): this {\n    this._inputTemplate = input;\n    return this;\n  }\n\n  /** Set all output parameters at once */\n  outputParameters(params: Record<string, unknown>): this {\n    this._outputParameters = params;\n    return this;\n  }\n\n  /** Set a single output parameter */\n  outputParameter(key: string, value: unknown): this {\n    this._outputParameters[key] = value;\n    return this;\n  }\n\n  /** Set workflow variables */\n  variables(vars: Record<string, unknown>): this {\n    this._variables = vars;\n    return this;\n  }\n\n  /** Enable workflow status listener with a sink name */\n  enableStatusListener(sinkName: string): this {\n    this._workflowStatusListenerEnabled = true;\n    this._workflowStatusListenerSink = sinkName;\n    return this;\n  }\n\n  /** Disable workflow status listener */\n  disableStatusListener(): this {\n    this._workflowStatusListenerEnabled = false;\n    this._workflowStatusListenerSink = undefined;\n    return this;\n  }\n\n  // ── Reference Helpers ───────────────────────────────────────────\n\n  /** Returns a workflow input reference expression */\n  input(jsonPath: string): string {\n    return `\\${workflow.input.${jsonPath}}`;\n  }\n\n  /** Returns a workflow output reference expression */\n  output(jsonPath?: string): string {\n    if (jsonPath) {\n      return `\\${workflow.output.${jsonPath}}`;\n    }\n    return \"${workflow.output}\";\n  }\n\n  // ── Execution ───────────────────────────────────────────────────\n\n  /** Convert to a WorkflowDef object */\n  toWorkflowDef(): WorkflowDef {\n    return {\n      name: this._name,\n      version: this._version,\n      tasks: this._tasks,\n      timeoutSeconds: this._timeoutSeconds,\n      restartable: this._restartable,\n      inputParameters: this._inputParameters,\n      outputParameters: this._outputParameters,\n      inputTemplate: this._inputTemplate,\n      variables: this._variables,\n      failureWorkflow: this._failureWorkflow,\n      ...(this._description !== undefined && {\n        description: this._description,\n      }),\n      ...(this._timeoutPolicy !== undefined && {\n        timeoutPolicy: this._timeoutPolicy,\n      }),\n      ...(this._ownerEmail !== undefined && { ownerEmail: this._ownerEmail }),\n      ...(this._workflowStatusListenerEnabled && {\n        workflowStatusListenerEnabled: true,\n        workflowStatusListenerSink: this._workflowStatusListenerSink,\n      }),\n    };\n  }\n\n  /** Register this workflow with the Conductor server */\n  async register(overwrite = true): Promise<void> {\n    await this._executor.registerWorkflow(overwrite, this.toWorkflowDef());\n  }\n\n  /** Execute the workflow synchronously and wait for result */\n  async execute(\n    input?: Record<string, unknown>,\n    waitUntilTaskRef?: string,\n    requestId?: string,\n    idempotencyKey?: string,\n    idempotencyStrategy?: \"FAIL\" | \"RETURN_EXISTING\" | \"FAIL_ON_RUNNING\",\n    taskToDomain?: Record<string, string>\n  ): Promise<WorkflowRun> {\n    const request: StartWorkflowRequest = {\n      name: this._name,\n      version: this._version,\n      input,\n      idempotencyKey,\n      idempotencyStrategy,\n      taskToDomain,\n    };\n\n    return this._executor.executeWorkflow(\n      request,\n      this._name,\n      this._version,\n      requestId ?? crypto.randomUUID(),\n      waitUntilTaskRef\n    );\n  }\n\n  /** Start the workflow asynchronously (returns workflow ID) */\n  async startWorkflow(\n    input?: Record<string, unknown>,\n    correlationId?: string,\n    priority?: number,\n    idempotencyKey?: string,\n    idempotencyStrategy?: \"FAIL\" | \"RETURN_EXISTING\" | \"FAIL_ON_RUNNING\",\n    taskToDomain?: Record<string, string>\n  ): Promise<string> {\n    const request: StartWorkflowRequest = {\n      name: this._name,\n      version: this._version,\n      input,\n      correlationId,\n      priority,\n      idempotencyKey,\n      idempotencyStrategy,\n      taskToDomain,\n    };\n    return this._executor.startWorkflow(request);\n  }\n}\n","import os from \"os\";\nimport type { Client } from \"../../../open-api\";\nimport { MetadataResource } from \"../../../open-api/generated\";\nimport {\n  HEALTH_CHECK_INTERVAL_MS,\n  RESTART_BACKOFF_BASE_MS,\n  RESTART_BACKOFF_MAX_MS,\n} from \"../../clients/worker/constants\";\nimport type { TaskRunnerEventsListener } from \"../../clients/worker/events\";\nimport { TaskRunner } from \"../../clients/worker/TaskRunner\";\nimport type { ConductorWorker, HealthMonitorConfig } from \"../../clients/worker/types\";\nimport type { ConductorLogger } from \"../../helpers/logger\";\nimport { DefaultLogger } from \"../../helpers/logger\";\nimport {\n  getWorkerConfigOneline,\n  resolveWorkerConfig,\n} from \"../config/WorkerConfig\";\nimport { getRegisteredWorkers, type RegisteredWorker } from \"../decorators/registry\";\n\n/**\n * Configuration for TaskHandler.\n */\nexport interface TaskHandlerConfig {\n  /**\n   * Conductor client instance.\n   * Required for communicating with Conductor server.\n   */\n  client: Client;\n\n  /**\n   * Additional workers to register manually.\n   * These will be added alongside auto-discovered decorated workers.\n   * Default: []\n   */\n  workers?: ConductorWorker[];\n\n  /**\n   * Whether to scan for @worker decorated functions.\n   * When true, automatically discovers all workers registered via @worker decorator.\n   * Default: true\n   */\n  scanForDecorated?: boolean;\n\n  /**\n   * Modules to import for side-effect registration.\n   * Importing these modules will trigger @worker decorator execution.\n   * Useful when workers are defined in separate files.\n   *\n   * Example: ['./workers/orderWorkers', './workers/paymentWorkers']\n   * Default: []\n   */\n  importModules?: string[];\n\n  /**\n   * Event listeners for worker lifecycle events.\n   * Default: []\n   */\n  eventListeners?: TaskRunnerEventsListener[];\n\n  /**\n   * Logger instance for TaskHandler.\n   * Default: DefaultLogger\n   */\n  logger?: ConductorLogger;\n\n  /**\n   * Health monitoring configuration.\n   * Monitors worker polling loops and auto-restarts on failure.\n   * Default: { enabled: true }\n   */\n  healthMonitor?: HealthMonitorConfig;\n}\n\n/**\n * Internal representation of a worker with resolved configuration.\n */\ninterface ResolvedWorker {\n  worker: ConductorWorker;\n  registered?: RegisteredWorker;\n  resolvedWorkerId: string;\n}\n\n/**\n * TaskHandler orchestrates worker lifecycle and auto-discovery.\n *\n * This is the main entry point for the SDK-style worker framework,\n * matching the Python SDK's TaskHandler architecture.\n *\n * Features:\n * - Auto-discovers workers decorated with @worker\n * - Manages worker lifecycle (start/stop)\n * - Supports both decorated and manual worker registration\n * - Module import for side-effect registration\n * - Event listener support\n * - Health monitoring with auto-restart\n * - Automatic task definition registration\n * - Environment variable configuration override\n *\n * @example\n * Basic usage with auto-discovery:\n * ```typescript\n * const handler = new TaskHandler({\n *   client: conductorClient,\n *   scanForDecorated: true,\n * });\n *\n * await handler.startWorkers();\n *\n * // Later...\n * await handler.stopWorkers();\n * ```\n *\n * @example\n * With event listeners and health monitoring:\n * ```typescript\n * const handler = new TaskHandler({\n *   client: conductorClient,\n *   eventListeners: [metricsCollector],\n *   healthMonitor: {\n *     enabled: true,\n *     healthCheckIntervalMs: 5000,\n *     maxRestartAttempts: 10,\n *   },\n * });\n *\n * await handler.startWorkers();\n * handler.printSummary();\n * ```\n */\nexport class TaskHandler {\n  private client: Client;\n  private resolvedWorkers: ResolvedWorker[] = [];\n  private taskRunners: TaskRunner[] = [];\n  private config: TaskHandlerConfig;\n  private logger: ConductorLogger;\n  private isRunning = false;\n\n  // Health monitoring\n  private healthCheckTimer?: ReturnType<typeof setInterval>;\n  private restartAttempts = new Map<number, number>(); // runner index → attempt count\n  private healthMonitorConfig: HealthMonitorConfig;\n\n  /**\n   * Create a TaskHandler instance with async module imports.\n   * Use this instead of `new TaskHandler()` when using `importModules`.\n   */\n  static async create(config: TaskHandlerConfig): Promise<TaskHandler> {\n    const logger = config.logger ?? new DefaultLogger();\n\n    // Import modules for side-effect registration\n    if (config.importModules && config.importModules.length > 0) {\n      logger.info(\n        `Importing ${config.importModules.length} module(s) for worker discovery...`\n      );\n\n      for (const modulePath of config.importModules) {\n        try {\n          logger.debug(`Importing module: ${modulePath}`);\n          await import(modulePath); // Async ES module import\n          logger.debug(`Successfully imported: ${modulePath}`);\n        } catch (error) {\n          logger.error(\n            `Failed to import module ${modulePath}:`,\n            error instanceof Error ? error.message : error\n          );\n          throw new Error(\n            `Failed to import worker module \"${modulePath}\": ${error instanceof Error ? error.message : String(error)\n            }`\n          );\n        }\n      }\n    }\n\n    // Now create the handler - workers are already registered via decorators\n    return new TaskHandler(config);\n  }\n\n  constructor(config: TaskHandlerConfig) {\n    this.config = config;\n    this.client = config.client;\n    this.logger = config.logger ?? new DefaultLogger();\n    this.healthMonitorConfig = config.healthMonitor ?? { enabled: true };\n\n    // Auto-discover decorated workers\n    if (config.scanForDecorated !== false) {\n      const decoratedWorkers = getRegisteredWorkers();\n      this.logger.info(\n        `Discovered ${decoratedWorkers.length} worker(s) via @worker decorator`\n      );\n\n      for (const registered of decoratedWorkers) {\n        // Resolve configuration: env vars > decorator params > defaults\n        const resolved = resolveWorkerConfig(\n          registered.taskDefName,\n          {\n            pollInterval: registered.pollInterval,\n            domain: registered.domain,\n            workerId: registered.workerId,\n            concurrency: registered.concurrency,\n            registerTaskDef: registered.registerTaskDef,\n            pollTimeout: registered.pollTimeout,\n            paused: undefined,\n            overwriteTaskDef: registered.overwriteTaskDef,\n            strictSchema: registered.strictSchema,\n            leaseExtendEnabled: registered.leaseExtendEnabled,\n          },\n          this.logger\n        );\n\n        const conductorWorker: ConductorWorker = {\n          taskDefName: registered.taskDefName,\n          execute: registered.executeFunction,\n          concurrency: resolved.concurrency,\n          pollInterval: resolved.pollInterval,\n          domain: resolved.domain,\n          leaseExtendEnabled: resolved.leaseExtendEnabled,\n        };\n\n        const resolvedWorkerId =\n          resolved.workerId ?? os.hostname();\n\n        this.resolvedWorkers.push({\n          worker: conductorWorker,\n          registered: { ...registered, ...resolved },\n          resolvedWorkerId,\n        });\n\n        // Log resolved config one-liner\n        this.logger.info(\n          getWorkerConfigOneline(registered.taskDefName, resolved)\n        );\n      }\n    }\n\n    // Add manually provided workers (no config resolution — already configured)\n    if (config.workers && config.workers.length > 0) {\n      this.logger.info(\n        `Adding ${config.workers.length} manually registered worker(s)`\n      );\n      for (const w of config.workers) {\n        this.resolvedWorkers.push({\n          worker: w,\n          resolvedWorkerId: os.hostname(),\n        });\n      }\n    }\n\n    if (this.resolvedWorkers.length === 0) {\n      this.logger.info(\n        \"No workers registered. Did you forget to use @worker decorator or provide workers manually?\"\n      );\n    } else {\n      this.logger.info(\n        `TaskHandler initialized with ${this.resolvedWorkers.length} worker(s)`\n      );\n    }\n  }\n\n  /**\n   * Start all registered workers.\n   *\n   * Registers task definitions (if configured), creates a TaskRunner for each\n   * worker, and begins polling for tasks.\n   * This method is idempotent - calling it multiple times has no effect.\n   */\n  async startWorkers(): Promise<void> {\n    if (this.isRunning) {\n      this.logger.info(\n        \"Workers are already running. Ignoring startWorkers() call.\"\n      );\n      return;\n    }\n\n    if (this.resolvedWorkers.length === 0) {\n      this.logger.info(\"No workers to start.\");\n      return;\n    }\n\n    // Register task definitions before starting polling\n    await this.registerTaskDefinitions();\n\n    this.logger.info(`Starting ${this.resolvedWorkers.length} worker(s)...`);\n\n    for (const { worker, resolvedWorkerId, registered } of\n      this.resolvedWorkers) {\n      try {\n        // Skip paused workers\n        const isPaused = registered?.paused ?? false;\n\n        const runner = new TaskRunner({\n          worker,\n          client: this.client,\n          options: {\n            workerID: resolvedWorkerId,\n            domain: worker.domain,\n            pollInterval: worker.pollInterval,\n            concurrency: worker.concurrency,\n            batchPollingTimeout: registered?.pollTimeout,\n          },\n          logger: this.logger,\n          eventListeners: this.config.eventListeners,\n        });\n\n        if (isPaused) {\n          runner.setPaused(true);\n        }\n\n        runner.startPolling();\n        this.taskRunners.push(runner);\n\n        this.logger.info(\n          `Started worker: ${worker.taskDefName}${worker.domain ? ` (domain: ${worker.domain})` : \"\"\n          }${isPaused ? \" [PAUSED]\" : \"\"}`\n        );\n      } catch (error) {\n        this.logger.error(\n          `Failed to start worker ${worker.taskDefName}:`,\n          error instanceof Error ? error.message : error\n        );\n        throw error;\n      }\n    }\n\n    this.isRunning = true;\n    this.startHealthMonitor();\n    this.logger.info(\"All workers started successfully\");\n  }\n\n  /**\n   * Stop all running workers gracefully.\n   *\n   * Stops polling and waits for in-flight tasks to complete.\n   * This method is idempotent - calling it multiple times has no effect.\n   */\n  async stopWorkers(): Promise<void> {\n    if (!this.isRunning) {\n      this.logger.info(\n        \"Workers are not running. Ignoring stopWorkers() call.\"\n      );\n      return;\n    }\n\n    this.stopHealthMonitor();\n    this.logger.info(`Stopping ${this.taskRunners.length} worker(s)...`);\n\n    const stopPromises = this.taskRunners.map(async (runner, index) => {\n      try {\n        await runner.stopPolling();\n        this.logger.debug(\n          `Stopped worker ${index + 1}/${this.taskRunners.length}`\n        );\n      } catch (error) {\n        this.logger.error(\n          `Error stopping worker ${index + 1}:`,\n          error instanceof Error ? error.message : error\n        );\n      }\n    });\n\n    await Promise.all(stopPromises);\n\n    this.taskRunners = [];\n    this.restartAttempts.clear();\n    this.isRunning = false;\n    this.logger.info(\"All workers stopped\");\n  }\n\n  // ── Task Definition Registration ────────────────────────────────\n\n  /**\n   * Register task definitions for workers that have registerTaskDef=true.\n   * Called automatically by startWorkers() before polling begins.\n   *\n   * Matches Python SDK behavior:\n   * - If overwriteTaskDef=true: PUT /api/metadata/taskdefs (create or update)\n   * - If overwriteTaskDef=false: GET first, then POST only if not found\n   * - Uses taskDef template if provided, otherwise creates minimal definition\n   */\n  private async registerTaskDefinitions(): Promise<void> {\n    for (const { worker, registered } of this.resolvedWorkers) {\n      if (!registered?.registerTaskDef) continue;\n\n      try {\n        // Build task definition from template or create minimal one\n        const baseTaskDef = registered.taskDef\n          ? {\n            ...registered.taskDef,\n            name: worker.taskDefName\n          }\n          : {\n            name: worker.taskDefName,\n            timeoutSeconds: 3600,\n            totalTimeoutSeconds: 0,\n          };\n\n        // Ensure required fields are present for API call\n        const taskDef = {\n          ...baseTaskDef,\n          timeoutSeconds: baseTaskDef.timeoutSeconds ?? 3600,\n          totalTimeoutSeconds: baseTaskDef.totalTimeoutSeconds ?? 0,\n        };\n\n        const overwrite = registered.overwriteTaskDef !== false; // default true\n\n        if (overwrite) {\n          // PUT — creates or updates\n          await MetadataResource.updateTaskDef({\n            client: this.client,\n            body: taskDef,\n          });\n          this.logger.info(\n            `Registered task definition: ${worker.taskDefName} (overwrite=true)`\n          );\n        } else {\n          // Check if exists first, create only if missing\n          try {\n            await MetadataResource.getTaskDef({\n              client: this.client,\n              path: { tasktype: worker.taskDefName },\n            });\n            this.logger.debug(\n              `Task definition already exists: ${worker.taskDefName} (overwrite=false, skipping)`\n            );\n          } catch {\n            // Not found — create it\n            await MetadataResource.registerTaskDef({\n              client: this.client,\n              body: [taskDef],\n            });\n            this.logger.info(\n              `Registered task definition: ${worker.taskDefName} (created new)`\n            );\n          }\n        }\n      } catch (error) {\n        // Non-fatal: log warning but continue — worker can still poll\n        this.logger.error(\n          `Failed to register task definition for ${worker.taskDefName}: ${error instanceof Error ? error.message : String(error)\n          }`\n        );\n      }\n    }\n  }\n\n  // ── Health Monitoring ───────────────────────────────────────────\n\n  private startHealthMonitor(): void {\n    if (this.healthMonitorConfig.enabled === false) return;\n\n    const interval =\n      this.healthMonitorConfig.healthCheckIntervalMs ??\n      HEALTH_CHECK_INTERVAL_MS;\n\n    this.healthCheckTimer = setInterval(() => {\n      this.checkWorkerHealth();\n    }, interval);\n\n    // Don't prevent process exit\n    if (\n      this.healthCheckTimer &&\n      typeof this.healthCheckTimer === \"object\" &&\n      \"unref\" in this.healthCheckTimer\n    ) {\n      this.healthCheckTimer.unref();\n    }\n\n    this.logger.debug(`Health monitor started (interval: ${interval}ms)`);\n  }\n\n  private stopHealthMonitor(): void {\n    if (this.healthCheckTimer) {\n      clearInterval(this.healthCheckTimer);\n      this.healthCheckTimer = undefined;\n      this.logger.debug(\"Health monitor stopped\");\n    }\n  }\n\n  private checkWorkerHealth(): void {\n    for (let i = 0; i < this.taskRunners.length; i++) {\n      const runner = this.taskRunners[i];\n      const resolved = this.resolvedWorkers[i];\n      if (!runner || !resolved) continue;\n      const { worker } = resolved;\n\n      if (!runner.isPolling && this.isRunning) {\n        const attempts = this.restartAttempts.get(i) ?? 0;\n        const maxAttempts =\n          this.healthMonitorConfig.maxRestartAttempts ?? 0;\n\n        // 0 = unlimited\n        if (maxAttempts > 0 && attempts >= maxAttempts) {\n          this.logger.error(\n            `Worker ${worker.taskDefName} has stopped and exceeded max restart attempts (${maxAttempts}). Not restarting.`\n          );\n          continue;\n        }\n\n        // Exponential backoff for restarts\n        const backoffMs = Math.min(\n          RESTART_BACKOFF_BASE_MS * Math.pow(2, attempts),\n          RESTART_BACKOFF_MAX_MS\n        );\n\n        this.logger.info(\n          `Worker ${worker.taskDefName} has stopped unexpectedly. Restarting in ${backoffMs}ms (attempt ${attempts + 1})`\n        );\n\n        this.restartAttempts.set(i, attempts + 1);\n\n        setTimeout(() => {\n          try {\n            if (this.isRunning && !runner.isPolling) {\n              runner.startPolling();\n              this.logger.info(\n                `Worker ${worker.taskDefName} restarted successfully`\n              );\n              // Reset counter on success\n              this.restartAttempts.set(i, 0);\n            }\n          } catch (error) {\n            this.logger.error(\n              `Failed to restart worker ${worker.taskDefName}:`,\n              error instanceof Error ? error.message : error\n            );\n          }\n        }, backoffMs);\n      }\n    }\n  }\n\n  // ── Discovery Summary ───────────────────────────────────────────\n\n  /**\n   * Print a summary of all registered workers and their configurations.\n   * Matches Python SDK's print_summary() function.\n   */\n  printSummary(): void {\n    if (this.resolvedWorkers.length === 0) {\n      this.logger.info(\"No workers registered.\");\n      return;\n    }\n\n    const lines: string[] = [\n      \"\",\n      \"=== Worker Discovery Summary ===\",\n      `Total workers: ${this.resolvedWorkers.length}`,\n      `Running: ${this.isRunning}`,\n      \"\",\n    ];\n\n    for (let i = 0; i < this.resolvedWorkers.length; i++) {\n      const entry = this.resolvedWorkers[i];\n      if (!entry) continue;\n      const { worker, registered, resolvedWorkerId } = entry;\n      const runner = this.taskRunners[i];\n      const status = runner?.isPolling\n        ? \"POLLING\"\n        : this.isRunning\n          ? \"STOPPED\"\n          : \"NOT_STARTED\";\n\n      lines.push(`  Worker: ${worker.taskDefName}`);\n      lines.push(`    Status:       ${status}`);\n      lines.push(`    WorkerId:     ${resolvedWorkerId}`);\n      if (worker.domain) {\n        lines.push(`    Domain:       ${worker.domain}`);\n      }\n      lines.push(\n        `    Concurrency:  ${worker.concurrency ?? \"default (1)\"}`\n      );\n      lines.push(\n        `    PollInterval: ${worker.pollInterval ?? \"default (100ms)\"}${worker.pollInterval ? \"ms\" : \"\"}`\n      );\n      if (registered?.registerTaskDef) {\n        lines.push(`    RegisterDef:  true`);\n      }\n      if (registered?.paused) {\n        lines.push(`    Paused:       true`);\n      }\n      lines.push(\"\");\n    }\n\n    lines.push(\"================================\");\n    this.logger.info(lines.join(\"\\n\"));\n  }\n\n  // ── Health Inspection ─────────────────────────────────────────\n\n  /**\n   * Check if all workers are healthy (all polling).\n   * Returns false if any worker has stopped unexpectedly.\n   */\n  isHealthy(): boolean {\n    if (!this.isRunning) return false;\n    return this.taskRunners.every((runner) => runner.isPolling);\n  }\n\n  /**\n   * Get detailed status of each worker.\n   * Matches Python SDK's get_worker_process_status().\n   */\n  getWorkerStatus(): {\n    taskDefName: string;\n    domain?: string;\n    polling: boolean;\n    paused: boolean;\n    workerId: string;\n    restartCount: number;\n  }[] {\n    return this.resolvedWorkers.map(\n      ({ worker, resolvedWorkerId }, i) => {\n        const runner = this.taskRunners[i];\n        return {\n          taskDefName: worker.taskDefName,\n          domain: worker.domain,\n          polling: runner?.isPolling ?? false,\n          paused: runner?.isPaused ?? false,\n          workerId: resolvedWorkerId,\n          restartCount: this.restartAttempts.get(i) ?? 0,\n        };\n      }\n    );\n  }\n\n  // ── Properties ──────────────────────────────────────────────────\n\n  /** Get the number of registered workers. */\n  get workerCount(): number {\n    return this.resolvedWorkers.length;\n  }\n\n  /** Get the number of running workers. */\n  get runningWorkerCount(): number {\n    return this.taskRunners.length;\n  }\n\n  /** Check if workers are currently running. */\n  get running(): boolean {\n    return this.isRunning;\n  }\n\n  /**\n   * Context manager support (for TypeScript 5.2+ using keyword).\n   * Automatically stops workers when disposed.\n   */\n  async [Symbol.asyncDispose](): Promise<void> {\n    await this.stopWorkers();\n  }\n}\n","import type { ConductorLogger } from \"../../helpers/logger\";\n\n/**\n * Worker configuration properties that can be overridden via environment variables.\n */\nexport interface WorkerConfig {\n  /** Polling interval in milliseconds */\n  pollInterval?: number;\n  \n  /** Task domain for multi-tenancy */\n  domain?: string;\n  \n  /** Unique worker identifier */\n  workerId?: string;\n  \n  /** Maximum concurrent tasks */\n  concurrency?: number;\n  \n  /** Auto-register task definition on startup */\n  registerTaskDef?: boolean;\n  \n  /** Server-side long poll timeout in milliseconds */\n  pollTimeout?: number;\n  \n  /** Whether worker is paused */\n  paused?: boolean;\n  \n  /** Overwrite existing task definitions */\n  overwriteTaskDef?: boolean;\n  \n  /** Enforce strict JSON schema validation */\n  strictSchema?: boolean;\n\n  /** Enable automatic lease extension (heartbeat) for long-running tasks. Default: false. */\n  leaseExtendEnabled?: boolean;\n}\n\n/**\n * Configurable property names and their types.\n */\nconst CONFIGURABLE_PROPERTIES: (keyof WorkerConfig)[] = [\n  \"pollInterval\",\n  \"domain\",\n  \"workerId\",\n  \"concurrency\",\n  \"registerTaskDef\",\n  \"pollTimeout\",\n  \"paused\",\n  \"overwriteTaskDef\",\n  \"strictSchema\",\n  \"leaseExtendEnabled\",\n];\n\n/**\n * Type mapping for configuration properties.\n */\nconst PROPERTY_TYPES: Record<keyof WorkerConfig, \"number\" | \"string\" | \"boolean\"> = {\n  pollInterval: \"number\",\n  domain: \"string\",\n  workerId: \"string\",\n  concurrency: \"number\",\n  registerTaskDef: \"boolean\",\n  pollTimeout: \"number\",\n  paused: \"boolean\",\n  overwriteTaskDef: \"boolean\",\n  strictSchema: \"boolean\",\n  leaseExtendEnabled: \"boolean\",\n};\n\n/**\n * Default values for configuration properties.\n */\nconst DEFAULT_VALUES: Partial<WorkerConfig> = {\n  pollInterval: 100,\n  concurrency: 1,\n  registerTaskDef: false,\n  pollTimeout: 100,\n  paused: false,\n  overwriteTaskDef: true,\n  strictSchema: false,\n  leaseExtendEnabled: false,\n};\n\n/**\n * Parse environment variable value to the expected type.\n */\nfunction parseEnvValue(\n  value: string,\n  expectedType: \"number\" | \"string\" | \"boolean\",\n  logger?: ConductorLogger\n): number | string | boolean | undefined {\n  if (value === undefined || value === null) {\n    return undefined;\n  }\n\n  // Handle boolean values\n  if (expectedType === \"boolean\") {\n    const lower = value.toLowerCase();\n    return lower === \"true\" || lower === \"1\" || lower === \"yes\" || lower === \"on\";\n  }\n\n  // Handle number values\n  if (expectedType === \"number\") {\n    const parsed = Number(value);\n    if (isNaN(parsed)) {\n      logger?.info(`Cannot convert '${value}' to number, ignoring invalid value`);\n      return undefined;\n    }\n    return parsed;\n  }\n\n  // String values\n  return value;\n}\n\n/**\n * Convert camelCase property name to snake_case for environment variables.\n * \n * Examples:\n * - pollInterval → poll_interval\n * - workerId → worker_id\n * - registerTaskDef → register_task_def\n */\nfunction toSnakeCase(camelCase: string): string {\n  return camelCase.replace(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`);\n}\n\n/**\n * Get configuration value from environment variables with hierarchical lookup.\n * \n * Priority order (highest to lowest):\n * 1. CONDUCTOR_WORKER_<WORKER_NAME>_<PROPERTY> - Worker-specific (uppercase)\n * 2. conductor.worker.<worker_name>.<property> - Worker-specific (dotted)\n * 3. CONDUCTOR_WORKER_ALL_<PROPERTY> - Global (uppercase)\n * 4. conductor.worker.all.<property> - Global (dotted)\n * \n * @param workerName - Task definition name\n * @param propertyName - Property name in camelCase (e.g., \"pollInterval\")\n * @param expectedType - Expected type for parsing\n * @param logger - Optional logger for debug messages\n */\nfunction getEnvValue(\n  workerName: string,\n  propertyName: keyof WorkerConfig,\n  expectedType: \"number\" | \"string\" | \"boolean\",\n  logger?: ConductorLogger\n): number | string | boolean | undefined {\n  const snakeCase = toSnakeCase(propertyName);\n\n  // 1. Worker-specific (uppercase): CONDUCTOR_WORKER_<WORKER_NAME>_<PROPERTY>\n  const workerSpecificUpper = `CONDUCTOR_WORKER_${workerName.toUpperCase()}_${snakeCase.toUpperCase()}`;\n  let value = process.env[workerSpecificUpper];\n  if (value !== undefined) {\n    logger?.debug(`Using worker-specific config: ${workerSpecificUpper}=${value}`);\n    return parseEnvValue(value, expectedType, logger);\n  }\n\n  // 2. Worker-specific (dotted): conductor.worker.<worker_name>.<property>\n  const workerSpecificDotted = `conductor.worker.${workerName}.${snakeCase}`;\n  value = process.env[workerSpecificDotted];\n  if (value !== undefined) {\n    logger?.debug(`Using worker-specific config: ${workerSpecificDotted}=${value}`);\n    return parseEnvValue(value, expectedType, logger);\n  }\n\n  // 3. Global (uppercase): CONDUCTOR_WORKER_ALL_<PROPERTY>\n  const globalUpper = `CONDUCTOR_WORKER_ALL_${snakeCase.toUpperCase()}`;\n  value = process.env[globalUpper];\n  if (value !== undefined) {\n    logger?.debug(`Using global worker config: ${globalUpper}=${value}`);\n    return parseEnvValue(value, expectedType, logger);\n  }\n\n  // 4. Global (dotted): conductor.worker.all.<property>\n  const globalDotted = `conductor.worker.all.${snakeCase}`;\n  value = process.env[globalDotted];\n  if (value !== undefined) {\n    logger?.debug(`Using global worker config: ${globalDotted}=${value}`);\n    return parseEnvValue(value, expectedType, logger);\n  }\n\n  return undefined;\n}\n\n/**\n * Resolve worker configuration with hierarchical override.\n * \n * Configuration hierarchy (highest to lowest priority):\n * 1. Worker-specific environment variables\n * 2. Global worker environment variables\n * 3. Code-level defaults (decorator/function parameters)\n * 4. System defaults\n * \n * @param workerName - Task definition name\n * @param codeDefaults - Configuration from code (decorator parameters)\n * @param logger - Optional logger for debug messages\n * \n * @example\n * ```typescript\n * // Code has: pollInterval: 1000\n * // Env has: CONDUCTOR_WORKER_ALL_POLL_INTERVAL=500\n * // Result: pollInterval=500\n * \n * const config = resolveWorkerConfig(\"process_order\", {\n *   pollInterval: 1000,\n *   domain: \"dev\",\n * });\n * // config = { pollInterval: 500, domain: \"dev\", ... }\n * ```\n */\nexport function resolveWorkerConfig(\n  workerName: string,\n  codeDefaults: Partial<WorkerConfig> = {},\n  _logger?: ConductorLogger\n): WorkerConfig {\n  const resolved: Record<string, unknown> = {};\n\n  for (const property of CONFIGURABLE_PROPERTIES) {\n    const expectedType = PROPERTY_TYPES[property];\n\n    // 1. Check environment variables (worker-specific > global)\n    const envValue = getEnvValue(workerName, property, expectedType, _logger);\n    if (envValue !== undefined) {\n      resolved[property] = envValue;\n      continue;\n    }\n\n    // 2. Use code default if provided\n    if (codeDefaults[property] !== undefined) {\n      resolved[property] = codeDefaults[property];\n      continue;\n    }\n\n    // 3. Use system default\n    if (DEFAULT_VALUES[property] !== undefined) {\n      resolved[property] = DEFAULT_VALUES[property];\n    }\n  }\n\n  return resolved as WorkerConfig;\n}\n\n/**\n * Generate a human-readable summary of worker configuration resolution.\n * \n * @param workerName - Task definition name\n * @param resolvedConfig - Resolved configuration\n * @param logger - Optional logger\n * \n * @example\n * ```typescript\n * const summary = getWorkerConfigSummary(\"process_order\", config);\n * console.log(summary);\n * // Worker 'process_order' configuration:\n * //   pollInterval: 500 (from CONDUCTOR_WORKER_ALL_POLL_INTERVAL)\n * //   domain: production (from CONDUCTOR_WORKER_PROCESS_ORDER_DOMAIN)\n * //   concurrency: 5 (from code)\n * ```\n */\nexport function getWorkerConfigSummary(\n  workerName: string,\n  resolvedConfig: WorkerConfig\n): string {\n  const lines: string[] = [`Worker '${workerName}' configuration:`];\n\n  for (const [key, value] of Object.entries(resolvedConfig)) {\n    if (value === undefined || value === null) {\n      continue;\n    }\n\n    const property = key as keyof WorkerConfig;\n    const snakeCase = toSnakeCase(property);\n\n    // Determine source of configuration\n    let source = \"from code\";\n\n    // Check worker-specific env vars\n    const workerSpecificUpper = `CONDUCTOR_WORKER_${workerName.toUpperCase()}_${snakeCase.toUpperCase()}`;\n    const workerSpecificDotted = `conductor.worker.${workerName}.${snakeCase}`;\n\n    if (process.env[workerSpecificUpper] !== undefined) {\n      source = `from ${workerSpecificUpper}`;\n    } else if (process.env[workerSpecificDotted] !== undefined) {\n      source = `from ${workerSpecificDotted}`;\n    } else {\n      // Check global env vars\n      const globalUpper = `CONDUCTOR_WORKER_ALL_${snakeCase.toUpperCase()}`;\n      const globalDotted = `conductor.worker.all.${snakeCase}`;\n\n      if (process.env[globalUpper] !== undefined) {\n        source = `from ${globalUpper}`;\n      } else if (process.env[globalDotted] !== undefined) {\n        source = `from ${globalDotted}`;\n      }\n    }\n\n    lines.push(`  ${property}: ${value} (${source})`);\n  }\n\n  return lines.join(\"\\n\");\n}\n\n/**\n * Generate a compact single-line summary of worker configuration.\n * \n * @param workerName - Task definition name\n * @param resolvedConfig - Resolved configuration\n * \n * @example\n * ```typescript\n * const summary = getWorkerConfigOneline(\"process_order\", config);\n * console.log(summary);\n * // Conductor Worker[name=process_order, pid=12345, status=active, poll_interval=500ms, domain=production, concurrency=5]\n * ```\n */\nexport function getWorkerConfigOneline(\n  workerName: string,\n  resolvedConfig: WorkerConfig\n): string {\n  const parts: string[] = [`name=${workerName}`];\n\n  // Add process ID\n  parts.push(`pid=${process.pid}`);\n\n  // Add status (paused or active)\n  const isPaused = resolvedConfig.paused ?? false;\n  parts.push(`status=${isPaused ? \"paused\" : \"active\"}`);\n\n  // Add other properties in a logical order\n  if (resolvedConfig.pollInterval !== undefined) {\n    parts.push(`poll_interval=${resolvedConfig.pollInterval}ms`);\n  }\n\n  if (resolvedConfig.domain !== undefined) {\n    parts.push(`domain=${resolvedConfig.domain}`);\n  }\n\n  if (resolvedConfig.concurrency !== undefined) {\n    parts.push(`concurrency=${resolvedConfig.concurrency}`);\n  }\n\n  if (resolvedConfig.pollTimeout !== undefined) {\n    parts.push(`poll_timeout=${resolvedConfig.pollTimeout}ms`);\n  }\n\n  if (resolvedConfig.registerTaskDef !== undefined) {\n    parts.push(`register_task_def=${resolvedConfig.registerTaskDef}`);\n  }\n\n  if (resolvedConfig.leaseExtendEnabled !== undefined) {\n    parts.push(`lease_extend_enabled=${resolvedConfig.leaseExtendEnabled}`);\n  }\n\n  return `Conductor Worker[${parts.join(\", \")}]`;\n}\n","import type { Task, TaskResult } from \"../../../open-api\";\nimport type { TaskDef } from \"../../../open-api/generated\";\n\n/**\n * Registered worker metadata stored in the global registry.\n */\nexport interface RegisteredWorker {\n  /** Task definition name (must match workflow task name) */\n  taskDefName: string;\n  \n  /** Worker execution function */\n  executeFunction: (task: Task) => Promise<Omit<TaskResult, \"workflowInstanceId\" | \"taskId\">>;\n  \n  /** Maximum concurrent tasks (default: 1) */\n  concurrency?: number;\n  \n  /** Polling interval in milliseconds (default: 100) */\n  pollInterval?: number;\n  \n  /** Task domain for multi-tenancy (default: undefined) */\n  domain?: string;\n  \n  /** Unique worker identifier (default: auto-generated) */\n  workerId?: string;\n  \n  /** Auto-register task definition on startup (default: false) */\n  registerTaskDef?: boolean;\n  \n  /** Server-side long poll timeout in milliseconds (default: 100) */\n  pollTimeout?: number;\n  \n  /** Task definition template for registration (optional) */\n  taskDef?: TaskDef;\n  \n  /** Overwrite existing task definitions (default: true) */\n  overwriteTaskDef?: boolean;\n  \n  /** Enforce strict JSON schema validation (default: false) */\n  strictSchema?: boolean;\n\n  /** JSON Schema for task input validation (registered alongside task def) */\n  inputSchema?: Record<string, unknown>;\n\n  /** JSON Schema for task output validation (registered alongside task def) */\n  outputSchema?: Record<string, unknown>;\n\n  /** Whether this worker should start in paused state (default: false) */\n  paused?: boolean;\n\n  /** Enable automatic lease extension (heartbeat) for long-running tasks. */\n  leaseExtendEnabled?: boolean;\n}\n\n/**\n * Global worker registry for auto-discovery.\n * Workers registered via @worker decorator are stored here.\n */\nclass WorkerRegistry {\n  private workers = new Map<string, RegisteredWorker>();\n\n  /**\n   * Register a worker in the global registry.\n   * \n   * @param worker - Worker metadata to register\n   */\n  register(worker: RegisteredWorker): void {\n    // Use taskDefName + domain as unique key\n    const key = `${worker.taskDefName}:${worker.domain || \"\"}`;\n    \n    if (this.workers.has(key)) {\n      console.warn(\n        `Worker \"${worker.taskDefName}\" with domain \"${worker.domain || \"default\"}\" ` +\n        `is already registered. Overwriting previous registration.`\n      );\n    }\n    \n    this.workers.set(key, worker);\n  }\n\n  /**\n   * Get all registered workers.\n   * \n   * @returns Array of registered workers\n   */\n  getAll(): RegisteredWorker[] {\n    return Array.from(this.workers.values());\n  }\n\n  /**\n   * Get a specific worker by task definition name and domain.\n   * \n   * @param taskDefName - Task definition name\n   * @param domain - Optional domain\n   * @returns Registered worker or undefined\n   */\n  get(taskDefName: string, domain?: string): RegisteredWorker | undefined {\n    const key = `${taskDefName}:${domain || \"\"}`;\n    return this.workers.get(key);\n  }\n\n  /**\n   * Clear all registered workers.\n   * Useful for testing.\n   */\n  clear(): void {\n    this.workers.clear();\n  }\n\n  /**\n   * Get count of registered workers.\n   */\n  get size(): number {\n    return this.workers.size;\n  }\n}\n\n/**\n * Global singleton registry instance.\n */\nexport const workerRegistry = new WorkerRegistry();\n\n/**\n * Register a worker in the global registry.\n * Used internally by the @worker decorator.\n * \n * @param worker - Worker metadata to register\n */\nexport function registerWorker(worker: RegisteredWorker): void {\n  workerRegistry.register(worker);\n}\n\n/**\n * Get all registered workers from the global registry.\n * Used by TaskHandler for auto-discovery.\n * \n * @returns Array of all registered workers\n */\nexport function getRegisteredWorkers(): RegisteredWorker[] {\n  return workerRegistry.getAll();\n}\n\n/**\n * Get a specific registered worker.\n * \n * @param taskDefName - Task definition name\n * @param domain - Optional domain\n * @returns Registered worker or undefined\n */\nexport function getRegisteredWorker(\n  taskDefName: string,\n  domain?: string\n): RegisteredWorker | undefined {\n  return workerRegistry.get(taskDefName, domain);\n}\n\n/**\n * Clear all registered workers.\n * Primarily for testing purposes.\n */\nexport function clearWorkerRegistry(): void {\n  workerRegistry.clear();\n}\n\n/**\n * Get the number of registered workers.\n */\nexport function getWorkerCount(): number {\n  return workerRegistry.size;\n}\n","import type { JsonSchemaOutput, JsonSchemaType } from \"./generateJsonSchema.js\";\n\n// Augment Reflect with metadata methods from reflect-metadata\n// (available at runtime when reflect-metadata is imported by the consumer)\ndeclare global {\n  // eslint-disable-next-line @typescript-eslint/no-namespace\n  namespace Reflect {\n    function getMetadata(key: unknown, target: object, propertyKey?: string): unknown;\n    function getOwnMetadata(key: unknown, target: object): unknown;\n    function defineMetadata(key: unknown, value: unknown, target: object): void;\n  }\n}\n\nconst SCHEMA_METADATA_KEY = Symbol(\"conductor:schemaField\");\n\n/**\n * Options for the @schemaField property decorator.\n */\nexport interface SchemaFieldOptions {\n  /** JSON Schema type. If omitted, inferred from TypeScript type metadata. */\n  type?: JsonSchemaType;\n  /** Whether this field is required (default: false) */\n  required?: boolean;\n  /** Field description */\n  description?: string;\n  /** For arrays: element type or schema */\n  items?: { type: JsonSchemaType } | SchemaFieldOptions;\n  /** For objects: nested property definitions */\n  properties?: Record<string, SchemaFieldOptions>;\n  /** Default value */\n  default?: unknown;\n  /** Enum values */\n  enum?: unknown[];\n}\n\ninterface StoredFieldMeta extends SchemaFieldOptions {\n  propertyKey: string;\n  designType?: unknown;\n}\n\n/**\n * Type guard for Stage 3 (TypeScript 5.0+) decorator context.\n * New decorators pass (value, context) where context has a `kind` property.\n */\nfunction isNewDecoratorContext(\n  arg: unknown\n): arg is { kind: string; name: string | symbol } {\n  return (\n    typeof arg === \"object\" &&\n    arg !== null &&\n    \"kind\" in arg &&\n    typeof (arg as { kind: string }).kind === \"string\"\n  );\n}\n\n/**\n * Track (class, propertyKey) pairs already stored to avoid duplicates when\n * the initializer runs on each instance (Stage 3 decorator API).\n */\nconst schemaFieldProcessed = new WeakMap<object, Set<string>>();\n\nfunction storeSchemaFieldMetadata(\n  cls: object,\n  propertyKey: string,\n  options: SchemaFieldOptions,\n  designType?: unknown\n): void {\n  const existing: StoredFieldMeta[] =\n    (Reflect.getOwnMetadata(SCHEMA_METADATA_KEY, cls) as StoredFieldMeta[] | undefined) ?? [];\n\n  existing.push({\n    ...options,\n    propertyKey,\n    designType,\n  });\n\n  Reflect.defineMetadata(SCHEMA_METADATA_KEY, existing, cls);\n}\n\n/**\n * Property decorator to define JSON Schema metadata on a class.\n *\n * When used with `generateSchemaFromClass()`, produces a JSON Schema draft-07\n * object from the decorated properties.\n *\n * Supports both TypeScript 5.0+ (Stage 3) and legacy (experimentalDecorators)\n * decorator APIs.\n *\n * If `emitDecoratorMetadata` is enabled in tsconfig.json (legacy mode), the\n * TypeScript type is automatically inferred for `string`, `number`, `boolean` —\n * no need to specify `type` explicitly for those.\n *\n * @example\n * ```typescript\n * class OrderInput {\n *   @schemaField({ required: true })\n *   orderId!: string;\n *\n *   @schemaField()\n *   amount!: number;\n *\n *   @schemaField({ type: \"array\", items: { type: \"string\" } })\n *   items!: string[];\n * }\n *\n * const schema = generateSchemaFromClass(OrderInput);\n * ```\n */\nexport function schemaField(options: SchemaFieldOptions = {}) {\n  return function (\n    targetOrValue: object | undefined,\n    propertyKeyOrContext?: string | { kind: string; name: string | symbol }\n  ): ((initialValue: unknown) => unknown) | undefined {\n    if (isNewDecoratorContext(propertyKeyOrContext)) {\n      // Stage 3 (TypeScript 5.0+) API: (value, context)\n      // Return initializer that runs when instance is created; `this` = instance\n      const propertyKey = String(propertyKeyOrContext.name);\n      return function (this: unknown, initialValue: unknown) {\n        const cls = (this as object).constructor as object;\n        const processed = schemaFieldProcessed.get(cls) ?? new Set<string>();\n        if (!processed.has(propertyKey)) {\n          processed.add(propertyKey);\n          schemaFieldProcessed.set(cls, processed);\n          let designType: unknown;\n          try {\n            designType = Reflect.getMetadata(\n              \"design:type\",\n              this as object,\n              propertyKey\n            );\n          } catch {\n            // reflect-metadata may not emit design:type for Stage 3 decorators\n          }\n          storeSchemaFieldMetadata(cls, propertyKey, options, designType);\n        }\n        return initialValue;\n      };\n    }\n\n    // Legacy (experimentalDecorators) API: (target, propertyKey)\n    const target = targetOrValue as object;\n    const propertyKey = propertyKeyOrContext as string;\n    let designType: unknown;\n    try {\n      designType = Reflect.getMetadata(\"design:type\", target, propertyKey);\n    } catch {\n      // reflect-metadata not available — user must provide type explicitly\n    }\n    storeSchemaFieldMetadata(target.constructor as object, propertyKey, options, designType);\n  };\n}\n\n/**\n * Map TypeScript design:type to JSON Schema type.\n */\nfunction inferType(designType: unknown): JsonSchemaType | undefined {\n  if (designType === String) return \"string\";\n  if (designType === Number) return \"number\";\n  if (designType === Boolean) return \"boolean\";\n  if (designType === Array) return \"array\";\n  if (designType === Object) return \"object\";\n  return undefined;\n}\n\nfunction fieldMetaToProperty(meta: StoredFieldMeta): Record<string, unknown> {\n  const resolvedType =\n    meta.type ?? inferType(meta.designType) ?? \"string\";\n  const prop: Record<string, unknown> = { type: resolvedType };\n\n  if (meta.description !== undefined) prop.description = meta.description;\n  if (meta.default !== undefined) prop.default = meta.default;\n  if (meta.enum !== undefined) prop.enum = meta.enum;\n\n  if (resolvedType === \"array\" && meta.items) {\n    prop.items = { type: (meta.items as { type: string }).type ?? \"string\" };\n  }\n\n  if (resolvedType === \"object\" && meta.properties) {\n    const nested = buildFromFieldOptions(meta.properties);\n    prop.properties = nested.properties;\n    if (nested.required.length > 0) prop.required = nested.required;\n  }\n\n  return prop;\n}\n\nfunction buildFromFieldOptions(\n  fields: Record<string, SchemaFieldOptions>\n): { properties: Record<string, unknown>; required: string[] } {\n  const properties: Record<string, unknown> = {};\n  const required: string[] = [];\n  for (const [name, opts] of Object.entries(fields)) {\n    properties[name] = fieldMetaToProperty({\n      ...opts,\n      propertyKey: name,\n    });\n    if (opts.required) required.push(name);\n  }\n  return { properties, required };\n}\n\n/**\n * Generate a JSON Schema (draft-07) from a class decorated with `@schemaField()`.\n *\n * Uses `reflect-metadata` to read TypeScript type information when available,\n * falling back to explicit `type` in `@schemaField()` options.\n *\n * @param cls - A class constructor with `@schemaField()` decorated properties\n * @returns JSON Schema draft-07 object\n *\n * @example\n * ```typescript\n * class OrderInput {\n *   @schemaField({ required: true })\n *   orderId!: string;\n *\n *   @schemaField()\n *   amount!: number;\n * }\n *\n * const schema = generateSchemaFromClass(OrderInput);\n * // → { \"$schema\": \"...\", type: \"object\", properties: { orderId: { type: \"string\" }, ... }, required: [\"orderId\"] }\n * ```\n */\nexport function generateSchemaFromClass(\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  cls: new (...args: any[]) => unknown\n): JsonSchemaOutput {\n  const fields: StoredFieldMeta[] =\n    (Reflect.getOwnMetadata(SCHEMA_METADATA_KEY, cls) as StoredFieldMeta[] | undefined) ?? [];\n\n  const properties: Record<string, unknown> = {};\n  const required: string[] = [];\n\n  for (const field of fields) {\n    properties[field.propertyKey] = fieldMetaToProperty(field);\n    if (field.required) {\n      required.push(field.propertyKey);\n    }\n  }\n\n  const schema: JsonSchemaOutput = {\n    $schema: \"http://json-schema.org/draft-07/schema#\",\n    type: \"object\",\n    properties,\n  };\n\n  if (required.length > 0) {\n    schema.required = required;\n  }\n\n  return schema;\n}\n","import type { Task, TaskResult } from \"../../../open-api\";\nimport type { TaskDef } from \"../../../open-api/generated\";\nimport { registerWorker, type RegisteredWorker } from \"./registry\";\nimport { simpleTask } from \"../../builders/tasks/simple\";\nimport { generateSchemaFromClass } from \"../schema/decorators\";\n\n/**\n * Options for the @worker decorator.\n */\nexport interface WorkerOptions {\n  /** \n   * Task definition name (must match workflow task name).\n   * This is the only required parameter.\n   */\n  taskDefName: string;\n\n  /**\n   * Maximum concurrent tasks this worker can execute.\n   * - Default: 1\n   * - Controls concurrency level for task execution\n   * - Choose based on workload:\n   *   * CPU-bound: 1-4\n   *   * I/O-bound: 10-50\n   *   * Mixed: 5-20\n   */\n  concurrency?: number;\n\n  /**\n   * Polling interval in milliseconds.\n   * - Default: 100ms\n   * - Lower values = more responsive but higher server load\n   * - Higher values = less server load but slower task pickup\n   * - Recommended: 100-500ms for most use cases\n   */\n  pollInterval?: number;\n\n  /**\n   * Task domain for multi-tenancy.\n   * - Default: undefined (no domain isolation)\n   * - Use when you need to partition tasks across different environments/tenants\n   */\n  domain?: string;\n\n  /**\n   * Unique worker identifier.\n   * - Default: undefined (auto-generated)\n   * - Useful for debugging and tracking which worker executed which task\n   */\n  workerId?: string;\n\n  /**\n   * Auto-register task definition on startup.\n   * - Default: false\n   * - When true: Task definition is created/updated on worker startup\n   * - When false: Task definition must exist in Conductor already\n   * - Recommended: false for production (manage task definitions separately)\n   */\n  registerTaskDef?: boolean;\n\n  /**\n   * Server-side long poll timeout in milliseconds.\n   * - Default: 100ms\n   * - How long the server will wait for a task before returning empty response\n   * - Higher values reduce polling frequency when no tasks available\n   * - Recommended: 100-500ms\n   */\n  pollTimeout?: number;\n\n  /**\n   * Task definition template for registration.\n   * - Default: undefined\n   * - Only used when registerTaskDef=true\n   * - Allows specifying retry policies, timeouts, rate limits, etc.\n   * - The taskDefName parameter takes precedence for the name field\n   */\n  taskDef?: TaskDef;\n\n  /**\n   * Overwrite existing task definitions on server.\n   * - Default: true\n   * - When true: Always updates task definition\n   * - When false: Only creates if doesn't exist\n   * - Can be overridden via env: CONDUCTOR_WORKER_<NAME>_OVERWRITE_TASK_DEF=false\n   */\n  overwriteTaskDef?: boolean;\n\n  /**\n   * Enforce strict JSON schema validation.\n   * - Default: false\n   * - When false: additionalProperties=true (allows extra fields)\n   * - When true: additionalProperties=false (strict validation)\n   * - Can be overridden via env: CONDUCTOR_WORKER_<NAME>_STRICT_SCHEMA=true\n   */\n  strictSchema?: boolean;\n\n  /**\n   * JSON Schema for task input validation.\n   * - Registered alongside the task definition when registerTaskDef=true\n   * - Use the `jsonSchema()` helper to generate from field descriptors\n   */\n  inputSchema?: Record<string, unknown>;\n\n  /**\n   * JSON Schema for task output validation.\n   * - Registered alongside the task definition when registerTaskDef=true\n   * - Use the `jsonSchema()` helper to generate from field descriptors\n   */\n  outputSchema?: Record<string, unknown>;\n\n  /**\n   * Class decorated with `@schemaField()` for auto-generating input schema.\n   * - Alternative to `inputSchema` — schema is generated from class metadata\n   * - Takes precedence over `inputSchema` if both are set\n   */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  inputType?: new (...args: any[]) => unknown;\n\n  /**\n   * Class decorated with `@schemaField()` for auto-generating output schema.\n   * - Alternative to `outputSchema` — schema is generated from class metadata\n   * - Takes precedence over `outputSchema` if both are set\n   */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  outputType?: new (...args: any[]) => unknown;\n\n  /**\n   * Enable automatic lease extension (heartbeat) for long-running tasks.\n   * - Default: false\n   * - When true: sends periodic heartbeats at 80% of the task's responseTimeoutSeconds\n   * - Only applies to tasks where responseTimeoutSeconds >= 1.25s (interval = timeout * 0.8 * 1000 >= 1000ms)\n   * - Can be overridden via env: CONDUCTOR_WORKER_<NAME>_LEASE_EXTEND_ENABLED=true\n   */\n  leaseExtendEnabled?: boolean;\n}\n\n/**\n * Decorator to register a function as a Conductor worker.\n * \n * This decorator enables SDK-style worker registration with auto-discovery,\n * matching the Python SDK's @worker_task pattern.\n * \n * @param options - Worker configuration options\n * \n * @example\n * Basic usage:\n * ```typescript\n * @worker({ taskDefName: \"process_order\" })\n * async function processOrder(task: Task): Promise<TaskResult> {\n *   const orderId = task.inputData.orderId;\n *   // Process order logic\n *   return {\n *     status: \"COMPLETED\",\n *     outputData: { orderId, processed: true },\n *   };\n * }\n * ```\n * \n * @example\n * With concurrency:\n * ```typescript\n * @worker({ taskDefName: \"send_email\", concurrency: 10 })\n * async function sendEmail(task: Task): Promise<TaskResult> {\n *   const { to, subject, body } = task.inputData;\n *   await emailService.send(to, subject, body);\n *   return { status: \"COMPLETED\", outputData: { sent: true } };\n * }\n * ```\n * \n * @example\n * With domain and custom polling:\n * ```typescript\n * @worker({\n *   taskDefName: \"validate_payment\",\n *   domain: \"payments\",\n *   concurrency: 5,\n *   pollInterval: 200,\n * })\n * async function validatePayment(task: Task): Promise<TaskResult> {\n *   // Validation logic\n *   return { status: \"COMPLETED\", outputData: { valid: true } };\n * }\n * ```\n * \n * @example\n * With task definition registration:\n * ```typescript\n * @worker({\n *   taskDefName: \"complex_task\",\n *   registerTaskDef: true,\n *   taskDef: {\n *     retryCount: 3,\n *     retryLogic: \"EXPONENTIAL_BACKOFF\",\n *     timeoutSeconds: 300,\n *   },\n * })\n * async function complexTask(task: Task): Promise<TaskResult> {\n *   // Complex logic\n *   return { status: \"COMPLETED\", outputData: { result: \"...\" } };\n * }\n * ```\n * \n * @example\n * Non-retryable errors:\n * ```typescript\n * import { worker, NonRetryableException } from \"@io-orkes/conductor-javascript/worker\";\n * \n * @worker({ taskDefName: \"validate_order\" })\n * async function validateOrder(task: Task): Promise<TaskResult> {\n *   const order = await getOrder(task.inputData.orderId);\n *   \n *   if (!order) {\n *     // Order doesn't exist - retry won't help\n *     throw new NonRetryableException(`Order ${task.inputData.orderId} not found`);\n *   }\n *   \n *   return { status: \"COMPLETED\", outputData: { validated: true } };\n * }\n * ```\n */\n/** Minimal context shape for Stage 3 method decorators (TypeScript 5.0+). */\ninterface MethodDecoratorContext {\n  kind: string;\n  name: string | symbol;\n}\n\n/**\n * Type guard for Stage 3 (TypeScript 5.0+) decorator context.\n * New decorators pass (value, context) where context has a `kind` property.\n */\nfunction isNewDecoratorContext(arg: unknown): arg is MethodDecoratorContext {\n  return (\n    typeof arg === \"object\" &&\n    arg !== null &&\n    \"kind\" in arg &&\n    typeof (arg as { kind: string }).kind === \"string\"\n  );\n}\n\ntype WorkerMethod = (\n  task: Task\n) => Promise<Omit<TaskResult, \"workflowInstanceId\" | \"taskId\">>;\n\nexport function worker(options: WorkerOptions) {\n  function decorator<T extends WorkerMethod>(\n    value: T,\n    context: MethodDecoratorContext\n  ): T | undefined;\n  function decorator(\n    target: object,\n    propertyKey?: string,\n    descriptor?: PropertyDescriptor\n  ): PropertyDescriptor | WorkerMethod | undefined;\n  function decorator<T extends WorkerMethod>(\n    target: T | object,\n    propertyKeyOrContext?: string | MethodDecoratorContext,\n    descriptor?: PropertyDescriptor\n  ): T | PropertyDescriptor | undefined {\n    // Detect decorator API: new (Stage 3) vs legacy (experimentalDecorators)\n    let executeFunction: (task: Task) => Promise<Omit<TaskResult, \"workflowInstanceId\" | \"taskId\">>;\n    let isNewApi = false;\n\n    if (isNewDecoratorContext(propertyKeyOrContext)) {\n      // New decorator API: target is the method itself\n      executeFunction = target as (task: Task) => Promise<\n        Omit<TaskResult, \"workflowInstanceId\" | \"taskId\">\n      >;\n      isNewApi = true;\n    } else {\n      // Legacy API: descriptor?.value (method) or target (standalone function)\n      const fn = (descriptor?.value ?? target) as (\n        task: Task\n      ) => Promise<Omit<TaskResult, \"workflowInstanceId\" | \"taskId\">>;\n      executeFunction = fn;\n    }\n\n    // Validate that we have a function\n    if (typeof executeFunction !== \"function\") {\n      throw new Error(\n        `@worker decorator can only be applied to functions. ` +\n          `Received: ${typeof executeFunction}`\n      );\n    }\n\n    // Validate required options\n    if (!options.taskDefName) {\n      throw new Error(\n        `@worker decorator requires 'taskDefName' option. ` +\n          `Example: @worker({ taskDefName: \"my_task\" })`\n      );\n    }\n\n    // Auto-generate schemas from inputType/outputType if provided\n    let resolvedInputSchema = options.inputSchema;\n    let resolvedOutputSchema = options.outputSchema;\n\n    if (options.inputType) {\n      resolvedInputSchema = generateSchemaFromClass(\n        options.inputType\n      ) as unknown as Record<string, unknown>;\n    }\n    if (options.outputType) {\n      resolvedOutputSchema = generateSchemaFromClass(\n        options.outputType\n      ) as unknown as Record<string, unknown>;\n    }\n\n    // Create registered worker metadata\n    const registeredWorker: RegisteredWorker = {\n      taskDefName: options.taskDefName,\n      executeFunction,\n      concurrency: options.concurrency,\n      pollInterval: options.pollInterval,\n      domain: options.domain,\n      workerId: options.workerId,\n      registerTaskDef: options.registerTaskDef,\n      pollTimeout: options.pollTimeout,\n      taskDef: options.taskDef,\n      overwriteTaskDef: options.overwriteTaskDef,\n      strictSchema: options.strictSchema,\n      inputSchema: resolvedInputSchema,\n      outputSchema: resolvedOutputSchema,\n      leaseExtendEnabled: options.leaseExtendEnabled,\n    };\n\n    // Register in global registry for auto-discovery\n    registerWorker(registeredWorker);\n\n    // Create dual-mode wrapper that supports both execution and workflow builder mode\n    const dualModeFunction = function (this: unknown, ...args: unknown[]) {\n      // Check if called in workflow builder mode:\n      //   myWorker({ taskRefName: \"step_1\", inputParameters: { ... } })\n      if (\n        args.length === 1 &&\n        args[0] &&\n        typeof args[0] === \"object\" &&\n        \"taskRefName\" in (args[0] as Record<string, unknown>)\n      ) {\n        const builderArgs = args[0] as {\n          taskRefName: string;\n          inputParameters?: Record<string, unknown>;\n        };\n        return simpleTask(\n          builderArgs.taskRefName,\n          options.taskDefName,\n          builderArgs.inputParameters ?? {}\n        );\n      }\n      // Normal execution mode\n      return (executeFunction as (...args: unknown[]) => unknown).apply(\n        this,\n        args\n      );\n    };\n\n    // Preserve original function name\n    Object.defineProperty(dualModeFunction, \"name\", {\n      value: (executeFunction as (...args: unknown[]) => unknown).name,\n      configurable: true,\n    });\n\n    if (isNewApi) {\n      // New decorator API: return replacement function\n      return dualModeFunction as unknown as T;\n    }\n\n    // Legacy API\n    if (descriptor) {\n      descriptor.value = dualModeFunction;\n      return descriptor;\n    }\n    return dualModeFunction as unknown as T;\n  }\n\n  return decorator;\n}\n","import type {\n  TaskRunnerEventsListener,\n  PollStarted,\n  PollCompleted,\n  PollFailure,\n  TaskExecutionStarted,\n  TaskExecutionCompleted,\n  TaskExecutionFailure,\n  TaskUpdateCompleted,\n  TaskUpdateFailure,\n} from \"../../clients/worker/events\";\n\n/**\n * Configuration for MetricsCollector.\n */\nexport interface MetricsCollectorConfig {\n  /** Prometheus metric name prefix (default: \"conductor_worker\") */\n  prefix?: string;\n  /** If set, auto-starts MetricsServer on this port */\n  httpPort?: number;\n  /** If set, periodically writes Prometheus metrics to this file path */\n  filePath?: string;\n  /** File write interval in milliseconds (default: 5000) */\n  fileWriteIntervalMs?: number;\n  /** Sliding window size for quantile calculations (default: 1000) */\n  slidingWindowSize?: number;\n  /**\n   * Use prom-client for native Prometheus integration.\n   * Requires `prom-client` to be installed (`npm install prom-client`).\n   * When enabled, metrics are registered in prom-client's default registry\n   * and `toPrometheusText()` delegates to `prom-client.register.metrics()`.\n   * Falls back to custom text format if prom-client is not installed.\n   */\n  usePromClient?: boolean;\n}\n\n/**\n * Collected worker metrics.\n */\nexport interface WorkerMetrics {\n  /** Total polls by taskType */\n  pollTotal: Map<string, number>;\n  /** Poll errors by taskType */\n  pollErrorTotal: Map<string, number>;\n  /** Task executions completed by taskType */\n  taskExecutionTotal: Map<string, number>;\n  /** Task execution errors by \"taskType:exceptionName\" */\n  taskExecutionErrorTotal: Map<string, number>;\n  /** Task update failures by taskType */\n  taskUpdateFailureTotal: Map<string, number>;\n  /** Task ack errors by taskType */\n  taskAckErrorTotal: Map<string, number>;\n  /** Task execution queue full by taskType */\n  taskExecutionQueueFullTotal: Map<string, number>;\n  /** Thread/process uncaught exceptions (global counter) */\n  uncaughtExceptionTotal: number;\n  /** Worker restart count (global counter) */\n  workerRestartTotal: number;\n  /** Task paused count by taskType */\n  taskPausedTotal: Map<string, number>;\n  /** Workflow start errors */\n  workflowStartErrorTotal: number;\n  /** External payload used count by type (workflow_input/task_output) */\n  externalPayloadUsedTotal: Map<string, number>;\n  /** Poll duration observations in ms by taskType */\n  pollDurationMs: Map<string, number[]>;\n  /** Execution duration observations in ms by taskType */\n  executionDurationMs: Map<string, number[]>;\n  /** Update duration observations in ms by taskType */\n  updateDurationMs: Map<string, number[]>;\n  /** Output size observations in bytes by taskType */\n  outputSizeBytes: Map<string, number[]>;\n  /** Workflow input size observations in bytes */\n  workflowInputSizeBytes: Map<string, number[]>;\n  /** API request duration observations in ms by \"method:uri:status\" */\n  apiRequestDurationMs: Map<string, number[]>;\n}\n\nconst QUANTILES = [0.5, 0.75, 0.9, 0.95, 0.99] as const;\n\n/**\n * Calculate quantiles from sorted array using linear interpolation.\n */\nfunction computeQuantile(sorted: number[], q: number): number {\n  if (sorted.length === 0) return 0;\n  if (sorted.length === 1) return sorted[0];\n  const pos = q * (sorted.length - 1);\n  const lower = Math.floor(pos);\n  const upper = Math.ceil(pos);\n  if (lower === upper) return sorted[lower];\n  return sorted[lower] + (pos - lower) * (sorted[upper] - sorted[lower]);\n}\n\n/**\n * Built-in metrics collector implementing TaskRunnerEventsListener.\n *\n * Collects 19 metric types matching the Python SDK's MetricsCollector,\n * with sliding-window quantile support (p50, p75, p90, p95, p99).\n *\n * @example\n * ```typescript\n * const metrics = new MetricsCollector({ httpPort: 9090 });\n *\n * const handler = new TaskHandler({\n *   client,\n *   eventListeners: [metrics],\n * });\n *\n * await handler.startWorkers();\n * // GET http://localhost:9090/metrics  — Prometheus format\n * // GET http://localhost:9090/health   — {\"status\":\"UP\"}\n * ```\n */\nexport class MetricsCollector implements TaskRunnerEventsListener {\n  private metrics: WorkerMetrics;\n  private readonly _prefix: string;\n  private readonly _slidingWindowSize: number;\n  private _server?: import(\"./MetricsServer.js\").MetricsServer;\n  private _fileTimer?: ReturnType<typeof setInterval>;\n  private _promRegistry?: import(\"./PrometheusRegistry.js\").PrometheusRegistry;\n\n  constructor(config?: MetricsCollectorConfig) {\n    this.metrics = this.createEmptyMetrics();\n    this._prefix = config?.prefix ?? \"conductor_worker\";\n    this._slidingWindowSize = config?.slidingWindowSize ?? 1000;\n    if (config?.usePromClient) {\n      void this.initPromClient();\n    }\n    if (config?.httpPort) {\n      void this.startServer(config.httpPort);\n    }\n    if (config?.filePath) {\n      this.startFileWriter(\n        config.filePath,\n        config.fileWriteIntervalMs ?? 5000\n      );\n    }\n  }\n\n  private async initPromClient(): Promise<void> {\n    const { PrometheusRegistry } = await import(\"./PrometheusRegistry.js\");\n    this._promRegistry = new PrometheusRegistry();\n    await this._promRegistry.initialize(this._prefix);\n  }\n\n  private async startServer(port: number): Promise<void> {\n    const { MetricsServer } = await import(\"./MetricsServer.js\");\n    this._server = new MetricsServer(this, port);\n    await this._server.start();\n  }\n\n  private startFileWriter(filePath: string, intervalMs: number): void {\n    const doWrite = async () => {\n      try {\n        const { writeFile } = await import(\"node:fs/promises\");\n        await writeFile(filePath, this.toPrometheusText(), \"utf-8\");\n      } catch {\n        // Silently ignore file write errors\n      }\n    };\n    // Immediate first write, then periodic\n    void doWrite();\n    this._fileTimer = setInterval(doWrite, intervalMs);\n    // Unref so the timer doesn't prevent process exit\n    if (typeof this._fileTimer === \"object\" && \"unref\" in this._fileTimer) {\n      this._fileTimer.unref();\n    }\n  }\n\n  private createEmptyMetrics(): WorkerMetrics {\n    return {\n      pollTotal: new Map(),\n      pollErrorTotal: new Map(),\n      taskExecutionTotal: new Map(),\n      taskExecutionErrorTotal: new Map(),\n      taskUpdateFailureTotal: new Map(),\n      taskAckErrorTotal: new Map(),\n      taskExecutionQueueFullTotal: new Map(),\n      uncaughtExceptionTotal: 0,\n      workerRestartTotal: 0,\n      taskPausedTotal: new Map(),\n      workflowStartErrorTotal: 0,\n      externalPayloadUsedTotal: new Map(),\n      pollDurationMs: new Map(),\n      executionDurationMs: new Map(),\n      updateDurationMs: new Map(),\n      outputSizeBytes: new Map(),\n      workflowInputSizeBytes: new Map(),\n      apiRequestDurationMs: new Map(),\n    };\n  }\n\n  private increment(map: Map<string, number>, key: string): void {\n    map.set(key, (map.get(key) ?? 0) + 1);\n  }\n\n  private observe(\n    map: Map<string, number[]>,\n    key: string,\n    value: number\n  ): void {\n    let arr = map.get(key);\n    if (!arr) {\n      arr = [];\n      map.set(key, arr);\n    }\n    arr.push(value);\n    // Sliding window: keep only the last N observations\n    if (arr.length > this._slidingWindowSize) {\n      arr.splice(0, arr.length - this._slidingWindowSize);\n    }\n  }\n\n  private incrementCounter(\n    map: Map<string, number>,\n    key: string,\n    promKey: string,\n    labelName: string\n  ): void {\n    this.increment(map, key);\n    this._promRegistry?.incrementCounter(promKey, { [labelName]: key });\n  }\n\n  private observeSummary(\n    map: Map<string, number[]>,\n    key: string,\n    value: number,\n    promKey: string,\n    labelName: string\n  ): void {\n    this.observe(map, key, value);\n    this._promRegistry?.observeSummary(promKey, { [labelName]: key }, value);\n  }\n\n  // ── Event Listener Methods ──────────────────────────────────────\n\n  onPollStarted(event: PollStarted): void {\n    this.incrementCounter(this.metrics.pollTotal, event.taskType, \"poll_total\", \"task_type\");\n  }\n\n  onPollCompleted(event: PollCompleted): void {\n    this.observeSummary(this.metrics.pollDurationMs, event.taskType, event.durationMs, \"poll_time\", \"task_type\");\n  }\n\n  onPollFailure(event: PollFailure): void {\n    this.incrementCounter(this.metrics.pollErrorTotal, event.taskType, \"poll_error_total\", \"task_type\");\n    this.observeSummary(this.metrics.pollDurationMs, event.taskType, event.durationMs, \"poll_time\", \"task_type\");\n  }\n\n  onTaskExecutionStarted(_event: TaskExecutionStarted): void {\n    // Counted on completion\n  }\n\n  onTaskExecutionCompleted(event: TaskExecutionCompleted): void {\n    this.incrementCounter(this.metrics.taskExecutionTotal, event.taskType, \"execute_total\", \"task_type\");\n    this.observeSummary(this.metrics.executionDurationMs, event.taskType, event.durationMs, \"execute_time\", \"task_type\");\n    if (event.outputSizeBytes !== undefined) {\n      this.observeSummary(this.metrics.outputSizeBytes, event.taskType, event.outputSizeBytes, \"result_size\", \"task_type\");\n    }\n  }\n\n  onTaskExecutionFailure(event: TaskExecutionFailure): void {\n    const key = `${event.taskType}:${event.cause?.name ?? \"Error\"}`;\n    this.incrementCounter(this.metrics.taskExecutionErrorTotal, key, \"execute_error_total\", \"task_type\");\n    this.observeSummary(this.metrics.executionDurationMs, event.taskType, event.durationMs, \"execute_time\", \"task_type\");\n  }\n\n  onTaskUpdateCompleted(event: TaskUpdateCompleted): void {\n    this.observeSummary(this.metrics.updateDurationMs, event.taskType, event.durationMs, \"update_time\", \"task_type\");\n  }\n\n  onTaskUpdateFailure(event: TaskUpdateFailure): void {\n    this.incrementCounter(this.metrics.taskUpdateFailureTotal, event.taskType, \"update_error_total\", \"task_type\");\n  }\n\n  // ── Direct Recording Methods (for code outside event system) ───\n\n  /** Record a task execution queue full event */\n  recordTaskExecutionQueueFull(taskType: string): void {\n    this.incrementCounter(this.metrics.taskExecutionQueueFullTotal, taskType, \"queue_full_total\", \"task_type\");\n  }\n\n  /** Record an uncaught exception */\n  recordUncaughtException(): void {\n    this.metrics.uncaughtExceptionTotal++;\n    this._promRegistry?.incrementCounter(\"uncaught_total\", {});\n  }\n\n  /** Record a worker restart */\n  recordWorkerRestart(): void {\n    this.metrics.workerRestartTotal++;\n    this._promRegistry?.incrementCounter(\"restart_total\", {});\n  }\n\n  /** Record a task paused event */\n  recordTaskPaused(taskType: string): void {\n    this.incrementCounter(this.metrics.taskPausedTotal, taskType, \"paused_total\", \"task_type\");\n  }\n\n  /** Record a task ack error */\n  recordTaskAckError(taskType: string): void {\n    this.incrementCounter(this.metrics.taskAckErrorTotal, taskType, \"ack_error_total\", \"task_type\");\n  }\n\n  /** Record a workflow start error */\n  recordWorkflowStartError(): void {\n    this.metrics.workflowStartErrorTotal++;\n    this._promRegistry?.incrementCounter(\"wf_start_error_total\", {});\n  }\n\n  /** Record external payload usage */\n  recordExternalPayloadUsed(payloadType: string): void {\n    this.incrementCounter(this.metrics.externalPayloadUsedTotal, payloadType, \"external_payload_total\", \"payload_type\");\n  }\n\n  /** Record workflow input size */\n  recordWorkflowInputSize(workflowType: string, sizeBytes: number): void {\n    this.observeSummary(this.metrics.workflowInputSizeBytes, workflowType, sizeBytes, \"wf_input_size\", \"workflow_type\");\n  }\n\n  /** Record API request duration */\n  recordApiRequestTime(\n    method: string,\n    uri: string,\n    status: number,\n    durationMs: number\n  ): void {\n    const key = `${method}:${uri}:${status}`;\n    this.observeSummary(this.metrics.apiRequestDurationMs, key, durationMs, \"api_request\", \"endpoint\");\n  }\n\n  // ── Public API ──────────────────────────────────────────────────\n\n  /** Get a snapshot of all collected metrics */\n  getMetrics(): Readonly<WorkerMetrics> {\n    return this.metrics;\n  }\n\n  /** Reset all collected metrics */\n  reset(): void {\n    this.metrics = this.createEmptyMetrics();\n  }\n\n  /** Stop the auto-started metrics HTTP server and file writer (if any) */\n  async stop(): Promise<void> {\n    if (this._fileTimer) {\n      clearInterval(this._fileTimer);\n      this._fileTimer = undefined;\n    }\n    if (this._server) {\n      await this._server.stop();\n      this._server = undefined;\n    }\n  }\n\n  /**\n   * Get the content type for the Prometheus metrics endpoint.\n   * Returns prom-client's content type when available, otherwise standard Prometheus text format.\n   */\n  getContentType(): string {\n    return this._promRegistry?.contentType ?? \"text/plain; version=0.0.4; charset=utf-8\";\n  }\n\n  /**\n   * Render all collected metrics in Prometheus exposition format.\n   * If prom-client is available and `usePromClient: true`, delegates to prom-client's registry.\n   * Otherwise uses built-in rendering with p50/p75/p90/p95/p99 quantiles.\n   *\n   * @param prefix - Metric name prefix (defaults to constructor config or \"conductor_worker\")\n   * @returns Prometheus text format string\n   */\n  /**\n   * Async version of toPrometheusText.\n   * When prom-client is available, returns its native registry output.\n   * Otherwise falls back to the built-in text format.\n   */\n  async toPrometheusTextAsync(): Promise<string> {\n    if (this._promRegistry?.available) {\n      return this._promRegistry.metrics();\n    }\n    return this.toPrometheusText();\n  }\n\n  toPrometheusText(prefix?: string): string {\n    const p = prefix ?? this._prefix;\n    const lines: string[] = [];\n\n    // ── Labelled counters ──\n    const labelledCounters: {\n      name: string;\n      help: string;\n      data: Map<string, number>;\n      labelName: string;\n    }[] = [\n      {\n        name: `${p}_task_poll_total`,\n        help: \"Total number of task polls\",\n        data: this.metrics.pollTotal,\n        labelName: \"task_type\",\n      },\n      {\n        name: `${p}_task_poll_error_total`,\n        help: \"Total number of task poll errors\",\n        data: this.metrics.pollErrorTotal,\n        labelName: \"task_type\",\n      },\n      {\n        name: `${p}_task_execute_total`,\n        help: \"Total number of task executions\",\n        data: this.metrics.taskExecutionTotal,\n        labelName: \"task_type\",\n      },\n      {\n        name: `${p}_task_execute_error_total`,\n        help: \"Total number of task execution errors\",\n        data: this.metrics.taskExecutionErrorTotal,\n        labelName: \"task_type\",\n      },\n      {\n        name: `${p}_task_update_error_total`,\n        help: \"Total number of task update failures\",\n        data: this.metrics.taskUpdateFailureTotal,\n        labelName: \"task_type\",\n      },\n      {\n        name: `${p}_task_ack_error_total`,\n        help: \"Total number of task ack errors\",\n        data: this.metrics.taskAckErrorTotal,\n        labelName: \"task_type\",\n      },\n      {\n        name: `${p}_task_execution_queue_full_total`,\n        help: \"Total number of task execution queue full events\",\n        data: this.metrics.taskExecutionQueueFullTotal,\n        labelName: \"task_type\",\n      },\n      {\n        name: `${p}_task_paused_total`,\n        help: \"Total number of task paused events\",\n        data: this.metrics.taskPausedTotal,\n        labelName: \"task_type\",\n      },\n      {\n        name: `${p}_external_payload_used_total`,\n        help: \"Total number of external payload usage events\",\n        data: this.metrics.externalPayloadUsedTotal,\n        labelName: \"payload_type\",\n      },\n    ];\n\n    for (const counter of labelledCounters) {\n      if (counter.data.size === 0) continue;\n      lines.push(`# HELP ${counter.name} ${counter.help}`);\n      lines.push(`# TYPE ${counter.name} counter`);\n      for (const [label, value] of counter.data) {\n        lines.push(\n          `${counter.name}{${counter.labelName}=\"${label}\"} ${value}`\n        );\n      }\n    }\n\n    // ── Global counters (no labels) ──\n    const globalCounters: {\n      name: string;\n      help: string;\n      value: number;\n    }[] = [\n      {\n        name: `${p}_thread_uncaught_exceptions_total`,\n        help: \"Total uncaught exceptions\",\n        value: this.metrics.uncaughtExceptionTotal,\n      },\n      {\n        name: `${p}_worker_restart_total`,\n        help: \"Total worker restarts\",\n        value: this.metrics.workerRestartTotal,\n      },\n      {\n        name: `${p}_workflow_start_error_total`,\n        help: \"Total workflow start errors\",\n        value: this.metrics.workflowStartErrorTotal,\n      },\n    ];\n\n    for (const counter of globalCounters) {\n      if (counter.value === 0) continue;\n      lines.push(`# HELP ${counter.name} ${counter.help}`);\n      lines.push(`# TYPE ${counter.name} counter`);\n      lines.push(`${counter.name} ${counter.value}`);\n    }\n\n    // ── Summaries with quantiles ──\n    const summaries: {\n      name: string;\n      help: string;\n      data: Map<string, number[]>;\n      labelName: string;\n    }[] = [\n      {\n        name: `${p}_task_poll_time`,\n        help: \"Task poll duration in milliseconds\",\n        data: this.metrics.pollDurationMs,\n        labelName: \"task_type\",\n      },\n      {\n        name: `${p}_task_execute_time`,\n        help: \"Task execution duration in milliseconds\",\n        data: this.metrics.executionDurationMs,\n        labelName: \"task_type\",\n      },\n      {\n        name: `${p}_task_update_time`,\n        help: \"Task update duration in milliseconds\",\n        data: this.metrics.updateDurationMs,\n        labelName: \"task_type\",\n      },\n      {\n        name: `${p}_task_result_size_bytes`,\n        help: \"Task result output size in bytes\",\n        data: this.metrics.outputSizeBytes,\n        labelName: \"task_type\",\n      },\n      {\n        name: `${p}_workflow_input_size_bytes`,\n        help: \"Workflow input payload size in bytes\",\n        data: this.metrics.workflowInputSizeBytes,\n        labelName: \"workflow_type\",\n      },\n      {\n        name: `${p}_http_api_client_request`,\n        help: \"API request duration in milliseconds\",\n        data: this.metrics.apiRequestDurationMs,\n        labelName: \"endpoint\",\n      },\n    ];\n\n    for (const summary of summaries) {\n      if (summary.data.size === 0) continue;\n      lines.push(`# HELP ${summary.name} ${summary.help}`);\n      lines.push(`# TYPE ${summary.name} summary`);\n      for (const [label, values] of summary.data) {\n        const sorted = [...values].sort((a, b) => a - b);\n        const count = sorted.length;\n        const sum = sorted.reduce((a, b) => a + b, 0);\n        for (const q of QUANTILES) {\n          const val = computeQuantile(sorted, q);\n          lines.push(\n            `${summary.name}{${summary.labelName}=\"${label}\",quantile=\"${q}\"} ${val}`\n          );\n        }\n        lines.push(\n          `${summary.name}_count{${summary.labelName}=\"${label}\"} ${count}`\n        );\n        lines.push(\n          `${summary.name}_sum{${summary.labelName}=\"${label}\"} ${sum}`\n        );\n      }\n    }\n\n    lines.push(\"\"); // trailing newline\n    return lines.join(\"\\n\");\n  }\n}\n","export {\n  MetricsCollector,\n  type MetricsCollectorConfig,\n  type WorkerMetrics,\n} from \"./MetricsCollector\";\nexport { MetricsServer } from \"./MetricsServer\";\nexport { PrometheusRegistry } from \"./PrometheusRegistry\";\n","/**\n * Lightweight JSON Schema (draft-07) generator from declarative field descriptions.\n *\n * TypeScript has no runtime type reflection, so this provides a practical\n * alternative: describe your fields declaratively and get a valid JSON Schema object.\n *\n * @example\n * ```typescript\n * const schema = jsonSchema({\n *   orderId: { type: \"string\", required: true },\n *   amount: { type: \"number\" },\n *   items: { type: \"array\", items: { type: \"string\" } },\n *   address: {\n *     type: \"object\",\n *     properties: {\n *       street: { type: \"string\", required: true },\n *       city: { type: \"string\" },\n *     },\n *   },\n * });\n * ```\n */\n\nexport type JsonSchemaType =\n  | \"string\"\n  | \"number\"\n  | \"integer\"\n  | \"boolean\"\n  | \"object\"\n  | \"array\"\n  | \"null\";\n\nexport interface FieldDescriptor {\n  type: JsonSchemaType;\n  required?: boolean;\n  description?: string;\n  /** For arrays: schema of array items */\n  items?: FieldDescriptor;\n  /** For objects: nested property descriptors */\n  properties?: Record<string, FieldDescriptor>;\n  /** Default value */\n  default?: unknown;\n  /** Enum values */\n  enum?: unknown[];\n}\n\nexport interface JsonSchemaOutput {\n  $schema: string;\n  type: \"object\";\n  properties: Record<string, unknown>;\n  required?: string[];\n}\n\nfunction fieldToSchemaProperty(field: FieldDescriptor): Record<string, unknown> {\n  const prop: Record<string, unknown> = { type: field.type };\n\n  if (field.description !== undefined) {\n    prop.description = field.description;\n  }\n\n  if (field.default !== undefined) {\n    prop.default = field.default;\n  }\n\n  if (field.enum !== undefined) {\n    prop.enum = field.enum;\n  }\n\n  if (field.type === \"array\" && field.items) {\n    prop.items = fieldToSchemaProperty(field.items);\n  }\n\n  if (field.type === \"object\" && field.properties) {\n    const nested = buildObjectSchema(field.properties);\n    prop.properties = nested.properties;\n    if (nested.required && nested.required.length > 0) {\n      prop.required = nested.required;\n    }\n  }\n\n  return prop;\n}\n\nfunction buildObjectSchema(fields: Record<string, FieldDescriptor>): {\n  properties: Record<string, unknown>;\n  required: string[];\n} {\n  const properties: Record<string, unknown> = {};\n  const required: string[] = [];\n\n  for (const [name, field] of Object.entries(fields)) {\n    properties[name] = fieldToSchemaProperty(field);\n    if (field.required) {\n      required.push(name);\n    }\n  }\n\n  return { properties, required };\n}\n\n/**\n * Generate a JSON Schema (draft-07) from declarative field descriptions.\n */\nexport function jsonSchema(\n  fields: Record<string, FieldDescriptor>\n): JsonSchemaOutput {\n  const { properties, required } = buildObjectSchema(fields);\n  const schema: JsonSchemaOutput = {\n    $schema: \"http://json-schema.org/draft-07/schema#\",\n    type: \"object\",\n    properties,\n  };\n  if (required.length > 0) {\n    schema.required = required;\n  }\n  return schema;\n}\n"],"mappings":"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","names":["metrics","ret","metrics","isCompatible","diag","DiagComponentLogger","DiagLogLevel","DiagAPI","__spreadArray","__read","BaggageImpl","__read","BaseContext","context","DiagConsoleLogger","NoopMeter","NoopMetric","NoopCounterMetric","NoopUpDownCounterMetric","NoopGaugeMetric","NoopHistogramMetric","NoopObservableMetric","NoopObservableCounterMetric","NoopObservableGaugeMetric","NoopObservableUpDownCounterMetric","ValueType","NoopContextManager","__spreadArray","__read","API_NAME","init_context","ContextAPI","context","__spreadArray","__read","TraceFlags","NonRecordingSpan","context","init_context","init_context","NoopTracer","context","ProxyTracer","context","NoopTracerProvider","ProxyTracerProvider","SamplingDecision","SpanKind","SpanStatusCode","TraceStateImpl","init_utils","init_context","diag","NoopMeterProvider","API_NAME","MetricsAPI","NoopTextMapPropagator","context","context","init_context","API_NAME","PropagationAPI","context","API_NAME","TraceAPI","diag","init_utils","value","process","metrics","metrics","metrics","worker","joinedValues","config","request","url","client","humanTask","client","client","client","client","client","client","client","client","client","client","client","client","client","Consistency","ReturnStrategy","TaskResultStatusEnum","TaskType","ServiceType","client","workflow","client","DEFAULT_POLL_INTERVAL","DEFAULT_POLL_INTERVAL","context","DEFAULT_POLL_INTERVAL","worker","client","updateDurationMs","context","contextLogs","nextTask","DEFAULT_POLL_INTERVAL","client","worker","generateSwitchTask","generateDoWhileTask","generateForkJoinTask","Role","LLMProvider","VectorDB","os","worker","os","worker","propertyKey","designType","isNewDecoratorContext","PrometheusRegistry","MetricsServer"]}