@dbx-tools/appkit-mastra 0.6.46 → 0.6.49
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 +18 -4
- package/index.ts +3 -1
- package/lib/index.d.ts +3 -1
- package/lib/index.js +4 -2
- package/lib/src/agents.js +3 -3
- package/lib/src/config.d.ts +12 -2
- package/lib/src/config.js +6 -3
- package/lib/src/identity.d.ts +31 -25
- package/lib/src/identity.js +32 -40
- package/lib/src/style.d.ts +23 -0
- package/lib/src/style.js +24 -0
- package/lib/src/summarize.js +6 -4
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +13 -13
- package/src/agents.ts +2 -2
- package/src/config.ts +16 -4
- package/src/identity.ts +34 -45
- package/src/style.ts +25 -0
- package/src/summarize.ts +5 -3
package/lib/src/summarize.js
CHANGED
|
@@ -24,6 +24,7 @@ import { Agent } from "@mastra/core/agent";
|
|
|
24
24
|
import { createTool } from "@mastra/core/tools";
|
|
25
25
|
import { z } from "zod";
|
|
26
26
|
import { buildModel } from "./model.js";
|
|
27
|
+
import { TYPOGRAPHY_RULE } from "./style.js";
|
|
27
28
|
/** Fast / small chat tier used for both titling and summaries. */
|
|
28
29
|
const SUMMARY_MODEL_CLASS = model.ModelClass.ChatFast;
|
|
29
30
|
/** System prompt for the summarizer agent (and the `summarize` tool). */
|
|
@@ -32,7 +33,7 @@ const SUMMARIZER_INSTRUCTIONS = [
|
|
|
32
33
|
"Given a block of text, produce a faithful, concise summary of it.",
|
|
33
34
|
"Default to a few sentences; follow any length guidance the caller gives.",
|
|
34
35
|
"Plain prose. No preamble, no headers, no bullet points unless asked.",
|
|
35
|
-
|
|
36
|
+
TYPOGRAPHY_RULE,
|
|
36
37
|
"Never add information, opinions, or details not present in the input.",
|
|
37
38
|
"Output only the summary.",
|
|
38
39
|
].join("\n");
|
|
@@ -44,8 +45,9 @@ const SUMMARIZER_INSTRUCTIONS = [
|
|
|
44
45
|
export const TITLE_INSTRUCTIONS = [
|
|
45
46
|
"Generate a short, specific title for this conversation, 3 to 6 words.",
|
|
46
47
|
"Capture the user's topic, not the assistant's response.",
|
|
47
|
-
"Plain text only: no surrounding quotes
|
|
48
|
-
|
|
48
|
+
"Plain text only: no surrounding quotes and no trailing punctuation.",
|
|
49
|
+
TYPOGRAPHY_RULE,
|
|
50
|
+
"Output only the title.",
|
|
49
51
|
].join(" ");
|
|
50
52
|
/**
|
|
51
53
|
* Resolve the small-tier model for summarization / titling. Reused by
|
|
@@ -139,4 +141,4 @@ export function buildSummarizeTool(config) {
|
|
|
139
141
|
},
|
|
140
142
|
});
|
|
141
143
|
}
|
|
142
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VtbWFyaXplLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N1bW1hcml6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUVILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBR3hCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFeEMsa0VBQWtFO0FBQ2xFLE1BQU0sbUJBQW1CLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7QUFFdEQseUVBQXlFO0FBQ3pFLE1BQU0sdUJBQXVCLEdBQUc7SUFDOUIsaUNBQWlDO0lBQ2pDLG1FQUFtRTtJQUNuRSwwRUFBMEU7SUFDMUUsc0VBQXNFO0lBQ3RFLHVFQUF1RTtJQUN2RSx1RUFBdUU7SUFDdkUsMEJBQTBCO0NBQzNCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBRWI7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQ2hDLHVFQUF1RTtJQUN2RSx5REFBeUQ7SUFDekQsa0VBQWtFO0lBQ2xFLHFEQUFxRDtDQUN0RCxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUVaOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUMxQixNQUEwQjtJQUUxQixPQUFPLENBQUMsRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLENBQzVCLFVBQVUsQ0FBQyxNQUFNLEVBQUUsY0FBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLG1CQUFt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QyxDQUFDO1lBQ2pGLE1BQU0sR0FBRyxHQUFHLE9BQ2dFLENBQUM7WUFDN0UsTUFBTSxPQUFPLEdBQUcsTUFBTSxhQUFhLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDaEQsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUN6QyxHQUFHLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUMvQyxHQUFHLENBQUMsR0FBRyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxjQUFjLEVBQUUsR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3RFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzthQUM5RCxDQUFDLENBQUM7WUFDSCxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDckIsQ0FBQztLQUNGLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNtYWxsLXRpZXIgc3VtbWFyaXphdGlvbiBmb3IgdGhlIE1hc3RyYSBwbHVnaW4uXG4gKlxuICogVHdvIHN1cmZhY2VzLCBib3RoIGJhY2tlZCBieSB0aGUgZmFzdCAvIHNtYWxsIGNoYXQgdGllclxuICogKHtAbGluayBtb2RlbC5Nb2RlbENsYXNzLkNoYXRGYXN0fSkgcmVzb2x2ZWQgdGhyb3VnaCB0aGUgc2FtZVxuICogYC9zZXJ2aW5nLWVuZHBvaW50c2AgcGlwZWxpbmUgYXMgdGhlIG1haW4gYWdlbnRzOlxuICpcbiAqICAgLSBBIGRlZGljYXRlZCBgc3VtbWFyaXplYCB0b29sIChzZWUge0BsaW5rIGJ1aWxkU3VtbWFyaXplVG9vbH0pXG4gKiAgICAgYWdlbnRzIGNhbiBjYWxsIHRvIGNvbmRlbnNlIGFyYml0cmFyeSB0ZXh0IHdpdGhvdXQgYnVybmluZyB0aGVcbiAqICAgICBoZWF2eXdlaWdodCBjaGF0IG1vZGVsLlxuICogICAtIFRoZSBtb2RlbCArIGluc3RydWN0aW9ucyBNYXN0cmEncyBtZW1vcnkgdXNlcyB0byBhdXRvLW5hbWVcbiAqICAgICBjb252ZXJzYXRpb24gdGhyZWFkcyAoYGdlbmVyYXRlVGl0bGVgKSwgc28gdGl0bGluZyByZXVzZXMgdGhlXG4gKiAgICAgc2FtZSBzbWFsbCB0aWVyIHJhdGhlciB0aGFuIHRoZSBhZ2VudCdzIHByaW1hcnkgbW9kZWwuXG4gKlxuICogTWlycm9ycyB0aGUgY2hhcnQtcGxhbm5lciB3aXJpbmcgaW4gYGNoYXJ0LnRzYDogYSBwZXItY29uZmlnIGNhY2hlZFxuICogYEFnZW50YCBvbiB0aGUgZmFzdCB0aWVyLCBpbnZva2VkIHZpYSBgYWdlbnQuZ2VuZXJhdGUoLi4uKWAgaW5zaWRlXG4gKiB0aGUgYWN0aXZlIGBhc1VzZXJgIHNjb3BlIHNvIHRva2VucyBzdGF5IHVzZXItc2NvcGVkLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBzdHJpbmcgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHsgbW9kZWwgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtbW9kZWxcIjtcbmltcG9ydCB7IEFnZW50IH0gZnJvbSBcIkBtYXN0cmEvY29yZS9hZ2VudFwiO1xuaW1wb3J0IHR5cGUgeyBNYXN0cmFNb2RlbENvbmZpZyB9IGZyb20gXCJAbWFzdHJhL2NvcmUvbGxtXCI7XG5pbXBvcnQgdHlwZSB7IFJlcXVlc3RDb250ZXh0IH0gZnJvbSBcIkBtYXN0cmEvY29yZS9yZXF1ZXN0LWNvbnRleHRcIjtcbmltcG9ydCB7IGNyZWF0ZVRvb2wgfSBmcm9tIFwiQG1hc3RyYS9jb3JlL3Rvb2xzXCI7XG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuXG5pbXBvcnQgdHlwZSB7IE1hc3RyYVBsdWdpbkNvbmZpZyB9IGZyb20gXCIuL2NvbmZpZy50c1wiO1xuaW1wb3J0IHsgYnVpbGRNb2RlbCB9IGZyb20gXCIuL21vZGVsLnRzXCI7XG5cbi8qKiBGYXN0IC8gc21hbGwgY2hhdCB0aWVyIHVzZWQgZm9yIGJvdGggdGl0bGluZyBhbmQgc3VtbWFyaWVzLiAqL1xuY29uc3QgU1VNTUFSWV9NT0RFTF9DTEFTUyA9IG1vZGVsLk1vZGVsQ2xhc3MuQ2hhdEZhc3Q7XG5cbi8qKiBTeXN0ZW0gcHJvbXB0IGZvciB0aGUgc3VtbWFyaXplciBhZ2VudCAoYW5kIHRoZSBgc3VtbWFyaXplYCB0b29sKS4gKi9cbmNvbnN0IFNVTU1BUklaRVJfSU5TVFJVQ1RJT05TID0gW1xuICBcIllvdSBhcmUgYSBzdW1tYXJpemF0aW9uIGVuZ2luZS5cIixcbiAgXCJHaXZlbiBhIGJsb2NrIG9mIHRleHQsIHByb2R1Y2UgYSBmYWl0aGZ1bCwgY29uY2lzZSBzdW1tYXJ5IG9mIGl0LlwiLFxuICBcIkRlZmF1bHQgdG8gYSBmZXcgc2VudGVuY2VzOyBmb2xsb3cgYW55IGxlbmd0aCBndWlkYW5jZSB0aGUgY2FsbGVyIGdpdmVzLlwiLFxuICBcIlBsYWluIHByb3NlLiBObyBwcmVhbWJsZSwgbm8gaGVhZGVycywgbm8gYnVsbGV0IHBvaW50cyB1bmxlc3MgYXNrZWQuXCIsXG4gIFwiTmV2ZXIgdXNlIGVtb2ppcy4gVXNlIGh5cGhlbnMgKC0pIG9ubHksIG5ldmVyIGVtIGRhc2hlcyBvciBlbiBkYXNoZXMuXCIsXG4gIFwiTmV2ZXIgYWRkIGluZm9ybWF0aW9uLCBvcGluaW9ucywgb3IgZGV0YWlscyBub3QgcHJlc2VudCBpbiB0aGUgaW5wdXQuXCIsXG4gIFwiT3V0cHV0IG9ubHkgdGhlIHN1bW1hcnkuXCIsXG5dLmpvaW4oXCJcXG5cIik7XG5cbi8qKlxuICogSW5zdHJ1Y3Rpb25zIE1hc3RyYSdzIGBnZW5lcmF0ZVRpdGxlYCBoYW5kcyB0aGUgc21hbGwtdGllciBtb2RlbCB0b1xuICogbmFtZSBhIGNvbnZlcnNhdGlvbiB0aHJlYWQgZnJvbSBpdHMgb3BlbmluZyB0dXJuLiBLZXB0IHRlcnNlIHNvIHRoZVxuICogbW9kZWwgcmV0dXJucyBhIGJhcmUgdGl0bGUgd2l0aCBubyBkZWNvcmF0aW9uLlxuICovXG5leHBvcnQgY29uc3QgVElUTEVfSU5TVFJVQ1RJT05TID0gW1xuICBcIkdlbmVyYXRlIGEgc2hvcnQsIHNwZWNpZmljIHRpdGxlIGZvciB0aGlzIGNvbnZlcnNhdGlvbiwgMyB0byA2IHdvcmRzLlwiLFxuICBcIkNhcHR1cmUgdGhlIHVzZXIncyB0b3BpYywgbm90IHRoZSBhc3Npc3RhbnQncyByZXNwb25zZS5cIixcbiAgXCJQbGFpbiB0ZXh0IG9ubHk6IG5vIHN1cnJvdW5kaW5nIHF1b3Rlcywgbm8gdHJhaWxpbmcgcHVuY3R1YXRpb24sXCIsXG4gIFwibm8gZW1vamlzLCBhbmQgbm8gZW0gZGFzaGVzLiBPdXRwdXQgb25seSB0aGUgdGl0bGUuXCIsXG5dLmpvaW4oXCIgXCIpO1xuXG4vKipcbiAqIFJlc29sdmUgdGhlIHNtYWxsLXRpZXIgbW9kZWwgZm9yIHN1bW1hcml6YXRpb24gLyB0aXRsaW5nLiBSZXVzZWQgYnlcbiAqIGJvdGggdGhlIHN1bW1hcml6ZXIgYWdlbnQgYW5kIE1hc3RyYSBtZW1vcnkncyBgZ2VuZXJhdGVUaXRsZWAuXG4gKlxuICogUmV0dXJuZWQgYXMgYSBgcmVxdWVzdENvbnRleHRgLXRha2luZyBmdW5jdGlvbiAoYSBNYXN0cmFcbiAqIGBEeW5hbWljQXJndW1lbnQ8TWFzdHJhTW9kZWxDb25maWc+YCkgc28gZWFjaCBjYWxsIG1pbnRzIHVzZXItc2NvcGVkXG4gKiB0b2tlbnMgdmlhIHtAbGluayBidWlsZE1vZGVsfSwgZXhhY3RseSBsaWtlIHRoZSBwcmltYXJ5IGFnZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN1bW1hcnlNb2RlbChcbiAgY29uZmlnOiBNYXN0cmFQbHVnaW5Db25maWcsXG4pOiAoYXJnczogeyByZXF1ZXN0Q29udGV4dDogUmVxdWVzdENvbnRleHQgfSkgPT4gUHJvbWlzZTxNYXN0cmFNb2RlbENvbmZpZz4ge1xuICByZXR1cm4gKHsgcmVxdWVzdENvbnRleHQgfSkgPT5cbiAgICBidWlsZE1vZGVsKGNvbmZpZywgcmVxdWVzdENvbnRleHQsIHsgbW9kZWxDbGFzczogU1VNTUFSWV9NT0RFTF9DTEFTUyB9KTtcbn1cblxuLyoqXG4gKiBPbmUgc3VtbWFyaXplciBgQWdlbnRgIHBlciBwbHVnaW4gY29uZmlnLCBjYWNoZWQgb24gY29uZmlnLW9iamVjdFxuICogaWRlbnRpdHkgc28gYSBob3QgdG9vbCBwYXRoIGRvZXNuJ3QgcGF5IHRoZSBjb25zdHJ1Y3RvciBjb3N0IGVhY2hcbiAqIGNhbGwuIGBXZWFrTWFwYCBsZXRzIHJldGlyZWQgY29uZmlncyAoZS5nLiB0ZXN0IHJlY29uZmlndXJhdGlvbnMpXG4gKiByZWxlYXNlIHRoZWlyIGFnZW50IHdpdGhvdXQgbWFudWFsIGV2aWN0aW9uLlxuICovXG5jb25zdCBzdW1tYXJpemVyQWdlbnRzID0gbmV3IFdlYWtNYXA8TWFzdHJhUGx1Z2luQ29uZmlnLCBBZ2VudD4oKTtcblxuZnVuY3Rpb24gZ2V0U3VtbWFyaXplckFnZW50KGNvbmZpZzogTWFzdHJhUGx1Z2luQ29uZmlnKTogQWdlbnQge1xuICBsZXQgYWdlbnQgPSBzdW1tYXJpemVyQWdlbnRzLmdldChjb25maWcpO1xuICBpZiAoIWFnZW50KSB7XG4gICAgYWdlbnQgPSBuZXcgQWdlbnQoe1xuICAgICAgaWQ6IFwic3VtbWFyaXplclwiLFxuICAgICAgbmFtZTogXCJTdW1tYXJpemVyXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJDb25kZW5zZXMgdGV4dCBpbnRvIGEgc2hvcnQgc3VtbWFyeSB1c2luZyBhIGZhc3QsIHNtYWxsIG1vZGVsLlwiLFxuICAgICAgaW5zdHJ1Y3Rpb25zOiBTVU1NQVJJWkVSX0lOU1RSVUNUSU9OUyxcbiAgICAgIG1vZGVsOiBzdW1tYXJ5TW9kZWwoY29uZmlnKSxcbiAgICB9KTtcbiAgICBzdW1tYXJpemVyQWdlbnRzLnNldChjb25maWcsIGFnZW50KTtcbiAgfVxuICByZXR1cm4gYWdlbnQ7XG59XG5cbi8qKiBJbnB1dHMgYWNjZXB0ZWQgYnkgdGhlIGBzdW1tYXJpemVgIHRvb2wuICovXG5jb25zdCBzdW1tYXJpemVJbnB1dCA9IHoub2JqZWN0KHtcbiAgdGV4dDogei5zdHJpbmcoKS5taW4oMSkuZGVzY3JpYmUoXCJUaGUgdGV4dCB0byBzdW1tYXJpemUuXCIpLFxuICBpbnN0cnVjdGlvbnM6IHpcbiAgICAuc3RyaW5nKClcbiAgICAub3B0aW9uYWwoKVxuICAgIC5kZXNjcmliZShcbiAgICAgIFwiT3B0aW9uYWwgZXh0cmEgZ3VpZGFuY2UgZm9yIHRoZSBzdW1tYXJ5LCBlLmcuICdvbmUgc2VudGVuY2UnIG9yICdsaXN0IHRoZSBhY3Rpb24gaXRlbXMnLlwiLFxuICAgICksXG4gIG1heFdvcmRzOiB6XG4gICAgLm51bWJlcigpXG4gICAgLmludCgpXG4gICAgLnBvc2l0aXZlKClcbiAgICAub3B0aW9uYWwoKVxuICAgIC5kZXNjcmliZShcIk9wdGlvbmFsIHNvZnQgY2FwIG9uIHRoZSBzdW1tYXJ5IGxlbmd0aCwgaW4gd29yZHMuXCIpLFxufSk7XG5cbi8qKiBPcHRpb25zIGFjY2VwdGVkIGJ5IHtAbGluayBzdW1tYXJpemVUZXh0fS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3VtbWFyaXplT3B0aW9ucyB7XG4gIC8qKiBFeHRyYSBndWlkYW5jZSBmb3IgdGhlIHN1bW1hcnkgKGxlbmd0aCwgZm9jdXMsIGZvcm1hdCkuICovXG4gIGluc3RydWN0aW9ucz86IHN0cmluZztcbiAgLyoqIFNvZnQgY2FwIG9uIHN1bW1hcnkgbGVuZ3RoLCBpbiB3b3Jkcy4gKi9cbiAgbWF4V29yZHM/OiBudW1iZXI7XG4gIC8qKiBBY3RpdmUgcmVxdWVzdCBjb250ZXh0LCBzbyB0aGUgbW9kZWwgcmVzb2x2ZXIgbWludHMgdXNlci1zY29wZWQgdG9rZW5zLiAqL1xuICByZXF1ZXN0Q29udGV4dD86IFJlcXVlc3RDb250ZXh0O1xuICAvKiogQWJvcnQgc2lnbmFsIGJyaWRnZWQgZnJvbSB0aGUgY2FsbGluZyB0b29sIC8gcmVxdWVzdC4gKi9cbiAgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbDtcbn1cblxuLyoqXG4gKiBTdW1tYXJpemUgYHRleHRgIHdpdGggdGhlIHNtYWxsLXRpZXIgc3VtbWFyaXplciBhZ2VudCwgcmV0dXJuaW5nIHRoZVxuICogdHJpbW1lZCBzdW1tYXJ5IHN0cmluZy4gVGhyb3dzIG9uIG1vZGVsIGZhaWx1cmUgKHRoZSBjYWxsZXIgZGVjaWRlc1xuICogaG93IHRvIGRlZ3JhZGUpLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3VtbWFyaXplVGV4dChcbiAgY29uZmlnOiBNYXN0cmFQbHVnaW5Db25maWcsXG4gIHRleHQ6IHN0cmluZyxcbiAgb3B0aW9uczogU3VtbWFyaXplT3B0aW9ucyA9IHt9LFxuKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgeyBpbnN0cnVjdGlvbnMsIG1heFdvcmRzLCByZXF1ZXN0Q29udGV4dCwgYWJvcnRTaWduYWwgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHByb21wdCA9IHN0cmluZy50b0Rlc2NyaXB0aW9uKHtcbiAgICAuLi4oaW5zdHJ1Y3Rpb25zID8geyBHdWlkYW5jZTogaW5zdHJ1Y3Rpb25zIH0gOiB7fSksXG4gICAgLi4uKG1heFdvcmRzICE9PSB1bmRlZmluZWQgPyB7IFwiTWF4IGxlbmd0aCAod29yZHMpXCI6IFN0cmluZyhtYXhXb3JkcykgfSA6IHt9KSxcbiAgICBUZXh0OiB0ZXh0LFxuICB9KTtcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ2V0U3VtbWFyaXplckFnZW50KGNvbmZpZykuZ2VuZXJhdGUocHJvbXB0LCB7XG4gICAgLi4uKHJlcXVlc3RDb250ZXh0ID8geyByZXF1ZXN0Q29udGV4dCB9IDoge30pLFxuICAgIC4uLihhYm9ydFNpZ25hbCA/IHsgYWJvcnRTaWduYWwgfSA6IHt9KSxcbiAgfSk7XG4gIHJldHVybiByZXN1bHQudGV4dC50cmltKCk7XG59XG5cbi8qKlxuICogQnVpbGQgdGhlIGBzdW1tYXJpemVgIHRvb2wuIEV4cG9zZWQgYXMgYW4gYW1iaWVudCBzeXN0ZW0gdG9vbCAobGlrZVxuICogYHJlbmRlcl9kYXRhYCkgc28gZXZlcnkgYWdlbnQgY2FuIG9mZmxvYWQgY29uZGVuc2luZyBsb25nIGNvbnRlbnQsXG4gKiBub3RlcywgdHJhbnNjcmlwdHMsIG9yIGJ1bGt5IHRvb2wgcmVzdWx0cyB0byB0aGUgZmFzdCB0aWVyIGluc3RlYWQgb2ZcbiAqIHNwZW5kaW5nIGl0cyBwcmltYXJ5IGNoYXQgbW9kZWwuIFRoZSB0b29sIHJlYWRzIHRoZSBsaXZlXG4gKiBgcmVxdWVzdENvbnRleHRgIC8gYGFib3J0U2lnbmFsYCBvZmYgdGhlIE1hc3RyYSBleGVjdXRpb24gY29udGV4dCBzb1xuICogaXRzIG1vZGVsIGNhbGwgc3RheXMgdXNlci1zY29wZWQgYW5kIGNhbmNlbHMgd2l0aCB0aGUgdHVybi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkU3VtbWFyaXplVG9vbChjb25maWc6IE1hc3RyYVBsdWdpbkNvbmZpZykge1xuICByZXR1cm4gY3JlYXRlVG9vbCh7XG4gICAgaWQ6IFwic3VtbWFyaXplXCIsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIlN1bW1hcml6ZSBhIGJsb2NrIG9mIHRleHQgdXNpbmcgYSBmYXN0LCBzbWFsbCBtb2RlbC4gVXNlIGl0IHRvIGNvbmRlbnNlIGxvbmcgXCIgK1xuICAgICAgXCJjb250ZW50LCBub3RlcywgdHJhbnNjcmlwdHMsIG9yIHRvb2wgcmVzdWx0cyBpbnRvIGEgc2hvcnQgc3VtbWFyeSB3aXRob3V0IFwiICtcbiAgICAgIFwic3BlbmRpbmcgdGhlIG1haW4gY2hhdCBtb2RlbC5cIixcbiAgICBpbnB1dFNjaGVtYTogc3VtbWFyaXplSW5wdXQsXG4gICAgZXhlY3V0ZTogYXN5bmMgKGlucHV0LCBjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCB7IHRleHQsIGluc3RydWN0aW9ucywgbWF4V29yZHMgfSA9IGlucHV0IGFzIHouaW5mZXI8dHlwZW9mIHN1bW1hcml6ZUlucHV0PjtcbiAgICAgIGNvbnN0IGN0eCA9IGNvbnRleHQgYXNcbiAgICAgICAgeyByZXF1ZXN0Q29udGV4dD86IFJlcXVlc3RDb250ZXh0OyBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsIH0gfCB1bmRlZmluZWQ7XG4gICAgICBjb25zdCBzdW1tYXJ5ID0gYXdhaXQgc3VtbWFyaXplVGV4dChjb25maWcsIHRleHQsIHtcbiAgICAgICAgLi4uKGluc3RydWN0aW9ucyA/IHsgaW5zdHJ1Y3Rpb25zIH0gOiB7fSksXG4gICAgICAgIC4uLihtYXhXb3JkcyAhPT0gdW5kZWZpbmVkID8geyBtYXhXb3JkcyB9IDoge30pLFxuICAgICAgICAuLi4oY3R4Py5yZXF1ZXN0Q29udGV4dCA/IHsgcmVxdWVzdENvbnRleHQ6IGN0eC5yZXF1ZXN0Q29udGV4dCB9IDoge30pLFxuICAgICAgICAuLi4oY3R4Py5hYm9ydFNpZ25hbCA/IHsgYWJvcnRTaWduYWw6IGN0eC5hYm9ydFNpZ25hbCB9IDoge30pLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4geyBzdW1tYXJ5IH07XG4gICAgfSxcbiAgfSk7XG59XG4iXX0=
|
|
144
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VtbWFyaXplLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N1bW1hcml6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUVILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBR3hCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDeEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUU3QyxrRUFBa0U7QUFDbEUsTUFBTSxtQkFBbUIsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztBQUV0RCx5RUFBeUU7QUFDekUsTUFBTSx1QkFBdUIsR0FBRztJQUM5QixpQ0FBaUM7SUFDakMsbUVBQW1FO0lBQ25FLDBFQUEwRTtJQUMxRSxzRUFBc0U7SUFDdEUsZUFBZTtJQUNmLHVFQUF1RTtJQUN2RSwwQkFBMEI7Q0FDM0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFYjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUc7SUFDaEMsdUVBQXVFO0lBQ3ZFLHlEQUF5RDtJQUN6RCxxRUFBcUU7SUFDckUsZUFBZTtJQUNmLHdCQUF3QjtDQUN6QixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUVaOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUMxQixNQUEwQjtJQUUxQixPQUFPLENBQUMsRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLENBQzVCLFVBQVUsQ0FBQyxNQUFNLEVBQUUsY0FBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLENBQUMsQ0FBQztBQUM1RSxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLGdCQUFnQixHQUFHLElBQUksT0FBTyxFQUE2QixDQUFDO0FBRWxFLFNBQVMsa0JBQWtCLENBQUMsTUFBMEI7SUFDcEQsSUFBSSxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNYLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQztZQUNoQixFQUFFLEVBQUUsWUFBWTtZQUNoQixJQUFJLEVBQUUsWUFBWTtZQUNsQixXQUFXLEVBQUUsZ0VBQWdFO1lBQzdFLFlBQVksRUFBRSx1QkFBdUI7WUFDckMsS0FBSyxFQUFFLFlBQVksQ0FBQyxNQUFNLENBQUM7U0FDNUIsQ0FBQyxDQUFDO1FBQ0gsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsK0NBQStDO0FBQy9DLE1BQU0sY0FBYyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDOUIsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLHdCQUF3QixDQUFDO0lBQzFELFlBQVksRUFBRSxDQUFDO1NBQ1osTUFBTSxFQUFFO1NBQ1IsUUFBUSxFQUFFO1NBQ1YsUUFBUSxDQUNQLDBGQUEwRixDQUMzRjtJQUNILFFBQVEsRUFBRSxDQUFDO1NBQ1IsTUFBTSxFQUFFO1NBQ1IsR0FBRyxFQUFFO1NBQ0wsUUFBUSxFQUFFO1NBQ1YsUUFBUSxFQUFFO1NBQ1YsUUFBUSxDQUFDLG9EQUFvRCxDQUFDO0NBQ2xFLENBQUMsQ0FBQztBQWNIOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGFBQWEsQ0FDakMsTUFBMEIsRUFDMUIsSUFBWSxFQUNaLFVBQTRCLEVBQUU7SUFFOUIsTUFBTSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUN4RSxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDO1FBQ2xDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDbkQsR0FBRyxDQUFDLFFBQVEsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM3RSxJQUFJLEVBQUUsSUFBSTtLQUNYLENBQUMsQ0FBQztJQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtRQUMvRCxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDN0MsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0tBQ3hDLENBQUMsQ0FBQztJQUNILE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUM1QixDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxNQUEwQjtJQUMzRCxPQUFPLFVBQVUsQ0FBQztRQUNoQixFQUFFLEVBQUUsV0FBVztRQUNmLFdBQVcsRUFDVCwrRUFBK0U7WUFDL0UsNEVBQTRFO1lBQzVFLCtCQUErQjtRQUNqQyxXQUFXLEVBQUUsY0FBYztRQUMzQixPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUNoQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsR0FBRyxLQUF1QyxDQUFDO1lBQ2pGLE1BQU0sR0FBRyxHQUFHLE9BQ2dFLENBQUM7WUFDN0UsTUFBTSxPQUFPLEdBQUcsTUFBTSxhQUFhLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDaEQsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUN6QyxHQUFHLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUMvQyxHQUFHLENBQUMsR0FBRyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxjQUFjLEVBQUUsR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3RFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzthQUM5RCxDQUFDLENBQUM7WUFDSCxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDckIsQ0FBQztLQUNGLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNtYWxsLXRpZXIgc3VtbWFyaXphdGlvbiBmb3IgdGhlIE1hc3RyYSBwbHVnaW4uXG4gKlxuICogVHdvIHN1cmZhY2VzLCBib3RoIGJhY2tlZCBieSB0aGUgZmFzdCAvIHNtYWxsIGNoYXQgdGllclxuICogKHtAbGluayBtb2RlbC5Nb2RlbENsYXNzLkNoYXRGYXN0fSkgcmVzb2x2ZWQgdGhyb3VnaCB0aGUgc2FtZVxuICogYC9zZXJ2aW5nLWVuZHBvaW50c2AgcGlwZWxpbmUgYXMgdGhlIG1haW4gYWdlbnRzOlxuICpcbiAqICAgLSBBIGRlZGljYXRlZCBgc3VtbWFyaXplYCB0b29sIChzZWUge0BsaW5rIGJ1aWxkU3VtbWFyaXplVG9vbH0pXG4gKiAgICAgYWdlbnRzIGNhbiBjYWxsIHRvIGNvbmRlbnNlIGFyYml0cmFyeSB0ZXh0IHdpdGhvdXQgYnVybmluZyB0aGVcbiAqICAgICBoZWF2eXdlaWdodCBjaGF0IG1vZGVsLlxuICogICAtIFRoZSBtb2RlbCArIGluc3RydWN0aW9ucyBNYXN0cmEncyBtZW1vcnkgdXNlcyB0byBhdXRvLW5hbWVcbiAqICAgICBjb252ZXJzYXRpb24gdGhyZWFkcyAoYGdlbmVyYXRlVGl0bGVgKSwgc28gdGl0bGluZyByZXVzZXMgdGhlXG4gKiAgICAgc2FtZSBzbWFsbCB0aWVyIHJhdGhlciB0aGFuIHRoZSBhZ2VudCdzIHByaW1hcnkgbW9kZWwuXG4gKlxuICogTWlycm9ycyB0aGUgY2hhcnQtcGxhbm5lciB3aXJpbmcgaW4gYGNoYXJ0LnRzYDogYSBwZXItY29uZmlnIGNhY2hlZFxuICogYEFnZW50YCBvbiB0aGUgZmFzdCB0aWVyLCBpbnZva2VkIHZpYSBgYWdlbnQuZ2VuZXJhdGUoLi4uKWAgaW5zaWRlXG4gKiB0aGUgYWN0aXZlIGBhc1VzZXJgIHNjb3BlIHNvIHRva2VucyBzdGF5IHVzZXItc2NvcGVkLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBzdHJpbmcgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHsgbW9kZWwgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtbW9kZWxcIjtcbmltcG9ydCB7IEFnZW50IH0gZnJvbSBcIkBtYXN0cmEvY29yZS9hZ2VudFwiO1xuaW1wb3J0IHR5cGUgeyBNYXN0cmFNb2RlbENvbmZpZyB9IGZyb20gXCJAbWFzdHJhL2NvcmUvbGxtXCI7XG5pbXBvcnQgdHlwZSB7IFJlcXVlc3RDb250ZXh0IH0gZnJvbSBcIkBtYXN0cmEvY29yZS9yZXF1ZXN0LWNvbnRleHRcIjtcbmltcG9ydCB7IGNyZWF0ZVRvb2wgfSBmcm9tIFwiQG1hc3RyYS9jb3JlL3Rvb2xzXCI7XG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuXG5pbXBvcnQgdHlwZSB7IE1hc3RyYVBsdWdpbkNvbmZpZyB9IGZyb20gXCIuL2NvbmZpZy50c1wiO1xuaW1wb3J0IHsgYnVpbGRNb2RlbCB9IGZyb20gXCIuL21vZGVsLnRzXCI7XG5pbXBvcnQgeyBUWVBPR1JBUEhZX1JVTEUgfSBmcm9tIFwiLi9zdHlsZS50c1wiO1xuXG4vKiogRmFzdCAvIHNtYWxsIGNoYXQgdGllciB1c2VkIGZvciBib3RoIHRpdGxpbmcgYW5kIHN1bW1hcmllcy4gKi9cbmNvbnN0IFNVTU1BUllfTU9ERUxfQ0xBU1MgPSBtb2RlbC5Nb2RlbENsYXNzLkNoYXRGYXN0O1xuXG4vKiogU3lzdGVtIHByb21wdCBmb3IgdGhlIHN1bW1hcml6ZXIgYWdlbnQgKGFuZCB0aGUgYHN1bW1hcml6ZWAgdG9vbCkuICovXG5jb25zdCBTVU1NQVJJWkVSX0lOU1RSVUNUSU9OUyA9IFtcbiAgXCJZb3UgYXJlIGEgc3VtbWFyaXphdGlvbiBlbmdpbmUuXCIsXG4gIFwiR2l2ZW4gYSBibG9jayBvZiB0ZXh0LCBwcm9kdWNlIGEgZmFpdGhmdWwsIGNvbmNpc2Ugc3VtbWFyeSBvZiBpdC5cIixcbiAgXCJEZWZhdWx0IHRvIGEgZmV3IHNlbnRlbmNlczsgZm9sbG93IGFueSBsZW5ndGggZ3VpZGFuY2UgdGhlIGNhbGxlciBnaXZlcy5cIixcbiAgXCJQbGFpbiBwcm9zZS4gTm8gcHJlYW1ibGUsIG5vIGhlYWRlcnMsIG5vIGJ1bGxldCBwb2ludHMgdW5sZXNzIGFza2VkLlwiLFxuICBUWVBPR1JBUEhZX1JVTEUsXG4gIFwiTmV2ZXIgYWRkIGluZm9ybWF0aW9uLCBvcGluaW9ucywgb3IgZGV0YWlscyBub3QgcHJlc2VudCBpbiB0aGUgaW5wdXQuXCIsXG4gIFwiT3V0cHV0IG9ubHkgdGhlIHN1bW1hcnkuXCIsXG5dLmpvaW4oXCJcXG5cIik7XG5cbi8qKlxuICogSW5zdHJ1Y3Rpb25zIE1hc3RyYSdzIGBnZW5lcmF0ZVRpdGxlYCBoYW5kcyB0aGUgc21hbGwtdGllciBtb2RlbCB0b1xuICogbmFtZSBhIGNvbnZlcnNhdGlvbiB0aHJlYWQgZnJvbSBpdHMgb3BlbmluZyB0dXJuLiBLZXB0IHRlcnNlIHNvIHRoZVxuICogbW9kZWwgcmV0dXJucyBhIGJhcmUgdGl0bGUgd2l0aCBubyBkZWNvcmF0aW9uLlxuICovXG5leHBvcnQgY29uc3QgVElUTEVfSU5TVFJVQ1RJT05TID0gW1xuICBcIkdlbmVyYXRlIGEgc2hvcnQsIHNwZWNpZmljIHRpdGxlIGZvciB0aGlzIGNvbnZlcnNhdGlvbiwgMyB0byA2IHdvcmRzLlwiLFxuICBcIkNhcHR1cmUgdGhlIHVzZXIncyB0b3BpYywgbm90IHRoZSBhc3Npc3RhbnQncyByZXNwb25zZS5cIixcbiAgXCJQbGFpbiB0ZXh0IG9ubHk6IG5vIHN1cnJvdW5kaW5nIHF1b3RlcyBhbmQgbm8gdHJhaWxpbmcgcHVuY3R1YXRpb24uXCIsXG4gIFRZUE9HUkFQSFlfUlVMRSxcbiAgXCJPdXRwdXQgb25seSB0aGUgdGl0bGUuXCIsXG5dLmpvaW4oXCIgXCIpO1xuXG4vKipcbiAqIFJlc29sdmUgdGhlIHNtYWxsLXRpZXIgbW9kZWwgZm9yIHN1bW1hcml6YXRpb24gLyB0aXRsaW5nLiBSZXVzZWQgYnlcbiAqIGJvdGggdGhlIHN1bW1hcml6ZXIgYWdlbnQgYW5kIE1hc3RyYSBtZW1vcnkncyBgZ2VuZXJhdGVUaXRsZWAuXG4gKlxuICogUmV0dXJuZWQgYXMgYSBgcmVxdWVzdENvbnRleHRgLXRha2luZyBmdW5jdGlvbiAoYSBNYXN0cmFcbiAqIGBEeW5hbWljQXJndW1lbnQ8TWFzdHJhTW9kZWxDb25maWc+YCkgc28gZWFjaCBjYWxsIG1pbnRzIHVzZXItc2NvcGVkXG4gKiB0b2tlbnMgdmlhIHtAbGluayBidWlsZE1vZGVsfSwgZXhhY3RseSBsaWtlIHRoZSBwcmltYXJ5IGFnZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN1bW1hcnlNb2RlbChcbiAgY29uZmlnOiBNYXN0cmFQbHVnaW5Db25maWcsXG4pOiAoYXJnczogeyByZXF1ZXN0Q29udGV4dDogUmVxdWVzdENvbnRleHQgfSkgPT4gUHJvbWlzZTxNYXN0cmFNb2RlbENvbmZpZz4ge1xuICByZXR1cm4gKHsgcmVxdWVzdENvbnRleHQgfSkgPT5cbiAgICBidWlsZE1vZGVsKGNvbmZpZywgcmVxdWVzdENvbnRleHQsIHsgbW9kZWxDbGFzczogU1VNTUFSWV9NT0RFTF9DTEFTUyB9KTtcbn1cblxuLyoqXG4gKiBPbmUgc3VtbWFyaXplciBgQWdlbnRgIHBlciBwbHVnaW4gY29uZmlnLCBjYWNoZWQgb24gY29uZmlnLW9iamVjdFxuICogaWRlbnRpdHkgc28gYSBob3QgdG9vbCBwYXRoIGRvZXNuJ3QgcGF5IHRoZSBjb25zdHJ1Y3RvciBjb3N0IGVhY2hcbiAqIGNhbGwuIGBXZWFrTWFwYCBsZXRzIHJldGlyZWQgY29uZmlncyAoZS5nLiB0ZXN0IHJlY29uZmlndXJhdGlvbnMpXG4gKiByZWxlYXNlIHRoZWlyIGFnZW50IHdpdGhvdXQgbWFudWFsIGV2aWN0aW9uLlxuICovXG5jb25zdCBzdW1tYXJpemVyQWdlbnRzID0gbmV3IFdlYWtNYXA8TWFzdHJhUGx1Z2luQ29uZmlnLCBBZ2VudD4oKTtcblxuZnVuY3Rpb24gZ2V0U3VtbWFyaXplckFnZW50KGNvbmZpZzogTWFzdHJhUGx1Z2luQ29uZmlnKTogQWdlbnQge1xuICBsZXQgYWdlbnQgPSBzdW1tYXJpemVyQWdlbnRzLmdldChjb25maWcpO1xuICBpZiAoIWFnZW50KSB7XG4gICAgYWdlbnQgPSBuZXcgQWdlbnQoe1xuICAgICAgaWQ6IFwic3VtbWFyaXplclwiLFxuICAgICAgbmFtZTogXCJTdW1tYXJpemVyXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJDb25kZW5zZXMgdGV4dCBpbnRvIGEgc2hvcnQgc3VtbWFyeSB1c2luZyBhIGZhc3QsIHNtYWxsIG1vZGVsLlwiLFxuICAgICAgaW5zdHJ1Y3Rpb25zOiBTVU1NQVJJWkVSX0lOU1RSVUNUSU9OUyxcbiAgICAgIG1vZGVsOiBzdW1tYXJ5TW9kZWwoY29uZmlnKSxcbiAgICB9KTtcbiAgICBzdW1tYXJpemVyQWdlbnRzLnNldChjb25maWcsIGFnZW50KTtcbiAgfVxuICByZXR1cm4gYWdlbnQ7XG59XG5cbi8qKiBJbnB1dHMgYWNjZXB0ZWQgYnkgdGhlIGBzdW1tYXJpemVgIHRvb2wuICovXG5jb25zdCBzdW1tYXJpemVJbnB1dCA9IHoub2JqZWN0KHtcbiAgdGV4dDogei5zdHJpbmcoKS5taW4oMSkuZGVzY3JpYmUoXCJUaGUgdGV4dCB0byBzdW1tYXJpemUuXCIpLFxuICBpbnN0cnVjdGlvbnM6IHpcbiAgICAuc3RyaW5nKClcbiAgICAub3B0aW9uYWwoKVxuICAgIC5kZXNjcmliZShcbiAgICAgIFwiT3B0aW9uYWwgZXh0cmEgZ3VpZGFuY2UgZm9yIHRoZSBzdW1tYXJ5LCBlLmcuICdvbmUgc2VudGVuY2UnIG9yICdsaXN0IHRoZSBhY3Rpb24gaXRlbXMnLlwiLFxuICAgICksXG4gIG1heFdvcmRzOiB6XG4gICAgLm51bWJlcigpXG4gICAgLmludCgpXG4gICAgLnBvc2l0aXZlKClcbiAgICAub3B0aW9uYWwoKVxuICAgIC5kZXNjcmliZShcIk9wdGlvbmFsIHNvZnQgY2FwIG9uIHRoZSBzdW1tYXJ5IGxlbmd0aCwgaW4gd29yZHMuXCIpLFxufSk7XG5cbi8qKiBPcHRpb25zIGFjY2VwdGVkIGJ5IHtAbGluayBzdW1tYXJpemVUZXh0fS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3VtbWFyaXplT3B0aW9ucyB7XG4gIC8qKiBFeHRyYSBndWlkYW5jZSBmb3IgdGhlIHN1bW1hcnkgKGxlbmd0aCwgZm9jdXMsIGZvcm1hdCkuICovXG4gIGluc3RydWN0aW9ucz86IHN0cmluZztcbiAgLyoqIFNvZnQgY2FwIG9uIHN1bW1hcnkgbGVuZ3RoLCBpbiB3b3Jkcy4gKi9cbiAgbWF4V29yZHM/OiBudW1iZXI7XG4gIC8qKiBBY3RpdmUgcmVxdWVzdCBjb250ZXh0LCBzbyB0aGUgbW9kZWwgcmVzb2x2ZXIgbWludHMgdXNlci1zY29wZWQgdG9rZW5zLiAqL1xuICByZXF1ZXN0Q29udGV4dD86IFJlcXVlc3RDb250ZXh0O1xuICAvKiogQWJvcnQgc2lnbmFsIGJyaWRnZWQgZnJvbSB0aGUgY2FsbGluZyB0b29sIC8gcmVxdWVzdC4gKi9cbiAgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbDtcbn1cblxuLyoqXG4gKiBTdW1tYXJpemUgYHRleHRgIHdpdGggdGhlIHNtYWxsLXRpZXIgc3VtbWFyaXplciBhZ2VudCwgcmV0dXJuaW5nIHRoZVxuICogdHJpbW1lZCBzdW1tYXJ5IHN0cmluZy4gVGhyb3dzIG9uIG1vZGVsIGZhaWx1cmUgKHRoZSBjYWxsZXIgZGVjaWRlc1xuICogaG93IHRvIGRlZ3JhZGUpLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3VtbWFyaXplVGV4dChcbiAgY29uZmlnOiBNYXN0cmFQbHVnaW5Db25maWcsXG4gIHRleHQ6IHN0cmluZyxcbiAgb3B0aW9uczogU3VtbWFyaXplT3B0aW9ucyA9IHt9LFxuKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgeyBpbnN0cnVjdGlvbnMsIG1heFdvcmRzLCByZXF1ZXN0Q29udGV4dCwgYWJvcnRTaWduYWwgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHByb21wdCA9IHN0cmluZy50b0Rlc2NyaXB0aW9uKHtcbiAgICAuLi4oaW5zdHJ1Y3Rpb25zID8geyBHdWlkYW5jZTogaW5zdHJ1Y3Rpb25zIH0gOiB7fSksXG4gICAgLi4uKG1heFdvcmRzICE9PSB1bmRlZmluZWQgPyB7IFwiTWF4IGxlbmd0aCAod29yZHMpXCI6IFN0cmluZyhtYXhXb3JkcykgfSA6IHt9KSxcbiAgICBUZXh0OiB0ZXh0LFxuICB9KTtcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ2V0U3VtbWFyaXplckFnZW50KGNvbmZpZykuZ2VuZXJhdGUocHJvbXB0LCB7XG4gICAgLi4uKHJlcXVlc3RDb250ZXh0ID8geyByZXF1ZXN0Q29udGV4dCB9IDoge30pLFxuICAgIC4uLihhYm9ydFNpZ25hbCA/IHsgYWJvcnRTaWduYWwgfSA6IHt9KSxcbiAgfSk7XG4gIHJldHVybiByZXN1bHQudGV4dC50cmltKCk7XG59XG5cbi8qKlxuICogQnVpbGQgdGhlIGBzdW1tYXJpemVgIHRvb2wuIEV4cG9zZWQgYXMgYW4gYW1iaWVudCBzeXN0ZW0gdG9vbCAobGlrZVxuICogYHJlbmRlcl9kYXRhYCkgc28gZXZlcnkgYWdlbnQgY2FuIG9mZmxvYWQgY29uZGVuc2luZyBsb25nIGNvbnRlbnQsXG4gKiBub3RlcywgdHJhbnNjcmlwdHMsIG9yIGJ1bGt5IHRvb2wgcmVzdWx0cyB0byB0aGUgZmFzdCB0aWVyIGluc3RlYWQgb2ZcbiAqIHNwZW5kaW5nIGl0cyBwcmltYXJ5IGNoYXQgbW9kZWwuIFRoZSB0b29sIHJlYWRzIHRoZSBsaXZlXG4gKiBgcmVxdWVzdENvbnRleHRgIC8gYGFib3J0U2lnbmFsYCBvZmYgdGhlIE1hc3RyYSBleGVjdXRpb24gY29udGV4dCBzb1xuICogaXRzIG1vZGVsIGNhbGwgc3RheXMgdXNlci1zY29wZWQgYW5kIGNhbmNlbHMgd2l0aCB0aGUgdHVybi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkU3VtbWFyaXplVG9vbChjb25maWc6IE1hc3RyYVBsdWdpbkNvbmZpZykge1xuICByZXR1cm4gY3JlYXRlVG9vbCh7XG4gICAgaWQ6IFwic3VtbWFyaXplXCIsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIlN1bW1hcml6ZSBhIGJsb2NrIG9mIHRleHQgdXNpbmcgYSBmYXN0LCBzbWFsbCBtb2RlbC4gVXNlIGl0IHRvIGNvbmRlbnNlIGxvbmcgXCIgK1xuICAgICAgXCJjb250ZW50LCBub3RlcywgdHJhbnNjcmlwdHMsIG9yIHRvb2wgcmVzdWx0cyBpbnRvIGEgc2hvcnQgc3VtbWFyeSB3aXRob3V0IFwiICtcbiAgICAgIFwic3BlbmRpbmcgdGhlIG1haW4gY2hhdCBtb2RlbC5cIixcbiAgICBpbnB1dFNjaGVtYTogc3VtbWFyaXplSW5wdXQsXG4gICAgZXhlY3V0ZTogYXN5bmMgKGlucHV0LCBjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCB7IHRleHQsIGluc3RydWN0aW9ucywgbWF4V29yZHMgfSA9IGlucHV0IGFzIHouaW5mZXI8dHlwZW9mIHN1bW1hcml6ZUlucHV0PjtcbiAgICAgIGNvbnN0IGN0eCA9IGNvbnRleHQgYXNcbiAgICAgICAgeyByZXF1ZXN0Q29udGV4dD86IFJlcXVlc3RDb250ZXh0OyBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsIH0gfCB1bmRlZmluZWQ7XG4gICAgICBjb25zdCBzdW1tYXJ5ID0gYXdhaXQgc3VtbWFyaXplVGV4dChjb25maWcsIHRleHQsIHtcbiAgICAgICAgLi4uKGluc3RydWN0aW9ucyA/IHsgaW5zdHJ1Y3Rpb25zIH0gOiB7fSksXG4gICAgICAgIC4uLihtYXhXb3JkcyAhPT0gdW5kZWZpbmVkID8geyBtYXhXb3JkcyB9IDoge30pLFxuICAgICAgICAuLi4oY3R4Py5yZXF1ZXN0Q29udGV4dCA/IHsgcmVxdWVzdENvbnRleHQ6IGN0eC5yZXF1ZXN0Q29udGV4dCB9IDoge30pLFxuICAgICAgICAuLi4oY3R4Py5hYm9ydFNpZ25hbCA/IHsgYWJvcnRTaWduYWw6IGN0eC5hYm9ydFNpZ25hbCB9IDoge30pLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4geyBzdW1tYXJ5IH07XG4gICAgfSxcbiAgfSk7XG59XG4iXX0=
|
package/lib/tsconfig.tsbuildinfo
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../src/agents.ts","../src/chart.ts","../src/config.ts","../src/defaults.ts","../src/filesystems.ts","../src/genie.ts","../src/history.ts","../src/identity.ts","../src/mcp.ts","../src/memory.ts","../src/mlflow.ts","../src/model.ts","../src/observability.ts","../src/pagination.ts","../src/plugin.ts","../src/processors.ts","../src/remote-skills.ts","../src/rest.ts","../src/server.ts","../src/serving-sanitize.ts","../src/serving.ts","../src/skill-paths.ts","../src/statement.ts","../src/storage-schema.ts","../src/summarize.ts","../src/threads.ts","../src/trace-io.ts","../src/validation.ts","../src/workspaces.ts","../src/writer.ts","../index.ts"],"version":"5.9.3"}
|
|
1
|
+
{"root":["../src/agents.ts","../src/chart.ts","../src/config.ts","../src/defaults.ts","../src/filesystems.ts","../src/genie.ts","../src/history.ts","../src/identity.ts","../src/mcp.ts","../src/memory.ts","../src/mlflow.ts","../src/model.ts","../src/observability.ts","../src/pagination.ts","../src/plugin.ts","../src/processors.ts","../src/remote-skills.ts","../src/rest.ts","../src/server.ts","../src/serving-sanitize.ts","../src/serving.ts","../src/skill-paths.ts","../src/statement.ts","../src/storage-schema.ts","../src/style.ts","../src/summarize.ts","../src/threads.ts","../src/trace-io.ts","../src/validation.ts","../src/workspaces.ts","../src/writer.ts","../index.ts"],"version":"5.9.3"}
|
package/package.json
CHANGED
|
@@ -31,18 +31,18 @@
|
|
|
31
31
|
"dependencies": {
|
|
32
32
|
"@databricks/appkit": "^0.43.0",
|
|
33
33
|
"@databricks/sdk-experimental": "^0.17.0",
|
|
34
|
-
"@dbx-tools/appkit": "0.6.
|
|
35
|
-
"@dbx-tools/core": "0.6.
|
|
36
|
-
"@dbx-tools/databricks": "0.6.
|
|
37
|
-
"@dbx-tools/fs": "0.6.
|
|
38
|
-
"@dbx-tools/genie": "0.6.
|
|
39
|
-
"@dbx-tools/model": "0.6.
|
|
40
|
-
"@dbx-tools/path": "0.6.
|
|
41
|
-
"@dbx-tools/shared-core": "0.6.
|
|
42
|
-
"@dbx-tools/shared-fs": "0.6.
|
|
43
|
-
"@dbx-tools/shared-genie": "0.6.
|
|
44
|
-
"@dbx-tools/shared-mastra": "0.6.
|
|
45
|
-
"@dbx-tools/shared-model": "0.6.
|
|
34
|
+
"@dbx-tools/appkit": "0.6.49",
|
|
35
|
+
"@dbx-tools/core": "0.6.49",
|
|
36
|
+
"@dbx-tools/databricks": "0.6.49",
|
|
37
|
+
"@dbx-tools/fs": "0.6.49",
|
|
38
|
+
"@dbx-tools/genie": "0.6.49",
|
|
39
|
+
"@dbx-tools/model": "0.6.49",
|
|
40
|
+
"@dbx-tools/path": "0.6.49",
|
|
41
|
+
"@dbx-tools/shared-core": "0.6.49",
|
|
42
|
+
"@dbx-tools/shared-fs": "0.6.49",
|
|
43
|
+
"@dbx-tools/shared-genie": "0.6.49",
|
|
44
|
+
"@dbx-tools/shared-mastra": "0.6.49",
|
|
45
|
+
"@dbx-tools/shared-model": "0.6.49",
|
|
46
46
|
"@mastra/ai-sdk": "^1.6.0",
|
|
47
47
|
"@mastra/core": "^1.47.0",
|
|
48
48
|
"@mastra/express": "^1.4.2",
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
"./package.json": "./package.json"
|
|
72
72
|
}
|
|
73
73
|
},
|
|
74
|
-
"version": "0.6.
|
|
74
|
+
"version": "0.6.49",
|
|
75
75
|
"types": "./lib/index.d.ts",
|
|
76
76
|
"type": "module",
|
|
77
77
|
"exports": {
|
package/src/agents.ts
CHANGED
|
@@ -32,6 +32,7 @@ import { buildGenieToolkitProvider, resolveGenieSpaces } from "./genie.ts";
|
|
|
32
32
|
import type { MemoryBuilder } from "./memory.ts";
|
|
33
33
|
import { buildModel } from "./model.ts";
|
|
34
34
|
import { ResultProcessor, stripStaleChartsProcessor } from "./processors.ts";
|
|
35
|
+
import { TYPOGRAPHY_RULE } from "./style.ts";
|
|
35
36
|
import { buildSummarizeTool } from "./summarize.ts";
|
|
36
37
|
import { createWorkspace } from "./workspaces.ts";
|
|
37
38
|
|
|
@@ -408,8 +409,7 @@ export const DEFAULT_STYLE_INSTRUCTIONS = [
|
|
|
408
409
|
"Use markdown formatting, including headings, lists, and code blocks.",
|
|
409
410
|
"Avoid lists and headers for short replies.",
|
|
410
411
|
"Plain prose.",
|
|
411
|
-
|
|
412
|
-
"Never use emojis.",
|
|
412
|
+
TYPOGRAPHY_RULE,
|
|
413
413
|
"Skip openers like 'Great question', 'Absolutely', and 'I'd be happy to help'.",
|
|
414
414
|
"Skip closers like 'Let me know if you have any questions'.",
|
|
415
415
|
"Skip self-disclaimers like 'I should mention' and 'It's important to note'.",
|
package/src/config.ts
CHANGED
|
@@ -24,7 +24,7 @@ import type { PgVectorConfig, PostgresStoreConfig } from "@mastra/pg";
|
|
|
24
24
|
|
|
25
25
|
import type { MastraAgentDefinition, MastraTools } from "./agents.ts";
|
|
26
26
|
import type { GenieSpacesConfig } from "./genie.ts";
|
|
27
|
-
import type
|
|
27
|
+
import { IDENTITY_MODES, type MastraIdentityMode } from "./identity.ts";
|
|
28
28
|
import type { RemoteSkillsOption } from "./remote-skills.ts";
|
|
29
29
|
|
|
30
30
|
/**
|
|
@@ -526,8 +526,13 @@ export interface MastraPluginConfig extends BasePluginConfig {
|
|
|
526
526
|
* - `"service-principal"`: always the app service principal. Needs no OBO
|
|
527
527
|
* scopes and works for any caller who can open the app, at the cost of
|
|
528
528
|
* per-user attribution in Genie / Unity Catalog.
|
|
529
|
+
* - `"auto"`: OBO when the request carries an OBO token, the service principal
|
|
530
|
+
* when it does not. For an app serving BOTH the platform front door and a
|
|
531
|
+
* door that has no token to forward - a `@dbx-tools/cli-tunnel` gate, a
|
|
532
|
+
* Teams channel - where AppKit's `asUser` would otherwise throw
|
|
533
|
+
* `AuthenticationError` outside `NODE_ENV=development`.
|
|
529
534
|
*
|
|
530
|
-
*
|
|
535
|
+
* The service-principal path changes only the Databricks CREDENTIAL. Memory
|
|
531
536
|
* threads, the per-user cache namespace, and trace metadata still key off the
|
|
532
537
|
* forwarded user, so callers sharing the service principal's data access keep
|
|
533
538
|
* separate conversations and cannot read each other's threads or charts.
|
|
@@ -536,6 +541,11 @@ export interface MastraPluginConfig extends BasePluginConfig {
|
|
|
536
541
|
* ```ts
|
|
537
542
|
* mastra({ genieIdentity: "service-principal", genieSpaces: { default: spaceId } });
|
|
538
543
|
* ```
|
|
544
|
+
*
|
|
545
|
+
* @example One app behind both the front door and a public tunnel
|
|
546
|
+
* ```ts
|
|
547
|
+
* mastra({ genieIdentity: "auto", genieSpaces: { default: spaceId } });
|
|
548
|
+
* ```
|
|
539
549
|
*/
|
|
540
550
|
genieIdentity?: MastraIdentityMode;
|
|
541
551
|
/**
|
|
@@ -691,9 +701,11 @@ export const MASTRA_CONFIG_SCHEMA: ConfigSchema = {
|
|
|
691
701
|
},
|
|
692
702
|
genieIdentity: {
|
|
693
703
|
type: "string",
|
|
694
|
-
|
|
704
|
+
// Derived from the resolver's own list, so a mode can never be accepted at
|
|
705
|
+
// runtime while the published schema (and the UI built from it) omits it.
|
|
706
|
+
enum: [...IDENTITY_MODES],
|
|
695
707
|
description:
|
|
696
|
-
'Which Databricks identity the agents\' workspace calls (serving catalogue, Genie, statement execution) run as. "user" (default) is always OBO, so callers must be workspace members; "service-principal" always uses the app service principal, so any caller who can open the app works, at the cost of per-user attribution. Falls back to MASTRA_GENIE_IDENTITY.',
|
|
708
|
+
'Which Databricks identity the agents\' workspace calls (serving catalogue, Genie, statement execution) run as. "user" (default) is always OBO, so callers must be workspace members; "service-principal" always uses the app service principal, so any caller who can open the app works, at the cost of per-user attribution; "auto" uses OBO when the request carries an OBO token and the service principal when it does not, for an app that also serves a tunnel or webhook door. Falls back to MASTRA_GENIE_IDENTITY.',
|
|
697
709
|
},
|
|
698
710
|
apiAccess: {
|
|
699
711
|
type: "string",
|
package/src/identity.ts
CHANGED
|
@@ -7,7 +7,14 @@
|
|
|
7
7
|
* client on the ambient AppKit execution context. That context is user-scoped
|
|
8
8
|
* (OBO) whenever the plugin enters `asUser(req)` and the app's service principal
|
|
9
9
|
* otherwise, so ONE decision - do we enter that scope for this request - moves
|
|
10
|
-
* every call site together.
|
|
10
|
+
* every call site together.
|
|
11
|
+
*
|
|
12
|
+
* The decision itself is NOT Mastra-specific (the Teams messaging endpoint and
|
|
13
|
+
* the tunnel gate face it too), so it lives in `@dbx-tools/appkit`'s `identity`
|
|
14
|
+
* module - which also documents the measured AppKit behavior that makes `"auto"`
|
|
15
|
+
* necessary. This module is the Mastra-facing binding: the plugin's own config
|
|
16
|
+
* field and env var, re-exporting the shared vocabulary so a consumer importing
|
|
17
|
+
* `@dbx-tools/appkit-mastra` needs no second import.
|
|
11
18
|
*
|
|
12
19
|
* Why the option exists: OBO requires the caller to be a member of the
|
|
13
20
|
* WORKSPACE, not merely of the Databricks account. An app shared with an
|
|
@@ -19,7 +26,7 @@
|
|
|
19
26
|
* / warehouse / serving / Unity Catalog grants the app was deployed with, and
|
|
20
27
|
* works for every caller.
|
|
21
28
|
*
|
|
22
|
-
* The
|
|
29
|
+
* The modes, from `config.genieIdentity` (env: {@link IDENTITY_ENV}):
|
|
23
30
|
*
|
|
24
31
|
* - `"user"` (default): always OBO. Calls are attributed per user and Genie /
|
|
25
32
|
* Unity Catalog row filters apply per user. Correct whenever every caller is
|
|
@@ -28,9 +35,13 @@
|
|
|
28
35
|
* - `"service-principal"`: always the app service principal. Needs no OBO
|
|
29
36
|
* scopes and works for any caller who can open the app, at the cost of
|
|
30
37
|
* per-user attribution in Genie / Unity Catalog.
|
|
38
|
+
* - `"auto"`: OBO when the request carries an OBO token, the service principal
|
|
39
|
+
* when it does not. The mode for an app that serves BOTH the platform front
|
|
40
|
+
* door and a door with no OBO token to forward (a `@dbx-tools/cli-tunnel`
|
|
41
|
+
* gate, a Teams channel), since a single container serves both at once.
|
|
31
42
|
*
|
|
32
|
-
* What
|
|
33
|
-
* memory thread's `resourceId`, the per-user cache namespace, and the user
|
|
43
|
+
* What the service-principal path does NOT change is WHO the turn belongs to.
|
|
44
|
+
* The memory thread's `resourceId`, the per-user cache namespace, and the user
|
|
34
45
|
* metadata on traces still come from the forwarded request headers, so two
|
|
35
46
|
* account users sharing the service principal's data access still get separate
|
|
36
47
|
* conversations and cannot read each other's threads or cached charts. Only the
|
|
@@ -39,72 +50,50 @@
|
|
|
39
50
|
* @module
|
|
40
51
|
*/
|
|
41
52
|
|
|
42
|
-
import {
|
|
43
|
-
import { string } from "@dbx-tools/shared-core";
|
|
44
|
-
import type express from "express";
|
|
53
|
+
import { identity } from "@dbx-tools/appkit";
|
|
45
54
|
|
|
46
55
|
/** Identity a chat turn's Databricks calls run as. See the module docs. */
|
|
47
|
-
export type MastraIdentityMode =
|
|
56
|
+
export type MastraIdentityMode = identity.IdentityMode;
|
|
48
57
|
|
|
49
58
|
/** Environment fallback for `config.genieIdentity`. */
|
|
50
59
|
export const IDENTITY_ENV = "MASTRA_GENIE_IDENTITY";
|
|
51
60
|
|
|
52
61
|
/** Every accepted {@link MastraIdentityMode}. */
|
|
53
|
-
export const IDENTITY_MODES
|
|
62
|
+
export const IDENTITY_MODES = identity.IDENTITY_MODES;
|
|
54
63
|
|
|
55
64
|
/**
|
|
56
65
|
* Default mode. `"user"` keeps OBO the only identity unless an app opts in, so
|
|
57
66
|
* adopting this option can never silently widen an existing app's data access.
|
|
58
67
|
*/
|
|
59
|
-
export const DEFAULT_IDENTITY_MODE
|
|
68
|
+
export const DEFAULT_IDENTITY_MODE = identity.DEFAULT_IDENTITY_MODE;
|
|
69
|
+
|
|
70
|
+
/** Header Databricks Apps forward the signed-in user's id on. */
|
|
71
|
+
export const USER_ID_HEADER = identity.USER_ID_HEADER;
|
|
72
|
+
|
|
73
|
+
/** Header Databricks Apps forward the signed-in user's email on. */
|
|
74
|
+
export const USER_EMAIL_HEADER = identity.USER_EMAIL_HEADER;
|
|
60
75
|
|
|
61
76
|
/**
|
|
62
77
|
* Resolve the configured mode: explicit plugin config, then {@link IDENTITY_ENV},
|
|
63
|
-
* then {@link DEFAULT_IDENTITY_MODE}.
|
|
64
|
-
*
|
|
65
|
-
* An unrecognized value throws rather than falling back, since falling back
|
|
66
|
-
* would silently keep serving OBO - and the 500s it produces - to exactly the
|
|
67
|
-
* callers the option was set to accommodate.
|
|
78
|
+
* then {@link DEFAULT_IDENTITY_MODE}. An unrecognized value throws.
|
|
68
79
|
*/
|
|
69
80
|
export function resolveIdentityMode(configured: string | undefined): MastraIdentityMode {
|
|
70
|
-
|
|
71
|
-
if (raw === null) return DEFAULT_IDENTITY_MODE;
|
|
72
|
-
const mode = raw.toLowerCase() as MastraIdentityMode;
|
|
73
|
-
if (!IDENTITY_MODES.includes(mode)) {
|
|
74
|
-
throw new ConfigurationError(
|
|
75
|
-
`genieIdentity must be one of ${IDENTITY_MODES.join(" | ")} (env: ${IDENTITY_ENV})`,
|
|
76
|
-
{ context: { field: "genieIdentity", envVar: IDENTITY_ENV, received: raw } },
|
|
77
|
-
);
|
|
78
|
-
}
|
|
79
|
-
return mode;
|
|
81
|
+
return identity.resolveIdentityMode(configured, IDENTITY_ENV, "genieIdentity");
|
|
80
82
|
}
|
|
81
83
|
|
|
82
|
-
/** Header Databricks Apps forward the signed-in user's id on. */
|
|
83
|
-
export const USER_ID_HEADER = "x-forwarded-user";
|
|
84
|
-
|
|
85
|
-
/** Header Databricks Apps forward the signed-in user's email on. */
|
|
86
|
-
export const USER_EMAIL_HEADER = "x-forwarded-email";
|
|
87
|
-
|
|
88
84
|
/**
|
|
89
85
|
* The forwarded user id on `req`, or `undefined`. Used to attribute a turn to
|
|
90
|
-
* the real caller
|
|
91
|
-
*
|
|
86
|
+
* the real caller when the Databricks client is the app SP but memory / cache /
|
|
87
|
+
* traces must still key off the user.
|
|
92
88
|
*/
|
|
93
|
-
export
|
|
94
|
-
return string.trimToNull(req.header(USER_ID_HEADER)) ?? undefined;
|
|
95
|
-
}
|
|
89
|
+
export const requestUserId = identity.requestUserId;
|
|
96
90
|
|
|
97
91
|
/** The forwarded user email on `req`, or `undefined`. */
|
|
98
|
-
export
|
|
99
|
-
return string.trimToNull(req.header(USER_EMAIL_HEADER)) ?? undefined;
|
|
100
|
-
}
|
|
92
|
+
export const requestUserEmail = identity.requestUserEmail;
|
|
101
93
|
|
|
102
94
|
/**
|
|
103
95
|
* Whether this request should run its Databricks calls as the app service
|
|
104
|
-
* principal rather than OBO
|
|
105
|
-
*
|
|
106
|
-
* request-scoped policy later; it is unused today.
|
|
96
|
+
* principal rather than OBO - `"service-principal"` always, `"user"` never, and
|
|
97
|
+
* `"auto"` only when the request carries no OBO token for AppKit to use.
|
|
107
98
|
*/
|
|
108
|
-
export
|
|
109
|
-
return mode === "service-principal";
|
|
110
|
-
}
|
|
99
|
+
export const useServicePrincipal = identity.useServicePrincipal;
|
package/src/style.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The typography rule every prompt in this plugin shares.
|
|
3
|
+
*
|
|
4
|
+
* Three prompts tell a model how to render text - the agent style block
|
|
5
|
+
* ({@link agents.DEFAULT_STYLE_INSTRUCTIONS}), the summarizer, and the thread
|
|
6
|
+
* titler - and they have to AGREE, because a summary or a thread title sits
|
|
7
|
+
* beside agent prose in the same UI. Stated three times they drifted: one said
|
|
8
|
+
* "never em dashes or en dashes", another only "no em dashes". Keep the rule
|
|
9
|
+
* here so a change reaches every prompt.
|
|
10
|
+
*
|
|
11
|
+
* Em dashes and emojis are the two most recognizable LLM tells, and an em dash
|
|
12
|
+
* additionally breaks the repo's own prose style, so they are called out rather
|
|
13
|
+
* than left to the model's defaults.
|
|
14
|
+
*
|
|
15
|
+
* @module
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* One sentence, safe to append to any instruction block.
|
|
20
|
+
*
|
|
21
|
+
* Phrased as a standalone sentence (not a list fragment) so it reads correctly
|
|
22
|
+
* whether the surrounding prompt is joined with newlines or spaces.
|
|
23
|
+
*/
|
|
24
|
+
export const TYPOGRAPHY_RULE =
|
|
25
|
+
"Never use emojis. Use hyphens (-) only, never em dashes or en dashes.";
|
package/src/summarize.ts
CHANGED
|
@@ -29,6 +29,7 @@ import { z } from "zod";
|
|
|
29
29
|
|
|
30
30
|
import type { MastraPluginConfig } from "./config.ts";
|
|
31
31
|
import { buildModel } from "./model.ts";
|
|
32
|
+
import { TYPOGRAPHY_RULE } from "./style.ts";
|
|
32
33
|
|
|
33
34
|
/** Fast / small chat tier used for both titling and summaries. */
|
|
34
35
|
const SUMMARY_MODEL_CLASS = model.ModelClass.ChatFast;
|
|
@@ -39,7 +40,7 @@ const SUMMARIZER_INSTRUCTIONS = [
|
|
|
39
40
|
"Given a block of text, produce a faithful, concise summary of it.",
|
|
40
41
|
"Default to a few sentences; follow any length guidance the caller gives.",
|
|
41
42
|
"Plain prose. No preamble, no headers, no bullet points unless asked.",
|
|
42
|
-
|
|
43
|
+
TYPOGRAPHY_RULE,
|
|
43
44
|
"Never add information, opinions, or details not present in the input.",
|
|
44
45
|
"Output only the summary.",
|
|
45
46
|
].join("\n");
|
|
@@ -52,8 +53,9 @@ const SUMMARIZER_INSTRUCTIONS = [
|
|
|
52
53
|
export const TITLE_INSTRUCTIONS = [
|
|
53
54
|
"Generate a short, specific title for this conversation, 3 to 6 words.",
|
|
54
55
|
"Capture the user's topic, not the assistant's response.",
|
|
55
|
-
"Plain text only: no surrounding quotes
|
|
56
|
-
|
|
56
|
+
"Plain text only: no surrounding quotes and no trailing punctuation.",
|
|
57
|
+
TYPOGRAPHY_RULE,
|
|
58
|
+
"Output only the title.",
|
|
57
59
|
].join(" ");
|
|
58
60
|
|
|
59
61
|
/**
|