@morphllm/morphsdk 0.2.121 → 0.2.122

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 (180) hide show
  1. package/dist/{chunk-L4PK4VC7.js → chunk-2AQLRL4U.js} +2 -2
  2. package/dist/{chunk-266SWRHK.js → chunk-2MJEULZU.js} +2 -2
  3. package/dist/{chunk-YMOTJ6ZP.js → chunk-3PMFQ5AV.js} +2 -2
  4. package/dist/{chunk-EZFXR52Q.js → chunk-4GEBF5OH.js} +2 -2
  5. package/dist/{chunk-BDKXYMU2.js → chunk-4IU2K63O.js} +2 -2
  6. package/dist/{chunk-XERAWJ3H.js → chunk-4LA3OT4Q.js} +28 -4
  7. package/dist/chunk-4LA3OT4Q.js.map +1 -0
  8. package/dist/{chunk-CIFPLFBQ.js → chunk-5UUJULLM.js} +2 -2
  9. package/dist/chunk-63VHBANJ.js +22 -0
  10. package/dist/chunk-63VHBANJ.js.map +1 -0
  11. package/dist/{chunk-L5C6E32T.js → chunk-64KNVHR4.js} +1 -1
  12. package/dist/{chunk-L5C6E32T.js.map → chunk-64KNVHR4.js.map} +1 -1
  13. package/dist/{chunk-3HBZXN6E.js → chunk-73GZ6KUK.js} +2 -2
  14. package/dist/{chunk-W37KJB25.js → chunk-7KOUCN6T.js} +2 -2
  15. package/dist/{chunk-7QZFNYOH.js → chunk-EBROW6GK.js} +2 -2
  16. package/dist/{chunk-JBIFS33U.js → chunk-GTANVDUZ.js} +2 -2
  17. package/dist/{chunk-KW7OEGZK.js → chunk-KJZMKDDP.js} +16 -2
  18. package/dist/{chunk-KW7OEGZK.js.map → chunk-KJZMKDDP.js.map} +1 -1
  19. package/dist/{chunk-WEBUKGPK.js → chunk-L4URLBKV.js} +3 -3
  20. package/dist/{chunk-MAAULSSQ.js → chunk-LE24SVVU.js} +2 -2
  21. package/dist/{chunk-QDGB6FLI.js → chunk-MQWEZJTP.js} +2 -2
  22. package/dist/{chunk-DL3Y3R6A.js → chunk-OTGBQEVH.js} +2 -2
  23. package/dist/{chunk-GNRMDXJA.js → chunk-OWISPSLH.js} +2 -2
  24. package/dist/{chunk-FV3R3JGV.js → chunk-QGE7FGGT.js} +2 -2
  25. package/dist/{chunk-EJYFE73S.js → chunk-RNKHRNSG.js} +3 -3
  26. package/dist/{chunk-EJYFE73S.js.map → chunk-RNKHRNSG.js.map} +1 -1
  27. package/dist/{chunk-CXP63PHW.js → chunk-T3T4LGRD.js} +30 -3
  28. package/dist/chunk-T3T4LGRD.js.map +1 -0
  29. package/dist/{chunk-U5UDFQXK.js → chunk-TBLMIAIH.js} +28 -3
  30. package/dist/chunk-TBLMIAIH.js.map +1 -0
  31. package/dist/{chunk-C3BQUIFE.js → chunk-TXT3W4QK.js} +67 -9
  32. package/dist/chunk-TXT3W4QK.js.map +1 -0
  33. package/dist/{chunk-7IZUNRPZ.js → chunk-UDGJQBTC.js} +54 -15
  34. package/dist/{chunk-7IZUNRPZ.js.map → chunk-UDGJQBTC.js.map} +1 -1
  35. package/dist/chunk-WYYR2EU6.js +29 -0
  36. package/dist/chunk-WYYR2EU6.js.map +1 -0
  37. package/dist/{chunk-AI3ZCOCT.js → chunk-ZHRT6F72.js} +1 -1
  38. package/dist/{client-Bp3MRcJc.d.ts → client-BJrzbMYL.d.ts} +46 -1
  39. package/dist/client.cjs +214 -9
  40. package/dist/client.cjs.map +1 -1
  41. package/dist/client.d.ts +2 -2
  42. package/dist/client.js +23 -21
  43. package/dist/edge.cjs +2 -2
  44. package/dist/edge.cjs.map +1 -1
  45. package/dist/edge.js +4 -4
  46. package/dist/index.cjs +214 -9
  47. package/dist/index.cjs.map +1 -1
  48. package/dist/index.d.ts +2 -2
  49. package/dist/index.js +24 -22
  50. package/dist/modelrouter/core.cjs +2 -2
  51. package/dist/modelrouter/core.cjs.map +1 -1
  52. package/dist/modelrouter/core.js +3 -3
  53. package/dist/modelrouter/index.cjs +2 -2
  54. package/dist/modelrouter/index.cjs.map +1 -1
  55. package/dist/modelrouter/index.js +3 -3
  56. package/dist/tools/browser/anthropic.cjs +2 -2
  57. package/dist/tools/browser/anthropic.cjs.map +1 -1
  58. package/dist/tools/browser/anthropic.js +5 -5
  59. package/dist/tools/browser/core.cjs +2 -2
  60. package/dist/tools/browser/core.cjs.map +1 -1
  61. package/dist/tools/browser/core.js +4 -4
  62. package/dist/tools/browser/index.cjs +2 -2
  63. package/dist/tools/browser/index.cjs.map +1 -1
  64. package/dist/tools/browser/index.js +7 -7
  65. package/dist/tools/browser/openai.cjs +2 -2
  66. package/dist/tools/browser/openai.cjs.map +1 -1
  67. package/dist/tools/browser/openai.js +5 -5
  68. package/dist/tools/browser/profiles/core.cjs +2 -2
  69. package/dist/tools/browser/profiles/core.cjs.map +1 -1
  70. package/dist/tools/browser/profiles/core.js +3 -3
  71. package/dist/tools/browser/profiles/index.cjs +2 -2
  72. package/dist/tools/browser/profiles/index.cjs.map +1 -1
  73. package/dist/tools/browser/profiles/index.js +3 -3
  74. package/dist/tools/browser/vercel.cjs +2 -2
  75. package/dist/tools/browser/vercel.cjs.map +1 -1
  76. package/dist/tools/browser/vercel.js +5 -5
  77. package/dist/tools/codebase_search/anthropic.cjs +2 -2
  78. package/dist/tools/codebase_search/anthropic.cjs.map +1 -1
  79. package/dist/tools/codebase_search/anthropic.js +4 -4
  80. package/dist/tools/codebase_search/core.cjs +2 -2
  81. package/dist/tools/codebase_search/core.cjs.map +1 -1
  82. package/dist/tools/codebase_search/core.js +3 -3
  83. package/dist/tools/codebase_search/index.cjs +2 -2
  84. package/dist/tools/codebase_search/index.cjs.map +1 -1
  85. package/dist/tools/codebase_search/index.js +6 -6
  86. package/dist/tools/codebase_search/openai.cjs +2 -2
  87. package/dist/tools/codebase_search/openai.cjs.map +1 -1
  88. package/dist/tools/codebase_search/openai.js +4 -4
  89. package/dist/tools/codebase_search/vercel.cjs +2 -2
  90. package/dist/tools/codebase_search/vercel.cjs.map +1 -1
  91. package/dist/tools/codebase_search/vercel.js +4 -4
  92. package/dist/tools/fastapply/anthropic.cjs +2 -2
  93. package/dist/tools/fastapply/anthropic.cjs.map +1 -1
  94. package/dist/tools/fastapply/anthropic.js +4 -4
  95. package/dist/tools/fastapply/apply.cjs +2 -2
  96. package/dist/tools/fastapply/apply.cjs.map +1 -1
  97. package/dist/tools/fastapply/apply.js +2 -2
  98. package/dist/tools/fastapply/core.cjs +2 -2
  99. package/dist/tools/fastapply/core.cjs.map +1 -1
  100. package/dist/tools/fastapply/core.js +3 -3
  101. package/dist/tools/fastapply/index.cjs +2 -2
  102. package/dist/tools/fastapply/index.cjs.map +1 -1
  103. package/dist/tools/fastapply/index.js +6 -6
  104. package/dist/tools/fastapply/openai.cjs +2 -2
  105. package/dist/tools/fastapply/openai.cjs.map +1 -1
  106. package/dist/tools/fastapply/openai.js +4 -4
  107. package/dist/tools/fastapply/vercel.cjs +2 -2
  108. package/dist/tools/fastapply/vercel.cjs.map +1 -1
  109. package/dist/tools/fastapply/vercel.js +4 -4
  110. package/dist/tools/index.cjs +2 -2
  111. package/dist/tools/index.cjs.map +1 -1
  112. package/dist/tools/index.js +6 -6
  113. package/dist/tools/utils/resilience.cjs +2 -2
  114. package/dist/tools/utils/resilience.cjs.map +1 -1
  115. package/dist/tools/utils/resilience.js +2 -2
  116. package/dist/tools/warp_grep/agent/runner.cjs +2 -2
  117. package/dist/tools/warp_grep/agent/runner.cjs.map +1 -1
  118. package/dist/tools/warp_grep/agent/runner.js +2 -2
  119. package/dist/tools/warp_grep/anthropic.cjs +364 -2
  120. package/dist/tools/warp_grep/anthropic.cjs.map +1 -1
  121. package/dist/tools/warp_grep/anthropic.d.ts +35 -2
  122. package/dist/tools/warp_grep/anthropic.js +9 -5
  123. package/dist/tools/warp_grep/client.cjs +104 -9
  124. package/dist/tools/warp_grep/client.cjs.map +1 -1
  125. package/dist/tools/warp_grep/client.d.ts +32 -1
  126. package/dist/tools/warp_grep/client.js +5 -3
  127. package/dist/tools/warp_grep/gemini.cjs +364 -2
  128. package/dist/tools/warp_grep/gemini.cjs.map +1 -1
  129. package/dist/tools/warp_grep/gemini.d.ts +35 -2
  130. package/dist/tools/warp_grep/gemini.js +38 -4
  131. package/dist/tools/warp_grep/gemini.js.map +1 -1
  132. package/dist/tools/warp_grep/index.cjs +123 -9
  133. package/dist/tools/warp_grep/index.cjs.map +1 -1
  134. package/dist/tools/warp_grep/index.d.ts +23 -2
  135. package/dist/tools/warp_grep/index.js +16 -5
  136. package/dist/tools/warp_grep/openai.cjs +367 -2
  137. package/dist/tools/warp_grep/openai.cjs.map +1 -1
  138. package/dist/tools/warp_grep/openai.d.ts +35 -2
  139. package/dist/tools/warp_grep/openai.js +9 -5
  140. package/dist/tools/warp_grep/providers/code_storage_http.cjs +53 -0
  141. package/dist/tools/warp_grep/providers/code_storage_http.cjs.map +1 -0
  142. package/dist/tools/warp_grep/providers/code_storage_http.d.ts +23 -0
  143. package/dist/tools/warp_grep/providers/code_storage_http.js +8 -0
  144. package/dist/tools/warp_grep/providers/code_storage_http.js.map +1 -0
  145. package/dist/tools/warp_grep/providers/remote.d.ts +1 -1
  146. package/dist/tools/warp_grep/utils/github.cjs +46 -0
  147. package/dist/tools/warp_grep/utils/github.cjs.map +1 -0
  148. package/dist/tools/warp_grep/utils/github.d.ts +13 -0
  149. package/dist/tools/warp_grep/utils/github.js +8 -0
  150. package/dist/tools/warp_grep/utils/github.js.map +1 -0
  151. package/dist/tools/warp_grep/vercel.cjs +152 -2
  152. package/dist/tools/warp_grep/vercel.cjs.map +1 -1
  153. package/dist/tools/warp_grep/vercel.d.ts +32 -2
  154. package/dist/tools/warp_grep/vercel.js +9 -5
  155. package/dist/{types-D5p8QErL.d.ts → types-CA7989hK.d.ts} +17 -1
  156. package/dist/version.cjs +2 -2
  157. package/dist/version.cjs.map +1 -1
  158. package/dist/version.js +1 -1
  159. package/package.json +2 -2
  160. package/dist/chunk-C3BQUIFE.js.map +0 -1
  161. package/dist/chunk-CXP63PHW.js.map +0 -1
  162. package/dist/chunk-U5UDFQXK.js.map +0 -1
  163. package/dist/chunk-XERAWJ3H.js.map +0 -1
  164. /package/dist/{chunk-L4PK4VC7.js.map → chunk-2AQLRL4U.js.map} +0 -0
  165. /package/dist/{chunk-266SWRHK.js.map → chunk-2MJEULZU.js.map} +0 -0
  166. /package/dist/{chunk-YMOTJ6ZP.js.map → chunk-3PMFQ5AV.js.map} +0 -0
  167. /package/dist/{chunk-EZFXR52Q.js.map → chunk-4GEBF5OH.js.map} +0 -0
  168. /package/dist/{chunk-BDKXYMU2.js.map → chunk-4IU2K63O.js.map} +0 -0
  169. /package/dist/{chunk-CIFPLFBQ.js.map → chunk-5UUJULLM.js.map} +0 -0
  170. /package/dist/{chunk-3HBZXN6E.js.map → chunk-73GZ6KUK.js.map} +0 -0
  171. /package/dist/{chunk-W37KJB25.js.map → chunk-7KOUCN6T.js.map} +0 -0
  172. /package/dist/{chunk-7QZFNYOH.js.map → chunk-EBROW6GK.js.map} +0 -0
  173. /package/dist/{chunk-JBIFS33U.js.map → chunk-GTANVDUZ.js.map} +0 -0
  174. /package/dist/{chunk-WEBUKGPK.js.map → chunk-L4URLBKV.js.map} +0 -0
  175. /package/dist/{chunk-MAAULSSQ.js.map → chunk-LE24SVVU.js.map} +0 -0
  176. /package/dist/{chunk-QDGB6FLI.js.map → chunk-MQWEZJTP.js.map} +0 -0
  177. /package/dist/{chunk-DL3Y3R6A.js.map → chunk-OTGBQEVH.js.map} +0 -0
  178. /package/dist/{chunk-GNRMDXJA.js.map → chunk-OWISPSLH.js.map} +0 -0
  179. /package/dist/{chunk-FV3R3JGV.js.map → chunk-QGE7FGGT.js.map} +0 -0
  180. /package/dist/{chunk-AI3ZCOCT.js.map → chunk-ZHRT6F72.js.map} +0 -0
@@ -1,7 +1,7 @@
1
1
  import { Tool } from '@anthropic-ai/sdk/resources/messages';
2
2
  export { formatResult } from './client.js';
3
3
  export { getSystemPrompt } from './agent/prompt.js';
4
- import { d as WarpGrepToolConfig, b as WarpGrepResult } from '../../types-D5p8QErL.js';
4
+ import { d as WarpGrepToolConfig, b as WarpGrepResult, e as GitHubSearchToolConfig } from '../../types-CA7989hK.js';
5
5
  import './agent/types.js';
6
6
  import '../utils/resilience.js';
7
7
  import './providers/types.js';
@@ -79,5 +79,38 @@ declare function createWarpGrepTool(config: WarpGrepToolConfig): Tool & {
79
79
  formatResult: (result: WarpGrepResult) => string;
80
80
  getSystemPrompt: () => string;
81
81
  };
82
+ /**
83
+ * Create a GitHub search tool for Anthropic SDK
84
+ *
85
+ * @param config - Configuration options (morphApiKey, morphApiUrl, codeSearchUrl, timeout)
86
+ * @returns Anthropic Tool with execute and formatResult methods
87
+ *
88
+ * @example
89
+ * ```typescript
90
+ * import Anthropic from '@anthropic-ai/sdk';
91
+ * import { createGitHubSearchTool } from '@morphllm/morphsdk/tools/warp-grep/anthropic';
92
+ *
93
+ * const tool = createGitHubSearchTool({ morphApiKey: process.env.MORPH_API_KEY });
94
+ *
95
+ * const response = await client.messages.create({
96
+ * model: 'claude-sonnet-4-5-20250929',
97
+ * tools: [tool],
98
+ * messages: [{ role: 'user', content: 'How does auth work in vercel/next.js?' }]
99
+ * });
100
+ *
101
+ * // Execute
102
+ * const result = await tool.execute({ query: 'auth middleware', github: 'vercel/next.js' });
103
+ * console.log(tool.formatResult(result));
104
+ * ```
105
+ */
106
+ declare function createGitHubSearchTool(config: GitHubSearchToolConfig): Tool & {
107
+ execute: (input: {
108
+ query: string;
109
+ github: string;
110
+ branch?: string;
111
+ }) => Promise<WarpGrepResult>;
112
+ formatResult: (result: WarpGrepResult) => string;
113
+ getSystemPrompt: () => string;
114
+ };
82
115
 
83
- export { createWarpGrepTool, execute, warpGrepTool };
116
+ export { createGitHubSearchTool, createWarpGrepTool, execute, warpGrepTool };
@@ -1,14 +1,17 @@
1
1
  import {
2
+ createGitHubSearchTool,
2
3
  createWarpGrepTool,
3
4
  execute,
4
5
  warpGrepTool
5
- } from "../../chunk-XERAWJ3H.js";
6
- import "../../chunk-KW7OEGZK.js";
6
+ } from "../../chunk-4LA3OT4Q.js";
7
+ import "../../chunk-KJZMKDDP.js";
7
8
  import {
8
9
  formatResult
9
- } from "../../chunk-C3BQUIFE.js";
10
+ } from "../../chunk-TXT3W4QK.js";
11
+ import "../../chunk-WYYR2EU6.js";
10
12
  import "../../chunk-PUGSTXLO.js";
11
- import "../../chunk-QDGB6FLI.js";
13
+ import "../../chunk-63VHBANJ.js";
14
+ import "../../chunk-MQWEZJTP.js";
12
15
  import "../../chunk-3MLWXJTJ.js";
13
16
  import "../../chunk-5PNMAWLC.js";
14
17
  import "../../chunk-APP75CBN.js";
@@ -16,9 +19,10 @@ import "../../chunk-GHGJAQSJ.js";
16
19
  import {
17
20
  getSystemPrompt
18
21
  } from "../../chunk-FMLHRJDF.js";
19
- import "../../chunk-EJYFE73S.js";
22
+ import "../../chunk-RNKHRNSG.js";
20
23
  import "../../chunk-PZ5AY32C.js";
21
24
  export {
25
+ createGitHubSearchTool,
22
26
  createWarpGrepTool,
23
27
  execute,
24
28
  formatResult,
@@ -1377,7 +1377,7 @@ var import_openai = __toESM(require("openai"), 1);
1377
1377
  // package.json
1378
1378
  var package_default = {
1379
1379
  name: "@morphllm/morphsdk",
1380
- version: "0.2.121",
1380
+ version: "0.2.122",
1381
1381
  description: "TypeScript SDK and CLI for Morph Fast Apply integration",
1382
1382
  type: "module",
1383
1383
  main: "./dist/index.cjs",
@@ -1519,7 +1519,7 @@ var package_default = {
1519
1519
  "!dist/**/*.test.*"
1520
1520
  ],
1521
1521
  scripts: {
1522
- build: "tsup version.ts index.ts edge.ts client.ts tools/index.ts tools/fastapply/index.ts tools/fastapply/core.ts tools/fastapply/apply.ts tools/fastapply/types.ts tools/fastapply/prompts.ts tools/fastapply/anthropic.ts tools/fastapply/openai.ts tools/fastapply/vercel.ts tools/codebase_search/index.ts tools/codebase_search/core.ts tools/codebase_search/types.ts tools/codebase_search/prompts.ts tools/codebase_search/anthropic.ts tools/codebase_search/openai.ts tools/codebase_search/vercel.ts tools/warp_grep/index.ts tools/warp_grep/client.ts tools/warp_grep/openai.ts tools/warp_grep/anthropic.ts tools/warp_grep/vercel.ts tools/warp_grep/gemini.ts tools/warp_grep/harness.ts tools/warp_grep/agent/config.ts tools/warp_grep/agent/prompt.ts tools/warp_grep/agent/parser.ts tools/warp_grep/agent/runner.ts tools/warp_grep/agent/types.ts tools/warp_grep/agent/formatter.ts tools/warp_grep/providers/types.ts tools/warp_grep/providers/local.ts tools/warp_grep/providers/remote.ts tools/warp_grep/tools/grep.ts tools/warp_grep/tools/analyse.ts tools/warp_grep/tools/read.ts tools/warp_grep/tools/finish.ts tools/warp_grep/utils/paths.ts tools/warp_grep/utils/ripgrep.ts tools/warp_grep/utils/format.ts tools/warp_grep/utils/files.ts git/index.ts git/client.ts git/config.ts git/types.ts tools/browser/index.ts tools/browser/core.ts tools/browser/types.ts tools/browser/prompts.ts tools/browser/anthropic.ts tools/browser/openai.ts tools/browser/vercel.ts tools/browser/live.ts tools/browser/errors.ts tools/browser/profiles/index.ts tools/browser/profiles/core.ts tools/browser/profiles/types.ts modelrouter/index.ts modelrouter/core.ts modelrouter/types.ts tools/compact/index.ts tools/compact/core.ts tools/compact/types.ts tools/utils/resilience.ts --format esm,cjs --sourcemap --clean --dts --dts-resolve",
1522
+ build: "tsup version.ts index.ts edge.ts client.ts tools/index.ts tools/fastapply/index.ts tools/fastapply/core.ts tools/fastapply/apply.ts tools/fastapply/types.ts tools/fastapply/prompts.ts tools/fastapply/anthropic.ts tools/fastapply/openai.ts tools/fastapply/vercel.ts tools/codebase_search/index.ts tools/codebase_search/core.ts tools/codebase_search/types.ts tools/codebase_search/prompts.ts tools/codebase_search/anthropic.ts tools/codebase_search/openai.ts tools/codebase_search/vercel.ts tools/warp_grep/index.ts tools/warp_grep/client.ts tools/warp_grep/openai.ts tools/warp_grep/anthropic.ts tools/warp_grep/vercel.ts tools/warp_grep/gemini.ts tools/warp_grep/harness.ts tools/warp_grep/agent/config.ts tools/warp_grep/agent/prompt.ts tools/warp_grep/agent/parser.ts tools/warp_grep/agent/runner.ts tools/warp_grep/agent/types.ts tools/warp_grep/agent/formatter.ts tools/warp_grep/providers/types.ts tools/warp_grep/providers/local.ts tools/warp_grep/providers/remote.ts tools/warp_grep/providers/code_storage_http.ts tools/warp_grep/tools/grep.ts tools/warp_grep/tools/analyse.ts tools/warp_grep/tools/read.ts tools/warp_grep/tools/finish.ts tools/warp_grep/utils/paths.ts tools/warp_grep/utils/github.ts tools/warp_grep/utils/ripgrep.ts tools/warp_grep/utils/format.ts tools/warp_grep/utils/files.ts git/index.ts git/client.ts git/config.ts git/types.ts tools/browser/index.ts tools/browser/core.ts tools/browser/types.ts tools/browser/prompts.ts tools/browser/anthropic.ts tools/browser/openai.ts tools/browser/vercel.ts tools/browser/live.ts tools/browser/errors.ts tools/browser/profiles/index.ts tools/browser/profiles/core.ts tools/browser/profiles/types.ts modelrouter/index.ts modelrouter/core.ts modelrouter/types.ts tools/compact/index.ts tools/compact/core.ts tools/compact/types.ts tools/utils/resilience.ts --format esm,cjs --sourcemap --clean --dts --dts-resolve",
1523
1523
  prepare: "npm run build",
1524
1524
  typecheck: "tsc --noEmit",
1525
1525
  lint: "eslint .",
@@ -2157,7 +2157,51 @@ var RemoteCommandsProvider = class {
2157
2157
  }
2158
2158
  };
2159
2159
 
2160
+ // tools/warp_grep/providers/code_storage_http.ts
2161
+ async function post(url, body, op) {
2162
+ const res = await fetch(url, {
2163
+ method: "POST",
2164
+ headers: { "Content-Type": "application/json" },
2165
+ body: JSON.stringify(body)
2166
+ });
2167
+ if (!res.ok) {
2168
+ const text = await res.text().catch(() => res.statusText);
2169
+ throw new Error(`${op} failed (${res.status}): ${text}`);
2170
+ }
2171
+ const data = await res.json();
2172
+ if (data.error) throw new Error(data.error);
2173
+ return data.stdout;
2174
+ }
2175
+ function createCodeStorageHttpCommands(config) {
2176
+ const { baseUrl, repoId, branch } = config;
2177
+ const encodedRepoId = encodeURIComponent(repoId);
2178
+ return {
2179
+ grep: (pattern, path5, glob) => post(`${baseUrl}/api/code-search/${encodedRepoId}/grep`, { pattern, path: path5, glob, branch }, "grep"),
2180
+ read: (path5, start, end) => post(`${baseUrl}/api/code-search/${encodedRepoId}/read`, { path: path5, start, end, branch }, "read"),
2181
+ listDir: (path5, maxDepth) => post(`${baseUrl}/api/code-search/${encodedRepoId}/list`, { path: path5, maxDepth, branch }, "list")
2182
+ };
2183
+ }
2184
+
2185
+ // tools/warp_grep/utils/github.ts
2186
+ function parseGitHubUrl(input) {
2187
+ input = input.trim();
2188
+ const urlPattern = /^(?:https?:\/\/)?github\.com\/([^\/]+)\/([^\/\?\#]+)/;
2189
+ const match = input.match(urlPattern);
2190
+ if (match) {
2191
+ return { owner: match[1], repo: match[2].replace(/\.git$/, "") };
2192
+ }
2193
+ const shortPattern = /^([^\/]+)\/([^\/]+)$/;
2194
+ const shortMatch = input.match(shortPattern);
2195
+ if (shortMatch && !shortMatch[1].includes(".")) {
2196
+ return { owner: shortMatch[1], repo: shortMatch[2].replace(/\.git$/, "") };
2197
+ }
2198
+ throw new Error(
2199
+ `Invalid GitHub URL or shorthand: "${input}". Expected "owner/repo" or "https://github.com/owner/repo"`
2200
+ );
2201
+ }
2202
+
2160
2203
  // tools/warp_grep/client.ts
2204
+ var DEFAULT_CODE_SEARCH_URL = "https://morphllm.com";
2161
2205
  async function getLocalProvider(repoRoot, excludes) {
2162
2206
  const { LocalRipgrepProvider: LocalRipgrepProvider2 } = await Promise.resolve().then(() => (init_local(), local_exports));
2163
2207
  return new LocalRipgrepProvider2(repoRoot, excludes);
@@ -2165,13 +2209,7 @@ async function getLocalProvider(repoRoot, excludes) {
2165
2209
  var WarpGrepClient = class {
2166
2210
  config;
2167
2211
  constructor(config = {}) {
2168
- this.config = {
2169
- morphApiKey: config.morphApiKey,
2170
- morphApiUrl: config.morphApiUrl,
2171
- debug: config.debug,
2172
- timeout: config.timeout,
2173
- retryConfig: config.retryConfig
2174
- };
2212
+ this.config = { ...config };
2175
2213
  }
2176
2214
  execute(input) {
2177
2215
  const toolConfig = {
@@ -2191,6 +2229,63 @@ var WarpGrepClient = class {
2191
2229
  }
2192
2230
  return executeToolCall({ query: input.query }, toolConfig);
2193
2231
  }
2232
+ searchGitHub(input) {
2233
+ if (input.streamSteps) {
2234
+ return this._searchGitHubStreaming(input);
2235
+ }
2236
+ return this._searchGitHubAsync(input);
2237
+ }
2238
+ async _resolveGitHubRepo(input) {
2239
+ const { owner, repo } = parseGitHubUrl(input.github);
2240
+ const baseUrl = this.config.codeSearchUrl || DEFAULT_CODE_SEARCH_URL;
2241
+ const importRes = await fetch(`${baseUrl}/api/code-search/get-or-create?url=${encodeURIComponent(`${owner}/${repo}`)}`);
2242
+ if (!importRes.ok) {
2243
+ const text = await importRes.text().catch(() => importRes.statusText);
2244
+ throw new Error(`Failed to import repo ${owner}/${repo}: ${text}`);
2245
+ }
2246
+ const { repoId, defaultBranch } = await importRes.json();
2247
+ return {
2248
+ repo,
2249
+ remoteCommands: createCodeStorageHttpCommands({ baseUrl, repoId, branch: input.branch || defaultBranch })
2250
+ };
2251
+ }
2252
+ async _searchGitHubAsync(input) {
2253
+ try {
2254
+ const { repo, remoteCommands } = await this._resolveGitHubRepo(input);
2255
+ return this.execute({
2256
+ query: input.query,
2257
+ repoRoot: repo,
2258
+ remoteCommands
2259
+ });
2260
+ } catch (error) {
2261
+ return { success: false, error: error instanceof Error ? error.message : String(error) };
2262
+ }
2263
+ }
2264
+ async *_searchGitHubStreaming(input) {
2265
+ let repo;
2266
+ let remoteCommands;
2267
+ try {
2268
+ ({ repo, remoteCommands } = await this._resolveGitHubRepo(input));
2269
+ } catch (error) {
2270
+ return { success: false, error: error instanceof Error ? error.message : String(error) };
2271
+ }
2272
+ const generator = this.execute({
2273
+ query: input.query,
2274
+ repoRoot: repo,
2275
+ remoteCommands,
2276
+ streamSteps: true
2277
+ });
2278
+ let result;
2279
+ for (; ; ) {
2280
+ const { value, done } = await generator.next();
2281
+ if (done) {
2282
+ result = value;
2283
+ break;
2284
+ }
2285
+ yield value;
2286
+ }
2287
+ return result;
2288
+ }
2194
2289
  };
2195
2290
  function executeWarpGrep(input, config) {
2196
2291
  const client = new WarpGrepClient(config);