experimental-agent 0.7.1 → 0.8.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-DO4HKPHR.mjs +199 -0
- package/dist/chunk-EH4L2CPW.mjs +3779 -0
- package/dist/chunk-LMYEJDMD.mjs +123 -0
- package/dist/{client-D4AiVqFt.d.ts → client-DIanpEQ_.d.ts} +8 -53
- package/dist/{client-DCtmZCY8.d.mts → client-PuttJd6O.d.mts} +8 -53
- package/dist/framework-DH4Z1NLV.d.ts +61 -0
- package/dist/framework-c9fvEy0o.d.mts +61 -0
- package/dist/framework-runtime.d.mts +37 -0
- package/dist/framework-runtime.d.ts +37 -0
- package/dist/framework-runtime.js +5431 -0
- package/dist/framework-runtime.mjs +107 -0
- package/dist/framework.d.mts +11 -0
- package/dist/framework.d.ts +11 -0
- package/dist/framework.js +235 -0
- package/dist/framework.mjs +8 -0
- package/dist/index.d.mts +30 -7
- package/dist/index.d.ts +30 -7
- package/dist/index.js +50 -4
- package/dist/index.mjs +159 -3863
- package/dist/next/agents.d.mts +43 -0
- package/dist/next/agents.d.ts +43 -0
- package/dist/next/agents.js +364 -0
- package/dist/next/agents.mjs +137 -0
- package/dist/next/loader.js +18 -2
- package/dist/next/loader.mjs +1 -1
- package/dist/next.js +18 -2
- package/dist/next.mjs +1 -1
- package/dist/react.d.mts +2 -1
- package/dist/react.d.ts +2 -1
- package/dist/resolve-BZ26gcyj.d.ts +34 -0
- package/dist/resolve-Cma6YFgx.d.mts +34 -0
- package/dist/sandbox.mjs +2 -2
- package/dist/types-B3lbsOa7.d.mts +53 -0
- package/dist/types-B3lbsOa7.d.ts +53 -0
- package/package.json +29 -13
- package/dist/chunk-ZIXWGYE5.mjs +0 -107
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import {
|
|
2
|
+
agent
|
|
3
|
+
} from "./chunk-EH4L2CPW.mjs";
|
|
4
|
+
import "./chunk-C4VSUEY2.mjs";
|
|
5
|
+
import "./chunk-CS2SEUAA.mjs";
|
|
6
|
+
import "./chunk-MSWINCCM.mjs";
|
|
7
|
+
import "./chunk-BJTO5JO5.mjs";
|
|
8
|
+
|
|
9
|
+
// src/framework-runtime/merge-options.ts
|
|
10
|
+
function mergeFrameworkOptions(base, overlay) {
|
|
11
|
+
const merged = { ...base };
|
|
12
|
+
if (overlay.system !== void 0) {
|
|
13
|
+
if (base.system === void 0) {
|
|
14
|
+
merged.system = overlay.system;
|
|
15
|
+
} else if (typeof base.system === "function") {
|
|
16
|
+
const baseFn = base.system;
|
|
17
|
+
merged.system = async (args) => {
|
|
18
|
+
const resolved = await baseFn(args);
|
|
19
|
+
if (resolved === void 0) {
|
|
20
|
+
return overlay.system;
|
|
21
|
+
}
|
|
22
|
+
const baseArr = Array.isArray(resolved) ? resolved : [resolved];
|
|
23
|
+
return [...baseArr, overlay.system];
|
|
24
|
+
};
|
|
25
|
+
} else {
|
|
26
|
+
const baseArr = Array.isArray(base.system) ? base.system : [base.system];
|
|
27
|
+
merged.system = [...baseArr, overlay.system];
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
if (overlay.skills !== void 0) {
|
|
31
|
+
if (base.skills === void 0) {
|
|
32
|
+
merged.skills = overlay.skills;
|
|
33
|
+
} else if (typeof base.skills === "function") {
|
|
34
|
+
const baseFn = base.skills;
|
|
35
|
+
merged.skills = async (args) => {
|
|
36
|
+
const resolved = await baseFn(args);
|
|
37
|
+
return [...resolved ?? [], ...overlay.skills];
|
|
38
|
+
};
|
|
39
|
+
} else {
|
|
40
|
+
merged.skills = [...base.skills, ...overlay.skills];
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return merged;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// src/framework-runtime/resolve.ts
|
|
47
|
+
var resolvedAgentCache = /* @__PURE__ */ new Map();
|
|
48
|
+
async function resolveFrameworkAgent(opts) {
|
|
49
|
+
const { name, agents } = opts;
|
|
50
|
+
if (!Object.hasOwn(agents, name)) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
const entry = agents[name];
|
|
54
|
+
const cacheKey = name + JSON.stringify(entry.config);
|
|
55
|
+
const cached = resolvedAgentCache.get(cacheKey);
|
|
56
|
+
if (cached) {
|
|
57
|
+
return cached;
|
|
58
|
+
}
|
|
59
|
+
const instance = await resolveEntry({ name, entry });
|
|
60
|
+
resolvedAgentCache.set(cacheKey, instance);
|
|
61
|
+
return instance;
|
|
62
|
+
}
|
|
63
|
+
async function resolveEntry(opts) {
|
|
64
|
+
const { name, entry } = opts;
|
|
65
|
+
if (typeof entry.import === "function") {
|
|
66
|
+
const mod = await entry.import();
|
|
67
|
+
if (!mod.default) {
|
|
68
|
+
throw new Error(
|
|
69
|
+
`Agent "${name}" module does not have a default export.
|
|
70
|
+
|
|
71
|
+
hint: agents/${name}/agent.ts must export a default agent instance.
|
|
72
|
+
|
|
73
|
+
import { agent } from "experimental-agent";
|
|
74
|
+
export default agent("${name}", { ... });
|
|
75
|
+
`
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
const imported = mod.default;
|
|
79
|
+
if (hasConfig(entry.config)) {
|
|
80
|
+
return imported.extend(
|
|
81
|
+
(base) => mergeFrameworkOptions(base, entry.config)
|
|
82
|
+
);
|
|
83
|
+
}
|
|
84
|
+
return imported;
|
|
85
|
+
}
|
|
86
|
+
return agent(name, entry.config);
|
|
87
|
+
}
|
|
88
|
+
function hasConfig(config) {
|
|
89
|
+
return Object.keys(config).length > 0;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// src/framework-runtime/index.ts
|
|
93
|
+
var runtime = {
|
|
94
|
+
/**
|
|
95
|
+
* Look up an agent by name from a generated registry, merging any
|
|
96
|
+
* filesystem-scanned config (system prompts, skills) on top of the
|
|
97
|
+
* agent's own options. Results are cached for the lifetime of the
|
|
98
|
+
* process.
|
|
99
|
+
*
|
|
100
|
+
* Returns `null` when the name doesn't match any registry entry.
|
|
101
|
+
*/
|
|
102
|
+
resolveAgent: resolveFrameworkAgent
|
|
103
|
+
};
|
|
104
|
+
export {
|
|
105
|
+
runtime
|
|
106
|
+
};
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2ZyYW1ld29yay1ydW50aW1lL21lcmdlLW9wdGlvbnMudHMiLCAiLi4vc3JjL2ZyYW1ld29yay1ydW50aW1lL3Jlc29sdmUudHMiLCAiLi4vc3JjL2ZyYW1ld29yay1ydW50aW1lL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgdHlwZSB7IEFnZW50T3B0aW9ucyB9IGZyb20gXCIuLi9hZ2VudC9jbGllbnRcIjtcbmltcG9ydCB0eXBlIHsgRnNBZ2VudENvbmZpZyB9IGZyb20gXCIuLi9mcmFtZXdvcmstcnVudGltZS9yZXNvbHZlXCI7XG5cbi8qKlxuICogTWVyZ2UgZnMtc2Nhbm5lZCBjb25maWcgb24gdG9wIG9mIHRoZSBhZ2VudC50cyBiYXNlIGNvbmZpZy5cbiAqIFNraWxscyBhcmUgYXBwZW5kZWQuIFN5c3RlbSBwcm9tcHRzIGFyZSBjb25jYXRlbmF0ZWQgKGFycmF5cykuXG4gKiBUaGUgYmFzZSBvcHRpb25zIG1heSBjb250YWluIFJlc29sdmFibGUgdmFsdWVzIChmdW5jdGlvbnMpOyB3aGVuXG4gKiB0aGUgb3ZlcmxheSBoYXMgYSBzdGF0aWMgdmFsdWUgd2Ugd3JhcCB0aGUgYmFzZSByZXNvbHZhYmxlIHNvIHRoZVxuICogZnMgdmFsdWVzIGdldCBhcHBlbmRlZCBhdCByZXNvbHZlIHRpbWUuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlRnJhbWV3b3JrT3B0aW9ucyhcbiAgYmFzZTogQWdlbnRPcHRpb25zLFxuICBvdmVybGF5OiBGc0FnZW50Q29uZmlnXG4pOiBBZ2VudE9wdGlvbnMge1xuICBjb25zdCBtZXJnZWQ6IEFnZW50T3B0aW9ucyA9IHsgLi4uYmFzZSB9O1xuXG4gIGlmIChvdmVybGF5LnN5c3RlbSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKGJhc2Uuc3lzdGVtID09PSB1bmRlZmluZWQpIHtcbiAgICAgIG1lcmdlZC5zeXN0ZW0gPSBvdmVybGF5LnN5c3RlbTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBiYXNlLnN5c3RlbSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICBjb25zdCBiYXNlRm4gPSBiYXNlLnN5c3RlbTtcbiAgICAgIG1lcmdlZC5zeXN0ZW0gPSBhc3luYyAoYXJncykgPT4ge1xuICAgICAgICBjb25zdCByZXNvbHZlZCA9IGF3YWl0IGJhc2VGbihhcmdzKTtcbiAgICAgICAgaWYgKHJlc29sdmVkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXR1cm4gb3ZlcmxheS5zeXN0ZW07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYmFzZUFyciA9IEFycmF5LmlzQXJyYXkocmVzb2x2ZWQpID8gcmVzb2x2ZWQgOiBbcmVzb2x2ZWRdO1xuICAgICAgICByZXR1cm4gWy4uLmJhc2VBcnIsIG92ZXJsYXkuc3lzdGVtIV07XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBiYXNlQXJyID0gQXJyYXkuaXNBcnJheShiYXNlLnN5c3RlbSkgPyBiYXNlLnN5c3RlbSA6IFtiYXNlLnN5c3RlbV07XG4gICAgICBtZXJnZWQuc3lzdGVtID0gWy4uLmJhc2VBcnIsIG92ZXJsYXkuc3lzdGVtXTtcbiAgICB9XG4gIH1cblxuICBpZiAob3ZlcmxheS5za2lsbHMgIT09IHVuZGVmaW5lZCkge1xuICAgIGlmIChiYXNlLnNraWxscyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBtZXJnZWQuc2tpbGxzID0gb3ZlcmxheS5za2lsbHM7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgYmFzZS5za2lsbHMgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgY29uc3QgYmFzZUZuID0gYmFzZS5za2lsbHM7XG4gICAgICBtZXJnZWQuc2tpbGxzID0gYXN5bmMgKGFyZ3MpID0+IHtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWQgPSBhd2FpdCBiYXNlRm4oYXJncyk7XG4gICAgICAgIHJldHVybiBbLi4uKHJlc29sdmVkID8/IFtdKSwgLi4ub3ZlcmxheS5za2lsbHMhXTtcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIG1lcmdlZC5za2lsbHMgPSBbLi4uYmFzZS5za2lsbHMsIC4uLm92ZXJsYXkuc2tpbGxzXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWVyZ2VkO1xufVxuIiwgImltcG9ydCB7IHR5cGUgQW55QWdlbnQsIGFnZW50IGFzIGNyZWF0ZUFnZW50IH0gZnJvbSBcIi4uL2FnZW50L2NsaWVudFwiO1xuaW1wb3J0IHR5cGUgeyBTa2lsbElucHV0IH0gZnJvbSBcIi4uL3NraWxscy90eXBlc1wiO1xuaW1wb3J0IHsgbWVyZ2VGcmFtZXdvcmtPcHRpb25zIH0gZnJvbSBcIi4vbWVyZ2Utb3B0aW9uc1wiO1xuXG4vKipcbiAqIFRoZSBzdWJzZXQgb2YgQWdlbnRPcHRpb25zIHRoYXQgY2FuIGNvbWUgZnJvbSB0aGUgZmlsZXN5c3RlbSBzY2FubmVyLlxuICogQWx3YXlzIHBsYWluIHZhbHVlcyBcdTIwMTQgbmV2ZXIgUmVzb2x2YWJsZSBmdW5jdGlvbnMuXG4gKi9cbmV4cG9ydCB0eXBlIEZzQWdlbnRDb25maWcgPSB7XG4gIHN5c3RlbT86IHN0cmluZztcbiAgc2tpbGxzPzogU2tpbGxJbnB1dFtdO1xufTtcblxuLyoqXG4gKiBBIHNpbmdsZSBlbnRyeSBpbiB0aGUgZ2VuZXJhdGVkIGFnZW50IHJlZ2lzdHJ5LlxuICogQ29udGFpbnMgdGhlIGZpbGVzeXN0ZW0tc2Nhbm5lZCBjb25maWcgYW5kIGFuIG9wdGlvbmFsIGR5bmFtaWMgaW1wb3J0XG4gKiBmb3IgYWdlbnRzIHRoYXQgaGF2ZSBhbiBgYWdlbnQudHNgIG1vZHVsZS5cbiAqL1xuZXhwb3J0IHR5cGUgQWdlbnRSZWdpc3RyeUVudHJ5ID0ge1xuICBjb25maWc6IEZzQWdlbnRDb25maWc7XG4gIGltcG9ydD86ICgpID0+IFByb21pc2U8eyBkZWZhdWx0PzogdW5rbm93biB9Pjtcbn07XG5cbi8qKlxuICogTWFwIG9mIGFnZW50IG5hbWUgdG8gcmVnaXN0cnkgZW50cnksIHByb2R1Y2VkIGJ5IHRoZSBnZW5lcmF0ZWRcbiAqIGBfcmVnaXN0cnkudHNgIGZpbGUgYW5kIGNvbnN1bWVkIGJ5IHtAbGluayBydW50aW1lLnJlc29sdmVBZ2VudH1cbiAqIGF0IHJlcXVlc3QgdGltZS5cbiAqL1xuZXhwb3J0IHR5cGUgQWdlbnRSZWdpc3RyeSA9IFJlY29yZDxzdHJpbmcsIEFnZW50UmVnaXN0cnlFbnRyeT47XG5cbmNvbnN0IHJlc29sdmVkQWdlbnRDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBBbnlBZ2VudD4oKTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc29sdmVGcmFtZXdvcmtBZ2VudChvcHRzOiB7XG4gIG5hbWU6IHN0cmluZztcbiAgYWdlbnRzOiBBZ2VudFJlZ2lzdHJ5O1xufSk6IFByb21pc2U8QW55QWdlbnQgfCBudWxsPiB7XG4gIGNvbnN0IHsgbmFtZSwgYWdlbnRzIH0gPSBvcHRzO1xuXG4gIGlmICghT2JqZWN0Lmhhc093bihhZ2VudHMsIG5hbWUpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBlbnRyeSA9IGFnZW50c1tuYW1lXTtcbiAgY29uc3QgY2FjaGVLZXkgPSBuYW1lICsgSlNPTi5zdHJpbmdpZnkoZW50cnkuY29uZmlnKTtcbiAgY29uc3QgY2FjaGVkID0gcmVzb2x2ZWRBZ2VudENhY2hlLmdldChjYWNoZUtleSk7XG4gIGlmIChjYWNoZWQpIHtcbiAgICByZXR1cm4gY2FjaGVkO1xuICB9XG5cbiAgY29uc3QgaW5zdGFuY2UgPSBhd2FpdCByZXNvbHZlRW50cnkoeyBuYW1lLCBlbnRyeSB9KTtcbiAgcmVzb2x2ZWRBZ2VudENhY2hlLnNldChjYWNoZUtleSwgaW5zdGFuY2UpO1xuICByZXR1cm4gaW5zdGFuY2U7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlc29sdmVFbnRyeShvcHRzOiB7XG4gIG5hbWU6IHN0cmluZztcbiAgZW50cnk6IEFnZW50UmVnaXN0cnlFbnRyeTtcbn0pOiBQcm9taXNlPEFueUFnZW50PiB7XG4gIGNvbnN0IHsgbmFtZSwgZW50cnkgfSA9IG9wdHM7XG5cbiAgaWYgKHR5cGVvZiBlbnRyeS5pbXBvcnQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgIGNvbnN0IG1vZCA9IGF3YWl0IGVudHJ5LmltcG9ydCgpO1xuICAgIGlmICghbW9kLmRlZmF1bHQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEFnZW50IFwiJHtuYW1lfVwiIG1vZHVsZSBkb2VzIG5vdCBoYXZlIGEgZGVmYXVsdCBleHBvcnQuXFxuXFxuYCArXG4gICAgICAgICAgYGhpbnQ6IGFnZW50cy8ke25hbWV9L2FnZW50LnRzIG11c3QgZXhwb3J0IGEgZGVmYXVsdCBhZ2VudCBpbnN0YW5jZS5cXG5cXG5gICtcbiAgICAgICAgICBgICBpbXBvcnQgeyBhZ2VudCB9IGZyb20gXCJleHBlcmltZW50YWwtYWdlbnRcIjtcXG5gICtcbiAgICAgICAgICBgICBleHBvcnQgZGVmYXVsdCBhZ2VudChcIiR7bmFtZX1cIiwgeyAuLi4gfSk7XFxuYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbXBvcnRlZCA9IG1vZC5kZWZhdWx0IGFzIEFueUFnZW50O1xuXG4gICAgaWYgKGhhc0NvbmZpZyhlbnRyeS5jb25maWcpKSB7XG4gICAgICByZXR1cm4gaW1wb3J0ZWQuZXh0ZW5kKChiYXNlKSA9PlxuICAgICAgICBtZXJnZUZyYW1ld29ya09wdGlvbnMoYmFzZSwgZW50cnkuY29uZmlnKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW1wb3J0ZWQ7XG4gIH1cblxuICByZXR1cm4gY3JlYXRlQWdlbnQobmFtZSwgZW50cnkuY29uZmlnKTtcbn1cblxuZnVuY3Rpb24gaGFzQ29uZmlnKGNvbmZpZzogRnNBZ2VudENvbmZpZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gT2JqZWN0LmtleXMoY29uZmlnKS5sZW5ndGggPiAwO1xufVxuIiwgImltcG9ydCB7IHJlc29sdmVGcmFtZXdvcmtBZ2VudCB9IGZyb20gXCIuL3Jlc29sdmVcIjtcblxuLyoqXG4gKiBSZXF1ZXN0LXRpbWUgdXRpbGl0aWVzIGZvciB0aGUgZnJhbWV3b3JrIHJvdXRlci5cbiAqXG4gKiBVc2VkIGluc2lkZSBnZW5lcmF0ZWQgcm91dGUgaGFuZGxlcnMgdG8gcmVzb2x2ZSBhbiBhZ2VudCBieSBuYW1lXG4gKiBmcm9tIGEgcmVnaXN0cnkgcHJvZHVjZWQgYXQgYnVpbGQgdGltZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IHJ1bnRpbWUgfSBmcm9tIFwiZXhwZXJpbWVudGFsLWFnZW50L2ZyYW1ld29yay1ydW50aW1lXCI7XG4gKlxuICogY29uc3QgYWdlbnQgPSBhd2FpdCBydW50aW1lLnJlc29sdmVBZ2VudCh7IG5hbWUsIGFnZW50cyB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgcnVudGltZSA9IHtcbiAgLyoqXG4gICAqIExvb2sgdXAgYW4gYWdlbnQgYnkgbmFtZSBmcm9tIGEgZ2VuZXJhdGVkIHJlZ2lzdHJ5LCBtZXJnaW5nIGFueVxuICAgKiBmaWxlc3lzdGVtLXNjYW5uZWQgY29uZmlnIChzeXN0ZW0gcHJvbXB0cywgc2tpbGxzKSBvbiB0b3Agb2YgdGhlXG4gICAqIGFnZW50J3Mgb3duIG9wdGlvbnMuIFJlc3VsdHMgYXJlIGNhY2hlZCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZVxuICAgKiBwcm9jZXNzLlxuICAgKlxuICAgKiBSZXR1cm5zIGBudWxsYCB3aGVuIHRoZSBuYW1lIGRvZXNuJ3QgbWF0Y2ggYW55IHJlZ2lzdHJ5IGVudHJ5LlxuICAgKi9cbiAgcmVzb2x2ZUFnZW50OiByZXNvbHZlRnJhbWV3b3JrQWdlbnQsXG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7O0FBV08sU0FBUyxzQkFDZCxNQUNBLFNBQ2M7QUFDZCxRQUFNLFNBQXVCLEVBQUUsR0FBRyxLQUFLO0FBRXZDLE1BQUksUUFBUSxXQUFXLFFBQVc7QUFDaEMsUUFBSSxLQUFLLFdBQVcsUUFBVztBQUM3QixhQUFPLFNBQVMsUUFBUTtB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
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { F as Framework } from './framework-c9fvEy0o.mjs';
|
|
2
|
+
export { A as AgentRegistry, a as AgentRegistryEntry } from './resolve-Cma6YFgx.mjs';
|
|
3
|
+
import './types-B3lbsOa7.mjs';
|
|
4
|
+
import './client-PuttJd6O.mjs';
|
|
5
|
+
import '@vercel/sandbox';
|
|
6
|
+
import './steps-ChOeFWAq.mjs';
|
|
7
|
+
import './adapter-CFq5IeYI.mjs';
|
|
8
|
+
import '@workflow/serde';
|
|
9
|
+
import 'ai';
|
|
10
|
+
import './entry-CRBUC5DB.mjs';
|
|
11
|
+
import 'zod';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { F as Framework } from './framework-DH4Z1NLV.js';
|
|
2
|
+
export { A as AgentRegistry, a as AgentRegistryEntry } from './resolve-BZ26gcyj.js';
|
|
3
|
+
import './types-B3lbsOa7.js';
|
|
4
|
+
import './client-DIanpEQ_.js';
|
|
5
|
+
import '@vercel/sandbox';
|
|
6
|
+
import './steps-DWTQiAPt.js';
|
|
7
|
+
import './adapter-CFq5IeYI.js';
|
|
8
|
+
import '@workflow/serde';
|
|
9
|
+
import 'ai';
|
|
10
|
+
import './entry-BUYBv4Cu.js';
|
|
11
|
+
import 'zod';
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
|
|
30
|
+
// src/framework/index.ts
|
|
31
|
+
var framework_exports = {};
|
|
32
|
+
__export(framework_exports, {
|
|
33
|
+
Framework: () => Framework
|
|
34
|
+
});
|
|
35
|
+
module.exports = __toCommonJS(framework_exports);
|
|
36
|
+
|
|
37
|
+
// src/framework/generate.ts
|
|
38
|
+
var fs = __toESM(require("fs"));
|
|
39
|
+
var path = __toESM(require("path"));
|
|
40
|
+
var TS_IMPORT_EXT = /\.(ts|mts)$/;
|
|
41
|
+
function generateRegistry(opts) {
|
|
42
|
+
const entries = opts.agents.map(
|
|
43
|
+
(agent) => inlineEntry({ agent, outputDir: opts.outputDir })
|
|
44
|
+
);
|
|
45
|
+
return [
|
|
46
|
+
"// Auto-generated by withAgents - do not edit",
|
|
47
|
+
'import type { AgentRegistry } from "experimental-agent/framework";',
|
|
48
|
+
"",
|
|
49
|
+
"export const agents = {",
|
|
50
|
+
...entries,
|
|
51
|
+
"} satisfies AgentRegistry;",
|
|
52
|
+
""
|
|
53
|
+
].join("\n");
|
|
54
|
+
}
|
|
55
|
+
function inlineEntry(opts) {
|
|
56
|
+
const config = buildConfig(opts.agent);
|
|
57
|
+
const configStr = JSON.stringify(config, null, 2).split("\n").map((line, i) => i === 0 ? line : ` ${line}`).join("\n");
|
|
58
|
+
const parts = [` config: ${configStr}`];
|
|
59
|
+
if (opts.agent.hasAgentConfig) {
|
|
60
|
+
const configPath = findAgentConfigPath(opts.agent.absolutePath);
|
|
61
|
+
const relativePath = relativeImportPath({
|
|
62
|
+
from: opts.outputDir,
|
|
63
|
+
to: configPath
|
|
64
|
+
});
|
|
65
|
+
parts.push(` import: () => import(${JSON.stringify(relativePath)})`);
|
|
66
|
+
}
|
|
67
|
+
return ` ${JSON.stringify(opts.agent.name)}: {
|
|
68
|
+
${parts.join(",\n")}
|
|
69
|
+
},`;
|
|
70
|
+
}
|
|
71
|
+
function buildConfig(agent) {
|
|
72
|
+
const config = {};
|
|
73
|
+
if (agent.systemPrompt) {
|
|
74
|
+
config.system = agent.systemPrompt;
|
|
75
|
+
}
|
|
76
|
+
if (agent.skills.length > 0) {
|
|
77
|
+
config.skills = agent.skills;
|
|
78
|
+
}
|
|
79
|
+
return config;
|
|
80
|
+
}
|
|
81
|
+
function findAgentConfigPath(agentDir) {
|
|
82
|
+
const extensions = [".ts", ".js", ".mts", ".mjs"];
|
|
83
|
+
for (const ext of extensions) {
|
|
84
|
+
const candidate = path.join(agentDir, `agent${ext}`);
|
|
85
|
+
if (fs.existsSync(candidate)) {
|
|
86
|
+
return candidate;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return path.join(agentDir, "agent");
|
|
90
|
+
}
|
|
91
|
+
function relativeImportPath(opts) {
|
|
92
|
+
let rel = path.relative(opts.from, opts.to).replace(/\\/g, "/");
|
|
93
|
+
rel = rel.replace(TS_IMPORT_EXT, "");
|
|
94
|
+
if (!rel.startsWith(".")) {
|
|
95
|
+
rel = `./${rel}`;
|
|
96
|
+
}
|
|
97
|
+
return rel;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// src/framework/scan.ts
|
|
101
|
+
var fs2 = __toESM(require("fs"));
|
|
102
|
+
var path2 = __toESM(require("path"));
|
|
103
|
+
var AGENT_CONFIG_FILES = ["agent.ts", "agent.js", "agent.mts", "agent.mjs"];
|
|
104
|
+
var MD_EXT = /\.md$/;
|
|
105
|
+
var TS_EXT = /\.(ts|js|mts|mjs)$/;
|
|
106
|
+
function listDir(dir) {
|
|
107
|
+
if (!fs2.existsSync(dir)) {
|
|
108
|
+
return [];
|
|
109
|
+
}
|
|
110
|
+
return fs2.readdirSync(dir);
|
|
111
|
+
}
|
|
112
|
+
function readFile(filePath) {
|
|
113
|
+
return fs2.readFileSync(filePath, "utf-8");
|
|
114
|
+
}
|
|
115
|
+
function fileExists(filePath) {
|
|
116
|
+
return fs2.existsSync(filePath);
|
|
117
|
+
}
|
|
118
|
+
function isDirectory(filePath) {
|
|
119
|
+
return fs2.existsSync(filePath) && fs2.statSync(filePath).isDirectory();
|
|
120
|
+
}
|
|
121
|
+
function discoverAgentDirs(agentsRoot) {
|
|
122
|
+
const entries = listDir(agentsRoot);
|
|
123
|
+
const dirs = [];
|
|
124
|
+
for (const entry of entries) {
|
|
125
|
+
const absolutePath = path2.join(agentsRoot, entry);
|
|
126
|
+
if (!isDirectory(absolutePath)) {
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
if (entry.startsWith(".")) {
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
132
|
+
dirs.push({
|
|
133
|
+
name: entry,
|
|
134
|
+
absolutePath,
|
|
135
|
+
hasAgentConfig: hasAgentConfig(absolutePath)
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
return dirs;
|
|
139
|
+
}
|
|
140
|
+
function hasAgentConfig(agentDir) {
|
|
141
|
+
return AGENT_CONFIG_FILES.some((f) => fileExists(path2.join(agentDir, f)));
|
|
142
|
+
}
|
|
143
|
+
function getSkills(agentDir) {
|
|
144
|
+
const skillsDir = path2.join(agentDir, "skills");
|
|
145
|
+
const entries = listDir(skillsDir);
|
|
146
|
+
const skills = [];
|
|
147
|
+
const tsSkillImportPaths = [];
|
|
148
|
+
for (const entry of entries.sort()) {
|
|
149
|
+
const absolutePath = path2.join(skillsDir, entry);
|
|
150
|
+
if (MD_EXT.test(entry)) {
|
|
151
|
+
skills.push({
|
|
152
|
+
type: "host",
|
|
153
|
+
path: absolutePath
|
|
154
|
+
});
|
|
155
|
+
} else if (TS_EXT.test(entry)) {
|
|
156
|
+
tsSkillImportPaths.push(absolutePath);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return { skills, tsSkillImportPaths };
|
|
160
|
+
}
|
|
161
|
+
function getSystemPrompt(agentDir) {
|
|
162
|
+
const systemDir = path2.join(agentDir, "system");
|
|
163
|
+
const entries = listDir(systemDir);
|
|
164
|
+
const mdFiles = entries.filter((e) => MD_EXT.test(e)).sort();
|
|
165
|
+
if (mdFiles.length === 0) {
|
|
166
|
+
return void 0;
|
|
167
|
+
}
|
|
168
|
+
const parts = [];
|
|
169
|
+
for (const file of mdFiles) {
|
|
170
|
+
const content = readFile(path2.join(systemDir, file)).trim();
|
|
171
|
+
if (content) {
|
|
172
|
+
parts.push(content);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
return parts.length > 0 ? parts.join("\n\n") : void 0;
|
|
176
|
+
}
|
|
177
|
+
function scanAgent(agentDir) {
|
|
178
|
+
const { skills, tsSkillImportPaths } = getSkills(agentDir.absolutePath);
|
|
179
|
+
const systemPrompt = getSystemPrompt(agentDir.absolutePath);
|
|
180
|
+
return { ...agentDir, skills, systemPrompt, tsSkillImportPaths };
|
|
181
|
+
}
|
|
182
|
+
function findAgentsRoot(cwd, userDefinedAgentsDir) {
|
|
183
|
+
if (userDefinedAgentsDir) {
|
|
184
|
+
return path2.resolve(cwd, userDefinedAgentsDir);
|
|
185
|
+
}
|
|
186
|
+
const candidates = [
|
|
187
|
+
path2.join(cwd, "src", "agents"),
|
|
188
|
+
path2.join(cwd, "agents")
|
|
189
|
+
];
|
|
190
|
+
for (const candidate of candidates) {
|
|
191
|
+
if (isDirectory(candidate)) {
|
|
192
|
+
return candidate;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
return null;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
// src/framework/framework.ts
|
|
199
|
+
var Framework = class {
|
|
200
|
+
cwd;
|
|
201
|
+
agentsDir;
|
|
202
|
+
log;
|
|
203
|
+
constructor(opts) {
|
|
204
|
+
this.cwd = opts.cwd ?? process.cwd();
|
|
205
|
+
this.agentsDir = opts.agentsDir;
|
|
206
|
+
this.log = opts.debug ? console.log.bind(console, "[Framework]") : () => void 0;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Scan the agents directory and return metadata for every agent found.
|
|
210
|
+
* Each subfolder inside the agents directory becomes one agent.
|
|
211
|
+
* Returns an empty array when no agents directory exists.
|
|
212
|
+
*/
|
|
213
|
+
discoverAgents() {
|
|
214
|
+
const root = findAgentsRoot(this.cwd, this.agentsDir);
|
|
215
|
+
if (!root) {
|
|
216
|
+
return [];
|
|
217
|
+
}
|
|
218
|
+
const dirs = discoverAgentDirs(root);
|
|
219
|
+
return dirs.map(scanAgent);
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Generate the TypeScript source for an agent registry module.
|
|
223
|
+
*
|
|
224
|
+
* @param opts.agents - Scanned agents to include in the registry.
|
|
225
|
+
* @param opts.outputDir - Directory where the registry file will be written
|
|
226
|
+
* (used to compute relative import paths to each agent's config module).
|
|
227
|
+
* @returns The full source text of the generated `_registry.ts` file.
|
|
228
|
+
*/
|
|
229
|
+
generateRegistrySource = generateRegistry;
|
|
230
|
+
};
|
|
231
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
232
|
+
0 && (module.exports = {
|
|
233
|
+
Framework
|
|
234
|
+
});
|
|
235
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2ZyYW1ld29yay9pbmRleC50cyIsICIuLi9zcmMvZnJhbWV3b3JrL2dlbmVyYXRlLnRzIiwgIi4uL3NyYy9mcmFtZXdvcmsvc2Nhbi50cyIsICIuLi9zcmMvZnJhbWV3b3JrL2ZyYW1ld29yay50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiZXhwb3J0IHsgRnJhbWV3b3JrIH0gZnJvbSBcIi4vZnJhbWV3b3JrXCI7XG5leHBvcnQgdHlwZSB7XG4gIEFnZW50UmVnaXN0cnksXG4gIEFnZW50UmVnaXN0cnlFbnRyeSxcbn0gZnJvbSBcIi4uL2ZyYW1ld29yay1ydW50aW1lL3Jlc29sdmVcIjtcbiIsICJpbXBvcnQgKiBhcyBmcyBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgdHlwZSB7IFNjYW5uZWRBZ2VudCB9IGZyb20gXCIuL3NjYW5cIjtcblxuY29uc3QgVFNfSU1QT1JUX0VYVCA9IC9cXC4odHN8bXRzKSQvO1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlUmVnaXN0cnkob3B0czoge1xuICBhZ2VudHM6IFNjYW5uZWRBZ2VudFtdO1xuICBvdXRwdXREaXI6IHN0cmluZztcbn0pOiBzdHJpbmcge1xuICBjb25zdCBlbnRyaWVzID0gb3B0cy5hZ2VudHMubWFwKChhZ2VudCkgPT5cbiAgICBpbmxpbmVFbnRyeSh7IGFnZW50LCBvdXRwdXREaXI6IG9wdHMub3V0cHV0RGlyIH0pXG4gICk7XG5cbiAgcmV0dXJuIFtcbiAgICBcIi8vIEF1dG8tZ2VuZXJhdGVkIGJ5IHdpdGhBZ2VudHMgLSBkbyBub3QgZWRpdFwiLFxuICAgICdpbXBvcnQgdHlwZSB7IEFnZW50UmVnaXN0cnkgfSBmcm9tIFwiZXhwZXJpbWVudGFsLWFnZW50L2ZyYW1ld29ya1wiOycsXG4gICAgXCJcIixcbiAgICBcImV4cG9ydCBjb25zdCBhZ2VudHMgPSB7XCIsXG4gICAgLi4uZW50cmllcyxcbiAgICBcIn0gc2F0aXNmaWVzIEFnZW50UmVnaXN0cnk7XCIsXG4gICAgXCJcIixcbiAgXS5qb2luKFwiXFxuXCIpO1xufVxuXG5mdW5jdGlvbiBpbmxpbmVFbnRyeShvcHRzOiB7XG4gIGFnZW50OiBTY2FubmVkQWdlbnQ7XG4gIG91dHB1dERpcjogc3RyaW5nO1xufSk6IHN0cmluZyB7XG4gIGNvbnN0IGNvbmZpZyA9IGJ1aWxkQ29uZmlnKG9wdHMuYWdlbnQpO1xuICBjb25zdCBjb25maWdTdHIgPSBKU09OLnN0cmluZ2lmeShjb25maWcsIG51bGwsIDIpXG4gICAgLnNwbGl0KFwiXFxuXCIpXG4gICAgLm1hcCgobGluZSwgaSkgPT4gKGkgPT09IDAgPyBsaW5lIDogYCAgICAgICR7bGluZX1gKSlcbiAgICAuam9pbihcIlxcblwiKTtcblxuICBjb25zdCBwYXJ0cyA9IFtgICAgIGNvbmZpZzogJHtjb25maWdTdHJ9YF07XG5cbiAgaWYgKG9wdHMuYWdlbnQuaGFzQWdlbnRDb25maWcpIHtcbiAgICBjb25zdCBjb25maWdQYXRoID0gZmluZEFnZW50Q29uZmlnUGF0aChvcHRzLmFnZW50LmFic29sdXRlUGF0aCk7XG4gICAgY29uc3QgcmVsYXRpdmVQYXRoID0gcmVsYXRpdmVJbXBvcnRQYXRoKHtcbiAgICAgIGZyb206IG9wdHMub3V0cHV0RGlyLFxuICAgICAgdG86IGNvbmZpZ1BhdGgsXG4gICAgfSk7XG4gICAgcGFydHMucHVzaChgICAgIGltcG9ydDogKCkgPT4gaW1wb3J0KCR7SlNPTi5zdHJpbmdpZnkocmVsYXRpdmVQYXRoKX0pYCk7XG4gIH1cblxuICByZXR1cm4gYCAgJHtKU09OLnN0cmluZ2lmeShvcHRzLmFnZW50Lm5hbWUpfToge1xcbiR7cGFydHMuam9pbihcIixcXG5cIil9XFxuICB9LGA7XG59XG5cbmZ1bmN0aW9uIGJ1aWxkQ29uZmlnKGFnZW50OiBTY2FubmVkQWdlbnQpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIGNvbnN0IGNvbmZpZzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblxuICBpZiAoYWdlbnQuc3lzdGVtUHJvbXB0KSB7XG4gICAgY29uZmlnLnN5c3RlbSA9IGFnZW50LnN5c3RlbVByb21wdDtcbiAgfVxuXG4gIGlmIChhZ2VudC5za2lsbHMubGVuZ3RoID4gMCkge1xuICAgIGNvbmZpZy5za2lsbHMgPSBhZ2VudC5za2lsbHM7XG4gIH1cblxuICByZXR1cm4gY29uZmlnO1xufVxuXG5mdW5jdGlvbiBmaW5kQWdlbnRDb25maWdQYXRoKGFnZW50RGlyOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBleHRlbnNpb25zID0gW1wiLnRzXCIsIFwiLmpzXCIsIFwiLm10c1wiLCBcIi5tanNcIl07XG4gIGZvciAoY29uc3QgZXh0IG9mIGV4dGVuc2lvbnMpIHtcbiAgICBjb25zdCBjYW5kaWRhdGUgPSBwYXRoLmpvaW4oYWdlbnREaXIsIGBhZ2VudCR7ZXh0fWApO1xuICAgIGlmIChmcy5leGlzdHNTeW5jKGNhbmRpZGF0ZSkpIHtcbiAgICAgIHJldHVybiBjYW5kaWRhdGU7XG4gICAgfVxuICB9XG4gIHJldHVybiBwYXRoLmpvaW4oYWdlbnREaXIsIFwiYWdlbnRcIik7XG59XG5cbmZ1bmN0aW9uIHJlbGF0aXZlSW1wb3J0UGF0aChvcHRzOiB7IGZyb206IHN0cmluZzsgdG86IHN0cmluZyB9KTogc3RyaW5nIHtcbiAgbGV0IHJlbCA9IHBhdGgucmVsYXRpdmUob3B0cy5mcm9tLCBvcHRzLnRvKS5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKTtcbiAgcmVsID0gcmVsLnJlcGxhY2UoVFNfSU1QT1JUX0VYVCwgXCJcIik7XG4gIGlmICghcmVsLnN0YXJ0c1dpdGgoXCIuXCIpKSB7XG4gICAgcmVsID0gYC4vJHtyZWx9YDtcbiAgfVxuICByZXR1cm4gcmVsO1xufVxuXG4iLCAiaW1wb3J0ICogYXMgZnMgZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHR5cGUgeyBIb3N0U2tpbGxJbnB1dCwgU2tpbGxJbnB1dCB9IGZyb20gXCIuLi9za2lsbHMvdHlwZXNcIjtcblxuZXhwb3J0IHR5cGUgQWdlbnREaXIgPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgYWJzb2x1dGVQYXRoOiBzdHJpbmc7XG4gIGhhc0FnZW50Q29uZmlnOiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgU2Nhbm5lZEFnZW50ID0gQWdlbnREaXIgJiB7XG4gIHNraWxsczogU2tpbGxJbnB1dFtdO1xuICBzeXN0ZW1Qcm9tcHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgdHNTa2lsbEltcG9ydFBhdGhzOiBzdHJpbmdbXTtcbn07XG5cbmNvbnN0IEFHRU5UX0NPTkZJR19GSUxFUyA9IFtcImFnZW50LnRzXCIsIFwiYWdlbnQuanNcIiwgXCJhZ2VudC5tdHNcIiwgXCJhZ2VudC5tanNcIl07XG5jb25zdCBNRF9FWFQgPSAvXFwubWQkLztcbmNvbnN0IFRTX0VYVCA9IC9cXC4odHN8anN8bXRzfG1qcykkLztcblxuZXhwb3J0IGZ1bmN0aW9uIGxpc3REaXIoZGlyOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gIGlmICghZnMuZXhpc3RzU3luYyhkaXIpKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIHJldHVybiBmcy5yZWFkZGlyU3luYyhkaXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZEZpbGUoZmlsZVBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBmcy5yZWFkRmlsZVN5bmMoZmlsZVBhdGgsIFwidXRmLThcIik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWxlRXhpc3RzKGZpbGVQYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIGZzLmV4aXN0c1N5bmMoZmlsZVBhdGgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEaXJlY3RvcnkoZmlsZVBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gZnMuZXhpc3RzU3luYyhmaWxlUGF0aCkgJiYgZnMuc3RhdFN5bmMoZmlsZVBhdGgpLmlzRGlyZWN0b3J5KCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaXNjb3ZlckFnZW50RGlycyhhZ2VudHNSb290OiBzdHJpbmcpOiBBZ2VudERpcltdIHtcbiAgY29uc3QgZW50cmllcyA9IGxpc3REaXIoYWdlbnRzUm9vdCk7XG4gIGNvbnN0IGRpcnM6IEFnZW50RGlyW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICBjb25zdCBhYnNvbHV0ZVBhdGggPSBwYXRoLmpvaW4oYWdlbnRzUm9vdCwgZW50cnkpO1xuICAgIGlmICghaXNEaXJlY3RvcnkoYWJzb2x1dGVQYXRoKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChlbnRyeS5zdGFydHNXaXRoKFwiLlwiKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgZGlycy5wdXNoKHtcbiAgICAgIG5hbWU6IGVudHJ5LFxuICAgICAgYWJzb2x1dGVQYXRoLFxuICAgICAgaGFzQWdlbnRDb25maWc6IGhhc0FnZW50Q29uZmlnKGFic29sdXRlUGF0aCksXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gZGlycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc0FnZW50Q29uZmlnKGFnZW50RGlyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIEFHRU5UX0NPTkZJR19GSUxFUy5zb21lKChmKSA9PiBmaWxlRXhpc3RzKHBhdGguam9pbihhZ2VudERpciwgZikpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNraWxscyhhZ2VudERpcjogc3RyaW5nKToge1xuICBza2lsbHM6IFNraWxsSW5wdXRbXTtcbiAgdHNTa2lsbEltcG9ydFBhdGhzOiBzdHJpbmdbXTtcbn0ge1xuICBjb25zdCBza2lsbHNEaXIgPSBwYXRoLmpvaW4oYWdlbnREaXIsIFwic2tpbGxzXCIpO1xuICBjb25zdCBlbnRyaWVzID0gbGlzdERpcihza2lsbHNEaXIpO1xuICBjb25zdCBza2lsbHM6IFNraWxsSW5wdXRbXSA9IFtdO1xuICBjb25zdCB0c1NraWxsSW1wb3J0UGF0aHM6IHN0cmluZ1tdID0gW107XG5cbiAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzLnNvcnQoKSkge1xuICAgIGNvbnN0IGFic29sdXRlUGF0aCA9IHBhdGguam9pbihza2lsbHNEaXIsIGVudHJ5KTtcblxuICAgIGlmIChNRF9FWFQudGVzdChlbnRyeSkpIHtcbiAgICAgIHNraWxscy5wdXNoKHtcbiAgICAgICAgdHlwZTogXCJob3N0XCIsXG4gICAgICAgIHBhdGg6IGFic29sdXRlUGF0aCxcbiAgICAgIH0gc2F0aXNmaWVzIEhvc3RTa2lsbElucHV0KTtcbiAgICB9IGVsc2UgaWYgKFRTX0VYVC50ZXN0KGVudHJ5KSkge1xuICAgICAgdHNTa2lsbEltcG9ydFBhdGhzLnB1c2goYWJzb2x1dGVQYXRoKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4geyBza2lsbHMsIHRzU2tpbGxJbXBvcnRQYXRocyB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3lzdGVtUHJvbXB0KGFnZW50RGlyOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBzeXN0ZW1EaXIgPSBwYXRoLmpvaW4oYWdlbnREaXIsIFwic3lzdGVtXCIpO1xuICBjb25zdCBlbnRyaWVzID0gbGlzdERpcihzeXN0ZW1EaXIpO1xuICBjb25zdCBtZEZpbGVzID0gZW50cmllcy5maWx0ZXIoKGUpID0+IE1EX0VYVC50ZXN0KGUpKS5zb3J0KCk7XG5cbiAgaWYgKG1kRmlsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IHBhcnRzOiBzdHJpbmdbXSA9IFtdO1xuICBmb3IgKGNvbnN0IGZpbGUgb2YgbWRGaWxlcykge1xuICAgIGNvbnN0IGNvbnRlbnQgPSByZWFkRmlsZShwYXRoLmpvaW4oc3lzdGVtRGlyLCBmaWxlKSkudHJpbSgpO1xuICAgIGlmIChjb250ZW50KSB7XG4gICAgICBwYXJ0cy5wdXNoKGNvbnRlbnQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwYXJ0cy5sZW5ndGggPiAwID8gcGFydHMuam9pbihcIlxcblxcblwiKSA6IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNjYW5BZ2VudChhZ2VudERpcjogQWdlbnREaXIpOiBTY2FubmVkQWdlbnQge1xuICBjb25zdCB7IHNraWxscywgdHNTa2lsbEltcG9ydFBhdGhzIH0gPSBnZXRTa2lsbHMoYWdlbnREaXIuYWJzb2x1dGVQYXRoKTtcbiAgY29uc3Qgc3lzdGVtUHJvbXB0ID0gZ2V0U3lzdGVtUHJvbXB0KGFnZW50RGlyLmFic29sdXRlUGF0aCk7XG5cbiAgcmV0dXJuIHsgLi4uYWdlbnREaXIsIHNraWxscywgc3lzdGVtUHJvbXB0LCB0c1NraWxsSW1wb3J0UGF0aHMgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRBZ2VudHNSb290KFxuICBjd2Q6IHN0cmluZyxcbiAgdXNlckRlZmluZWRBZ2VudHNEaXI6IHN0cmluZyB8IHVuZGVmaW5lZFxuKTogc3RyaW5nIHwgbnVsbCB7XG4gIGlmICh1c2VyRGVmaW5lZEFnZW50c0Rpcikge1xuICAgIHJldHVybiBwYXRoLnJlc29sdmUoY3dkLCB1c2VyRGVmaW5lZEFnZW50c0Rpcik7XG4gIH1cbiAgY29uc3QgY2FuZGlkYXRlcyA9IFtcbiAgICBwYXRoLmpvaW4oY3dkLCBcInNyY1wiLCBcImFnZW50c1wiKSxcbiAgICBwYXRoLmpvaW4oY3dkLCBcImFnZW50c1wiKSxcbiAgXTtcblxuICBmb3IgKGNvbnN0IGNhbmRpZGF0ZSBvZiBjYW5kaWRhdGVzKSB7XG4gICAgaWYgKGlzRGlyZWN0b3J5KGNhbmRpZGF0ZSkpIHtcbiAgICAgIHJldHVybiBjYW5kaWRhdGU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG4iLCAiaW1wb3J0IHsgZ2VuZXJhdGVSZWdpc3RyeSB9IGZyb20gXCIuL2dlbmVyYXRlXCI7XG5pbXBvcnQgdHlwZSB7IFNjYW5uZWRBZ2VudCB9IGZyb20gXCIuL3NjYW5cIjtcbmltcG9ydCB7IGRpc2NvdmVyQWdlbnREaXJzLCBmaW5kQWdlbnRzUm9vdCwgc2NhbkFnZW50IH0gZnJvbSBcIi4vc2NhblwiO1xuXG4vKipcbiAqIEZyYW1ld29yay1hZ25vc3RpYyBjb3JlIGZvciBmaWxlc3lzdGVtLWJhc2VkIGFnZW50IGRpc2NvdmVyeSBhbmRcbiAqIHJlZ2lzdHJ5IGNvZGUgZ2VuZXJhdGlvbi4gQWRhcHRlcnMgbGlrZSB7QGxpbmsgTmV4dH0gcmVjZWl2ZSBhXG4gKiBgRnJhbWV3b3JrYCBpbnN0YW5jZSBhbmQgdXNlIGl0IHRvIHNjYW4gYWdlbnRzIGFuZCBwcm9kdWNlIHJlZ2lzdHJ5XG4gKiBzb3VyY2UgY29kZS5cbiAqL1xuZXhwb3J0IGNsYXNzIEZyYW1ld29yayB7XG4gIHJlYWRvbmx5IGN3ZDogc3RyaW5nO1xuICByZWFkb25seSBhZ2VudHNEaXI6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgbG9nOiAoLi4uYXJnczogdW5rbm93bltdKSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKG9wdHM6IHtcbiAgICAvKipcbiAgICAgKiBQcm9qZWN0IHJvb3QgZGlyZWN0b3J5LlxuICAgICAqIEBkZWZhdWx0VmFsdWUgYHByb2Nlc3MuY3dkKClgXG4gICAgICovXG4gICAgY3dkPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFBhdGggdG8gdGhlIGFnZW50cyBkaXJlY3RvcnksIHJlbGF0aXZlIHRvIGBjd2RgLlxuICAgICAqIFdoZW4gb21pdHRlZCwgYXV0by1kZXRlY3RlZCBhcyB0aGUgZmlyc3QgZXhpc3RpbmcgZGlyZWN0b3J5XG4gICAgICogYW1vbmcgYHNyYy9hZ2VudHNgIGFuZCBgYWdlbnRzYC5cbiAgICAgKi9cbiAgICBhZ2VudHNEaXI/OiBzdHJpbmc7XG4gICAgLyoqIEVuYWJsZSB2ZXJib3NlIGxvZ2dpbmcgdG8gc3Rkb3V0LiAqL1xuICAgIGRlYnVnPzogYm9vbGVhbjtcbiAgfSkge1xuICAgIHRoaXMuY3dkID0gb3B0cy5jd2QgPz8gcHJvY2Vzcy5jd2QoKTtcbiAgICB0aGlzLmFnZW50c0RpciA9IG9wdHMuYWdlbnRzRGlyO1xuICAgIHRoaXMubG9nID0gb3B0cy5kZWJ1Z1xuICAgICAgPyBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUsIFwiW0ZyYW1ld29ya11cIilcbiAgICAgIDogKCkgPT4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFNjYW4gdGhlIGFnZW50cyBkaXJlY3RvcnkgYW5kIHJldHVybiBtZXRhZGF0YSBmb3IgZXZlcnkgYWdlbnQgZm91bmQuXG4gICAqIEVhY2ggc3ViZm9sZGVyIGluc2lkZSB0aGUgYWdlbnRzIGRpcmVjdG9yeSBiZWNvbWVzIG9uZSBhZ2VudC5cbiAgICogUmV0dXJucyBhbiBlbXB0eSBhcnJheSB3aGVuIG5vIGFnZW50cyBkaXJlY3RvcnkgZXhpc3RzLlxuICAgKi9cbiAgZGlzY292ZXJBZ2VudHMoKTogU2Nhbm5lZEFnZW50W10ge1xuICAgIGNvbnN0IHJvb3QgPSBmaW5kQWdlbnRzUm9vdCh0aGlzLmN3ZCwgdGhpcy5hZ2VudHNEaXIpO1xuICAgIGlmICghcm9vdCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBjb25zdCBkaXJzID0gZGlzY292ZXJBZ2VudERpcnMocm9vdCk7XG4gICAgcmV0dXJuIGRpcnMubWFwKHNjYW5BZ2VudCk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgdGhlIFR5cGVTY3JpcHQgc291cmNlIGZvciBhbiBhZ2VudCByZWdpc3RyeSBtb2R1bGUuXG4gICAqXG4gICAqIEBwYXJhbSBvcHRzLmFnZW50cyAtIFNjYW5uZWQgYWdlbnRzIHRvIGluY2x1ZGUgaW4gdGhlIHJlZ2lzdHJ5LlxuICAgKiBAcGFyYW0gb3B0cy5vdXRwdXREaXIgLSBEaXJlY3Rvcnkgd2hlcmUgdGhlIHJlZ2lzdHJ5IGZpbGUgd2lsbCBiZSB3cml0dGVuXG4gICAqICAgKHVzZWQgdG8gY29tcHV0ZSByZWxhdGl2ZSBpbXBvcnQgcGF0aHMgdG8gZWFjaCBhZ2VudCdzIGNvbmZpZyBtb2R1bGUpLlxuICAgKiBAcmV0dXJucyBUaGUgZnVsbCBzb3VyY2UgdGV4dCBvZiB0aGUgZ2VuZXJhdGVkIGBfcmVnaXN0cnkudHNgIGZpbGUuXG4gICAqL1xuICBnZW5lcmF0ZVJlZ2lzdHJ5U291cmNlID0gZ2VuZXJhdGVSZWdpc3RyeTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7OztBQ0FBLFNBQW9CO0FBQ3BCLFdBQXNCO0FBR3RCLElBQU0sZ0JBQWdCO0FBQ2YsU0FBUyxpQkFBaUIsTUFHdEI7QUFDVCxRQUFNLFVBQVUsS0FBSyxPQUFPO0FBQUEsSUFBSSxDQUFDLFVBQy9CLFlBQVksRUFBRSxPQUFPLFdBQVcsS0FBSyxVQUFVLENBQUM7QUFBQSxFQUNsRDtBQUVBLFNBQU87QUFBQSxJQUNMO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQSxHQUFHO0FBQUEsSUFDSDtBQUFBLElBQ0E7QUFBQSxFQUNGLEVBQUUsS0FBSyxJQUFJO0FBQ2I7QUFFQSxTQUFTLFlBQVksTUFHVjtBQUNULFFBQU0sU0FBUyxZQUFZLEtBQUssS0FBSztBQUNyQyxRQUFNLFlBQVksS0FBSyxVQUFVLFFBQVEsTUFBTSxDQUFDLEVBQzdDLE1BQU0sSUFBSSxFQUNWLElBQUksQ0FBQyxNQUFNLE1BQU8sTUFBTSxJQUFJLE9BQU8sU0FBUyxJQUFJLEVBQUcsRUFDbkQsS0FBSyxJQUFJO0FBRVosUUFBTSxRQUFRLENBQUMsZUFBZSxTQUFTLEVBQUU7QUFFekMsTUFBSSxLQUFLLE1BQU0sZ0JBQWdCO0FBQzdCLFVBQU0sYUFBYSxvQkFBb0IsS0FBSyxNQUFNLFlBQVk7QUFDOUQsVUFBTSxlQUFlLG1CQUFtQjtBQUFBLE1BQ3RDLE1BQU0sS0FBSztBQUFBLE1BQ1gsSUFBSTtBQUFBLElBQ04sQ0FBQztBQUNELFVBQU0sS0FBSyw0QkFBNEIsS0FB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
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Framework
|
|
3
|
+
} from "./chunk-DO4HKPHR.mjs";
|
|
4
|
+
import "./chunk-BJTO5JO5.mjs";
|
|
5
|
+
export {
|
|
6
|
+
Framework
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFtdLAogICJzb3VyY2VzQ29udGVudCI6IFtdLAogICJtYXBwaW5ncyI6ICIiLAogICJuYW1lcyI6IFtdCn0K
|
package/dist/index.d.mts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import { T as ToolContext, A as AnyAgent, S as SessionSendArgs, b as SendResult } from './client-
|
|
2
|
-
export { c as AgentDataTypes, d as AgentHooks, e as AgentOptions, a as AgentStatus, f as ApprovalData, B as BuiltInToolName,
|
|
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';
|
|
3
3
|
import * as errore from 'errore';
|
|
4
|
-
import * as elysia from 'elysia';
|
|
5
|
-
import elysia__default from 'elysia';
|
|
6
4
|
import * as ai from 'ai';
|
|
7
5
|
import { Tool } from 'ai';
|
|
6
|
+
import * as elysia from 'elysia';
|
|
7
|
+
import elysia__default from 'elysia';
|
|
8
8
|
import z$1, { z } from 'zod';
|
|
9
9
|
export { E as ExecResult, S as SandboxAgentRef, a as SandboxBinding, b as SandboxInstance, c as SandboxSetupFields, U as UploadableFile } from './steps-ChOeFWAq.mjs';
|
|
10
|
+
export { G as GitSkillEntry, a as GitSkillInput, H as HostSkillEntry, b as HostSkillInput, I as InlineSkillEntry, c as InlineSkillInput, d as SandboxSkillEntry, e as SandboxSkillInput, f as SkillEntry, S as SkillInput, g as SkillSourceType } from './types-B3lbsOa7.mjs';
|
|
10
11
|
import '@vercel/sandbox';
|
|
11
12
|
import './entry-CRBUC5DB.mjs';
|
|
12
13
|
import './adapter-CFq5IeYI.mjs';
|
|
@@ -166,7 +167,7 @@ type BasePath = `/api/agents/[agent]`;
|
|
|
166
167
|
type Without<O, K extends keyof O> = Omit<O, K>;
|
|
167
168
|
declare function handleRequest<Agent extends AnyAgent, AgentBasePath extends string = BasePath>(agent: Agent, options?: {
|
|
168
169
|
basePath?: AgentBasePath;
|
|
169
|
-
workflow?: (sessionId: string, ...args: SessionSendArgs<
|
|
170
|
+
workflow?: (sessionId: string, ...args: SessionSendArgs<Agent>) => Promise<SendResult>;
|
|
170
171
|
overrides?: {
|
|
171
172
|
[K in keyof AgentContract<Agent>]?: (contract: Without<InferContract<Agent>[K], "response">, next: () => Promise<InferResponse<Agent, K> | Response>) => Promise<InferResponse<Agent, K> | Response>;
|
|
172
173
|
};
|
|
@@ -178,6 +179,9 @@ declare function handleRequest<Agent extends AnyAgent, AgentBasePath extends str
|
|
|
178
179
|
}, {
|
|
179
180
|
typebox: {};
|
|
180
181
|
error: {};
|
|
182
|
+
} & {
|
|
183
|
+
typebox: {};
|
|
184
|
+
error: {};
|
|
181
185
|
}, {
|
|
182
186
|
schema: {};
|
|
183
187
|
standaloneSchema: {};
|
|
@@ -185,7 +189,20 @@ declare function handleRequest<Agent extends AnyAgent, AgentBasePath extends str
|
|
|
185
189
|
macroFn: {};
|
|
186
190
|
parser: {};
|
|
187
191
|
response: {};
|
|
188
|
-
}
|
|
192
|
+
} & {
|
|
193
|
+
schema: {};
|
|
194
|
+
standaloneSchema: {};
|
|
195
|
+
macro: {};
|
|
196
|
+
macroFn: {};
|
|
197
|
+
parser: {};
|
|
198
|
+
response: {};
|
|
199
|
+
}, (((({
|
|
200
|
+
api: {
|
|
201
|
+
agents: {
|
|
202
|
+
[x: string]: {};
|
|
203
|
+
};
|
|
204
|
+
};
|
|
205
|
+
} | (AgentBasePath extends "" ? {} : {} & elysia.CreateEden<AgentBasePath, {}>)) & ({
|
|
189
206
|
api: {
|
|
190
207
|
agents: {
|
|
191
208
|
[x: string]: {
|
|
@@ -246,7 +263,7 @@ declare function handleRequest<Agent extends AnyAgent, AgentBasePath extends str
|
|
|
246
263
|
};
|
|
247
264
|
};
|
|
248
265
|
};
|
|
249
|
-
} |
|
|
266
|
+
} | elysia.CreateEden<`${AgentBasePath}/:sessionId`, {
|
|
250
267
|
get: {
|
|
251
268
|
body: unknown;
|
|
252
269
|
params: {
|
|
@@ -495,6 +512,12 @@ declare function handleRequest<Agent extends AnyAgent, AgentBasePath extends str
|
|
|
495
512
|
schema: {};
|
|
496
513
|
standaloneSchema: {};
|
|
497
514
|
response: {};
|
|
515
|
+
} & {
|
|
516
|
+
derive: {};
|
|
517
|
+
resolve: {};
|
|
518
|
+
schema: {};
|
|
519
|
+
standaloneSchema: {};
|
|
520
|
+
response: {};
|
|
498
521
|
}>;
|
|
499
522
|
|
|
500
523
|
export { AnyAgent, MessageNotFoundError, SandboxError, SandboxNotFoundError, SessionNotFoundError, SessionSendArgs, StorageConflictError, StorageError, ToolContext, handleRequest, tool };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import { T as ToolContext, A as AnyAgent, S as SessionSendArgs, b as SendResult } from './client-
|
|
2
|
-
export { c as AgentDataTypes, d as AgentHooks, e as AgentOptions, a as AgentStatus, f as ApprovalData, B as BuiltInToolName,
|
|
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';
|
|
3
3
|
import * as errore from 'errore';
|
|
4
|
-
import * as elysia from 'elysia';
|
|
5
|
-
import elysia__default from 'elysia';
|
|
6
4
|
import * as ai from 'ai';
|
|
7
5
|
import { Tool } from 'ai';
|
|
6
|
+
import * as elysia from 'elysia';
|
|
7
|
+
import elysia__default from 'elysia';
|
|
8
8
|
import z$1, { z } from 'zod';
|
|
9
9
|
export { E as ExecResult, S as SandboxAgentRef, a as SandboxBinding, b as SandboxInstance, c as SandboxSetupFields, U as UploadableFile } from './steps-DWTQiAPt.js';
|
|
10
|
+
export { G as GitSkillEntry, a as GitSkillInput, H as HostSkillEntry, b as HostSkillInput, I as InlineSkillEntry, c as InlineSkillInput, d as SandboxSkillEntry, e as SandboxSkillInput, f as SkillEntry, S as SkillInput, g as SkillSourceType } from './types-B3lbsOa7.js';
|
|
10
11
|
import '@vercel/sandbox';
|
|
11
12
|
import './entry-BUYBv4Cu.js';
|
|
12
13
|
import './adapter-CFq5IeYI.js';
|
|
@@ -166,7 +167,7 @@ type BasePath = `/api/agents/[agent]`;
|
|
|
166
167
|
type Without<O, K extends keyof O> = Omit<O, K>;
|
|
167
168
|
declare function handleRequest<Agent extends AnyAgent, AgentBasePath extends string = BasePath>(agent: Agent, options?: {
|
|
168
169
|
basePath?: AgentBasePath;
|
|
169
|
-
workflow?: (sessionId: string, ...args: SessionSendArgs<
|
|
170
|
+
workflow?: (sessionId: string, ...args: SessionSendArgs<Agent>) => Promise<SendResult>;
|
|
170
171
|
overrides?: {
|
|
171
172
|
[K in keyof AgentContract<Agent>]?: (contract: Without<InferContract<Agent>[K], "response">, next: () => Promise<InferResponse<Agent, K> | Response>) => Promise<InferResponse<Agent, K> | Response>;
|
|
172
173
|
};
|
|
@@ -178,6 +179,9 @@ declare function handleRequest<Agent extends AnyAgent, AgentBasePath extends str
|
|
|
178
179
|
}, {
|
|
179
180
|
typebox: {};
|
|
180
181
|
error: {};
|
|
182
|
+
} & {
|
|
183
|
+
typebox: {};
|
|
184
|
+
error: {};
|
|
181
185
|
}, {
|
|
182
186
|
schema: {};
|
|
183
187
|
standaloneSchema: {};
|
|
@@ -185,7 +189,20 @@ declare function handleRequest<Agent extends AnyAgent, AgentBasePath extends str
|
|
|
185
189
|
macroFn: {};
|
|
186
190
|
parser: {};
|
|
187
191
|
response: {};
|
|
188
|
-
}
|
|
192
|
+
} & {
|
|
193
|
+
schema: {};
|
|
194
|
+
standaloneSchema: {};
|
|
195
|
+
macro: {};
|
|
196
|
+
macroFn: {};
|
|
197
|
+
parser: {};
|
|
198
|
+
response: {};
|
|
199
|
+
}, (((({
|
|
200
|
+
api: {
|
|
201
|
+
agents: {
|
|
202
|
+
[x: string]: {};
|
|
203
|
+
};
|
|
204
|
+
};
|
|
205
|
+
} | (AgentBasePath extends "" ? {} : {} & elysia.CreateEden<AgentBasePath, {}>)) & ({
|
|
189
206
|
api: {
|
|
190
207
|
agents: {
|
|
191
208
|
[x: string]: {
|
|
@@ -246,7 +263,7 @@ declare function handleRequest<Agent extends AnyAgent, AgentBasePath extends str
|
|
|
246
263
|
};
|
|
247
264
|
};
|
|
248
265
|
};
|
|
249
|
-
} |
|
|
266
|
+
} | elysia.CreateEden<`${AgentBasePath}/:sessionId`, {
|
|
250
267
|
get: {
|
|
251
268
|
body: unknown;
|
|
252
269
|
params: {
|
|
@@ -495,6 +512,12 @@ declare function handleRequest<Agent extends AnyAgent, AgentBasePath extends str
|
|
|
495
512
|
schema: {};
|
|
496
513
|
standaloneSchema: {};
|
|
497
514
|
response: {};
|
|
515
|
+
} & {
|
|
516
|
+
derive: {};
|
|
517
|
+
resolve: {};
|
|
518
|
+
schema: {};
|
|
519
|
+
standaloneSchema: {};
|
|
520
|
+
response: {};
|
|
498
521
|
}>;
|
|
499
522
|
|
|
500
523
|
export { AnyAgent, MessageNotFoundError, SandboxError, SandboxNotFoundError, SessionNotFoundError, SessionSendArgs, StorageConflictError, StorageError, ToolContext, handleRequest, tool };
|