@dbx-tools/appkit-model-gateway 0.9.190 → 0.9.193

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.
@@ -8,7 +8,7 @@
8
8
  * @module
9
9
  */
10
10
  import { learnReasoningLevelsFromError, modelReasoningLevelsFor, adaptRequestReasoning, parseReasoningLevels, } from "@dbx-tools/model";
11
- import { log } from "@dbx-tools/shared-core";
11
+ import { isRecord, log } from "@dbx-tools/shared-core";
12
12
  const logger = log.logger("appkit/model-gateway/reasoning");
13
13
  const INVALID_ENCRYPTED_REASONING_PATTERN = /invalid encrypted reasoning|invalid_encrypted_content|encrypted content .+ could not be verified/i;
14
14
  const REASONING_UNSUPPORTED_PATTERN = /does not support ['"]reasoning['"]/i;
@@ -92,7 +92,4 @@ function stripRequestReasoning(body) {
92
92
  delete stripped.reasoning_effort;
93
93
  return stripped;
94
94
  }
95
- function isRecord(value) {
96
- return typeof value === "object" && value !== null && !Array.isArray(value);
97
- }
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhc29uaW5nLWFkYXB0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JlYXNvbmluZy1hZGFwdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFDTCw2QkFBNkIsRUFDN0IsdUJBQXVCLEVBQ3ZCLHFCQUFxQixFQUNyQixvQkFBb0IsR0FDckIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFN0MsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO0FBQzVELE1BQU0sbUNBQW1DLEdBQ3ZDLG1HQUFtRyxDQUFDO0FBQ3RHLE1BQU0sNkJBQTZCLEdBQUcscUNBQXFDLENBQUM7QUFTNUUsc0VBQXNFO0FBQ3RFLE1BQU0sVUFBVSx1QkFBdUIsQ0FDckMsS0FBYSxFQUNiLElBQXVDO0lBRXZDLE1BQU0sT0FBTyxHQUFHLHFCQUFxQixDQUFDLElBQUksRUFBRSx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzVFLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3BCLE1BQU0sQ0FBQyxLQUFLLENBQUMsMENBQTBDLEVBQUU7WUFDdkQsS0FBSztZQUNMLE1BQU0sRUFBRSxPQUFPLENBQUMsVUFBVTtTQUMzQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTztRQUNMLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtRQUNsQixVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVU7UUFDOUIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO0tBQ3pCLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsMkJBQTJCLENBQUMsS0FLakQ7SUFDQyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxR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LENBQUM7QUFDNUIsQ0FBQztBQUVELFNBQVMscUJBQXFCLENBQzVCLElBQXVDO0lBRXZDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztRQUNsRixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBQ0QsTUFBTSxRQUFRLEdBQUcsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDO0lBQzdCLE9BQU8sUUFBUSxDQUFDLFNBQVMsQ0FBQztJQUMxQixPQUFPLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQztJQUNqQyxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDO0FBRUQsU0FBUyxRQUFRLENBQUMsS0FBYztJQUM5QixPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM5RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSZWFzb25pbmctZWZmb3J0IGFkYXB0YXRpb24gZm9yIGdhdGV3YXkgcm91bmQgdHJpcHMuXG4gKlxuICogUHJvYWN0aXZlbHkgcmVtYXBzIGNsaWVudCBlZmZvcnRzIG9udG8gdGhlIGtub3duIGxhZGRlciwgdGhlbiBvbiBhIHNpbmdsZVxuICogdW5zdXBwb3J0ZWQtdmFsdWUgNDAwIHJlc29sdmVzIHRoZSBwcmVmZXJyZWQgcHVibGlzaGVkLW9yLWxlYXJuZWQgbGFkZGVyXG4gKiBhbmQgcmV0cmllcyBvbmNlLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQge1xuICBsZWFyblJlYXNvbmluZ0xldmVsc0Zyb21FcnJvcixcbiAgbW9kZWxSZWFzb25pbmdMZXZlbHNGb3IsXG4gIGFkYXB0UmVxdWVzdFJlYXNvbmluZyxcbiAgcGFyc2VSZWFzb25pbmdMZXZlbHMsXG59IGZyb20gXCJAZGJ4LXRvb2xzL21vZGVsXCI7XG5pbXBvcnQgeyBsb2cgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuXG5jb25zdCBsb2dnZXIgPSBsb2cubG9nZ2VyKFwiYXBwa2l0L21vZGVsLWdhdGV3YXkvcmVhc29uaW5nXCIpO1xuY29uc3QgSU5WQUxJRF9FTkNSWVBURURfUkVBU09OSU5HX1BBVFRFUk4gPVxuICAvaW52YWxpZCBlbmNyeXB0ZWQgcmVhc29uaW5nfGludmFsaWRfZW5jcnlwdGVkX2NvbnRlbnR8ZW5jcnlwdGVkIGNvbnRlbnQgLisgY291bGQgbm90IGJlIHZlcmlmaWVkL2k7XG5jb25zdCBSRUFTT05JTkdfVU5TVVBQT1JURURfUEFUVEVSTiA9IC9kb2VzIG5vdCBzdXBwb3J0IFsnXCJdcmVhc29uaW5nWydcIl0vaTtcblxuLyoqIFJlc3VsdCBvZiB0aGUgZmlyc3QgcHJvYWN0aXZlIGFkYXB0YXRpb24gcGFzcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWRhcHRlZEluZmVyZW5jZUJvZHkge1xuICByZWFkb25seSBib2R5OiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gIHJlYWRvbmx5IHdpcmVFZmZvcnQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNoYW5nZWQ6IGJvb2xlYW47XG59XG5cbi8qKiBBZGFwdCBhIHJlcXVlc3QgYm9keSBvbnRvIHRoZSBjdXJyZW50IGtub3duIGxhZGRlciBmb3IgYG1vZGVsYC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGFwdEluZmVyZW5jZVJlYXNvbmluZyhcbiAgbW9kZWw6IHN0cmluZyxcbiAgYm9keTogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+LFxuKTogQWRhcHRlZEluZmVyZW5jZUJvZHkge1xuICBjb25zdCBhZGFwdGVkID0gYWRhcHRSZXF1ZXN0UmVhc29uaW5nKGJvZHksIG1vZGVsUmVhc29uaW5nTGV2ZWxzRm9yKG1vZGVsKSk7XG4gIGlmIChhZGFwdGVkLmNoYW5nZWQpIHtcbiAgICBsb2dnZXIuZGVidWcoXCJhZGFwdGVkIHJlYXNvbmluZyBlZmZvcnQgYmVmb3JlIHVwc3RyZWFtXCIsIHtcbiAgICAgIG1vZGVsLFxuICAgICAgZWZmb3J0OiBhZGFwdGVkLndpcmVFZmZvcnQsXG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBib2R5OiBhZGFwdGVkLmJvZHksXG4gICAgd2lyZUVmZm9ydDogYWRhcHRlZC53aXJlRWZmb3J0LFxuICAgIGNoYW5nZWQ6IGFkYXB0ZWQuY2hhbmdlZCxcbiAgfTtcbn1cblxuLyoqXG4gKiBPbiBhIHJlYXNvbmluZy1yZWxhdGVkIDQwMCwgcmVtb3ZlIGludmFsaWQgcmVwbGF5IHN0YXRlLCByZW1vdmUgdW5zdXBwb3J0ZWRcbiAqIHJlYXNvbmluZywgb3IgcmVzb2x2ZSB0aGUgcHJlZmVycmVkIGxhZGRlciBhbmQgcHJvZHVjZSBhIHJlbWFwcGVkIHJldHJ5IGJvZHkuXG4gKiBSZXR1cm5zIGB1bmRlZmluZWRgIHdoZW4gbm8gcmV0cnkgc2hvdWxkIG9jY3VyLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbGVhcm5BbmRBZGFwdFJlYXNvbmluZ1JldHJ5KGlucHV0OiB7XG4gIHJlYWRvbmx5IG1vZGVsOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGJvZHk6IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgcmVhZG9ubHkgcmVzcG9uc2U6IFJlc3BvbnNlO1xuICByZWFkb25seSBwcmV2aW91c1dpcmVFZmZvcnQ/OiBzdHJpbmc7XG59KTogUHJvbWlzZTxSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4gfCB1bmRlZmluZWQ+IHtcbiAgaWYgKGlucHV0LnJlc3BvbnNlLm9rIHx8IGlucHV0LnJlc3BvbnNlLnN0YXR1cyAhPT0gNDAwKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIGxldCBlcnJvckJvZHk6IHVua25vd247XG4gIHRyeSB7XG4gICAgZXJyb3JCb2R5ID0gSlNPTi5wYXJzZShhd2FpdCBpbnB1dC5yZXNwb25zZS5jbG9uZSgpLnRleHQoKSk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBzZXJpYWxpemVkRXJyb3IgPSBKU09OLnN0cmluZ2lmeShlcnJvckJvZHkpO1xuICBpZiAoSU5WQUxJRF9FTkNSWVBURURfUkVBU09OSU5HX1BBVFRFUk4udGVzdChzZXJpYWxpemVkRXJyb3IpKSB7XG4gICAgY29uc3Qgc3RyaXBwZWQgPSBzdHJpcFJlYXNvbmluZ0hpc3RvcnkoaW5wdXQuYm9keSk7XG4gICAgaWYgKCFzdHJpcHBlZCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBsb2dnZXIuaW5mbyhcInJldHJ5aW5nIHdpdGhvdXQgaW52YWxpZCBlbmNyeXB0ZWQgcmVhc29uaW5nIGhpc3RvcnlcIiwgeyBtb2RlbDogaW5wdXQubW9kZWwgfSk7XG4gICAgcmV0dXJuIHN0cmlwcGVkO1xuICB9XG5cbiAgaWYgKFJFQVNPTklOR19VTlNVUFBPUlRFRF9QQVRURVJOLnRlc3Qoc2VyaWFsaXplZEVycm9yKSkge1xuICAgIGNvbnN0IHN0cmlwcGVkID0gc3RyaXBSZXF1ZXN0UmVhc29uaW5nKGlucHV0LmJvZHkpO1xuICAgIGlmICghc3RyaXBwZWQpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgbG9nZ2VyLmluZm8oXCJyZXRyeWluZyB3aXRob3V0IHVuc3VwcG9ydGVkIHJlYXNvbmluZ1wiLCB7IG1vZGVsOiBpbnB1dC5tb2RlbCB9KTtcbiAgICByZXR1cm4gc3RyaXBwZWQ7XG4gIH1cblxuICBpZiAocGFyc2VSZWFzb25pbmdMZXZlbHMoZXJyb3JCb2R5KS5sZW5ndGggPT09IDApIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgY29uc3QgbGV2ZWxzID0gYXdhaXQgbGVhcm5SZWFzb25pbmdMZXZlbHNGcm9tRXJyb3IoaW5wdXQubW9kZWwsIGVycm9yQm9keSk7XG4gIGxvZ2dlci5pbmZvKFwicmVzb2x2ZWQgcmVhc29uaW5nIGxldmVscyBhZnRlciB1cHN0cmVhbSBlcnJvclwiLCB7XG4gICAgbW9kZWw6IGlucHV0Lm1vZGVsLFxuICAgIGxldmVscyxcbiAgfSk7XG5cbiAgY29uc3QgYWRhcHRlZCA9IGFkYXB0UmVxdWVzdFJlYXNvbmluZyhpbnB1dC5ib2R5LCBsZXZlbHMpO1xuICBpZiAoYWRhcHRlZC53aXJlRWZmb3J0ID09PSB1bmRlZmluZWQgfHwgYWRhcHRlZC53aXJlRWZmb3J0ID09PSBpbnB1dC5wcmV2aW91c1dpcmVFZmZvcnQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgbG9nZ2VyLmluZm8oXCJyZXRyeWluZyB3aXRoIGFkYXB0ZWQgcmVhc29uaW5nIGVmZm9ydFwiLCB7XG4gICAgbW9kZWw6IGlucHV0Lm1vZGVsLFxuICAgIGZyb206IGlucHV0LnByZXZpb3VzV2lyZUVmZm9ydCxcbiAgICB0bzogYWRhcHRlZC53aXJlRWZmb3J0LFxuICB9KTtcbiAgcmV0dXJuIGFkYXB0ZWQuYm9keTtcbn1cblxuZnVuY3Rpb24gc3RyaXBSZWFzb25pbmdIaXN0b3J5KFxuICBib2R5OiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4sXG4pOiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4gfCB1bmRlZmluZWQge1xuICBpZiAoIUFycmF5LmlzQXJyYXkoYm9keS5pbnB1dCkpIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IGlucHV0ID0gYm9keS5pbnB1dC5maWx0ZXIoKGl0ZW0pID0+ICFpc1JlY29yZChpdGVtKSB8fCBpdGVtLnR5cGUgIT09IFwicmVhc29uaW5nXCIpO1xuICBpZiAoaW5wdXQubGVuZ3RoID09PSBib2R5LmlucHV0Lmxlbmd0aCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgcmV0dXJuIHsgLi4uYm9keSwgaW5wdXQgfTtcbn1cblxuZnVuY3Rpb24gc3RyaXBSZXF1ZXN0UmVhc29uaW5nKFxuICBib2R5OiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4sXG4pOiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4gfCB1bmRlZmluZWQge1xuICBpZiAoIU9iamVjdC5oYXNPd24oYm9keSwgXCJyZWFzb25pbmdcIikgJiYgIU9iamVjdC5oYXNPd24oYm9keSwgXCJyZWFzb25pbmdfZWZmb3J0XCIpKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCBzdHJpcHBlZCA9IHsgLi4uYm9keSB9O1xuICBkZWxldGUgc3RyaXBwZWQucmVhc29uaW5nO1xuICBkZWxldGUgc3RyaXBwZWQucmVhc29uaW5nX2VmZm9ydDtcbiAgcmV0dXJuIHN0cmlwcGVkO1xufVxuXG5mdW5jdGlvbiBpc1JlY29yZCh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgdmFsdWUgIT09IG51bGwgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpO1xufVxuIl19
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhc29uaW5nLWFkYXB0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JlYXNvbmluZy1hZGFwdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFDTCw2QkFBNkIsRUFDN0IsdUJBQXVCLEVBQ3ZCLHFCQUFxQixFQUNyQixvQkFBb0IsR0FDckIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZELE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztBQUM1RCxNQUFNLG1DQUFtQyxHQUN2QyxtR0FBbUcsQ0FBQztBQUN0RyxNQUFNLDZCQUE2QixHQUFHLHFDQUFxQyxDQUFDO0FBUzVFLHNFQUFzRTtBQUN0RSxNQUFNLFVBQVUsdUJBQXVCLENBQ3JDLEtBQWEsRUFDYixJQUF1QztJQUV2QyxNQUFNLE9BQU8sR0FBRyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM1RSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNwQixNQUFNLENBQUMsS0FBSyxDQUFDLDBDQUEwQyxFQUFFO1lBQ3ZELEtBQUs7WUFDTCxNQUFNLEVBQUUsT0FBTyxDQUFDLFVBQVU7U0FDM0IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU87UUFDTCxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7UUFDbEIsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVO1FBQzlCLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztLQUN6QixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLDJCQUEyQixDQUFDLEtBS2pEO0lBQ0MsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxL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LEtBQUssRUFBRSxDQUFDO0FBQzVCLENBQUM7QUFFRCxTQUFTLHFCQUFxQixDQUM1QixJQUF1QztJQUV2QyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxFQUFFLENBQUM7UUFDbEYsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUNELE1BQU0sUUFBUSxHQUFHLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQztJQUM3QixPQUFPLFFBQVEsQ0FBQyxTQUFTLENBQUM7SUFDMUIsT0FBTyxRQUFRLENBQUMsZ0JBQWdCLENBQUM7SUFDakMsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmVhc29uaW5nLWVmZm9ydCBhZGFwdGF0aW9uIGZvciBnYXRld2F5IHJvdW5kIHRyaXBzLlxuICpcbiAqIFByb2FjdGl2ZWx5IHJlbWFwcyBjbGllbnQgZWZmb3J0cyBvbnRvIHRoZSBrbm93biBsYWRkZXIsIHRoZW4gb24gYSBzaW5nbGVcbiAqIHVuc3VwcG9ydGVkLXZhbHVlIDQwMCByZXNvbHZlcyB0aGUgcHJlZmVycmVkIHB1Ymxpc2hlZC1vci1sZWFybmVkIGxhZGRlclxuICogYW5kIHJldHJpZXMgb25jZS5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHtcbiAgbGVhcm5SZWFzb25pbmdMZXZlbHNGcm9tRXJyb3IsXG4gIG1vZGVsUmVhc29uaW5nTGV2ZWxzRm9yLFxuICBhZGFwdFJlcXVlc3RSZWFzb25pbmcsXG4gIHBhcnNlUmVhc29uaW5nTGV2ZWxzLFxufSBmcm9tIFwiQGRieC10b29scy9tb2RlbFwiO1xuaW1wb3J0IHsgaXNSZWNvcmQsIGxvZyB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJhcHBraXQvbW9kZWwtZ2F0ZXdheS9yZWFzb25pbmdcIik7XG5jb25zdCBJTlZBTElEX0VOQ1JZUFRFRF9SRUFTT05JTkdfUEFUVEVSTiA9XG4gIC9pbnZhbGlkIGVuY3J5cHRlZCByZWFzb25pbmd8aW52YWxpZF9lbmNyeXB0ZWRfY29udGVudHxlbmNyeXB0ZWQgY29udGVudCAuKyBjb3VsZCBub3QgYmUgdmVyaWZpZWQvaTtcbmNvbnN0IFJFQVNPTklOR19VTlNVUFBPUlRFRF9QQVRURVJOID0gL2RvZXMgbm90IHN1cHBvcnQgWydcIl1yZWFzb25pbmdbJ1wiXS9pO1xuXG4vKiogUmVzdWx0IG9mIHRoZSBmaXJzdCBwcm9hY3RpdmUgYWRhcHRhdGlvbiBwYXNzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZGFwdGVkSW5mZXJlbmNlQm9keSB7XG4gIHJlYWRvbmx5IGJvZHk6IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgcmVhZG9ubHkgd2lyZUVmZm9ydD86IHN0cmluZztcbiAgcmVhZG9ubHkgY2hhbmdlZDogYm9vbGVhbjtcbn1cblxuLyoqIEFkYXB0IGEgcmVxdWVzdCBib2R5IG9udG8gdGhlIGN1cnJlbnQga25vd24gbGFkZGVyIGZvciBgbW9kZWxgLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkYXB0SW5mZXJlbmNlUmVhc29uaW5nKFxuICBtb2RlbDogc3RyaW5nLFxuICBib2R5OiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4sXG4pOiBBZGFwdGVkSW5mZXJlbmNlQm9keSB7XG4gIGNvbnN0IGFkYXB0ZWQgPSBhZGFwdFJlcXVlc3RSZWFzb25pbmcoYm9keSwgbW9kZWxSZWFzb25pbmdMZXZlbHNGb3IobW9kZWwpKTtcbiAgaWYgKGFkYXB0ZWQuY2hhbmdlZCkge1xuICAgIGxvZ2dlci5kZWJ1ZyhcImFkYXB0ZWQgcmVhc29uaW5nIGVmZm9ydCBiZWZvcmUgdXBzdHJlYW1cIiwge1xuICAgICAgbW9kZWwsXG4gICAgICBlZmZvcnQ6IGFkYXB0ZWQud2lyZUVmZm9ydCxcbiAgICB9KTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGJvZHk6IGFkYXB0ZWQuYm9keSxcbiAgICB3aXJlRWZmb3J0OiBhZGFwdGVkLndpcmVFZmZvcnQsXG4gICAgY2hhbmdlZDogYWRhcHRlZC5jaGFuZ2VkLFxuICB9O1xufVxuXG4vKipcbiAqIE9uIGEgcmVhc29uaW5nLXJlbGF0ZWQgNDAwLCByZW1vdmUgaW52YWxpZCByZXBsYXkgc3RhdGUsIHJlbW92ZSB1bnN1cHBvcnRlZFxuICogcmVhc29uaW5nLCBvciByZXNvbHZlIHRoZSBwcmVmZXJyZWQgbGFkZGVyIGFuZCBwcm9kdWNlIGEgcmVtYXBwZWQgcmV0cnkgYm9keS5cbiAqIFJldHVybnMgYHVuZGVmaW5lZGAgd2hlbiBubyByZXRyeSBzaG91bGQgb2NjdXIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsZWFybkFuZEFkYXB0UmVhc29uaW5nUmV0cnkoaW5wdXQ6IHtcbiAgcmVhZG9ubHkgbW9kZWw6IHN0cmluZztcbiAgcmVhZG9ubHkgYm9keTogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuICByZWFkb25seSByZXNwb25zZTogUmVzcG9uc2U7XG4gIHJlYWRvbmx5IHByZXZpb3VzV2lyZUVmZm9ydD86IHN0cmluZztcbn0pOiBQcm9taXNlPFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB8IHVuZGVmaW5lZD4ge1xuICBpZiAoaW5wdXQucmVzcG9uc2Uub2sgfHwgaW5wdXQucmVzcG9uc2Uuc3RhdHVzICE9PSA0MDApIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgbGV0IGVycm9yQm9keTogdW5rbm93bjtcbiAgdHJ5IHtcbiAgICBlcnJvckJvZHkgPSBKU09OLnBhcnNlKGF3YWl0IGlucHV0LnJlc3BvbnNlLmNsb25lKCkudGV4dCgpKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IHNlcmlhbGl6ZWRFcnJvciA9IEpTT04uc3RyaW5naWZ5KGVycm9yQm9keSk7XG4gIGlmIChJTlZBTElEX0VOQ1JZUFRFRF9SRUFTT05JTkdfUEFUVEVSTi50ZXN0KHNlcmlhbGl6ZWRFcnJvcikpIHtcbiAgICBjb25zdCBzdHJpcHBlZCA9IHN0cmlwUmVhc29uaW5nSGlzdG9yeShpbnB1dC5ib2R5KTtcbiAgICBpZiAoIXN0cmlwcGVkKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGxvZ2dlci5pbmZvKFwicmV0cnlpbmcgd2l0aG91dCBpbnZhbGlkIGVuY3J5cHRlZCByZWFzb25pbmcgaGlzdG9yeVwiLCB7IG1vZGVsOiBpbnB1dC5tb2RlbCB9KTtcbiAgICByZXR1cm4gc3RyaXBwZWQ7XG4gIH1cblxuICBpZiAoUkVBU09OSU5HX1VOU1VQUE9SVEVEX1BBVFRFUk4udGVzdChzZXJpYWxpemVkRXJyb3IpKSB7XG4gICAgY29uc3Qgc3RyaXBwZWQgPSBzdHJpcFJlcXVlc3RSZWFzb25pbmcoaW5wdXQuYm9keSk7XG4gICAgaWYgKCFzdHJpcHBlZCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBsb2dnZXIuaW5mbyhcInJldHJ5aW5nIHdpdGhvdXQgdW5zdXBwb3J0ZWQgcmVhc29uaW5nXCIsIHsgbW9kZWw6IGlucHV0Lm1vZGVsIH0pO1xuICAgIHJldHVybiBzdHJpcHBlZDtcbiAgfVxuXG4gIGlmIChwYXJzZVJlYXNvbmluZ0xldmVscyhlcnJvckJvZHkpLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICBjb25zdCBsZXZlbHMgPSBhd2FpdCBsZWFyblJlYXNvbmluZ0xldmVsc0Zyb21FcnJvcihpbnB1dC5tb2RlbCwgZXJyb3JCb2R5KTtcbiAgbG9nZ2VyLmluZm8oXCJyZXNvbHZlZCByZWFzb25pbmcgbGV2ZWxzIGFmdGVyIHVwc3RyZWFtIGVycm9yXCIsIHtcbiAgICBtb2RlbDogaW5wdXQubW9kZWwsXG4gICAgbGV2ZWxzLFxuICB9KTtcblxuICBjb25zdCBhZGFwdGVkID0gYWRhcHRSZXF1ZXN0UmVhc29uaW5nKGlucHV0LmJvZHksIGxldmVscyk7XG4gIGlmIChhZGFwdGVkLndpcmVFZmZvcnQgPT09IHVuZGVmaW5lZCB8fCBhZGFwdGVkLndpcmVFZmZvcnQgPT09IGlucHV0LnByZXZpb3VzV2lyZUVmZm9ydCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBsb2dnZXIuaW5mbyhcInJldHJ5aW5nIHdpdGggYWRhcHRlZCByZWFzb25pbmcgZWZmb3J0XCIsIHtcbiAgICBtb2RlbDogaW5wdXQubW9kZWwsXG4gICAgZnJvbTogaW5wdXQucHJldmlvdXNXaXJlRWZmb3J0LFxuICAgIHRvOiBhZGFwdGVkLndpcmVFZmZvcnQsXG4gIH0pO1xuICByZXR1cm4gYWRhcHRlZC5ib2R5O1xufVxuXG5mdW5jdGlvbiBzdHJpcFJlYXNvbmluZ0hpc3RvcnkoXG4gIGJvZHk6IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHVua25vd24+Pixcbik6IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB8IHVuZGVmaW5lZCB7XG4gIGlmICghQXJyYXkuaXNBcnJheShib2R5LmlucHV0KSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgY29uc3QgaW5wdXQgPSBib2R5LmlucHV0LmZpbHRlcigoaXRlbSkgPT4gIWlzUmVjb3JkKGl0ZW0pIHx8IGl0ZW0udHlwZSAhPT0gXCJyZWFzb25pbmdcIik7XG4gIGlmIChpbnB1dC5sZW5ndGggPT09IGJvZHkuaW5wdXQubGVuZ3RoKSByZXR1cm4gdW5kZWZpbmVkO1xuICByZXR1cm4geyAuLi5ib2R5LCBpbnB1dCB9O1xufVxuXG5mdW5jdGlvbiBzdHJpcFJlcXVlc3RSZWFzb25pbmcoXG4gIGJvZHk6IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHVua25vd24+Pixcbik6IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB8IHVuZGVmaW5lZCB7XG4gIGlmICghT2JqZWN0Lmhhc093bihib2R5LCBcInJlYXNvbmluZ1wiKSAmJiAhT2JqZWN0Lmhhc093bihib2R5LCBcInJlYXNvbmluZ19lZmZvcnRcIikpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IHN0cmlwcGVkID0geyAuLi5ib2R5IH07XG4gIGRlbGV0ZSBzdHJpcHBlZC5yZWFzb25pbmc7XG4gIGRlbGV0ZSBzdHJpcHBlZC5yZWFzb25pbmdfZWZmb3J0O1xuICByZXR1cm4gc3RyaXBwZWQ7XG59XG4iXX0=
package/lib/src/routes.js CHANGED
@@ -6,6 +6,7 @@
6
6
  import { Readable } from "node:stream";
7
7
  import { pipeline } from "node:stream/promises";
8
8
  import { log, toError } from "@dbx-tools/shared-core";
9
+ import { AiDecideRouterError } from "./ai-decide.js";
9
10
  import { ModelGatewayError } from "./gateway.js";
10
11
  import { UnsupportedGatewayFeatureError } from "./router.js";
11
12
  import { SmartRouterError } from "./smart-router.js";
@@ -19,7 +20,7 @@ export async function sendModels(gateway, request, response) {
19
20
  const startedAt = Date.now();
20
21
  logger.debug("models request", requestContext(request));
21
22
  try {
22
- const payload = await gateway.models(request.header("originator"), optionalSearch(request.query.search));
23
+ const payload = await gateway.models(request.header("originator"), optionalSearch(request.query.search), optionalModelSource(request.query.model_source ?? request.query.modelSource), optionalBoolean(request.query.metadata, "metadata"));
23
24
  response.json(payload);
24
25
  logger.debug("models response", {
25
26
  ...requestContext(request),
@@ -107,6 +108,7 @@ export async function sendInference(gateway, protocol, request, response) {
107
108
  }
108
109
  function sendError(protocol, response, error) {
109
110
  const status = error instanceof ModelGatewayError ||
111
+ error instanceof AiDecideRouterError ||
110
112
  error instanceof SmartRouterError ||
111
113
  error instanceof UnsupportedGatewayFeatureError
112
114
  ? error.status
@@ -151,6 +153,20 @@ function optionalSearch(value) {
151
153
  }
152
154
  return value;
153
155
  }
156
+ function optionalModelSource(value) {
157
+ if (value === undefined)
158
+ return "foundation";
159
+ if (value === "foundation" || value === "custom" || value === "all")
160
+ return value;
161
+ throw new ModelGatewayError(400, "model_source must be foundation, custom, or all");
162
+ }
163
+ function optionalBoolean(value, name) {
164
+ if (value === undefined || value === "false")
165
+ return false;
166
+ if (value === "true")
167
+ return true;
168
+ throw new ModelGatewayError(400, `${name} must be true or false`);
169
+ }
154
170
  function requestContext(request) {
155
171
  return {
156
172
  method: request.method,
@@ -158,4 +174,4 @@ function requestContext(request) {
158
174
  requestId: request.header("x-request-id") ?? request.header("request-id"),
159
175
  };
160
176
  }
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JvdXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUl0RCxPQUFPLEVBQWdCLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQy9ELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVyRCxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLDJCQUEyQixDQUFDLENBQUM7QUFFdkQsMERBQTBEO0FBQzFELE1BQU0sVUFBVSxVQUFVLENBQUMsUUFBMEI7SUFDbkQsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQ2pDLENBQUM7QUFFRCwyREFBMkQ7QUFDM0QsTUFBTSxDQUFDLEtBQUssVUFBVSxVQUFVLENBQzlCLE9BQXFCLEVBQ3JCLE9BQXdCLEVBQ3hCLFFBQTBCO0lBRTFCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUM3QixNQUFNLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3hELElBQUksQ0FBQztRQUNILE1BQU0sT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLE1BQU0sQ0FDbEMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFDNUIsY0FBYyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQ3JDLENB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QUFDLE9BQXdCO0lBQzlDLE9BQU87UUFDTCxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07UUFDdEIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO1FBQ2xCLFNBQVMsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDO0tBQzFFLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBFeHByZXNzIGFkYXB0ZXJzIGZvciB0aGUgc2hhcmVkIG1vZGVsLWdhdGV3YXkgc2VydmljZS5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgUmVhZGFibGUgfSBmcm9tIFwibm9kZTpzdHJlYW1cIjtcbmltcG9ydCB7IHBpcGVsaW5lIH0gZnJvbSBcIm5vZGU6c3RyZWFtL3Byb21pc2VzXCI7XG5pbXBvcnQgeyBsb2csIHRvRXJyb3IgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHR5cGUgeyBDbGllbnRQcm90b2NvbCB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1tb2RlbC1nYXRld2F5XCI7XG5pbXBvcnQgdHlwZSBleHByZXNzIGZyb20gXCJleHByZXNzXCI7XG5cbmltcG9ydCB7IE1vZGVsR2F0ZXdheSwgTW9kZWxHYXRld2F5RXJyb3IgfSBmcm9tIFwiLi9nYXRld2F5LnRzXCI7XG5pbXBvcnQgeyBVbnN1cHBvcnRlZEdhdGV3YXlGZWF0dXJlRXJyb3IgfSBmcm9tIFwiLi9yb3V0ZXIudHNcIjtcbmltcG9ydCB7IFNtYXJ0Um91dGVyRXJyb3IgfSBmcm9tIFwiLi9zbWFydC1yb3V0ZXIudHNcIjtcblxuY29uc3QgbG9nZ2VyID0gbG9nLmxvZ2dlcihcImFwcGtpdC9tb2RlbC1nYXRld2F5L2h0dHBcIik7XG5cbi8qKiBTZW5kIHRoZSBsaWdodHdlaWdodCBjb21wYXRpYmlsaXR5IGhlYWx0aCByZXNwb25zZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZW5kSGVhbHRoKHJlc3BvbnNlOiBleHByZXNzLlJlc3BvbnNlKTogdm9pZCB7XG4gIHJlc3BvbnNlLmpzb24oeyByZWFkeTogdHJ1ZSB9KTtcbn1cblxuLyoqIFNlbmQgdGhlIGFjdGl2ZSBwcmluY2lwYWwncyBkeW5hbWljIG1vZGVsIGNhdGFsb2d1ZS4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZW5kTW9kZWxzKFxuICBnYXRld2F5OiBNb2RlbEdhdGV3YXksXG4gIHJlcXVlc3Q6IGV4cHJlc3MuUmVxdWVzdCxcbiAgcmVzcG9uc2U6IGV4cHJlc3MuUmVzcG9uc2UsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qgc3RhcnRlZEF0ID0gRGF0ZS5ub3coKTtcbiAgbG9nZ2VyLmRlYnVnKFwibW9kZWxzIHJlcXVlc3RcIiwgcmVxdWVzdENvbnRleHQocmVxdWVzdCkpO1xuICB0cnkge1xuICAgIGNvbnN0IHBheWxvYWQgPSBhd2FpdCBnYXRld2F5Lm1vZGVscyhcbiAgICAgIHJlcXVlc3QuaGVhZGVyKFwib3JpZ2luYXRvclwiKSxcbiAgICAgIG9wdGlvbmFsU2VhcmNoKHJlcXVlc3QucXVlcnkuc2VhcmNoKSxcbiAgICApO1xuICAgIHJlc3BvbnNlLmpzb24ocGF5bG9hZCk7XG4gICAgbG9nZ2VyLmRlYnVnKFwibW9kZWxzIHJlc3BvbnNlXCIsIHtcbiAgICAgIC4uLnJlcXVlc3RDb250ZXh0KHJlcXVlc3QpLFxuICAgICAgZWxhcHNlZE1zOiBEYXRlLm5vdygpIC0gc3RhcnRlZEF0LFxuICAgICAgc3RhdHVzOiByZXNwb25zZS5zdGF0dXNDb2RlLFxuICAgIH0pO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGxvZ2dlci5lcnJvcihcIm1vZGVscyByZXF1ZXN0IGZhaWxlZFwiLCB7XG4gICAgICAuLi5yZXF1ZXN0Q29udGV4dChyZXF1ZXN0KSxcbiAgICAgIGVsYXBzZWRNczogRGF0ZS5ub3coKSAtIHN0YXJ0ZWRBdCxcbiAgICAgIGVycm9yOiB0b0Vycm9yKGVycm9yKSxcbiAgICB9KTtcbiAgICBzZW5kRXJyb3IoXCJvcGVuYWktcmVzcG9uc2VzXCIsIHJlc3BvbnNlLCBlcnJvcik7XG4gIH1cbn1cblxuLyoqIEV4ZWN1dGUgYW5kIHN0cmVhbSBvbmUgbW9kZWwgcmVxdWVzdCB0aHJvdWdoIEV4cHJlc3Mgd2l0aCBjYW5jZWxsYXRpb24uICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2VuZEluZmVyZW5jZShcbiAgZ2F0ZXdheTogTW9kZWxHYXRld2F5LFxuICBwcm90b2NvbDogQ2xpZW50UHJvdG9jb2wsXG4gIHJlcXVlc3Q6IGV4cHJlc3MuUmVxdWVzdCxcbiAgcmVzcG9uc2U6IGV4cHJlc3MuUmVzcG9uc2UsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qgc3RhcnRlZEF0ID0gRGF0ZS5ub3coKTtcbiAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgY29uc3QgYWJvcnQgPSAoKSA9PiB7XG4gICAgaWYgKHJlc3BvbnNlLndyaXRhYmxlRW5kZWQpIHJldHVybjtcbiAgICBsb2dnZXIuZGVidWcoXCJjbGllbnQgZGlzY29ubmVjdGVkXCIsIHtcbiAgICAgIC4uLnJlcXVlc3RDb250ZXh0KHJlcXVlc3QpLFxuICAgICAgZWxhcHNlZE1zOiBEYXRlLm5vdygpIC0gc3RhcnRlZEF0LFxuICAgICAgcHJvdG9jb2wsXG4gICAgfSk7XG4gICAgY29udHJvbGxlci5hYm9ydChuZXcgRXJyb3IoXCJNb2RlbCBnYXRld2F5IGNsaWVudCBkaXNjb25uZWN0ZWRcIikpO1xuICB9O1xuICByZXF1ZXN0Lm9uY2UoXCJhYm9ydGVkXCIsIGFib3J0KTtcbiAgcmVzcG9uc2Uub25jZShcImNsb3NlXCIsIGFib3J0KTtcbiAgdHJ5IHtcbiAgICBjb25zdCBib2R5ID0gcmVjb3JkKHJlcXVlc3QuYm9keSk7XG4gICAgbG9nZ2VyLmRlYnVnKFwiaW5mZXJlbmNlIHJlcXVlc3RcIiwge1xuICAgICAgLi4ucmVxdWVzdENvbnRleHQocmVxdWVzdCksXG4gICAgICBtb2RlbDogdHlwZW9mIGJvZHkubW9kZWwgPT09IFwic3RyaW5nXCIgPyBib2R5Lm1vZGVsIDogdW5kZWZpbmVkLFxuICAgICAgcHJvdG9jb2wsXG4gICAgICBzdHJlYW06IGJvZHkuc3RyZWFtID09PSB0cnVlLFxuICAgIH0pO1xuICAgIGNvbnN0IHVwc3RyZWFtID0gYXdhaXQgZ2F0ZXdheS5pbmZlcmVuY2UoXG4gICAgICBwcm90b2NvbCxcbiAgICAgIGJvZHksXG4gICAgICByZXF1ZXN0SGVhZGVycyhyZXF1ZXN0KSxcbiAgICAgIGNvbnRyb2xsZXIuc2lnbmFsLFxuICAgICk7XG4gICAgcmVzcG9uc2Uuc3RhdHVzKHVwc3RyZWFtLnN0YXR1cyk7XG4gICAgdXBzdHJlYW0uaGVhZGVycy5mb3JFYWNoKCh2YWx1ZSwgbmFtZSkgPT4gcmVzcG9uc2Uuc2V0SGVhZGVyKG5hbWUsIHZhbHVlKSk7XG4gICAgaWYgKCF1cHN0cmVhbS5ib2R5KSB7XG4gICAgICByZXNwb25zZS5lbmQoKTtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhcImluZmVyZW5jZSByZXNwb25zZVwiLCB7XG4gICAgICAgIC4uLnJlcXVlc3RDb250ZXh0KHJlcXVlc3QpLFxuICAgICAgICBlbGFwc2VkTXM6IERhdGUubm93KCkgLSBzdGFydGVkQXQsXG4gICAgICAgIHByb3RvY29sLFxuICAgICAgICBzdGF0dXM6IHVwc3RyZWFtLnN0YXR1cyxcbiAgICAgICAgdXBzdHJlYW1Qcm90b2NvbDogdXBzdHJlYW0uaGVhZGVycy5nZXQoXCJ4LWRieC10b29scy11cHN0cmVhbVwiKSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhd2FpdCBwaXBlbGluZShSZWFkYWJsZS5mcm9tV2ViKHVwc3RyZWFtLmJvZHkgYXMgbmV2ZXIpLCByZXNwb25zZSk7XG4gICAgbG9nZ2VyLmRlYnVnKFwiaW5mZXJlbmNlIHN0cmVhbSBjb21wbGV0ZWRcIiwge1xuICAgICAgLi4ucmVxdWVzdENvbnRleHQocmVxdWVzdCksXG4gICAgICBlbGFwc2VkTXM6IERhdGUubm93KCkgLSBzdGFydGVkQXQsXG4gICAgICBwcm90b2NvbCxcbiAgICAgIHN0YXR1czogdXBzdHJlYW0uc3RhdHVzLFxuICAgICAgdXBzdHJlYW1Qcm90b2NvbDogdXBzdHJlYW0uaGVhZGVycy5nZXQoXCJ4LWRieC10b29scy11cHN0cmVhbVwiKSxcbiAgICB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoY29udHJvbGxlci5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgcmVzcG9uc2UuZGVzdHJveSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsb2dnZXIuZXJyb3IoXCJpbmZlcmVuY2UgcmVxdWVzdCBmYWlsZWRcIiwge1xuICAgICAgLi4ucmVxdWVzdENvbnRleHQocmVxdWVzdCksXG4gICAgICBlbGFwc2VkTXM6IERhdGUubm93KCkgLSBzdGFydGVkQXQsXG4gICAgICBlcnJvcjogdG9FcnJvcihlcnJvciksXG4gICAgICBwcm90b2NvbCxcbiAgICB9KTtcbiAgICBpZiAocmVzcG9uc2UuaGVhZGVyc1NlbnQpIHtcbiAgICAgIHJlc3BvbnNlLmRlc3Ryb3koZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yIDogdW5kZWZpbmVkKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc2VuZEVycm9yKHByb3RvY29sLCByZXNwb25zZSwgZXJyb3IpO1xuICB9IGZpbmFsbHkge1xuICAgIHJlcXVlc3Qub2ZmKFwiYWJvcnRlZFwiLCBhYm9ydCk7XG4gICAgcmVzcG9uc2Uub2ZmKFwiY2xvc2VcIiwgYWJvcnQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNlbmRFcnJvcihwcm90b2NvbDogQ2xpZW50UHJvdG9jb2wsIHJlc3BvbnNlOiBleHByZXNzLlJlc3BvbnNlLCBlcnJvcjogdW5rbm93bik6IHZvaWQge1xuICBjb25zdCBzdGF0dXMgPVxuICAgIGVycm9yIGluc3RhbmNlb2YgTW9kZWxHYXRld2F5RXJyb3IgfHxcbiAgICBlcnJvciBpbnN0YW5jZW9mIFNtYXJ0Um91dGVyRXJyb3IgfHxcbiAgICBlcnJvciBpbnN0YW5jZW9mIFVuc3VwcG9ydGVkR2F0ZXdheUZlYXR1cmVFcnJvclxuICAgICAgPyBlcnJvci5zdGF0dXNcbiAgICAgIDogNTAwO1xuICBjb25zdCBtZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBcIk1vZGVsIGdhdGV3YXkgcmVxdWVzdCBmYWlsZWRcIjtcbiAgaWYgKHByb3RvY29sID09PSBcImFudGhyb3BpYy1tZXNzYWdlc1wiKSB7XG4gICAgcmVzcG9uc2Uuc3RhdHVzKHN0YXR1cykuanNvbih7XG4gICAgICB0eXBlOiBcImVycm9yXCIsXG4gICAgICBlcnJvcjogeyB0eXBlOiBzdGF0dXMgPCA1MDAgPyBcImludmFsaWRfcmVxdWVzdF9lcnJvclwiIDogXCJhcGlfZXJyb3JcIiwgbWVzc2FnZSB9LFxuICAgIH0pO1xuICAgIHJldHVybjtcbiAgfVxuICByZXNwb25zZS5zdGF0dXMoc3RhdHVzKS5qc29uKHtcbiAgICBlcnJvcjoge1xuICAgICAgbWVzc2FnZSxcbiAgICAgIHR5cGU6IHN0YXR1cyA8IDUwMCA/IFwiaW52YWxpZF9yZXF1ZXN0X2Vycm9yXCIgOiBcImFwaV9lcnJvclwiLFxuICAgICAgY29kZTogc3RhdHVzLFxuICAgIH0sXG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZXF1ZXN0SGVhZGVycyhyZXF1ZXN0OiBleHByZXNzLlJlcXVlc3QpOiBIZWFkZXJzIHtcbiAgY29uc3QgaGVhZGVycyA9IG5ldyBIZWFkZXJzKCk7XG4gIGZvciAoY29uc3QgW25hbWUsIHJhd10gb2YgT2JqZWN0LmVudHJpZXMocmVxdWVzdC5oZWFkZXJzKSkge1xuICAgIGlmICh0eXBlb2YgcmF3ID09PSBcInN0cmluZ1wiKSBoZWFkZXJzLnNldChuYW1lLCByYXcpO1xuICAgIGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocmF3KSkgaGVhZGVycy5zZXQobmFtZSwgcmF3LmpvaW4oXCIsIFwiKSk7XG4gIH1cbiAgcmV0dXJuIGhlYWRlcnM7XG59XG5cbmZ1bmN0aW9uIHJlY29yZCh2YWx1ZTogdW5rbm93bik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgaWYgKHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIH1cbiAgdGhyb3cgbmV3IE1vZGVsR2F0ZXdheUVycm9yKDQwMCwgXCJSZXF1ZXN0IGJvZHkgbXVzdCBiZSBhIEpTT04gb2JqZWN0XCIpO1xufVxuXG5mdW5jdGlvbiBvcHRpb25hbFNlYXJjaCh2YWx1ZTogdW5rbm93bik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gdW5kZWZpbmVkO1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSBcInN0cmluZ1wiKSB7XG4gICAgdGhyb3cgbmV3IE1vZGVsR2F0ZXdheUVycm9yKDQwMCwgXCJzZWFyY2ggbXVzdCBiZSBhIHN0cmluZ1wiKTtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5cbmZ1bmN0aW9uIHJlcXVlc3RDb250ZXh0KHJlcXVlc3Q6IGV4cHJlc3MuUmVxdWVzdCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgcmV0dXJuIHtcbiAgICBtZXRob2Q6IHJlcXVlc3QubWV0aG9kLFxuICAgIHBhdGg6IHJlcXVlc3QucGF0aCxcbiAgICByZXF1ZXN0SWQ6IHJlcXVlc3QuaGVhZGVyKFwieC1yZXF1ZXN0LWlkXCIpID8/IHJlcXVlc3QuaGVhZGVyKFwicmVxdWVzdC1pZFwiKSxcbiAgfTtcbn1cbiJdfQ==
177
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JvdXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUl0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQWdCLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQy9ELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVyRCxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLDJCQUEyQixDQUFDLENBQUM7QUFFdkQsMERBQTBEO0FBQzFELE1BQU0sVUFBVSxVQUFVLENBQUMsUUFBMEI7SUFDbkQsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQ2pDLENBQUM7QUFFRCwyREFBMkQ7QUFDM0QsTUFBTSxDQUFDLEtBQUssVUFBVSxVQUFVLENBQzlCLE9BQXFCLEVBQ3JCLE9BQXdCLEVBQ3hCLFFBQTBCO0lBRTFCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUM3QixNQUFNLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3hELElBQUksQ0FBQztRQUNILE1BQU0sT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLE1BQU0sQ0FDbEMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFDNUIsY0FB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Z2F0ZXdheSBzZXJ2aWNlLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBSZWFkYWJsZSB9IGZyb20gXCJub2RlOnN0cmVhbVwiO1xuaW1wb3J0IHsgcGlwZWxpbmUgfSBmcm9tIFwibm9kZTpzdHJlYW0vcHJvbWlzZXNcIjtcbmltcG9ydCB7IGxvZywgdG9FcnJvciB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgdHlwZSB7IENsaWVudFByb3RvY29sIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLW1vZGVsLWdhdGV3YXlcIjtcbmltcG9ydCB0eXBlIGV4cHJlc3MgZnJvbSBcImV4cHJlc3NcIjtcblxuaW1wb3J0IHsgQWlEZWNpZGVSb3V0ZXJFcnJvciB9IGZyb20gXCIuL2FpLWRlY2lkZS50c1wiO1xuaW1wb3J0IHsgTW9kZWxHYXRld2F5LCBNb2RlbEdhdGV3YXlFcnJvciB9IGZyb20gXCIuL2dhdGV3YXkudHNcIjtcbmltcG9ydCB7IFVuc3VwcG9ydGVkR2F0ZXdheUZlYXR1cmVFcnJvciB9IGZyb20gXCIuL3JvdXRlci50c1wiO1xuaW1wb3J0IHsgU21hcnRSb3V0ZXJFcnJvciB9IGZyb20gXCIuL3NtYXJ0LXJvdXRlci50c1wiO1xuXG5jb25zdCBsb2dnZXIgPSBsb2cubG9nZ2VyKFwiYXBwa2l0L21vZGVsLWdhdGV3YXkvaHR0cFwiKTtcblxuLyoqIFNlbmQgdGhlIGxpZ2h0d2VpZ2h0IGNvbXBhdGliaWxpdHkgaGVhbHRoIHJlc3BvbnNlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlbmRIZWFsdGgocmVzcG9uc2U6IGV4cHJlc3MuUmVzcG9uc2UpOiB2b2lkIHtcbiAgcmVzcG9uc2UuanNvbih7IHJlYWR5OiB0cnVlIH0pO1xufVxuXG4vKiogU2VuZCB0aGUgYWN0aXZlIHByaW5jaXBhbCdzIGR5bmFtaWMgbW9kZWwgY2F0YWxvZ3VlLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlbmRNb2RlbHMoXG4gIGdhdGV3YXk6IE1vZGVsR2F0ZXdheSxcbiAgcmVxdWVzdDogZXhwcmVzcy5SZXF1ZXN0LFxuICByZXNwb25zZTogZXhwcmVzcy5SZXNwb25zZSxcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBzdGFydGVkQXQgPSBEYXRlLm5vdygpO1xuICBsb2dnZXIuZGVidWcoXCJtb2RlbHMgcmVxdWVzdFwiLCByZXF1ZXN0Q29udGV4dChyZXF1ZXN0KSk7XG4gIHRyeSB7XG4gICAgY29uc3QgcGF5bG9hZCA9IGF3YWl0IGdhdGV3YXkubW9kZWxzKFxuICAgICAgcmVxdWVzdC5oZWFkZXIoXCJvcmlnaW5hdG9yXCIpLFxuICAgICAgb3B0aW9uYWxTZWFyY2gocmVxdWVzdC5xdWVyeS5zZWFyY2gpLFxuICAgICAgb3B0aW9uYWxNb2RlbFNvdXJjZShyZXF1ZXN0LnF1ZXJ5Lm1vZGVsX3NvdXJjZSA/PyByZXF1ZXN0LnF1ZXJ5Lm1vZGVsU291cmNlKSxcbiAgICAgIG9wdGlvbmFsQm9vbGVhbihyZXF1ZXN0LnF1ZXJ5Lm1ldGFkYXRhLCBcIm1ldGFkYXRhXCIpLFxuICAgICk7XG4gICAgcmVzcG9uc2UuanNvbihwYXlsb2FkKTtcbiAgICBsb2dnZXIuZGVidWcoXCJtb2RlbHMgcmVzcG9uc2VcIiwge1xuICAgICAgLi4ucmVxdWVzdENvbnRleHQocmVxdWVzdCksXG4gICAgICBlbGFwc2VkTXM6IERhdGUubm93KCkgLSBzdGFydGVkQXQsXG4gICAgICBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1c0NvZGUsXG4gICAgfSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgbG9nZ2VyLmVycm9yKFwibW9kZWxzIHJlcXVlc3QgZmFpbGVkXCIsIHtcbiAgICAgIC4uLnJlcXVlc3RDb250ZXh0KHJlcXVlc3QpLFxuICAgICAgZWxhcHNlZE1zOiBEYXRlLm5vdygpIC0gc3RhcnRlZEF0LFxuICAgICAgZXJyb3I6IHRvRXJyb3IoZXJyb3IpLFxuICAgIH0pO1xuICAgIHNlbmRFcnJvcihcIm9wZW5haS1yZXNwb25zZXNcIiwgcmVzcG9uc2UsIGVycm9yKTtcbiAgfVxufVxuXG4vKiogRXhlY3V0ZSBhbmQgc3RyZWFtIG9uZSBtb2RlbCByZXF1ZXN0IHRocm91Z2ggRXhwcmVzcyB3aXRoIGNhbmNlbGxhdGlvbi4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZW5kSW5mZXJlbmNlKFxuICBnYXRld2F5OiBNb2RlbEdhdGV3YXksXG4gIHByb3RvY29sOiBDbGllbnRQcm90b2NvbCxcbiAgcmVxdWVzdDogZXhwcmVzcy5SZXF1ZXN0LFxuICByZXNwb25zZTogZXhwcmVzcy5SZXNwb25zZSxcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBzdGFydGVkQXQgPSBEYXRlLm5vdygpO1xuICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICBjb25zdCBhYm9ydCA9ICgpID0+IHtcbiAgICBpZiAocmVzcG9uc2Uud3JpdGFibGVFbmRlZCkgcmV0dXJuO1xuICAgIGxvZ2dlci5kZWJ1ZyhcImNsaWVudCBkaXNjb25uZWN0ZWRcIiwge1xuICAgICAgLi4ucmVxdWVzdENvbnRleHQocmVxdWVzdCksXG4gICAgICBlbGFwc2VkTXM6IERhdGUubm93KCkgLSBzdGFydGVkQXQsXG4gICAgICBwcm90b2NvbCxcbiAgICB9KTtcbiAgICBjb250cm9sbGVyLmFib3J0KG5ldyBFcnJvcihcIk1vZGVsIGdhdGV3YXkgY2xpZW50IGRpc2Nvbm5lY3RlZFwiKSk7XG4gIH07XG4gIHJlcXVlc3Qub25jZShcImFib3J0ZWRcIiwgYWJvcnQpO1xuICByZXNwb25zZS5vbmNlKFwiY2xvc2VcIiwgYWJvcnQpO1xuICB0cnkge1xuICAgIGNvbnN0IGJvZHkgPSByZWNvcmQocmVxdWVzdC5ib2R5KTtcbiAgICBsb2dnZXIuZGVidWcoXCJpbmZlcmVuY2UgcmVxdWVzdFwiLCB7XG4gICAgICAuLi5yZXF1ZXN0Q29udGV4dChyZXF1ZXN0KSxcbiAgICAgIG1vZGVsOiB0eXBlb2YgYm9keS5tb2RlbCA9PT0gXCJzdHJpbmdcIiA/IGJvZHkubW9kZWwgOiB1bmRlZmluZWQsXG4gICAgICBwcm90b2NvbCxcbiAgICAgIHN0cmVhbTogYm9keS5zdHJlYW0gPT09IHRydWUsXG4gICAgfSk7XG4gICAgY29uc3QgdXBzdHJlYW0gPSBhd2FpdCBnYXRld2F5LmluZmVyZW5jZShcbiAgICAgIHByb3RvY29sLFxuICAgICAgYm9keSxcbiAgICAgIHJlcXVlc3RIZWFkZXJzKHJlcXVlc3QpLFxuICAgICAgY29udHJvbGxlci5zaWduYWwsXG4gICAgKTtcbiAgICByZXNwb25zZS5zdGF0dXModXBzdHJlYW0uc3RhdHVzKTtcbiAgICB1cHN0cmVhbS5oZWFkZXJzLmZvckVhY2goKHZhbHVlLCBuYW1lKSA9PiByZXNwb25zZS5zZXRIZWFkZXIobmFtZSwgdmFsdWUpKTtcbiAgICBpZiAoIXVwc3RyZWFtLmJvZHkpIHtcbiAgICAgIHJlc3BvbnNlLmVuZCgpO1xuICAgICAgbG9nZ2VyLmRlYnVnKFwiaW5mZXJlbmNlIHJlc3BvbnNlXCIsIHtcbiAgICAgICAgLi4ucmVxdWVzdENvbnRleHQocmVxdWVzdCksXG4gICAgICAgIGVsYXBzZWRNczogRGF0ZS5ub3coKSAtIHN0YXJ0ZWRBdCxcbiAgICAgICAgcHJvdG9jb2wsXG4gICAgICAgIHN0YXR1czogdXBzdHJlYW0uc3RhdHVzLFxuICAgICAgICB1cHN0cmVhbVByb3RvY29sOiB1cHN0cmVhbS5oZWFkZXJzLmdldChcIngtZGJ4LXRvb2xzLXVwc3RyZWFtXCIpLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGF3YWl0IHBpcGVsaW5lKFJlYWRhYmxlLmZyb21XZWIodXBzdHJlYW0uYm9keSBhcyBuZXZlciksIHJlc3BvbnNlKTtcbiAgICBsb2dnZXIuZGVidWcoXCJpbmZlcmVuY2Ugc3RyZWFtIGNvbXBsZXRlZFwiLCB7XG4gICAgICAuLi5yZXF1ZXN0Q29udGV4dChyZXF1ZXN0KSxcbiAgICAgIGVsYXBzZWRNczogRGF0ZS5ub3coKSAtIHN0YXJ0ZWRBdCxcbiAgICAgIHByb3RvY29sLFxuICAgICAgc3RhdHVzOiB1cHN0cmVhbS5zdGF0dXMsXG4gICAgICB1cHN0cmVhbVByb3RvY29sOiB1cHN0cmVhbS5oZWFkZXJzLmdldChcIngtZGJ4LXRvb2xzLXVwc3RyZWFtXCIpLFxuICAgIH0pO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmIChjb250cm9sbGVyLnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICByZXNwb25zZS5kZXN0cm95KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxvZ2dlci5lcnJvcihcImluZmVyZW5jZSByZXF1ZXN0IGZhaWxlZFwiLCB7XG4gICAgICAuLi5yZXF1ZXN0Q29udGV4dChyZXF1ZXN0KSxcbiAgICAgIGVsYXBzZWRNczogRGF0ZS5ub3coKSAtIHN0YXJ0ZWRBdCxcbiAgICAgIGVycm9yOiB0b0Vycm9yKGVycm9yKSxcbiAgICAgIHByb3RvY29sLFxuICAgIH0pO1xuICAgIGlmIChyZXNwb25zZS5oZWFkZXJzU2VudCkge1xuICAgICAgcmVzcG9uc2UuZGVzdHJveShlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiB1bmRlZmluZWQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzZW5kRXJyb3IocHJvdG9jb2wsIHJlc3BvbnNlLCBlcnJvcik7XG4gIH0gZmluYWxseSB7XG4gICAgcmVxdWVzdC5vZmYoXCJhYm9ydGVkXCIsIGFib3J0KTtcbiAgICByZXNwb25zZS5vZmYoXCJjbG9zZVwiLCBhYm9ydCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gc2VuZEVycm9yKHByb3RvY29sOiBDbGllbnRQcm90b2NvbCwgcmVzcG9uc2U6IGV4cHJlc3MuUmVzcG9uc2UsIGVycm9yOiB1bmtub3duKTogdm9pZCB7XG4gIGNvbnN0IHN0YXR1cyA9XG4gICAgZXJyb3IgaW5zdGFuY2VvZiBNb2RlbEdhdGV3YXlFcnJvciB8fFxuICAgIGVycm9yIGluc3RhbmNlb2YgQWlEZWNpZGVSb3V0ZXJFcnJvciB8fFxuICAgIGVycm9yIGluc3RhbmNlb2YgU21hcnRSb3V0ZXJFcnJvciB8fFxuICAgIGVycm9yIGluc3RhbmNlb2YgVW5zdXBwb3J0ZWRHYXRld2F5RmVhdHVyZUVycm9yXG4gICAgICA/IGVycm9yLnN0YXR1c1xuICAgICAgOiA1MDA7XG4gIGNvbnN0IG1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFwiTW9kZWwgZ2F0ZXdheSByZXF1ZXN0IGZhaWxlZFwiO1xuICBpZiAocHJvdG9jb2wgPT09IFwiYW50aHJvcGljLW1lc3NhZ2VzXCIpIHtcbiAgICByZXNwb25zZS5zdGF0dXMoc3RhdHVzKS5qc29uKHtcbiAgICAgIHR5cGU6IFwiZXJyb3JcIixcbiAgICAgIGVycm9yOiB7IHR5cGU6IHN0YXR1cyA8IDUwMCA/IFwiaW52YWxpZF9yZXF1ZXN0X2Vycm9yXCIgOiBcImFwaV9lcnJvclwiLCBtZXNzYWdlIH0sXG4gICAgfSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIHJlc3BvbnNlLnN0YXR1cyhzdGF0dXMpLmpzb24oe1xuICAgIGVycm9yOiB7XG4gICAgICBtZXNzYWdlLFxuICAgICAgdHlwZTogc3RhdHVzIDwgNTAwID8gXCJpbnZhbGlkX3JlcXVlc3RfZXJyb3JcIiA6IFwiYXBpX2Vycm9yXCIsXG4gICAgICBjb2RlOiBzdGF0dXMsXG4gICAgfSxcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlcXVlc3RIZWFkZXJzKHJlcXVlc3Q6IGV4cHJlc3MuUmVxdWVzdCk6IEhlYWRlcnMge1xuICBjb25zdCBoZWFkZXJzID0gbmV3IEhlYWRlcnMoKTtcbiAgZm9yIChjb25zdCBbbmFtZSwgcmF3XSBvZiBPYmplY3QuZW50cmllcyhyZXF1ZXN0LmhlYWRlcnMpKSB7XG4gICAgaWYgKHR5cGVvZiByYXcgPT09IFwic3RyaW5nXCIpIGhlYWRlcnMuc2V0KG5hbWUsIHJhdyk7XG4gICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShyYXcpKSBoZWFkZXJzLnNldChuYW1lLCByYXcuam9pbihcIiwgXCIpKTtcbiAgfVxuICByZXR1cm4gaGVhZGVycztcbn1cblxuZnVuY3Rpb24gcmVjb3JkKHZhbHVlOiB1bmtub3duKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICBpZiAodmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgfVxuICB0aHJvdyBuZXcgTW9kZWxHYXRld2F5RXJyb3IoNDAwLCBcIlJlcXVlc3QgYm9keSBtdXN0IGJlIGEgSlNPTiBvYmplY3RcIik7XG59XG5cbmZ1bmN0aW9uIG9wdGlvbmFsU2VhcmNoKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiB1bmRlZmluZWQ7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09IFwic3RyaW5nXCIpIHtcbiAgICB0aHJvdyBuZXcgTW9kZWxHYXRld2F5RXJyb3IoNDAwLCBcInNlYXJjaCBtdXN0IGJlIGEgc3RyaW5nXCIpO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZnVuY3Rpb24gb3B0aW9uYWxNb2RlbFNvdXJjZSh2YWx1ZTogdW5rbm93bik6IFwiZm91bmRhdGlvblwiIHwgXCJjdXN0b21cIiB8IFwiYWxsXCIge1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuIFwiZm91bmRhdGlvblwiO1xuICBpZiAodmFsdWUgPT09IFwiZm91bmRhdGlvblwiIHx8IHZhbHVlID09PSBcImN1c3RvbVwiIHx8IHZhbHVlID09PSBcImFsbFwiKSByZXR1cm4gdmFsdWU7XG4gIHRocm93IG5ldyBNb2RlbEdhdGV3YXlFcnJvcig0MDAsIFwibW9kZWxfc291cmNlIG11c3QgYmUgZm91bmRhdGlvbiwgY3VzdG9tLCBvciBhbGxcIik7XG59XG5cbmZ1bmN0aW9uIG9wdGlvbmFsQm9vbGVhbih2YWx1ZTogdW5rbm93biwgbmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBcImZhbHNlXCIpIHJldHVybiBmYWxzZTtcbiAgaWYgKHZhbHVlID09PSBcInRydWVcIikgcmV0dXJuIHRydWU7XG4gIHRocm93IG5ldyBNb2RlbEdhdGV3YXlFcnJvcig0MDAsIGAke25hbWV9IG11c3QgYmUgdHJ1ZSBvciBmYWxzZWApO1xufVxuXG5mdW5jdGlvbiByZXF1ZXN0Q29udGV4dChyZXF1ZXN0OiBleHByZXNzLlJlcXVlc3QpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIHJldHVybiB7XG4gICAgbWV0aG9kOiByZXF1ZXN0Lm1ldGhvZCxcbiAgICBwYXRoOiByZXF1ZXN0LnBhdGgsXG4gICAgcmVxdWVzdElkOiByZXF1ZXN0LmhlYWRlcihcIngtcmVxdWVzdC1pZFwiKSA/PyByZXF1ZXN0LmhlYWRlcihcInJlcXVlc3QtaWRcIiksXG4gIH07XG59XG4iXX0=
@@ -6,6 +6,7 @@
6
6
  import { type WorkspaceClient } from "@databricks/appkit";
7
7
  import { type ClientProtocol, type ModelTarget, type RequestedFeatures, type SmartRouterHarness, type SmartRouterObservation, type SmartRouterRequest } from "@dbx-tools/shared-model-gateway";
8
8
  import { z } from "zod";
9
+ import { type NormalizedModelContext } from "./model-context.ts";
9
10
  /** Runtime settings for Smart Router. */
10
11
  export interface SmartRouterSettings {
11
12
  readonly contextTokenBudget: number;
@@ -55,11 +56,7 @@ export interface SmartRouterResult {
55
56
  readonly target: ModelTarget;
56
57
  }
57
58
  /** Bounded task context extracted from an arbitrary supported input shape. */
58
- export interface SmartRouterContext {
59
- readonly continuation: boolean;
60
- readonly logicalTurn: string;
61
- readonly task: string;
62
- }
59
+ export type SmartRouterContext = NormalizedModelContext;
63
60
  /** Error carrying an HTTP status for Smart Router validation or availability failures. */
64
61
  export declare class SmartRouterError extends Error {
65
62
  readonly status: number;
@@ -128,9 +125,9 @@ export declare class SmartRouterContextBuilder {
128
125
  private readonly tokenBudget;
129
126
  constructor(tokenBudget?: number);
130
127
  /** Return only the bounded task prompt required by routes:select. */
131
- build(input: unknown): string;
128
+ build(input: unknown): Promise<string>;
132
129
  /** Return bounded task text plus logical-turn metadata used for pinning. */
133
- analyze(input: unknown): SmartRouterContext;
130
+ analyze(input: unknown): Promise<SmartRouterContext>;
134
131
  }
135
132
  /** Smart Router orchestration shared by Responses, Chat Completions, and Messages. */
136
133
  export declare class SmartModelRouter {