@morphllm/morphsdk 0.2.152 → 0.2.154

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 (173) hide show
  1. package/dist/{chunk-WKHAZ732.js → chunk-2WAHX6I2.js} +2 -2
  2. package/dist/{chunk-ZFYFLNRE.js → chunk-3BTUUH23.js} +2 -2
  3. package/dist/{chunk-3ZR5RSJQ.js → chunk-3XO33KPS.js} +2 -2
  4. package/dist/{chunk-3ZR5RSJQ.js.map → chunk-3XO33KPS.js.map} +1 -1
  5. package/dist/{chunk-75C4DV27.js → chunk-4R6F66B7.js} +2 -2
  6. package/dist/{chunk-SVLY35WI.js → chunk-5IKDEESU.js} +3 -3
  7. package/dist/{chunk-YLWVLRWH.js → chunk-A6T6E636.js} +2 -2
  8. package/dist/{chunk-UAGEVTXM.js → chunk-D5UUKDKL.js} +2 -2
  9. package/dist/{chunk-R5IYAFFN.js → chunk-FOKMTUWC.js} +2 -2
  10. package/dist/chunk-GLQWEINZ.js +53 -0
  11. package/dist/chunk-GLQWEINZ.js.map +1 -0
  12. package/dist/{chunk-P7USBFIJ.js → chunk-J43SJUCO.js} +1 -1
  13. package/dist/{chunk-PO6IPUDB.js → chunk-KRRO7FF2.js} +2 -2
  14. package/dist/{chunk-PIBNTOS7.js → chunk-LK4C3NYX.js} +2 -2
  15. package/dist/{chunk-OLL7QI3Y.js → chunk-MTRH7FMN.js} +2 -2
  16. package/dist/{chunk-I6CWGOEL.js → chunk-N4KLUOXK.js} +2 -2
  17. package/dist/{chunk-U253YYNH.js → chunk-P57SFOLD.js} +2 -2
  18. package/dist/{chunk-BN6IXTDU.js → chunk-PRHEWGWC.js} +23 -23
  19. package/dist/{chunk-ZHRXNOXP.js → chunk-Q77CT3RI.js} +2 -2
  20. package/dist/{chunk-3TARZOBZ.js → chunk-QSATHLZJ.js} +2 -2
  21. package/dist/{chunk-3TARZOBZ.js.map → chunk-QSATHLZJ.js.map} +1 -1
  22. package/dist/{chunk-AGFVQOGJ.js → chunk-SCVWDNQP.js} +2 -2
  23. package/dist/chunk-SCVWDNQP.js.map +1 -0
  24. package/dist/{chunk-G7FGC7EQ.js → chunk-TAGDMT3K.js} +2 -2
  25. package/dist/{chunk-KXN4YMCP.js → chunk-UDI5U6QV.js} +2 -2
  26. package/dist/{chunk-Q72OV4VF.js → chunk-VK76R3IN.js} +2 -2
  27. package/dist/{chunk-DOWJVFKI.js → chunk-WQU6QXSU.js} +17 -16
  28. package/dist/chunk-WQU6QXSU.js.map +1 -0
  29. package/dist/{chunk-55ESIZID.js → chunk-Y5O3A7SU.js} +2 -2
  30. package/dist/{chunk-LYL2MWM6.js → chunk-YKBVE3CE.js} +2 -2
  31. package/dist/{chunk-WU2325QJ.js → chunk-ZHKANLAQ.js} +2 -2
  32. package/dist/{chunk-L7EVPMOK.js → chunk-ZSA3NL5T.js} +2 -2
  33. package/dist/client.cjs +140 -97
  34. package/dist/client.cjs.map +1 -1
  35. package/dist/client.js +24 -23
  36. package/dist/edge.cjs +2 -2
  37. package/dist/edge.cjs.map +1 -1
  38. package/dist/edge.js +7 -7
  39. package/dist/index.cjs +140 -97
  40. package/dist/index.cjs.map +1 -1
  41. package/dist/index.js +26 -25
  42. package/dist/modelrouter/core.cjs +1 -1
  43. package/dist/modelrouter/core.cjs.map +1 -1
  44. package/dist/modelrouter/core.js +3 -3
  45. package/dist/modelrouter/index.cjs +1 -1
  46. package/dist/modelrouter/index.cjs.map +1 -1
  47. package/dist/modelrouter/index.js +3 -3
  48. package/dist/subagents/anthropic.cjs +138 -15
  49. package/dist/subagents/anthropic.cjs.map +1 -1
  50. package/dist/subagents/anthropic.js +6 -4
  51. package/dist/subagents/vercel.cjs +138 -15
  52. package/dist/subagents/vercel.cjs.map +1 -1
  53. package/dist/subagents/vercel.js +6 -4
  54. package/dist/tools/browser/anthropic.cjs +1 -1
  55. package/dist/tools/browser/anthropic.cjs.map +1 -1
  56. package/dist/tools/browser/anthropic.js +5 -5
  57. package/dist/tools/browser/core.cjs +1 -1
  58. package/dist/tools/browser/core.cjs.map +1 -1
  59. package/dist/tools/browser/core.js +4 -4
  60. package/dist/tools/browser/index.cjs +1 -1
  61. package/dist/tools/browser/index.cjs.map +1 -1
  62. package/dist/tools/browser/index.js +7 -7
  63. package/dist/tools/browser/openai.cjs +1 -1
  64. package/dist/tools/browser/openai.cjs.map +1 -1
  65. package/dist/tools/browser/openai.js +5 -5
  66. package/dist/tools/browser/profiles/core.cjs +1 -1
  67. package/dist/tools/browser/profiles/core.cjs.map +1 -1
  68. package/dist/tools/browser/profiles/core.js +3 -3
  69. package/dist/tools/browser/profiles/index.cjs +1 -1
  70. package/dist/tools/browser/profiles/index.cjs.map +1 -1
  71. package/dist/tools/browser/profiles/index.js +3 -3
  72. package/dist/tools/browser/vercel.cjs +1 -1
  73. package/dist/tools/browser/vercel.cjs.map +1 -1
  74. package/dist/tools/browser/vercel.js +5 -5
  75. package/dist/tools/codebase_search/anthropic.cjs +1 -1
  76. package/dist/tools/codebase_search/anthropic.cjs.map +1 -1
  77. package/dist/tools/codebase_search/anthropic.js +4 -4
  78. package/dist/tools/codebase_search/core.cjs +1 -1
  79. package/dist/tools/codebase_search/core.cjs.map +1 -1
  80. package/dist/tools/codebase_search/core.js +3 -3
  81. package/dist/tools/codebase_search/index.cjs +1 -1
  82. package/dist/tools/codebase_search/index.cjs.map +1 -1
  83. package/dist/tools/codebase_search/index.js +6 -6
  84. package/dist/tools/codebase_search/openai.cjs +1 -1
  85. package/dist/tools/codebase_search/openai.cjs.map +1 -1
  86. package/dist/tools/codebase_search/openai.js +4 -4
  87. package/dist/tools/codebase_search/vercel.cjs +1 -1
  88. package/dist/tools/codebase_search/vercel.cjs.map +1 -1
  89. package/dist/tools/codebase_search/vercel.js +4 -4
  90. package/dist/tools/compact/core.cjs +1 -1
  91. package/dist/tools/compact/core.cjs.map +1 -1
  92. package/dist/tools/compact/core.js +1 -1
  93. package/dist/tools/compact/index.cjs +50 -3
  94. package/dist/tools/compact/index.cjs.map +1 -1
  95. package/dist/tools/compact/index.d.ts +10 -0
  96. package/dist/tools/compact/index.js +6 -2
  97. package/dist/tools/fastapply/anthropic.cjs +1 -1
  98. package/dist/tools/fastapply/anthropic.cjs.map +1 -1
  99. package/dist/tools/fastapply/anthropic.js +4 -4
  100. package/dist/tools/fastapply/apply.cjs +1 -1
  101. package/dist/tools/fastapply/apply.cjs.map +1 -1
  102. package/dist/tools/fastapply/apply.d.ts +1 -1
  103. package/dist/tools/fastapply/apply.js +2 -2
  104. package/dist/tools/fastapply/core.cjs +1 -1
  105. package/dist/tools/fastapply/core.cjs.map +1 -1
  106. package/dist/tools/fastapply/core.js +3 -3
  107. package/dist/tools/fastapply/index.cjs +1 -1
  108. package/dist/tools/fastapply/index.cjs.map +1 -1
  109. package/dist/tools/fastapply/index.js +6 -6
  110. package/dist/tools/fastapply/openai.cjs +1 -1
  111. package/dist/tools/fastapply/openai.cjs.map +1 -1
  112. package/dist/tools/fastapply/openai.js +4 -4
  113. package/dist/tools/fastapply/types.cjs.map +1 -1
  114. package/dist/tools/fastapply/types.d.ts +1 -1
  115. package/dist/tools/fastapply/vercel.cjs +1 -1
  116. package/dist/tools/fastapply/vercel.cjs.map +1 -1
  117. package/dist/tools/fastapply/vercel.js +4 -4
  118. package/dist/tools/index.cjs +1 -1
  119. package/dist/tools/index.cjs.map +1 -1
  120. package/dist/tools/index.js +6 -6
  121. package/dist/tools/utils/resilience.cjs +1 -1
  122. package/dist/tools/utils/resilience.cjs.map +1 -1
  123. package/dist/tools/utils/resilience.js +2 -2
  124. package/dist/tools/warp_grep/agent/runner.cjs +1 -1
  125. package/dist/tools/warp_grep/agent/runner.cjs.map +1 -1
  126. package/dist/tools/warp_grep/agent/runner.js +2 -2
  127. package/dist/tools/warp_grep/anthropic.cjs +138 -15
  128. package/dist/tools/warp_grep/anthropic.cjs.map +1 -1
  129. package/dist/tools/warp_grep/anthropic.js +6 -4
  130. package/dist/tools/warp_grep/client.cjs +138 -15
  131. package/dist/tools/warp_grep/client.cjs.map +1 -1
  132. package/dist/tools/warp_grep/client.js +5 -3
  133. package/dist/tools/warp_grep/gemini.cjs +138 -15
  134. package/dist/tools/warp_grep/gemini.cjs.map +1 -1
  135. package/dist/tools/warp_grep/gemini.js +5 -3
  136. package/dist/tools/warp_grep/gemini.js.map +1 -1
  137. package/dist/tools/warp_grep/index.cjs +138 -15
  138. package/dist/tools/warp_grep/index.cjs.map +1 -1
  139. package/dist/tools/warp_grep/index.js +5 -3
  140. package/dist/tools/warp_grep/openai.cjs +138 -15
  141. package/dist/tools/warp_grep/openai.cjs.map +1 -1
  142. package/dist/tools/warp_grep/openai.js +6 -4
  143. package/dist/tools/warp_grep/vercel.cjs +138 -15
  144. package/dist/tools/warp_grep/vercel.cjs.map +1 -1
  145. package/dist/tools/warp_grep/vercel.js +6 -4
  146. package/dist/version.cjs +1 -1
  147. package/dist/version.cjs.map +1 -1
  148. package/dist/version.js +1 -1
  149. package/package.json +1 -1
  150. package/dist/chunk-AGFVQOGJ.js.map +0 -1
  151. package/dist/chunk-DOWJVFKI.js.map +0 -1
  152. /package/dist/{chunk-WKHAZ732.js.map → chunk-2WAHX6I2.js.map} +0 -0
  153. /package/dist/{chunk-ZFYFLNRE.js.map → chunk-3BTUUH23.js.map} +0 -0
  154. /package/dist/{chunk-75C4DV27.js.map → chunk-4R6F66B7.js.map} +0 -0
  155. /package/dist/{chunk-SVLY35WI.js.map → chunk-5IKDEESU.js.map} +0 -0
  156. /package/dist/{chunk-YLWVLRWH.js.map → chunk-A6T6E636.js.map} +0 -0
  157. /package/dist/{chunk-UAGEVTXM.js.map → chunk-D5UUKDKL.js.map} +0 -0
  158. /package/dist/{chunk-R5IYAFFN.js.map → chunk-FOKMTUWC.js.map} +0 -0
  159. /package/dist/{chunk-P7USBFIJ.js.map → chunk-J43SJUCO.js.map} +0 -0
  160. /package/dist/{chunk-PO6IPUDB.js.map → chunk-KRRO7FF2.js.map} +0 -0
  161. /package/dist/{chunk-PIBNTOS7.js.map → chunk-LK4C3NYX.js.map} +0 -0
  162. /package/dist/{chunk-OLL7QI3Y.js.map → chunk-MTRH7FMN.js.map} +0 -0
  163. /package/dist/{chunk-I6CWGOEL.js.map → chunk-N4KLUOXK.js.map} +0 -0
  164. /package/dist/{chunk-U253YYNH.js.map → chunk-P57SFOLD.js.map} +0 -0
  165. /package/dist/{chunk-BN6IXTDU.js.map → chunk-PRHEWGWC.js.map} +0 -0
  166. /package/dist/{chunk-ZHRXNOXP.js.map → chunk-Q77CT3RI.js.map} +0 -0
  167. /package/dist/{chunk-G7FGC7EQ.js.map → chunk-TAGDMT3K.js.map} +0 -0
  168. /package/dist/{chunk-KXN4YMCP.js.map → chunk-UDI5U6QV.js.map} +0 -0
  169. /package/dist/{chunk-Q72OV4VF.js.map → chunk-VK76R3IN.js.map} +0 -0
  170. /package/dist/{chunk-55ESIZID.js.map → chunk-Y5O3A7SU.js.map} +0 -0
  171. /package/dist/{chunk-LYL2MWM6.js.map → chunk-YKBVE3CE.js.map} +0 -0
  172. /package/dist/{chunk-WU2325QJ.js.map → chunk-ZHKANLAQ.js.map} +0 -0
  173. /package/dist/{chunk-L7EVPMOK.js.map → chunk-ZSA3NL5T.js.map} +0 -0
@@ -1,16 +1,18 @@
1
1
  import {
2
2
  createExploreSubagent
3
- } from "../chunk-KXN4YMCP.js";
4
- import "../chunk-DOWJVFKI.js";
3
+ } from "../chunk-UDI5U6QV.js";
4
+ import "../chunk-WQU6QXSU.js";
5
5
  import "../chunk-63VHBANJ.js";
6
- import "../chunk-LYL2MWM6.js";
6
+ import "../chunk-YKBVE3CE.js";
7
7
  import "../chunk-GVGJIXV2.js";
8
8
  import "../chunk-B3AKP3RA.js";
9
9
  import "../chunk-VNAGVCSP.js";
10
10
  import "../chunk-CMSHXALI.js";
11
11
  import "../chunk-I3J46TSB.js";
12
+ import "../chunk-GLQWEINZ.js";
12
13
  import "../chunk-ZZ25FZG2.js";
13
- import "../chunk-3ZR5RSJQ.js";
14
+ import "../chunk-SCVWDNQP.js";
15
+ import "../chunk-3XO33KPS.js";
14
16
  import "../chunk-PZ5AY32C.js";
15
17
  export {
16
18
  createExploreSubagent
@@ -935,7 +935,7 @@ var import_openai = __toESM(require("openai"), 1);
935
935
  // package.json
936
936
  var package_default = {
937
937
  name: "@morphllm/morphsdk",
938
- version: "0.2.152",
938
+ version: "0.2.154",
939
939
  description: "TypeScript SDK and CLI for Morph Fast Apply integration",
940
940
  type: "module",
941
941
  main: "./dist/index.cjs",
@@ -1801,6 +1801,131 @@ function parseGitHubUrl(input) {
1801
1801
  );
1802
1802
  }
1803
1803
 
1804
+ // tools/compact/core.ts
1805
+ var DEFAULT_API_URL2 = "https://api.morphllm.com";
1806
+ var DEFAULT_TIMEOUT = 12e4;
1807
+ var CompactClient = class {
1808
+ config;
1809
+ constructor(config = {}) {
1810
+ this.config = {
1811
+ ...config,
1812
+ morphApiUrl: config.morphApiUrl ?? DEFAULT_API_URL2,
1813
+ timeout: config.timeout ?? DEFAULT_TIMEOUT
1814
+ };
1815
+ }
1816
+ /**
1817
+ * Compact messages or text via /v1/compact.
1818
+ * Returns per-message `compacted_line_ranges` showing which lines were removed.
1819
+ *
1820
+ * @example
1821
+ * ```typescript
1822
+ * const client = new CompactClient({ morphApiKey: 'sk-...' });
1823
+ * const result = await client.compact({
1824
+ * input: codeFile,
1825
+ * query: "authentication",
1826
+ * compressionRatio: 0.5,
1827
+ * });
1828
+ * console.log(result.output);
1829
+ * ```
1830
+ */
1831
+ async compact(input) {
1832
+ const apiKey = this.config.morphApiKey || (typeof process !== "undefined" ? process.env?.MORPH_API_KEY : void 0);
1833
+ const debug = this.config.debug || false;
1834
+ if (!apiKey) {
1835
+ throw new Error(
1836
+ "Morph API key not found. Set MORPH_API_KEY environment variable or pass morphApiKey in config."
1837
+ );
1838
+ }
1839
+ const url = `${this.config.morphApiUrl}/v1/compact`;
1840
+ if (debug) {
1841
+ console.log(`[Compact] Calling ${url}`);
1842
+ }
1843
+ const body = {
1844
+ compression_ratio: input.compressionRatio ?? 0.5,
1845
+ preserve_recent: input.preserveRecent ?? 2,
1846
+ model: input.model ?? "morph-compactor",
1847
+ include_line_ranges: input.includeLineRanges ?? true,
1848
+ include_markers: input.includeMarkers ?? true
1849
+ };
1850
+ if (input.query !== void 0) {
1851
+ body.query = input.query;
1852
+ }
1853
+ if (input.messages) {
1854
+ body.messages = input.messages;
1855
+ } else if (typeof input.input === "string") {
1856
+ body.input = input.input;
1857
+ } else if (Array.isArray(input.input)) {
1858
+ body.messages = input.input;
1859
+ } else {
1860
+ throw new Error("Either 'input' or 'messages' must be provided");
1861
+ }
1862
+ const startTime = Date.now();
1863
+ const response = await fetch(url, {
1864
+ method: "POST",
1865
+ headers: {
1866
+ "Authorization": `Bearer ${apiKey}`,
1867
+ "Content-Type": "application/json"
1868
+ },
1869
+ body: JSON.stringify(body),
1870
+ signal: AbortSignal.timeout(this.config.timeout)
1871
+ });
1872
+ if (!response.ok) {
1873
+ const text = await response.text();
1874
+ throw new Error(`Compact API error ${response.status}: ${text}`);
1875
+ }
1876
+ const data = await response.json();
1877
+ if (debug) {
1878
+ console.log(`[Compact] compact() done in ${Date.now() - startTime}ms`);
1879
+ }
1880
+ return data;
1881
+ }
1882
+ };
1883
+
1884
+ // tools/compact/utils.ts
1885
+ async function compactFileContexts(files, query, apiKey, apiUrl, maxTokens = 1e4, maxConcurrency = 3) {
1886
+ const totalLength = files.reduce((sum, file) => sum + file.content.length, 0);
1887
+ const estimatedTokens = totalLength / 3;
1888
+ if (estimatedTokens <= maxTokens) {
1889
+ return files;
1890
+ }
1891
+ let compressionRatio = maxTokens / estimatedTokens;
1892
+ compressionRatio = Math.max(0.3, Math.min(0.99, compressionRatio));
1893
+ const client = new CompactClient({
1894
+ morphApiKey: apiKey,
1895
+ morphApiUrl: apiUrl
1896
+ });
1897
+ const results = [];
1898
+ const inProgress = /* @__PURE__ */ new Set();
1899
+ for (const file of files) {
1900
+ if (file.content.length < 500) {
1901
+ results.push({ path: file.path, content: file.content });
1902
+ continue;
1903
+ }
1904
+ const task = async () => {
1905
+ try {
1906
+ const result = await client.compact({
1907
+ input: file.content,
1908
+ query,
1909
+ compressionRatio,
1910
+ preserveRecent: 0
1911
+ });
1912
+ results.push({ path: file.path, content: result.output });
1913
+ } catch (error) {
1914
+ console.error(`[compactFileContexts] Failed to compact file ${file.path}:`, error);
1915
+ results.push({ path: file.path, content: file.content });
1916
+ }
1917
+ };
1918
+ const promise = task().finally(() => inProgress.delete(promise));
1919
+ inProgress.add(promise);
1920
+ if (inProgress.size >= maxConcurrency) {
1921
+ await Promise.race(inProgress);
1922
+ }
1923
+ }
1924
+ await Promise.all(inProgress);
1925
+ const orderMap = new Map(files.map((f, i) => [f.path, i]));
1926
+ return results.sort((a, b) => (orderMap.get(a.path) ?? 0) - (orderMap.get(b.path) ?? 0));
1927
+ }
1928
+
1804
1929
  // tools/warp_grep/client.ts
1805
1930
  var DEFAULT_CODE_SEARCH_URL = "https://morphllm.com";
1806
1931
  async function getLocalProvider(repoRoot, excludes, allowNames) {
@@ -1923,20 +2048,9 @@ async function executeToolCall(input, config) {
1923
2048
  timeout: config.timeout,
1924
2049
  search_type: config.search_type
1925
2050
  });
1926
- const finish = result.finish;
1927
- if (result.terminationReason !== "completed" || !finish?.metadata) {
1928
- const errorDetails = result.errors?.map((e) => e.message).join("; ") || "unknown reason";
1929
- console.error(`[warp_grep] executeToolCall failed. Reason: ${result.terminationReason}. Errors: ${errorDetails}. Turns: ${result.timings?.turns?.length ?? 0}`);
1930
- return { success: false, error: `Search did not complete: ${errorDetails}` };
1931
- }
1932
- const contexts = (finish.resolved ?? []).map((r) => ({
1933
- file: r.path,
1934
- content: r.content,
1935
- lines: r.ranges
1936
- }));
1937
- return { success: true, contexts, summary: finish.payload };
2051
+ return processAgentResult(result, parsed.search_term, config.morphApiKey, config.morphApiUrl);
1938
2052
  }
1939
- function processAgentResult(result) {
2053
+ async function processAgentResult(result, searchTerm, apiKey, apiUrl) {
1940
2054
  const finish = result.finish;
1941
2055
  if (result.terminationReason !== "completed" || !finish?.metadata) {
1942
2056
  const errorDetails = result.errors?.map((e) => e.message).join("; ") || "unknown reason";
@@ -1948,6 +2062,15 @@ function processAgentResult(result) {
1948
2062
  content: r.content,
1949
2063
  lines: r.ranges
1950
2064
  }));
2065
+ try {
2066
+ const compactable = contexts.map((c) => ({ path: c.file, content: c.content }));
2067
+ const compacted = await compactFileContexts(compactable, searchTerm, apiKey, apiUrl);
2068
+ for (let i = 0; i < contexts.length; i++) {
2069
+ contexts[i].content = compacted[i].content;
2070
+ }
2071
+ } catch (error) {
2072
+ console.error(`[warp_grep] Failed to compact result contexts:`, error);
2073
+ }
1951
2074
  return { success: true, contexts, summary: finish.payload };
1952
2075
  }
1953
2076
  async function* executeToolCallStreaming(input, config) {
@@ -1976,7 +2099,7 @@ async function* executeToolCallStreaming(input, config) {
1976
2099
  }
1977
2100
  yield value;
1978
2101
  }
1979
- return processAgentResult(agentResult);
2102
+ return processAgentResult(agentResult, parsed.search_term, config.morphApiKey, config.morphApiUrl);
1980
2103
  }
1981
2104
  async function fetchRawGitHubFile(owner, repo, filePath, branch, timeout) {
1982
2105
  const branches = branch ? [branch] : ["HEAD"];