@morphllm/morphsdk 0.2.138 → 0.2.139
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-QU5JVTYQ.js → chunk-3J74OXN6.js} +2 -2
- package/dist/chunk-3T5W2D2W.js +288 -0
- package/dist/chunk-3T5W2D2W.js.map +1 -0
- package/dist/{chunk-MDVFAW4F.js → chunk-4J5UW34J.js} +4 -4
- package/dist/{chunk-IMYH4BD2.js → chunk-5CBMLTG5.js} +5 -5
- package/dist/{chunk-CXSAPFUD.js → chunk-6W3X76KE.js} +21 -6
- package/dist/chunk-6W3X76KE.js.map +1 -0
- package/dist/{chunk-HP64WS73.js → chunk-6WSZDCGP.js} +2 -2
- package/dist/{chunk-2PU5V3MK.js → chunk-73ZLTWKF.js} +4 -4
- package/dist/{chunk-ZK5GJIAX.js → chunk-7RCHQN7F.js} +2 -2
- package/dist/{chunk-ZOC7P5RV.js → chunk-ATAQZLQN.js} +2 -2
- package/dist/{chunk-GSOXKIQU.js → chunk-B55ZEX4M.js} +2 -2
- package/dist/{chunk-QNXGYWS3.js → chunk-DRAQDTSR.js} +2 -2
- package/dist/{chunk-G5GPLD2E.js → chunk-EEBGEMOO.js} +2 -2
- package/dist/{chunk-H7RABA4R.js → chunk-EHRKLQ62.js} +2 -2
- package/dist/chunk-GQX4PKXZ.js +265 -0
- package/dist/chunk-GQX4PKXZ.js.map +1 -0
- package/dist/{chunk-YOOALIAK.js → chunk-MHNCFELG.js} +4 -4
- package/dist/{chunk-DOW7Y3AB.js → chunk-MTD2JOO7.js} +1 -1
- package/dist/{chunk-P4FTR3X4.js → chunk-NEVPVOTT.js} +3 -3
- package/dist/{chunk-CUPT64F5.js → chunk-NGHLDI64.js} +2 -2
- package/dist/{chunk-KWFRPYUW.js → chunk-OICUUS5Y.js} +4 -4
- package/dist/{chunk-QNX4PKPV.js → chunk-TCXBKB7P.js} +2 -2
- package/dist/{chunk-XIVAX3WB.js → chunk-ULMSWACH.js} +6 -6
- package/dist/{chunk-KHHSG2LO.js → chunk-XIEU3N3R.js} +4 -4
- package/dist/{chunk-2GSJGZYK.js → chunk-XUDE6SOY.js} +57 -21
- package/dist/{chunk-2GSJGZYK.js.map → chunk-XUDE6SOY.js.map} +1 -1
- package/dist/{chunk-XLDP5S2P.js → chunk-ZUG2L4BJ.js} +2 -2
- package/dist/{chunk-S3CBEA3Y.js → chunk-ZYN64ZVG.js} +4 -4
- package/dist/chunk-ZZ25FZG2.js +73 -0
- package/dist/chunk-ZZ25FZG2.js.map +1 -0
- package/dist/{client-Ca7e11hJ.d.ts → client-BMmG3SZs.d.ts} +39 -0
- package/dist/client.cjs +650 -13
- package/dist/client.cjs.map +1 -1
- package/dist/client.d.ts +2 -1
- package/dist/client.js +30 -27
- package/dist/edge.cjs +20 -5
- package/dist/edge.cjs.map +1 -1
- package/dist/edge.js +9 -9
- package/dist/index.cjs +653 -16
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +37 -34
- package/dist/modelrouter/core.cjs +20 -5
- package/dist/modelrouter/core.cjs.map +1 -1
- package/dist/modelrouter/core.js +3 -3
- package/dist/modelrouter/index.cjs +20 -5
- package/dist/modelrouter/index.cjs.map +1 -1
- package/dist/modelrouter/index.js +3 -3
- package/dist/subagents/anthropic.cjs +2397 -0
- package/dist/subagents/anthropic.cjs.map +1 -0
- package/dist/subagents/anthropic.d.ts +41 -0
- package/dist/subagents/anthropic.js +19 -0
- package/dist/subagents/anthropic.js.map +1 -0
- package/dist/subagents/index.cjs +101 -0
- package/dist/subagents/index.cjs.map +1 -0
- package/dist/subagents/index.d.ts +5 -0
- package/dist/subagents/index.js +12 -0
- package/dist/subagents/index.js.map +1 -0
- package/dist/subagents/prompts.cjs +99 -0
- package/dist/subagents/prompts.cjs.map +1 -0
- package/dist/subagents/prompts.d.ts +42 -0
- package/dist/subagents/prompts.js +12 -0
- package/dist/subagents/prompts.js.map +1 -0
- package/dist/subagents/types.cjs +19 -0
- package/dist/subagents/types.cjs.map +1 -0
- package/dist/subagents/types.d.ts +93 -0
- package/dist/subagents/types.js +1 -0
- package/dist/subagents/types.js.map +1 -0
- package/dist/subagents/vercel.cjs +2374 -0
- package/dist/subagents/vercel.cjs.map +1 -0
- package/dist/subagents/vercel.d.ts +32 -0
- package/dist/subagents/vercel.js +19 -0
- package/dist/subagents/vercel.js.map +1 -0
- package/dist/tools/browser/anthropic.cjs +20 -5
- package/dist/tools/browser/anthropic.cjs.map +1 -1
- package/dist/tools/browser/anthropic.js +6 -6
- package/dist/tools/browser/core.cjs +20 -5
- package/dist/tools/browser/core.cjs.map +1 -1
- package/dist/tools/browser/core.js +5 -5
- package/dist/tools/browser/index.cjs +20 -5
- package/dist/tools/browser/index.cjs.map +1 -1
- package/dist/tools/browser/index.js +15 -15
- package/dist/tools/browser/openai.cjs +20 -5
- package/dist/tools/browser/openai.cjs.map +1 -1
- package/dist/tools/browser/openai.js +6 -6
- package/dist/tools/browser/profiles/core.cjs +20 -5
- package/dist/tools/browser/profiles/core.cjs.map +1 -1
- package/dist/tools/browser/profiles/core.js +3 -3
- package/dist/tools/browser/profiles/index.cjs +20 -5
- package/dist/tools/browser/profiles/index.cjs.map +1 -1
- package/dist/tools/browser/profiles/index.js +3 -3
- package/dist/tools/browser/vercel.cjs +20 -5
- package/dist/tools/browser/vercel.cjs.map +1 -1
- package/dist/tools/browser/vercel.js +6 -6
- package/dist/tools/codebase_search/anthropic.cjs +20 -5
- package/dist/tools/codebase_search/anthropic.cjs.map +1 -1
- package/dist/tools/codebase_search/anthropic.js +4 -4
- package/dist/tools/codebase_search/core.cjs +20 -5
- package/dist/tools/codebase_search/core.cjs.map +1 -1
- package/dist/tools/codebase_search/core.js +3 -3
- package/dist/tools/codebase_search/index.cjs +20 -5
- package/dist/tools/codebase_search/index.cjs.map +1 -1
- package/dist/tools/codebase_search/index.js +10 -10
- package/dist/tools/codebase_search/openai.cjs +20 -5
- package/dist/tools/codebase_search/openai.cjs.map +1 -1
- package/dist/tools/codebase_search/openai.js +4 -4
- package/dist/tools/codebase_search/vercel.cjs +20 -5
- package/dist/tools/codebase_search/vercel.cjs.map +1 -1
- package/dist/tools/codebase_search/vercel.js +4 -4
- package/dist/tools/fastapply/anthropic.cjs +20 -5
- package/dist/tools/fastapply/anthropic.cjs.map +1 -1
- package/dist/tools/fastapply/anthropic.js +4 -4
- package/dist/tools/fastapply/apply.cjs +20 -5
- package/dist/tools/fastapply/apply.cjs.map +1 -1
- package/dist/tools/fastapply/apply.js +2 -2
- package/dist/tools/fastapply/core.cjs +20 -5
- package/dist/tools/fastapply/core.cjs.map +1 -1
- package/dist/tools/fastapply/core.js +3 -3
- package/dist/tools/fastapply/index.cjs +20 -5
- package/dist/tools/fastapply/index.cjs.map +1 -1
- package/dist/tools/fastapply/index.js +8 -8
- package/dist/tools/fastapply/openai.cjs +20 -5
- package/dist/tools/fastapply/openai.cjs.map +1 -1
- package/dist/tools/fastapply/openai.js +4 -4
- package/dist/tools/fastapply/vercel.cjs +20 -5
- package/dist/tools/fastapply/vercel.cjs.map +1 -1
- package/dist/tools/fastapply/vercel.js +4 -4
- package/dist/tools/index.cjs +20 -5
- package/dist/tools/index.cjs.map +1 -1
- package/dist/tools/index.js +8 -8
- package/dist/tools/utils/resilience.cjs +20 -5
- package/dist/tools/utils/resilience.cjs.map +1 -1
- package/dist/tools/utils/resilience.js +2 -2
- package/dist/tools/warp_grep/agent/runner.cjs +20 -5
- package/dist/tools/warp_grep/agent/runner.cjs.map +1 -1
- package/dist/tools/warp_grep/agent/runner.js +3 -3
- package/dist/tools/warp_grep/anthropic.cjs +20 -5
- package/dist/tools/warp_grep/anthropic.cjs.map +1 -1
- package/dist/tools/warp_grep/anthropic.js +6 -6
- package/dist/tools/warp_grep/client.cjs +20 -5
- package/dist/tools/warp_grep/client.cjs.map +1 -1
- package/dist/tools/warp_grep/client.js +5 -5
- package/dist/tools/warp_grep/gemini.cjs +20 -5
- package/dist/tools/warp_grep/gemini.cjs.map +1 -1
- package/dist/tools/warp_grep/gemini.js +5 -5
- package/dist/tools/warp_grep/harness.js +4 -4
- package/dist/tools/warp_grep/index.cjs +20 -5
- package/dist/tools/warp_grep/index.cjs.map +1 -1
- package/dist/tools/warp_grep/index.js +7 -7
- package/dist/tools/warp_grep/openai.cjs +20 -5
- package/dist/tools/warp_grep/openai.cjs.map +1 -1
- package/dist/tools/warp_grep/openai.js +6 -6
- package/dist/tools/warp_grep/vercel.cjs +20 -5
- package/dist/tools/warp_grep/vercel.cjs.map +1 -1
- package/dist/tools/warp_grep/vercel.js +6 -6
- package/dist/version.cjs +20 -5
- package/dist/version.cjs.map +1 -1
- package/dist/version.js +1 -1
- package/package.json +20 -5
- package/dist/chunk-CXSAPFUD.js.map +0 -1
- /package/dist/{chunk-QU5JVTYQ.js.map → chunk-3J74OXN6.js.map} +0 -0
- /package/dist/{chunk-MDVFAW4F.js.map → chunk-4J5UW34J.js.map} +0 -0
- /package/dist/{chunk-IMYH4BD2.js.map → chunk-5CBMLTG5.js.map} +0 -0
- /package/dist/{chunk-HP64WS73.js.map → chunk-6WSZDCGP.js.map} +0 -0
- /package/dist/{chunk-2PU5V3MK.js.map → chunk-73ZLTWKF.js.map} +0 -0
- /package/dist/{chunk-ZK5GJIAX.js.map → chunk-7RCHQN7F.js.map} +0 -0
- /package/dist/{chunk-ZOC7P5RV.js.map → chunk-ATAQZLQN.js.map} +0 -0
- /package/dist/{chunk-GSOXKIQU.js.map → chunk-B55ZEX4M.js.map} +0 -0
- /package/dist/{chunk-QNXGYWS3.js.map → chunk-DRAQDTSR.js.map} +0 -0
- /package/dist/{chunk-G5GPLD2E.js.map → chunk-EEBGEMOO.js.map} +0 -0
- /package/dist/{chunk-H7RABA4R.js.map → chunk-EHRKLQ62.js.map} +0 -0
- /package/dist/{chunk-YOOALIAK.js.map → chunk-MHNCFELG.js.map} +0 -0
- /package/dist/{chunk-DOW7Y3AB.js.map → chunk-MTD2JOO7.js.map} +0 -0
- /package/dist/{chunk-P4FTR3X4.js.map → chunk-NEVPVOTT.js.map} +0 -0
- /package/dist/{chunk-CUPT64F5.js.map → chunk-NGHLDI64.js.map} +0 -0
- /package/dist/{chunk-KWFRPYUW.js.map → chunk-OICUUS5Y.js.map} +0 -0
- /package/dist/{chunk-QNX4PKPV.js.map → chunk-TCXBKB7P.js.map} +0 -0
- /package/dist/{chunk-XIVAX3WB.js.map → chunk-ULMSWACH.js.map} +0 -0
- /package/dist/{chunk-KHHSG2LO.js.map → chunk-XIEU3N3R.js.map} +0 -0
- /package/dist/{chunk-XLDP5S2P.js.map → chunk-ZUG2L4BJ.js.map} +0 -0
- /package/dist/{chunk-S3CBEA3Y.js.map → chunk-ZYN64ZVG.js.map} +0 -0
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
import {
|
|
2
|
+
WarpGrepClient,
|
|
3
|
+
formatResult
|
|
4
|
+
} from "./chunk-5CBMLTG5.js";
|
|
5
|
+
import {
|
|
6
|
+
CODEBASE_SEARCH_TOOL,
|
|
7
|
+
SEND_MESSAGE_TOOL,
|
|
8
|
+
getSystemPrompt
|
|
9
|
+
} from "./chunk-ZZ25FZG2.js";
|
|
10
|
+
|
|
11
|
+
// subagents/vercel.ts
|
|
12
|
+
import { tool, generateText, stepCountIs } from "ai";
|
|
13
|
+
import { z } from "zod";
|
|
14
|
+
var DEFAULT_MAX_TURNS = {
|
|
15
|
+
quick: 3,
|
|
16
|
+
medium: 6,
|
|
17
|
+
thorough: 12
|
|
18
|
+
};
|
|
19
|
+
function getMaxTurns(config) {
|
|
20
|
+
return config.maxTurns ?? DEFAULT_MAX_TURNS[config.thoroughness ?? "medium"] ?? 6;
|
|
21
|
+
}
|
|
22
|
+
function createExploreSubagent(config) {
|
|
23
|
+
if (!config.repoRoot) {
|
|
24
|
+
throw new Error("repoRoot is required for Explore subagent");
|
|
25
|
+
}
|
|
26
|
+
const warpGrep = new WarpGrepClient({
|
|
27
|
+
morphApiKey: config.morphApiKey
|
|
28
|
+
});
|
|
29
|
+
const thoroughness = config.thoroughness ?? "medium";
|
|
30
|
+
const replyTimeout = config.replyTimeout ?? 3e4;
|
|
31
|
+
async function runExplore(prompt, callbacks = {}) {
|
|
32
|
+
const startTime = Date.now();
|
|
33
|
+
const allContexts = [];
|
|
34
|
+
let searchCount = 0;
|
|
35
|
+
const timeoutMs = config.timeout;
|
|
36
|
+
const timeoutPromise = timeoutMs ? new Promise(
|
|
37
|
+
(_, reject) => setTimeout(() => reject(new Error(`Exploration timed out after ${timeoutMs}ms`)), timeoutMs)
|
|
38
|
+
) : null;
|
|
39
|
+
const runPromise = (async () => {
|
|
40
|
+
try {
|
|
41
|
+
const codebaseSearchSchema = z.object({
|
|
42
|
+
searchRequest: z.string().describe("Natural language description of what to search for")
|
|
43
|
+
});
|
|
44
|
+
const sendMessageSchema = z.object({
|
|
45
|
+
message: z.string().describe("The message to send to the orchestrator")
|
|
46
|
+
});
|
|
47
|
+
const result = await generateText({
|
|
48
|
+
model: config.model,
|
|
49
|
+
system: getSystemPrompt(thoroughness),
|
|
50
|
+
prompt,
|
|
51
|
+
tools: {
|
|
52
|
+
codebase_search: tool({
|
|
53
|
+
description: CODEBASE_SEARCH_TOOL.description,
|
|
54
|
+
inputSchema: codebaseSearchSchema,
|
|
55
|
+
execute: async (params) => {
|
|
56
|
+
searchCount++;
|
|
57
|
+
const warpResult = await warpGrep.execute({
|
|
58
|
+
searchTerm: params.searchRequest,
|
|
59
|
+
repoRoot: config.repoRoot,
|
|
60
|
+
excludes: config.excludes,
|
|
61
|
+
includes: config.includes
|
|
62
|
+
});
|
|
63
|
+
if (warpResult.contexts) {
|
|
64
|
+
allContexts.push(...warpResult.contexts);
|
|
65
|
+
}
|
|
66
|
+
callbacks.onStep?.({
|
|
67
|
+
step: searchCount,
|
|
68
|
+
searchRequest: params.searchRequest,
|
|
69
|
+
contextsFound: warpResult.contexts?.length ?? 0,
|
|
70
|
+
isFinal: false
|
|
71
|
+
});
|
|
72
|
+
return formatResult(warpResult);
|
|
73
|
+
}
|
|
74
|
+
}),
|
|
75
|
+
send_message: tool({
|
|
76
|
+
description: SEND_MESSAGE_TOOL.description,
|
|
77
|
+
inputSchema: sendMessageSchema,
|
|
78
|
+
execute: async (params) => {
|
|
79
|
+
const subagentMsg = {
|
|
80
|
+
from: "explore",
|
|
81
|
+
content: params.message,
|
|
82
|
+
timestamp: Date.now()
|
|
83
|
+
};
|
|
84
|
+
const replyPromise = new Promise((resolve) => {
|
|
85
|
+
if (callbacks.onMessage) {
|
|
86
|
+
callbacks.onMessage(subagentMsg, (replyText) => {
|
|
87
|
+
resolve(replyText);
|
|
88
|
+
});
|
|
89
|
+
} else {
|
|
90
|
+
setTimeout(() => resolve(""), replyTimeout);
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
const reply = await Promise.race([
|
|
94
|
+
replyPromise,
|
|
95
|
+
new Promise(
|
|
96
|
+
(resolve) => setTimeout(() => resolve(""), replyTimeout)
|
|
97
|
+
)
|
|
98
|
+
]);
|
|
99
|
+
if (reply) {
|
|
100
|
+
return `Response from orchestrator: ${reply}`;
|
|
101
|
+
}
|
|
102
|
+
return "No response. Continue with your best judgment.";
|
|
103
|
+
}
|
|
104
|
+
})
|
|
105
|
+
},
|
|
106
|
+
stopWhen: stepCountIs(getMaxTurns(config))
|
|
107
|
+
});
|
|
108
|
+
callbacks.onStep?.({
|
|
109
|
+
step: searchCount,
|
|
110
|
+
searchRequest: "",
|
|
111
|
+
contextsFound: allContexts.length,
|
|
112
|
+
isFinal: true
|
|
113
|
+
});
|
|
114
|
+
const uniqueContexts = deduplicateContexts(allContexts);
|
|
115
|
+
return {
|
|
116
|
+
success: true,
|
|
117
|
+
summary: result.text || "Exploration completed but no summary was generated.",
|
|
118
|
+
contexts: uniqueContexts,
|
|
119
|
+
searchCount,
|
|
120
|
+
durationMs: Date.now() - startTime
|
|
121
|
+
};
|
|
122
|
+
} catch (error) {
|
|
123
|
+
return {
|
|
124
|
+
success: false,
|
|
125
|
+
summary: "",
|
|
126
|
+
contexts: deduplicateContexts(allContexts),
|
|
127
|
+
searchCount,
|
|
128
|
+
durationMs: Date.now() - startTime,
|
|
129
|
+
error: error instanceof Error ? error.message : String(error)
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
})();
|
|
133
|
+
if (timeoutPromise) {
|
|
134
|
+
try {
|
|
135
|
+
return await Promise.race([runPromise, timeoutPromise]);
|
|
136
|
+
} catch (error) {
|
|
137
|
+
return {
|
|
138
|
+
success: false,
|
|
139
|
+
summary: "",
|
|
140
|
+
contexts: deduplicateContexts(allContexts),
|
|
141
|
+
searchCount,
|
|
142
|
+
durationMs: Date.now() - startTime,
|
|
143
|
+
error: error instanceof Error ? error.message : String(error)
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return runPromise;
|
|
148
|
+
}
|
|
149
|
+
const exploreToolSchema = z.object({
|
|
150
|
+
searchRequest: z.string().describe("What to explore in the codebase. Be specific about what you want to understand.")
|
|
151
|
+
});
|
|
152
|
+
const exploreTool = tool({
|
|
153
|
+
description: "Explore a codebase to answer questions about code structure, find implementations, trace call chains, and understand architecture. Returns a summary of findings. Use this for broad exploration rather than pinpoint keyword searches.",
|
|
154
|
+
inputSchema: exploreToolSchema,
|
|
155
|
+
execute: async (params) => {
|
|
156
|
+
const result = await runExplore(params.searchRequest);
|
|
157
|
+
return {
|
|
158
|
+
success: result.success,
|
|
159
|
+
summary: result.summary,
|
|
160
|
+
searchCount: result.searchCount,
|
|
161
|
+
error: result.error
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
return {
|
|
166
|
+
/** Vercel AI SDK tool for use as a tool in parent agents */
|
|
167
|
+
tool: exploreTool,
|
|
168
|
+
/** Run exploration with messaging support */
|
|
169
|
+
run(prompt) {
|
|
170
|
+
const messageHandlers = [];
|
|
171
|
+
const stepHandlers = [];
|
|
172
|
+
let resultPromise = null;
|
|
173
|
+
const session = {
|
|
174
|
+
on(event, handler) {
|
|
175
|
+
if (event === "message") messageHandlers.push(handler);
|
|
176
|
+
if (event === "step") stepHandlers.push(handler);
|
|
177
|
+
return session;
|
|
178
|
+
},
|
|
179
|
+
send(_text) {
|
|
180
|
+
},
|
|
181
|
+
get result() {
|
|
182
|
+
if (!resultPromise) {
|
|
183
|
+
resultPromise = runExplore(prompt, {
|
|
184
|
+
onStep: (step) => {
|
|
185
|
+
for (const handler of stepHandlers) handler(step);
|
|
186
|
+
},
|
|
187
|
+
onMessage: (msg, reply) => {
|
|
188
|
+
if (messageHandlers.length > 0) {
|
|
189
|
+
for (const handler of messageHandlers) handler(msg, reply);
|
|
190
|
+
} else {
|
|
191
|
+
reply("");
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
return resultPromise;
|
|
197
|
+
}
|
|
198
|
+
};
|
|
199
|
+
return session;
|
|
200
|
+
},
|
|
201
|
+
/** Stream exploration events as an async generator */
|
|
202
|
+
async *stream(prompt) {
|
|
203
|
+
const events = [];
|
|
204
|
+
let resolveNext = null;
|
|
205
|
+
let done = false;
|
|
206
|
+
const resultPromise = runExplore(prompt, {
|
|
207
|
+
onStep: (step) => {
|
|
208
|
+
events.push({
|
|
209
|
+
type: "step",
|
|
210
|
+
step: step.step,
|
|
211
|
+
searchRequest: step.searchRequest,
|
|
212
|
+
contextsFound: step.contextsFound,
|
|
213
|
+
isFinal: step.isFinal
|
|
214
|
+
});
|
|
215
|
+
resolveNext?.();
|
|
216
|
+
},
|
|
217
|
+
onMessage: (msg, reply) => {
|
|
218
|
+
events.push({
|
|
219
|
+
type: "message",
|
|
220
|
+
from: msg.from,
|
|
221
|
+
content: msg.content,
|
|
222
|
+
timestamp: msg.timestamp
|
|
223
|
+
});
|
|
224
|
+
resolveNext?.();
|
|
225
|
+
reply("Continue with your best judgment.");
|
|
226
|
+
}
|
|
227
|
+
});
|
|
228
|
+
while (!done) {
|
|
229
|
+
if (events.length > 0) {
|
|
230
|
+
yield events.shift();
|
|
231
|
+
} else {
|
|
232
|
+
const raceResult = await Promise.race([
|
|
233
|
+
resultPromise.then((r) => ({ type: "done", result: r })),
|
|
234
|
+
new Promise((resolve) => {
|
|
235
|
+
resolveNext = () => resolve({ type: "event" });
|
|
236
|
+
})
|
|
237
|
+
]);
|
|
238
|
+
if (raceResult.type === "done") {
|
|
239
|
+
while (events.length > 0) {
|
|
240
|
+
yield events.shift();
|
|
241
|
+
}
|
|
242
|
+
done = true;
|
|
243
|
+
return raceResult.result;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
return await resultPromise;
|
|
248
|
+
}
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
function deduplicateContexts(contexts) {
|
|
252
|
+
const map = /* @__PURE__ */ new Map();
|
|
253
|
+
for (const ctx of contexts) {
|
|
254
|
+
const existing = map.get(ctx.file);
|
|
255
|
+
if (!existing || ctx.content.length > existing.content.length) {
|
|
256
|
+
map.set(ctx.file, ctx);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
return Array.from(map.values());
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
export {
|
|
263
|
+
createExploreSubagent
|
|
264
|
+
};
|
|
265
|
+
//# sourceMappingURL=chunk-GQX4PKXZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../subagents/vercel.ts"],"sourcesContent":["/**\n * Vercel AI SDK adapter for Explore subagent\n */\n\nimport { tool, generateText, stepCountIs } from 'ai';\nimport type { LanguageModel } from 'ai';\nimport { z } from 'zod';\nimport { WarpGrepClient } from '../tools/warp_grep/client.js';\nimport { formatResult } from '../tools/warp_grep/client.js';\nimport type { WarpGrepContext } from '../tools/warp_grep/types.js';\nimport { getSystemPrompt, CODEBASE_SEARCH_TOOL, SEND_MESSAGE_TOOL } from './prompts.js';\nimport type {\n ExploreSubagentConfig,\n ExploreResult,\n ExploreStep,\n ExploreSession,\n ExploreEvent,\n SubagentMessage,\n MessageHandler,\n StepHandler,\n} from './types.js';\n\n/** Config for Vercel AI SDK Explore subagent */\nexport interface VercelExploreConfig extends ExploreSubagentConfig {\n /** Vercel AI SDK model instance */\n model: LanguageModel;\n}\n\nconst DEFAULT_MAX_TURNS: Record<string, number> = {\n quick: 3,\n medium: 6,\n thorough: 12,\n};\n\nfunction getMaxTurns(config: ExploreSubagentConfig): number {\n return config.maxTurns ?? DEFAULT_MAX_TURNS[config.thoroughness ?? 'medium'] ?? 6;\n}\n\n/**\n * Create an Explore subagent using Vercel AI SDK\n */\nexport function createExploreSubagent(config: VercelExploreConfig) {\n if (!config.repoRoot) {\n throw new Error('repoRoot is required for Explore subagent');\n }\n\n const warpGrep = new WarpGrepClient({\n morphApiKey: config.morphApiKey,\n });\n\n const thoroughness = config.thoroughness ?? 'medium';\n const replyTimeout = config.replyTimeout ?? 30_000;\n\n /** Run the agent loop and collect results */\n async function runExplore(\n prompt: string,\n callbacks: {\n onStep?: StepHandler;\n onMessage?: MessageHandler;\n } = {},\n ): Promise<ExploreResult> {\n const startTime = Date.now();\n const allContexts: WarpGrepContext[] = [];\n let searchCount = 0;\n\n const timeoutMs = config.timeout;\n const timeoutPromise = timeoutMs\n ? new Promise<never>((_, reject) =>\n setTimeout(() => reject(new Error(`Exploration timed out after ${timeoutMs}ms`)), timeoutMs),\n )\n : null;\n\n const runPromise = (async (): Promise<ExploreResult> => {\n try {\n const codebaseSearchSchema = z.object({\n searchRequest: z.string().describe('Natural language description of what to search for'),\n });\n\n const sendMessageSchema = z.object({\n message: z.string().describe('The message to send to the orchestrator'),\n });\n\n const result = await generateText({\n model: config.model,\n system: getSystemPrompt(thoroughness),\n prompt,\n tools: {\n codebase_search: tool({\n description: CODEBASE_SEARCH_TOOL.description,\n inputSchema: codebaseSearchSchema,\n execute: async (params: z.infer<typeof codebaseSearchSchema>) => {\n searchCount++;\n const warpResult = await warpGrep.execute({\n searchTerm: params.searchRequest,\n repoRoot: config.repoRoot,\n excludes: config.excludes,\n includes: config.includes,\n });\n\n if (warpResult.contexts) {\n allContexts.push(...warpResult.contexts);\n }\n\n callbacks.onStep?.({\n step: searchCount,\n searchRequest: params.searchRequest,\n contextsFound: warpResult.contexts?.length ?? 0,\n isFinal: false,\n });\n\n return formatResult(warpResult);\n },\n }),\n send_message: tool({\n description: SEND_MESSAGE_TOOL.description,\n inputSchema: sendMessageSchema,\n execute: async (params: z.infer<typeof sendMessageSchema>) => {\n const subagentMsg: SubagentMessage = {\n from: 'explore',\n content: params.message,\n timestamp: Date.now(),\n };\n\n // Create a promise that waits for the host's reply\n const replyPromise = new Promise<string>((resolve) => {\n // Emit the message to the host via callback\n if (callbacks.onMessage) {\n callbacks.onMessage(subagentMsg, (replyText: string) => {\n resolve(replyText);\n });\n } else {\n // No handler registered, auto-resolve after timeout\n setTimeout(() => resolve(''), replyTimeout);\n }\n });\n\n // Wait for reply with timeout\n const reply = await Promise.race([\n replyPromise,\n new Promise<string>((resolve) =>\n setTimeout(() => resolve(''), replyTimeout),\n ),\n ]);\n\n if (reply) {\n return `Response from orchestrator: ${reply}`;\n }\n return 'No response. Continue with your best judgment.';\n },\n }),\n },\n stopWhen: stepCountIs(getMaxTurns(config)),\n });\n\n // Emit final step\n callbacks.onStep?.({\n step: searchCount,\n searchRequest: '',\n contextsFound: allContexts.length,\n isFinal: true,\n });\n\n // Deduplicate contexts by file path\n const uniqueContexts = deduplicateContexts(allContexts);\n\n return {\n success: true,\n summary: result.text || 'Exploration completed but no summary was generated.',\n contexts: uniqueContexts,\n searchCount,\n durationMs: Date.now() - startTime,\n };\n } catch (error) {\n return {\n success: false,\n summary: '',\n contexts: deduplicateContexts(allContexts),\n searchCount,\n durationMs: Date.now() - startTime,\n error: error instanceof Error ? error.message : String(error),\n };\n }\n })();\n\n if (timeoutPromise) {\n try {\n return await Promise.race([runPromise, timeoutPromise]);\n } catch (error) {\n return {\n success: false,\n summary: '',\n contexts: deduplicateContexts(allContexts),\n searchCount,\n durationMs: Date.now() - startTime,\n error: error instanceof Error ? error.message : String(error),\n };\n }\n }\n\n return runPromise;\n }\n\n const exploreToolSchema = z.object({\n searchRequest: z\n .string()\n .describe('What to explore in the codebase. Be specific about what you want to understand.'),\n });\n\n /** The Vercel AI tool for use in parent agents */\n const exploreTool = tool({\n description:\n 'Explore a codebase to answer questions about code structure, find implementations, trace call chains, and understand architecture. Returns a summary of findings. Use this for broad exploration rather than pinpoint keyword searches.',\n inputSchema: exploreToolSchema,\n execute: async (params: z.infer<typeof exploreToolSchema>) => {\n const result = await runExplore(params.searchRequest);\n return {\n success: result.success,\n summary: result.summary,\n searchCount: result.searchCount,\n error: result.error,\n };\n },\n });\n\n return {\n /** Vercel AI SDK tool for use as a tool in parent agents */\n tool: exploreTool,\n\n /** Run exploration with messaging support */\n run(prompt: string): ExploreSession {\n const messageHandlers: MessageHandler[] = [];\n const stepHandlers: StepHandler[] = [];\n\n // Start the run lazily (after handlers are attached)\n let resultPromise: Promise<ExploreResult> | null = null;\n\n const session: ExploreSession = {\n on(event: string, handler: any) {\n if (event === 'message') messageHandlers.push(handler);\n if (event === 'step') stepHandlers.push(handler);\n return session;\n },\n send(_text: string) {\n // Convenience method — pause-and-ask flow uses the reply callback\n },\n get result() {\n if (!resultPromise) {\n resultPromise = runExplore(prompt, {\n onStep: (step) => {\n for (const handler of stepHandlers) handler(step);\n },\n onMessage: (msg, reply) => {\n if (messageHandlers.length > 0) {\n for (const handler of messageHandlers) handler(msg, reply);\n } else {\n // No handlers, auto-reply\n reply('');\n }\n },\n });\n }\n return resultPromise;\n },\n };\n\n return session;\n },\n\n /** Stream exploration events as an async generator */\n async *stream(prompt: string): AsyncGenerator<ExploreEvent, ExploreResult, undefined> {\n const events: ExploreEvent[] = [];\n let resolveNext: (() => void) | null = null;\n let done = false;\n\n const resultPromise = runExplore(prompt, {\n onStep: (step) => {\n events.push({\n type: 'step',\n step: step.step,\n searchRequest: step.searchRequest,\n contextsFound: step.contextsFound,\n isFinal: step.isFinal,\n });\n resolveNext?.();\n },\n onMessage: (msg, reply) => {\n events.push({\n type: 'message',\n from: msg.from,\n content: msg.content,\n timestamp: msg.timestamp,\n });\n resolveNext?.();\n // Auto-reply in streaming mode\n reply('Continue with your best judgment.');\n },\n });\n\n // Yield events as they come in\n while (!done) {\n if (events.length > 0) {\n yield events.shift()!;\n } else {\n // Check if the result is already done\n const raceResult = await Promise.race([\n resultPromise.then((r) => ({ type: 'done' as const, result: r })),\n new Promise<{ type: 'event' }>((resolve) => {\n resolveNext = () => resolve({ type: 'event' });\n }),\n ]);\n\n if (raceResult.type === 'done') {\n // Drain remaining events\n while (events.length > 0) {\n yield events.shift()!;\n }\n done = true;\n return raceResult.result;\n }\n }\n }\n\n return await resultPromise;\n },\n };\n}\n\n/** Deduplicate contexts, keeping the latest version of each file */\nfunction deduplicateContexts(contexts: WarpGrepContext[]): WarpGrepContext[] {\n const map = new Map<string, WarpGrepContext>();\n for (const ctx of contexts) {\n const existing = map.get(ctx.file);\n if (!existing || ctx.content.length > existing.content.length) {\n map.set(ctx.file, ctx);\n }\n }\n return Array.from(map.values());\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
+
import {
|
|
2
|
+
executeCodebaseSearch
|
|
3
|
+
} from "./chunk-EEBGEMOO.js";
|
|
1
4
|
import {
|
|
2
5
|
CODEBASE_SEARCH_DESCRIPTION,
|
|
3
6
|
CODEBASE_SEARCH_SYSTEM_PROMPT
|
|
4
7
|
} from "./chunk-YQMPVJ2L.js";
|
|
5
|
-
import {
|
|
6
|
-
executeCodebaseSearch
|
|
7
|
-
} from "./chunk-G5GPLD2E.js";
|
|
8
8
|
|
|
9
9
|
// tools/codebase_search/anthropic.ts
|
|
10
10
|
function createCodebaseSearchTool(config) {
|
|
@@ -80,4 +80,4 @@ function formatResult(result) {
|
|
|
80
80
|
export {
|
|
81
81
|
createCodebaseSearchTool
|
|
82
82
|
};
|
|
83
|
-
//# sourceMappingURL=chunk-
|
|
83
|
+
//# sourceMappingURL=chunk-MHNCFELG.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ProfilesClient
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-7RCHQN7F.js";
|
|
4
4
|
import {
|
|
5
5
|
buildEmbedCode,
|
|
6
6
|
buildLiveIframe,
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
import {
|
|
11
11
|
fetchWithRetry,
|
|
12
12
|
withTimeout
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-B55ZEX4M.js";
|
|
14
14
|
|
|
15
15
|
// tools/browser/core.ts
|
|
16
16
|
var DEFAULT_CONFIG = {
|
|
@@ -609,4 +609,4 @@ export {
|
|
|
609
609
|
getWebp,
|
|
610
610
|
checkHealth
|
|
611
611
|
};
|
|
612
|
-
//# sourceMappingURL=chunk-
|
|
612
|
+
//# sourceMappingURL=chunk-NEVPVOTT.js.map
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
} from "./chunk-2HMEZZKK.js";
|
|
5
5
|
import {
|
|
6
6
|
executeBrowserTask
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-NEVPVOTT.js";
|
|
8
8
|
import {
|
|
9
9
|
__export
|
|
10
10
|
} from "./chunk-PZ5AY32C.js";
|
|
@@ -93,4 +93,4 @@ export {
|
|
|
93
93
|
createBrowserTool,
|
|
94
94
|
openai_exports
|
|
95
95
|
};
|
|
96
|
-
//# sourceMappingURL=chunk-
|
|
96
|
+
//# sourceMappingURL=chunk-NGHLDI64.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
executeEditFile
|
|
3
|
-
} from "./chunk-DOW7Y3AB.js";
|
|
4
1
|
import {
|
|
5
2
|
EDIT_FILE_SYSTEM_PROMPT,
|
|
6
3
|
EDIT_FILE_TOOL_DESCRIPTION
|
|
7
4
|
} from "./chunk-63WE2C5R.js";
|
|
5
|
+
import {
|
|
6
|
+
executeEditFile
|
|
7
|
+
} from "./chunk-MTD2JOO7.js";
|
|
8
8
|
import {
|
|
9
9
|
__export
|
|
10
10
|
} from "./chunk-PZ5AY32C.js";
|
|
@@ -79,4 +79,4 @@ export {
|
|
|
79
79
|
getSystemPrompt,
|
|
80
80
|
anthropic_exports
|
|
81
81
|
};
|
|
82
|
-
//# sourceMappingURL=chunk-
|
|
82
|
+
//# sourceMappingURL=chunk-OICUUS5Y.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-2HMEZZKK.js";
|
|
4
4
|
import {
|
|
5
5
|
executeBrowserTask
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-NEVPVOTT.js";
|
|
7
7
|
import {
|
|
8
8
|
__export
|
|
9
9
|
} from "./chunk-PZ5AY32C.js";
|
|
@@ -54,4 +54,4 @@ export {
|
|
|
54
54
|
browserTool,
|
|
55
55
|
vercel_exports
|
|
56
56
|
};
|
|
57
|
-
//# sourceMappingURL=chunk-
|
|
57
|
+
//# sourceMappingURL=chunk-TCXBKB7P.js.map
|
|
@@ -8,19 +8,19 @@ import {
|
|
|
8
8
|
toolListDirectory,
|
|
9
9
|
toolRead
|
|
10
10
|
} from "./chunk-YLT4PSXT.js";
|
|
11
|
-
import {
|
|
12
|
-
AGENT_CONFIG,
|
|
13
|
-
DEFAULT_MODEL
|
|
14
|
-
} from "./chunk-DKODF3YG.js";
|
|
15
11
|
import {
|
|
16
12
|
formatAgentToolOutput
|
|
17
13
|
} from "./chunk-QRXG5CAZ.js";
|
|
18
14
|
import {
|
|
19
15
|
LLMResponseParser
|
|
20
16
|
} from "./chunk-VCKJ22DX.js";
|
|
17
|
+
import {
|
|
18
|
+
AGENT_CONFIG,
|
|
19
|
+
DEFAULT_MODEL
|
|
20
|
+
} from "./chunk-DKODF3YG.js";
|
|
21
21
|
import {
|
|
22
22
|
SDK_VERSION
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-6W3X76KE.js";
|
|
24
24
|
|
|
25
25
|
// tools/warp_grep/agent/runner.ts
|
|
26
26
|
import OpenAI from "openai";
|
|
@@ -403,4 +403,4 @@ export {
|
|
|
403
403
|
runWarpGrep,
|
|
404
404
|
runWarpGrepStreaming
|
|
405
405
|
};
|
|
406
|
-
//# sourceMappingURL=chunk-
|
|
406
|
+
//# sourceMappingURL=chunk-ULMSWACH.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
import {
|
|
2
|
+
executeCodebaseSearch
|
|
3
|
+
} from "./chunk-EEBGEMOO.js";
|
|
1
4
|
import {
|
|
2
5
|
CODEBASE_SEARCH_DESCRIPTION
|
|
3
6
|
} from "./chunk-YQMPVJ2L.js";
|
|
4
|
-
import {
|
|
5
|
-
executeCodebaseSearch
|
|
6
|
-
} from "./chunk-G5GPLD2E.js";
|
|
7
7
|
|
|
8
8
|
// tools/codebase_search/vercel.ts
|
|
9
9
|
import { tool } from "ai";
|
|
@@ -55,4 +55,4 @@ export {
|
|
|
55
55
|
getSystemPrompt,
|
|
56
56
|
vercel_default
|
|
57
57
|
};
|
|
58
|
-
//# sourceMappingURL=chunk-
|
|
58
|
+
//# sourceMappingURL=chunk-XIEU3N3R.js.map
|
|
@@ -1,45 +1,51 @@
|
|
|
1
|
-
import {
|
|
2
|
-
createGitHubSearchTool as createGitHubSearchTool2,
|
|
3
|
-
createWarpGrepTool as createWarpGrepTool2
|
|
4
|
-
} from "./chunk-QU5JVTYQ.js";
|
|
5
1
|
import {
|
|
6
2
|
createGitHubSearchTool,
|
|
7
3
|
createWarpGrepTool
|
|
8
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-6WSZDCGP.js";
|
|
9
5
|
import {
|
|
10
6
|
createGitHubSearchTool as createGitHubSearchTool3,
|
|
11
7
|
createWarpGrepTool as createWarpGrepTool3
|
|
12
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-EHRKLQ62.js";
|
|
13
9
|
import {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
createCodebaseSearchTool
|
|
18
|
-
} from "./chunk-MDVFAW4F.js";
|
|
10
|
+
createGitHubSearchTool as createGitHubSearchTool2,
|
|
11
|
+
createWarpGrepTool as createWarpGrepTool2
|
|
12
|
+
} from "./chunk-3J74OXN6.js";
|
|
19
13
|
import {
|
|
20
14
|
createCodebaseSearchTool as createCodebaseSearchTool3
|
|
21
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-XIEU3N3R.js";
|
|
22
16
|
import {
|
|
23
17
|
createCodebaseSearchTool as createCodebaseSearchTool2
|
|
24
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-MHNCFELG.js";
|
|
19
|
+
import {
|
|
20
|
+
createCodebaseSearchTool
|
|
21
|
+
} from "./chunk-4J5UW34J.js";
|
|
25
22
|
import {
|
|
26
23
|
CodebaseSearchClient
|
|
27
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-EEBGEMOO.js";
|
|
28
25
|
import {
|
|
29
26
|
createEditFileTool
|
|
30
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-ZYN64ZVG.js";
|
|
31
28
|
import {
|
|
32
29
|
createEditFileTool as createEditFileTool3
|
|
33
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-73ZLTWKF.js";
|
|
34
31
|
import {
|
|
35
32
|
createEditFileTool as createEditFileTool2
|
|
36
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-OICUUS5Y.js";
|
|
37
34
|
import {
|
|
38
35
|
FastApplyClient
|
|
39
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-MTD2JOO7.js";
|
|
40
37
|
import {
|
|
41
38
|
BrowserClient
|
|
42
|
-
} from "./chunk-
|
|
39
|
+
} from "./chunk-NEVPVOTT.js";
|
|
40
|
+
import {
|
|
41
|
+
createExploreSubagent
|
|
42
|
+
} from "./chunk-3T5W2D2W.js";
|
|
43
|
+
import {
|
|
44
|
+
createExploreSubagent as createExploreSubagent2
|
|
45
|
+
} from "./chunk-GQX4PKXZ.js";
|
|
46
|
+
import {
|
|
47
|
+
WarpGrepClient
|
|
48
|
+
} from "./chunk-5CBMLTG5.js";
|
|
43
49
|
import {
|
|
44
50
|
CompactClient
|
|
45
51
|
} from "./chunk-AGFVQOGJ.js";
|
|
@@ -48,7 +54,7 @@ import {
|
|
|
48
54
|
GeminiRouter,
|
|
49
55
|
OpenAIRouter,
|
|
50
56
|
RawRouter
|
|
51
|
-
} from "./chunk-
|
|
57
|
+
} from "./chunk-DRAQDTSR.js";
|
|
52
58
|
import {
|
|
53
59
|
MorphGit
|
|
54
60
|
} from "./chunk-LE66XCOI.js";
|
|
@@ -511,6 +517,22 @@ var AnthropicToolFactory = class {
|
|
|
511
517
|
morphApiKey: this.config.apiKey
|
|
512
518
|
});
|
|
513
519
|
}
|
|
520
|
+
/**
|
|
521
|
+
* Create an Explore subagent that searches the codebase and returns summaries
|
|
522
|
+
*
|
|
523
|
+
* @param client - Anthropic SDK client instance
|
|
524
|
+
* @param model - Model name (e.g., 'claude-haiku-4-5-20251001')
|
|
525
|
+
* @param toolConfig - Subagent configuration (morphApiKey inherited from MorphClient)
|
|
526
|
+
* @returns Explore subagent with .tool, .run(), and .stream() methods
|
|
527
|
+
*/
|
|
528
|
+
createExploreSubagent(client, model, toolConfig) {
|
|
529
|
+
return createExploreSubagent({
|
|
530
|
+
...toolConfig,
|
|
531
|
+
client,
|
|
532
|
+
model,
|
|
533
|
+
morphApiKey: this.config.apiKey
|
|
534
|
+
});
|
|
535
|
+
}
|
|
514
536
|
};
|
|
515
537
|
|
|
516
538
|
// factories/vercel.ts
|
|
@@ -566,6 +588,20 @@ var VercelToolFactory = class {
|
|
|
566
588
|
morphApiKey: this.config.apiKey
|
|
567
589
|
});
|
|
568
590
|
}
|
|
591
|
+
/**
|
|
592
|
+
* Create an Explore subagent that searches the codebase and returns summaries
|
|
593
|
+
*
|
|
594
|
+
* @param model - Vercel AI SDK model instance
|
|
595
|
+
* @param toolConfig - Subagent configuration (morphApiKey inherited from MorphClient)
|
|
596
|
+
* @returns Explore subagent with .tool, .run(), and .stream() methods
|
|
597
|
+
*/
|
|
598
|
+
createExploreSubagent(model, toolConfig) {
|
|
599
|
+
return createExploreSubagent2({
|
|
600
|
+
...toolConfig,
|
|
601
|
+
model,
|
|
602
|
+
morphApiKey: this.config.apiKey
|
|
603
|
+
});
|
|
604
|
+
}
|
|
569
605
|
};
|
|
570
606
|
|
|
571
607
|
// client.ts
|
|
@@ -694,4 +730,4 @@ export {
|
|
|
694
730
|
VercelToolFactory,
|
|
695
731
|
MorphClient
|
|
696
732
|
};
|
|
697
|
-
//# sourceMappingURL=chunk-
|
|
733
|
+
//# sourceMappingURL=chunk-XUDE6SOY.js.map
|