@morphllm/morphsdk 0.2.120 → 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 (204) hide show
  1. package/dist/{chunk-7TM4RBXE.js → chunk-2AQLRL4U.js} +2 -2
  2. package/dist/{chunk-XQ4KEOJT.js → chunk-2MJEULZU.js} +2 -2
  3. package/dist/{chunk-SNY2UKHQ.js → chunk-3PMFQ5AV.js} +4 -4
  4. package/dist/{chunk-A54BOCBI.js → chunk-4GEBF5OH.js} +2 -2
  5. package/dist/{chunk-VVEK5JSH.js → chunk-4IU2K63O.js} +4 -4
  6. package/dist/{chunk-HCN2MLSO.js → chunk-4LA3OT4Q.js} +28 -4
  7. package/dist/chunk-4LA3OT4Q.js.map +1 -0
  8. package/dist/{chunk-HBWOWL7L.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-2BPPWIJI.js → chunk-73GZ6KUK.js} +2 -2
  14. package/dist/{chunk-NW6PJIID.js → chunk-7KOUCN6T.js} +2 -2
  15. package/dist/{chunk-NLDYHLRB.js → chunk-EBROW6GK.js} +2 -2
  16. package/dist/{chunk-TVPEH6FF.js → chunk-GTANVDUZ.js} +2 -2
  17. package/dist/chunk-J267T54M.js +76 -0
  18. package/dist/chunk-J267T54M.js.map +1 -0
  19. package/dist/{chunk-KW7OEGZK.js → chunk-KJZMKDDP.js} +16 -2
  20. package/dist/{chunk-KW7OEGZK.js.map → chunk-KJZMKDDP.js.map} +1 -1
  21. package/dist/{chunk-4VLTYTEY.js → chunk-L4URLBKV.js} +3 -3
  22. package/dist/{chunk-T7F3DIRK.js → chunk-LE24SVVU.js} +2 -2
  23. package/dist/{chunk-BVINWDTA.js → chunk-MQWEZJTP.js} +6 -6
  24. package/dist/{chunk-6ODXYTLF.js → chunk-OTGBQEVH.js} +2 -2
  25. package/dist/{chunk-7HKYJ2MW.js → chunk-OWISPSLH.js} +2 -2
  26. package/dist/{chunk-HQAPRX5T.js → chunk-QGE7FGGT.js} +4 -4
  27. package/dist/{chunk-4RO43W62.js → chunk-RNKHRNSG.js} +8 -3
  28. package/dist/chunk-RNKHRNSG.js.map +1 -0
  29. package/dist/{chunk-RZ4VC4BG.js → chunk-T3T4LGRD.js} +30 -3
  30. package/dist/chunk-T3T4LGRD.js.map +1 -0
  31. package/dist/{chunk-FZUUET6R.js → chunk-TBLMIAIH.js} +28 -3
  32. package/dist/chunk-TBLMIAIH.js.map +1 -0
  33. package/dist/{chunk-RODHADNG.js → chunk-TXT3W4QK.js} +69 -11
  34. package/dist/chunk-TXT3W4QK.js.map +1 -0
  35. package/dist/{chunk-P4EPXC2Q.js → chunk-UDGJQBTC.js} +70 -17
  36. package/dist/{chunk-P4EPXC2Q.js.map → chunk-UDGJQBTC.js.map} +1 -1
  37. package/dist/chunk-WYYR2EU6.js +29 -0
  38. package/dist/chunk-WYYR2EU6.js.map +1 -0
  39. package/dist/{chunk-5HPN4VL2.js → chunk-ZHRT6F72.js} +1 -1
  40. package/dist/{client-D7iO2TbA.d.ts → client-BJrzbMYL.d.ts} +52 -2
  41. package/dist/client.cjs +302 -9
  42. package/dist/client.cjs.map +1 -1
  43. package/dist/client.d.ts +5 -2
  44. package/dist/client.js +25 -22
  45. package/dist/edge.cjs +81 -2
  46. package/dist/edge.cjs.map +1 -1
  47. package/dist/edge.d.ts +3 -0
  48. package/dist/edge.js +8 -4
  49. package/dist/index.cjs +304 -9
  50. package/dist/index.cjs.map +1 -1
  51. package/dist/index.d.ts +5 -2
  52. package/dist/index.js +30 -24
  53. package/dist/modelrouter/core.cjs +7 -2
  54. package/dist/modelrouter/core.cjs.map +1 -1
  55. package/dist/modelrouter/core.js +3 -3
  56. package/dist/modelrouter/index.cjs +7 -2
  57. package/dist/modelrouter/index.cjs.map +1 -1
  58. package/dist/modelrouter/index.js +3 -3
  59. package/dist/tools/browser/anthropic.cjs +7 -2
  60. package/dist/tools/browser/anthropic.cjs.map +1 -1
  61. package/dist/tools/browser/anthropic.js +5 -5
  62. package/dist/tools/browser/core.cjs +7 -2
  63. package/dist/tools/browser/core.cjs.map +1 -1
  64. package/dist/tools/browser/core.js +4 -4
  65. package/dist/tools/browser/index.cjs +7 -2
  66. package/dist/tools/browser/index.cjs.map +1 -1
  67. package/dist/tools/browser/index.js +7 -7
  68. package/dist/tools/browser/openai.cjs +7 -2
  69. package/dist/tools/browser/openai.cjs.map +1 -1
  70. package/dist/tools/browser/openai.js +5 -5
  71. package/dist/tools/browser/profiles/core.cjs +7 -2
  72. package/dist/tools/browser/profiles/core.cjs.map +1 -1
  73. package/dist/tools/browser/profiles/core.js +3 -3
  74. package/dist/tools/browser/profiles/index.cjs +7 -2
  75. package/dist/tools/browser/profiles/index.cjs.map +1 -1
  76. package/dist/tools/browser/profiles/index.js +3 -3
  77. package/dist/tools/browser/vercel.cjs +7 -2
  78. package/dist/tools/browser/vercel.cjs.map +1 -1
  79. package/dist/tools/browser/vercel.js +5 -5
  80. package/dist/tools/codebase_search/anthropic.cjs +7 -2
  81. package/dist/tools/codebase_search/anthropic.cjs.map +1 -1
  82. package/dist/tools/codebase_search/anthropic.js +4 -4
  83. package/dist/tools/codebase_search/core.cjs +7 -2
  84. package/dist/tools/codebase_search/core.cjs.map +1 -1
  85. package/dist/tools/codebase_search/core.js +3 -3
  86. package/dist/tools/codebase_search/index.cjs +7 -2
  87. package/dist/tools/codebase_search/index.cjs.map +1 -1
  88. package/dist/tools/codebase_search/index.js +6 -6
  89. package/dist/tools/codebase_search/openai.cjs +7 -2
  90. package/dist/tools/codebase_search/openai.cjs.map +1 -1
  91. package/dist/tools/codebase_search/openai.js +4 -4
  92. package/dist/tools/codebase_search/vercel.cjs +7 -2
  93. package/dist/tools/codebase_search/vercel.cjs.map +1 -1
  94. package/dist/tools/codebase_search/vercel.js +4 -4
  95. package/dist/tools/compact/core.cjs +110 -0
  96. package/dist/tools/compact/core.cjs.map +1 -0
  97. package/dist/tools/compact/core.d.ts +37 -0
  98. package/dist/tools/compact/core.js +8 -0
  99. package/dist/tools/compact/core.js.map +1 -0
  100. package/dist/tools/compact/index.cjs +112 -0
  101. package/dist/tools/compact/index.cjs.map +1 -0
  102. package/dist/tools/compact/index.d.ts +4 -0
  103. package/dist/tools/compact/index.js +8 -0
  104. package/dist/tools/compact/index.js.map +1 -0
  105. package/dist/tools/compact/types.cjs +19 -0
  106. package/dist/tools/compact/types.cjs.map +1 -0
  107. package/dist/tools/compact/types.d.ts +60 -0
  108. package/dist/tools/compact/types.js +1 -0
  109. package/dist/tools/compact/types.js.map +1 -0
  110. package/dist/tools/fastapply/anthropic.cjs +7 -2
  111. package/dist/tools/fastapply/anthropic.cjs.map +1 -1
  112. package/dist/tools/fastapply/anthropic.js +4 -4
  113. package/dist/tools/fastapply/apply.cjs +7 -2
  114. package/dist/tools/fastapply/apply.cjs.map +1 -1
  115. package/dist/tools/fastapply/apply.js +2 -2
  116. package/dist/tools/fastapply/core.cjs +7 -2
  117. package/dist/tools/fastapply/core.cjs.map +1 -1
  118. package/dist/tools/fastapply/core.js +3 -3
  119. package/dist/tools/fastapply/index.cjs +7 -2
  120. package/dist/tools/fastapply/index.cjs.map +1 -1
  121. package/dist/tools/fastapply/index.d.ts +1 -1
  122. package/dist/tools/fastapply/index.js +8 -8
  123. package/dist/tools/fastapply/openai.cjs +7 -2
  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 +7 -2
  127. package/dist/tools/fastapply/vercel.cjs.map +1 -1
  128. package/dist/tools/fastapply/vercel.d.ts +1 -1
  129. package/dist/tools/fastapply/vercel.js +4 -4
  130. package/dist/tools/index.cjs +7 -2
  131. package/dist/tools/index.cjs.map +1 -1
  132. package/dist/tools/index.d.ts +1 -1
  133. package/dist/tools/index.js +8 -8
  134. package/dist/tools/utils/resilience.cjs +7 -2
  135. package/dist/tools/utils/resilience.cjs.map +1 -1
  136. package/dist/tools/utils/resilience.js +2 -2
  137. package/dist/tools/warp_grep/agent/runner.cjs +7 -2
  138. package/dist/tools/warp_grep/agent/runner.cjs.map +1 -1
  139. package/dist/tools/warp_grep/agent/runner.js +3 -3
  140. package/dist/tools/warp_grep/anthropic.cjs +369 -2
  141. package/dist/tools/warp_grep/anthropic.cjs.map +1 -1
  142. package/dist/tools/warp_grep/anthropic.d.ts +35 -2
  143. package/dist/tools/warp_grep/anthropic.js +10 -6
  144. package/dist/tools/warp_grep/client.cjs +109 -9
  145. package/dist/tools/warp_grep/client.cjs.map +1 -1
  146. package/dist/tools/warp_grep/client.d.ts +32 -1
  147. package/dist/tools/warp_grep/client.js +6 -4
  148. package/dist/tools/warp_grep/gemini.cjs +369 -2
  149. package/dist/tools/warp_grep/gemini.cjs.map +1 -1
  150. package/dist/tools/warp_grep/gemini.d.ts +35 -2
  151. package/dist/tools/warp_grep/gemini.js +39 -5
  152. package/dist/tools/warp_grep/gemini.js.map +1 -1
  153. package/dist/tools/warp_grep/harness.js +4 -4
  154. package/dist/tools/warp_grep/index.cjs +128 -9
  155. package/dist/tools/warp_grep/index.cjs.map +1 -1
  156. package/dist/tools/warp_grep/index.d.ts +23 -2
  157. package/dist/tools/warp_grep/index.js +19 -8
  158. package/dist/tools/warp_grep/openai.cjs +372 -2
  159. package/dist/tools/warp_grep/openai.cjs.map +1 -1
  160. package/dist/tools/warp_grep/openai.d.ts +35 -2
  161. package/dist/tools/warp_grep/openai.js +10 -6
  162. package/dist/tools/warp_grep/providers/code_storage_http.cjs +53 -0
  163. package/dist/tools/warp_grep/providers/code_storage_http.cjs.map +1 -0
  164. package/dist/tools/warp_grep/providers/code_storage_http.d.ts +23 -0
  165. package/dist/tools/warp_grep/providers/code_storage_http.js +8 -0
  166. package/dist/tools/warp_grep/providers/code_storage_http.js.map +1 -0
  167. package/dist/tools/warp_grep/providers/remote.d.ts +1 -1
  168. package/dist/tools/warp_grep/utils/github.cjs +46 -0
  169. package/dist/tools/warp_grep/utils/github.cjs.map +1 -0
  170. package/dist/tools/warp_grep/utils/github.d.ts +13 -0
  171. package/dist/tools/warp_grep/utils/github.js +8 -0
  172. package/dist/tools/warp_grep/utils/github.js.map +1 -0
  173. package/dist/tools/warp_grep/vercel.cjs +157 -2
  174. package/dist/tools/warp_grep/vercel.cjs.map +1 -1
  175. package/dist/tools/warp_grep/vercel.d.ts +32 -2
  176. package/dist/tools/warp_grep/vercel.js +10 -6
  177. package/dist/{types-D5p8QErL.d.ts → types-CA7989hK.d.ts} +17 -1
  178. package/dist/version.cjs +7 -2
  179. package/dist/version.cjs.map +1 -1
  180. package/dist/version.js +1 -1
  181. package/package.json +7 -2
  182. package/dist/chunk-4RO43W62.js.map +0 -1
  183. package/dist/chunk-FZUUET6R.js.map +0 -1
  184. package/dist/chunk-HCN2MLSO.js.map +0 -1
  185. package/dist/chunk-RODHADNG.js.map +0 -1
  186. package/dist/chunk-RZ4VC4BG.js.map +0 -1
  187. package/dist/{chunk-7TM4RBXE.js.map → chunk-2AQLRL4U.js.map} +0 -0
  188. package/dist/{chunk-XQ4KEOJT.js.map → chunk-2MJEULZU.js.map} +0 -0
  189. package/dist/{chunk-SNY2UKHQ.js.map → chunk-3PMFQ5AV.js.map} +0 -0
  190. package/dist/{chunk-A54BOCBI.js.map → chunk-4GEBF5OH.js.map} +0 -0
  191. package/dist/{chunk-VVEK5JSH.js.map → chunk-4IU2K63O.js.map} +0 -0
  192. package/dist/{chunk-HBWOWL7L.js.map → chunk-5UUJULLM.js.map} +0 -0
  193. package/dist/{chunk-2BPPWIJI.js.map → chunk-73GZ6KUK.js.map} +0 -0
  194. package/dist/{chunk-NW6PJIID.js.map → chunk-7KOUCN6T.js.map} +0 -0
  195. package/dist/{chunk-NLDYHLRB.js.map → chunk-EBROW6GK.js.map} +0 -0
  196. package/dist/{chunk-TVPEH6FF.js.map → chunk-GTANVDUZ.js.map} +0 -0
  197. package/dist/{chunk-4VLTYTEY.js.map → chunk-L4URLBKV.js.map} +0 -0
  198. package/dist/{chunk-T7F3DIRK.js.map → chunk-LE24SVVU.js.map} +0 -0
  199. package/dist/{chunk-BVINWDTA.js.map → chunk-MQWEZJTP.js.map} +0 -0
  200. package/dist/{chunk-6ODXYTLF.js.map → chunk-OTGBQEVH.js.map} +0 -0
  201. package/dist/{chunk-7HKYJ2MW.js.map → chunk-OWISPSLH.js.map} +0 -0
  202. package/dist/{chunk-HQAPRX5T.js.map → chunk-QGE7FGGT.js.map} +0 -0
  203. package/dist/{chunk-5HPN4VL2.js.map → chunk-ZHRT6F72.js.map} +0 -0
  204. package/dist/{vercel-B1GZ_g9N.d.ts → vercel-BTSPdTA-.d.ts} +2 -2
package/dist/client.cjs CHANGED
@@ -36,7 +36,7 @@ var init_package = __esm({
36
36
  "package.json"() {
37
37
  package_default = {
38
38
  name: "@morphllm/morphsdk",
39
- version: "0.2.120",
39
+ version: "0.2.122",
40
40
  description: "TypeScript SDK and CLI for Morph Fast Apply integration",
41
41
  type: "module",
42
42
  main: "./dist/index.cjs",
@@ -162,6 +162,11 @@ var init_package = __esm({
162
162
  types: "./dist/modelrouter/index.d.ts",
163
163
  import: "./dist/modelrouter/index.js",
164
164
  require: "./dist/modelrouter/index.cjs"
165
+ },
166
+ "./tools/compact": {
167
+ types: "./dist/tools/compact/index.d.ts",
168
+ import: "./dist/tools/compact/index.js",
169
+ require: "./dist/tools/compact/index.cjs"
165
170
  }
166
171
  },
167
172
  files: [
@@ -173,7 +178,7 @@ var init_package = __esm({
173
178
  "!dist/**/*.test.*"
174
179
  ],
175
180
  scripts: {
176
- 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/utils/resilience.ts --format esm,cjs --sourcemap --clean --dts --dts-resolve",
181
+ 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",
177
182
  prepare: "npm run build",
178
183
  typecheck: "tsc --noEmit",
179
184
  lint: "eslint .",
@@ -3812,7 +3817,51 @@ var RemoteCommandsProvider = class {
3812
3817
  }
3813
3818
  };
3814
3819
 
3820
+ // tools/warp_grep/providers/code_storage_http.ts
3821
+ async function post(url, body, op) {
3822
+ const res = await fetch(url, {
3823
+ method: "POST",
3824
+ headers: { "Content-Type": "application/json" },
3825
+ body: JSON.stringify(body)
3826
+ });
3827
+ if (!res.ok) {
3828
+ const text = await res.text().catch(() => res.statusText);
3829
+ throw new Error(`${op} failed (${res.status}): ${text}`);
3830
+ }
3831
+ const data = await res.json();
3832
+ if (data.error) throw new Error(data.error);
3833
+ return data.stdout;
3834
+ }
3835
+ function createCodeStorageHttpCommands(config) {
3836
+ const { baseUrl, repoId, branch } = config;
3837
+ const encodedRepoId = encodeURIComponent(repoId);
3838
+ return {
3839
+ grep: (pattern, path5, glob) => post(`${baseUrl}/api/code-search/${encodedRepoId}/grep`, { pattern, path: path5, glob, branch }, "grep"),
3840
+ read: (path5, start, end) => post(`${baseUrl}/api/code-search/${encodedRepoId}/read`, { path: path5, start, end, branch }, "read"),
3841
+ listDir: (path5, maxDepth) => post(`${baseUrl}/api/code-search/${encodedRepoId}/list`, { path: path5, maxDepth, branch }, "list")
3842
+ };
3843
+ }
3844
+
3845
+ // tools/warp_grep/utils/github.ts
3846
+ function parseGitHubUrl(input) {
3847
+ input = input.trim();
3848
+ const urlPattern = /^(?:https?:\/\/)?github\.com\/([^\/]+)\/([^\/\?\#]+)/;
3849
+ const match = input.match(urlPattern);
3850
+ if (match) {
3851
+ return { owner: match[1], repo: match[2].replace(/\.git$/, "") };
3852
+ }
3853
+ const shortPattern = /^([^\/]+)\/([^\/]+)$/;
3854
+ const shortMatch = input.match(shortPattern);
3855
+ if (shortMatch && !shortMatch[1].includes(".")) {
3856
+ return { owner: shortMatch[1], repo: shortMatch[2].replace(/\.git$/, "") };
3857
+ }
3858
+ throw new Error(
3859
+ `Invalid GitHub URL or shorthand: "${input}". Expected "owner/repo" or "https://github.com/owner/repo"`
3860
+ );
3861
+ }
3862
+
3815
3863
  // tools/warp_grep/client.ts
3864
+ var DEFAULT_CODE_SEARCH_URL = "https://morphllm.com";
3816
3865
  async function getLocalProvider(repoRoot, excludes) {
3817
3866
  const { LocalRipgrepProvider: LocalRipgrepProvider2 } = await Promise.resolve().then(() => (init_local(), local_exports));
3818
3867
  return new LocalRipgrepProvider2(repoRoot, excludes);
@@ -3820,13 +3869,7 @@ async function getLocalProvider(repoRoot, excludes) {
3820
3869
  var WarpGrepClient = class {
3821
3870
  config;
3822
3871
  constructor(config = {}) {
3823
- this.config = {
3824
- morphApiKey: config.morphApiKey,
3825
- morphApiUrl: config.morphApiUrl,
3826
- debug: config.debug,
3827
- timeout: config.timeout,
3828
- retryConfig: config.retryConfig
3829
- };
3872
+ this.config = { ...config };
3830
3873
  }
3831
3874
  execute(input) {
3832
3875
  const toolConfig = {
@@ -3846,6 +3889,63 @@ var WarpGrepClient = class {
3846
3889
  }
3847
3890
  return executeToolCall({ query: input.query }, toolConfig);
3848
3891
  }
3892
+ searchGitHub(input) {
3893
+ if (input.streamSteps) {
3894
+ return this._searchGitHubStreaming(input);
3895
+ }
3896
+ return this._searchGitHubAsync(input);
3897
+ }
3898
+ async _resolveGitHubRepo(input) {
3899
+ const { owner, repo } = parseGitHubUrl(input.github);
3900
+ const baseUrl = this.config.codeSearchUrl || DEFAULT_CODE_SEARCH_URL;
3901
+ const importRes = await fetch(`${baseUrl}/api/code-search/get-or-create?url=${encodeURIComponent(`${owner}/${repo}`)}`);
3902
+ if (!importRes.ok) {
3903
+ const text = await importRes.text().catch(() => importRes.statusText);
3904
+ throw new Error(`Failed to import repo ${owner}/${repo}: ${text}`);
3905
+ }
3906
+ const { repoId, defaultBranch } = await importRes.json();
3907
+ return {
3908
+ repo,
3909
+ remoteCommands: createCodeStorageHttpCommands({ baseUrl, repoId, branch: input.branch || defaultBranch })
3910
+ };
3911
+ }
3912
+ async _searchGitHubAsync(input) {
3913
+ try {
3914
+ const { repo, remoteCommands } = await this._resolveGitHubRepo(input);
3915
+ return this.execute({
3916
+ query: input.query,
3917
+ repoRoot: repo,
3918
+ remoteCommands
3919
+ });
3920
+ } catch (error) {
3921
+ return { success: false, error: error instanceof Error ? error.message : String(error) };
3922
+ }
3923
+ }
3924
+ async *_searchGitHubStreaming(input) {
3925
+ let repo;
3926
+ let remoteCommands;
3927
+ try {
3928
+ ({ repo, remoteCommands } = await this._resolveGitHubRepo(input));
3929
+ } catch (error) {
3930
+ return { success: false, error: error instanceof Error ? error.message : String(error) };
3931
+ }
3932
+ const generator = this.execute({
3933
+ query: input.query,
3934
+ repoRoot: repo,
3935
+ remoteCommands,
3936
+ streamSteps: true
3937
+ });
3938
+ let result;
3939
+ for (; ; ) {
3940
+ const { value, done } = await generator.next();
3941
+ if (done) {
3942
+ result = value;
3943
+ break;
3944
+ }
3945
+ yield value;
3946
+ }
3947
+ return result;
3948
+ }
3849
3949
  };
3850
3950
  async function executeToolCall(input, config) {
3851
3951
  const parsed = typeof input === "string" ? JSON.parse(input) : input;
@@ -4834,6 +4934,78 @@ var MorphGit = class {
4834
4934
  var import_isomorphic_git2 = __toESM(require("isomorphic-git"), 1);
4835
4935
  var import_node2 = __toESM(require("isomorphic-git/http/node"), 1);
4836
4936
 
4937
+ // tools/compact/core.ts
4938
+ var import_openai3 = __toESM(require("openai"), 1);
4939
+ var DEFAULT_API_URL4 = "https://api.morphllm.com";
4940
+ var DEFAULT_TIMEOUT3 = 12e4;
4941
+ var CompactClient = class {
4942
+ config;
4943
+ constructor(config = {}) {
4944
+ this.config = {
4945
+ morphApiUrl: DEFAULT_API_URL4,
4946
+ timeout: DEFAULT_TIMEOUT3,
4947
+ ...config
4948
+ };
4949
+ }
4950
+ /**
4951
+ * Compact conversation context using Morph compactor
4952
+ *
4953
+ * @param input - Compact parameters including input content and optional prompt
4954
+ * @returns Compact result with compacted output and usage stats
4955
+ *
4956
+ * @example
4957
+ * ```typescript
4958
+ * const client = new CompactClient({ morphApiKey: 'sk-...' });
4959
+ * const result = await client.compact({
4960
+ * input: 'Long conversation context to compact...',
4961
+ * prompt: 'Focus on the code review feedback',
4962
+ * });
4963
+ * console.log(result.output);
4964
+ * ```
4965
+ */
4966
+ async compact(input) {
4967
+ const apiKey = this.config.morphApiKey || (typeof process !== "undefined" ? process.env?.MORPH_API_KEY : void 0);
4968
+ const debug = this.config.debug || false;
4969
+ if (!apiKey) {
4970
+ throw new Error(
4971
+ "Morph API key not found. Set MORPH_API_KEY environment variable or pass morphApiKey in config."
4972
+ );
4973
+ }
4974
+ const client = new import_openai3.default({
4975
+ apiKey,
4976
+ baseURL: `${this.config.morphApiUrl}/v1`,
4977
+ timeout: this.config.timeout,
4978
+ maxRetries: this.config.retryConfig?.maxRetries ?? 3
4979
+ });
4980
+ const instructions = input.prompt ? `The user's next message will be: "${input.prompt}"
4981
+ Prioritize keeping context relevant to this query.` : void 0;
4982
+ if (debug) {
4983
+ console.log(`[Compact] Calling ${this.config.morphApiUrl}/v1/responses`);
4984
+ console.log(`[Compact] Model: ${input.model || "morph-compactor"}`);
4985
+ }
4986
+ const startTime = Date.now();
4987
+ const response = await client.responses.create({
4988
+ model: input.model || "morph-compactor",
4989
+ input: input.input,
4990
+ ...instructions && { instructions },
4991
+ ...input.temperature != null && { temperature: input.temperature },
4992
+ ...input.max_output_tokens != null && { max_output_tokens: input.max_output_tokens },
4993
+ stream: false
4994
+ });
4995
+ const elapsed = Date.now() - startTime;
4996
+ if (debug) {
4997
+ console.log(`[Compact] Success in ${elapsed}ms`);
4998
+ }
4999
+ return {
5000
+ id: response.id,
5001
+ output: response.output,
5002
+ usage: response.usage,
5003
+ status: response.status ?? "completed",
5004
+ model: response.model
5005
+ };
5006
+ }
5007
+ };
5008
+
4837
5009
  // modelrouter/core.ts
4838
5010
  var DEFAULT_CONFIG3 = {
4839
5011
  apiUrl: "https://api.morphllm.com",
@@ -5037,6 +5209,17 @@ var RawRouter = class extends BaseRouter {
5037
5209
  // tools/warp_grep/prompts.ts
5038
5210
  var WARP_GREP_TOOL_NAME = "warpgrep_codebase_search";
5039
5211
  var WARP_GREP_DESCRIPTION = 'IMPORTANT: If you need to explore the codebase to gather context, and the task does not involve a single file or function which is provided by name, you should ALWAYS use the warpgrep codebase search tool first instead of running search commands. When the task requires exploration beyond a single known file, invoke warpgrep first with a natural-language query describing the target functionality, bug, or architectural concern. Warp Grep is a fast and accurate tool that can search for all relevant context in a codebase. Keep queries action-oriented (e.g., "Find where billing invoices are generated and emailed"), and after reviewing the summarized results, you may verify important findings with other search tools or direct file reads to ensure completeness. Warp Grep can be used for query types like: find function responsible for <small feature>; find code that does <description>; find code path for <big feature>; Where does <minimal error message> come from?; or any query of that type. When a task requires exploration beyond a single known file, ALWAYS default to warpgrep codebase search before other search mechanisms.';
5212
+ var GITHUB_SEARCH_TOOL_NAME = "warpgrep_github_search";
5213
+ var GITHUB_SEARCH_DESCRIPTION = "Search a public GitHub repository using WarpGrep. Provide a GitHub URL or owner/repo shorthand and a natural language query.";
5214
+ var GITHUB_SEARCH_INPUT_SCHEMA = {
5215
+ type: "object",
5216
+ properties: {
5217
+ query: { type: "string", description: "Natural language search query describing what to find in the repository" },
5218
+ github: { type: "string", description: 'GitHub repository URL or owner/repo shorthand (e.g., "vercel/next.js" or "https://github.com/vercel/next.js")' },
5219
+ branch: { type: "string", description: "Branch to search (defaults to the repository default branch)" }
5220
+ },
5221
+ required: ["query", "github"]
5222
+ };
5040
5223
 
5041
5224
  // tools/warp_grep/openai.ts
5042
5225
  var TOOL_PARAMETERS = {
@@ -5067,6 +5250,28 @@ function createWarpGrepTool(config) {
5067
5250
  }
5068
5251
  });
5069
5252
  }
5253
+ function createGitHubSearchTool(config) {
5254
+ const client = new WarpGrepClient(config);
5255
+ const tool4 = {
5256
+ type: "function",
5257
+ function: {
5258
+ name: GITHUB_SEARCH_TOOL_NAME,
5259
+ description: GITHUB_SEARCH_DESCRIPTION,
5260
+ parameters: GITHUB_SEARCH_INPUT_SCHEMA
5261
+ }
5262
+ };
5263
+ return Object.assign(tool4, {
5264
+ execute: async (input) => {
5265
+ return client.searchGitHub(input);
5266
+ },
5267
+ formatResult: (result) => {
5268
+ return formatResult(result);
5269
+ },
5270
+ getSystemPrompt: () => {
5271
+ return getSystemPrompt();
5272
+ }
5273
+ });
5274
+ }
5070
5275
 
5071
5276
  // tools/codebase_search/prompts.ts
5072
5277
  var CODEBASE_SEARCH_DESCRIPTION = `Semantic search that finds code by meaning, not exact text.
@@ -5311,6 +5516,18 @@ var OpenAIToolFactory = class {
5311
5516
  morphApiKey: this.config.apiKey
5312
5517
  });
5313
5518
  }
5519
+ /**
5520
+ * Create an OpenAI-compatible GitHub search tool
5521
+ *
5522
+ * @param toolConfig - Tool configuration (morphApiKey inherited from MorphClient)
5523
+ * @returns OpenAI ChatCompletionTool with execute and formatResult methods
5524
+ */
5525
+ createGitHubSearchTool(toolConfig) {
5526
+ return createGitHubSearchTool({
5527
+ ...toolConfig,
5528
+ morphApiKey: this.config.apiKey
5529
+ });
5530
+ }
5314
5531
  };
5315
5532
 
5316
5533
  // tools/warp_grep/anthropic.ts
@@ -5339,6 +5556,25 @@ function createWarpGrepTool2(config) {
5339
5556
  }
5340
5557
  });
5341
5558
  }
5559
+ function createGitHubSearchTool2(config) {
5560
+ const client = new WarpGrepClient(config);
5561
+ const tool4 = {
5562
+ name: GITHUB_SEARCH_TOOL_NAME,
5563
+ description: GITHUB_SEARCH_DESCRIPTION,
5564
+ input_schema: GITHUB_SEARCH_INPUT_SCHEMA
5565
+ };
5566
+ return Object.assign(tool4, {
5567
+ execute: async (input) => {
5568
+ return client.searchGitHub(input);
5569
+ },
5570
+ formatResult: (result) => {
5571
+ return formatResult(result);
5572
+ },
5573
+ getSystemPrompt: () => {
5574
+ return getSystemPrompt();
5575
+ }
5576
+ });
5577
+ }
5342
5578
 
5343
5579
  // tools/codebase_search/anthropic.ts
5344
5580
  function createCodebaseSearchTool2(config) {
@@ -5500,6 +5736,18 @@ var AnthropicToolFactory = class {
5500
5736
  morphApiKey: this.config.apiKey
5501
5737
  });
5502
5738
  }
5739
+ /**
5740
+ * Create an Anthropic-compatible GitHub search tool
5741
+ *
5742
+ * @param toolConfig - Tool configuration (morphApiKey inherited from MorphClient)
5743
+ * @returns Anthropic Tool with execute and formatResult methods
5744
+ */
5745
+ createGitHubSearchTool(toolConfig) {
5746
+ return createGitHubSearchTool2({
5747
+ ...toolConfig,
5748
+ morphApiKey: this.config.apiKey
5749
+ });
5750
+ }
5503
5751
  };
5504
5752
 
5505
5753
  // tools/warp_grep/vercel.ts
@@ -5537,6 +5785,28 @@ function createWarpGrepTool3(config) {
5537
5785
  }
5538
5786
  });
5539
5787
  }
5788
+ function createGitHubSearchTool3(config) {
5789
+ const client = new WarpGrepClient(config);
5790
+ return (0, import_ai.tool)({
5791
+ description: GITHUB_SEARCH_DESCRIPTION,
5792
+ inputSchema: import_zod.z.object({
5793
+ query: import_zod.z.string().describe("Natural language search query"),
5794
+ github: import_zod.z.string().describe('GitHub URL or "owner/repo" shorthand'),
5795
+ branch: import_zod.z.string().optional().describe("Branch to search (defaults to repo default branch)")
5796
+ }),
5797
+ execute: async (params) => {
5798
+ const result = await client.searchGitHub(params);
5799
+ if (!result.success) {
5800
+ throw new Error(`GitHub search failed: ${result.error}`);
5801
+ }
5802
+ return {
5803
+ success: true,
5804
+ contexts: result.contexts,
5805
+ summary: result.summary
5806
+ };
5807
+ }
5808
+ });
5809
+ }
5540
5810
 
5541
5811
  // tools/codebase_search/vercel.ts
5542
5812
  var import_ai2 = require("ai");
@@ -5679,6 +5949,18 @@ var VercelToolFactory = class {
5679
5949
  morphApiKey: this.config.apiKey
5680
5950
  });
5681
5951
  }
5952
+ /**
5953
+ * Create a Vercel AI SDK-compatible GitHub search tool
5954
+ *
5955
+ * @param toolConfig - Tool configuration (morphApiKey inherited from MorphClient)
5956
+ * @returns Vercel AI SDK tool
5957
+ */
5958
+ createGitHubSearchTool(toolConfig) {
5959
+ return createGitHubSearchTool3({
5960
+ ...toolConfig,
5961
+ morphApiKey: this.config.apiKey
5962
+ });
5963
+ }
5682
5964
  };
5683
5965
 
5684
5966
  // client.ts
@@ -5705,6 +5987,8 @@ var MorphClient = class {
5705
5987
  anthropic;
5706
5988
  /** Vercel AI SDK tool factories */
5707
5989
  vercel;
5990
+ /** Responses API with compact tool */
5991
+ responses;
5708
5992
  /**
5709
5993
  * Create a new Morph SDK client
5710
5994
  *
@@ -5781,6 +6065,15 @@ var MorphClient = class {
5781
6065
  retryConfig: config.retryConfig
5782
6066
  })
5783
6067
  };
6068
+ const compactClient = new CompactClient({
6069
+ morphApiKey: config.apiKey,
6070
+ timeout: config.timeout,
6071
+ retryConfig: config.retryConfig,
6072
+ debug: config.debug
6073
+ });
6074
+ this.responses = {
6075
+ compact: compactClient.compact.bind(compactClient)
6076
+ };
5784
6077
  this.openai = new OpenAIToolFactory(config);
5785
6078
  this.anthropic = new AnthropicToolFactory(config);
5786
6079
  this.vercel = new VercelToolFactory(config);