@dbx-tools/appkit-mastra 0.9.132 → 0.9.136
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +46 -18
- package/index.ts +3 -1
- package/lib/index.d.ts +3 -1
- package/lib/index.js +3 -2
- package/lib/src/config.d.ts +12 -17
- package/lib/src/config.js +5 -4
- package/lib/src/feedback-mode.d.ts +15 -0
- package/lib/src/feedback-mode.js +23 -0
- package/lib/src/genie-chat.d.ts +20 -13
- package/lib/src/genie-chat.js +202 -28
- package/lib/src/memory.js +4 -2
- package/lib/src/mlflow.d.ts +1 -14
- package/lib/src/mlflow.js +1 -25
- package/lib/src/model.d.ts +5 -3
- package/lib/src/model.js +7 -4
- package/lib/src/observability.js +6 -7
- package/lib/src/plugin.d.ts +16 -9
- package/lib/src/plugin.js +92 -28
- package/lib/src/server.d.ts +2 -3
- package/lib/src/server.js +5 -7
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +24 -16
- package/src/config.ts +16 -20
- package/src/feedback-mode.ts +35 -0
- package/src/genie-chat.ts +231 -31
- package/src/memory.ts +3 -1
- package/src/mlflow.ts +1 -27
- package/src/model.ts +12 -5
- package/src/observability.ts +5 -6
- package/src/plugin.ts +104 -30
- package/src/server.ts +4 -6
package/lib/src/model.js
CHANGED
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
import { createWorkspaceClient } from "@databricks/appkit";
|
|
25
25
|
import { appkit } from "@dbx-tools/appkit";
|
|
26
26
|
import { classes, policy, resolve } from "@dbx-tools/model";
|
|
27
|
-
import { createDatabricksLanguageModel } from "@dbx-tools/model-protocol/provider";
|
|
27
|
+
import { createDatabricksLanguageModel, } from "@dbx-tools/model-protocol/provider";
|
|
28
28
|
import { log } from "@dbx-tools/shared-core";
|
|
29
29
|
import { RequestContext } from "@mastra/core/request-context";
|
|
30
30
|
import { MASTRA_USER_KEY } from "./config.js";
|
|
@@ -85,7 +85,7 @@ export function resolveDefaultModelId(config, endpoints, overrides = {}) {
|
|
|
85
85
|
.modelId;
|
|
86
86
|
}
|
|
87
87
|
/**
|
|
88
|
-
* Resolve a
|
|
88
|
+
* Resolve a Databricks ProviderV4 model for the current agent step. Runs
|
|
89
89
|
* while `agent.stream` is inside the `asUser(req)` scope so tokens
|
|
90
90
|
* are user-scoped; outside an active user context the workspace
|
|
91
91
|
* client falls back to the service principal.
|
|
@@ -103,7 +103,10 @@ export async function buildModel(config, requestContext, overrides = {}) {
|
|
|
103
103
|
// `MastraServer`. The MCP transport routes don't thread that context
|
|
104
104
|
// into tool execution, so fall back to the ambient execution context
|
|
105
105
|
// (the active OBO scope, or the service principal) when it's absent.
|
|
106
|
-
const
|
|
106
|
+
const resolved = overrides.workspaceClient
|
|
107
|
+
? { client: overrides.workspaceClient, auth: "service-principal" }
|
|
108
|
+
: resolveModelWorkspaceContext(context);
|
|
109
|
+
const { client, auth } = resolved;
|
|
107
110
|
recordActiveTraceAuth(auth);
|
|
108
111
|
const clientConfig = client.config;
|
|
109
112
|
const host = (await clientConfig.getHost()).toString();
|
|
@@ -134,4 +137,4 @@ export async function buildModel(config, requestContext, overrides = {}) {
|
|
|
134
137
|
providerName: config.providerId ?? "openai",
|
|
135
138
|
});
|
|
136
139
|
}
|
|
137
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUscUJBQXFCLEVBQXdCLE1BQU0sb0JBQW9CLENBQUM7QUFDakYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUc3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFOUQsT0FBTyxFQUFFLGVBQWUsRUFBc0MsTUFBTSxhQUFhLENBQUM7QUFDbEYsT0FBTyxFQUNMLHlCQUF5QixFQUN6Qix5QkFBeUIsRUFDekIsb0JBQW9CLEdBQ3JCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRy9FLE1BQU0sRUFBRSxlQUFlLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDcEMsTUFBTSxFQUFFLFdBQVcsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUVoQyw4RkFBOEY7QUFDOUYsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUc7SUFDeEMsTUFBTSxFQUFFO1FBQ04sS0FBSyxFQUFFLEtBQUs7S0FDYjtDQUNPLENBQUM7QUFFWCxpRkFBaUY7QUFDakYsTUFBTSxVQUFVLFVBQVUsQ0FBQyxPQUFlO0lBQ3hDLE9BQU8sTUFBTSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBMkJELHFGQUFxRjtBQUNyRixTQUFTLDRCQUE0QixDQUNu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UUFDUCxRQUFRLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQztRQUM3QixJQUFJO1FBQ0osT0FBTyxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzlDLFlBQVksRUFBRSxNQUFNLENBQUMsVUFBVSxJQUFJLFFBQVE7S0FDNUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRGF0YWJyaWNrcyBNb2RlbCBTZXJ2aW5nIHJlc29sdmVyIGZvciBNYXN0cmEgYWdlbnRzLlxuICpcbiAqIEVhY2ggYWdlbnQgc3RlcCBjYWxscyB7QGxpbmsgYnVpbGRNb2RlbH0gd2l0aCB0aGUgYWN0aXZlXG4gKiBgUmVxdWVzdENvbnRleHRgLiBUaGUgdXNlciBzdGFtcGVkIGJ5IGBNYXN0cmFTZXJ2ZXJgIGNhcnJpZXMgYW5cbiAqIEFwcEtpdCBgV29ya3NwYWNlQ2xpZW50YDsgd2UgYXNrIGl0IGZvciB0aGUgd29ya3NwYWNlIGhvc3QgYW5kIGFcbiAqIGZyZXNoIGJlYXJlciBoZWFkZXIsIHRoZW4gY29uc3RydWN0IGEgcmVxdWVzdC1zY29wZWQgVmVyY2VsIEFJIFNESyBwcm92aWRlclxuICogZm9yIHRoZSBlbmRwb2ludCdzIG5hdGl2ZSBEYXRhYnJpY2tzIHNlcnZpbmcgcHJvdG9jb2wuXG4gKlxuICogVGhpcyBtb2R1bGUgb25seSBhZGRzIHRoZSBNYXN0cmEtc3BlY2lmaWMgZ2x1ZS4gVGhlIGFjdHVhbCBtb2RlbFxuICogc2VsZWN0aW9uIC0gbGlzdGluZyB0aGUgd29ya3NwYWNlIGNhdGFsb2d1ZSBhbmQgcmVzb2x2aW5nIGFuXG4gKiBleHBsaWNpdCBuYW1lIC8gY2xhc3MgLyBmYWxsYmFjayBjaGFpbiB0byBhIHJlYWwgZW5kcG9pbnQgaWQgLSBsaXZlc1xuICogaW4gYEBkYngtdG9vbHMvbW9kZWxgICh7QGxpbmsgc2VsZWN0TW9kZWx9KSBzbyBub24tTWFzdHJhIGNvbnN1bWVyc1xuICogKGUuZy4gYSBqb2IgdGhhdCBqdXN0IG5lZWRzIGEgbW9kZWwgbmFtZSkgY2FuIHJldXNlIGl0LiBIZXJlIHdlXG4gKiBhc3NlbWJsZSB0aGUgZXhwbGljaXQgYXNrIGZyb20gTWFzdHJhJ3MgcmVxdWVzdCBjb250ZXh0ICh0aGVcbiAqIHBlci1yZXF1ZXN0IG92ZXJyaWRlIHVuZGVyIHtAbGluayBNQVNUUkFfTU9ERUxfT1ZFUlJJREVfS0VZfSwgdGhlXG4gKiBhZ2VudCAvIHBsdWdpbiBgbW9kZWxJZGAsIG9yIGBEQVRBQlJJQ0tTX1NFUlZJTkdfRU5EUE9JTlRfTkFNRWApLFxuICogcGFzcyB0aGUgcGx1Z2luJ3MgZnV6enkgLyBjbGFzcyAvIGZhbGxiYWNrIGtub2JzIHRocm91Z2gsIGFuZCB3cmFwXG4gKiB0aGUgcmVzb2x2ZWQgaWQgaW4gdGhlIFByb3ZpZGVyVjQgbW9kZWwgTWFzdHJhIGFjY2VwdHMuIENhdGFsb2d1ZSBmZXRjaGVzIGZhaWwgbG91ZDogbmV0d29yayAvIGF1dGggZXJyb3JzXG4gKiBwcm9wYWdhdGUgc28gY2FsbGVycyBzZWUgdGhlIHJlYWwgU0RLIG1lc3NhZ2UuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IGNyZWF0ZVdvcmtzcGFjZUNsaWVudCwgdHlwZSBXb3Jrc3BhY2VDbGllbnQgfSBmcm9tIFwiQGRhdGFicmlja3MvYXBwa2l0XCI7XG5pbXBvcnQgeyBhcHBraXQgfSBmcm9tIFwiQGRieC10b29scy9hcHBraXRcIjtcbmltcG9ydCB7IGNsYXNzZXMsIHBvbGljeSwgcmVzb2x2ZSB9IGZyb20gXCJAZGJ4LXRvb2xzL21vZGVsXCI7XG5pbXBvcnQgeyBjcmVhdGVEYXRhYnJpY2tzTGFuZ3VhZ2VNb2RlbCB9IGZyb20gXCJAZGJ4LXRvb2xzL21vZGVsLXByb3RvY29sL3Byb3ZpZGVyXCI7XG5pbXBvcnQgeyBsb2cgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHsgbW9kZWwsIHR5cGUgU2VydmluZ0VuZHBvaW50U3VtbWFyeSB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1tb2RlbFwiO1xuaW1wb3J0IHR5cGUgeyBNYXN0cmFNb2RlbENvbmZpZyB9IGZyb20gXCJAbWFzdHJhL2NvcmUvbGxtXCI7XG5pbXBvcnQgeyBSZXF1ZXN0Q29udGV4dCB9IGZyb20gXCJAbWFzdHJhL2NvcmUvcmVxdWVzdC1jb250ZXh0XCI7XG5cbmltcG9ydCB7IE1BU1RSQV9VU0VSX0tFWSwgdHlwZSBNYXN0cmFQbHVnaW5Db25maWcsIHR5cGUgVXNlciB9IGZyb20gXCIuL2NvbmZpZy50c1wiO1xuaW1wb3J0IHtcbiAgTUFTVFJBX01PREVMX09WRVJSSURFX0tFWSxcbiAgTUFTVFJBX1JFU09MVkVEX01PREVMX0tFWSxcbiAgcmVzb2x2ZVNlcnZpbmdDb25maWcsXG59IGZyb20gXCIuL3NlcnZpbmcudHNcIjtcbmltcG9ydCB7IHJlY29yZEFjdGl2ZVRyYWNlQXV0aCwgcmVjb3JkQWN0aXZlVHJhY2VNb2RlbCB9IGZyb20gXCIuL3RlbGVtZXRyeS50c1wiO1xuXG50eXBlIE1vZGVsQ2xhc3MgPSBtb2RlbC5Nb2RlbENsYXNzO1xuY29uc3QgeyBwYXJzZU1vZGVsQ2xhc3MgfSA9IGNsYXNzZXM7XG5jb25zdCB7IHNlbGVjdE1vZGVsIH0gPSByZXNvbHZlO1xuXG4vKiogS2VlcCBSZXNwb25zZXMgdHVybnMgc3RhdGVsZXNzIHNvIHRvb2wgY29udGludWF0aW9ucyByZXBsYXkgZW5jcnlwdGVkIHJlYXNvbmluZyBpbmxpbmUuICovXG5leHBvcnQgY29uc3QgUkVTUE9OU0VTX1BST1ZJREVSX09QVElPTlMgPSB7XG4gIG9wZW5haToge1xuICAgIHN0b3JlOiBmYWxzZSxcbiAgfSxcbn0gYXMgY29uc3Q7XG5cbi8qKiBQaWNrIHRoZSBuYXRpdmUgRGF0YWJyaWNrcyBpbmZlcmVuY2Ugc3VyZmFjZSByZXF1aXJlZCBieSBhIHJlc29sdmVkIG1vZGVsLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlcnZpbmdBcGkobW9kZWxJZDogc3RyaW5nKTogXCJjaGF0XCIgfCBcInJlc3BvbnNlc1wiIHtcbiAgcmV0dXJuIHBvbGljeS5tb2RlbFNlcnZpbmdBcGkobW9kZWxJZCk7XG59XG5cbi8qKiBPcHRpb25hbCBvdmVycmlkZXMgYWNjZXB0ZWQgYnkge0BsaW5rIGJ1aWxkTW9kZWx9LiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdWlsZE1vZGVsT3ZlcnJpZGVzIHtcbiAgLyoqXG4gICAqIFN0YXRpYyBtb2RlbCBpZCBmcm9tIHRoZSBhZ2VudCAvIHBsdWdpbiBjb25maWcgKHN0cmluZyBzdWdhciBvblxuICAgKiBgZGVmLm1vZGVsYCBvciBgY29uZmlnLmRlZmF1bHRNb2RlbGApLiBMb3NlcyB0byB0aGUgcGVyLXJlcXVlc3RcbiAgICogb3ZlcnJpZGUgYnV0IHdpbnMgb3ZlciBlbnYgLyBjbGFzcyAvIGZhbGxiYWNrLlxuICAgKi9cbiAgbW9kZWxJZD86IHN0cmluZztcbiAgLyoqXG4gICAqIENoYXQgY2FwYWJpbGl0eSBjbGFzcyB0byByZXNvbHZlIHdoZW4gbm8gZXhwbGljaXQgbW9kZWwgaWQgaXNcbiAgICogc3VwcGxpZWQuIFVzZWQgYnkgaW50ZXJuYWwgYWdlbnRzIChlLmcuIHRoZSBjaGFydCBwbGFubmVyIGFza3MgZm9yXG4gICAqIHtAbGluayBtb2RlbC5Nb2RlbENsYXNzLkNoYXRGYXN0fSkgdG8gZXhwcmVzcyBpbnRlbnQgd2l0aG91dCBwaW5uaW5nIGFuXG4gICAqIGVuZHBvaW50IG5hbWU7IHRoZSBsaXZlIGNhdGFsb2d1ZSBpcyBjbGFzc2lmaWVkIGFuZCB0aGUgdG9wXG4gICAqIGF2YWlsYWJsZSBtb2RlbCBpbiB0aGUgY2xhc3MgaXMgY2hvc2VuLCBmYWxsaW5nIGJhY2sgdG8gdGhlXG4gICAqIGNsYXNzJ3Mgc3RhdGljIGxpc3Qgd2hlbiB0aGUgd29ya3NwYWNlIGhhcyBub25lLlxuICAgKi9cbiAgbW9kZWxDbGFzcz86IE1vZGVsQ2xhc3M7XG59XG5cbi8qKiBSZXNvbHZlZCB3b3Jrc3BhY2UgY2xpZW50IGFuZCB0aGUgYXV0aGVudGljYXRpb24gbW9kZSBiYWNraW5nIGl0LiAqL1xuaW50ZXJmYWNlIFJlc29sdmVkTW9kZWxXb3Jrc3BhY2VDbGllbnQge1xuICBjbGllbnQ6IFdvcmtzcGFjZUNsaWVudDtcbiAgYXV0aDogXCJvYm9cIiB8IFwic2VydmljZS1wcmluY2lwYWxcIjtcbn1cblxuLyoqIFJlc29sdmUgYW4gT0JPIHdvcmtzcGFjZSBjbGllbnQgd2hlbiBwcmVzZW50LCBlbHNlIGEgc2VydmljZS1wcmluY2lwYWwgY2xpZW50LiAqL1xuZnVuY3Rpb24gcmVzb2x2ZU1vZGVsV29ya3NwYWNlQ29udGV4dChcbiAgcmVxdWVzdENvbnRleHQ/OiBSZXF1ZXN0Q29udGV4dCxcbik6IFJlc29sdmVkTW9kZWxXb3Jrc3BhY2VDbGllbnQge1xuICBjb25zdCB1c2VyID0gcmVxdWVzdENvbnRleHQ/LmdldChNQVNUUkFfVVNFUl9LRVkpIGFzIFVzZXIgfCB1bmRlZmluZWQ7XG4gIGNvbnN0IGV4ZWN1dGlvbkNvbnRleHQgPSB1c2VyPy5leGVjdXRpb25Db250ZXh0ID8/IGFwcGtpdC50cnlHZXRFeGVjdXRpb25Db250ZXh0KCk7XG4gIGlmIChleGVjdXRpb25Db250ZXh0Py5jbGllbnQuY29uZmlnKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNsaWVudDogZXhlY3V0aW9uQ29udGV4dC5jbGllbnQsXG4gICAgICBhdXRoOiBcImlzVXNlckNvbnRleHRcIiBpbiBleGVjdXRpb25Db250ZXh0ID8gXCJvYm9cIiA6IFwic2VydmljZS1wcmluY2lwYWxcIixcbiAgICB9O1xuICB9XG4gIHJldHVybiB7IGNsaWVudDogY3JlYXRlV29ya3NwYWNlQ2xpZW50KCksIGF1dGg6IFwic2VydmljZS1wcmluY2lwYWxcIiB9O1xufVxuXG4vKiogUmVzb2x2ZSB0aGUgd29ya3NwYWNlIGNsaWVudCB1c2VkIGZvciBtb2RlbCBkaXNjb3ZlcnkgYW5kIGluZmVyZW5jZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlTW9kZWxXb3Jrc3BhY2VDbGllbnQocmVxdWVzdENvbnRleHQ/OiBSZXF1ZXN0Q29udGV4dCk6IFdvcmtzcGFjZUNsaWVudCB7XG4gIHJldHVybiByZXNvbHZlTW9kZWxXb3Jrc3BhY2VDb250ZXh0KHJlcXVlc3RDb250ZXh0KS5jbGllbnQ7XG59XG5cbmZ1bmN0aW9uIHNlbGVjdGlvbklucHV0KFxuICBjb25maWc6IE1hc3RyYVBsdWdpbkNvbmZpZyxcbiAgcmVxdWVzdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIGRlZmF1bHRDbGFzczogTW9kZWxDbGFzcyB8IHVuZGVmaW5lZCxcbiAgc2VydmluZyA9IHJlc29sdmVTZXJ2aW5nQ29uZmlnKGNvbmZpZyksXG4pIHtcbiAgY29uc3QgcmVxdWVzdGVkQ2xhc3MgPSByZXF1ZXN0ZWQgIT09IHVuZGVmaW5lZCA/IHBhcnNlTW9kZWxDbGFzcyhyZXF1ZXN0ZWQpIDogbnVsbDtcbiAgY29uc3QgZXhwbGljaXQgPSByZXF1ZXN0ZWRDbGFzcyA9PT0gbnVsbCA/IHJlcXVlc3RlZCA6IHVuZGVmaW5lZDtcbiAgY29uc3QgbW9kZWxDbGFzcyA9IHJlcXVlc3RlZENsYXNzID8/IGRlZmF1bHRDbGFzcztcbiAgcmV0dXJuIHtcbiAgICAuLi4oZXhwbGljaXQgIT09IHVuZGVmaW5lZCA/IHsgZXhwbGljaXQgfSA6IHt9KSxcbiAgICBmdXp6eTogc2VydmluZy5mdXp6eSxcbiAgICB0aHJlc2hvbGQ6IHNlcnZpbmcudGhyZXNob2xkLFxuICAgIC4uLihtb2RlbENsYXNzICE9PSB1bmRlZmluZWQgPyB7IG1vZGVsQ2xhc3MgfSA6IHt9KSxcbiAgICBmYWxsYmFja3M6IHNlcnZpbmcuZmFsbGJhY2tzLnNsaWNlKCksXG4gICAgbGl2ZU9ubHk6IHJlcXVlc3RlZCA9PT0gdW5kZWZpbmVkLFxuICAgIHR0bE1zOiBzZXJ2aW5nLnR0bE1zLFxuICB9O1xufVxuXG4vKipcbiAqIFJlc29sdmUgYW4gYWdlbnQncyB1bnBpbm5lZCBkZWZhdWx0IGFnYWluc3QgYW4gYWxyZWFkeS1sb2FkZWQgbGl2ZSBjYXRhbG9ndWUuXG4gKlxuICogV2l0aCBubyBjb25maWd1cmVkIGlkL2NsYXNzL2ZhbGxiYWNrLCB0aGUgZ2VuZXJpYyBtb2RlbCByYW5rZXIgc2VsZWN0cyB0aGVcbiAqIGhpZ2hlc3QtcmFua2VkIGN1cnJlbnRseSBhdmFpbGFibGUgR1BULCB0aGVuIGZhbGxzIGJhY2sgdG8gdGhlIGhpZ2hlc3QtcmFua2VkXG4gKiBsaXZlIGNoYXQgZW5kcG9pbnQgd2hlbiB0aGUgd29ya3NwYWNlIGhhcyBubyBHUFQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlRGVmYXVsdE1vZGVsSWQoXG4gIGNvbmZpZzogTWFzdHJhUGx1Z2luQ29uZmlnLFxuICBlbmRwb2ludHM6IHJlYWRvbmx5IFNlcnZpbmdFbmRwb2ludFN1bW1hcnlbXSxcbiAgb3ZlcnJpZGVzOiBCdWlsZE1vZGVsT3ZlcnJpZGVzID0ge30sXG4pOiBzdHJpbmcge1xuICBjb25zdCByZXF1ZXN0ZWQgPSBvdmVycmlkZXMubW9kZWxJZCA/PyBwcm9jZXNzLmVudi5EQVRBQlJJQ0tTX1NFUlZJTkdfRU5EUE9JTlRfTkFNRTtcbiAgcmV0dXJuIHJlc29sdmUucmVzb2x2ZU1vZGVsKGVuZHBvaW50cywgc2VsZWN0aW9uSW5wdXQoY29uZmlnLCByZXF1ZXN0ZWQsIG92ZXJyaWRlcy5tb2RlbENsYXNzKSlcbiAgICAubW9kZWxJZDtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIGEgYE1hc3RyYU1vZGVsQ29uZmlnYCBmb3IgdGhlIGN1cnJlbnQgYWdlbnQgc3RlcC4gUnVuc1xuICogd2hpbGUgYGFnZW50LnN0cmVhbWAgaXMgaW5zaWRlIHRoZSBgYXNVc2VyKHJlcSlgIHNjb3BlIHNvIHRva2Vuc1xuICogYXJlIHVzZXItc2NvcGVkOyBvdXRzaWRlIGFuIGFjdGl2ZSB1c2VyIGNvbnRleHQgdGhlIHdvcmtzcGFjZVxuICogY2xpZW50IGZhbGxzIGJhY2sgdG8gdGhlIHNlcnZpY2UgcHJpbmNpcGFsLlxuICpcbiAqIEVuZHBvaW50IHByZWNlZGVuY2U6IHRoZSBwZXItcmVxdWVzdCBvdmVycmlkZVxuICogKHtAbGluayBNQVNUUkFfTU9ERUxfT1ZFUlJJREVfS0VZfSwgb25seSB3aGVuIGBjb25maWcubW9kZWxPdmVycmlkZWAgYWxsb3dzXG4gKiBpdCksIHRoZW4ge0BsaW5rIEJ1aWxkTW9kZWxPdmVycmlkZXMubW9kZWxJZH0gZnJvbSB0aGUgYWdlbnQgLyBwbHVnaW5cbiAqIGNvbmZpZywgdGhlbiBgREFUQUJSSUNLU19TRVJWSU5HX0VORFBPSU5UX05BTUVgLiBXaXRoIG5vbmUgb2YgdGhvc2Ugc2V0IHRoZVxuICogY2FwYWJpbGl0eSBjbGFzcyBhbmQgZmFsbGJhY2sgbGFkZGVyIGluIGBAZGJ4LXRvb2xzL21vZGVsYCBjaG9vc2UgdGhlXG4gKiBlbmRwb2ludC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJ1aWxkTW9kZWwoXG4gIGNvbmZpZzogTWFzdHJhUGx1Z2luQ29uZmlnLFxuICByZXF1ZXN0Q29udGV4dD86IFJlcXVlc3RDb250ZXh0LFxuICBvdmVycmlkZXM6IEJ1aWxkTW9kZWxPdmVycmlkZXMgPSB7fSxcbik6IFByb21pc2U8TWFzdHJhTW9kZWxDb25maWc+IHtcbiAgY29uc3QgY29udGV4dCA9IHJlcXVlc3RDb250ZXh0ID8/IG5ldyBSZXF1ZXN0Q29udGV4dCgpO1xuICAvLyBUaGUgY2hhdCBwYXRoIHN0YW1wcyB0aGUgQXBwS2l0IHVzZXIgb24gdGhlIHJlcXVlc3QgY29udGV4dCB2aWFcbiAgLy8gYE1hc3RyYVNlcnZlcmAuIFRoZSBNQ1AgdHJhbnNwb3J0IHJvdXRlcyBkb24ndCB0aHJlYWQgdGhhdCBjb250ZXh0XG4gIC8vIGludG8gdG9vbCBleGVjdXRpb24sIHNvIGZhbGwgYmFjayB0byB0aGUgYW1iaWVudCBleGVjdXRpb24gY29udGV4dFxuICAvLyAodGhlIGFjdGl2ZSBPQk8gc2NvcGUsIG9yIHRoZSBzZXJ2aWNlIHByaW5jaXBhbCkgd2hlbiBpdCdzIGFic2VudC5cbiAgY29uc3QgeyBjbGllbnQsIGF1dGggfSA9IHJlc29sdmVNb2RlbFdvcmtzcGFjZUNvbnRleHQoY29udGV4dCk7XG4gIHJlY29yZEFjdGl2ZVRyYWNlQXV0aChhdXRoKTtcbiAgY29uc3QgY2xpZW50Q29uZmlnID0gY2xpZW50LmNvbmZpZztcbiAgY29uc3QgaG9zdCA9IChhd2FpdCBjbGllbnRDb25maWcuZ2V0SG9zdCgpKS50b1N0cmluZygpO1xuICBjb25zdCBoZWFkZXJzID0gbmV3IEhlYWRlcnMoKTtcbiAgYXdhaXQgY2xpZW50Q29uZmlnLmF1dGhlbnRpY2F0ZShoZWFkZXJzKTtcbiAgY29uc3QgbG9nZ2VyID0gbG9nLmxvZ2dlcihjb25maWcpO1xuICBjb25zdCBzZXJ2aW5nID0gcmVzb2x2ZVNlcnZpbmdDb25maWcoY29uZmlnKTtcbiAgY29uc3Qgb3ZlcnJpZGUgPSBzZXJ2aW5nLmFsbG93T3ZlcnJpZGVcbiAgICA/IChjb250ZXh0LmdldChNQVNUUkFfTU9ERUxfT1ZFUlJJREVfS0VZKSBhcyBzdHJpbmcgfCB1bmRlZmluZWQpXG4gICAgOiB1bmRlZmluZWQ7XG5cbiAgLy8gVGhlIG92ZXJyaWRlIC8gYWdlbnQgZGVmYXVsdCAvIGVudiB2YWx1ZSBjYW4gYmUgZWl0aGVyIGEgY29uY3JldGVcbiAgLy8gZW5kcG9pbnQgbmFtZSBvciBhIG1vZGVsIGNsYXNzIHNsdWcgKFwiY2hhdC10aGlua2luZ1wiIC9cbiAgLy8gXCJjaGF0LWJhbGFuY2VkXCIgLyBcImNoYXQtZmFzdFwiKS4gQSBjbGFzcyBzbHVnIGJlY29tZXMgYSBjbGFzcyBpbnRlbnRcbiAgLy8gKGxldCB0aGUgbGl2ZSBjYXRhbG9ndWUgcGljayB0aGUgYmVzdCBtb2RlbCBpbiB0aGF0IGJhbmQpOyBhbnl0aGluZ1xuICAvLyBlbHNlIGlzIGFuIGV4cGxpY2l0IG5hbWUgZnV6enktbWF0Y2hlZCBhZ2FpbnN0IHRoZSBjYXRhbG9ndWUuIEFuXG4gIC8vIGludGVybmFsIGBvdmVycmlkZXMubW9kZWxDbGFzc2AgKGUuZy4gdGhlIGNoYXJ0IHBsYW5uZXIpIGlzIHRoZVxuICAvLyBmbG9vciB3aGVuIG5vdGhpbmcgd2FzIHJlcXVlc3RlZC5cbiAgY29uc3QgcmVxdWVzdGVkID0gb3ZlcnJpZGUgPz8gb3ZlcnJpZGVzLm1vZGVsSWQgPz8gcHJvY2Vzcy5lbnYuREFUQUJSSUNLU19TRVJWSU5HX0VORFBPSU5UX05BTUU7XG5cbiAgY29uc3QgeyBtb2RlbElkLCBzb3VyY2UgfSA9IGF3YWl0IHNlbGVjdE1vZGVsKFxuICAgIGNsaWVudCxcbiAgICBob3N0LFxuICAgIHNlbGVjdGlvbklucHV0KGNvbmZpZywgcmVxdWVzdGVkLCBvdmVycmlkZXMubW9kZWxDbGFzcywgc2VydmluZyksXG4gICk7XG4gIGxvZ2dlci5kZWJ1ZyhcIm1vZGVsIHNlbGVjdGVkXCIsIHsgbW9kZWxJZCwgc291cmNlLCByZXF1ZXN0ZWQgfSk7XG4gIGNvbnRleHQuc2V0KE1BU1RSQV9SRVNPTFZFRF9NT0RFTF9LRVksIG1vZGVsSWQpO1xuICByZWNvcmRBY3RpdmVUcmFjZU1vZGVsKG1vZGVsSWQpO1xuXG4gIHJldHVybiBjcmVhdGVEYXRhYnJpY2tzTGFuZ3VhZ2VNb2RlbCh7XG4gICAgbW9kZWxJZCxcbiAgICBwcm90b2NvbDogc2VydmluZ0FwaShtb2RlbElkKSxcbiAgICBob3N0LFxuICAgIGhlYWRlcnM6IE9iamVjdC5mcm9tRW50cmllcyhoZWFkZXJzLmVudHJpZXMoKSksXG4gICAgcHJvdmlkZXJOYW1lOiBjb25maWcucHJvdmlkZXJJZCA/PyBcIm9wZW5haVwiLFxuICB9KTtcbn1cbiJdfQ==
|
|
140
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUscUJBQXFCLEVBQXdCLE1BQU0sb0JBQW9CLENBQUM7QUFDakYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVELE9BQU8sRUFDTCw2QkFBNkIsR0FFOUIsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRTlELE9BQU8sRUFBRSxlQUFlLEVBQXNDLE1BQU0sYUFBYSxDQUFDO0FBQ2xGLE9BQU8sRUFDTCx5QkFBeUIsRUFDekIseUJBQXlCLEVBQ3pCLG9CQUFvQixHQUNyQixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUcvRSxNQUFNLEVBQUUsZUFBZSxFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQ3BDLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFFaEMsOEZBQThGO0FBQzlGLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHO0lBQ3hDLE1BQU0sRUFBRTtRQUNOLEtBQUssRUFBRSxLQUFLO0tBQ2I7Q0FDTyxDQUFDO0FBRVgsaUZBQWlGO0FBQ2pGLE1BQU0sVUFBVSxVQUFVLENBQUMsT0FBZTtJQUN4QyxPQUFPLE1BQU0sQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDekMsQ0FBQztBQTZCRCxxRkFBcUY7QUFDckYsU0FBUyw0QkFBNEIsQ0FDbkMsY0FBK0I7SUFFL0IsTUFBTSxJQUFJLEdBQUcsY0FBYyxFQUFFLEdBQUcsQ0FBQyxlQUFlLENBQXFCLENBQUM7SUFDdEUsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLEVBQUUsZ0JBQWdCLElBQUksTUFBTSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDbkYsSUFBSSxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDcEMsT0FBTztZQUNMLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNO1lBQy9CLElBQUksRUFBRSxlQUFlLElBQUksZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsbUJBQW1CO1NBQ3hFLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxDQUFDO0FBQ3hFLENBQUM7QUFFRCwyRUFBMkU7QUFDM0UsTUFBTSxVQUFVLDJCQUEyQixDQUFDLGNBQStCO0lBQ3pFLE9BQU8sNEJBQTRCLENBQUMsY0FBYyxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQzdELENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FDckIsTUFBMEIsRUFDMUIsU0FBNkIsRUFDN0IsWUFBb0MsRUFDcEMsT0FBTyxHQUFHLG9CQUFvQixDQUFDLE1BQU0sQ0FBQztJQUV0QyxNQUFNLGNBQWMsR0FBRyxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNuRixNQUFNLFFBQVEsR0FBRyxjQUFjLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNqRSxNQUFNLFVBQVUsR0FBRyxjQUFjLElBQUksWUFBWSxDQUFDO0lBQ2xELE9BQU87UUFDTCxHQUFHLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQy9DLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztRQUNwQixTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVM7UUFDNUIsR0FBRyxDQUFDLFVBQVUsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNuRCxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUU7UUFDcEMsUUFBUSxFQUFFLFNBQVMsS0FBSyxTQUFTO1FBQ2pDLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztLQUNyQixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FDbkMsTUFBMEIsRUFDMUIsU0FBNEMsRUFDNUMsWUFBaUMsRUFBRTtJQUVuQyxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0NBQWdDLENBQUM7SUFDcEYsT0FBTyxPQUFPLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDNUYsT0FBTyxDQUFDO0FBQ2IsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsVUFBVSxDQUM5QixNQUEwQixFQUMxQixjQUErQixFQUMvQixZQUFpQyxFQUFFO0lBRW5DLE1BQU0sT0FBTyxHQUFHLGNBQWMsSUFBSSxJQUFJLGNBQWMsRUFBRSxDQUFDO0lBQ3ZELGtFQUFrRTtJQUNsRSxxRUFBcUU7SUFDckUscUVBQXFFO0lBQ3JFLHFFQUFxRTtJQUNyRSxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsZUFBZTtRQUN4QyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDLGVBQWUsRUFBRSxJQUFJLEVBQUUsbUJBQTRCLEVBQUU7UUFDM0UsQ0FBQyxDQUFDLDRCQUE0QixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDO0lBQ2xDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDbkMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxNQUFNLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3ZELE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUFDOUIsTUFBTSxZQUFZLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pDLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsTUFBTSxPQUFPLEdBQUcsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0MsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLGFBQWE7UUFDcEMsQ0FBQyxDQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQXdCO1FBQ2hFLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFFZCxvRUFBb0U7SUFDcEUseURBQXlEO0lBQ3pELHNFQUFzRTtJQUN0RSxzRUFBc0U7SUFDdEUsbUVBQW1FO0lBQ25FLGtFQUFrRTtJQUNsRSxvQ0FBb0M7SUFDcEMsTUFBTSxTQUFTLEdBQUcsUUFBUSxJQUFJLFNBQVMsQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQ0FBZ0MsQ0FBQztJQUVoRyxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sV0FBVyxDQUMzQyxNQUFNLEVBQ04sSUFBSSxFQUNKLGNBQWMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQ2pFLENBQUM7SUFDRixNQUFNLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQy9ELE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDaEQsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFaEMsT0FBTyw2QkFBNkIsQ0FBQztRQUNuQyxPQUFPO1FBQ1AsUUFBUSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUM7UUFDN0IsSUFBSTtRQUNKLE9BQU8sRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM5QyxZQUFZLEVBQUUsTUFBTSxDQUFDLFVBQVUsSUFBSSxRQUFRO0tBQzVDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIERhdGFicmlja3MgTW9kZWwgU2VydmluZyByZXNvbHZlciBmb3IgTWFzdHJhIGFnZW50cy5cbiAqXG4gKiBFYWNoIGFnZW50IHN0ZXAgY2FsbHMge0BsaW5rIGJ1aWxkTW9kZWx9IHdpdGggdGhlIGFjdGl2ZVxuICogYFJlcXVlc3RDb250ZXh0YC4gVGhlIHVzZXIgc3RhbXBlZCBieSBgTWFzdHJhU2VydmVyYCBjYXJyaWVzIGFuXG4gKiBBcHBLaXQgYFdvcmtzcGFjZUNsaWVudGA7IHdlIGFzayBpdCBmb3IgdGhlIHdvcmtzcGFjZSBob3N0IGFuZCBhXG4gKiBmcmVzaCBiZWFyZXIgaGVhZGVyLCB0aGVuIGNvbnN0cnVjdCBhIHJlcXVlc3Qtc2NvcGVkIFZlcmNlbCBBSSBTREsgcHJvdmlkZXJcbiAqIGZvciB0aGUgZW5kcG9pbnQncyBuYXRpdmUgRGF0YWJyaWNrcyBzZXJ2aW5nIHByb3RvY29sLlxuICpcbiAqIFRoaXMgbW9kdWxlIG9ubHkgYWRkcyB0aGUgTWFzdHJhLXNwZWNpZmljIGdsdWUuIFRoZSBhY3R1YWwgbW9kZWxcbiAqIHNlbGVjdGlvbiAtIGxpc3RpbmcgdGhlIHdvcmtzcGFjZSBjYXRhbG9ndWUgYW5kIHJlc29sdmluZyBhblxuICogZXhwbGljaXQgbmFtZSAvIGNsYXNzIC8gZmFsbGJhY2sgY2hhaW4gdG8gYSByZWFsIGVuZHBvaW50IGlkIC0gbGl2ZXNcbiAqIGluIGBAZGJ4LXRvb2xzL21vZGVsYCAoe0BsaW5rIHNlbGVjdE1vZGVsfSkgc28gbm9uLU1hc3RyYSBjb25zdW1lcnNcbiAqIChlLmcuIGEgam9iIHRoYXQganVzdCBuZWVkcyBhIG1vZGVsIG5hbWUpIGNhbiByZXVzZSBpdC4gSGVyZSB3ZVxuICogYXNzZW1ibGUgdGhlIGV4cGxpY2l0IGFzayBmcm9tIE1hc3RyYSdzIHJlcXVlc3QgY29udGV4dCAodGhlXG4gKiBwZXItcmVxdWVzdCBvdmVycmlkZSB1bmRlciB7QGxpbmsgTUFTVFJBX01PREVMX09WRVJSSURFX0tFWX0sIHRoZVxuICogYWdlbnQgLyBwbHVnaW4gYG1vZGVsSWRgLCBvciBgREFUQUJSSUNLU19TRVJWSU5HX0VORFBPSU5UX05BTUVgKSxcbiAqIHBhc3MgdGhlIHBsdWdpbidzIGZ1enp5IC8gY2xhc3MgLyBmYWxsYmFjayBrbm9icyB0aHJvdWdoLCBhbmQgd3JhcFxuICogdGhlIHJlc29sdmVkIGlkIGluIHRoZSBQcm92aWRlclY0IG1vZGVsIE1hc3RyYSBhY2NlcHRzLiBDYXRhbG9ndWUgZmV0Y2hlcyBmYWlsIGxvdWQ6IG5ldHdvcmsgLyBhdXRoIGVycm9yc1xuICogcHJvcGFnYXRlIHNvIGNhbGxlcnMgc2VlIHRoZSByZWFsIFNESyBtZXNzYWdlLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBjcmVhdGVXb3Jrc3BhY2VDbGllbnQsIHR5cGUgV29ya3NwYWNlQ2xpZW50IH0gZnJvbSBcIkBkYXRhYnJpY2tzL2FwcGtpdFwiO1xuaW1wb3J0IHsgYXBwa2l0IH0gZnJvbSBcIkBkYngtdG9vbHMvYXBwa2l0XCI7XG5pbXBvcnQgeyBjbGFzc2VzLCBwb2xpY3ksIHJlc29sdmUgfSBmcm9tIFwiQGRieC10b29scy9tb2RlbFwiO1xuaW1wb3J0IHtcbiAgY3JlYXRlRGF0YWJyaWNrc0xhbmd1YWdlTW9kZWwsXG4gIHR5cGUgRGF0YWJyaWNrc0xhbmd1YWdlTW9kZWwsXG59IGZyb20gXCJAZGJ4LXRvb2xzL21vZGVsLXByb3RvY29sL3Byb3ZpZGVyXCI7XG5pbXBvcnQgeyBsb2cgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHsgbW9kZWwsIHR5cGUgU2VydmluZ0VuZHBvaW50U3VtbWFyeSB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1tb2RlbFwiO1xuaW1wb3J0IHsgUmVxdWVzdENvbnRleHQgfSBmcm9tIFwiQG1hc3RyYS9jb3JlL3JlcXVlc3QtY29udGV4dFwiO1xuXG5pbXBvcnQgeyBNQVNUUkFfVVNFUl9LRVksIHR5cGUgTWFzdHJhUGx1Z2luQ29uZmlnLCB0eXBlIFVzZXIgfSBmcm9tIFwiLi9jb25maWcudHNcIjtcbmltcG9ydCB7XG4gIE1BU1RSQV9NT0RFTF9PVkVSUklERV9LRVksXG4gIE1BU1RSQV9SRVNPTFZFRF9NT0RFTF9LRVksXG4gIHJlc29sdmVTZXJ2aW5nQ29uZmlnLFxufSBmcm9tIFwiLi9zZXJ2aW5nLnRzXCI7XG5pbXBvcnQgeyByZWNvcmRBY3RpdmVUcmFjZUF1dGgsIHJlY29yZEFjdGl2ZVRyYWNlTW9kZWwgfSBmcm9tIFwiLi90ZWxlbWV0cnkudHNcIjtcblxudHlwZSBNb2RlbENsYXNzID0gbW9kZWwuTW9kZWxDbGFzcztcbmNvbnN0IHsgcGFyc2VNb2RlbENsYXNzIH0gPSBjbGFzc2VzO1xuY29uc3QgeyBzZWxlY3RNb2RlbCB9ID0gcmVzb2x2ZTtcblxuLyoqIEtlZXAgUmVzcG9uc2VzIHR1cm5zIHN0YXRlbGVzcyBzbyB0b29sIGNvbnRpbnVhdGlvbnMgcmVwbGF5IGVuY3J5cHRlZCByZWFzb25pbmcgaW5saW5lLiAqL1xuZXhwb3J0IGNvbnN0IFJFU1BPTlNFU19QUk9WSURFUl9PUFRJT05TID0ge1xuICBvcGVuYWk6IHtcbiAgICBzdG9yZTogZmFsc2UsXG4gIH0sXG59IGFzIGNvbnN0O1xuXG4vKiogUGljayB0aGUgbmF0aXZlIERhdGFicmlja3MgaW5mZXJlbmNlIHN1cmZhY2UgcmVxdWlyZWQgYnkgYSByZXNvbHZlZCBtb2RlbC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXJ2aW5nQXBpKG1vZGVsSWQ6IHN0cmluZyk6IFwiY2hhdFwiIHwgXCJyZXNwb25zZXNcIiB7XG4gIHJldHVybiBwb2xpY3kubW9kZWxTZXJ2aW5nQXBpKG1vZGVsSWQpO1xufVxuXG4vKiogT3B0aW9uYWwgb3ZlcnJpZGVzIGFjY2VwdGVkIGJ5IHtAbGluayBidWlsZE1vZGVsfS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRNb2RlbE92ZXJyaWRlcyB7XG4gIC8qKlxuICAgKiBTdGF0aWMgbW9kZWwgaWQgZnJvbSB0aGUgYWdlbnQgLyBwbHVnaW4gY29uZmlnIChzdHJpbmcgc3VnYXIgb25cbiAgICogYGRlZi5tb2RlbGAgb3IgYGNvbmZpZy5kZWZhdWx0TW9kZWxgKS4gTG9zZXMgdG8gdGhlIHBlci1yZXF1ZXN0XG4gICAqIG92ZXJyaWRlIGJ1dCB3aW5zIG92ZXIgZW52IC8gY2xhc3MgLyBmYWxsYmFjay5cbiAgICovXG4gIG1vZGVsSWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBDaGF0IGNhcGFiaWxpdHkgY2xhc3MgdG8gcmVzb2x2ZSB3aGVuIG5vIGV4cGxpY2l0IG1vZGVsIGlkIGlzXG4gICAqIHN1cHBsaWVkLiBVc2VkIGJ5IGludGVybmFsIGFnZW50cyAoZS5nLiB0aGUgY2hhcnQgcGxhbm5lciBhc2tzIGZvclxuICAgKiB7QGxpbmsgbW9kZWwuTW9kZWxDbGFzcy5DaGF0RmFzdH0pIHRvIGV4cHJlc3MgaW50ZW50IHdpdGhvdXQgcGlubmluZyBhblxuICAgKiBlbmRwb2ludCBuYW1lOyB0aGUgbGl2ZSBjYXRhbG9ndWUgaXMgY2xhc3NpZmllZCBhbmQgdGhlIHRvcFxuICAgKiBhdmFpbGFibGUgbW9kZWwgaW4gdGhlIGNsYXNzIGlzIGNob3NlbiwgZmFsbGluZyBiYWNrIHRvIHRoZVxuICAgKiBjbGFzcydzIHN0YXRpYyBsaXN0IHdoZW4gdGhlIHdvcmtzcGFjZSBoYXMgbm9uZS5cbiAgICovXG4gIG1vZGVsQ2xhc3M/OiBNb2RlbENsYXNzO1xuICAvKiogRXhwbGljaXQgd29ya3NwYWNlIGNsaWVudCBmb3Igc3RhbmRhbG9uZSBjYWxsZXJzIHN1Y2ggYXMgQ0xJcy4gKi9cbiAgd29ya3NwYWNlQ2xpZW50PzogV29ya3NwYWNlQ2xpZW50O1xufVxuXG4vKiogUmVzb2x2ZWQgd29ya3NwYWNlIGNsaWVudCBhbmQgdGhlIGF1dGhlbnRpY2F0aW9uIG1vZGUgYmFja2luZyBpdC4gKi9cbmludGVyZmFjZSBSZXNvbHZlZE1vZGVsV29ya3NwYWNlQ2xpZW50IHtcbiAgY2xpZW50OiBXb3Jrc3BhY2VDbGllbnQ7XG4gIGF1dGg6IFwib2JvXCIgfCBcInNlcnZpY2UtcHJpbmNpcGFsXCI7XG59XG5cbi8qKiBSZXNvbHZlIGFuIE9CTyB3b3Jrc3BhY2UgY2xpZW50IHdoZW4gcHJlc2VudCwgZWxzZSBhIHNlcnZpY2UtcHJpbmNpcGFsIGNsaWVudC4gKi9cbmZ1bmN0aW9uIHJlc29sdmVNb2RlbFdvcmtzcGFjZUNvbnRleHQoXG4gIHJlcXVlc3RDb250ZXh0PzogUmVxdWVzdENvbnRleHQsXG4pOiBSZXNvbHZlZE1vZGVsV29ya3NwYWNlQ2xpZW50IHtcbiAgY29uc3QgdXNlciA9IHJlcXVlc3RDb250ZXh0Py5nZXQoTUFTVFJBX1VTRVJfS0VZKSBhcyBVc2VyIHwgdW5kZWZpbmVkO1xuICBjb25zdCBleGVjdXRpb25Db250ZXh0ID0gdXNlcj8uZXhlY3V0aW9uQ29udGV4dCA/PyBhcHBraXQudHJ5R2V0RXhlY3V0aW9uQ29udGV4dCgpO1xuICBpZiAoZXhlY3V0aW9uQ29udGV4dD8uY2xpZW50LmNvbmZpZykge1xuICAgIHJldHVybiB7XG4gICAgICBjbGllbnQ6IGV4ZWN1dGlvbkNvbnRleHQuY2xpZW50LFxuICAgICAgYXV0aDogXCJpc1VzZXJDb250ZXh0XCIgaW4gZXhlY3V0aW9uQ29udGV4dCA/IFwib2JvXCIgOiBcInNlcnZpY2UtcHJpbmNpcGFsXCIsXG4gICAgfTtcbiAgfVxuICByZXR1cm4geyBjbGllbnQ6IGNyZWF0ZVdvcmtzcGFjZUNsaWVudCgpLCBhdXRoOiBcInNlcnZpY2UtcHJpbmNpcGFsXCIgfTtcbn1cblxuLyoqIFJlc29sdmUgdGhlIHdvcmtzcGFjZSBjbGllbnQgdXNlZCBmb3IgbW9kZWwgZGlzY292ZXJ5IGFuZCBpbmZlcmVuY2UuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZU1vZGVsV29ya3NwYWNlQ2xpZW50KHJlcXVlc3RDb250ZXh0PzogUmVxdWVzdENvbnRleHQpOiBXb3Jrc3BhY2VDbGllbnQge1xuICByZXR1cm4gcmVzb2x2ZU1vZGVsV29ya3NwYWNlQ29udGV4dChyZXF1ZXN0Q29udGV4dCkuY2xpZW50O1xufVxuXG5mdW5jdGlvbiBzZWxlY3Rpb25JbnB1dChcbiAgY29uZmlnOiBNYXN0cmFQbHVnaW5Db25maWcsXG4gIHJlcXVlc3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBkZWZhdWx0Q2xhc3M6IE1vZGVsQ2xhc3MgfCB1bmRlZmluZWQsXG4gIHNlcnZpbmcgPSByZXNvbHZlU2VydmluZ0NvbmZpZyhjb25maWcpLFxuKSB7XG4gIGNvbnN0IHJlcXVlc3RlZENsYXNzID0gcmVxdWVzdGVkICE9PSB1bmRlZmluZWQgPyBwYXJzZU1vZGVsQ2xhc3MocmVxdWVzdGVkKSA6IG51bGw7XG4gIGNvbnN0IGV4cGxpY2l0ID0gcmVxdWVzdGVkQ2xhc3MgPT09IG51bGwgPyByZXF1ZXN0ZWQgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IG1vZGVsQ2xhc3MgPSByZXF1ZXN0ZWRDbGFzcyA/PyBkZWZhdWx0Q2xhc3M7XG4gIHJldHVybiB7XG4gICAgLi4uKGV4cGxpY2l0ICE9PSB1bmRlZmluZWQgPyB7IGV4cGxpY2l0IH0gOiB7fSksXG4gICAgZnV6enk6IHNlcnZpbmcuZnV6enksXG4gICAgdGhyZXNob2xkOiBzZXJ2aW5nLnRocmVzaG9sZCxcbiAgICAuLi4obW9kZWxDbGFzcyAhPT0gdW5kZWZpbmVkID8geyBtb2RlbENsYXNzIH0gOiB7fSksXG4gICAgZmFsbGJhY2tzOiBzZXJ2aW5nLmZhbGxiYWNrcy5zbGljZSgpLFxuICAgIGxpdmVPbmx5OiByZXF1ZXN0ZWQgPT09IHVuZGVmaW5lZCxcbiAgICB0dGxNczogc2VydmluZy50dGxNcyxcbiAgfTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIGFuIGFnZW50J3MgdW5waW5uZWQgZGVmYXVsdCBhZ2FpbnN0IGFuIGFscmVhZHktbG9hZGVkIGxpdmUgY2F0YWxvZ3VlLlxuICpcbiAqIFdpdGggbm8gY29uZmlndXJlZCBpZC9jbGFzcy9mYWxsYmFjaywgdGhlIGdlbmVyaWMgbW9kZWwgcmFua2VyIHNlbGVjdHMgdGhlXG4gKiBoaWdoZXN0LXJhbmtlZCBjdXJyZW50bHkgYXZhaWxhYmxlIEdQVCwgdGhlbiBmYWxscyBiYWNrIHRvIHRoZSBoaWdoZXN0LXJhbmtlZFxuICogbGl2ZSBjaGF0IGVuZHBvaW50IHdoZW4gdGhlIHdvcmtzcGFjZSBoYXMgbm8gR1BULlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZURlZmF1bHRNb2RlbElkKFxuICBjb25maWc6IE1hc3RyYVBsdWdpbkNvbmZpZyxcbiAgZW5kcG9pbnRzOiByZWFkb25seSBTZXJ2aW5nRW5kcG9pbnRTdW1tYXJ5W10sXG4gIG92ZXJyaWRlczogQnVpbGRNb2RlbE92ZXJyaWRlcyA9IHt9LFxuKTogc3RyaW5nIHtcbiAgY29uc3QgcmVxdWVzdGVkID0gb3ZlcnJpZGVzLm1vZGVsSWQgPz8gcHJvY2Vzcy5lbnYuREFUQUJSSUNLU19TRVJWSU5HX0VORFBPSU5UX05BTUU7XG4gIHJldHVybiByZXNvbHZlLnJlc29sdmVNb2RlbChlbmRwb2ludHMsIHNlbGVjdGlvbklucHV0KGNvbmZpZywgcmVxdWVzdGVkLCBvdmVycmlkZXMubW9kZWxDbGFzcykpXG4gICAgLm1vZGVsSWQ7XG59XG5cbi8qKlxuICogUmVzb2x2ZSBhIERhdGFicmlja3MgUHJvdmlkZXJWNCBtb2RlbCBmb3IgdGhlIGN1cnJlbnQgYWdlbnQgc3RlcC4gUnVuc1xuICogd2hpbGUgYGFnZW50LnN0cmVhbWAgaXMgaW5zaWRlIHRoZSBgYXNVc2VyKHJlcSlgIHNjb3BlIHNvIHRva2Vuc1xuICogYXJlIHVzZXItc2NvcGVkOyBvdXRzaWRlIGFuIGFjdGl2ZSB1c2VyIGNvbnRleHQgdGhlIHdvcmtzcGFjZVxuICogY2xpZW50IGZhbGxzIGJhY2sgdG8gdGhlIHNlcnZpY2UgcHJpbmNpcGFsLlxuICpcbiAqIEVuZHBvaW50IHByZWNlZGVuY2U6IHRoZSBwZXItcmVxdWVzdCBvdmVycmlkZVxuICogKHtAbGluayBNQVNUUkFfTU9ERUxfT1ZFUlJJREVfS0VZfSwgb25seSB3aGVuIGBjb25maWcubW9kZWxPdmVycmlkZWAgYWxsb3dzXG4gKiBpdCksIHRoZW4ge0BsaW5rIEJ1aWxkTW9kZWxPdmVycmlkZXMubW9kZWxJZH0gZnJvbSB0aGUgYWdlbnQgLyBwbHVnaW5cbiAqIGNvbmZpZywgdGhlbiBgREFUQUJSSUNLU19TRVJWSU5HX0VORFBPSU5UX05BTUVgLiBXaXRoIG5vbmUgb2YgdGhvc2Ugc2V0IHRoZVxuICogY2FwYWJpbGl0eSBjbGFzcyBhbmQgZmFsbGJhY2sgbGFkZGVyIGluIGBAZGJ4LXRvb2xzL21vZGVsYCBjaG9vc2UgdGhlXG4gKiBlbmRwb2ludC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJ1aWxkTW9kZWwoXG4gIGNvbmZpZzogTWFzdHJhUGx1Z2luQ29uZmlnLFxuICByZXF1ZXN0Q29udGV4dD86IFJlcXVlc3RDb250ZXh0LFxuICBvdmVycmlkZXM6IEJ1aWxkTW9kZWxPdmVycmlkZXMgPSB7fSxcbik6IFByb21pc2U8RGF0YWJyaWNrc0xhbmd1YWdlTW9kZWw+IHtcbiAgY29uc3QgY29udGV4dCA9IHJlcXVlc3RDb250ZXh0ID8/IG5ldyBSZXF1ZXN0Q29udGV4dCgpO1xuICAvLyBUaGUgY2hhdCBwYXRoIHN0YW1wcyB0aGUgQXBwS2l0IHVzZXIgb24gdGhlIHJlcXVlc3QgY29udGV4dCB2aWFcbiAgLy8gYE1hc3RyYVNlcnZlcmAuIFRoZSBNQ1AgdHJhbnNwb3J0IHJvdXRlcyBkb24ndCB0aHJlYWQgdGhhdCBjb250ZXh0XG4gIC8vIGludG8gdG9vbCBleGVjdXRpb24sIHNvIGZhbGwgYmFjayB0byB0aGUgYW1iaWVudCBleGVjdXRpb24gY29udGV4dFxuICAvLyAodGhlIGFjdGl2ZSBPQk8gc2NvcGUsIG9yIHRoZSBzZXJ2aWNlIHByaW5jaXBhbCkgd2hlbiBpdCdzIGFic2VudC5cbiAgY29uc3QgcmVzb2x2ZWQgPSBvdmVycmlkZXMud29ya3NwYWNlQ2xpZW50XG4gICAgPyB7IGNsaWVudDogb3ZlcnJpZGVzLndvcmtzcGFjZUNsaWVudCwgYXV0aDogXCJzZXJ2aWNlLXByaW5jaXBhbFwiIGFzIGNvbnN0IH1cbiAgICA6IHJlc29sdmVNb2RlbFdvcmtzcGFjZUNvbnRleHQoY29udGV4dCk7XG4gIGNvbnN0IHsgY2xpZW50LCBhdXRoIH0gPSByZXNvbHZlZDtcbiAgcmVjb3JkQWN0aXZlVHJhY2VBdXRoKGF1dGgpO1xuICBjb25zdCBjbGllbnRDb25maWcgPSBjbGllbnQuY29uZmlnO1xuICBjb25zdCBob3N0ID0gKGF3YWl0IGNsaWVudENvbmZpZy5nZXRIb3N0KCkpLnRvU3RyaW5nKCk7XG4gIGNvbnN0IGhlYWRlcnMgPSBuZXcgSGVhZGVycygpO1xuICBhd2FpdCBjbGllbnRDb25maWcuYXV0aGVudGljYXRlKGhlYWRlcnMpO1xuICBjb25zdCBsb2dnZXIgPSBsb2cubG9nZ2VyKGNvbmZpZyk7XG4gIGNvbnN0IHNlcnZpbmcgPSByZXNvbHZlU2VydmluZ0NvbmZpZyhjb25maWcpO1xuICBjb25zdCBvdmVycmlkZSA9IHNlcnZpbmcuYWxsb3dPdmVycmlkZVxuICAgID8gKGNvbnRleHQuZ2V0KE1BU1RSQV9NT0RFTF9PVkVSUklERV9LRVkpIGFzIHN0cmluZyB8IHVuZGVmaW5lZClcbiAgICA6IHVuZGVmaW5lZDtcblxuICAvLyBUaGUgb3ZlcnJpZGUgLyBhZ2VudCBkZWZhdWx0IC8gZW52IHZhbHVlIGNhbiBiZSBlaXRoZXIgYSBjb25jcmV0ZVxuICAvLyBlbmRwb2ludCBuYW1lIG9yIGEgbW9kZWwgY2xhc3Mgc2x1ZyAoXCJjaGF0LXRoaW5raW5nXCIgL1xuICAvLyBcImNoYXQtYmFsYW5jZWRcIiAvIFwiY2hhdC1mYXN0XCIpLiBBIGNsYXNzIHNsdWcgYmVjb21lcyBhIGNsYXNzIGludGVudFxuICAvLyAobGV0IHRoZSBsaXZlIGNhdGFsb2d1ZSBwaWNrIHRoZSBiZXN0IG1vZGVsIGluIHRoYXQgYmFuZCk7IGFueXRoaW5nXG4gIC8vIGVsc2UgaXMgYW4gZXhwbGljaXQgbmFtZSBmdXp6eS1tYXRjaGVkIGFnYWluc3QgdGhlIGNhdGFsb2d1ZS4gQW5cbiAgLy8gaW50ZXJuYWwgYG92ZXJyaWRlcy5tb2RlbENsYXNzYCAoZS5nLiB0aGUgY2hhcnQgcGxhbm5lcikgaXMgdGhlXG4gIC8vIGZsb29yIHdoZW4gbm90aGluZyB3YXMgcmVxdWVzdGVkLlxuICBjb25zdCByZXF1ZXN0ZWQgPSBvdmVycmlkZSA/PyBvdmVycmlkZXMubW9kZWxJZCA/PyBwcm9jZXNzLmVudi5EQVRBQlJJQ0tTX1NFUlZJTkdfRU5EUE9JTlRfTkFNRTtcblxuICBjb25zdCB7IG1vZGVsSWQsIHNvdXJjZSB9ID0gYXdhaXQgc2VsZWN0TW9kZWwoXG4gICAgY2xpZW50LFxuICAgIGhvc3QsXG4gICAgc2VsZWN0aW9uSW5wdXQoY29uZmlnLCByZXF1ZXN0ZWQsIG92ZXJyaWRlcy5tb2RlbENsYXNzLCBzZXJ2aW5nKSxcbiAgKTtcbiAgbG9nZ2VyLmRlYnVnKFwibW9kZWwgc2VsZWN0ZWRcIiwgeyBtb2RlbElkLCBzb3VyY2UsIHJlcXVlc3RlZCB9KTtcbiAgY29udGV4dC5zZXQoTUFTVFJBX1JFU09MVkVEX01PREVMX0tFWSwgbW9kZWxJZCk7XG4gIHJlY29yZEFjdGl2ZVRyYWNlTW9kZWwobW9kZWxJZCk7XG5cbiAgcmV0dXJuIGNyZWF0ZURhdGFicmlja3NMYW5ndWFnZU1vZGVsKHtcbiAgICBtb2RlbElkLFxuICAgIHByb3RvY29sOiBzZXJ2aW5nQXBpKG1vZGVsSWQpLFxuICAgIGhvc3QsXG4gICAgaGVhZGVyczogT2JqZWN0LmZyb21FbnRyaWVzKGhlYWRlcnMuZW50cmllcygpKSxcbiAgICBwcm92aWRlck5hbWU6IGNvbmZpZy5wcm92aWRlcklkID8/IFwib3BlbmFpXCIsXG4gIH0pO1xufVxuIl19
|
package/lib/src/observability.js
CHANGED
|
@@ -111,21 +111,20 @@ export async function buildObservability(options) {
|
|
|
111
111
|
: otelBase
|
|
112
112
|
? `${otelBase.replace(/\/+$/, "")}/v1/traces`
|
|
113
113
|
: undefined;
|
|
114
|
-
// `mlflowEnabled`
|
|
115
|
-
//
|
|
116
|
-
|
|
117
|
-
const feedback = mlflowEnabled();
|
|
114
|
+
// `mlflowEnabled` establishes whether MLflow can be selected by feedback
|
|
115
|
+
// auto-resolution, so the boot line reports that availability directly.
|
|
116
|
+
const mlflowAvailable = mlflowEnabled();
|
|
118
117
|
logger.info("Mastra observability wired through OTel bridge", {
|
|
119
118
|
serviceName,
|
|
120
119
|
requestContextKeys,
|
|
121
120
|
otelBase: otelBase ?? "<unset>",
|
|
122
121
|
resolvedTracesUrl: resolvedTracesUrl ?? "<unset>",
|
|
123
|
-
|
|
122
|
+
mlflowAvailable,
|
|
124
123
|
observability: directMlflowConfigured
|
|
125
124
|
? "mlflow-direct"
|
|
126
125
|
: appMlflowTraceInfo
|
|
127
126
|
? "mlflow-apps"
|
|
128
|
-
:
|
|
127
|
+
: mlflowAvailable
|
|
129
128
|
? "mlflow"
|
|
130
129
|
: "otel",
|
|
131
130
|
});
|
|
@@ -139,4 +138,4 @@ export async function buildObservability(options) {
|
|
|
139
138
|
},
|
|
140
139
|
});
|
|
141
140
|
}
|
|
142
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2YWJpbGl0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vYnNlcnZhYmlsaXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQ0c7QUFFSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLFdBQVcsRUFBdUIsTUFBTSxvQkFBb0IsQ0FBQztBQUV0RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDekQsT0FBTyxFQUNMLDRCQUE0QixFQUM1Qiw2QkFBNkIsRUFDN0IsYUFBYSxHQUNkLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztBQUVsRCxNQUFNLG9CQUFvQixHQUFHLFFBQVEsQ0FBQztBQXVDdEMsOEVBQThFO0FBQzlFLE1BQU0sVUFBVSx1QkFBdUI7SUFDckMsT0FBTyxPQUFPLENBQ1osT0FBTyxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLGtDQUFrQyxDQUMxRixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLHdCQUF3QjtJQUN0QyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLEtBQUssTUFBTTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ2hGLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN0QixNQUFN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QU8sRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsY0FBYyxFQUFFLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUNqRjtnQkFDRCxrQkFBa0I7YUFDbkI7U0FDRjtLQUNGLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE1hc3RyYSBvYnNlcnZhYmlsaXR5IHdpcmVkIHRocm91Z2ggdGhlIHNhbWUgT1RlbCBwaXBlbGluZSBBcHBLaXQnc1xuICogYnVpbHQtaW4gcGx1Z2lucyAoZS5nLiBgYWdlbnRzYCkgdXNlLCB2aWEgYEBtYXN0cmEvb3RlbC1icmlkZ2VgLlxuICpcbiAqIEhvdyB0cmFjZXMgZmxvdzpcbiAqXG4gKiAxLiBgQGRhdGFicmlja3MvYXBwa2l0YCBib290cyBhIGdsb2JhbCBgTm9kZVNES2AgaW5cbiAqICAgIGBUZWxlbWV0cnlNYW5hZ2VyLmluaXRpYWxpemUoKWAgKGR1cmluZyBgY3JlYXRlQXBwYCkgd2hlblxuICogICAgYE9URUxfRVhQT1JURVJfT1RMUF9FTkRQT0lOVGAgaXMgc2V0IGluIHRoZSBwcm9jZXNzIGVudi5cbiAqIDIuIEV2ZXJ5IEFwcEtpdCBwbHVnaW4gc3BhbiAoZS5nLiB0aGUgYGFnZW50c2AgcGx1Z2luJ3NcbiAqICAgIGBleGVjdXRlU3RyZWFtYCkgaXMgY3JlYXRlZCB2aWEgdGhlIGdsb2JhbCBPVGVsIHRyYWNlclxuICogICAgKGB0cmFjZS5nZXRUcmFjZXIoPHBsdWdpbj4pYCksIHNvIGl0IGxhbmRzIG9uIHRoYXQgTm9kZVNESyBhbmRcbiAqICAgIGlzIHNoaXBwZWQgdGhyb3VnaCBpdHMgT1RMUCBleHBvcnRlci5cbiAqIDMuIFRoZSBNYXN0cmEgYE90ZWxCcmlkZ2VgIEFMU08gY3JlYXRlcyByZWFsIE9UZWwgc3BhbnMgb24gdGhlIHNhbWVcbiAqICAgIGdsb2JhbCB0cmFjZXIgZm9yIGV2ZXJ5IE1hc3RyYSBvcGVyYXRpb24gKGFnZW50IHJ1bnMsIG1vZGVsXG4gKiAgICBjYWxscywgdG9vbCBpbnZvY2F0aW9ucywgd29ya2Zsb3cgc3RlcHMpLiBUaGV5IGluaGVyaXQgdGhlXG4gKiAgICBhbWJpZW50IE9UZWwgY29udGV4dCwgc28gd2hlbiBNYXN0cmEgaXMgaW52b2tlZCBmcm9tIGluc2lkZSBhblxuICogICAgQXBwS2l0IEhUVFAgc3BhbiB0aGUgdHJhY2Ugc3RheXMgY29ubmVjdGVkLlxuICpcbiAqIE5ldCBlZmZlY3Q6IE1hc3RyYSBzcGFucyBnZXQgZXhhY3RseSB0aGUgdHJlYXRtZW50IEFwcEtpdCdzXG4gKiBgYWdlbnRzYCBwbHVnaW4gZ2V0cy4gTm8gY3VzdG9tIE9UTFAgcGlwZWxpbmUgbGl2ZXMgaW4gdGhpc1xuICogcGFja2FnZTsgdGhlIE9UTFAgZW5kcG9pbnQsIGhlYWRlcnMsIGFuZCByZXNvdXJjZSBhdHRyaWJ1dGVzIGFyZVxuICogZHJpdmVuIGJ5IHRoZSBzdGFuZGFyZCBPVGVsIGVudiB2YXJzXG4gKiAoYE9URUxfRVhQT1JURVJfT1RMUF9FTkRQT0lOVGAsIGBPVEVMX0VYUE9SVEVSX09UTFBfSEVBREVSU2AsXG4gKiBgT1RFTF9TRVJWSUNFX05BTUVgLCBgT1RFTF9SRVNPVVJDRV9BVFRSSUJVVEVTYCwgLi4uKSBhbmQgY29uc3VtZWRcbiAqIGJ5IEFwcEtpdCdzIGBUZWxlbWV0cnlNYW5hZ2VyYC4gU2V0IHRob3NlIG9uY2UgYW5kIGJvdGggQXBwS2l0IGFuZFxuICogTWFzdHJhIHNwYW5zIGVuZCB1cCBhdCB0aGUgc2FtZSBiYWNrZW5kLlxuICpcbiAqIFdoZW4gYE9URUxfRVhQT1JURVJfT1RMUF9FTkRQT0lOVGAgaXMgdW5zZXQgdGhlIGJyaWRnZSBpcyBub3RcbiAqIHJlZ2lzdGVyZWQgYXQgYWxsICh1bmxlc3MgYG9ic2VydmFiaWxpdHk6IHRydWVgIGZvcmNlcyBpdCBvbiksIHNvXG4gKiBNYXN0cmEgZG9lcyBub3QgZW1pdCBgW090ZWxCcmlkZ2VdIE5vIE9URUwgc3BhbiBmb3VuZGAgd2FybmluZ3MuXG4gKlxuICogT24gRGF0YWJyaWNrcyBBcHBzIHRoZSBzdXBwb3J0ZWQgc2luayBpcyBVbml0eSBDYXRhbG9nIHZpYVxuICogYHRlbGVtZXRyeV9leHBvcnRfZGVzdGluYXRpb25zYCAodGhlIHBsYXRmb3JtIGluamVjdHMgdGhlIGxvY2FsIE9UTFBcbiAqIHNpZGVjYXIpLiBNYW5hZ2VkIE1MZmxvdyBoYXMgbm8gT1RMUCBpbmdlc3QgZW5kcG9pbnQgLSBkbyBub3QgcG9pbnRcbiAqIGBPVEVMX0VYUE9SVEVSX09UTFBfKmAgYXQgdGhlIHdvcmtzcGFjZSBob3N0LiBTZXRcbiAqIGBPVEVMX1BST1BBR0FUT1JTPW5vbmVgIHNvIEFwcHMgaW5ncmVzcyBgdHJhY2VwYXJlbnRgIGRvZXMgbm90IGhpZGVcbiAqIGV2ZXJ5IHJlcXVlc3Qtc2NvcGVkIHJvb3Qgc3BhbiBmcm9tIHRoZSBVQyBgKl90cmFjZV91bmlmaWVkYCB2aWV3LlxuICogQ2hhdCByZXF1ZXN0L3Jlc3BvbnNlIG9uIHRoYXQgcm9vdCBzcGFuIGlzIHN0YW1wZWQgYnlcbiAqIGB0ZWxlbWV0cnkuYXR0YWNoQ2hhdFR1cm5UZWxlbWV0cnlgIChzZWUgYHRlbGVtZXRyeS50c2ApLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBwcm9qZWN0VXRpbHMgfSBmcm9tIFwiQGRieC10b29scy9jb3JlXCI7XG5pbXBvcnQgeyBsb2cgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJpbGl0eSB9IGZyb20gXCJAbWFzdHJhL29ic2VydmFiaWxpdHlcIjtcbmltcG9ydCB7IE90ZWxCcmlkZ2UgfSBmcm9tIFwiQG1hc3RyYS9vdGVsLWJyaWRnZVwiO1xuaW1wb3J0IHsgcHJvcGFnYXRpb24sIHR5cGUgVHJhY2VyUHJvdmlkZXIgfSBmcm9tIFwiQG9wZW50ZWxlbWV0cnkvYXBpXCI7XG5cbmltcG9ydCB7IFRSQUNFX1JFUVVFU1RfQ09OVEVYVF9LRVlTIH0gZnJvbSBcIi4vY29uZmlnLnRzXCI7XG5pbXBvcnQge1xuICBpbml0aWFsaXplQXBwTWxmbG93VHJhY2VJbmZvLFxuICBpbml0aWFsaXplRGlyZWN0TWxmbG93VHJhY2luZyxcbiAgbWxmbG93RW5hYmxlZCxcbn0gZnJvbSBcIi4vbWxmbG93LnRzXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJtYXN0cmEvb2JzZXJ2YWJpbGl0eVwiKTtcblxuY29uc3QgREVGQVVMVF9TRVJWSUNFX05BTUUgPSBcIm1hc3RyYVwiO1xuXG4vKiogT3B0aW9ucyBmb3IgY29ubmVjdGluZyBNYXN0cmEgc3BhbnMgdG8gQXBwS2l0J3MgT3BlblRlbGVtZXRyeSBwaXBlbGluZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRPYnNlcnZhYmlsaXR5T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHdpcmUgdGhlIE1hc3RyYSBgT3RlbEJyaWRnZWAuIE1pcnJvcnNcbiAgICoge0BsaW5rIE1hc3RyYVBsdWdpbkNvbmZpZy5vYnNlcnZhYmlsaXR5fTpcbiAgICpcbiAgICogLSBgdW5kZWZpbmVkYCAoYXV0byk6IG9uIG9ubHkgd2hlbiBgT1RFTF9FWFBPUlRFUl9PVExQX0VORFBPSU5UYCBvclxuICAgKiAgIGBPVEVMX0VYUE9SVEVSX09UTFBfVFJBQ0VTX0VORFBPSU5UYCBpcyBzZXQgKHNhbWUgc2lnbmFsIEFwcEtpdCdzXG4gICAqICAgYFRlbGVtZXRyeU1hbmFnZXJgIHVzZXMgdG8gcmVnaXN0ZXIgYSByZWFsIHRyYWNlcikuIFdoZW4gdW5zZXQsXG4gICAqICAgc2tpcCB0aGUgYnJpZGdlIGVudGlyZWx5IHNvIE1hc3RyYSBkb2VzIG5vdCBlbWl0XG4gICAqICAgYFtPdGVsQnJpZGdlXSBObyBPVEVMIHNwYW4gZm91bmRgIHdhcm5pbmdzIG9uIHRoZSBub29wIHRyYWNlci5cbiAgICogLSBgdHJ1ZWA6IGZvcmNlIG9uIGV2ZW4gd2l0aG91dCBhbiBPVExQIGVuZHBvaW50LlxuICAgKiAtIGBmYWxzZWA6IGZvcmNlIG9mZi5cbiAgICovXG4gIGVuYWJsZWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogU2VydmljZSBuYW1lIGF0dGFjaGVkIHRvIHRoZSBNYXN0cmEgYE9ic2VydmFiaWxpdHlgIGNvbmZpZy4gVXNlZFxuICAgKiBhcyB0aGUgdHJhY2VyIHNjb3BlIG5hbWUgb24gYnJpZGdlZCBPVGVsIHNwYW5zICh0aGUgYHNlcnZpY2UubmFtZWBcbiAgICogcmVzb3VyY2UgYXR0cmlidXRlIGlzIG93bmVkIGJ5IEFwcEtpdCdzIGBUZWxlbWV0cnlNYW5hZ2VyYCBpbnN0ZWFkXG4gICAqIC0gaXQgcmVhZHMgYE9URUxfU0VSVklDRV9OQU1FYCAvIGBEQVRBQlJJQ0tTX0FQUF9OQU1FYCBhdFxuICAgKiBgY3JlYXRlQXBwYCB0aW1lKS5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gcHJvamVjdCBuYW1lIHRoZW4gYFwibWFzdHJhXCJgLlxuICAgKi9cbiAgc2VydmljZU5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBgUmVxdWVzdENvbnRleHRgIGtleXMgdG8gZXh0cmFjdCBhcyBzcGFuIG1ldGFkYXRhIG9uIGV2ZXJ5IE1hc3RyYVxuICAgKiB0cmFjZS4gRGVmYXVsdHMgdG8ge0BsaW5rIFRSQUNFX1JFUVVFU1RfQ09OVEVYVF9LRVlTfSAodXNlciBpZCxcbiAgICogdGhyZWFkIGlkLCByZXF1ZXN0IGlkLCBlbnZpcm9ubWVudCwgbW9kZWwgb3ZlcnJpZGUsIC4uLikuXG4gICAqXG4gICAqIFN1cHBvcnRzIGRvdCBub3RhdGlvbiBmb3IgbmVzdGVkIHZhbHVlcyBwZXIgdGhlIE1hc3RyYSBkb2NzLlxuICAgKi9cbiAgcmVxdWVzdENvbnRleHRLZXlzPzogcmVhZG9ubHkgc3RyaW5nW107XG4gIC8qKiBBcHBLaXQtb3duZWQgdHJhY2VyIHByb3ZpZGVyIHVzZWQgYnkgdGhlIE1hc3RyYSBPVGVsIGJyaWRnZS4gKi9cbiAgdHJhY2VyUHJvdmlkZXI/OiBUcmFjZXJQcm92aWRlcjtcbn1cblxuLyoqIFRydWUgd2hlbiBBcHBLaXQncyBnbG9iYWwgT1RlbCBwaXBlbGluZSBpcyBjb25maWd1cmVkIHRvIGV4cG9ydCB0cmFjZXMuICovXG5leHBvcnQgZnVuY3Rpb24gaXNPdGxwVHJhY2luZ0NvbmZpZ3VyZWQoKTogYm9vbGVhbiB7XG4gIHJldHVybiBCb29sZWFuKFxuICAgIHByb2Nlc3MuZW52Lk9URUxfRVhQT1JURVJfT1RMUF9FTkRQT0lOVCB8fCBwcm9jZXNzLmVudi5PVEVMX0VYUE9SVEVSX09UTFBfVFJBQ0VTX0VORFBPSU5ULFxuICApO1xufVxuXG4vKipcbiAqIEhvbm9yIHRoZSBzdGFuZGFyZCBuby1vcCBwcm9wYWdhdG9yIHNldHRpbmcgYWZ0ZXIgQXBwS2l0IHJlZ2lzdGVycyBpdHNcbiAqIHRyYWNlciBwcm92aWRlci4gQXBwS2l0IDAuODEgaW5zdGFsbHMgVzNDIHByb3BhZ2F0aW9uIHVuY29uZGl0aW9uYWxseSwgc29cbiAqIGRpc2FibGluZyBvbmx5IHRoZSBnbG9iYWwgcHJvcGFnYXRvciBrZWVwcyBhc3luYyBzcGFuIGNvbnRleHQgYWN0aXZlIHdoaWxlXG4gKiBwcmV2ZW50aW5nIGluZ3Jlc3MgZXh0cmFjdGlvbiBhbmQgZG93bnN0cmVhbSBpbmplY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb25maWd1cmVPdGVsUHJvcGFnYXRpb24oKTogYm9vbGVhbiB7XG4gIGlmIChwcm9jZXNzLmVudi5PVEVMX1BST1BBR0FUT1JTPy50cmltKCkudG9Mb3dlckNhc2UoKSAhPT0gXCJub25lXCIpIHJldHVybiBmYWxzZTtcbiAgcHJvcGFnYXRpb24uZGlzYWJsZSgpO1xuICBsb2dnZXIuaW5mbyhcIk9wZW5UZWxlbWV0cnkgcHJvcGFnYXRpb24gZGlzYWJsZWRcIiwge1xuICAgIHNldHRpbmc6IFwiT1RFTF9QUk9QQUdBVE9SUz1ub25lXCIsXG4gIH0pO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBCdWlsZCBhIE1hc3RyYSBgT2JzZXJ2YWJpbGl0eWAgd2hvc2Ugc3BhbnMgcmlkZSBBcHBLaXQncyBnbG9iYWxcbiAqIE9UZWwgcGlwZWxpbmUgdmlhIGBAbWFzdHJhL290ZWwtYnJpZGdlYC5cbiAqXG4gKiBSZXR1cm5zIGB1bmRlZmluZWRgIHdoZW4gdHJhY2luZyBpcyBvZmY6IGVpdGhlciB0aGUgY2FsbGVyIHBhc3NlZFxuICogYGVuYWJsZWQ6IGZhbHNlYCwgb3IgYXV0byBtb2RlIGZpbmRzIG5laXRoZXIgQXBwS2l0IE9UTFAgbm9yIGEgbG9jYWwgTUxmbG93XG4gKiBleHBlcmltZW50LlxuICogU2tpcHBpbmcgdGhlIGJyaWRnZSBpbiB0aGF0IGNhc2UgYXZvaWRzIGBbT3RlbEJyaWRnZV0gTm8gT1RFTCBzcGFuXG4gKiBmb3VuZGAgbG9nIHNwYW0gZnJvbSBNYXN0cmEgc3BhbnMgdGhhdCBoYXZlIG5vIHBhcmVudCBvbiB0aGUgbm9vcFxuICogdHJhY2VyLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYnVpbGRPYnNlcnZhYmlsaXR5KFxuICBvcHRpb25zPzogQnVpbGRPYnNlcnZhYmlsaXR5T3B0aW9ucyxcbik6IFByb21pc2U8T2JzZXJ2YWJpbGl0eSB8IHVuZGVmaW5lZD4ge1xuICBjb25zdCBvdGVsQmFzZSA9IHByb2Nlc3MuZW52Lk9URUxfRVhQT1JURVJfT1RMUF9FTkRQT0lOVDtcbiAgY29uc3Qgb3RlbFRyYWNlc092ZXJyaWRlID0gcHJvY2Vzcy5lbnYuT1RFTF9FWFBPUlRFUl9PVExQX1RSQUNFU19FTkRQT0lOVDtcbiAgY29uc3Qgb3RscENvbmZpZ3VyZWQgPSBpc090bHBUcmFjaW5nQ29uZmlndXJlZCgpO1xuICBjb25zdCBhcHBNbGZsb3dUcmFjZUluZm8gPVxuICAgIG9wdGlvbnM/LmVuYWJsZWQgPT09IGZhbHNlID8gZmFsc2UgOiBhd2FpdCBpbml0aWFsaXplQXBwTWxmbG93VHJhY2VJbmZvKCk7XG4gIGNvbnN0IGRpcmVjdE1sZmxvd0NvbmZpZ3VyZWQgPVxuICAgIG9wdGlvbnM/LmVuYWJsZWQgPT09IGZhbHNlIHx8IG90bHBDb25maWd1cmVkID8gZmFsc2UgOiBhd2FpdCBpbml0aWFsaXplRGlyZWN0TWxmbG93VHJhY2luZygpO1xuICBpZiAoZGlyZWN0TWxmbG93Q29uZmlndXJlZCkgY29uZmlndXJlT3RlbFByb3BhZ2F0aW9uKCk7XG4gIGNvbnN0IHRyYWNpbmdDb25maWd1cmVkID0gb3RscENvbmZpZ3VyZWQgfHwgZGlyZWN0TWxmbG93Q29uZmlndXJlZDtcblxuICBpZiAob3B0aW9ucz8uZW5hYmxlZCA9PT0gZmFsc2UgfHwgKG9wdGlvbnM/LmVuYWJsZWQgIT09IHRydWUgJiYgIXRyYWNpbmdDb25maWd1cmVkKSkge1xuICAgIGxvZ2dlci5pbmZvKFwiTWFzdHJhIG9ic2VydmFiaWxpdHkgb2ZmXCIsIHtcbiAgICAgIHJlYXNvbjpcbiAgICAgICAgb3B0aW9ucz8uZW5hYmxlZCA9PT0gZmFsc2VcbiAgICAgICAgICA/IFwiZGlzYWJsZWQgaW4gcGx1Z2luIGNvbmZpZ1wiXG4gICAgICAgICAgOiBcIm5vIE9UTFAgZW5kcG9pbnQgb3IgZGlyZWN0IE1MZmxvdyBleHBlcmltZW50IGNvbmZpZ3VyZWRcIixcbiAgICB9KTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgY29uc3Qgc2VydmljZU5hbWUgPSBvcHRpb25zPy5zZXJ2aWNlTmFtZSA/PyAoYXdhaXQgcHJvamVjdFV0aWxzLm5hbWUoKSkgPz8gREVGQVVMVF9TRVJWSUNFX05BTUU7XG4gIGNvbnN0IHJlcXVlc3RDb250ZXh0S2V5cyA9IFsuLi4ob3B0aW9ucz8ucmVxdWVzdENvbnRleHRLZXlzID8/IFRSQUNFX1JFUVVFU1RfQ09OVEVYVF9LRVlTKV07XG5cbiAgLy8gVGhlIE9UZWwgSFRUUCBleHBvcnRlciB0cmVhdHMgYE9URUxfRVhQT1JURVJfT1RMUF9FTkRQT0lOVGAgYXMgYVxuICAvLyAqYmFzZSogVVJMIGFuZCBhcHBlbmRzIHRoZSBzaWduYWwgcGF0aCBpdHNlbGYgKGUuZy5cbiAgLy8gYGh0dHA6Ly9sb2NhbGhvc3Q6NjAwNmAgLT4gYGh0dHA6Ly9sb2NhbGhvc3Q6NjAwNi92MS90cmFjZXNgKS4gTG9nXG4gIC8vIHRoZSByZXNvbHZlZCBQT1NUIFVSTCBzbyBtaXNjb25maWd1cmF0aW9ucyAoZS5nLiBhY2NpZGVudGFsbHlcbiAgLy8gc2V0dGluZyB0aGUgYmFzZSB2YXIgdG8gYSBgL3YxL3RyYWNlc2Atc3VmZml4ZWQgVVJMLCB3aGljaCBtYWtlc1xuICAvLyB0aGUgU0RLIFBPU1QgdG8gYC4uLi92MS90cmFjZXMvdjEvdHJhY2VzYCBhbmQgUGhvZW5peCA0MDRzKSBhcmVcbiAgLy8gb2J2aW91cyBpbiBzdGFydHVwIG91dHB1dC5cbiAgY29uc3QgcmVzb2x2ZWRUcmFjZXNVcmwgPSBvdGVsVHJhY2VzT3ZlcnJpZGVcbiAgICA/IG90ZWxUcmFjZXNPdmVycmlkZVxuICAgIDogb3RlbEJhc2VcbiAgICAgID8gYCR7b3RlbEJhc2UucmVwbGFjZSgvXFwvKyQvLCBcIlwiKX0vdjEvdHJhY2VzYFxuICAgICAgOiB1bmRlZmluZWQ7XG4gIC8vIGBtbGZsb3dFbmFibGVkYCBpcyB0aGUgc2FtZSBnYXRlIHRoYXQgZmxpcHMgY2hhdCBmZWVkYmFjayBvbiwgc28gdGhlXG4gIC8vIGJvb3QgbGluZSBpcyB0aGUgb25lLWdsYW5jZSBjaGVjayB0aGF0IGJvdGggaGFsdmVzIG9mIHRoZSBBcHBzIFVDXG4gIC8vIHBpcGVsaW5lIChPVExQIHNpZGVjYXIgKyBleHBlcmltZW50IGlkKSBhcmUgcHJlc2VudC5cbiAgY29uc3QgZmVlZGJhY2sgPSBtbGZsb3dFbmFibGVkKCk7XG4gIGxvZ2dlci5pbmZvKFwiTWFzdHJhIG9ic2VydmFiaWxpdHkgd2lyZWQgdGhyb3VnaCBPVGVsIGJyaWRnZVwiLCB7XG4gICAgc2VydmljZU5hbWUsXG4gICAgcmVxdWVzdENvbnRleHRLZXlzLFxuICAgIG90ZWxCYXNlOiBvdGVsQmFzZSA/PyBcIjx1bnNldD5cIixcbiAgICByZXNvbHZlZFRyYWNlc1VybDogcmVzb2x2ZWRUcmFjZXNVcmwgPz8gXCI8dW5zZXQ+XCIsXG4gICAgZmVlZGJhY2ssXG4gICAgb2JzZXJ2YWJpbGl0eTogZGlyZWN0TWxmbG93Q29uZmlndXJlZFxuICAgICAgPyBcIm1sZmxvdy1kaXJlY3RcIlxuICAgICAgOiBhcHBNbGZsb3dUcmFjZUluZm9cbiAgICAgICAgPyBcIm1sZmxvdy1hcHBzXCJcbiAgICAgICAgOiBmZWVkYmFja1xuICAgICAgICAgID8gXCJtbGZsb3dcIlxuICAgICAgICAgIDogXCJvdGVsXCIsXG4gIH0pO1xuXG4gIHJldHVybiBuZXcgT2JzZXJ2YWJpbGl0eSh7XG4gICAgY29uZmlnczoge1xuICAgICAgc2VydmljZU5hbWU6IHtcbiAgICAgICAgc2VydmljZU5hbWUsXG4gICAgICAgIGJyaWRnZTogbmV3IE90ZWxCcmlkZ2UoXG4gICAgICAgICAgb3B0aW9ucz8udHJhY2VyUHJvdmlkZXIgPyB7IHRyYWNlclByb3ZpZGVyOiBvcHRpb25zLnRyYWNlclByb3ZpZGVyIH0gOiB1bmRlZmluZWQsXG4gICAgICAgICksXG4gICAgICAgIHJlcXVlc3RDb250ZXh0S2V5cyxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG59XG4iXX0=
|
|
141
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2YWJpbGl0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vYnNlcnZhYmlsaXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQ0c7QUFFSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLFdBQVcsRUFBdUIsTUFBTSxvQkFBb0IsQ0FBQztBQUV0RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDekQsT0FBTyxFQUNMLDRCQUE0QixFQUM1Qiw2QkFBNkIsRUFDN0IsYUFBYSxHQUNkLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztBQUVsRCxNQUFNLG9CQUFvQixHQUFHLFFBQVEsQ0FBQztBQXVDdEMsOEVBQThFO0FBQzlFLE1BQU0sVUFBVSx1QkFBdUI7SUFDckMsT0FBTyxPQUFPLENBQ1osT0FBTyxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLGtDQUFrQyxDQUMxRixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLHdCQUF3QjtJQUN0QyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLEtBQUssTUFBTTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ2hGLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN0QixNQUFN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Q0FBQyxDQUFDLENBQUMsRUFBRSxjQUFjLEVBQUUsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQ2pGO2dCQUNELGtCQUFrQjthQUNuQjtTQUNGO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTWFzdHJhIG9ic2VydmFiaWxpdHkgd2lyZWQgdGhyb3VnaCB0aGUgc2FtZSBPVGVsIHBpcGVsaW5lIEFwcEtpdCdzXG4gKiBidWlsdC1pbiBwbHVnaW5zIChlLmcuIGBhZ2VudHNgKSB1c2UsIHZpYSBgQG1hc3RyYS9vdGVsLWJyaWRnZWAuXG4gKlxuICogSG93IHRyYWNlcyBmbG93OlxuICpcbiAqIDEuIGBAZGF0YWJyaWNrcy9hcHBraXRgIGJvb3RzIGEgZ2xvYmFsIGBOb2RlU0RLYCBpblxuICogICAgYFRlbGVtZXRyeU1hbmFnZXIuaW5pdGlhbGl6ZSgpYCAoZHVyaW5nIGBjcmVhdGVBcHBgKSB3aGVuXG4gKiAgICBgT1RFTF9FWFBPUlRFUl9PVExQX0VORFBPSU5UYCBpcyBzZXQgaW4gdGhlIHByb2Nlc3MgZW52LlxuICogMi4gRXZlcnkgQXBwS2l0IHBsdWdpbiBzcGFuIChlLmcuIHRoZSBgYWdlbnRzYCBwbHVnaW4nc1xuICogICAgYGV4ZWN1dGVTdHJlYW1gKSBpcyBjcmVhdGVkIHZpYSB0aGUgZ2xvYmFsIE9UZWwgdHJhY2VyXG4gKiAgICAoYHRyYWNlLmdldFRyYWNlcig8cGx1Z2luPilgKSwgc28gaXQgbGFuZHMgb24gdGhhdCBOb2RlU0RLIGFuZFxuICogICAgaXMgc2hpcHBlZCB0aHJvdWdoIGl0cyBPVExQIGV4cG9ydGVyLlxuICogMy4gVGhlIE1hc3RyYSBgT3RlbEJyaWRnZWAgQUxTTyBjcmVhdGVzIHJlYWwgT1RlbCBzcGFucyBvbiB0aGUgc2FtZVxuICogICAgZ2xvYmFsIHRyYWNlciBmb3IgZXZlcnkgTWFzdHJhIG9wZXJhdGlvbiAoYWdlbnQgcnVucywgbW9kZWxcbiAqICAgIGNhbGxzLCB0b29sIGludm9jYXRpb25zLCB3b3JrZmxvdyBzdGVwcykuIFRoZXkgaW5oZXJpdCB0aGVcbiAqICAgIGFtYmllbnQgT1RlbCBjb250ZXh0LCBzbyB3aGVuIE1hc3RyYSBpcyBpbnZva2VkIGZyb20gaW5zaWRlIGFuXG4gKiAgICBBcHBLaXQgSFRUUCBzcGFuIHRoZSB0cmFjZSBzdGF5cyBjb25uZWN0ZWQuXG4gKlxuICogTmV0IGVmZmVjdDogTWFzdHJhIHNwYW5zIGdldCBleGFjdGx5IHRoZSB0cmVhdG1lbnQgQXBwS2l0J3NcbiAqIGBhZ2VudHNgIHBsdWdpbiBnZXRzLiBObyBjdXN0b20gT1RMUCBwaXBlbGluZSBsaXZlcyBpbiB0aGlzXG4gKiBwYWNrYWdlOyB0aGUgT1RMUCBlbmRwb2ludCwgaGVhZGVycywgYW5kIHJlc291cmNlIGF0dHJpYnV0ZXMgYXJlXG4gKiBkcml2ZW4gYnkgdGhlIHN0YW5kYXJkIE9UZWwgZW52IHZhcnNcbiAqIChgT1RFTF9FWFBPUlRFUl9PVExQX0VORFBPSU5UYCwgYE9URUxfRVhQT1JURVJfT1RMUF9IRUFERVJTYCxcbiAqIGBPVEVMX1NFUlZJQ0VfTkFNRWAsIGBPVEVMX1JFU09VUkNFX0FUVFJJQlVURVNgLCAuLi4pIGFuZCBjb25zdW1lZFxuICogYnkgQXBwS2l0J3MgYFRlbGVtZXRyeU1hbmFnZXJgLiBTZXQgdGhvc2Ugb25jZSBhbmQgYm90aCBBcHBLaXQgYW5kXG4gKiBNYXN0cmEgc3BhbnMgZW5kIHVwIGF0IHRoZSBzYW1lIGJhY2tlbmQuXG4gKlxuICogV2hlbiBgT1RFTF9FWFBPUlRFUl9PVExQX0VORFBPSU5UYCBpcyB1bnNldCB0aGUgYnJpZGdlIGlzIG5vdFxuICogcmVnaXN0ZXJlZCBhdCBhbGwgKHVubGVzcyBgb2JzZXJ2YWJpbGl0eTogdHJ1ZWAgZm9yY2VzIGl0IG9uKSwgc29cbiAqIE1hc3RyYSBkb2VzIG5vdCBlbWl0IGBbT3RlbEJyaWRnZV0gTm8gT1RFTCBzcGFuIGZvdW5kYCB3YXJuaW5ncy5cbiAqXG4gKiBPbiBEYXRhYnJpY2tzIEFwcHMgdGhlIHN1cHBvcnRlZCBzaW5rIGlzIFVuaXR5IENhdGFsb2cgdmlhXG4gKiBgdGVsZW1ldHJ5X2V4cG9ydF9kZXN0aW5hdGlvbnNgICh0aGUgcGxhdGZvcm0gaW5qZWN0cyB0aGUgbG9jYWwgT1RMUFxuICogc2lkZWNhcikuIE1hbmFnZWQgTUxmbG93IGhhcyBubyBPVExQIGluZ2VzdCBlbmRwb2ludCAtIGRvIG5vdCBwb2ludFxuICogYE9URUxfRVhQT1JURVJfT1RMUF8qYCBhdCB0aGUgd29ya3NwYWNlIGhvc3QuIFNldFxuICogYE9URUxfUFJPUEFHQVRPUlM9bm9uZWAgc28gQXBwcyBpbmdyZXNzIGB0cmFjZXBhcmVudGAgZG9lcyBub3QgaGlkZVxuICogZXZlcnkgcmVxdWVzdC1zY29wZWQgcm9vdCBzcGFuIGZyb20gdGhlIFVDIGAqX3RyYWNlX3VuaWZpZWRgIHZpZXcuXG4gKiBDaGF0IHJlcXVlc3QvcmVzcG9uc2Ugb24gdGhhdCByb290IHNwYW4gaXMgc3RhbXBlZCBieVxuICogYHRlbGVtZXRyeS5hdHRhY2hDaGF0VHVyblRlbGVtZXRyeWAgKHNlZSBgdGVsZW1ldHJ5LnRzYCkuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IHByb2plY3RVdGlscyB9IGZyb20gXCJAZGJ4LXRvb2xzL2NvcmVcIjtcbmltcG9ydCB7IGxvZyB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmlsaXR5IH0gZnJvbSBcIkBtYXN0cmEvb2JzZXJ2YWJpbGl0eVwiO1xuaW1wb3J0IHsgT3RlbEJyaWRnZSB9IGZyb20gXCJAbWFzdHJhL290ZWwtYnJpZGdlXCI7XG5pbXBvcnQgeyBwcm9wYWdhdGlvbiwgdHlwZSBUcmFjZXJQcm92aWRlciB9IGZyb20gXCJAb3BlbnRlbGVtZXRyeS9hcGlcIjtcblxuaW1wb3J0IHsgVFJBQ0VfUkVRVUVTVF9DT05URVhUX0tFWVMgfSBmcm9tIFwiLi9jb25maWcudHNcIjtcbmltcG9ydCB7XG4gIGluaXRpYWxpemVBcHBNbGZsb3dUcmFjZUluZm8sXG4gIGluaXRpYWxpemVEaXJlY3RNbGZsb3dUcmFjaW5nLFxuICBtbGZsb3dFbmFibGVkLFxufSBmcm9tIFwiLi9tbGZsb3cudHNcIjtcblxuY29uc3QgbG9nZ2VyID0gbG9nLmxvZ2dlcihcIm1hc3RyYS9vYnNlcnZhYmlsaXR5XCIpO1xuXG5jb25zdCBERUZBVUxUX1NFUlZJQ0VfTkFNRSA9IFwibWFzdHJhXCI7XG5cbi8qKiBPcHRpb25zIGZvciBjb25uZWN0aW5nIE1hc3RyYSBzcGFucyB0byBBcHBLaXQncyBPcGVuVGVsZW1ldHJ5IHBpcGVsaW5lLiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdWlsZE9ic2VydmFiaWxpdHlPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gd2lyZSB0aGUgTWFzdHJhIGBPdGVsQnJpZGdlYC4gTWlycm9yc1xuICAgKiB7QGxpbmsgTWFzdHJhUGx1Z2luQ29uZmlnLm9ic2VydmFiaWxpdHl9OlxuICAgKlxuICAgKiAtIGB1bmRlZmluZWRgIChhdXRvKTogb24gb25seSB3aGVuIGBPVEVMX0VYUE9SVEVSX09UTFBfRU5EUE9JTlRgIG9yXG4gICAqICAgYE9URUxfRVhQT1JURVJfT1RMUF9UUkFDRVNfRU5EUE9JTlRgIGlzIHNldCAoc2FtZSBzaWduYWwgQXBwS2l0J3NcbiAgICogICBgVGVsZW1ldHJ5TWFuYWdlcmAgdXNlcyB0byByZWdpc3RlciBhIHJlYWwgdHJhY2VyKS4gV2hlbiB1bnNldCxcbiAgICogICBza2lwIHRoZSBicmlkZ2UgZW50aXJlbHkgc28gTWFzdHJhIGRvZXMgbm90IGVtaXRcbiAgICogICBgW090ZWxCcmlkZ2VdIE5vIE9URUwgc3BhbiBmb3VuZGAgd2FybmluZ3Mgb24gdGhlIG5vb3AgdHJhY2VyLlxuICAgKiAtIGB0cnVlYDogZm9yY2Ugb24gZXZlbiB3aXRob3V0IGFuIE9UTFAgZW5kcG9pbnQuXG4gICAqIC0gYGZhbHNlYDogZm9yY2Ugb2ZmLlxuICAgKi9cbiAgZW5hYmxlZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBTZXJ2aWNlIG5hbWUgYXR0YWNoZWQgdG8gdGhlIE1hc3RyYSBgT2JzZXJ2YWJpbGl0eWAgY29uZmlnLiBVc2VkXG4gICAqIGFzIHRoZSB0cmFjZXIgc2NvcGUgbmFtZSBvbiBicmlkZ2VkIE9UZWwgc3BhbnMgKHRoZSBgc2VydmljZS5uYW1lYFxuICAgKiByZXNvdXJjZSBhdHRyaWJ1dGUgaXMgb3duZWQgYnkgQXBwS2l0J3MgYFRlbGVtZXRyeU1hbmFnZXJgIGluc3RlYWRcbiAgICogLSBpdCByZWFkcyBgT1RFTF9TRVJWSUNFX05BTUVgIC8gYERBVEFCUklDS1NfQVBQX05BTUVgIGF0XG4gICAqIGBjcmVhdGVBcHBgIHRpbWUpLlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byBwcm9qZWN0IG5hbWUgdGhlbiBgXCJtYXN0cmFcImAuXG4gICAqL1xuICBzZXJ2aWNlTmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIGBSZXF1ZXN0Q29udGV4dGAga2V5cyB0byBleHRyYWN0IGFzIHNwYW4gbWV0YWRhdGEgb24gZXZlcnkgTWFzdHJhXG4gICAqIHRyYWNlLiBEZWZhdWx0cyB0byB7QGxpbmsgVFJBQ0VfUkVRVUVTVF9DT05URVhUX0tFWVN9ICh1c2VyIGlkLFxuICAgKiB0aHJlYWQgaWQsIHJlcXVlc3QgaWQsIGVudmlyb25tZW50LCBtb2RlbCBvdmVycmlkZSwgLi4uKS5cbiAgICpcbiAgICogU3VwcG9ydHMgZG90IG5vdGF0aW9uIGZvciBuZXN0ZWQgdmFsdWVzIHBlciB0aGUgTWFzdHJhIGRvY3MuXG4gICAqL1xuICByZXF1ZXN0Q29udGV4dEtleXM/OiByZWFkb25seSBzdHJpbmdbXTtcbiAgLyoqIEFwcEtpdC1vd25lZCB0cmFjZXIgcHJvdmlkZXIgdXNlZCBieSB0aGUgTWFzdHJhIE9UZWwgYnJpZGdlLiAqL1xuICB0cmFjZXJQcm92aWRlcj86IFRyYWNlclByb3ZpZGVyO1xufVxuXG4vKiogVHJ1ZSB3aGVuIEFwcEtpdCdzIGdsb2JhbCBPVGVsIHBpcGVsaW5lIGlzIGNvbmZpZ3VyZWQgdG8gZXhwb3J0IHRyYWNlcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc090bHBUcmFjaW5nQ29uZmlndXJlZCgpOiBib29sZWFuIHtcbiAgcmV0dXJuIEJvb2xlYW4oXG4gICAgcHJvY2Vzcy5lbnYuT1RFTF9FWFBPUlRFUl9PVExQX0VORFBPSU5UIHx8IHByb2Nlc3MuZW52Lk9URUxfRVhQT1JURVJfT1RMUF9UUkFDRVNfRU5EUE9JTlQsXG4gICk7XG59XG5cbi8qKlxuICogSG9ub3IgdGhlIHN0YW5kYXJkIG5vLW9wIHByb3BhZ2F0b3Igc2V0dGluZyBhZnRlciBBcHBLaXQgcmVnaXN0ZXJzIGl0c1xuICogdHJhY2VyIHByb3ZpZGVyLiBBcHBLaXQgMC44MSBpbnN0YWxscyBXM0MgcHJvcGFnYXRpb24gdW5jb25kaXRpb25hbGx5LCBzb1xuICogZGlzYWJsaW5nIG9ubHkgdGhlIGdsb2JhbCBwcm9wYWdhdG9yIGtlZXBzIGFzeW5jIHNwYW4gY29udGV4dCBhY3RpdmUgd2hpbGVcbiAqIHByZXZlbnRpbmcgaW5ncmVzcyBleHRyYWN0aW9uIGFuZCBkb3duc3RyZWFtIGluamVjdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbmZpZ3VyZU90ZWxQcm9wYWdhdGlvbigpOiBib29sZWFuIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk9URUxfUFJPUEFHQVRPUlM/LnRyaW0oKS50b0xvd2VyQ2FzZSgpICE9PSBcIm5vbmVcIikgcmV0dXJuIGZhbHNlO1xuICBwcm9wYWdhdGlvbi5kaXNhYmxlKCk7XG4gIGxvZ2dlci5pbmZvKFwiT3BlblRlbGVtZXRyeSBwcm9wYWdhdGlvbiBkaXNhYmxlZFwiLCB7XG4gICAgc2V0dGluZzogXCJPVEVMX1BST1BBR0FUT1JTPW5vbmVcIixcbiAgfSk7XG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIEJ1aWxkIGEgTWFzdHJhIGBPYnNlcnZhYmlsaXR5YCB3aG9zZSBzcGFucyByaWRlIEFwcEtpdCdzIGdsb2JhbFxuICogT1RlbCBwaXBlbGluZSB2aWEgYEBtYXN0cmEvb3RlbC1icmlkZ2VgLlxuICpcbiAqIFJldHVybnMgYHVuZGVmaW5lZGAgd2hlbiB0cmFjaW5nIGlzIG9mZjogZWl0aGVyIHRoZSBjYWxsZXIgcGFzc2VkXG4gKiBgZW5hYmxlZDogZmFsc2VgLCBvciBhdXRvIG1vZGUgZmluZHMgbmVpdGhlciBBcHBLaXQgT1RMUCBub3IgYSBsb2NhbCBNTGZsb3dcbiAqIGV4cGVyaW1lbnQuXG4gKiBTa2lwcGluZyB0aGUgYnJpZGdlIGluIHRoYXQgY2FzZSBhdm9pZHMgYFtPdGVsQnJpZGdlXSBObyBPVEVMIHNwYW5cbiAqIGZvdW5kYCBsb2cgc3BhbSBmcm9tIE1hc3RyYSBzcGFucyB0aGF0IGhhdmUgbm8gcGFyZW50IG9uIHRoZSBub29wXG4gKiB0cmFjZXIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBidWlsZE9ic2VydmFiaWxpdHkoXG4gIG9wdGlvbnM/OiBCdWlsZE9ic2VydmFiaWxpdHlPcHRpb25zLFxuKTogUHJvbWlzZTxPYnNlcnZhYmlsaXR5IHwgdW5kZWZpbmVkPiB7XG4gIGNvbnN0IG90ZWxCYXNlID0gcHJvY2Vzcy5lbnYuT1RFTF9FWFBPUlRFUl9PVExQX0VORFBPSU5UO1xuICBjb25zdCBvdGVsVHJhY2VzT3ZlcnJpZGUgPSBwcm9jZXNzLmVudi5PVEVMX0VYUE9SVEVSX09UTFBfVFJBQ0VTX0VORFBPSU5UO1xuICBjb25zdCBvdGxwQ29uZmlndXJlZCA9IGlzT3RscFRyYWNpbmdDb25maWd1cmVkKCk7XG4gIGNvbnN0IGFwcE1sZmxvd1RyYWNlSW5mbyA9XG4gICAgb3B0aW9ucz8uZW5hYmxlZCA9PT0gZmFsc2UgPyBmYWxzZSA6IGF3YWl0IGluaXRpYWxpemVBcHBNbGZsb3dUcmFjZUluZm8oKTtcbiAgY29uc3QgZGlyZWN0TWxmbG93Q29uZmlndXJlZCA9XG4gICAgb3B0aW9ucz8uZW5hYmxlZCA9PT0gZmFsc2UgfHwgb3RscENvbmZpZ3VyZWQgPyBmYWxzZSA6IGF3YWl0IGluaXRpYWxpemVEaXJlY3RNbGZsb3dUcmFjaW5nKCk7XG4gIGlmIChkaXJlY3RNbGZsb3dDb25maWd1cmVkKSBjb25maWd1cmVPdGVsUHJvcGFnYXRpb24oKTtcbiAgY29uc3QgdHJhY2luZ0NvbmZpZ3VyZWQgPSBvdGxwQ29uZmlndXJlZCB8fCBkaXJlY3RNbGZsb3dDb25maWd1cmVkO1xuXG4gIGlmIChvcHRpb25zPy5lbmFibGVkID09PSBmYWxzZSB8fCAob3B0aW9ucz8uZW5hYmxlZCAhPT0gdHJ1ZSAmJiAhdHJhY2luZ0NvbmZpZ3VyZWQpKSB7XG4gICAgbG9nZ2VyLmluZm8oXCJNYXN0cmEgb2JzZXJ2YWJpbGl0eSBvZmZcIiwge1xuICAgICAgcmVhc29uOlxuICAgICAgICBvcHRpb25zPy5lbmFibGVkID09PSBmYWxzZVxuICAgICAgICAgID8gXCJkaXNhYmxlZCBpbiBwbHVnaW4gY29uZmlnXCJcbiAgICAgICAgICA6IFwibm8gT1RMUCBlbmRwb2ludCBvciBkaXJlY3QgTUxmbG93IGV4cGVyaW1lbnQgY29uZmlndXJlZFwiLFxuICAgIH0pO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBzZXJ2aWNlTmFtZSA9IG9wdGlvbnM/LnNlcnZpY2VOYW1lID8/IChhd2FpdCBwcm9qZWN0VXRpbHMubmFtZSgpKSA/PyBERUZBVUxUX1NFUlZJQ0VfTkFNRTtcbiAgY29uc3QgcmVxdWVzdENvbnRleHRLZXlzID0gWy4uLihvcHRpb25zPy5yZXF1ZXN0Q29udGV4dEtleXMgPz8gVFJBQ0VfUkVRVUVTVF9DT05URVhUX0tFWVMpXTtcblxuICAvLyBUaGUgT1RlbCBIVFRQIGV4cG9ydGVyIHRyZWF0cyBgT1RFTF9FWFBPUlRFUl9PVExQX0VORFBPSU5UYCBhcyBhXG4gIC8vICpiYXNlKiBVUkwgYW5kIGFwcGVuZHMgdGhlIHNpZ25hbCBwYXRoIGl0c2VsZiAoZS5nLlxuICAvLyBgaHR0cDovL2xvY2FsaG9zdDo2MDA2YCAtPiBgaHR0cDovL2xvY2FsaG9zdDo2MDA2L3YxL3RyYWNlc2ApLiBMb2dcbiAgLy8gdGhlIHJlc29sdmVkIFBPU1QgVVJMIHNvIG1pc2NvbmZpZ3VyYXRpb25zIChlLmcuIGFjY2lkZW50YWxseVxuICAvLyBzZXR0aW5nIHRoZSBiYXNlIHZhciB0byBhIGAvdjEvdHJhY2VzYC1zdWZmaXhlZCBVUkwsIHdoaWNoIG1ha2VzXG4gIC8vIHRoZSBTREsgUE9TVCB0byBgLi4uL3YxL3RyYWNlcy92MS90cmFjZXNgIGFuZCBQaG9lbml4IDQwNHMpIGFyZVxuICAvLyBvYnZpb3VzIGluIHN0YXJ0dXAgb3V0cHV0LlxuICBjb25zdCByZXNvbHZlZFRyYWNlc1VybCA9IG90ZWxUcmFjZXNPdmVycmlkZVxuICAgID8gb3RlbFRyYWNlc092ZXJyaWRlXG4gICAgOiBvdGVsQmFzZVxuICAgICAgPyBgJHtvdGVsQmFzZS5yZXBsYWNlKC9cXC8rJC8sIFwiXCIpfS92MS90cmFjZXNgXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgLy8gYG1sZmxvd0VuYWJsZWRgIGVzdGFibGlzaGVzIHdoZXRoZXIgTUxmbG93IGNhbiBiZSBzZWxlY3RlZCBieSBmZWVkYmFja1xuICAvLyBhdXRvLXJlc29sdXRpb24sIHNvIHRoZSBib290IGxpbmUgcmVwb3J0cyB0aGF0IGF2YWlsYWJpbGl0eSBkaXJlY3RseS5cbiAgY29uc3QgbWxmbG93QXZhaWxhYmxlID0gbWxmbG93RW5hYmxlZCgpO1xuICBsb2dnZXIuaW5mbyhcIk1hc3RyYSBvYnNlcnZhYmlsaXR5IHdpcmVkIHRocm91Z2ggT1RlbCBicmlkZ2VcIiwge1xuICAgIHNlcnZpY2VOYW1lLFxuICAgIHJlcXVlc3RDb250ZXh0S2V5cyxcbiAgICBvdGVsQmFzZTogb3RlbEJhc2UgPz8gXCI8dW5zZXQ+XCIsXG4gICAgcmVzb2x2ZWRUcmFjZXNVcmw6IHJlc29sdmVkVHJhY2VzVXJsID8/IFwiPHVuc2V0PlwiLFxuICAgIG1sZmxvd0F2YWlsYWJsZSxcbiAgICBvYnNlcnZhYmlsaXR5OiBkaXJlY3RNbGZsb3dDb25maWd1cmVkXG4gICAgICA/IFwibWxmbG93LWRpcmVjdFwiXG4gICAgICA6IGFwcE1sZmxvd1RyYWNlSW5mb1xuICAgICAgICA/IFwibWxmbG93LWFwcHNcIlxuICAgICAgICA6IG1sZmxvd0F2YWlsYWJsZVxuICAgICAgICAgID8gXCJtbGZsb3dcIlxuICAgICAgICAgIDogXCJvdGVsXCIsXG4gIH0pO1xuXG4gIHJldHVybiBuZXcgT2JzZXJ2YWJpbGl0eSh7XG4gICAgY29uZmlnczoge1xuICAgICAgc2VydmljZU5hbWU6IHtcbiAgICAgICAgc2VydmljZU5hbWUsXG4gICAgICAgIGJyaWRnZTogbmV3IE90ZWxCcmlkZ2UoXG4gICAgICAgICAgb3B0aW9ucz8udHJhY2VyUHJvdmlkZXIgPyB7IHRyYWNlclByb3ZpZGVyOiBvcHRpb25zLnRyYWNlclByb3ZpZGVyIH0gOiB1bmRlZmluZWQsXG4gICAgICAgICksXG4gICAgICAgIHJlcXVlc3RDb250ZXh0S2V5cyxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG59XG4iXX0=
|
package/lib/src/plugin.d.ts
CHANGED
|
@@ -47,7 +47,8 @@ import { Plugin, type IAppRouter, type PluginManifest, type ResourceRequirement
|
|
|
47
47
|
import { type ServingEndpointSummary } from "@dbx-tools/shared-model";
|
|
48
48
|
import type { Agent } from "@mastra/core/agent";
|
|
49
49
|
import { Mastra } from "@mastra/core/mastra";
|
|
50
|
-
import
|
|
50
|
+
import { RequestContext } from "@mastra/core/request-context";
|
|
51
|
+
import type { AnyWorkflow } from "@mastra/core/workflows";
|
|
51
52
|
import { type MastraOutputProcessorFactory } from "./agents.ts";
|
|
52
53
|
import { type MastraPluginConfig } from "./config.ts";
|
|
53
54
|
import { MastraServer } from "./server.ts";
|
|
@@ -99,12 +100,16 @@ export declare class MastraPlugin extends Plugin<MastraPluginConfig> {
|
|
|
99
100
|
private mastraApp;
|
|
100
101
|
private mastraServer;
|
|
101
102
|
private readonly outputProcessorFactories;
|
|
103
|
+
/** Code-defined workflows registered before the Mastra instance is built. */
|
|
104
|
+
private readonly workflows;
|
|
102
105
|
/**
|
|
103
106
|
* The optional MCP server exposing this plugin's agents / tools, or
|
|
104
107
|
* `null` when `config.mcp` is disabled (the default). Built in
|
|
105
108
|
* {@link buildAgentAndServer} and registered on the Mastra instance.
|
|
106
109
|
*/
|
|
107
110
|
private mcp;
|
|
111
|
+
/** Resolved feedback destination published to server and browser clients. */
|
|
112
|
+
private resolvedFeedbackMode;
|
|
108
113
|
/**
|
|
109
114
|
* Resolved {@link MastraIdentityMode}: the identity the chat path's Databricks
|
|
110
115
|
* calls run as. Read once at setup so an invalid `genieIdentity` fails the app
|
|
@@ -168,8 +173,12 @@ export declare class MastraPlugin extends Plugin<MastraPluginConfig> {
|
|
|
168
173
|
* adding provider-specific behavior to the Mastra plugin.
|
|
169
174
|
*/
|
|
170
175
|
registerOutputProcessor: (factory: MastraOutputProcessorFactory) => void;
|
|
176
|
+
/** Register a workflow before the hosted Mastra instance is built. */
|
|
177
|
+
registerWorkflow: (key: string, workflow: AnyWorkflow) => void;
|
|
178
|
+
/** Registered workflow keys in insertion order. */
|
|
179
|
+
listWorkflows: () => string[];
|
|
171
180
|
/** Underlying Mastra instance for advanced use (custom routes etc.). */
|
|
172
|
-
getMastra: () => Mastra<Record<string, Agent<any, import("@mastra/core/agent").ToolsInput, undefined, any, import("@mastra/core/agent").AgentEditorConfig | undefined>>, Record<string,
|
|
181
|
+
getMastra: () => Mastra<Record<string, Agent<any, import("@mastra/core/agent").ToolsInput, undefined, any, import("@mastra/core/agent").AgentEditorConfig | undefined>>, Record<string, AnyWorkflow>, Record<string, import("@mastra/core/vector").MastraVector<any>>, Record<string, import("@mastra/core/tts").MastraTTS>, import("@mastra/core/logger").IMastraLogger, Record<string, import("@mastra/core/mcp").MCPServerBase<any>>, Record<string, import("@mastra/core/evals").MastraScorer<any, any, any, any>>, Record<string, import("@mastra/core/tools").ToolAction<any, any, any, any, any, any, unknown>>, Record<string, import("@mastra/core/processors").Processor<any, unknown>>, Record<string, import("@mastra/core/memory").MastraMemory>, Record<string, import("@mastra/core/channels").ChannelProvider>, Record<string, import("@mastra/core/classifier").Classifier<any>>> | null;
|
|
173
182
|
/**
|
|
174
183
|
* Build the `RequestContext` an agent turn driven from OUTSIDE this
|
|
175
184
|
* plugin's routes needs (a Teams activity on another plugin's endpoint, a
|
|
@@ -236,12 +245,8 @@ export declare class MastraPlugin extends Plugin<MastraPluginConfig> {
|
|
|
236
245
|
*/
|
|
237
246
|
private get basePath();
|
|
238
247
|
clientConfig(): Record<string, unknown>;
|
|
239
|
-
/**
|
|
240
|
-
|
|
241
|
-
* {@link resolveFeedbackEnabled} so the client-config flag and the
|
|
242
|
-
* feedback route share the same gate as the server's trace-id header.
|
|
243
|
-
*/
|
|
244
|
-
private feedbackEnabled;
|
|
248
|
+
/** Resolve the only feedback destination exposed for this plugin mode. */
|
|
249
|
+
private feedbackMode;
|
|
245
250
|
injectRoutes(router: IAppRouter): void;
|
|
246
251
|
/** Register URL aliases for Mastra's MCP transports. */
|
|
247
252
|
private registerMcpRoutes;
|
|
@@ -269,7 +274,7 @@ export declare class MastraPlugin extends Plugin<MastraPluginConfig> {
|
|
|
269
274
|
private genieConversationRead;
|
|
270
275
|
/** Run one Genie conversation write under the active request identity. */
|
|
271
276
|
private genieConversationWrite;
|
|
272
|
-
/** Register
|
|
277
|
+
/** Register the single feedback destination selected by plugin mode. */
|
|
273
278
|
private registerFeedbackRoutes;
|
|
274
279
|
/** Register the best-effort per-viewer MLflow experiment debug link. */
|
|
275
280
|
private registerMlflowExperimentRoute;
|
|
@@ -321,6 +326,8 @@ export declare class MastraPlugin extends Plugin<MastraPluginConfig> {
|
|
|
321
326
|
* (see {@link logFeedback} in `./mlflow.js`).
|
|
322
327
|
*/
|
|
323
328
|
private logFeedback;
|
|
329
|
+
/** Send Agent Mode rating and comment directly to the originating Genie message. */
|
|
330
|
+
private sendGenieFeedback;
|
|
324
331
|
/**
|
|
325
332
|
* Resolve an experiment link under the active request identity. The helper
|
|
326
333
|
* returns no URL unless the viewer has effective `CAN_MANAGE` permission.
|