experimental-agent 0.8.0-alpha.2 → 0.8.0

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.
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  agent
3
- } from "./chunk-EH4L2CPW.mjs";
3
+ } from "./chunk-HVZTAMAX.mjs";
4
4
  import "./chunk-C4VSUEY2.mjs";
5
5
  import "./chunk-CS2SEUAA.mjs";
6
6
  import "./chunk-MSWINCCM.mjs";
@@ -40,6 +40,9 @@ function mergeFrameworkOptions(base, overlay) {
40
40
  merged.skills = [...base.skills, ...overlay.skills];
41
41
  }
42
42
  }
43
+ if (overlay.tools !== void 0) {
44
+ merged.tools = { ...base.tools, ...overlay.tools };
45
+ }
43
46
  return merged;
44
47
  }
45
48
 
@@ -60,8 +63,33 @@ async function resolveFrameworkAgent(opts) {
60
63
  resolvedAgentCache.set(cacheKey, instance);
61
64
  return instance;
62
65
  }
66
+ async function resolveToolImports(loaders) {
67
+ const resolved = await Promise.all(
68
+ Object.entries(loaders).map(async ([toolName, load]) => {
69
+ const mod = await load();
70
+ if (!mod.default) {
71
+ throw new Error(
72
+ `Tool "${toolName}" module does not have a default export.
73
+
74
+ hint: tools/${toolName}.ts (or tools/${toolName}/index.ts) must export a default tool.
75
+
76
+ import { tool } from "ai";
77
+ export default tool({ ... });
78
+ `
79
+ );
80
+ }
81
+ return [toolName, mod.default];
82
+ })
83
+ );
84
+ return Object.fromEntries(resolved);
85
+ }
63
86
  async function resolveEntry(opts) {
64
87
  const { name, entry } = opts;
88
+ const config = { ...entry.config };
89
+ const toolLoaders = entry.imports?.tools;
90
+ if (toolLoaders && Object.keys(toolLoaders).length > 0) {
91
+ config.tools = await resolveToolImports(toolLoaders);
92
+ }
65
93
  if (typeof entry.import === "function") {
66
94
  const mod = await entry.import();
67
95
  if (!mod.default) {
@@ -76,14 +104,12 @@ hint: agents/${name}/agent.ts must export a default agent instance.
76
104
  );
77
105
  }
78
106
  const imported = mod.default;
79
- if (hasConfig(entry.config)) {
80
- return imported.extend(
81
- (base) => mergeFrameworkOptions(base, entry.config)
82
- );
107
+ if (hasConfig(config)) {
108
+ return agent(name, mergeFrameworkOptions(imported.options, config));
83
109
  }
84
110
  return imported;
85
111
  }
86
- return agent(name, entry.config);
112
+ return agent(name, config);
87
113
  }
88
114
  function hasConfig(config) {
89
115
  return Object.keys(config).length > 0;
@@ -104,4 +130,4 @@ var runtime = {
104
130
  export {
105
131
  runtime
106
132
  };
107
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2ZyYW1ld29yay1ydW50aW1lL21lcmdlLW9wdGlvbnMudHMiLCAiLi4vc3JjL2ZyYW1ld29yay1ydW50aW1lL3Jlc29sdmUudHMiLCAiLi4vc3JjL2ZyYW1ld29yay1ydW50aW1lL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgdHlwZSB7IEFnZW50T3B0aW9ucyB9IGZyb20gXCIuLi9hZ2VudC9jbGllbnRcIjtcbmltcG9ydCB0eXBlIHsgRnNBZ2VudENvbmZpZyB9IGZyb20gXCIuLi9mcmFtZXdvcmstcnVudGltZS9yZXNvbHZlXCI7XG5cbi8qKlxuICogTWVyZ2UgZnMtc2Nhbm5lZCBjb25maWcgb24gdG9wIG9mIHRoZSBhZ2VudC50cyBiYXNlIGNvbmZpZy5cbiAqIFNraWxscyBhcmUgYXBwZW5kZWQuIFN5c3RlbSBwcm9tcHRzIGFyZSBjb25jYXRlbmF0ZWQgKGFycmF5cykuXG4gKiBUaGUgYmFzZSBvcHRpb25zIG1heSBjb250YWluIFJlc29sdmFibGUgdmFsdWVzIChmdW5jdGlvbnMpOyB3aGVuXG4gKiB0aGUgb3ZlcmxheSBoYXMgYSBzdGF0aWMgdmFsdWUgd2Ugd3JhcCB0aGUgYmFzZSByZXNvbHZhYmxlIHNvIHRoZVxuICogZnMgdmFsdWVzIGdldCBhcHBlbmRlZCBhdCByZXNvbHZlIHRpbWUuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlRnJhbWV3b3JrT3B0aW9ucyhcbiAgYmFzZTogQWdlbnRPcHRpb25zLFxuICBvdmVybGF5OiBGc0FnZW50Q29uZmlnXG4pOiBBZ2VudE9wdGlvbnMge1xuICBjb25zdCBtZXJnZWQ6IEFnZW50T3B0aW9ucyA9IHsgLi4uYmFzZSB9O1xuXG4gIGlmIChvdmVybGF5LnN5c3RlbSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKGJhc2Uuc3lzdGVtID09PSB1bmRlZmluZWQpIHtcbiAgICAgIG1lcmdlZC5zeXN0ZW0gPSBvdmVybGF5LnN5c3RlbTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBiYXNlLnN5c3RlbSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICBjb25zdCBiYXNlRm4gPSBiYXNlLnN5c3RlbTtcbiAgICAgIG1lcmdlZC5zeXN0ZW0gPSBhc3luYyAoYXJncykgPT4ge1xuICAgICAgICBjb25zdCByZXNvbHZlZCA9IGF3YWl0IGJhc2VGbihhcmdzKTtcbiAgICAgICAgaWYgKHJlc29sdmVkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXR1cm4gb3ZlcmxheS5zeXN0ZW07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYmFzZUFyciA9IEFycmF5LmlzQXJyYXkocmVzb2x2ZWQpID8gcmVzb2x2ZWQgOiBbcmVzb2x2ZWRdO1xuICAgICAgICByZXR1cm4gWy4uLmJhc2VBcnIsIG92ZXJsYXkuc3lzdGVtIV07XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBiYXNlQXJyID0gQXJyYXkuaXNBcnJheShiYXNlLnN5c3RlbSkgPyBiYXNlLnN5c3RlbSA6IFtiYXNlLnN5c3RlbV07XG4gICAgICBtZXJnZWQuc3lzdGVtID0gWy4uLmJhc2VBcnIsIG92ZXJsYXkuc3lzdGVtXTtcbiAgICB9XG4gIH1cblxuICBpZiAob3ZlcmxheS5za2lsbHMgIT09IHVuZGVmaW5lZCkge1xuICAgIGlmIChiYXNlLnNraWxscyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBtZXJnZWQuc2tpbGxzID0gb3ZlcmxheS5za2lsbHM7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgYmFzZS5za2lsbHMgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgY29uc3QgYmFzZUZuID0gYmFzZS5za2lsbHM7XG4gICAgICBtZXJnZWQuc2tpbGxzID0gYXN5bmMgKGFyZ3MpID0+IHtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWQgPSBhd2FpdCBiYXNlRm4oYXJncyk7XG4gICAgICAgIHJldHVybiBbLi4uKHJlc29sdmVkID8/IFtdKSwgLi4ub3ZlcmxheS5za2lsbHMhXTtcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIG1lcmdlZC5za2lsbHMgPSBbLi4uYmFzZS5za2lsbHMsIC4uLm92ZXJsYXkuc2tpbGxzXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWVyZ2VkO1xufVxuIiwgImltcG9ydCB7IHR5cGUgQW55QWdlbnQsIGFnZW50IGFzIGNyZWF0ZUFnZW50IH0gZnJvbSBcIi4uL2FnZW50L2NsaWVudFwiO1xuaW1wb3J0IHR5cGUgeyBTa2lsbElucHV0IH0gZnJvbSBcIi4uL3NraWxscy90eXBlc1wiO1xuaW1wb3J0IHsgbWVyZ2VGcmFtZXdvcmtPcHRpb25zIH0gZnJvbSBcIi4vbWVyZ2Utb3B0aW9uc1wiO1xuXG4vKipcbiAqIFRoZSBzdWJzZXQgb2YgQWdlbnRPcHRpb25zIHRoYXQgY2FuIGNvbWUgZnJvbSB0aGUgZmlsZXN5c3RlbSBzY2FubmVyLlxuICogQWx3YXlzIHBsYWluIHZhbHVlcyBcdTIwMTQgbmV2ZXIgUmVzb2x2YWJsZSBmdW5jdGlvbnMuXG4gKi9cbmV4cG9ydCB0eXBlIEZzQWdlbnRDb25maWcgPSB7XG4gIHN5c3RlbT86IHN0cmluZztcbiAgc2tpbGxzPzogU2tpbGxJbnB1dFtdO1xufTtcblxuLyoqXG4gKiBBIHNpbmdsZSBlbnRyeSBpbiB0aGUgZ2VuZXJhdGVkIGFnZW50IHJlZ2lzdHJ5LlxuICogQ29udGFpbnMgdGhlIGZpbGVzeXN0ZW0tc2Nhbm5lZCBjb25maWcgYW5kIGFuIG9wdGlvbmFsIGR5bmFtaWMgaW1wb3J0XG4gKiBmb3IgYWdlbnRzIHRoYXQgaGF2ZSBhbiBgYWdlbnQudHNgIG1vZHVsZS5cbiAqL1xuZXhwb3J0IHR5cGUgQWdlbnRSZWdpc3RyeUVudHJ5ID0ge1xuICBjb25maWc6IEZzQWdlbnRDb25maWc7XG4gIGltcG9ydD86ICgpID0+IFByb21pc2U8eyBkZWZhdWx0PzogdW5rbm93biB9Pjtcbn07XG5cbi8qKlxuICogTWFwIG9mIGFnZW50IG5hbWUgdG8gcmVnaXN0cnkgZW50cnksIHByb2R1Y2VkIGJ5IHRoZSBnZW5lcmF0ZWRcbiAqIGBfcmVnaXN0cnkudHNgIGZpbGUgYW5kIGNvbnN1bWVkIGJ5IHtAbGluayBydW50aW1lLnJlc29sdmVBZ2VudH1cbiAqIGF0IHJlcXVlc3QgdGltZS5cbiAqL1xuZXhwb3J0IHR5cGUgQWdlbnRSZWdpc3RyeSA9IFJlY29yZDxzdHJpbmcsIEFnZW50UmVnaXN0cnlFbnRyeT47XG5cbmNvbnN0IHJlc29sdmVkQWdlbnRDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBBbnlBZ2VudD4oKTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc29sdmVGcmFtZXdvcmtBZ2VudChvcHRzOiB7XG4gIG5hbWU6IHN0cmluZztcbiAgYWdlbnRzOiBBZ2VudFJlZ2lzdHJ5O1xufSk6IFByb21pc2U8QW55QWdlbnQgfCBudWxsPiB7XG4gIGNvbnN0IHsgbmFtZSwgYWdlbnRzIH0gPSBvcHRzO1xuXG4gIGlmICghT2JqZWN0Lmhhc093bihhZ2VudHMsIG5hbWUpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBlbnRyeSA9IGFnZW50c1tuYW1lXTtcbiAgY29uc3QgY2FjaGVLZXkgPSBuYW1lICsgSlNPTi5zdHJpbmdpZnkoZW50cnkuY29uZmlnKTtcbiAgY29uc3QgY2FjaGVkID0gcmVzb2x2ZWRBZ2VudENhY2hlLmdldChjYWNoZUtleSk7XG4gIGlmIChjYWNoZWQpIHtcbiAgICByZXR1cm4gY2FjaGVkO1xuICB9XG5cbiAgY29uc3QgaW5zdGFuY2UgPSBhd2FpdCByZXNvbHZlRW50cnkoeyBuYW1lLCBlbnRyeSB9KTtcbiAgcmVzb2x2ZWRBZ2VudENhY2hlLnNldChjYWNoZUtleSwgaW5zdGFuY2UpO1xuICByZXR1cm4gaW5zdGFuY2U7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlc29sdmVFbnRyeShvcHRzOiB7XG4gIG5hbWU6IHN0cmluZztcbiAgZW50cnk6IEFnZW50UmVnaXN0cnlFbnRyeTtcbn0pOiBQcm9taXNlPEFueUFnZW50PiB7XG4gIGNvbnN0IHsgbmFtZSwgZW50cnkgfSA9IG9wdHM7XG5cbiAgaWYgKHR5cGVvZiBlbnRyeS5pbXBvcnQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgIGNvbnN0IG1vZCA9IGF3YWl0IGVudHJ5LmltcG9ydCgpO1xuICAgIGlmICghbW9kLmRlZmF1bHQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEFnZW50IFwiJHtuYW1lfVwiIG1vZHVsZSBkb2VzIG5vdCBoYXZlIGEgZGVmYXVsdCBleHBvcnQuXFxuXFxuYCArXG4gICAgICAgICAgYGhpbnQ6IGFnZW50cy8ke25hbWV9L2FnZW50LnRzIG11c3QgZXhwb3J0IGEgZGVmYXVsdCBhZ2VudCBpbnN0YW5jZS5cXG5cXG5gICtcbiAgICAgICAgICBgICBpbXBvcnQgeyBhZ2VudCB9IGZyb20gXCJleHBlcmltZW50YWwtYWdlbnRcIjtcXG5gICtcbiAgICAgICAgICBgICBleHBvcnQgZGVmYXVsdCBhZ2VudChcIiR7bmFtZX1cIiwgeyAuLi4gfSk7XFxuYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbXBvcnRlZCA9IG1vZC5kZWZhdWx0IGFzIEFueUFnZW50O1xuXG4gICAgaWYgKGhhc0NvbmZpZyhlbnRyeS5jb25maWcpKSB7XG4gICAgICByZXR1cm4gaW1wb3J0ZWQuZXh0ZW5kKChiYXNlKSA9PlxuICAgICAgICBtZXJnZUZyYW1ld29ya09wdGlvbnMoYmFzZSwgZW50cnkuY29uZmlnKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW1wb3J0ZWQ7XG4gIH1cblxuICByZXR1cm4gY3JlYXRlQWdlbnQobmFtZSwgZW50cnkuY29uZmlnKTtcbn1cblxuZnVuY3Rpb24gaGFzQ29uZmlnKGNvbmZpZzogRnNBZ2VudENvbmZpZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gT2JqZWN0LmtleXMoY29uZmlnKS5sZW5ndGggPiAwO1xufVxuIiwgImltcG9ydCB7IHJlc29sdmVGcmFtZXdvcmtBZ2VudCB9IGZyb20gXCIuL3Jlc29sdmVcIjtcblxuLyoqXG4gKiBSZXF1ZXN0LXRpbWUgdXRpbGl0aWVzIGZvciB0aGUgZnJhbWV3b3JrIHJvdXRlci5cbiAqXG4gKiBVc2VkIGluc2lkZSBnZW5lcmF0ZWQgcm91dGUgaGFuZGxlcnMgdG8gcmVzb2x2ZSBhbiBhZ2VudCBieSBuYW1lXG4gKiBmcm9tIGEgcmVnaXN0cnkgcHJvZHVjZWQgYXQgYnVpbGQgdGltZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IHJ1bnRpbWUgfSBmcm9tIFwiZXhwZXJpbWVudGFsLWFnZW50L2ZyYW1ld29yay1ydW50aW1lXCI7XG4gKlxuICogY29uc3QgYWdlbnQgPSBhd2FpdCBydW50aW1lLnJlc29sdmVBZ2VudCh7IG5hbWUsIGFnZW50cyB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgcnVudGltZSA9IHtcbiAgLyoqXG4gICAqIExvb2sgdXAgYW4gYWdlbnQgYnkgbmFtZSBmcm9tIGEgZ2VuZXJhdGVkIHJlZ2lzdHJ5LCBtZXJnaW5nIGFueVxuICAgKiBmaWxlc3lzdGVtLXNjYW5uZWQgY29uZmlnIChzeXN0ZW0gcHJvbXB0cywgc2tpbGxzKSBvbiB0b3Agb2YgdGhlXG4gICAqIGFnZW50J3Mgb3duIG9wdGlvbnMuIFJlc3VsdHMgYXJlIGNhY2hlZCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZVxuICAgKiBwcm9jZXNzLlxuICAgKlxuICAgKiBSZXR1cm5zIGBudWxsYCB3aGVuIHRoZSBuYW1lIGRvZXNuJ3QgbWF0Y2ggYW55IHJlZ2lzdHJ5IGVudHJ5LlxuICAgKi9cbiAgcmVzb2x2ZUFnZW50OiByZXNvbHZlRnJhbWV3b3JrQWdlbnQsXG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7O0FBV08sU0FBUyxzQkFDZCxNQUNBLFNBQ2M7QUFDZCxRQUFNLFNBQXVCLEVBQUUsR0FBRyxLQUFLO0FBRXZDLE1BQUksUUFBUSxXQUFXLFFBQVc7QUFDaEMsUUFBSSxLQUFLLFdBQVcsUUFBVztBQUM3QixhQUFPLFNBQVMsUUFBUTtB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
133
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2ZyYW1ld29yay1ydW50aW1lL21lcmdlLW9wdGlvbnMudHMiLCAiLi4vc3JjL2ZyYW1ld29yay1ydW50aW1lL3Jlc29sdmUudHMiLCAiLi4vc3JjL2ZyYW1ld29yay1ydW50aW1lL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgdHlwZSB7IEFnZW50T3B0aW9ucyB9IGZyb20gXCIuLi9hZ2VudC9jbGllbnRcIjtcbmltcG9ydCB0eXBlIHsgRnNBZ2VudENvbmZpZyB9IGZyb20gXCIuLi9mcmFtZXdvcmstcnVudGltZS9yZXNvbHZlXCI7XG5cbi8qKlxuICogTWVyZ2UgZnMtc2Nhbm5lZCBjb25maWcgb24gdG9wIG9mIHRoZSBhZ2VudC50cyBiYXNlIGNvbmZpZy5cbiAqIFNraWxscyBhcmUgYXBwZW5kZWQuIFN5c3RlbSBwcm9tcHRzIGFyZSBjb25jYXRlbmF0ZWQgKGFycmF5cykuXG4gKiBUaGUgYmFzZSBvcHRpb25zIG1heSBjb250YWluIFJlc29sdmFibGUgdmFsdWVzIChmdW5jdGlvbnMpOyB3aGVuXG4gKiB0aGUgb3ZlcmxheSBoYXMgYSBzdGF0aWMgdmFsdWUgd2Ugd3JhcCB0aGUgYmFzZSByZXNvbHZhYmxlIHNvIHRoZVxuICogZnMgdmFsdWVzIGdldCBhcHBlbmRlZCBhdCByZXNvbHZlIHRpbWUuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlRnJhbWV3b3JrT3B0aW9ucyhcbiAgYmFzZTogQWdlbnRPcHRpb25zLFxuICBvdmVybGF5OiBGc0FnZW50Q29uZmlnXG4pOiBBZ2VudE9wdGlvbnMge1xuICBjb25zdCBtZXJnZWQ6IEFnZW50T3B0aW9ucyA9IHsgLi4uYmFzZSB9O1xuXG4gIGlmIChvdmVybGF5LnN5c3RlbSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKGJhc2Uuc3lzdGVtID09PSB1bmRlZmluZWQpIHtcbiAgICAgIG1lcmdlZC5zeXN0ZW0gPSBvdmVybGF5LnN5c3RlbTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBiYXNlLnN5c3RlbSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICBjb25zdCBiYXNlRm4gPSBiYXNlLnN5c3RlbTtcbiAgICAgIG1lcmdlZC5zeXN0ZW0gPSBhc3luYyAoYXJncykgPT4ge1xuICAgICAgICBjb25zdCByZXNvbHZlZCA9IGF3YWl0IGJhc2VGbihhcmdzKTtcbiAgICAgICAgaWYgKHJlc29sdmVkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXR1cm4gb3ZlcmxheS5zeXN0ZW07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYmFzZUFyciA9IEFycmF5LmlzQXJyYXkocmVzb2x2ZWQpID8gcmVzb2x2ZWQgOiBbcmVzb2x2ZWRdO1xuICAgICAgICByZXR1cm4gWy4uLmJhc2VBcnIsIG92ZXJsYXkuc3lzdGVtIV07XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBiYXNlQXJyID0gQXJyYXkuaXNBcnJheShiYXNlLnN5c3RlbSkgPyBiYXNlLnN5c3RlbSA6IFtiYXNlLnN5c3RlbV07XG4gICAgICBtZXJnZWQuc3lzdGVtID0gWy4uLmJhc2VBcnIsIG92ZXJsYXkuc3lzdGVtXTtcbiAgICB9XG4gIH1cblxuICBpZiAob3ZlcmxheS5za2lsbHMgIT09IHVuZGVmaW5lZCkge1xuICAgIGlmIChiYXNlLnNraWxscyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBtZXJnZWQuc2tpbGxzID0gb3ZlcmxheS5za2lsbHM7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgYmFzZS5za2lsbHMgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgY29uc3QgYmFzZUZuID0gYmFzZS5za2lsbHM7XG4gICAgICBtZXJnZWQuc2tpbGxzID0gYXN5bmMgKGFyZ3MpID0+IHtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWQgPSBhd2FpdCBiYXNlRm4oYXJncyk7XG4gICAgICAgIHJldHVybiBbLi4uKHJlc29sdmVkID8/IFtdKSwgLi4ub3ZlcmxheS5za2lsbHMhXTtcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIG1lcmdlZC5za2lsbHMgPSBbLi4uYmFzZS5za2lsbHMsIC4uLm92ZXJsYXkuc2tpbGxzXTtcbiAgICB9XG4gIH1cblxuICBpZiAob3ZlcmxheS50b29scyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgbWVyZ2VkLnRvb2xzID0geyAuLi5iYXNlLnRvb2xzLCAuLi5vdmVybGF5LnRvb2xzIH07XG4gIH1cblxuICByZXR1cm4gbWVyZ2VkO1xufVxuIiwgImltcG9ydCB0eXBlIHsgVG9vbFNldCB9IGZyb20gXCJhaVwiO1xuaW1wb3J0IHsgdHlwZSBBbnlBZ2VudCwgYWdlbnQgYXMgY3JlYXRlQWdlbnQgfSBmcm9tIFwiLi4vYWdlbnQvY2xpZW50XCI7XG5pbXBvcnQgdHlwZSB7IFNraWxsSW5wdXQgfSBmcm9tIFwiLi4vc2tpbGxzL3R5cGVzXCI7XG5pbXBvcnQgeyBtZXJnZUZyYW1ld29ya09wdGlvbnMgfSBmcm9tIFwiLi9tZXJnZS1vcHRpb25zXCI7XG5cbi8qKlxuICogVGhlIHN1YnNldCBvZiBBZ2VudE9wdGlvbnMgdGhhdCBjYW4gY29tZSBmcm9tIHRoZSBmaWxlc3lzdGVtIHNjYW5uZXIuXG4gKiBBbHdheXMgcGxhaW4gdmFsdWVzIFx1MjAxNCBuZXZlciBSZXNvbHZhYmxlIGZ1bmN0aW9ucy5cbiAqL1xuZXhwb3J0IHR5cGUgRnNBZ2VudENvbmZpZyA9IHtcbiAgc3lzdGVtPzogc3RyaW5nO1xuICBza2lsbHM/OiBTa2lsbElucHV0W107XG4gIHRvb2xzPzogVG9vbFNldDtcbn07XG5cbnR5cGUgTW9kdWxlTG9hZGVyID0gKCkgPT4gUHJvbWlzZTx7IGRlZmF1bHQ/OiB1bmtub3duIH0+O1xuXG4vKipcbiAqIER5bmFtaWMgaW1wb3J0IGxvYWRlcnMgZm9yIGZpbGVzeXN0ZW0gbW9kdWxlcyB0aGF0IGNhbid0IGJlXG4gKiBzZXJpYWxpemVkIGludG8gYGNvbmZpZ2AuIEtleWVkIGJ5IGNhdGVnb3J5LCB0aGVuIGJ5IG5hbWUuXG4gKiBDdXJyZW50bHkgb25seSBgdG9vbHNgIGlzIHBvcHVsYXRlZDsgYHNraWxsc2AgYW5kIGBzeXN0ZW1gXG4gKiB3aWxsIGZvbGxvdyB0aGUgc2FtZSBwYXR0ZXJuIGZvciBgLnRzYCBtb2R1bGVzLlxuICovXG5leHBvcnQgdHlwZSBSZWdpc3RyeUltcG9ydHMgPSB7XG4gIHRvb2xzPzogUmVjb3JkPHN0cmluZywgTW9kdWxlTG9hZGVyPjtcbn07XG5cbi8qKlxuICogQSBzaW5nbGUgZW50cnkgaW4gdGhlIGdlbmVyYXRlZCBhZ2VudCByZWdpc3RyeS5cbiAqIENvbnRhaW5zIHRoZSBmaWxlc3lzdGVtLXNjYW5uZWQgY29uZmlnIGFuZCBhbiBvcHRpb25hbCBkeW5hbWljIGltcG9ydFxuICogZm9yIGFnZW50cyB0aGF0IGhhdmUgYW4gYGFnZW50LnRzYCBtb2R1bGUuXG4gKi9cbmV4cG9ydCB0eXBlIEFnZW50UmVnaXN0cnlFbnRyeSA9IHtcbiAgY29uZmlnOiBGc0FnZW50Q29uZmlnO1xuICBpbXBvcnQ/OiBNb2R1bGVMb2FkZXI7XG4gIGltcG9ydHM/OiBSZWdpc3RyeUltcG9ydHM7XG59O1xuXG4vKipcbiAqIE1hcCBvZiBhZ2VudCBuYW1lIHRvIHJlZ2lzdHJ5IGVudHJ5LCBwcm9kdWNlZCBieSB0aGUgZ2VuZXJhdGVkXG4gKiBgX3JlZ2lzdHJ5LnRzYCBmaWxlIGFuZCBjb25zdW1lZCBieSB7QGxpbmsgcnVudGltZS5yZXNvbHZlQWdlbnR9XG4gKiBhdCByZXF1ZXN0IHRpbWUuXG4gKi9cbmV4cG9ydCB0eXBlIEFnZW50UmVnaXN0cnkgPSBSZWNvcmQ8c3RyaW5nLCBBZ2VudFJlZ2lzdHJ5RW50cnk+O1xuXG5jb25zdCByZXNvbHZlZEFnZW50Q2FjaGUgPSBuZXcgTWFwPHN0cmluZywgQW55QWdlbnQ+KCk7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXNvbHZlRnJhbWV3b3JrQWdlbnQob3B0czoge1xuICBuYW1lOiBzdHJpbmc7XG4gIGFnZW50czogQWdlbnRSZWdpc3RyeTtcbn0pOiBQcm9taXNlPEFueUFnZW50IHwgbnVsbD4ge1xuICBjb25zdCB7IG5hbWUsIGFnZW50cyB9ID0gb3B0cztcblxuICBpZiAoIU9iamVjdC5oYXNPd24oYWdlbnRzLCBuYW1lKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgZW50cnkgPSBhZ2VudHNbbmFtZV07XG4gIGNvbnN0IGNhY2hlS2V5ID0gbmFtZSArIEpTT04uc3RyaW5naWZ5KGVudHJ5LmNvbmZpZyk7XG4gIGNvbnN0IGNhY2hlZCA9IHJlc29sdmVkQWdlbnRDYWNoZS5nZXQoY2FjaGVLZXkpO1xuICBpZiAoY2FjaGVkKSB7XG4gICAgcmV0dXJuIGNhY2hlZDtcbiAgfVxuXG4gIGNvbnN0IGluc3RhbmNlID0gYXdhaXQgcmVzb2x2ZUVudHJ5KHsgbmFtZSwgZW50cnkgfSk7XG4gIHJlc29sdmVkQWdlbnRDYWNoZS5zZXQoY2FjaGVLZXksIGluc3RhbmNlKTtcbiAgcmV0dXJuIGluc3RhbmNlO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZXNvbHZlVG9vbEltcG9ydHMoXG4gIGxvYWRlcnM6IFJlY29yZDxzdHJpbmcsIE1vZHVsZUxvYWRlcj5cbik6IFByb21pc2U8VG9vbFNldD4ge1xuICBjb25zdCByZXNvbHZlZCA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgIE9iamVjdC5lbnRyaWVzKGxvYWRlcnMpLm1hcChhc3luYyAoW3Rvb2xOYW1lLCBsb2FkXSkgPT4ge1xuICAgICAgY29uc3QgbW9kID0gYXdhaXQgbG9hZCgpO1xuICAgICAgaWYgKCFtb2QuZGVmYXVsdCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFRvb2wgXCIke3Rvb2xOYW1lfVwiIG1vZHVsZSBkb2VzIG5vdCBoYXZlIGEgZGVmYXVsdCBleHBvcnQuXFxuXFxuYCArXG4gICAgICAgICAgICBgaGludDogdG9vbHMvJHt0b29sTmFtZX0udHMgKG9yIHRvb2xzLyR7dG9vbE5hbWV9L2luZGV4LnRzKSBtdXN0IGV4cG9ydCBhIGRlZmF1bHQgdG9vbC5cXG5cXG5gICtcbiAgICAgICAgICAgIGAgIGltcG9ydCB7IHRvb2wgfSBmcm9tIFwiYWlcIjtcXG5gICtcbiAgICAgICAgICAgIFwiICBleHBvcnQgZGVmYXVsdCB0b29sKHsgLi4uIH0pO1xcblwiXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gW3Rvb2xOYW1lLCBtb2QuZGVmYXVsdF0gYXMgY29uc3Q7XG4gICAgfSlcbiAgKTtcbiAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhyZXNvbHZlZCkgYXMgVG9vbFNldDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZUVudHJ5KG9wdHM6IHtcbiAgbmFtZTogc3RyaW5nO1xuICBlbnRyeTogQWdlbnRSZWdpc3RyeUVudHJ5O1xufSk6IFByb21pc2U8QW55QWdlbnQ+IHtcbiAgY29uc3QgeyBuYW1lLCBlbnRyeSB9ID0gb3B0cztcblxuICBjb25zdCBjb25maWcgPSB7IC4uLmVudHJ5LmNvbmZpZyB9O1xuICBjb25zdCB0b29sTG9hZGVycyA9IGVudHJ5LmltcG9ydHM/LnRvb2xzO1xuICBpZiAodG9vbExvYWRlcnMgJiYgT2JqZWN0LmtleXModG9vbExvYWRlcnMpLmxlbmd0aCA+IDApIHtcbiAgICBjb25maWcudG9vbHMgPSBhd2FpdCByZXNvbHZlVG9vbEltcG9ydHModG9vbExvYWRlcnMpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBlbnRyeS5pbXBvcnQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgIGNvbnN0IG1vZCA9IGF3YWl0IGVudHJ5LmltcG9ydCgpO1xuICAgIGlmICghbW9kLmRlZmF1bHQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEFnZW50IFwiJHtuYW1lfVwiIG1vZHVsZSBkb2VzIG5vdCBoYXZlIGEgZGVmYXVsdCBleHBvcnQuXFxuXFxuYCArXG4gICAgICAgICAgYGhpbnQ6IGFnZW50cy8ke25hbWV9L2FnZW50LnRzIG11c3QgZXhwb3J0IGEgZGVmYXVsdCBhZ2VudCBpbnN0YW5jZS5cXG5cXG5gICtcbiAgICAgICAgICBgICBpbXBvcnQgeyBhZ2VudCB9IGZyb20gXCJleHBlcmltZW50YWwtYWdlbnRcIjtcXG5gICtcbiAgICAgICAgICBgICBleHBvcnQgZGVmYXVsdCBhZ2VudChcIiR7bmFtZX1cIiwgeyAuLi4gfSk7XFxuYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbXBvcnRlZCA9IG1vZC5kZWZhdWx0IGFzIEFueUFnZW50O1xuXG4gICAgaWYgKGhhc0NvbmZpZyhjb25maWcpKSB7XG4gICAgICByZXR1cm4gY3JlYXRlQWdlbnQobmFtZSwgbWVyZ2VGcmFtZXdvcmtPcHRpb25zKGltcG9ydGVkLm9wdGlvbnMsIGNvbmZpZykpO1xuICAgIH1cblxuICAgIHJldHVybiBpbXBvcnRlZDtcbiAgfVxuXG4gIHJldHVybiBjcmVhdGVBZ2VudChuYW1lLCBjb25maWcpO1xufVxuXG5mdW5jdGlvbiBoYXNDb25maWcoY29uZmlnOiBGc0FnZW50Q29uZmlnKTogYm9vbGVhbiB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhjb25maWcpLmxlbmd0aCA+IDA7XG59XG4iLCAiaW1wb3J0IHsgcmVzb2x2ZUZyYW1ld29ya0FnZW50IH0gZnJvbSBcIi4vcmVzb2x2ZVwiO1xuXG4vKipcbiAqIFJlcXVlc3QtdGltZSB1dGlsaXRpZXMgZm9yIHRoZSBmcmFtZXdvcmsgcm91dGVyLlxuICpcbiAqIFVzZWQgaW5zaWRlIGdlbmVyYXRlZCByb3V0ZSBoYW5kbGVycyB0byByZXNvbHZlIGFuIGFnZW50IGJ5IG5hbWVcbiAqIGZyb20gYSByZWdpc3RyeSBwcm9kdWNlZCBhdCBidWlsZCB0aW1lLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgcnVudGltZSB9IGZyb20gXCJleHBlcmltZW50YWwtYWdlbnQvZnJhbWV3b3JrLXJ1bnRpbWVcIjtcbiAqXG4gKiBjb25zdCBhZ2VudCA9IGF3YWl0IHJ1bnRpbWUucmVzb2x2ZUFnZW50KHsgbmFtZSwgYWdlbnRzIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCBydW50aW1lID0ge1xuICAvKipcbiAgICogTG9vayB1cCBhbiBhZ2VudCBieSBuYW1lIGZyb20gYSBnZW5lcmF0ZWQgcmVnaXN0cnksIG1lcmdpbmcgYW55XG4gICAqIGZpbGVzeXN0ZW0tc2Nhbm5lZCBjb25maWcgKHN5c3RlbSBwcm9tcHRzLCBza2lsbHMpIG9uIHRvcCBvZiB0aGVcbiAgICogYWdlbnQncyBvd24gb3B0aW9ucy4gUmVzdWx0cyBhcmUgY2FjaGVkIGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlXG4gICAqIHByb2Nlc3MuXG4gICAqXG4gICAqIFJldHVybnMgYG51bGxgIHdoZW4gdGhlIG5hbWUgZG9lc24ndCBtYXRjaCBhbnkgcmVnaXN0cnkgZW50cnkuXG4gICAqL1xuICByZXNvbHZlQWdlbnQ6IHJlc29sdmVGcmFtZXdvcmtBZ2VudCxcbn07XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7QUFXTyxTQUFTLHNCQUNkLE1BQ0EsU0FDYztBQUNkLFFBQU0sU0FBdUIsRUFBRSxHQUFHLEtBQUs7QUFFdkMsTUFBSSxRQUFRLFdBQVcsUUFBVztBQUNoQyxRQUFJLEtBQUssV0FBVyxRQUFXO0FBQzdCLGFBQU8sU0FBUyxRQUFRO0FBQUEsSUFDMUIsV0FBVyxPQUFPLEtBQUssV0FBVyxZQUFZO0FBQzVDLFlBQU0sU0FBUyxLQUFLO0FBQ3BCLGFBQU8sU0FBUyxPQUFPLFNBQVM7QUFDOUIsY0FBTSxXQUFXLE1BQU0sT0FBTyxJQUFJO0FBQ2xDLFlBQUksYUFBYSxRQUFXO0FBQzFCLGlCQUFPLFFBQVE7QUFBQSxRQUNqQjtBQUNBLGNBQU0sVUFBVSxNQUFNLFFBQVEsUUFBUSxJQUFJLFdBQVcsQ0FBQyxRQUFRO0FBQzlELGVBQU8sQ0FBQyxHQUFHLFNBQVMsUUFBUSxNQUFPO0FBQUEsTUFDckM7QUFBQSxJQUNGLE9BQU87QUFDTCxZQUFNLFVBQVUsTUFBTSxRQUFRLEtBQUssTUFBTSxJQUFJLEtBQUssU0FBUyxDQUFDLEtBQUssTUFBTTtB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
@@ -1,11 +1,11 @@
1
- export { F as Framework } from './framework-c9fvEy0o.mjs';
2
- export { A as AgentRegistry, a as AgentRegistryEntry } from './resolve-Cma6YFgx.mjs';
1
+ export { F as Framework } from './framework-VPUsYNMf.mjs';
2
+ export { A as AgentRegistry, a as AgentRegistryEntry } from './resolve-YlI7Dugf.mjs';
3
3
  import './types-B3lbsOa7.mjs';
4
- import './client-PuttJd6O.mjs';
4
+ import 'ai';
5
+ import './client-BaItaOx5.mjs';
5
6
  import '@vercel/sandbox';
6
7
  import './steps-ChOeFWAq.mjs';
7
8
  import './adapter-CFq5IeYI.mjs';
8
9
  import '@workflow/serde';
9
- import 'ai';
10
10
  import './entry-CRBUC5DB.mjs';
11
11
  import 'zod';
@@ -1,11 +1,11 @@
1
- export { F as Framework } from './framework-DH4Z1NLV.js';
2
- export { A as AgentRegistry, a as AgentRegistryEntry } from './resolve-BZ26gcyj.js';
1
+ export { F as Framework } from './framework-DSe3sdP_.js';
2
+ export { A as AgentRegistry, a as AgentRegistryEntry } from './resolve-DCys_2es.js';
3
3
  import './types-B3lbsOa7.js';
4
- import './client-DIanpEQ_.js';
4
+ import 'ai';
5
+ import './client-BY6gceox.js';
5
6
  import '@vercel/sandbox';
6
7
  import './steps-DWTQiAPt.js';
7
8
  import './adapter-CFq5IeYI.js';
8
9
  import '@workflow/serde';
9
- import 'ai';
10
10
  import './entry-BUYBv4Cu.js';
11
11
  import 'zod';
package/dist/framework.js CHANGED
@@ -64,6 +64,20 @@ function inlineEntry(opts) {
64
64
  });
65
65
  parts.push(` import: () => import(${JSON.stringify(relativePath)})`);
66
66
  }
67
+ if (opts.agent.tools.length > 0) {
68
+ const toolLines = opts.agent.tools.map((tool) => {
69
+ const rel = relativeImportPath({
70
+ from: opts.outputDir,
71
+ to: tool.importPath
72
+ });
73
+ return ` ${JSON.stringify(tool.name)}: () => import(${JSON.stringify(rel)})`;
74
+ });
75
+ parts.push(` imports: {
76
+ tools: {
77
+ ${toolLines.join(",\n")}
78
+ }
79
+ }`);
80
+ }
67
81
  return ` ${JSON.stringify(opts.agent.name)}: {
68
82
  ${parts.join(",\n")}
69
83
  },`;
@@ -174,10 +188,39 @@ function getSystemPrompt(agentDir) {
174
188
  }
175
189
  return parts.length > 0 ? parts.join("\n\n") : void 0;
176
190
  }
191
+ function getTools(agentDir) {
192
+ const toolsDir = path2.join(agentDir, "tools");
193
+ const entries = listDir(toolsDir);
194
+ const tools = [];
195
+ for (const entry of entries.sort()) {
196
+ const absolutePath = path2.join(toolsDir, entry);
197
+ if (isDirectory(absolutePath)) {
198
+ const indexFile = findIndexFile(absolutePath);
199
+ if (indexFile) {
200
+ tools.push({ name: entry, importPath: indexFile });
201
+ }
202
+ } else if (TS_EXT.test(entry)) {
203
+ const name = entry.replace(TS_EXT, "");
204
+ tools.push({ name, importPath: absolutePath });
205
+ }
206
+ }
207
+ return tools;
208
+ }
209
+ function findIndexFile(dir) {
210
+ const extensions = [".ts", ".js", ".mts", ".mjs"];
211
+ for (const ext of extensions) {
212
+ const candidate = path2.join(dir, `index${ext}`);
213
+ if (fileExists(candidate)) {
214
+ return candidate;
215
+ }
216
+ }
217
+ return null;
218
+ }
177
219
  function scanAgent(agentDir) {
178
220
  const { skills, tsSkillImportPaths } = getSkills(agentDir.absolutePath);
179
221
  const systemPrompt = getSystemPrompt(agentDir.absolutePath);
180
- return { ...agentDir, skills, systemPrompt, tsSkillImportPaths };
222
+ const tools = getTools(agentDir.absolutePath);
223
+ return { ...agentDir, skills, systemPrompt, tsSkillImportPaths, tools };
181
224
  }
182
225
  function findAgentsRoot(cwd, userDefinedAgentsDir) {
183
226
  if (userDefinedAgentsDir) {
@@ -232,4 +275,4 @@ var Framework = class {
232
275
  0 && (module.exports = {
233
276
  Framework
234
277
  });
235
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2ZyYW1ld29yay9pbmRleC50cyIsICIuLi9zcmMvZnJhbWV3b3JrL2dlbmVyYXRlLnRzIiwgIi4uL3NyYy9mcmFtZXdvcmsvc2Nhbi50cyIsICIuLi9zcmMvZnJhbWV3b3JrL2ZyYW1ld29yay50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiZXhwb3J0IHsgRnJhbWV3b3JrIH0gZnJvbSBcIi4vZnJhbWV3b3JrXCI7XG5leHBvcnQgdHlwZSB7XG4gIEFnZW50UmVnaXN0cnksXG4gIEFnZW50UmVnaXN0cnlFbnRyeSxcbn0gZnJvbSBcIi4uL2ZyYW1ld29yay1ydW50aW1lL3Jlc29sdmVcIjtcbiIsICJpbXBvcnQgKiBhcyBmcyBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgdHlwZSB7IFNjYW5uZWRBZ2VudCB9IGZyb20gXCIuL3NjYW5cIjtcblxuY29uc3QgVFNfSU1QT1JUX0VYVCA9IC9cXC4odHN8bXRzKSQvO1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlUmVnaXN0cnkob3B0czoge1xuICBhZ2VudHM6IFNjYW5uZWRBZ2VudFtdO1xuICBvdXRwdXREaXI6IHN0cmluZztcbn0pOiBzdHJpbmcge1xuICBjb25zdCBlbnRyaWVzID0gb3B0cy5hZ2VudHMubWFwKChhZ2VudCkgPT5cbiAgICBpbmxpbmVFbnRyeSh7IGFnZW50LCBvdXRwdXREaXI6IG9wdHMub3V0cHV0RGlyIH0pXG4gICk7XG5cbiAgcmV0dXJuIFtcbiAgICBcIi8vIEF1dG8tZ2VuZXJhdGVkIGJ5IHdpdGhBZ2VudHMgLSBkbyBub3QgZWRpdFwiLFxuICAgICdpbXBvcnQgdHlwZSB7IEFnZW50UmVnaXN0cnkgfSBmcm9tIFwiZXhwZXJpbWVudGFsLWFnZW50L2ZyYW1ld29ya1wiOycsXG4gICAgXCJcIixcbiAgICBcImV4cG9ydCBjb25zdCBhZ2VudHMgPSB7XCIsXG4gICAgLi4uZW50cmllcyxcbiAgICBcIn0gc2F0aXNmaWVzIEFnZW50UmVnaXN0cnk7XCIsXG4gICAgXCJcIixcbiAgXS5qb2luKFwiXFxuXCIpO1xufVxuXG5mdW5jdGlvbiBpbmxpbmVFbnRyeShvcHRzOiB7XG4gIGFnZW50OiBTY2FubmVkQWdlbnQ7XG4gIG91dHB1dERpcjogc3RyaW5nO1xufSk6IHN0cmluZyB7XG4gIGNvbnN0IGNvbmZpZyA9IGJ1aWxkQ29uZmlnKG9wdHMuYWdlbnQpO1xuICBjb25zdCBjb25maWdTdHIgPSBKU09OLnN0cmluZ2lmeShjb25maWcsIG51bGwsIDIpXG4gICAgLnNwbGl0KFwiXFxuXCIpXG4gICAgLm1hcCgobGluZSwgaSkgPT4gKGkgPT09IDAgPyBsaW5lIDogYCAgICAgICR7bGluZX1gKSlcbiAgICAuam9pbihcIlxcblwiKTtcblxuICBjb25zdCBwYXJ0cyA9IFtgICAgIGNvbmZpZzogJHtjb25maWdTdHJ9YF07XG5cbiAgaWYgKG9wdHMuYWdlbnQuaGFzQWdlbnRDb25maWcpIHtcbiAgICBjb25zdCBjb25maWdQYXRoID0gZmluZEFnZW50Q29uZmlnUGF0aChvcHRzLmFnZW50LmFic29sdXRlUGF0aCk7XG4gICAgY29uc3QgcmVsYXRpdmVQYXRoID0gcmVsYXRpdmVJbXBvcnRQYXRoKHtcbiAgICAgIGZyb206IG9wdHMub3V0cHV0RGlyLFxuICAgICAgdG86IGNvbmZpZ1BhdGgsXG4gICAgfSk7XG4gICAgcGFydHMucHVzaChgICAgIGltcG9ydDogKCkgPT4gaW1wb3J0KCR7SlNPTi5zdHJpbmdpZnkocmVsYXRpdmVQYXRoKX0pYCk7XG4gIH1cblxuICByZXR1cm4gYCAgJHtKU09OLnN0cmluZ2lmeShvcHRzLmFnZW50Lm5hbWUpfToge1xcbiR7cGFydHMuam9pbihcIixcXG5cIil9XFxuICB9LGA7XG59XG5cbmZ1bmN0aW9uIGJ1aWxkQ29uZmlnKGFnZW50OiBTY2FubmVkQWdlbnQpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIGNvbnN0IGNvbmZpZzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblxuICBpZiAoYWdlbnQuc3lzdGVtUHJvbXB0KSB7XG4gICAgY29uZmlnLnN5c3RlbSA9IGFnZW50LnN5c3RlbVByb21wdDtcbiAgfVxuXG4gIGlmIChhZ2VudC5za2lsbHMubGVuZ3RoID4gMCkge1xuICAgIGNvbmZpZy5za2lsbHMgPSBhZ2VudC5za2lsbHM7XG4gIH1cblxuICByZXR1cm4gY29uZmlnO1xufVxuXG5mdW5jdGlvbiBmaW5kQWdlbnRDb25maWdQYXRoKGFnZW50RGlyOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBleHRlbnNpb25zID0gW1wiLnRzXCIsIFwiLmpzXCIsIFwiLm10c1wiLCBcIi5tanNcIl07XG4gIGZvciAoY29uc3QgZXh0IG9mIGV4dGVuc2lvbnMpIHtcbiAgICBjb25zdCBjYW5kaWRhdGUgPSBwYXRoLmpvaW4oYWdlbnREaXIsIGBhZ2VudCR7ZXh0fWApO1xuICAgIGlmIChmcy5leGlzdHNTeW5jKGNhbmRpZGF0ZSkpIHtcbiAgICAgIHJldHVybiBjYW5kaWRhdGU7XG4gICAgfVxuICB9XG4gIHJldHVybiBwYXRoLmpvaW4oYWdlbnREaXIsIFwiYWdlbnRcIik7XG59XG5cbmZ1bmN0aW9uIHJlbGF0aXZlSW1wb3J0UGF0aChvcHRzOiB7IGZyb206IHN0cmluZzsgdG86IHN0cmluZyB9KTogc3RyaW5nIHtcbiAgbGV0IHJlbCA9IHBhdGgucmVsYXRpdmUob3B0cy5mcm9tLCBvcHRzLnRvKS5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKTtcbiAgcmVsID0gcmVsLnJlcGxhY2UoVFNfSU1QT1JUX0VYVCwgXCJcIik7XG4gIGlmICghcmVsLnN0YXJ0c1dpdGgoXCIuXCIpKSB7XG4gICAgcmVsID0gYC4vJHtyZWx9YDtcbiAgfVxuICByZXR1cm4gcmVsO1xufVxuXG4iLCAiaW1wb3J0ICogYXMgZnMgZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHR5cGUgeyBIb3N0U2tpbGxJbnB1dCwgU2tpbGxJbnB1dCB9IGZyb20gXCIuLi9za2lsbHMvdHlwZXNcIjtcblxuZXhwb3J0IHR5cGUgQWdlbnREaXIgPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgYWJzb2x1dGVQYXRoOiBzdHJpbmc7XG4gIGhhc0FnZW50Q29uZmlnOiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgU2Nhbm5lZEFnZW50ID0gQWdlbnREaXIgJiB7XG4gIHNraWxsczogU2tpbGxJbnB1dFtdO1xuICBzeXN0ZW1Qcm9tcHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgdHNTa2lsbEltcG9ydFBhdGhzOiBzdHJpbmdbXTtcbn07XG5cbmNvbnN0IEFHRU5UX0NPTkZJR19GSUxFUyA9IFtcImFnZW50LnRzXCIsIFwiYWdlbnQuanNcIiwgXCJhZ2VudC5tdHNcIiwgXCJhZ2VudC5tanNcIl07XG5jb25zdCBNRF9FWFQgPSAvXFwubWQkLztcbmNvbnN0IFRTX0VYVCA9IC9cXC4odHN8anN8bXRzfG1qcykkLztcblxuZXhwb3J0IGZ1bmN0aW9uIGxpc3REaXIoZGlyOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gIGlmICghZnMuZXhpc3RzU3luYyhkaXIpKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIHJldHVybiBmcy5yZWFkZGlyU3luYyhkaXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZEZpbGUoZmlsZVBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBmcy5yZWFkRmlsZVN5bmMoZmlsZVBhdGgsIFwidXRmLThcIik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWxlRXhpc3RzKGZpbGVQYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIGZzLmV4aXN0c1N5bmMoZmlsZVBhdGgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEaXJlY3RvcnkoZmlsZVBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gZnMuZXhpc3RzU3luYyhmaWxlUGF0aCkgJiYgZnMuc3RhdFN5bmMoZmlsZVBhdGgpLmlzRGlyZWN0b3J5KCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaXNjb3ZlckFnZW50RGlycyhhZ2VudHNSb290OiBzdHJpbmcpOiBBZ2VudERpcltdIHtcbiAgY29uc3QgZW50cmllcyA9IGxpc3REaXIoYWdlbnRzUm9vdCk7XG4gIGNvbnN0IGRpcnM6IEFnZW50RGlyW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICBjb25zdCBhYnNvbHV0ZVBhdGggPSBwYXRoLmpvaW4oYWdlbnRzUm9vdCwgZW50cnkpO1xuICAgIGlmICghaXNEaXJlY3RvcnkoYWJzb2x1dGVQYXRoKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChlbnRyeS5zdGFydHNXaXRoKFwiLlwiKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgZGlycy5wdXNoKHtcbiAgICAgIG5hbWU6IGVudHJ5LFxuICAgICAgYWJzb2x1dGVQYXRoLFxuICAgICAgaGFzQWdlbnRDb25maWc6IGhhc0FnZW50Q29uZmlnKGFic29sdXRlUGF0aCksXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gZGlycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc0FnZW50Q29uZmlnKGFnZW50RGlyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIEFHRU5UX0NPTkZJR19GSUxFUy5zb21lKChmKSA9PiBmaWxlRXhpc3RzKHBhdGguam9pbihhZ2VudERpciwgZikpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNraWxscyhhZ2VudERpcjogc3RyaW5nKToge1xuICBza2lsbHM6IFNraWxsSW5wdXRbXTtcbiAgdHNTa2lsbEltcG9ydFBhdGhzOiBzdHJpbmdbXTtcbn0ge1xuICBjb25zdCBza2lsbHNEaXIgPSBwYXRoLmpvaW4oYWdlbnREaXIsIFwic2tpbGxzXCIpO1xuICBjb25zdCBlbnRyaWVzID0gbGlzdERpcihza2lsbHNEaXIpO1xuICBjb25zdCBza2lsbHM6IFNraWxsSW5wdXRbXSA9IFtdO1xuICBjb25zdCB0c1NraWxsSW1wb3J0UGF0aHM6IHN0cmluZ1tdID0gW107XG5cbiAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzLnNvcnQoKSkge1xuICAgIGNvbnN0IGFic29sdXRlUGF0aCA9IHBhdGguam9pbihza2lsbHNEaXIsIGVudHJ5KTtcblxuICAgIGlmIChNRF9FWFQudGVzdChlbnRyeSkpIHtcbiAgICAgIHNraWxscy5wdXNoKHtcbiAgICAgICAgdHlwZTogXCJob3N0XCIsXG4gICAgICAgIHBhdGg6IGFic29sdXRlUGF0aCxcbiAgICAgIH0gc2F0aXNmaWVzIEhvc3RTa2lsbElucHV0KTtcbiAgICB9IGVsc2UgaWYgKFRTX0VYVC50ZXN0KGVudHJ5KSkge1xuICAgICAgdHNTa2lsbEltcG9ydFBhdGhzLnB1c2goYWJzb2x1dGVQYXRoKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4geyBza2lsbHMsIHRzU2tpbGxJbXBvcnRQYXRocyB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3lzdGVtUHJvbXB0KGFnZW50RGlyOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBzeXN0ZW1EaXIgPSBwYXRoLmpvaW4oYWdlbnREaXIsIFwic3lzdGVtXCIpO1xuICBjb25zdCBlbnRyaWVzID0gbGlzdERpcihzeXN0ZW1EaXIpO1xuICBjb25zdCBtZEZpbGVzID0gZW50cmllcy5maWx0ZXIoKGUpID0+IE1EX0VYVC50ZXN0KGUpKS5zb3J0KCk7XG5cbiAgaWYgKG1kRmlsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IHBhcnRzOiBzdHJpbmdbXSA9IFtdO1xuICBmb3IgKGNvbnN0IGZpbGUgb2YgbWRGaWxlcykge1xuICAgIGNvbnN0IGNvbnRlbnQgPSByZWFkRmlsZShwYXRoLmpvaW4oc3lzdGVtRGlyLCBmaWxlKSkudHJpbSgpO1xuICAgIGlmIChjb250ZW50KSB7XG4gICAgICBwYXJ0cy5wdXNoKGNvbnRlbnQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwYXJ0cy5sZW5ndGggPiAwID8gcGFydHMuam9pbihcIlxcblxcblwiKSA6IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNjYW5BZ2VudChhZ2VudERpcjogQWdlbnREaXIpOiBTY2FubmVkQWdlbnQge1xuICBjb25zdCB7IHNraWxscywgdHNTa2lsbEltcG9ydFBhdGhzIH0gPSBnZXRTa2lsbHMoYWdlbnREaXIuYWJzb2x1dGVQYXRoKTtcbiAgY29uc3Qgc3lzdGVtUHJvbXB0ID0gZ2V0U3lzdGVtUHJvbXB0KGFnZW50RGlyLmFic29sdXRlUGF0aCk7XG5cbiAgcmV0dXJuIHsgLi4uYWdlbnREaXIsIHNraWxscywgc3lzdGVtUHJvbXB0LCB0c1NraWxsSW1wb3J0UGF0aHMgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRBZ2VudHNSb290KFxuICBjd2Q6IHN0cmluZyxcbiAgdXNlckRlZmluZWRBZ2VudHNEaXI6IHN0cmluZyB8IHVuZGVmaW5lZFxuKTogc3RyaW5nIHwgbnVsbCB7XG4gIGlmICh1c2VyRGVmaW5lZEFnZW50c0Rpcikge1xuICAgIHJldHVybiBwYXRoLnJlc29sdmUoY3dkLCB1c2VyRGVmaW5lZEFnZW50c0Rpcik7XG4gIH1cbiAgY29uc3QgY2FuZGlkYXRlcyA9IFtcbiAgICBwYXRoLmpvaW4oY3dkLCBcInNyY1wiLCBcImFnZW50c1wiKSxcbiAgICBwYXRoLmpvaW4oY3dkLCBcImFnZW50c1wiKSxcbiAgXTtcblxuICBmb3IgKGNvbnN0IGNhbmRpZGF0ZSBvZiBjYW5kaWRhdGVzKSB7XG4gICAgaWYgKGlzRGlyZWN0b3J5KGNhbmRpZGF0ZSkpIHtcbiAgICAgIHJldHVybiBjYW5kaWRhdGU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG4iLCAiaW1wb3J0IHsgZ2VuZXJhdGVSZWdpc3RyeSB9IGZyb20gXCIuL2dlbmVyYXRlXCI7XG5pbXBvcnQgdHlwZSB7IFNjYW5uZWRBZ2VudCB9IGZyb20gXCIuL3NjYW5cIjtcbmltcG9ydCB7IGRpc2NvdmVyQWdlbnREaXJzLCBmaW5kQWdlbnRzUm9vdCwgc2NhbkFnZW50IH0gZnJvbSBcIi4vc2NhblwiO1xuXG4vKipcbiAqIEZyYW1ld29yay1hZ25vc3RpYyBjb3JlIGZvciBmaWxlc3lzdGVtLWJhc2VkIGFnZW50IGRpc2NvdmVyeSBhbmRcbiAqIHJlZ2lzdHJ5IGNvZGUgZ2VuZXJhdGlvbi4gQWRhcHRlcnMgbGlrZSB7QGxpbmsgTmV4dH0gcmVjZWl2ZSBhXG4gKiBgRnJhbWV3b3JrYCBpbnN0YW5jZSBhbmQgdXNlIGl0IHRvIHNjYW4gYWdlbnRzIGFuZCBwcm9kdWNlIHJlZ2lzdHJ5XG4gKiBzb3VyY2UgY29kZS5cbiAqL1xuZXhwb3J0IGNsYXNzIEZyYW1ld29yayB7XG4gIHJlYWRvbmx5IGN3ZDogc3RyaW5nO1xuICByZWFkb25seSBhZ2VudHNEaXI6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgbG9nOiAoLi4uYXJnczogdW5rbm93bltdKSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKG9wdHM6IHtcbiAgICAvKipcbiAgICAgKiBQcm9qZWN0IHJvb3QgZGlyZWN0b3J5LlxuICAgICAqIEBkZWZhdWx0VmFsdWUgYHByb2Nlc3MuY3dkKClgXG4gICAgICovXG4gICAgY3dkPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFBhdGggdG8gdGhlIGFnZW50cyBkaXJlY3RvcnksIHJlbGF0aXZlIHRvIGBjd2RgLlxuICAgICAqIFdoZW4gb21pdHRlZCwgYXV0by1kZXRlY3RlZCBhcyB0aGUgZmlyc3QgZXhpc3RpbmcgZGlyZWN0b3J5XG4gICAgICogYW1vbmcgYHNyYy9hZ2VudHNgIGFuZCBgYWdlbnRzYC5cbiAgICAgKi9cbiAgICBhZ2VudHNEaXI/OiBzdHJpbmc7XG4gICAgLyoqIEVuYWJsZSB2ZXJib3NlIGxvZ2dpbmcgdG8gc3Rkb3V0LiAqL1xuICAgIGRlYnVnPzogYm9vbGVhbjtcbiAgfSkge1xuICAgIHRoaXMuY3dkID0gb3B0cy5jd2QgPz8gcHJvY2Vzcy5jd2QoKTtcbiAgICB0aGlzLmFnZW50c0RpciA9IG9wdHMuYWdlbnRzRGlyO1xuICAgIHRoaXMubG9nID0gb3B0cy5kZWJ1Z1xuICAgICAgPyBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUsIFwiW0ZyYW1ld29ya11cIilcbiAgICAgIDogKCkgPT4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFNjYW4gdGhlIGFnZW50cyBkaXJlY3RvcnkgYW5kIHJldHVybiBtZXRhZGF0YSBmb3IgZXZlcnkgYWdlbnQgZm91bmQuXG4gICAqIEVhY2ggc3ViZm9sZGVyIGluc2lkZSB0aGUgYWdlbnRzIGRpcmVjdG9yeSBiZWNvbWVzIG9uZSBhZ2VudC5cbiAgICogUmV0dXJucyBhbiBlbXB0eSBhcnJheSB3aGVuIG5vIGFnZW50cyBkaXJlY3RvcnkgZXhpc3RzLlxuICAgKi9cbiAgZGlzY292ZXJBZ2VudHMoKTogU2Nhbm5lZEFnZW50W10ge1xuICAgIGNvbnN0IHJvb3QgPSBmaW5kQWdlbnRzUm9vdCh0aGlzLmN3ZCwgdGhpcy5hZ2VudHNEaXIpO1xuICAgIGlmICghcm9vdCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBjb25zdCBkaXJzID0gZGlzY292ZXJBZ2VudERpcnMocm9vdCk7XG4gICAgcmV0dXJuIGRpcnMubWFwKHNjYW5BZ2VudCk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgdGhlIFR5cGVTY3JpcHQgc291cmNlIGZvciBhbiBhZ2VudCByZWdpc3RyeSBtb2R1bGUuXG4gICAqXG4gICAqIEBwYXJhbSBvcHRzLmFnZW50cyAtIFNjYW5uZWQgYWdlbnRzIHRvIGluY2x1ZGUgaW4gdGhlIHJlZ2lzdHJ5LlxuICAgKiBAcGFyYW0gb3B0cy5vdXRwdXREaXIgLSBEaXJlY3Rvcnkgd2hlcmUgdGhlIHJlZ2lzdHJ5IGZpbGUgd2lsbCBiZSB3cml0dGVuXG4gICAqICAgKHVzZWQgdG8gY29tcHV0ZSByZWxhdGl2ZSBpbXBvcnQgcGF0aHMgdG8gZWFjaCBhZ2VudCdzIGNvbmZpZyBtb2R1bGUpLlxuICAgKiBAcmV0dXJucyBUaGUgZnVsbCBzb3VyY2UgdGV4dCBvZiB0aGUgZ2VuZXJhdGVkIGBfcmVnaXN0cnkudHNgIGZpbGUuXG4gICAqL1xuICBnZW5lcmF0ZVJlZ2lzdHJ5U291cmNlID0gZ2VuZXJhdGVSZWdpc3RyeTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7OztBQ0FBLFNBQW9CO0FBQ3BCLFdBQXNCO0FBR3RCLElBQU0sZ0JBQWdCO0FBQ2YsU0FBUyxpQkFBaUIsTUFHdEI7QUFDVCxRQUFNLFVBQVUsS0FBSyxPQUFPO0FBQUEsSUFBSSxDQUFDLFVBQy9CLFlBQVksRUFBRSxPQUFPLFdBQVcsS0FBSyxVQUFVLENBQUM7QUFBQSxFQUNsRDtBQUVBLFNBQU87QUFBQSxJQUNMO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQSxHQUFHO0FBQUEsSUFDSDtBQUFBLElBQ0E7QUFBQSxFQUNGLEVBQUUsS0FBSyxJQUFJO0FBQ2I7QUFFQSxTQUFTLFlBQVksTUFHVjtBQUNULFFBQU0sU0FBUyxZQUFZLEtBQUssS0FBSztBQUNyQyxRQUFNLFlBQVksS0FBSyxVQUFVLFFBQVEsTUFBTSxDQUFDLEVBQzdDLE1BQU0sSUFBSSxFQUNWLElBQUksQ0FBQyxNQUFNLE1BQU8sTUFBTSxJQUFJLE9BQU8sU0FBUyxJQUFJLEVBQUcsRUFDbkQsS0FBSyxJQUFJO0FBRVosUUFBTSxRQUFRLENBQUMsZUFBZSxTQUFTLEVBQUU7QUFFekMsTUFBSSxLQUFLLE1BQU0sZ0JBQWdCO0FBQzdCLFVBQU0sYUFBYSxvQkFBb0IsS0FBSyxNQUFNLFlBQVk7QUFDOUQsVUFBTSxlQUFlLG1CQUFtQjtBQUFBLE1BQ3RDLE1BQU0sS0FBSztBQUFBLE1BQ1gsSUFBSTtBQUFBLElBQ04sQ0FBQztBQUNELFVBQU0sS0FBSyw0QkFBNEIsS0FB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
278
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2ZyYW1ld29yay9pbmRleC50cyIsICIuLi9zcmMvZnJhbWV3b3JrL2dlbmVyYXRlLnRzIiwgIi4uL3NyYy9mcmFtZXdvcmsvc2Nhbi50cyIsICIuLi9zcmMvZnJhbWV3b3JrL2ZyYW1ld29yay50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiZXhwb3J0IHsgRnJhbWV3b3JrIH0gZnJvbSBcIi4vZnJhbWV3b3JrXCI7XG5leHBvcnQgdHlwZSB7XG4gIEFnZW50UmVnaXN0cnksXG4gIEFnZW50UmVnaXN0cnlFbnRyeSxcbn0gZnJvbSBcIi4uL2ZyYW1ld29yay1ydW50aW1lL3Jlc29sdmVcIjtcbiIsICJpbXBvcnQgKiBhcyBmcyBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgdHlwZSB7IFNjYW5uZWRBZ2VudCB9IGZyb20gXCIuL3NjYW5cIjtcblxuY29uc3QgVFNfSU1QT1JUX0VYVCA9IC9cXC4odHN8bXRzKSQvO1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlUmVnaXN0cnkob3B0czoge1xuICBhZ2VudHM6IFNjYW5uZWRBZ2VudFtdO1xuICBvdXRwdXREaXI6IHN0cmluZztcbn0pOiBzdHJpbmcge1xuICBjb25zdCBlbnRyaWVzID0gb3B0cy5hZ2VudHMubWFwKChhZ2VudCkgPT5cbiAgICBpbmxpbmVFbnRyeSh7IGFnZW50LCBvdXRwdXREaXI6IG9wdHMub3V0cHV0RGlyIH0pXG4gICk7XG5cbiAgcmV0dXJuIFtcbiAgICBcIi8vIEF1dG8tZ2VuZXJhdGVkIGJ5IHdpdGhBZ2VudHMgLSBkbyBub3QgZWRpdFwiLFxuICAgICdpbXBvcnQgdHlwZSB7IEFnZW50UmVnaXN0cnkgfSBmcm9tIFwiZXhwZXJpbWVudGFsLWFnZW50L2ZyYW1ld29ya1wiOycsXG4gICAgXCJcIixcbiAgICBcImV4cG9ydCBjb25zdCBhZ2VudHMgPSB7XCIsXG4gICAgLi4uZW50cmllcyxcbiAgICBcIn0gc2F0aXNmaWVzIEFnZW50UmVnaXN0cnk7XCIsXG4gICAgXCJcIixcbiAgXS5qb2luKFwiXFxuXCIpO1xufVxuXG5mdW5jdGlvbiBpbmxpbmVFbnRyeShvcHRzOiB7XG4gIGFnZW50OiBTY2FubmVkQWdlbnQ7XG4gIG91dHB1dERpcjogc3RyaW5nO1xufSk6IHN0cmluZyB7XG4gIGNvbnN0IGNvbmZpZyA9IGJ1aWxkQ29uZmlnKG9wdHMuYWdlbnQpO1xuICBjb25zdCBjb25maWdTdHIgPSBKU09OLnN0cmluZ2lmeShjb25maWcsIG51bGwsIDIpXG4gICAgLnNwbGl0KFwiXFxuXCIpXG4gICAgLm1hcCgobGluZSwgaSkgPT4gKGkgPT09IDAgPyBsaW5lIDogYCAgICAgICR7bGluZX1gKSlcbiAgICAuam9pbihcIlxcblwiKTtcblxuICBjb25zdCBwYXJ0cyA9IFtgICAgIGNvbmZpZzogJHtjb25maWdTdHJ9YF07XG5cbiAgaWYgKG9wdHMuYWdlbnQuaGFzQWdlbnRDb25maWcpIHtcbiAgICBjb25zdCBjb25maWdQYXRoID0gZmluZEFnZW50Q29uZmlnUGF0aChvcHRzLmFnZW50LmFic29sdXRlUGF0aCk7XG4gICAgY29uc3QgcmVsYXRpdmVQYXRoID0gcmVsYXRpdmVJbXBvcnRQYXRoKHtcbiAgICAgIGZyb206IG9wdHMub3V0cHV0RGlyLFxuICAgICAgdG86IGNvbmZpZ1BhdGgsXG4gICAgfSk7XG4gICAgcGFydHMucHVzaChgICAgIGltcG9ydDogKCkgPT4gaW1wb3J0KCR7SlNPTi5zdHJpbmdpZnkocmVsYXRpdmVQYXRoKX0pYCk7XG4gIH1cblxuICBpZiAob3B0cy5hZ2VudC50b29scy5sZW5ndGggPiAwKSB7XG4gICAgY29uc3QgdG9vbExpbmVzID0gb3B0cy5hZ2VudC50b29scy5tYXAoKHRvb2wpID0+IHtcbiAgICAgIGNvbnN0IHJlbCA9IHJlbGF0aXZlSW1wb3J0UGF0aCh7XG4gICAgICAgIGZyb206IG9wdHMub3V0cHV0RGlyLFxuICAgICAgICB0bzogdG9vbC5pbXBvcnRQYXRoLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gYCAgICAgICAgJHtKU09OLnN0cmluZ2lmeSh0b29sLm5hbWUpfTogKCkgPT4gaW1wb3J0KCR7SlNPTi5zdHJpbmdpZnkocmVsKX0pYDtcbiAgICB9KTtcbiAgICBwYXJ0cy5wdXNoKGAgICAgaW1wb3J0czoge1xcbiAgICAgIHRvb2xzOiB7XFxuJHt0b29sTGluZXMuam9pbihcIixcXG5cIil9XFxuICAgICAgfVxcbiAgICB9YCk7XG4gIH1cblxuICByZXR1cm4gYCAgJHtKU09OLnN0cmluZ2lmeShvcHRzLmFnZW50Lm5hbWUpfToge1xcbiR7cGFydHMuam9pbihcIixcXG5cIil9XFxuICB9LGA7XG59XG5cbmZ1bmN0aW9uIGJ1aWxkQ29uZmlnKGFnZW50OiBTY2FubmVkQWdlbnQpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIGNvbnN0IGNvbmZpZzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblxuICBpZiAoYWdlbnQuc3lzdGVtUHJvbXB0KSB7XG4gICAgY29uZmlnLnN5c3RlbSA9IGFnZW50LnN5c3RlbVByb21wdDtcbiAgfVxuXG4gIGlmIChhZ2VudC5za2lsbHMubGVuZ3RoID4gMCkge1xuICAgIGNvbmZpZy5za2lsbHMgPSBhZ2VudC5za2lsbHM7XG4gIH1cblxuICByZXR1cm4gY29uZmlnO1xufVxuXG5mdW5jdGlvbiBmaW5kQWdlbnRDb25maWdQYXRoKGFnZW50RGlyOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBleHRlbnNpb25zID0gW1wiLnRzXCIsIFwiLmpzXCIsIFwiLm10c1wiLCBcIi5tanNcIl07XG4gIGZvciAoY29uc3QgZXh0IG9mIGV4dGVuc2lvbnMpIHtcbiAgICBjb25zdCBjYW5kaWRhdGUgPSBwYXRoLmpvaW4oYWdlbnREaXIsIGBhZ2VudCR7ZXh0fWApO1xuICAgIGlmIChmcy5leGlzdHNTeW5jKGNhbmRpZGF0ZSkpIHtcbiAgICAgIHJldHVybiBjYW5kaWRhdGU7XG4gICAgfVxuICB9XG4gIHJldHVybiBwYXRoLmpvaW4oYWdlbnREaXIsIFwiYWdlbnRcIik7XG59XG5cbmZ1bmN0aW9uIHJlbGF0aXZlSW1wb3J0UGF0aChvcHRzOiB7IGZyb206IHN0cmluZzsgdG86IHN0cmluZyB9KTogc3RyaW5nIHtcbiAgbGV0IHJlbCA9IHBhdGgucmVsYXRpdmUob3B0cy5mcm9tLCBvcHRzLnRvKS5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKTtcbiAgcmVsID0gcmVsLnJlcGxhY2UoVFNfSU1QT1JUX0VYVCwgXCJcIik7XG4gIGlmICghcmVsLnN0YXJ0c1dpdGgoXCIuXCIpKSB7XG4gICAgcmVsID0gYC4vJHtyZWx9YDtcbiAgfVxuICByZXR1cm4gcmVsO1xufVxuXG4iLCAiaW1wb3J0ICogYXMgZnMgZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHR5cGUgeyBIb3N0U2tpbGxJbnB1dCwgU2tpbGxJbnB1dCB9IGZyb20gXCIuLi9za2lsbHMvdHlwZXNcIjtcblxuZXhwb3J0IHR5cGUgQWdlbnREaXIgPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgYWJzb2x1dGVQYXRoOiBzdHJpbmc7XG4gIGhhc0FnZW50Q29uZmlnOiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgU2Nhbm5lZFRvb2wgPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgaW1wb3J0UGF0aDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgU2Nhbm5lZEFnZW50ID0gQWdlbnREaXIgJiB7XG4gIHNraWxsczogU2tpbGxJbnB1dFtdO1xuICBzeXN0ZW1Qcm9tcHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgdHNTa2lsbEltcG9ydFBhdGhzOiBzdHJpbmdbXTtcbiAgdG9vbHM6IFNjYW5uZWRUb29sW107XG59O1xuXG5jb25zdCBBR0VOVF9DT05GSUdfRklMRVMgPSBbXCJhZ2VudC50c1wiLCBcImFnZW50LmpzXCIsIFwiYWdlbnQubXRzXCIsIFwiYWdlbnQubWpzXCJdO1xuY29uc3QgTURfRVhUID0gL1xcLm1kJC87XG5jb25zdCBUU19FWFQgPSAvXFwuKHRzfGpzfG10c3xtanMpJC87XG5cbmV4cG9ydCBmdW5jdGlvbiBsaXN0RGlyKGRpcjogc3RyaW5nKTogc3RyaW5nW10ge1xuICBpZiAoIWZzLmV4aXN0c1N5bmMoZGlyKSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICByZXR1cm4gZnMucmVhZGRpclN5bmMoZGlyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRGaWxlKGZpbGVQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gZnMucmVhZEZpbGVTeW5jKGZpbGVQYXRoLCBcInV0Zi04XCIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlsZUV4aXN0cyhmaWxlUGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBmcy5leGlzdHNTeW5jKGZpbGVQYXRoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRGlyZWN0b3J5KGZpbGVQYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIGZzLmV4aXN0c1N5bmMoZmlsZVBhdGgpICYmIGZzLnN0YXRTeW5jKGZpbGVQYXRoKS5pc0RpcmVjdG9yeSgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzY292ZXJBZ2VudERpcnMoYWdlbnRzUm9vdDogc3RyaW5nKTogQWdlbnREaXJbXSB7XG4gIGNvbnN0IGVudHJpZXMgPSBsaXN0RGlyKGFnZW50c1Jvb3QpO1xuICBjb25zdCBkaXJzOiBBZ2VudERpcltdID0gW107XG5cbiAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgY29uc3QgYWJzb2x1dGVQYXRoID0gcGF0aC5qb2luKGFnZW50c1Jvb3QsIGVudHJ5KTtcbiAgICBpZiAoIWlzRGlyZWN0b3J5KGFic29sdXRlUGF0aCkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoZW50cnkuc3RhcnRzV2l0aChcIi5cIikpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGRpcnMucHVzaCh7XG4gICAgICBuYW1lOiBlbnRyeSxcbiAgICAgIGFic29sdXRlUGF0aCxcbiAgICAgIGhhc0FnZW50Q29uZmlnOiBoYXNBZ2VudENvbmZpZyhhYnNvbHV0ZVBhdGgpLFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGRpcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNBZ2VudENvbmZpZyhhZ2VudERpcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBBR0VOVF9DT05GSUdfRklMRVMuc29tZSgoZikgPT4gZmlsZUV4aXN0cyhwYXRoLmpvaW4oYWdlbnREaXIsIGYpKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTa2lsbHMoYWdlbnREaXI6IHN0cmluZyk6IHtcbiAgc2tpbGxzOiBTa2lsbElucHV0W107XG4gIHRzU2tpbGxJbXBvcnRQYXRoczogc3RyaW5nW107XG59IHtcbiAgY29uc3Qgc2tpbGxzRGlyID0gcGF0aC5qb2luKGFnZW50RGlyLCBcInNraWxsc1wiKTtcbiAgY29uc3QgZW50cmllcyA9IGxpc3REaXIoc2tpbGxzRGlyKTtcbiAgY29uc3Qgc2tpbGxzOiBTa2lsbElucHV0W10gPSBbXTtcbiAgY29uc3QgdHNTa2lsbEltcG9ydFBhdGhzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcy5zb3J0KCkpIHtcbiAgICBjb25zdCBhYnNvbHV0ZVBhdGggPSBwYXRoLmpvaW4oc2tpbGxzRGlyLCBlbnRyeSk7XG5cbiAgICBpZiAoTURfRVhULnRlc3QoZW50cnkpKSB7XG4gICAgICBza2lsbHMucHVzaCh7XG4gICAgICAgIHR5cGU6IFwiaG9zdFwiLFxuICAgICAgICBwYXRoOiBhYnNvbHV0ZVBhdGgsXG4gICAgICB9IHNhdGlzZmllcyBIb3N0U2tpbGxJbnB1dCk7XG4gICAgfSBlbHNlIGlmIChUU19FWFQudGVzdChlbnRyeSkpIHtcbiAgICAgIHRzU2tpbGxJbXBvcnRQYXRocy5wdXNoKGFic29sdXRlUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHsgc2tpbGxzLCB0c1NraWxsSW1wb3J0UGF0aHMgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFN5c3RlbVByb21wdChhZ2VudERpcjogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3Qgc3lzdGVtRGlyID0gcGF0aC5qb2luKGFnZW50RGlyLCBcInN5c3RlbVwiKTtcbiAgY29uc3QgZW50cmllcyA9IGxpc3REaXIoc3lzdGVtRGlyKTtcbiAgY29uc3QgbWRGaWxlcyA9IGVudHJpZXMuZmlsdGVyKChlKSA9PiBNRF9FWFQudGVzdChlKSkuc29ydCgpO1xuXG4gIGlmIChtZEZpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBwYXJ0czogc3RyaW5nW10gPSBbXTtcbiAgZm9yIChjb25zdCBmaWxlIG9mIG1kRmlsZXMpIHtcbiAgICBjb25zdCBjb250ZW50ID0gcmVhZEZpbGUocGF0aC5qb2luKHN5c3RlbURpciwgZmlsZSkpLnRyaW0oKTtcbiAgICBpZiAoY29udGVudCkge1xuICAgICAgcGFydHMucHVzaChjb250ZW50KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcGFydHMubGVuZ3RoID4gMCA/IHBhcnRzLmpvaW4oXCJcXG5cXG5cIikgOiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUb29scyhhZ2VudERpcjogc3RyaW5nKTogU2Nhbm5lZFRvb2xbXSB7XG4gIGNvbnN0IHRvb2xzRGlyID0gcGF0aC5qb2luKGFnZW50RGlyLCBcInRvb2xzXCIpO1xuICBjb25zdCBlbnRyaWVzID0gbGlzdERpcih0b29sc0Rpcik7XG4gIGNvbnN0IHRvb2xzOiBTY2FubmVkVG9vbFtdID0gW107XG5cbiAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzLnNvcnQoKSkge1xuICAgIGNvbnN0IGFic29sdXRlUGF0aCA9IHBhdGguam9pbih0b29sc0RpciwgZW50cnkpO1xuXG4gICAgaWYgKGlzRGlyZWN0b3J5KGFic29sdXRlUGF0aCkpIHtcbiAgICAgIGNvbnN0IGluZGV4RmlsZSA9IGZpbmRJbmRleEZpbGUoYWJzb2x1dGVQYXRoKTtcbiAgICAgIGlmIChpbmRleEZpbGUpIHtcbiAgICAgICAgdG9vbHMucHVzaCh7IG5hbWU6IGVudHJ5LCBpbXBvcnRQYXRoOiBpbmRleEZpbGUgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChUU19FWFQudGVzdChlbnRyeSkpIHtcbiAgICAgIGNvbnN0IG5hbWUgPSBlbnRyeS5yZXBsYWNlKFRTX0VYVCwgXCJcIik7XG4gICAgICB0b29scy5wdXNoKHsgbmFtZSwgaW1wb3J0UGF0aDogYWJzb2x1dGVQYXRoIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0b29scztcbn1cblxuZnVuY3Rpb24gZmluZEluZGV4RmlsZShkaXI6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICBjb25zdCBleHRlbnNpb25zID0gW1wiLnRzXCIsIFwiLmpzXCIsIFwiLm10c1wiLCBcIi5tanNcIl07XG4gIGZvciAoY29uc3QgZXh0IG9mIGV4dGVuc2lvbnMpIHtcbiAgICBjb25zdCBjYW5kaWRhdGUgPSBwYXRoLmpvaW4oZGlyLCBgaW5kZXgke2V4dH1gKTtcbiAgICBpZiAoZmlsZUV4aXN0cyhjYW5kaWRhdGUpKSB7XG4gICAgICByZXR1cm4gY2FuZGlkYXRlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNjYW5BZ2VudChhZ2VudERpcjogQWdlbnREaXIpOiBTY2FubmVkQWdlbnQge1xuICBjb25zdCB7IHNraWxscywgdHNTa2lsbEltcG9ydFBhdGhzIH0gPSBnZXRTa2lsbHMoYWdlbnREaXIuYWJzb2x1dGVQYXRoKTtcbiAgY29uc3Qgc3lzdGVtUHJvbXB0ID0gZ2V0U3lzdGVtUHJvbXB0KGFnZW50RGlyLmFic29sdXRlUGF0aCk7XG4gIGNvbnN0IHRvb2xzID0gZ2V0VG9vbHMoYWdlbnREaXIuYWJzb2x1dGVQYXRoKTtcblxuICByZXR1cm4geyAuLi5hZ2VudERpciwgc2tpbGxzLCBzeXN0ZW1Qcm9tcHQsIHRzU2tpbGxJbXBvcnRQYXRocywgdG9vbHMgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRBZ2VudHNSb290KFxuICBjd2Q6IHN0cmluZyxcbiAgdXNlckRlZmluZWRBZ2VudHNEaXI6IHN0cmluZyB8IHVuZGVmaW5lZFxuKTogc3RyaW5nIHwgbnVsbCB7XG4gIGlmICh1c2VyRGVmaW5lZEFnZW50c0Rpcikge1xuICAgIHJldHVybiBwYXRoLnJlc29sdmUoY3dkLCB1c2VyRGVmaW5lZEFnZW50c0Rpcik7XG4gIH1cbiAgY29uc3QgY2FuZGlkYXRlcyA9IFtcbiAgICBwYXRoLmpvaW4oY3dkLCBcInNyY1wiLCBcImFnZW50c1wiKSxcbiAgICBwYXRoLmpvaW4oY3dkLCBcImFnZW50c1wiKSxcbiAgXTtcblxuICBmb3IgKGNvbnN0IGNhbmRpZGF0ZSBvZiBjYW5kaWRhdGVzKSB7XG4gICAgaWYgKGlzRGlyZWN0b3J5KGNhbmRpZGF0ZSkpIHtcbiAgICAgIHJldHVybiBjYW5kaWRhdGU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG4iLCAiaW1wb3J0IHsgZ2VuZXJhdGVSZWdpc3RyeSB9IGZyb20gXCIuL2dlbmVyYXRlXCI7XG5pbXBvcnQgdHlwZSB7IFNjYW5uZWRBZ2VudCB9IGZyb20gXCIuL3NjYW5cIjtcbmltcG9ydCB7IGRpc2NvdmVyQWdlbnREaXJzLCBmaW5kQWdlbnRzUm9vdCwgc2NhbkFnZW50IH0gZnJvbSBcIi4vc2NhblwiO1xuXG4vKipcbiAqIEZyYW1ld29yay1hZ25vc3RpYyBjb3JlIGZvciBmaWxlc3lzdGVtLWJhc2VkIGFnZW50IGRpc2NvdmVyeSBhbmRcbiAqIHJlZ2lzdHJ5IGNvZGUgZ2VuZXJhdGlvbi4gQWRhcHRlcnMgbGlrZSB7QGxpbmsgTmV4dH0gcmVjZWl2ZSBhXG4gKiBgRnJhbWV3b3JrYCBpbnN0YW5jZSBhbmQgdXNlIGl0IHRvIHNjYW4gYWdlbnRzIGFuZCBwcm9kdWNlIHJlZ2lzdHJ5XG4gKiBzb3VyY2UgY29kZS5cbiAqL1xuZXhwb3J0IGNsYXNzIEZyYW1ld29yayB7XG4gIHJlYWRvbmx5IGN3ZDogc3RyaW5nO1xuICByZWFkb25seSBhZ2VudHNEaXI6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgbG9nOiAoLi4uYXJnczogdW5rbm93bltdKSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKG9wdHM6IHtcbiAgICAvKipcbiAgICAgKiBQcm9qZWN0IHJvb3QgZGlyZWN0b3J5LlxuICAgICAqIEBkZWZhdWx0VmFsdWUgYHByb2Nlc3MuY3dkKClgXG4gICAgICovXG4gICAgY3dkPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFBhdGggdG8gdGhlIGFnZW50cyBkaXJlY3RvcnksIHJlbGF0aXZlIHRvIGBjd2RgLlxuICAgICAqIFdoZW4gb21pdHRlZCwgYXV0by1kZXRlY3RlZCBhcyB0aGUgZmlyc3QgZXhpc3RpbmcgZGlyZWN0b3J5XG4gICAgICogYW1vbmcgYHNyYy9hZ2VudHNgIGFuZCBgYWdlbnRzYC5cbiAgICAgKi9cbiAgICBhZ2VudHNEaXI/OiBzdHJpbmc7XG4gICAgLyoqIEVuYWJsZSB2ZXJib3NlIGxvZ2dpbmcgdG8gc3Rkb3V0LiAqL1xuICAgIGRlYnVnPzogYm9vbGVhbjtcbiAgfSkge1xuICAgIHRoaXMuY3dkID0gb3B0cy5jd2QgPz8gcHJvY2Vzcy5jd2QoKTtcbiAgICB0aGlzLmFnZW50c0RpciA9IG9wdHMuYWdlbnRzRGlyO1xuICAgIHRoaXMubG9nID0gb3B0cy5kZWJ1Z1xuICAgICAgPyBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUsIFwiW0ZyYW1ld29ya11cIilcbiAgICAgIDogKCkgPT4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFNjYW4gdGhlIGFnZW50cyBkaXJlY3RvcnkgYW5kIHJldHVybiBtZXRhZGF0YSBmb3IgZXZlcnkgYWdlbnQgZm91bmQuXG4gICAqIEVhY2ggc3ViZm9sZGVyIGluc2lkZSB0aGUgYWdlbnRzIGRpcmVjdG9yeSBiZWNvbWVzIG9uZSBhZ2VudC5cbiAgICogUmV0dXJucyBhbiBlbXB0eSBhcnJheSB3aGVuIG5vIGFnZW50cyBkaXJlY3RvcnkgZXhpc3RzLlxuICAgKi9cbiAgZGlzY292ZXJBZ2VudHMoKTogU2Nhbm5lZEFnZW50W10ge1xuICAgIGNvbnN0IHJvb3QgPSBmaW5kQWdlbnRzUm9vdCh0aGlzLmN3ZCwgdGhpcy5hZ2VudHNEaXIpO1xuICAgIGlmICghcm9vdCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBjb25zdCBkaXJzID0gZGlzY292ZXJBZ2VudERpcnMocm9vdCk7XG4gICAgcmV0dXJuIGRpcnMubWFwKHNjYW5BZ2VudCk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgdGhlIFR5cGVTY3JpcHQgc291cmNlIGZvciBhbiBhZ2VudCByZWdpc3RyeSBtb2R1bGUuXG4gICAqXG4gICAqIEBwYXJhbSBvcHRzLmFnZW50cyAtIFNjYW5uZWQgYWdlbnRzIHRvIGluY2x1ZGUgaW4gdGhlIHJlZ2lzdHJ5LlxuICAgKiBAcGFyYW0gb3B0cy5vdXRwdXREaXIgLSBEaXJlY3Rvcnkgd2hlcmUgdGhlIHJlZ2lzdHJ5IGZpbGUgd2lsbCBiZSB3cml0dGVuXG4gICAqICAgKHVzZWQgdG8gY29tcHV0ZSByZWxhdGl2ZSBpbXBvcnQgcGF0aHMgdG8gZWFjaCBhZ2VudCdzIGNvbmZpZyBtb2R1bGUpLlxuICAgKiBAcmV0dXJucyBUaGUgZnVsbCBzb3VyY2UgdGV4dCBvZiB0aGUgZ2VuZXJhdGVkIGBfcmVnaXN0cnkudHNgIGZpbGUuXG4gICAqL1xuICBnZW5lcmF0ZVJlZ2lzdHJ5U291cmNlID0gZ2VuZXJhdGVSZWdpc3RyeTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7OztBQ0FBLFNBQW9CO0FBQ3BCLFdBQXNCO0FBR3RCLElB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QUNyQyxZQUFNLEtBQUssRUFBRSxNQUFNLFlBQVksYUFBYSxDQUFDO0FBQUEsSUFDL0M7QUFBQSxFQUNGO0FBRUEsU0FBTztBQUNUO0FBRUEsU0FBUyxjQUFjLEtBQTRCO0FBQ2pELFFBQU0sYUFBYSxDQUFDLE9BQU8sT0FBTyxRQUFRLE1BQU07QUFDaEQsYUFBVyxPQUFPLFlBQVk7QUFDNUIsVUFBTSxZQUFpQixXQUFLLEtBQUssUUFBUSxHQUFHLEVBQUU7QUFDOUMsUUFBSSxXQUFXLFNBQVMsR0FBRztBQUN6QixhQUFPO0FBQUEsSUFDVDtBQUFBLEVBQ0Y7QUFDQSxTQUFPO0FBQ1Q7QUFFTyxTQUFTLFVBQVUsVUFBa0M7QUFDMUQsUUFBTSxFQUFFLFFBQVEsbUJBQW1CLElBQUksVUFBVSxTQUFTLFlBQVk7QUFDdEUsUUFBTSxlQUFlLGdCQUFnQixTQUFTLFlBQVk7QUFDMUQsUUFBTSxRQUFRLFNBQVMsU0FBUyxZQUFZO0FBRTVDLFNBQU8sRUFBRSxHQUFHLFVBQVUsUUFBUSxjQUFjLG9CQUFvQixNQUFNO0FBQ3hFO0FBRU8sU0FBUyxlQUNkLEtBQ0Esc0JBQ2U7QUFDZixNQUFJLHNCQUFzQjtBQUN4QixXQUFZLGNBQVEsS0FBSyxvQkFBb0I7QUFBQSxFQUMvQztBQUNBLFFBQU0sYUFBYTtBQUFBLElBQ1osV0FBSyxLQUFLLE9BQU8sUUFBUTtBQUFBLElBQ3pCLFdBQUssS0FBSyxRQUFRO0FBQUEsRUFDekI7QUFFQSxhQUFXLGFBQWEsWUFBWTtBQUNsQyxRQUFJLFlBQVksU0FBUyxHQUFHO0FBQzFCLGFBQU87QUFBQSxJQUNUO0FBQUEsRUFDRjtBQUVBLFNBQU87QUFDVDs7O0FDdktPLElBQU0sWUFBTixNQUFnQjtBQUFBLEVBQ1o7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBRVQsWUFBWSxNQWNUO0FBQ0QsU0FBSyxNQUFNLEtBQUssT0FBTyxRQUFRLElBQUk7QUFDbkMsU0FBSyxZQUFZLEtBQUs7QUFDdEIsU0FBSyxNQUFNLEtBQUssUUFDWixRQUFRLElBQUksS0FBSyxTQUFTLGFBQWEsSUFDdkMsTUFBTTtBQUFBLEVBQ1o7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPQSxpQkFBaUM7QUFDL0IsVUFBTSxPQUFPLGVBQWUsS0FBSyxLQUFLLEtBQUssU0FBUztBQUNwRCxRQUFJLENBQUMsTUFBTTtBQUNULGFBQU8sQ0FBQztBQUFBLElBQ1Y7QUFDQSxVQUFNLE9BQU8sa0JBQWtCLElBQUk7QUFDbkMsV0FBTyxLQUFLLElBQUksU0FBUztBQUFBLEVBQzNCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBVUEseUJBQXlCO0FBQzNCOyIsCiAgIm5hbWVzIjogWyJmcyIsICJwYXRoIl0KfQo=
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Framework
3
- } from "./chunk-DO4HKPHR.mjs";
3
+ } from "./chunk-HPBAZJLN.mjs";
4
4
  import "./chunk-BJTO5JO5.mjs";
5
5
  export {
6
6
  Framework
package/dist/index.d.mts CHANGED
@@ -1,5 +1,5 @@
1
- import { T as ToolContext, A as AnyAgent, S as SessionSendArgs, b as SendResult } from './client-PuttJd6O.mjs';
2
- export { c as AgentDataTypes, d as AgentHooks, e as AgentOptions, a as AgentStatus, f as ApprovalData, B as BuiltInToolName, I as InferSession, g as InferUIMessage, N as NeedsApprovalMap, R as Resolvable, h as ResolvableArgs, i as SendInput, j as SessionDefaults, k as StepUsage, U as UsageSummary, W as WorkflowRunLike, l as agent, m as builtinToolNames } from './client-PuttJd6O.mjs';
1
+ import { T as ToolContext, A as AnyAgent, S as SessionSendArgs, b as SendResult } from './client-BaItaOx5.mjs';
2
+ export { c as AgentDataTypes, d as AgentHooks, e as AgentOptions, a as AgentStatus, f as ApprovalData, B as BuiltInToolName, I as InferSession, g as InferUIMessage, N as NeedsApprovalMap, R as Resolvable, h as ResolvableArgs, i as SendInput, j as SessionDefaults, k as StepUsage, U as UsageSummary, W as WorkflowRunLike, l as agent, m as builtinToolNames } from './client-BaItaOx5.mjs';
3
3
  import * as errore from 'errore';
4
4
  import * as ai from 'ai';
5
5
  import { Tool } from 'ai';
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { T as ToolContext, A as AnyAgent, S as SessionSendArgs, b as SendResult } from './client-DIanpEQ_.js';
2
- export { c as AgentDataTypes, d as AgentHooks, e as AgentOptions, a as AgentStatus, f as ApprovalData, B as BuiltInToolName, I as InferSession, g as InferUIMessage, N as NeedsApprovalMap, R as Resolvable, h as ResolvableArgs, i as SendInput, j as SessionDefaults, k as StepUsage, U as UsageSummary, W as WorkflowRunLike, l as agent, m as builtinToolNames } from './client-DIanpEQ_.js';
1
+ import { T as ToolContext, A as AnyAgent, S as SessionSendArgs, b as SendResult } from './client-BY6gceox.js';
2
+ export { c as AgentDataTypes, d as AgentHooks, e as AgentOptions, a as AgentStatus, f as ApprovalData, B as BuiltInToolName, I as InferSession, g as InferUIMessage, N as NeedsApprovalMap, R as Resolvable, h as ResolvableArgs, i as SendInput, j as SessionDefaults, k as StepUsage, U as UsageSummary, W as WorkflowRunLike, l as agent, m as builtinToolNames } from './client-BY6gceox.js';
3
3
  import * as errore from 'errore';
4
4
  import * as ai from 'ai';
5
5
  import { Tool } from 'ai';