@morphllm/morphsdk 0.2.123 → 0.2.125

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 (155) hide show
  1. package/dist/{chunk-5OJE7GH4.js → chunk-2MK64KK4.js} +2 -2
  2. package/dist/{chunk-UX65IRCX.js → chunk-2S7ZQFIB.js} +2 -2
  3. package/dist/{chunk-FMKJ72KT.js → chunk-33CP5QCC.js} +2 -2
  4. package/dist/{chunk-FMKJ72KT.js.map → chunk-33CP5QCC.js.map} +1 -1
  5. package/dist/{chunk-V4KBK66V.js → chunk-57PXQ6IS.js} +15 -15
  6. package/dist/{chunk-OTOVGCG6.js → chunk-5L3TPS6A.js} +3 -3
  7. package/dist/chunk-5L3TPS6A.js.map +1 -0
  8. package/dist/{chunk-UHL2ZEWG.js → chunk-6TH3VNCF.js} +3 -3
  9. package/dist/{chunk-ETTCJWJK.js → chunk-7RTJCQWB.js} +3 -3
  10. package/dist/{chunk-KL3AMLGL.js → chunk-ACHEU2V3.js} +2 -2
  11. package/dist/{chunk-OFJYDTQI.js → chunk-BGL35LL6.js} +2 -2
  12. package/dist/{chunk-H3U7J5RI.js → chunk-BQO3WODX.js} +3 -3
  13. package/dist/{chunk-UJS3AIWS.js → chunk-DGYWACHC.js} +2 -2
  14. package/dist/{chunk-ANPZFWYV.js → chunk-F6HNFC2H.js} +2 -2
  15. package/dist/{chunk-BJ2764MK.js → chunk-FAZO2LNY.js} +2 -2
  16. package/dist/{chunk-HVBJ4UO6.js → chunk-FEQJCZJQ.js} +2 -2
  17. package/dist/{chunk-K74GLGST.js → chunk-G5YJDK5S.js} +2 -2
  18. package/dist/{chunk-WYYR2EU6.js → chunk-GVGJIXV2.js} +7 -2
  19. package/dist/chunk-GVGJIXV2.js.map +1 -0
  20. package/dist/{chunk-GXFJLL5O.js → chunk-H6KT7IXW.js} +2 -2
  21. package/dist/{chunk-L426IMZD.js → chunk-IB4MEIQG.js} +2 -2
  22. package/dist/{chunk-QGRFAVGK.js → chunk-IRNUW2DB.js} +3 -3
  23. package/dist/{chunk-ZZCMAFN7.js → chunk-OFQRY3RM.js} +2 -2
  24. package/dist/{chunk-QD7KPI7A.js → chunk-OQGX4RZP.js} +2 -2
  25. package/dist/{chunk-MXSGTN7R.js → chunk-TFK4UOUE.js} +3 -3
  26. package/dist/{chunk-XXL62KSJ.js → chunk-TS3E6IRI.js} +2 -2
  27. package/dist/{chunk-DBSOONOY.js → chunk-UGSV5LPO.js} +2 -2
  28. package/dist/{chunk-WE75QX2B.js → chunk-WZAZFW77.js} +1 -1
  29. package/dist/client.cjs +8 -3
  30. package/dist/client.cjs.map +1 -1
  31. package/dist/client.js +22 -22
  32. package/dist/edge.cjs +1 -1
  33. package/dist/edge.cjs.map +1 -1
  34. package/dist/edge.js +4 -4
  35. package/dist/index.cjs +8 -3
  36. package/dist/index.cjs.map +1 -1
  37. package/dist/index.js +22 -22
  38. package/dist/modelrouter/core.cjs +1 -1
  39. package/dist/modelrouter/core.cjs.map +1 -1
  40. package/dist/modelrouter/core.js +3 -3
  41. package/dist/modelrouter/index.cjs +1 -1
  42. package/dist/modelrouter/index.cjs.map +1 -1
  43. package/dist/modelrouter/index.js +3 -3
  44. package/dist/tools/browser/anthropic.cjs +1 -1
  45. package/dist/tools/browser/anthropic.cjs.map +1 -1
  46. package/dist/tools/browser/anthropic.js +5 -5
  47. package/dist/tools/browser/core.cjs +1 -1
  48. package/dist/tools/browser/core.cjs.map +1 -1
  49. package/dist/tools/browser/core.js +4 -4
  50. package/dist/tools/browser/index.cjs +1 -1
  51. package/dist/tools/browser/index.cjs.map +1 -1
  52. package/dist/tools/browser/index.js +7 -7
  53. package/dist/tools/browser/openai.cjs +1 -1
  54. package/dist/tools/browser/openai.cjs.map +1 -1
  55. package/dist/tools/browser/openai.js +5 -5
  56. package/dist/tools/browser/profiles/core.cjs +1 -1
  57. package/dist/tools/browser/profiles/core.cjs.map +1 -1
  58. package/dist/tools/browser/profiles/core.js +3 -3
  59. package/dist/tools/browser/profiles/index.cjs +1 -1
  60. package/dist/tools/browser/profiles/index.cjs.map +1 -1
  61. package/dist/tools/browser/profiles/index.js +3 -3
  62. package/dist/tools/browser/vercel.cjs +1 -1
  63. package/dist/tools/browser/vercel.cjs.map +1 -1
  64. package/dist/tools/browser/vercel.js +5 -5
  65. package/dist/tools/codebase_search/anthropic.cjs +1 -1
  66. package/dist/tools/codebase_search/anthropic.cjs.map +1 -1
  67. package/dist/tools/codebase_search/anthropic.js +4 -4
  68. package/dist/tools/codebase_search/core.cjs +1 -1
  69. package/dist/tools/codebase_search/core.cjs.map +1 -1
  70. package/dist/tools/codebase_search/core.js +3 -3
  71. package/dist/tools/codebase_search/index.cjs +1 -1
  72. package/dist/tools/codebase_search/index.cjs.map +1 -1
  73. package/dist/tools/codebase_search/index.js +6 -6
  74. package/dist/tools/codebase_search/openai.cjs +1 -1
  75. package/dist/tools/codebase_search/openai.cjs.map +1 -1
  76. package/dist/tools/codebase_search/openai.js +4 -4
  77. package/dist/tools/codebase_search/vercel.cjs +1 -1
  78. package/dist/tools/codebase_search/vercel.cjs.map +1 -1
  79. package/dist/tools/codebase_search/vercel.js +4 -4
  80. package/dist/tools/fastapply/anthropic.cjs +1 -1
  81. package/dist/tools/fastapply/anthropic.cjs.map +1 -1
  82. package/dist/tools/fastapply/anthropic.js +4 -4
  83. package/dist/tools/fastapply/apply.cjs +1 -1
  84. package/dist/tools/fastapply/apply.cjs.map +1 -1
  85. package/dist/tools/fastapply/apply.js +2 -2
  86. package/dist/tools/fastapply/core.cjs +1 -1
  87. package/dist/tools/fastapply/core.cjs.map +1 -1
  88. package/dist/tools/fastapply/core.js +3 -3
  89. package/dist/tools/fastapply/index.cjs +1 -1
  90. package/dist/tools/fastapply/index.cjs.map +1 -1
  91. package/dist/tools/fastapply/index.js +6 -6
  92. package/dist/tools/fastapply/openai.cjs +1 -1
  93. package/dist/tools/fastapply/openai.cjs.map +1 -1
  94. package/dist/tools/fastapply/openai.js +4 -4
  95. package/dist/tools/fastapply/vercel.cjs +1 -1
  96. package/dist/tools/fastapply/vercel.cjs.map +1 -1
  97. package/dist/tools/fastapply/vercel.js +4 -4
  98. package/dist/tools/index.cjs +1 -1
  99. package/dist/tools/index.cjs.map +1 -1
  100. package/dist/tools/index.js +6 -6
  101. package/dist/tools/utils/resilience.cjs +1 -1
  102. package/dist/tools/utils/resilience.cjs.map +1 -1
  103. package/dist/tools/utils/resilience.js +2 -2
  104. package/dist/tools/warp_grep/agent/runner.cjs +1 -1
  105. package/dist/tools/warp_grep/agent/runner.cjs.map +1 -1
  106. package/dist/tools/warp_grep/agent/runner.js +2 -2
  107. package/dist/tools/warp_grep/anthropic.cjs +9 -4
  108. package/dist/tools/warp_grep/anthropic.cjs.map +1 -1
  109. package/dist/tools/warp_grep/anthropic.js +6 -6
  110. package/dist/tools/warp_grep/client.cjs +7 -2
  111. package/dist/tools/warp_grep/client.cjs.map +1 -1
  112. package/dist/tools/warp_grep/client.js +4 -4
  113. package/dist/tools/warp_grep/gemini.cjs +9 -4
  114. package/dist/tools/warp_grep/gemini.cjs.map +1 -1
  115. package/dist/tools/warp_grep/gemini.js +5 -5
  116. package/dist/tools/warp_grep/index.cjs +9 -4
  117. package/dist/tools/warp_grep/index.cjs.map +1 -1
  118. package/dist/tools/warp_grep/index.js +5 -5
  119. package/dist/tools/warp_grep/openai.cjs +9 -4
  120. package/dist/tools/warp_grep/openai.cjs.map +1 -1
  121. package/dist/tools/warp_grep/openai.js +6 -6
  122. package/dist/tools/warp_grep/providers/code_storage_http.cjs +6 -1
  123. package/dist/tools/warp_grep/providers/code_storage_http.cjs.map +1 -1
  124. package/dist/tools/warp_grep/providers/code_storage_http.js +1 -1
  125. package/dist/tools/warp_grep/vercel.cjs +9 -4
  126. package/dist/tools/warp_grep/vercel.cjs.map +1 -1
  127. package/dist/tools/warp_grep/vercel.js +6 -6
  128. package/dist/version.cjs +1 -1
  129. package/dist/version.cjs.map +1 -1
  130. package/dist/version.js +1 -1
  131. package/package.json +1 -1
  132. package/dist/chunk-OTOVGCG6.js.map +0 -1
  133. package/dist/chunk-WYYR2EU6.js.map +0 -1
  134. /package/dist/{chunk-5OJE7GH4.js.map → chunk-2MK64KK4.js.map} +0 -0
  135. /package/dist/{chunk-UX65IRCX.js.map → chunk-2S7ZQFIB.js.map} +0 -0
  136. /package/dist/{chunk-V4KBK66V.js.map → chunk-57PXQ6IS.js.map} +0 -0
  137. /package/dist/{chunk-UHL2ZEWG.js.map → chunk-6TH3VNCF.js.map} +0 -0
  138. /package/dist/{chunk-ETTCJWJK.js.map → chunk-7RTJCQWB.js.map} +0 -0
  139. /package/dist/{chunk-KL3AMLGL.js.map → chunk-ACHEU2V3.js.map} +0 -0
  140. /package/dist/{chunk-OFJYDTQI.js.map → chunk-BGL35LL6.js.map} +0 -0
  141. /package/dist/{chunk-H3U7J5RI.js.map → chunk-BQO3WODX.js.map} +0 -0
  142. /package/dist/{chunk-UJS3AIWS.js.map → chunk-DGYWACHC.js.map} +0 -0
  143. /package/dist/{chunk-ANPZFWYV.js.map → chunk-F6HNFC2H.js.map} +0 -0
  144. /package/dist/{chunk-BJ2764MK.js.map → chunk-FAZO2LNY.js.map} +0 -0
  145. /package/dist/{chunk-HVBJ4UO6.js.map → chunk-FEQJCZJQ.js.map} +0 -0
  146. /package/dist/{chunk-K74GLGST.js.map → chunk-G5YJDK5S.js.map} +0 -0
  147. /package/dist/{chunk-GXFJLL5O.js.map → chunk-H6KT7IXW.js.map} +0 -0
  148. /package/dist/{chunk-L426IMZD.js.map → chunk-IB4MEIQG.js.map} +0 -0
  149. /package/dist/{chunk-QGRFAVGK.js.map → chunk-IRNUW2DB.js.map} +0 -0
  150. /package/dist/{chunk-ZZCMAFN7.js.map → chunk-OFQRY3RM.js.map} +0 -0
  151. /package/dist/{chunk-QD7KPI7A.js.map → chunk-OQGX4RZP.js.map} +0 -0
  152. /package/dist/{chunk-MXSGTN7R.js.map → chunk-TFK4UOUE.js.map} +0 -0
  153. /package/dist/{chunk-XXL62KSJ.js.map → chunk-TS3E6IRI.js.map} +0 -0
  154. /package/dist/{chunk-DBSOONOY.js.map → chunk-UGSV5LPO.js.map} +0 -0
  155. /package/dist/{chunk-WE75QX2B.js.map → chunk-WZAZFW77.js.map} +0 -0
@@ -5,15 +5,15 @@ import {
5
5
  execute,
6
6
  openai_default,
7
7
  warpGrepTool
8
- } from "../../chunk-QGRFAVGK.js";
9
- import "../../chunk-OTOVGCG6.js";
8
+ } from "../../chunk-IRNUW2DB.js";
9
+ import "../../chunk-5L3TPS6A.js";
10
10
  import {
11
11
  formatResult
12
- } from "../../chunk-MXSGTN7R.js";
13
- import "../../chunk-WYYR2EU6.js";
12
+ } from "../../chunk-TFK4UOUE.js";
13
+ import "../../chunk-GVGJIXV2.js";
14
14
  import "../../chunk-PUGSTXLO.js";
15
15
  import "../../chunk-63VHBANJ.js";
16
- import "../../chunk-ZZCMAFN7.js";
16
+ import "../../chunk-OFQRY3RM.js";
17
17
  import "../../chunk-3MLWXJTJ.js";
18
18
  import "../../chunk-5PNMAWLC.js";
19
19
  import "../../chunk-APP75CBN.js";
@@ -21,7 +21,7 @@ import "../../chunk-GHGJAQSJ.js";
21
21
  import {
22
22
  getSystemPrompt
23
23
  } from "../../chunk-FMLHRJDF.js";
24
- import "../../chunk-FMKJ72KT.js";
24
+ import "../../chunk-33CP5QCC.js";
25
25
  import "../../chunk-PZ5AY32C.js";
26
26
  export {
27
27
  createGitHubReadFileTool,
@@ -31,7 +31,12 @@ async function post(url, body, op) {
31
31
  });
32
32
  if (!res.ok) {
33
33
  const text = await res.text().catch(() => res.statusText);
34
- throw new Error(`${op} failed (${res.status}): ${text}`);
34
+ try {
35
+ const parsed = JSON.parse(text);
36
+ if (parsed.error) return `Error: ${parsed.error}`;
37
+ } catch {
38
+ }
39
+ return `Error: ${op} failed (${res.status}): ${text}`;
35
40
  }
36
41
  const data = await res.json();
37
42
  if (data.error) throw new Error(data.error);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../tools/warp_grep/providers/code_storage_http.ts"],"sourcesContent":["/**\n * HTTP-based RemoteCommands for code search against the Morph landing API.\n *\n * Translates grep/read/listDir into POST requests to the code-search endpoints,\n * so the WarpGrep agent can search GitHub repositories that have been indexed\n * by the Morph code storage service.\n */\n\nimport type { RemoteCommands } from '../types.js';\n\nexport interface CodeStorageHttpConfig {\n /** Base URL for the code search API (e.g. \"https://morphllm.com\") */\n baseUrl: string;\n /** Repository ID returned by the get-or-create endpoint */\n repoId: string;\n /** Git branch to search */\n branch: string;\n}\n\nasync function post(url: string, body: Record<string, unknown>, op: string): Promise<string> {\n const res = await fetch(url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(body),\n });\n if (!res.ok) {\n const text = await res.text().catch(() => res.statusText);\n throw new Error(`${op} failed (${res.status}): ${text}`);\n }\n const data = await res.json();\n if (data.error) throw new Error(data.error);\n return data.stdout;\n}\n\nexport function createCodeStorageHttpCommands(config: CodeStorageHttpConfig): RemoteCommands {\n const { baseUrl, repoId, branch } = config;\n const encodedRepoId = encodeURIComponent(repoId);\n\n return {\n grep: (pattern: string, path: string, glob?: string) =>\n post(`${baseUrl}/api/code-search/${encodedRepoId}/grep`, { pattern, path, glob, branch }, 'grep'),\n\n read: (path: string, start: number, end: number) =>\n post(`${baseUrl}/api/code-search/${encodedRepoId}/read`, { path, start, end, branch }, 'read'),\n\n listDir: (path: string, maxDepth: number) =>\n post(`${baseUrl}/api/code-search/${encodedRepoId}/list`, { path, maxDepth, branch }, 'list'),\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAmBA,eAAe,KAAK,KAAa,MAA+B,IAA6B;AAC3F,QAAM,MAAM,MAAM,MAAM,KAAK;AAAA,IAC3B,QAAQ;AAAA,IACR,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,IAC9C,MAAM,KAAK,UAAU,IAAI;AAAA,EAC3B,CAAC;AACD,MAAI,CAAC,IAAI,IAAI;AACX,UAAM,OAAO,MAAM,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,UAAU;AACxD,UAAM,IAAI,MAAM,GAAG,EAAE,YAAY,IAAI,MAAM,MAAM,IAAI,EAAE;AAAA,EACzD;AACA,QAAM,OAAO,MAAM,IAAI,KAAK;AAC5B,MAAI,KAAK,MAAO,OAAM,IAAI,MAAM,KAAK,KAAK;AAC1C,SAAO,KAAK;AACd;AAEO,SAAS,8BAA8B,QAA+C;AAC3F,QAAM,EAAE,SAAS,QAAQ,OAAO,IAAI;AACpC,QAAM,gBAAgB,mBAAmB,MAAM;AAE/C,SAAO;AAAA,IACL,MAAM,CAAC,SAAiB,MAAc,SACpC,KAAK,GAAG,OAAO,oBAAoB,aAAa,SAAS,EAAE,SAAS,MAAM,MAAM,OAAO,GAAG,MAAM;AAAA,IAElG,MAAM,CAAC,MAAc,OAAe,QAClC,KAAK,GAAG,OAAO,oBAAoB,aAAa,SAAS,EAAE,MAAM,OAAO,KAAK,OAAO,GAAG,MAAM;AAAA,IAE/F,SAAS,CAAC,MAAc,aACtB,KAAK,GAAG,OAAO,oBAAoB,aAAa,SAAS,EAAE,MAAM,UAAU,OAAO,GAAG,MAAM;AAAA,EAC/F;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../../tools/warp_grep/providers/code_storage_http.ts"],"sourcesContent":["/**\n * HTTP-based RemoteCommands for code search against the Morph landing API.\n *\n * Translates grep/read/listDir into POST requests to the code-search endpoints,\n * so the WarpGrep agent can search GitHub repositories that have been indexed\n * by the Morph code storage service.\n */\n\nimport type { RemoteCommands } from '../types.js';\n\nexport interface CodeStorageHttpConfig {\n /** Base URL for the code search API (e.g. \"https://morphllm.com\") */\n baseUrl: string;\n /** Repository ID returned by the get-or-create endpoint */\n repoId: string;\n /** Git branch to search */\n branch: string;\n}\n\nasync function post(url: string, body: Record<string, unknown>, op: string): Promise<string> {\n const res = await fetch(url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(body),\n });\n if (!res.ok) {\n const text = await res.text().catch(() => res.statusText);\n // Return error as content instead of throwing so the agent can handle it gracefully\n try {\n const parsed = JSON.parse(text);\n if (parsed.error) return `Error: ${parsed.error}`;\n } catch { /* not JSON, fall through */ }\n return `Error: ${op} failed (${res.status}): ${text}`;\n }\n const data = await res.json();\n if (data.error) throw new Error(data.error);\n return data.stdout;\n}\n\nexport function createCodeStorageHttpCommands(config: CodeStorageHttpConfig): RemoteCommands {\n const { baseUrl, repoId, branch } = config;\n const encodedRepoId = encodeURIComponent(repoId);\n\n return {\n grep: (pattern: string, path: string, glob?: string) =>\n post(`${baseUrl}/api/code-search/${encodedRepoId}/grep`, { pattern, path, glob, branch }, 'grep'),\n\n read: (path: string, start: number, end: number) =>\n post(`${baseUrl}/api/code-search/${encodedRepoId}/read`, { path, start, end, branch }, 'read'),\n\n listDir: (path: string, maxDepth: number) =>\n post(`${baseUrl}/api/code-search/${encodedRepoId}/list`, { path, maxDepth, branch }, 'list'),\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAmBA,eAAe,KAAK,KAAa,MAA+B,IAA6B;AAC3F,QAAM,MAAM,MAAM,MAAM,KAAK;AAAA,IAC3B,QAAQ;AAAA,IACR,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,IAC9C,MAAM,KAAK,UAAU,IAAI;AAAA,EAC3B,CAAC;AACD,MAAI,CAAC,IAAI,IAAI;AACX,UAAM,OAAO,MAAM,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,UAAU;AAExD,QAAI;AACF,YAAM,SAAS,KAAK,MAAM,IAAI;AAC9B,UAAI,OAAO,MAAO,QAAO,UAAU,OAAO,KAAK;AAAA,IACjD,QAAQ;AAAA,IAA+B;AACvC,WAAO,UAAU,EAAE,YAAY,IAAI,MAAM,MAAM,IAAI;AAAA,EACrD;AACA,QAAM,OAAO,MAAM,IAAI,KAAK;AAC5B,MAAI,KAAK,MAAO,OAAM,IAAI,MAAM,KAAK,KAAK;AAC1C,SAAO,KAAK;AACd;AAEO,SAAS,8BAA8B,QAA+C;AAC3F,QAAM,EAAE,SAAS,QAAQ,OAAO,IAAI;AACpC,QAAM,gBAAgB,mBAAmB,MAAM;AAE/C,SAAO;AAAA,IACL,MAAM,CAAC,SAAiB,MAAc,SACpC,KAAK,GAAG,OAAO,oBAAoB,aAAa,SAAS,EAAE,SAAS,MAAM,MAAM,OAAO,GAAG,MAAM;AAAA,IAElG,MAAM,CAAC,MAAc,OAAe,QAClC,KAAK,GAAG,OAAO,oBAAoB,aAAa,SAAS,EAAE,MAAM,OAAO,KAAK,OAAO,GAAG,MAAM;AAAA,IAE/F,SAAS,CAAC,MAAc,aACtB,KAAK,GAAG,OAAO,oBAAoB,aAAa,SAAS,EAAE,MAAM,UAAU,OAAO,GAAG,MAAM;AAAA,EAC/F;AACF;","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createCodeStorageHttpCommands
3
- } from "../../../chunk-WYYR2EU6.js";
3
+ } from "../../../chunk-GVGJIXV2.js";
4
4
  import "../../../chunk-PZ5AY32C.js";
5
5
  export {
6
6
  createCodeStorageHttpCommands
@@ -1382,7 +1382,7 @@ var import_openai = __toESM(require("openai"), 1);
1382
1382
  // package.json
1383
1383
  var package_default = {
1384
1384
  name: "@morphllm/morphsdk",
1385
- version: "0.2.123",
1385
+ version: "0.2.125",
1386
1386
  description: "TypeScript SDK and CLI for Morph Fast Apply integration",
1387
1387
  type: "module",
1388
1388
  main: "./dist/index.cjs",
@@ -2171,7 +2171,12 @@ async function post(url, body, op) {
2171
2171
  });
2172
2172
  if (!res.ok) {
2173
2173
  const text = await res.text().catch(() => res.statusText);
2174
- throw new Error(`${op} failed (${res.status}): ${text}`);
2174
+ try {
2175
+ const parsed = JSON.parse(text);
2176
+ if (parsed.error) return `Error: ${parsed.error}`;
2177
+ } catch {
2178
+ }
2179
+ return `Error: ${op} failed (${res.status}): ${text}`;
2175
2180
  }
2176
2181
  const data = await res.json();
2177
2182
  if (data.error) throw new Error(data.error);
@@ -2454,9 +2459,9 @@ function formatResult(result) {
2454
2459
 
2455
2460
  // tools/warp_grep/prompts.ts
2456
2461
  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.';
2457
- var GITHUB_WARP_GREP_SEARCH_DESCRIPTION = 'IMPORTANT: If you need to explore the codebase of a public GitHub repository (not your local workspace), use warpgrep_github_search instead of warpgrep_codebase_search. When the task requires understanding code in an external repo, invoke warpgrep_github_search with a GitHub URL or owner/repo shorthand (e.g., vercel/next.js) and a natural-language query describing the target functionality, bug, or architectural concern. WarpGrep searches GitHub repos the same way it searches local codebases: fast and accurate. Keep queries action-oriented (e.g., "Find where how the new use workflow directive works"), and after reviewing the results, you may verify important findings with other tools or direct file reads. WarpGrep 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 involves exploring code in an external public repo, ALWAYS use warpgrep_github_search.';
2462
+ var GITHUB_WARP_GREP_SEARCH_DESCRIPTION = 'IMPORTANT: If you need to explore the codebase of a public GitHub repository (not your local workspace), use warpgrep_github_search instead of warpgrep_codebase_search. ONLY use this tool when the task requires understanding code in an external repo, and invoke warpgrep_github_search with a GitHub URL or owner/repo shorthand (e.g., vercel/next.js) and a natural-language query describing the target functionality, bug, or architectural concern. DO NOT use this tool when the task requires understanding code in your local workspace. Use warpgrep_codebase_search instead.Useful when you suspect a library or framework is being used in a way that is not documented, or if you suspect an update or a bug in the library or framework.WarpGrep searches GitHub repos the same way it searches local codebases: fast and accurate. Keep queries action-oriented (e.g., "Find where how the new use workflow directive works"), and after reviewing the results, you may verify important findings with other tools or direct file reads. WarpGrep 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 involves exploring code in an external public repo, ALWAYS use warpgrep_github_search.';
2458
2463
  var GITHUB_SEARCH_DESCRIPTION = GITHUB_WARP_GREP_SEARCH_DESCRIPTION;
2459
- var GITHUB_READ_FILE_DESCRIPTION = "Read a single file (or a line range) from a public GitHub repository. Use this when you already know the exact file path you want to read, for example after finding it via warpgrep_github_search results. Takes owner/repo shorthand and the file path within the repo. Optionally specify startLine and endLine (1-based) to read a specific range. Returns the file content with line numbers.";
2464
+ var GITHUB_READ_FILE_DESCRIPTION = "Read a single file (or a line range) from a public GitHub repository. ONLY USE THIS WHEN YOU ALREADY KNOW THE EXACT FILE PATH YOU WANT TO READ, for example after finding it via warpgrep_github_search results. Takes owner/repo shorthand and the file path within the repo. Optionally specify startLine and endLine (1-based) to read a specific range. Returns the file content with line numbers.";
2460
2465
 
2461
2466
  // tools/warp_grep/vercel.ts
2462
2467
  var warpGrepJsonSchema = {