@morphllm/morphsdk 0.2.153 → 0.2.155

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-MJQNHIUZ.js → chunk-372QEHFA.js} +2 -2
  2. package/dist/{chunk-QMLGJK66.js → chunk-3ULQXPPO.js} +2 -2
  3. package/dist/{chunk-UFPDHAZ2.js → chunk-AEYK5XL5.js} +2 -2
  4. package/dist/{chunk-7IQMKVT4.js → chunk-CNKSTKRM.js} +2 -2
  5. package/dist/{chunk-ZAADJ3ER.js → chunk-CZ2LZ4GV.js} +4 -3
  6. package/dist/{chunk-ZAADJ3ER.js.map → chunk-CZ2LZ4GV.js.map} +1 -1
  7. package/dist/{chunk-H6RMMTKF.js → chunk-D34NUQGV.js} +2 -2
  8. package/dist/{chunk-NO2FGIQ7.js → chunk-DQJBEM4O.js} +2 -2
  9. package/dist/{chunk-NO2FGIQ7.js.map → chunk-DQJBEM4O.js.map} +1 -1
  10. package/dist/chunk-GLQWEINZ.js +53 -0
  11. package/dist/chunk-GLQWEINZ.js.map +1 -0
  12. package/dist/{chunk-GKBKSSUA.js → chunk-GOKSI67V.js} +2 -2
  13. package/dist/{chunk-QFRDNJXM.js → chunk-GPK433QG.js} +3 -3
  14. package/dist/{chunk-WTMEO2YB.js → chunk-GZXWWB4Z.js} +2 -2
  15. package/dist/{chunk-Q4DXGXXU.js → chunk-KQR3VCGR.js} +2 -2
  16. package/dist/{chunk-JB4T3K5T.js → chunk-L4GXXQEO.js} +2 -2
  17. package/dist/{chunk-QDDT5L5Y.js → chunk-MBVOMNXG.js} +2 -2
  18. package/dist/{chunk-KM7RICB6.js → chunk-NMBM37CB.js} +3 -2
  19. package/dist/{chunk-KM7RICB6.js.map → chunk-NMBM37CB.js.map} +1 -1
  20. package/dist/{chunk-5D7DDSZQ.js → chunk-Q3HZGVQ2.js} +2 -2
  21. package/dist/{chunk-AGFVQOGJ.js → chunk-SCVWDNQP.js} +2 -2
  22. package/dist/chunk-SCVWDNQP.js.map +1 -0
  23. package/dist/{chunk-6FRGRPUO.js → chunk-TZCNMJHF.js} +2 -2
  24. package/dist/{chunk-GAZCVVNY.js → chunk-V2BUYOKP.js} +2 -2
  25. package/dist/{chunk-QVWKDO76.js → chunk-Y23PQQRM.js} +20 -20
  26. package/dist/{chunk-FWHQH6RG.js → chunk-Y3LQWQHU.js} +4 -4
  27. package/dist/chunk-Y3LQWQHU.js.map +1 -0
  28. package/dist/{chunk-MFKR5VVL.js → chunk-YCUX3ZNQ.js} +17 -16
  29. package/dist/chunk-YCUX3ZNQ.js.map +1 -0
  30. package/dist/{chunk-77O2YF4B.js → chunk-YIUOPGWE.js} +2 -2
  31. package/dist/{chunk-3VMW3UJY.js → chunk-YJEXFOLJ.js} +4 -4
  32. package/dist/chunk-YJEXFOLJ.js.map +1 -0
  33. package/dist/{chunk-YBVAKGFE.js → chunk-YRHDWJDA.js} +2 -2
  34. package/dist/{chunk-I3ZPXGMZ.js → chunk-YYOPTKC3.js} +2 -2
  35. package/dist/{chunk-7AWNEVBE.js → chunk-ZMGKZNII.js} +6 -6
  36. package/dist/chunk-ZMGKZNII.js.map +1 -0
  37. package/dist/{client-BcO_qte8.d.ts → client-PkB7g9SA.d.ts} +1 -1
  38. package/dist/client.cjs +152 -107
  39. package/dist/client.cjs.map +1 -1
  40. package/dist/client.d.ts +1 -1
  41. package/dist/client.js +24 -23
  42. package/dist/edge.cjs +4 -3
  43. package/dist/edge.cjs.map +1 -1
  44. package/dist/edge.js +7 -7
  45. package/dist/index.cjs +152 -107
  46. package/dist/index.cjs.map +1 -1
  47. package/dist/index.d.ts +1 -1
  48. package/dist/index.js +26 -25
  49. package/dist/modelrouter/core.cjs +1 -1
  50. package/dist/modelrouter/core.cjs.map +1 -1
  51. package/dist/modelrouter/core.js +3 -3
  52. package/dist/modelrouter/index.cjs +1 -1
  53. package/dist/modelrouter/index.cjs.map +1 -1
  54. package/dist/modelrouter/index.js +3 -3
  55. package/dist/subagents/anthropic.cjs +138 -15
  56. package/dist/subagents/anthropic.cjs.map +1 -1
  57. package/dist/subagents/anthropic.js +6 -4
  58. package/dist/subagents/vercel.cjs +138 -15
  59. package/dist/subagents/vercel.cjs.map +1 -1
  60. package/dist/subagents/vercel.js +6 -4
  61. package/dist/tools/browser/anthropic.cjs +1 -1
  62. package/dist/tools/browser/anthropic.cjs.map +1 -1
  63. package/dist/tools/browser/anthropic.js +5 -5
  64. package/dist/tools/browser/core.cjs +1 -1
  65. package/dist/tools/browser/core.cjs.map +1 -1
  66. package/dist/tools/browser/core.js +4 -4
  67. package/dist/tools/browser/index.cjs +1 -1
  68. package/dist/tools/browser/index.cjs.map +1 -1
  69. package/dist/tools/browser/index.js +7 -7
  70. package/dist/tools/browser/openai.cjs +1 -1
  71. package/dist/tools/browser/openai.cjs.map +1 -1
  72. package/dist/tools/browser/openai.js +5 -5
  73. package/dist/tools/browser/profiles/core.cjs +1 -1
  74. package/dist/tools/browser/profiles/core.cjs.map +1 -1
  75. package/dist/tools/browser/profiles/core.js +3 -3
  76. package/dist/tools/browser/profiles/index.cjs +1 -1
  77. package/dist/tools/browser/profiles/index.cjs.map +1 -1
  78. package/dist/tools/browser/profiles/index.js +3 -3
  79. package/dist/tools/browser/vercel.cjs +1 -1
  80. package/dist/tools/browser/vercel.cjs.map +1 -1
  81. package/dist/tools/browser/vercel.js +5 -5
  82. package/dist/tools/codebase_search/anthropic.cjs +1 -1
  83. package/dist/tools/codebase_search/anthropic.cjs.map +1 -1
  84. package/dist/tools/codebase_search/anthropic.js +4 -4
  85. package/dist/tools/codebase_search/core.cjs +1 -1
  86. package/dist/tools/codebase_search/core.cjs.map +1 -1
  87. package/dist/tools/codebase_search/core.js +3 -3
  88. package/dist/tools/codebase_search/index.cjs +1 -1
  89. package/dist/tools/codebase_search/index.cjs.map +1 -1
  90. package/dist/tools/codebase_search/index.js +6 -6
  91. package/dist/tools/codebase_search/openai.cjs +1 -1
  92. package/dist/tools/codebase_search/openai.cjs.map +1 -1
  93. package/dist/tools/codebase_search/openai.js +4 -4
  94. package/dist/tools/codebase_search/vercel.cjs +1 -1
  95. package/dist/tools/codebase_search/vercel.cjs.map +1 -1
  96. package/dist/tools/codebase_search/vercel.js +4 -4
  97. package/dist/tools/compact/core.cjs +1 -1
  98. package/dist/tools/compact/core.cjs.map +1 -1
  99. package/dist/tools/compact/core.js +1 -1
  100. package/dist/tools/compact/index.cjs +50 -3
  101. package/dist/tools/compact/index.cjs.map +1 -1
  102. package/dist/tools/compact/index.d.ts +10 -0
  103. package/dist/tools/compact/index.js +6 -2
  104. package/dist/tools/fastapply/anthropic.cjs +7 -5
  105. package/dist/tools/fastapply/anthropic.cjs.map +1 -1
  106. package/dist/tools/fastapply/anthropic.js +4 -4
  107. package/dist/tools/fastapply/apply.cjs +3 -2
  108. package/dist/tools/fastapply/apply.cjs.map +1 -1
  109. package/dist/tools/fastapply/apply.js +2 -2
  110. package/dist/tools/fastapply/core.cjs +5 -3
  111. package/dist/tools/fastapply/core.cjs.map +1 -1
  112. package/dist/tools/fastapply/core.js +3 -3
  113. package/dist/tools/fastapply/index.cjs +13 -11
  114. package/dist/tools/fastapply/index.cjs.map +1 -1
  115. package/dist/tools/fastapply/index.d.ts +1 -1
  116. package/dist/tools/fastapply/index.js +6 -6
  117. package/dist/tools/fastapply/openai.cjs +7 -5
  118. package/dist/tools/fastapply/openai.cjs.map +1 -1
  119. package/dist/tools/fastapply/openai.js +4 -4
  120. package/dist/tools/fastapply/types.cjs.map +1 -1
  121. package/dist/tools/fastapply/types.d.ts +6 -2
  122. package/dist/tools/fastapply/vercel.cjs +9 -7
  123. package/dist/tools/fastapply/vercel.cjs.map +1 -1
  124. package/dist/tools/fastapply/vercel.d.ts +1 -1
  125. package/dist/tools/fastapply/vercel.js +4 -4
  126. package/dist/tools/index.cjs +13 -11
  127. package/dist/tools/index.cjs.map +1 -1
  128. package/dist/tools/index.d.ts +1 -1
  129. package/dist/tools/index.js +6 -6
  130. package/dist/tools/utils/resilience.cjs +1 -1
  131. package/dist/tools/utils/resilience.cjs.map +1 -1
  132. package/dist/tools/utils/resilience.js +2 -2
  133. package/dist/tools/warp_grep/agent/runner.cjs +1 -1
  134. package/dist/tools/warp_grep/agent/runner.cjs.map +1 -1
  135. package/dist/tools/warp_grep/agent/runner.js +2 -2
  136. package/dist/tools/warp_grep/anthropic.cjs +138 -15
  137. package/dist/tools/warp_grep/anthropic.cjs.map +1 -1
  138. package/dist/tools/warp_grep/anthropic.js +6 -4
  139. package/dist/tools/warp_grep/client.cjs +138 -15
  140. package/dist/tools/warp_grep/client.cjs.map +1 -1
  141. package/dist/tools/warp_grep/client.js +5 -3
  142. package/dist/tools/warp_grep/gemini.cjs +138 -15
  143. package/dist/tools/warp_grep/gemini.cjs.map +1 -1
  144. package/dist/tools/warp_grep/gemini.js +5 -3
  145. package/dist/tools/warp_grep/gemini.js.map +1 -1
  146. package/dist/tools/warp_grep/index.cjs +138 -15
  147. package/dist/tools/warp_grep/index.cjs.map +1 -1
  148. package/dist/tools/warp_grep/index.js +5 -3
  149. package/dist/tools/warp_grep/openai.cjs +138 -15
  150. package/dist/tools/warp_grep/openai.cjs.map +1 -1
  151. package/dist/tools/warp_grep/openai.js +6 -4
  152. package/dist/tools/warp_grep/vercel.cjs +138 -15
  153. package/dist/tools/warp_grep/vercel.cjs.map +1 -1
  154. package/dist/tools/warp_grep/vercel.js +6 -4
  155. package/dist/{vercel-B1GZ_g9N.d.ts → vercel-Cg38kNm4.d.ts} +2 -2
  156. package/dist/version.cjs +1 -1
  157. package/dist/version.cjs.map +1 -1
  158. package/dist/version.js +1 -1
  159. package/package.json +1 -1
  160. package/dist/chunk-3VMW3UJY.js.map +0 -1
  161. package/dist/chunk-7AWNEVBE.js.map +0 -1
  162. package/dist/chunk-AGFVQOGJ.js.map +0 -1
  163. package/dist/chunk-FWHQH6RG.js.map +0 -1
  164. package/dist/chunk-MFKR5VVL.js.map +0 -1
  165. /package/dist/{chunk-MJQNHIUZ.js.map → chunk-372QEHFA.js.map} +0 -0
  166. /package/dist/{chunk-QMLGJK66.js.map → chunk-3ULQXPPO.js.map} +0 -0
  167. /package/dist/{chunk-UFPDHAZ2.js.map → chunk-AEYK5XL5.js.map} +0 -0
  168. /package/dist/{chunk-7IQMKVT4.js.map → chunk-CNKSTKRM.js.map} +0 -0
  169. /package/dist/{chunk-H6RMMTKF.js.map → chunk-D34NUQGV.js.map} +0 -0
  170. /package/dist/{chunk-GKBKSSUA.js.map → chunk-GOKSI67V.js.map} +0 -0
  171. /package/dist/{chunk-QFRDNJXM.js.map → chunk-GPK433QG.js.map} +0 -0
  172. /package/dist/{chunk-WTMEO2YB.js.map → chunk-GZXWWB4Z.js.map} +0 -0
  173. /package/dist/{chunk-Q4DXGXXU.js.map → chunk-KQR3VCGR.js.map} +0 -0
  174. /package/dist/{chunk-JB4T3K5T.js.map → chunk-L4GXXQEO.js.map} +0 -0
  175. /package/dist/{chunk-QDDT5L5Y.js.map → chunk-MBVOMNXG.js.map} +0 -0
  176. /package/dist/{chunk-5D7DDSZQ.js.map → chunk-Q3HZGVQ2.js.map} +0 -0
  177. /package/dist/{chunk-6FRGRPUO.js.map → chunk-TZCNMJHF.js.map} +0 -0
  178. /package/dist/{chunk-GAZCVVNY.js.map → chunk-V2BUYOKP.js.map} +0 -0
  179. /package/dist/{chunk-QVWKDO76.js.map → chunk-Y23PQQRM.js.map} +0 -0
  180. /package/dist/{chunk-77O2YF4B.js.map → chunk-YIUOPGWE.js.map} +0 -0
  181. /package/dist/{chunk-YBVAKGFE.js.map → chunk-YRHDWJDA.js.map} +0 -0
  182. /package/dist/{chunk-I3ZPXGMZ.js.map → chunk-YYOPTKC3.js.map} +0 -0
@@ -938,7 +938,7 @@ var import_openai = __toESM(require("openai"), 1);
938
938
  // package.json
939
939
  var package_default = {
940
940
  name: "@morphllm/morphsdk",
941
- version: "0.2.153",
941
+ version: "0.2.155",
942
942
  description: "TypeScript SDK and CLI for Morph Fast Apply integration",
943
943
  type: "module",
944
944
  main: "./dist/index.cjs",
@@ -1804,6 +1804,131 @@ function parseGitHubUrl(input) {
1804
1804
  );
1805
1805
  }
1806
1806
 
1807
+ // tools/compact/core.ts
1808
+ var DEFAULT_API_URL2 = "https://api.morphllm.com";
1809
+ var DEFAULT_TIMEOUT = 12e4;
1810
+ var CompactClient = class {
1811
+ config;
1812
+ constructor(config = {}) {
1813
+ this.config = {
1814
+ ...config,
1815
+ morphApiUrl: config.morphApiUrl ?? DEFAULT_API_URL2,
1816
+ timeout: config.timeout ?? DEFAULT_TIMEOUT
1817
+ };
1818
+ }
1819
+ /**
1820
+ * Compact messages or text via /v1/compact.
1821
+ * Returns per-message `compacted_line_ranges` showing which lines were removed.
1822
+ *
1823
+ * @example
1824
+ * ```typescript
1825
+ * const client = new CompactClient({ morphApiKey: 'sk-...' });
1826
+ * const result = await client.compact({
1827
+ * input: codeFile,
1828
+ * query: "authentication",
1829
+ * compressionRatio: 0.5,
1830
+ * });
1831
+ * console.log(result.output);
1832
+ * ```
1833
+ */
1834
+ async compact(input) {
1835
+ const apiKey = this.config.morphApiKey || (typeof process !== "undefined" ? process.env?.MORPH_API_KEY : void 0);
1836
+ const debug = this.config.debug || false;
1837
+ if (!apiKey) {
1838
+ throw new Error(
1839
+ "Morph API key not found. Set MORPH_API_KEY environment variable or pass morphApiKey in config."
1840
+ );
1841
+ }
1842
+ const url = `${this.config.morphApiUrl}/v1/compact`;
1843
+ if (debug) {
1844
+ console.log(`[Compact] Calling ${url}`);
1845
+ }
1846
+ const body = {
1847
+ compression_ratio: input.compressionRatio ?? 0.5,
1848
+ preserve_recent: input.preserveRecent ?? 2,
1849
+ model: input.model ?? "morph-compactor",
1850
+ include_line_ranges: input.includeLineRanges ?? true,
1851
+ include_markers: input.includeMarkers ?? true
1852
+ };
1853
+ if (input.query !== void 0) {
1854
+ body.query = input.query;
1855
+ }
1856
+ if (input.messages) {
1857
+ body.messages = input.messages;
1858
+ } else if (typeof input.input === "string") {
1859
+ body.input = input.input;
1860
+ } else if (Array.isArray(input.input)) {
1861
+ body.messages = input.input;
1862
+ } else {
1863
+ throw new Error("Either 'input' or 'messages' must be provided");
1864
+ }
1865
+ const startTime = Date.now();
1866
+ const response = await fetch(url, {
1867
+ method: "POST",
1868
+ headers: {
1869
+ "Authorization": `Bearer ${apiKey}`,
1870
+ "Content-Type": "application/json"
1871
+ },
1872
+ body: JSON.stringify(body),
1873
+ signal: AbortSignal.timeout(this.config.timeout)
1874
+ });
1875
+ if (!response.ok) {
1876
+ const text = await response.text();
1877
+ throw new Error(`Compact API error ${response.status}: ${text}`);
1878
+ }
1879
+ const data = await response.json();
1880
+ if (debug) {
1881
+ console.log(`[Compact] compact() done in ${Date.now() - startTime}ms`);
1882
+ }
1883
+ return data;
1884
+ }
1885
+ };
1886
+
1887
+ // tools/compact/utils.ts
1888
+ async function compactFileContexts(files, query, apiKey, apiUrl, maxTokens = 1e4, maxConcurrency = 3) {
1889
+ const totalLength = files.reduce((sum, file) => sum + file.content.length, 0);
1890
+ const estimatedTokens = totalLength / 3;
1891
+ if (estimatedTokens <= maxTokens) {
1892
+ return files;
1893
+ }
1894
+ let compressionRatio = maxTokens / estimatedTokens;
1895
+ compressionRatio = Math.max(0.3, Math.min(0.99, compressionRatio));
1896
+ const client = new CompactClient({
1897
+ morphApiKey: apiKey,
1898
+ morphApiUrl: apiUrl
1899
+ });
1900
+ const results = [];
1901
+ const inProgress = /* @__PURE__ */ new Set();
1902
+ for (const file of files) {
1903
+ if (file.content.length < 500) {
1904
+ results.push({ path: file.path, content: file.content });
1905
+ continue;
1906
+ }
1907
+ const task = async () => {
1908
+ try {
1909
+ const result = await client.compact({
1910
+ input: file.content,
1911
+ query,
1912
+ compressionRatio,
1913
+ preserveRecent: 0
1914
+ });
1915
+ results.push({ path: file.path, content: result.output });
1916
+ } catch (error) {
1917
+ console.error(`[compactFileContexts] Failed to compact file ${file.path}:`, error);
1918
+ results.push({ path: file.path, content: file.content });
1919
+ }
1920
+ };
1921
+ const promise = task().finally(() => inProgress.delete(promise));
1922
+ inProgress.add(promise);
1923
+ if (inProgress.size >= maxConcurrency) {
1924
+ await Promise.race(inProgress);
1925
+ }
1926
+ }
1927
+ await Promise.all(inProgress);
1928
+ const orderMap = new Map(files.map((f, i) => [f.path, i]));
1929
+ return results.sort((a, b) => (orderMap.get(a.path) ?? 0) - (orderMap.get(b.path) ?? 0));
1930
+ }
1931
+
1807
1932
  // tools/warp_grep/client.ts
1808
1933
  var DEFAULT_CODE_SEARCH_URL = "https://morphllm.com";
1809
1934
  async function getLocalProvider(repoRoot, excludes, allowNames) {
@@ -1926,20 +2051,9 @@ async function executeToolCall(input, config) {
1926
2051
  timeout: config.timeout,
1927
2052
  search_type: config.search_type
1928
2053
  });
1929
- const finish = result.finish;
1930
- if (result.terminationReason !== "completed" || !finish?.metadata) {
1931
- const errorDetails = result.errors?.map((e) => e.message).join("; ") || "unknown reason";
1932
- console.error(`[warp_grep] executeToolCall failed. Reason: ${result.terminationReason}. Errors: ${errorDetails}. Turns: ${result.timings?.turns?.length ?? 0}`);
1933
- return { success: false, error: `Search did not complete: ${errorDetails}` };
1934
- }
1935
- const contexts = (finish.resolved ?? []).map((r) => ({
1936
- file: r.path,
1937
- content: r.content,
1938
- lines: r.ranges
1939
- }));
1940
- return { success: true, contexts, summary: finish.payload };
2054
+ return processAgentResult(result, parsed.search_term, config.morphApiKey, config.morphApiUrl);
1941
2055
  }
1942
- function processAgentResult(result) {
2056
+ async function processAgentResult(result, searchTerm, apiKey, apiUrl) {
1943
2057
  const finish = result.finish;
1944
2058
  if (result.terminationReason !== "completed" || !finish?.metadata) {
1945
2059
  const errorDetails = result.errors?.map((e) => e.message).join("; ") || "unknown reason";
@@ -1951,6 +2065,15 @@ function processAgentResult(result) {
1951
2065
  content: r.content,
1952
2066
  lines: r.ranges
1953
2067
  }));
2068
+ try {
2069
+ const compactable = contexts.map((c) => ({ path: c.file, content: c.content }));
2070
+ const compacted = await compactFileContexts(compactable, searchTerm, apiKey, apiUrl);
2071
+ for (let i = 0; i < contexts.length; i++) {
2072
+ contexts[i].content = compacted[i].content;
2073
+ }
2074
+ } catch (error) {
2075
+ console.error(`[warp_grep] Failed to compact result contexts:`, error);
2076
+ }
1954
2077
  return { success: true, contexts, summary: finish.payload };
1955
2078
  }
1956
2079
  async function* executeToolCallStreaming(input, config) {
@@ -1979,7 +2102,7 @@ async function* executeToolCallStreaming(input, config) {
1979
2102
  }
1980
2103
  yield value;
1981
2104
  }
1982
- return processAgentResult(agentResult);
2105
+ return processAgentResult(agentResult, parsed.search_term, config.morphApiKey, config.morphApiUrl);
1983
2106
  }
1984
2107
  async function fetchRawGitHubFile(owner, repo, filePath, branch, timeout) {
1985
2108
  const branches = branch ? [branch] : ["HEAD"];