@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.
Files changed (182) hide show
  1. package/dist/{chunk-QU5JVTYQ.js → chunk-3J74OXN6.js} +2 -2
  2. package/dist/chunk-3T5W2D2W.js +288 -0
  3. package/dist/chunk-3T5W2D2W.js.map +1 -0
  4. package/dist/{chunk-MDVFAW4F.js → chunk-4J5UW34J.js} +4 -4
  5. package/dist/{chunk-IMYH4BD2.js → chunk-5CBMLTG5.js} +5 -5
  6. package/dist/{chunk-CXSAPFUD.js → chunk-6W3X76KE.js} +21 -6
  7. package/dist/chunk-6W3X76KE.js.map +1 -0
  8. package/dist/{chunk-HP64WS73.js → chunk-6WSZDCGP.js} +2 -2
  9. package/dist/{chunk-2PU5V3MK.js → chunk-73ZLTWKF.js} +4 -4
  10. package/dist/{chunk-ZK5GJIAX.js → chunk-7RCHQN7F.js} +2 -2
  11. package/dist/{chunk-ZOC7P5RV.js → chunk-ATAQZLQN.js} +2 -2
  12. package/dist/{chunk-GSOXKIQU.js → chunk-B55ZEX4M.js} +2 -2
  13. package/dist/{chunk-QNXGYWS3.js → chunk-DRAQDTSR.js} +2 -2
  14. package/dist/{chunk-G5GPLD2E.js → chunk-EEBGEMOO.js} +2 -2
  15. package/dist/{chunk-H7RABA4R.js → chunk-EHRKLQ62.js} +2 -2
  16. package/dist/chunk-GQX4PKXZ.js +265 -0
  17. package/dist/chunk-GQX4PKXZ.js.map +1 -0
  18. package/dist/{chunk-YOOALIAK.js → chunk-MHNCFELG.js} +4 -4
  19. package/dist/{chunk-DOW7Y3AB.js → chunk-MTD2JOO7.js} +1 -1
  20. package/dist/{chunk-P4FTR3X4.js → chunk-NEVPVOTT.js} +3 -3
  21. package/dist/{chunk-CUPT64F5.js → chunk-NGHLDI64.js} +2 -2
  22. package/dist/{chunk-KWFRPYUW.js → chunk-OICUUS5Y.js} +4 -4
  23. package/dist/{chunk-QNX4PKPV.js → chunk-TCXBKB7P.js} +2 -2
  24. package/dist/{chunk-XIVAX3WB.js → chunk-ULMSWACH.js} +6 -6
  25. package/dist/{chunk-KHHSG2LO.js → chunk-XIEU3N3R.js} +4 -4
  26. package/dist/{chunk-2GSJGZYK.js → chunk-XUDE6SOY.js} +57 -21
  27. package/dist/{chunk-2GSJGZYK.js.map → chunk-XUDE6SOY.js.map} +1 -1
  28. package/dist/{chunk-XLDP5S2P.js → chunk-ZUG2L4BJ.js} +2 -2
  29. package/dist/{chunk-S3CBEA3Y.js → chunk-ZYN64ZVG.js} +4 -4
  30. package/dist/chunk-ZZ25FZG2.js +73 -0
  31. package/dist/chunk-ZZ25FZG2.js.map +1 -0
  32. package/dist/{client-Ca7e11hJ.d.ts → client-BMmG3SZs.d.ts} +39 -0
  33. package/dist/client.cjs +650 -13
  34. package/dist/client.cjs.map +1 -1
  35. package/dist/client.d.ts +2 -1
  36. package/dist/client.js +30 -27
  37. package/dist/edge.cjs +20 -5
  38. package/dist/edge.cjs.map +1 -1
  39. package/dist/edge.js +9 -9
  40. package/dist/index.cjs +653 -16
  41. package/dist/index.cjs.map +1 -1
  42. package/dist/index.d.ts +2 -1
  43. package/dist/index.js +37 -34
  44. package/dist/modelrouter/core.cjs +20 -5
  45. package/dist/modelrouter/core.cjs.map +1 -1
  46. package/dist/modelrouter/core.js +3 -3
  47. package/dist/modelrouter/index.cjs +20 -5
  48. package/dist/modelrouter/index.cjs.map +1 -1
  49. package/dist/modelrouter/index.js +3 -3
  50. package/dist/subagents/anthropic.cjs +2397 -0
  51. package/dist/subagents/anthropic.cjs.map +1 -0
  52. package/dist/subagents/anthropic.d.ts +41 -0
  53. package/dist/subagents/anthropic.js +19 -0
  54. package/dist/subagents/anthropic.js.map +1 -0
  55. package/dist/subagents/index.cjs +101 -0
  56. package/dist/subagents/index.cjs.map +1 -0
  57. package/dist/subagents/index.d.ts +5 -0
  58. package/dist/subagents/index.js +12 -0
  59. package/dist/subagents/index.js.map +1 -0
  60. package/dist/subagents/prompts.cjs +99 -0
  61. package/dist/subagents/prompts.cjs.map +1 -0
  62. package/dist/subagents/prompts.d.ts +42 -0
  63. package/dist/subagents/prompts.js +12 -0
  64. package/dist/subagents/prompts.js.map +1 -0
  65. package/dist/subagents/types.cjs +19 -0
  66. package/dist/subagents/types.cjs.map +1 -0
  67. package/dist/subagents/types.d.ts +93 -0
  68. package/dist/subagents/types.js +1 -0
  69. package/dist/subagents/types.js.map +1 -0
  70. package/dist/subagents/vercel.cjs +2374 -0
  71. package/dist/subagents/vercel.cjs.map +1 -0
  72. package/dist/subagents/vercel.d.ts +32 -0
  73. package/dist/subagents/vercel.js +19 -0
  74. package/dist/subagents/vercel.js.map +1 -0
  75. package/dist/tools/browser/anthropic.cjs +20 -5
  76. package/dist/tools/browser/anthropic.cjs.map +1 -1
  77. package/dist/tools/browser/anthropic.js +6 -6
  78. package/dist/tools/browser/core.cjs +20 -5
  79. package/dist/tools/browser/core.cjs.map +1 -1
  80. package/dist/tools/browser/core.js +5 -5
  81. package/dist/tools/browser/index.cjs +20 -5
  82. package/dist/tools/browser/index.cjs.map +1 -1
  83. package/dist/tools/browser/index.js +15 -15
  84. package/dist/tools/browser/openai.cjs +20 -5
  85. package/dist/tools/browser/openai.cjs.map +1 -1
  86. package/dist/tools/browser/openai.js +6 -6
  87. package/dist/tools/browser/profiles/core.cjs +20 -5
  88. package/dist/tools/browser/profiles/core.cjs.map +1 -1
  89. package/dist/tools/browser/profiles/core.js +3 -3
  90. package/dist/tools/browser/profiles/index.cjs +20 -5
  91. package/dist/tools/browser/profiles/index.cjs.map +1 -1
  92. package/dist/tools/browser/profiles/index.js +3 -3
  93. package/dist/tools/browser/vercel.cjs +20 -5
  94. package/dist/tools/browser/vercel.cjs.map +1 -1
  95. package/dist/tools/browser/vercel.js +6 -6
  96. package/dist/tools/codebase_search/anthropic.cjs +20 -5
  97. package/dist/tools/codebase_search/anthropic.cjs.map +1 -1
  98. package/dist/tools/codebase_search/anthropic.js +4 -4
  99. package/dist/tools/codebase_search/core.cjs +20 -5
  100. package/dist/tools/codebase_search/core.cjs.map +1 -1
  101. package/dist/tools/codebase_search/core.js +3 -3
  102. package/dist/tools/codebase_search/index.cjs +20 -5
  103. package/dist/tools/codebase_search/index.cjs.map +1 -1
  104. package/dist/tools/codebase_search/index.js +10 -10
  105. package/dist/tools/codebase_search/openai.cjs +20 -5
  106. package/dist/tools/codebase_search/openai.cjs.map +1 -1
  107. package/dist/tools/codebase_search/openai.js +4 -4
  108. package/dist/tools/codebase_search/vercel.cjs +20 -5
  109. package/dist/tools/codebase_search/vercel.cjs.map +1 -1
  110. package/dist/tools/codebase_search/vercel.js +4 -4
  111. package/dist/tools/fastapply/anthropic.cjs +20 -5
  112. package/dist/tools/fastapply/anthropic.cjs.map +1 -1
  113. package/dist/tools/fastapply/anthropic.js +4 -4
  114. package/dist/tools/fastapply/apply.cjs +20 -5
  115. package/dist/tools/fastapply/apply.cjs.map +1 -1
  116. package/dist/tools/fastapply/apply.js +2 -2
  117. package/dist/tools/fastapply/core.cjs +20 -5
  118. package/dist/tools/fastapply/core.cjs.map +1 -1
  119. package/dist/tools/fastapply/core.js +3 -3
  120. package/dist/tools/fastapply/index.cjs +20 -5
  121. package/dist/tools/fastapply/index.cjs.map +1 -1
  122. package/dist/tools/fastapply/index.js +8 -8
  123. package/dist/tools/fastapply/openai.cjs +20 -5
  124. package/dist/tools/fastapply/openai.cjs.map +1 -1
  125. package/dist/tools/fastapply/openai.js +4 -4
  126. package/dist/tools/fastapply/vercel.cjs +20 -5
  127. package/dist/tools/fastapply/vercel.cjs.map +1 -1
  128. package/dist/tools/fastapply/vercel.js +4 -4
  129. package/dist/tools/index.cjs +20 -5
  130. package/dist/tools/index.cjs.map +1 -1
  131. package/dist/tools/index.js +8 -8
  132. package/dist/tools/utils/resilience.cjs +20 -5
  133. package/dist/tools/utils/resilience.cjs.map +1 -1
  134. package/dist/tools/utils/resilience.js +2 -2
  135. package/dist/tools/warp_grep/agent/runner.cjs +20 -5
  136. package/dist/tools/warp_grep/agent/runner.cjs.map +1 -1
  137. package/dist/tools/warp_grep/agent/runner.js +3 -3
  138. package/dist/tools/warp_grep/anthropic.cjs +20 -5
  139. package/dist/tools/warp_grep/anthropic.cjs.map +1 -1
  140. package/dist/tools/warp_grep/anthropic.js +6 -6
  141. package/dist/tools/warp_grep/client.cjs +20 -5
  142. package/dist/tools/warp_grep/client.cjs.map +1 -1
  143. package/dist/tools/warp_grep/client.js +5 -5
  144. package/dist/tools/warp_grep/gemini.cjs +20 -5
  145. package/dist/tools/warp_grep/gemini.cjs.map +1 -1
  146. package/dist/tools/warp_grep/gemini.js +5 -5
  147. package/dist/tools/warp_grep/harness.js +4 -4
  148. package/dist/tools/warp_grep/index.cjs +20 -5
  149. package/dist/tools/warp_grep/index.cjs.map +1 -1
  150. package/dist/tools/warp_grep/index.js +7 -7
  151. package/dist/tools/warp_grep/openai.cjs +20 -5
  152. package/dist/tools/warp_grep/openai.cjs.map +1 -1
  153. package/dist/tools/warp_grep/openai.js +6 -6
  154. package/dist/tools/warp_grep/vercel.cjs +20 -5
  155. package/dist/tools/warp_grep/vercel.cjs.map +1 -1
  156. package/dist/tools/warp_grep/vercel.js +6 -6
  157. package/dist/version.cjs +20 -5
  158. package/dist/version.cjs.map +1 -1
  159. package/dist/version.js +1 -1
  160. package/package.json +20 -5
  161. package/dist/chunk-CXSAPFUD.js.map +0 -1
  162. /package/dist/{chunk-QU5JVTYQ.js.map → chunk-3J74OXN6.js.map} +0 -0
  163. /package/dist/{chunk-MDVFAW4F.js.map → chunk-4J5UW34J.js.map} +0 -0
  164. /package/dist/{chunk-IMYH4BD2.js.map → chunk-5CBMLTG5.js.map} +0 -0
  165. /package/dist/{chunk-HP64WS73.js.map → chunk-6WSZDCGP.js.map} +0 -0
  166. /package/dist/{chunk-2PU5V3MK.js.map → chunk-73ZLTWKF.js.map} +0 -0
  167. /package/dist/{chunk-ZK5GJIAX.js.map → chunk-7RCHQN7F.js.map} +0 -0
  168. /package/dist/{chunk-ZOC7P5RV.js.map → chunk-ATAQZLQN.js.map} +0 -0
  169. /package/dist/{chunk-GSOXKIQU.js.map → chunk-B55ZEX4M.js.map} +0 -0
  170. /package/dist/{chunk-QNXGYWS3.js.map → chunk-DRAQDTSR.js.map} +0 -0
  171. /package/dist/{chunk-G5GPLD2E.js.map → chunk-EEBGEMOO.js.map} +0 -0
  172. /package/dist/{chunk-H7RABA4R.js.map → chunk-EHRKLQ62.js.map} +0 -0
  173. /package/dist/{chunk-YOOALIAK.js.map → chunk-MHNCFELG.js.map} +0 -0
  174. /package/dist/{chunk-DOW7Y3AB.js.map → chunk-MTD2JOO7.js.map} +0 -0
  175. /package/dist/{chunk-P4FTR3X4.js.map → chunk-NEVPVOTT.js.map} +0 -0
  176. /package/dist/{chunk-CUPT64F5.js.map → chunk-NGHLDI64.js.map} +0 -0
  177. /package/dist/{chunk-KWFRPYUW.js.map → chunk-OICUUS5Y.js.map} +0 -0
  178. /package/dist/{chunk-QNX4PKPV.js.map → chunk-TCXBKB7P.js.map} +0 -0
  179. /package/dist/{chunk-XIVAX3WB.js.map → chunk-ULMSWACH.js.map} +0 -0
  180. /package/dist/{chunk-KHHSG2LO.js.map → chunk-XIEU3N3R.js.map} +0 -0
  181. /package/dist/{chunk-XLDP5S2P.js.map → chunk-ZUG2L4BJ.js.map} +0 -0
  182. /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-YOOALIAK.js.map
83
+ //# sourceMappingURL=chunk-MHNCFELG.js.map
@@ -112,4 +112,4 @@ export {
112
112
  FastApplyClient,
113
113
  executeEditFile
114
114
  };
115
- //# sourceMappingURL=chunk-DOW7Y3AB.js.map
115
+ //# sourceMappingURL=chunk-MTD2JOO7.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  ProfilesClient
3
- } from "./chunk-ZK5GJIAX.js";
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-GSOXKIQU.js";
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-P4FTR3X4.js.map
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-P4FTR3X4.js";
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-CUPT64F5.js.map
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-KWFRPYUW.js.map
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-P4FTR3X4.js";
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-QNX4PKPV.js.map
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-CXSAPFUD.js";
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-XIVAX3WB.js.map
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-KHHSG2LO.js.map
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-HP64WS73.js";
4
+ } from "./chunk-6WSZDCGP.js";
9
5
  import {
10
6
  createGitHubSearchTool as createGitHubSearchTool3,
11
7
  createWarpGrepTool as createWarpGrepTool3
12
- } from "./chunk-H7RABA4R.js";
8
+ } from "./chunk-EHRKLQ62.js";
13
9
  import {
14
- WarpGrepClient
15
- } from "./chunk-IMYH4BD2.js";
16
- import {
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-KHHSG2LO.js";
15
+ } from "./chunk-XIEU3N3R.js";
22
16
  import {
23
17
  createCodebaseSearchTool as createCodebaseSearchTool2
24
- } from "./chunk-YOOALIAK.js";
18
+ } from "./chunk-MHNCFELG.js";
19
+ import {
20
+ createCodebaseSearchTool
21
+ } from "./chunk-4J5UW34J.js";
25
22
  import {
26
23
  CodebaseSearchClient
27
- } from "./chunk-G5GPLD2E.js";
24
+ } from "./chunk-EEBGEMOO.js";
28
25
  import {
29
26
  createEditFileTool
30
- } from "./chunk-S3CBEA3Y.js";
27
+ } from "./chunk-ZYN64ZVG.js";
31
28
  import {
32
29
  createEditFileTool as createEditFileTool3
33
- } from "./chunk-2PU5V3MK.js";
30
+ } from "./chunk-73ZLTWKF.js";
34
31
  import {
35
32
  createEditFileTool as createEditFileTool2
36
- } from "./chunk-KWFRPYUW.js";
33
+ } from "./chunk-OICUUS5Y.js";
37
34
  import {
38
35
  FastApplyClient
39
- } from "./chunk-DOW7Y3AB.js";
36
+ } from "./chunk-MTD2JOO7.js";
40
37
  import {
41
38
  BrowserClient
42
- } from "./chunk-P4FTR3X4.js";
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-QNXGYWS3.js";
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-2GSJGZYK.js.map
733
+ //# sourceMappingURL=chunk-XUDE6SOY.js.map