@morphllm/morphsdk 0.2.118 → 0.2.120

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 (163) hide show
  1. package/dist/{chunk-4VWJFZVS.js → chunk-2BPPWIJI.js} +6 -1
  2. package/dist/chunk-2BPPWIJI.js.map +1 -0
  3. package/dist/chunk-4RO43W62.js +225 -0
  4. package/dist/chunk-4RO43W62.js.map +1 -0
  5. package/dist/{chunk-ZYPLV3HP.js → chunk-4VLTYTEY.js} +3 -3
  6. package/dist/{chunk-M5DR2WOZ.js → chunk-5HPN4VL2.js} +1 -1
  7. package/dist/{chunk-5IVVJMMX.js → chunk-6ODXYTLF.js} +2 -2
  8. package/dist/{chunk-OUEJ6XEO.js → chunk-7HKYJ2MW.js} +2 -2
  9. package/dist/{chunk-EMMSRY32.js → chunk-7TM4RBXE.js} +2 -2
  10. package/dist/{chunk-EAT5W3SH.js → chunk-A54BOCBI.js} +2 -2
  11. package/dist/{chunk-QL7MV3GT.js → chunk-BVINWDTA.js} +8 -4
  12. package/dist/chunk-BVINWDTA.js.map +1 -0
  13. package/dist/{chunk-YJZP5ZL5.js → chunk-EF7ZYLA2.js} +10 -5
  14. package/dist/{chunk-YJZP5ZL5.js.map → chunk-EF7ZYLA2.js.map} +1 -1
  15. package/dist/{chunk-3Q7KXILI.js → chunk-FZUUET6R.js} +2 -2
  16. package/dist/{chunk-WM77HRKO.js → chunk-HBWOWL7L.js} +2 -2
  17. package/dist/{chunk-A2LIILDJ.js → chunk-HCN2MLSO.js} +2 -2
  18. package/dist/{chunk-HMAX2FEE.js → chunk-HQAPRX5T.js} +2 -2
  19. package/dist/{chunk-FXBT4UDY.js → chunk-NLDYHLRB.js} +7 -2
  20. package/dist/chunk-NLDYHLRB.js.map +1 -0
  21. package/dist/{chunk-O5DA5V5S.js → chunk-NW6PJIID.js} +2 -2
  22. package/dist/{chunk-QFEVCGR6.js → chunk-P4EPXC2Q.js} +22 -22
  23. package/dist/{chunk-YJXAMX3V.js → chunk-RODHADNG.js} +2 -2
  24. package/dist/{chunk-UR76P62F.js → chunk-RZ4VC4BG.js} +2 -2
  25. package/dist/{chunk-Y5BB7JFH.js → chunk-SNY2UKHQ.js} +2 -2
  26. package/dist/{chunk-PR44LEQQ.js → chunk-T7F3DIRK.js} +2 -2
  27. package/dist/{chunk-SI2CKRKJ.js → chunk-TVPEH6FF.js} +2 -2
  28. package/dist/{chunk-UNHHRMU7.js → chunk-VVEK5JSH.js} +2 -2
  29. package/dist/{chunk-ZRLEAPZV.js → chunk-XQ4KEOJT.js} +2 -2
  30. package/dist/client.cjs +247 -3
  31. package/dist/client.cjs.map +1 -1
  32. package/dist/client.js +22 -21
  33. package/dist/edge.cjs +226 -1
  34. package/dist/edge.cjs.map +1 -1
  35. package/dist/edge.d.ts +1 -0
  36. package/dist/edge.js +11 -7
  37. package/dist/index.cjs +250 -3
  38. package/dist/index.cjs.map +1 -1
  39. package/dist/index.d.ts +1 -0
  40. package/dist/index.js +32 -28
  41. package/dist/modelrouter/core.cjs +222 -0
  42. package/dist/modelrouter/core.cjs.map +1 -1
  43. package/dist/modelrouter/core.js +3 -2
  44. package/dist/modelrouter/index.cjs +222 -0
  45. package/dist/modelrouter/index.cjs.map +1 -1
  46. package/dist/modelrouter/index.js +3 -2
  47. package/dist/tools/browser/anthropic.cjs +222 -0
  48. package/dist/tools/browser/anthropic.cjs.map +1 -1
  49. package/dist/tools/browser/anthropic.js +6 -5
  50. package/dist/tools/browser/core.cjs +222 -0
  51. package/dist/tools/browser/core.cjs.map +1 -1
  52. package/dist/tools/browser/core.js +5 -4
  53. package/dist/tools/browser/index.cjs +222 -0
  54. package/dist/tools/browser/index.cjs.map +1 -1
  55. package/dist/tools/browser/index.js +13 -12
  56. package/dist/tools/browser/index.js.map +1 -1
  57. package/dist/tools/browser/openai.cjs +222 -0
  58. package/dist/tools/browser/openai.cjs.map +1 -1
  59. package/dist/tools/browser/openai.js +6 -5
  60. package/dist/tools/browser/profiles/core.cjs +222 -0
  61. package/dist/tools/browser/profiles/core.cjs.map +1 -1
  62. package/dist/tools/browser/profiles/core.js +3 -2
  63. package/dist/tools/browser/profiles/index.cjs +222 -0
  64. package/dist/tools/browser/profiles/index.cjs.map +1 -1
  65. package/dist/tools/browser/profiles/index.js +3 -2
  66. package/dist/tools/browser/vercel.cjs +222 -0
  67. package/dist/tools/browser/vercel.cjs.map +1 -1
  68. package/dist/tools/browser/vercel.js +6 -5
  69. package/dist/tools/codebase_search/anthropic.cjs +222 -0
  70. package/dist/tools/codebase_search/anthropic.cjs.map +1 -1
  71. package/dist/tools/codebase_search/anthropic.js +4 -3
  72. package/dist/tools/codebase_search/core.cjs +222 -0
  73. package/dist/tools/codebase_search/core.cjs.map +1 -1
  74. package/dist/tools/codebase_search/core.js +3 -2
  75. package/dist/tools/codebase_search/index.cjs +222 -0
  76. package/dist/tools/codebase_search/index.cjs.map +1 -1
  77. package/dist/tools/codebase_search/index.js +8 -7
  78. package/dist/tools/codebase_search/openai.cjs +222 -0
  79. package/dist/tools/codebase_search/openai.cjs.map +1 -1
  80. package/dist/tools/codebase_search/openai.js +4 -3
  81. package/dist/tools/codebase_search/vercel.cjs +222 -0
  82. package/dist/tools/codebase_search/vercel.cjs.map +1 -1
  83. package/dist/tools/codebase_search/vercel.js +4 -3
  84. package/dist/tools/fastapply/anthropic.cjs +236 -1
  85. package/dist/tools/fastapply/anthropic.cjs.map +1 -1
  86. package/dist/tools/fastapply/anthropic.js +4 -3
  87. package/dist/tools/fastapply/apply.cjs +225 -1
  88. package/dist/tools/fastapply/apply.cjs.map +1 -1
  89. package/dist/tools/fastapply/apply.js +2 -1
  90. package/dist/tools/fastapply/core.cjs +236 -1
  91. package/dist/tools/fastapply/core.cjs.map +1 -1
  92. package/dist/tools/fastapply/core.js +3 -2
  93. package/dist/tools/fastapply/index.cjs +236 -1
  94. package/dist/tools/fastapply/index.cjs.map +1 -1
  95. package/dist/tools/fastapply/index.js +8 -7
  96. package/dist/tools/fastapply/openai.cjs +236 -1
  97. package/dist/tools/fastapply/openai.cjs.map +1 -1
  98. package/dist/tools/fastapply/openai.js +4 -3
  99. package/dist/tools/fastapply/vercel.cjs +236 -1
  100. package/dist/tools/fastapply/vercel.cjs.map +1 -1
  101. package/dist/tools/fastapply/vercel.js +4 -3
  102. package/dist/tools/index.cjs +236 -1
  103. package/dist/tools/index.cjs.map +1 -1
  104. package/dist/tools/index.js +8 -7
  105. package/dist/tools/utils/resilience.cjs +224 -0
  106. package/dist/tools/utils/resilience.cjs.map +1 -1
  107. package/dist/tools/utils/resilience.js +2 -1
  108. package/dist/tools/warp_grep/agent/runner.cjs +225 -1
  109. package/dist/tools/warp_grep/agent/runner.cjs.map +1 -1
  110. package/dist/tools/warp_grep/agent/runner.js +3 -2
  111. package/dist/tools/warp_grep/anthropic.cjs +231 -2
  112. package/dist/tools/warp_grep/anthropic.cjs.map +1 -1
  113. package/dist/tools/warp_grep/anthropic.js +5 -4
  114. package/dist/tools/warp_grep/client.cjs +231 -2
  115. package/dist/tools/warp_grep/client.cjs.map +1 -1
  116. package/dist/tools/warp_grep/client.js +4 -3
  117. package/dist/tools/warp_grep/gemini.cjs +231 -2
  118. package/dist/tools/warp_grep/gemini.cjs.map +1 -1
  119. package/dist/tools/warp_grep/gemini.js +4 -3
  120. package/dist/tools/warp_grep/gemini.js.map +1 -1
  121. package/dist/tools/warp_grep/harness.cjs +6 -1
  122. package/dist/tools/warp_grep/harness.cjs.map +1 -1
  123. package/dist/tools/warp_grep/harness.js +5 -5
  124. package/dist/tools/warp_grep/index.cjs +231 -2
  125. package/dist/tools/warp_grep/index.cjs.map +1 -1
  126. package/dist/tools/warp_grep/index.js +6 -5
  127. package/dist/tools/warp_grep/openai.cjs +231 -2
  128. package/dist/tools/warp_grep/openai.cjs.map +1 -1
  129. package/dist/tools/warp_grep/openai.js +5 -4
  130. package/dist/tools/warp_grep/providers/local.cjs +6 -1
  131. package/dist/tools/warp_grep/providers/local.cjs.map +1 -1
  132. package/dist/tools/warp_grep/providers/local.js +2 -2
  133. package/dist/tools/warp_grep/vercel.cjs +231 -2
  134. package/dist/tools/warp_grep/vercel.cjs.map +1 -1
  135. package/dist/tools/warp_grep/vercel.js +5 -4
  136. package/dist/version.cjs +251 -0
  137. package/dist/version.cjs.map +1 -0
  138. package/dist/version.d.ts +3 -0
  139. package/dist/version.js +8 -0
  140. package/dist/version.js.map +1 -0
  141. package/package.json +2 -2
  142. package/dist/chunk-4VWJFZVS.js.map +0 -1
  143. package/dist/chunk-FXBT4UDY.js.map +0 -1
  144. package/dist/chunk-QL7MV3GT.js.map +0 -1
  145. /package/dist/{chunk-ZYPLV3HP.js.map → chunk-4VLTYTEY.js.map} +0 -0
  146. /package/dist/{chunk-M5DR2WOZ.js.map → chunk-5HPN4VL2.js.map} +0 -0
  147. /package/dist/{chunk-5IVVJMMX.js.map → chunk-6ODXYTLF.js.map} +0 -0
  148. /package/dist/{chunk-OUEJ6XEO.js.map → chunk-7HKYJ2MW.js.map} +0 -0
  149. /package/dist/{chunk-EMMSRY32.js.map → chunk-7TM4RBXE.js.map} +0 -0
  150. /package/dist/{chunk-EAT5W3SH.js.map → chunk-A54BOCBI.js.map} +0 -0
  151. /package/dist/{chunk-3Q7KXILI.js.map → chunk-FZUUET6R.js.map} +0 -0
  152. /package/dist/{chunk-WM77HRKO.js.map → chunk-HBWOWL7L.js.map} +0 -0
  153. /package/dist/{chunk-A2LIILDJ.js.map → chunk-HCN2MLSO.js.map} +0 -0
  154. /package/dist/{chunk-HMAX2FEE.js.map → chunk-HQAPRX5T.js.map} +0 -0
  155. /package/dist/{chunk-O5DA5V5S.js.map → chunk-NW6PJIID.js.map} +0 -0
  156. /package/dist/{chunk-QFEVCGR6.js.map → chunk-P4EPXC2Q.js.map} +0 -0
  157. /package/dist/{chunk-YJXAMX3V.js.map → chunk-RODHADNG.js.map} +0 -0
  158. /package/dist/{chunk-UR76P62F.js.map → chunk-RZ4VC4BG.js.map} +0 -0
  159. /package/dist/{chunk-Y5BB7JFH.js.map → chunk-SNY2UKHQ.js.map} +0 -0
  160. /package/dist/{chunk-PR44LEQQ.js.map → chunk-T7F3DIRK.js.map} +0 -0
  161. /package/dist/{chunk-SI2CKRKJ.js.map → chunk-TVPEH6FF.js.map} +0 -0
  162. /package/dist/{chunk-UNHHRMU7.js.map → chunk-VVEK5JSH.js.map} +0 -0
  163. /package/dist/{chunk-ZRLEAPZV.js.map → chunk-XQ4KEOJT.js.map} +0 -0
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  executeToolCall,
6
6
  executeToolCallStreaming
7
- } from "./chunk-YJXAMX3V.js";
7
+ } from "./chunk-RODHADNG.js";
8
8
 
9
9
  // tools/warp_grep/vercel.ts
10
10
  import { tool } from "ai";
@@ -63,4 +63,4 @@ export {
63
63
  createWarpGrepTool,
64
64
  vercel_default
65
65
  };
66
- //# sourceMappingURL=chunk-3Q7KXILI.js.map
66
+ //# sourceMappingURL=chunk-FZUUET6R.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  fetchWithRetry,
3
3
  withTimeout
4
- } from "./chunk-4VWJFZVS.js";
4
+ } from "./chunk-2BPPWIJI.js";
5
5
 
6
6
  // tools/codebase_search/core.ts
7
7
  var CodebaseSearchClient = class {
@@ -102,4 +102,4 @@ export {
102
102
  CodebaseSearchClient,
103
103
  executeCodebaseSearch
104
104
  };
105
- //# sourceMappingURL=chunk-WM77HRKO.js.map
105
+ //# sourceMappingURL=chunk-HBWOWL7L.js.map
@@ -5,7 +5,7 @@ import {
5
5
  import {
6
6
  executeToolCall,
7
7
  formatResult
8
- } from "./chunk-YJXAMX3V.js";
8
+ } from "./chunk-RODHADNG.js";
9
9
  import {
10
10
  getSystemPrompt
11
11
  } from "./chunk-FMLHRJDF.js";
@@ -50,4 +50,4 @@ export {
50
50
  execute,
51
51
  createWarpGrepTool
52
52
  };
53
- //# sourceMappingURL=chunk-A2LIILDJ.js.map
53
+ //# sourceMappingURL=chunk-HCN2MLSO.js.map
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-63WE2C5R.js";
5
5
  import {
6
6
  executeEditFile
7
- } from "./chunk-M5DR2WOZ.js";
7
+ } from "./chunk-5HPN4VL2.js";
8
8
  import {
9
9
  __export
10
10
  } from "./chunk-PZ5AY32C.js";
@@ -86,4 +86,4 @@ export {
86
86
  vercel_default,
87
87
  vercel_exports
88
88
  };
89
- //# sourceMappingURL=chunk-HMAX2FEE.js.map
89
+ //# sourceMappingURL=chunk-HQAPRX5T.js.map
@@ -1,3 +1,7 @@
1
+ import {
2
+ SDK_VERSION
3
+ } from "./chunk-4RO43W62.js";
4
+
1
5
  // tools/fastapply/apply.ts
2
6
  import { createTwoFilesPatch } from "diff";
3
7
  import OpenAI from "openai";
@@ -55,7 +59,8 @@ async function callMorphAPI(originalCode, codeEdit, instructions, filepath, conf
55
59
  apiKey,
56
60
  baseURL: `${apiUrl}/v1`,
57
61
  timeout,
58
- maxRetries: config.retryConfig?.maxRetries ?? 3
62
+ maxRetries: config.retryConfig?.maxRetries ?? 3,
63
+ defaultHeaders: { "X-Morph-SDK-Version": SDK_VERSION }
59
64
  });
60
65
  const completion = await client.chat.completions.create({
61
66
  model: "morph-v3-fast",
@@ -111,4 +116,4 @@ export {
111
116
  callMorphAPI,
112
117
  applyEdit
113
118
  };
114
- //# sourceMappingURL=chunk-FXBT4UDY.js.map
119
+ //# sourceMappingURL=chunk-NLDYHLRB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../tools/fastapply/apply.ts"],"sourcesContent":["/**\n * Edge-compatible code application API\n *\n * This module works on:\n * - Node.js\n * - Cloudflare Workers\n * - Vercel Edge Functions\n * - Deno Deploy\n * - Browser environments\n *\n * For file-based operations, use executeEditFile from core.ts\n */\n\nimport { createTwoFilesPatch } from 'diff';\nimport OpenAI from 'openai';\nimport { SDK_VERSION } from '../../version.js';\nimport type {\n EditChanges,\n ApplyEditInput,\n ApplyEditResult,\n ApplyEditConfig,\n} from './types.js';\n\nconst DEFAULT_API_URL = 'https://api.morphllm.com';\nconst DEFAULT_TIMEOUT = 30000;\n\n/**\n * Generate a unified diff between two strings\n */\nexport function generateUdiff(\n original: string,\n modified: string,\n filepath: string\n): string {\n return createTwoFilesPatch(\n filepath,\n filepath,\n original,\n modified,\n 'Original',\n 'Modified'\n );\n}\n\n/**\n * Count changes from a unified diff\n */\nexport function countChanges(original: string, modified: string): EditChanges {\n const diff = generateUdiff(original, modified, 'file');\n const lines = diff.split('\\n');\n\n let linesAdded = 0;\n let linesRemoved = 0;\n\n for (const line of lines) {\n if (line.startsWith('+') && !line.startsWith('+++')) {\n linesAdded++;\n } else if (line.startsWith('-') && !line.startsWith('---')) {\n linesRemoved++;\n }\n }\n\n const linesModified = Math.min(linesAdded, linesRemoved);\n\n return {\n linesAdded: linesAdded - linesModified,\n linesRemoved: linesRemoved - linesModified,\n linesModified,\n };\n}\n\n/**\n * Call Morph Apply API to merge code edits\n * Uses OpenAI SDK for reliable connection handling, retries, and timeouts\n */\nexport async function callMorphAPI(\n originalCode: string,\n codeEdit: string,\n instructions: string,\n filepath: string,\n config: ApplyEditConfig\n): Promise<{ content: string; completionId?: string }> {\n const apiKey = config.morphApiKey || (typeof process !== 'undefined' ? process.env?.MORPH_API_KEY : undefined);\n const apiUrl = config.morphApiUrl || DEFAULT_API_URL;\n const timeout = config.timeout || DEFAULT_TIMEOUT;\n const debug = config.debug || false;\n\n if (!apiKey) {\n throw new Error(\n 'Morph API key not found. Set MORPH_API_KEY environment variable or pass morphApiKey in config.'\n );\n }\n\n // Format message with XML tags as per Morph Fast Apply spec\n const message = `<instruction>${instructions}</instruction>\\n<code>${originalCode}</code>\\n<update>${codeEdit}</update>`;\n\n if (debug) {\n console.log(`[FastApply] Calling ${apiUrl}/v1/chat/completions`);\n console.log(`[FastApply] File: ${filepath}, Instructions: ${instructions.slice(0, 60)}...`);\n console.log(`[FastApply] Original: ${originalCode.length} chars, Edit: ${codeEdit.length} chars`);\n }\n\n const startTime = Date.now();\n\n const client = new OpenAI({\n apiKey,\n baseURL: `${apiUrl}/v1`,\n timeout,\n maxRetries: config.retryConfig?.maxRetries ?? 3,\n defaultHeaders: { 'X-Morph-SDK-Version': SDK_VERSION },\n });\n\n const completion = await client.chat.completions.create({\n model: 'morph-v3-fast',\n messages: [{ role: 'user', content: message }],\n });\n\n const content = completion.choices[0]?.message?.content;\n if (!content) {\n throw new Error('Morph API returned empty response');\n }\n\n const elapsed = Date.now() - startTime;\n\n if (debug) {\n console.log(`[FastApply] Success in ${elapsed}ms, merged: ${content.length} chars`);\n }\n\n return { content, completionId: completion.id };\n}\n\n/**\n * Apply an edit to code directly without file I/O\n *\n * This is the edge-compatible code-in/code-out API that accepts code content directly\n * and returns the merged result without reading or writing any files.\n *\n * Works on Cloudflare Workers, Vercel Edge Functions, Deno, and browsers.\n *\n * @param input - Code and edit parameters\n * @param config - Optional configuration\n * @returns Result with merged code\n *\n * @example\n * ```typescript\n * import { applyEdit } from '@morphllm/morphsdk';\n *\n * const result = await applyEdit({\n * originalCode: fs.readFileSync('file.ts', 'utf-8'),\n * codeEdit: '// ... existing code ...\\nconst newVar = 42;\\n// ... existing code ...',\n * instructions: 'Add a new variable',\n * filepath: 'file.ts' // optional, for udiff context\n * });\n *\n * if (result.success) {\n * fs.writeFileSync('file.ts', result.mergedCode);\n * }\n * ```\n */\nexport async function applyEdit(\n input: ApplyEditInput,\n config: ApplyEditConfig = {}\n): Promise<ApplyEditResult> {\n const debug = config.debug || false;\n const filepath = input.filepath || 'file';\n\n try {\n if (debug) {\n console.log(`[FastApply] Applying edit to code (${input.originalCode.length} chars)`);\n }\n\n const { content: mergedCode, completionId } = await callMorphAPI(\n input.originalCode,\n input.codeEdit,\n input.instructions,\n filepath,\n config\n );\n\n const udiff = config.generateUdiff !== false\n ? generateUdiff(input.originalCode, mergedCode, filepath)\n : undefined;\n\n const changes = countChanges(input.originalCode, mergedCode);\n\n return {\n success: true,\n mergedCode,\n udiff,\n changes,\n completionId,\n };\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred';\n if (debug) console.error(`[FastApply] Error: ${errorMessage}`);\n\n return {\n success: false,\n changes: { linesAdded: 0, linesRemoved: 0, linesModified: 0 },\n error: errorMessage,\n };\n }\n}\n"],"mappings":"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","names":[]}
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-YQMPVJ2L.js";
4
4
  import {
5
5
  executeCodebaseSearch
6
- } from "./chunk-WM77HRKO.js";
6
+ } from "./chunk-HBWOWL7L.js";
7
7
 
8
8
  // tools/codebase_search/vercel.ts
9
9
  import { tool } from "ai";
@@ -55,4 +55,4 @@ export {
55
55
  getSystemPrompt,
56
56
  vercel_default
57
57
  };
58
- //# sourceMappingURL=chunk-O5DA5V5S.js.map
58
+ //# sourceMappingURL=chunk-NW6PJIID.js.map
@@ -1,51 +1,51 @@
1
1
  import {
2
2
  createWarpGrepTool
3
- } from "./chunk-UR76P62F.js";
3
+ } from "./chunk-RZ4VC4BG.js";
4
4
  import {
5
5
  createWarpGrepTool as createWarpGrepTool3
6
- } from "./chunk-3Q7KXILI.js";
6
+ } from "./chunk-FZUUET6R.js";
7
7
  import {
8
8
  createWarpGrepTool as createWarpGrepTool2
9
- } from "./chunk-A2LIILDJ.js";
9
+ } from "./chunk-HCN2MLSO.js";
10
10
  import {
11
11
  WarpGrepClient
12
- } from "./chunk-YJXAMX3V.js";
12
+ } from "./chunk-RODHADNG.js";
13
+ import {
14
+ createCodebaseSearchTool
15
+ } from "./chunk-XQ4KEOJT.js";
13
16
  import {
14
17
  createCodebaseSearchTool as createCodebaseSearchTool3
15
- } from "./chunk-O5DA5V5S.js";
18
+ } from "./chunk-NW6PJIID.js";
16
19
  import {
17
20
  createCodebaseSearchTool as createCodebaseSearchTool2
18
- } from "./chunk-OUEJ6XEO.js";
19
- import {
20
- createCodebaseSearchTool
21
- } from "./chunk-ZRLEAPZV.js";
21
+ } from "./chunk-7HKYJ2MW.js";
22
22
  import {
23
23
  CodebaseSearchClient
24
- } from "./chunk-WM77HRKO.js";
24
+ } from "./chunk-HBWOWL7L.js";
25
+ import {
26
+ createEditFileTool
27
+ } from "./chunk-VVEK5JSH.js";
25
28
  import {
26
29
  createEditFileTool as createEditFileTool3
27
- } from "./chunk-HMAX2FEE.js";
30
+ } from "./chunk-HQAPRX5T.js";
28
31
  import {
29
32
  createEditFileTool as createEditFileTool2
30
- } from "./chunk-Y5BB7JFH.js";
31
- import {
32
- createEditFileTool
33
- } from "./chunk-UNHHRMU7.js";
33
+ } from "./chunk-SNY2UKHQ.js";
34
34
  import {
35
35
  FastApplyClient
36
- } from "./chunk-M5DR2WOZ.js";
36
+ } from "./chunk-5HPN4VL2.js";
37
37
  import {
38
38
  BrowserClient
39
- } from "./chunk-ZYPLV3HP.js";
40
- import {
41
- MorphGit
42
- } from "./chunk-LE66XCOI.js";
39
+ } from "./chunk-4VLTYTEY.js";
43
40
  import {
44
41
  AnthropicRouter,
45
42
  GeminiRouter,
46
43
  OpenAIRouter,
47
44
  RawRouter
48
- } from "./chunk-EMMSRY32.js";
45
+ } from "./chunk-7TM4RBXE.js";
46
+ import {
47
+ MorphGit
48
+ } from "./chunk-LE66XCOI.js";
49
49
 
50
50
  // tools/github/types.ts
51
51
  var GitHubError = class extends Error {
@@ -643,4 +643,4 @@ export {
643
643
  VercelToolFactory,
644
644
  MorphClient
645
645
  };
646
- //# sourceMappingURL=chunk-QFEVCGR6.js.map
646
+ //# sourceMappingURL=chunk-P4EPXC2Q.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  runWarpGrep,
3
3
  runWarpGrepStreaming
4
- } from "./chunk-QL7MV3GT.js";
4
+ } from "./chunk-BVINWDTA.js";
5
5
  import {
6
6
  RemoteCommandsProvider
7
7
  } from "./chunk-PUGSTXLO.js";
@@ -148,4 +148,4 @@ export {
148
148
  executeToolCallStreaming,
149
149
  formatResult
150
150
  };
151
- //# sourceMappingURL=chunk-YJXAMX3V.js.map
151
+ //# sourceMappingURL=chunk-RODHADNG.js.map
@@ -5,7 +5,7 @@ import {
5
5
  import {
6
6
  executeToolCall,
7
7
  formatResult
8
- } from "./chunk-YJXAMX3V.js";
8
+ } from "./chunk-RODHADNG.js";
9
9
  import {
10
10
  getSystemPrompt
11
11
  } from "./chunk-FMLHRJDF.js";
@@ -58,4 +58,4 @@ export {
58
58
  createWarpGrepTool,
59
59
  openai_default
60
60
  };
61
- //# sourceMappingURL=chunk-UR76P62F.js.map
61
+ //# sourceMappingURL=chunk-RZ4VC4BG.js.map
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-63WE2C5R.js";
5
5
  import {
6
6
  executeEditFile
7
- } from "./chunk-M5DR2WOZ.js";
7
+ } from "./chunk-5HPN4VL2.js";
8
8
  import {
9
9
  __export
10
10
  } from "./chunk-PZ5AY32C.js";
@@ -79,4 +79,4 @@ export {
79
79
  getSystemPrompt,
80
80
  anthropic_exports
81
81
  };
82
- //# sourceMappingURL=chunk-Y5BB7JFH.js.map
82
+ //# sourceMappingURL=chunk-SNY2UKHQ.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-2HMEZZKK.js";
4
4
  import {
5
5
  executeBrowserTask
6
- } from "./chunk-ZYPLV3HP.js";
6
+ } from "./chunk-4VLTYTEY.js";
7
7
  import {
8
8
  __export
9
9
  } from "./chunk-PZ5AY32C.js";
@@ -54,4 +54,4 @@ export {
54
54
  browserTool,
55
55
  vercel_exports
56
56
  };
57
- //# sourceMappingURL=chunk-PR44LEQQ.js.map
57
+ //# sourceMappingURL=chunk-T7F3DIRK.js.map
@@ -12,7 +12,7 @@ import {
12
12
  } from "./chunk-2VERUKO2.js";
13
13
  import {
14
14
  fetchWithRetry
15
- } from "./chunk-4VWJFZVS.js";
15
+ } from "./chunk-2BPPWIJI.js";
16
16
 
17
17
  // tools/browser/profiles/core.ts
18
18
  var DEFAULT_API_URL = process.env.MORPH_ENVIRONMENT === "DEV" ? "http://localhost:8000" : "https://browser.morphllm.com";
@@ -386,4 +386,4 @@ export {
386
386
  listRepos,
387
387
  getProfileState
388
388
  };
389
- //# sourceMappingURL=chunk-SI2CKRKJ.js.map
389
+ //# sourceMappingURL=chunk-TVPEH6FF.js.map
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-63WE2C5R.js";
5
5
  import {
6
6
  executeEditFile
7
- } from "./chunk-M5DR2WOZ.js";
7
+ } from "./chunk-5HPN4VL2.js";
8
8
  import {
9
9
  __export
10
10
  } from "./chunk-PZ5AY32C.js";
@@ -91,4 +91,4 @@ export {
91
91
  openai_default,
92
92
  openai_exports
93
93
  };
94
- //# sourceMappingURL=chunk-UNHHRMU7.js.map
94
+ //# sourceMappingURL=chunk-VVEK5JSH.js.map
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-YQMPVJ2L.js";
5
5
  import {
6
6
  executeCodebaseSearch
7
- } from "./chunk-WM77HRKO.js";
7
+ } from "./chunk-HBWOWL7L.js";
8
8
 
9
9
  // tools/codebase_search/openai.ts
10
10
  var codebaseSearchTool = {
@@ -125,4 +125,4 @@ export {
125
125
  getSystemPrompt,
126
126
  openai_default
127
127
  };
128
- //# sourceMappingURL=chunk-ZRLEAPZV.js.map
128
+ //# sourceMappingURL=chunk-XQ4KEOJT.js.map
package/dist/client.cjs CHANGED
@@ -30,6 +30,239 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
30
30
  ));
31
31
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
32
32
 
33
+ // package.json
34
+ var package_default;
35
+ var init_package = __esm({
36
+ "package.json"() {
37
+ package_default = {
38
+ name: "@morphllm/morphsdk",
39
+ version: "0.2.120",
40
+ description: "TypeScript SDK and CLI for Morph Fast Apply integration",
41
+ type: "module",
42
+ main: "./dist/index.cjs",
43
+ module: "./dist/index.js",
44
+ types: "./dist/index.d.ts",
45
+ exports: {
46
+ ".": {
47
+ types: "./dist/index.d.ts",
48
+ import: "./dist/index.js",
49
+ require: "./dist/index.cjs"
50
+ },
51
+ "./edge": {
52
+ types: "./dist/edge.d.ts",
53
+ import: "./dist/edge.js",
54
+ require: "./dist/edge.cjs"
55
+ },
56
+ "./tools/warp-grep": {
57
+ types: "./dist/tools/warp_grep/index.d.ts",
58
+ import: "./dist/tools/warp_grep/index.js",
59
+ require: "./dist/tools/warp_grep/index.cjs"
60
+ },
61
+ "./tools/warp-grep/openai": {
62
+ types: "./dist/tools/warp_grep/openai.d.ts",
63
+ import: "./dist/tools/warp_grep/openai.js",
64
+ require: "./dist/tools/warp_grep/openai.cjs"
65
+ },
66
+ "./tools/warp-grep/anthropic": {
67
+ types: "./dist/tools/warp_grep/anthropic.d.ts",
68
+ import: "./dist/tools/warp_grep/anthropic.js",
69
+ require: "./dist/tools/warp_grep/anthropic.cjs"
70
+ },
71
+ "./tools/warp-grep/vercel": {
72
+ types: "./dist/tools/warp_grep/vercel.d.ts",
73
+ import: "./dist/tools/warp_grep/vercel.js",
74
+ require: "./dist/tools/warp_grep/vercel.cjs"
75
+ },
76
+ "./tools/warp-grep/client": {
77
+ types: "./dist/tools/warp_grep/client.d.ts",
78
+ import: "./dist/tools/warp_grep/client.js",
79
+ require: "./dist/tools/warp_grep/client.cjs"
80
+ },
81
+ "./tools/warp-grep/gemini": {
82
+ types: "./dist/tools/warp_grep/gemini.d.ts",
83
+ import: "./dist/tools/warp_grep/gemini.js",
84
+ require: "./dist/tools/warp_grep/gemini.cjs"
85
+ },
86
+ "./tools/warp-grep/harness": {
87
+ types: "./dist/tools/warp_grep/harness.d.ts",
88
+ import: "./dist/tools/warp_grep/harness.js",
89
+ require: "./dist/tools/warp_grep/harness.cjs"
90
+ },
91
+ "./tools/fastapply": {
92
+ types: "./dist/tools/fastapply/index.d.ts",
93
+ import: "./dist/tools/fastapply/index.js",
94
+ require: "./dist/tools/fastapply/index.cjs"
95
+ },
96
+ "./tools/fastapply/anthropic": {
97
+ types: "./dist/tools/fastapply/anthropic.d.ts",
98
+ import: "./dist/tools/fastapply/anthropic.js",
99
+ require: "./dist/tools/fastapply/anthropic.cjs"
100
+ },
101
+ "./tools/fastapply/openai": {
102
+ types: "./dist/tools/fastapply/openai.d.ts",
103
+ import: "./dist/tools/fastapply/openai.js",
104
+ require: "./dist/tools/fastapply/openai.cjs"
105
+ },
106
+ "./tools/fastapply/vercel": {
107
+ types: "./dist/tools/fastapply/vercel.d.ts",
108
+ import: "./dist/tools/fastapply/vercel.js",
109
+ require: "./dist/tools/fastapply/vercel.cjs"
110
+ },
111
+ "./tools/codebase-search": {
112
+ types: "./dist/tools/codebase_search/index.d.ts",
113
+ import: "./dist/tools/codebase_search/index.js",
114
+ require: "./dist/tools/codebase_search/index.cjs"
115
+ },
116
+ "./tools/codebase-search/anthropic": {
117
+ types: "./dist/tools/codebase_search/anthropic.d.ts",
118
+ import: "./dist/tools/codebase_search/anthropic.js",
119
+ require: "./dist/tools/codebase_search/anthropic.cjs"
120
+ },
121
+ "./tools/codebase-search/openai": {
122
+ types: "./dist/tools/codebase_search/openai.d.ts",
123
+ import: "./dist/tools/codebase_search/openai.js",
124
+ require: "./dist/tools/codebase_search/openai.cjs"
125
+ },
126
+ "./tools/codebase-search/vercel": {
127
+ types: "./dist/tools/codebase_search/vercel.d.ts",
128
+ import: "./dist/tools/codebase_search/vercel.js",
129
+ require: "./dist/tools/codebase_search/vercel.cjs"
130
+ },
131
+ "./tools/git": {
132
+ types: "./dist/git/index.d.ts",
133
+ import: "./dist/git/index.js",
134
+ require: "./dist/git/index.cjs"
135
+ },
136
+ "./tools/browser": {
137
+ types: "./dist/tools/browser/index.d.ts",
138
+ import: "./dist/tools/browser/index.js",
139
+ require: "./dist/tools/browser/index.cjs"
140
+ },
141
+ "./tools/browser/anthropic": {
142
+ types: "./dist/tools/browser/anthropic.d.ts",
143
+ import: "./dist/tools/browser/anthropic.js",
144
+ require: "./dist/tools/browser/anthropic.cjs"
145
+ },
146
+ "./tools/browser/openai": {
147
+ types: "./dist/tools/browser/openai.d.ts",
148
+ import: "./dist/tools/browser/openai.js",
149
+ require: "./dist/tools/browser/openai.cjs"
150
+ },
151
+ "./tools/browser/vercel": {
152
+ types: "./dist/tools/browser/vercel.d.ts",
153
+ import: "./dist/tools/browser/vercel.js",
154
+ require: "./dist/tools/browser/vercel.cjs"
155
+ },
156
+ "./tools/browser/profiles": {
157
+ types: "./dist/tools/browser/profiles/index.d.ts",
158
+ import: "./dist/tools/browser/profiles/index.js",
159
+ require: "./dist/tools/browser/profiles/index.cjs"
160
+ },
161
+ "./modelrouter": {
162
+ types: "./dist/modelrouter/index.d.ts",
163
+ import: "./dist/modelrouter/index.js",
164
+ require: "./dist/modelrouter/index.cjs"
165
+ }
166
+ },
167
+ files: [
168
+ "dist/**/*.js",
169
+ "dist/**/*.cjs",
170
+ "dist/**/*.d.ts",
171
+ "dist/**/*.map",
172
+ "!dist/**/__tests__/**",
173
+ "!dist/**/*.test.*"
174
+ ],
175
+ 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",
177
+ prepare: "npm run build",
178
+ typecheck: "tsc --noEmit",
179
+ lint: "eslint .",
180
+ test: "vitest run",
181
+ "test:watch": "vitest watch",
182
+ "test:anthropic": "vitest run anthropic",
183
+ "test:openai": "vitest run openai",
184
+ "test:vercel": "vitest run vercel",
185
+ "test:git": "vitest run git",
186
+ "test:browser": "vitest run browser",
187
+ "test:agent": "npx tsx tests/fullAgentTest.ts",
188
+ "test:integration": "npx tsx tests/fullIntegrationTest.ts",
189
+ "release:patch": "npm version patch && npm publish",
190
+ "release:minor": "npm version minor && npm publish",
191
+ "release:major": "npm version major && npm publish"
192
+ },
193
+ keywords: [
194
+ "morph",
195
+ "fast-apply",
196
+ "cli",
197
+ "sdk",
198
+ "edit-file"
199
+ ],
200
+ engines: {
201
+ node: ">=18"
202
+ },
203
+ license: "MIT",
204
+ dependencies: {
205
+ "@vscode/ripgrep": "^1.17.0",
206
+ ai: "^5.0.0",
207
+ diff: "^7.0.0",
208
+ "isomorphic-git": "^1.25.10",
209
+ openai: "^4.52.7",
210
+ zod: "^3.23.8"
211
+ },
212
+ devDependencies: {
213
+ "@ai-sdk/anthropic": "^1.0.9",
214
+ "@ai-sdk/openai": "^2.0.35",
215
+ "@anthropic-ai/sdk": "^0.30.1",
216
+ "@google/generative-ai": "^0.24.1",
217
+ "@types/diff": "^7.0.2",
218
+ "@types/node": "^20.14.10",
219
+ "@typescript-eslint/eslint-plugin": "^7.18.0",
220
+ "@typescript-eslint/parser": "^7.18.0",
221
+ dotenv: "^16.4.5",
222
+ eslint: "^8.57.0",
223
+ shx: "^0.3.4",
224
+ tsup: "^8.5.0",
225
+ tsx: "^4.16.2",
226
+ typescript: "^5.5.4",
227
+ vitest: "^2.1.6"
228
+ },
229
+ peerDependencies: {
230
+ "@anthropic-ai/sdk": ">=0.25.0",
231
+ "@google/generative-ai": ">=0.21.0",
232
+ ai: ">=5.0.0",
233
+ zod: ">=3.23.0"
234
+ },
235
+ peerDependenciesMeta: {
236
+ "@anthropic-ai/sdk": {
237
+ optional: true
238
+ },
239
+ "@google/generative-ai": {
240
+ optional: true
241
+ },
242
+ ai: {
243
+ optional: true
244
+ },
245
+ zod: {
246
+ optional: true
247
+ }
248
+ },
249
+ publishConfig: {
250
+ access: "public"
251
+ }
252
+ };
253
+ }
254
+ });
255
+
256
+ // version.ts
257
+ var SDK_VERSION;
258
+ var init_version = __esm({
259
+ "version.ts"() {
260
+ "use strict";
261
+ init_package();
262
+ SDK_VERSION = package_default.version;
263
+ }
264
+ });
265
+
33
266
  // tools/fastapply/apply.ts
34
267
  var apply_exports = {};
35
268
  __export(apply_exports, {
@@ -90,7 +323,8 @@ async function callMorphAPI(originalCode, codeEdit, instructions, filepath, conf
90
323
  apiKey,
91
324
  baseURL: `${apiUrl}/v1`,
92
325
  timeout,
93
- maxRetries: config.retryConfig?.maxRetries ?? 3
326
+ maxRetries: config.retryConfig?.maxRetries ?? 3,
327
+ defaultHeaders: { "X-Morph-SDK-Version": SDK_VERSION }
94
328
  });
95
329
  const completion = await client.chat.completions.create({
96
330
  model: "morph-v3-fast",
@@ -145,6 +379,7 @@ var init_apply = __esm({
145
379
  "use strict";
146
380
  import_diff = require("diff");
147
381
  import_openai = __toESM(require("openai"), 1);
382
+ init_version();
148
383
  DEFAULT_API_URL = "https://api.morphllm.com";
149
384
  DEFAULT_TIMEOUT = 3e4;
150
385
  }
@@ -659,7 +894,12 @@ Details: ${res.stderr}` : ""}`
659
894
  return;
660
895
  }
661
896
  if (depth > maxDepth || results.length >= maxResults) return;
662
- const entries = await import_promises2.default.readdir(dir, { withFileTypes: true });
897
+ let entries;
898
+ try {
899
+ entries = await import_promises2.default.readdir(dir, { withFileTypes: true });
900
+ } catch {
901
+ return;
902
+ }
663
903
  for (const entry of entries) {
664
904
  if (timedOut || results.length >= maxResults) break;
665
905
  if (shouldSkip2(entry.name)) continue;
@@ -803,6 +1043,7 @@ async function executeEditFile(input, config = {}) {
803
1043
  }
804
1044
 
805
1045
  // tools/utils/resilience.ts
1046
+ init_version();
806
1047
  var DEFAULT_RETRY_CONFIG = {
807
1048
  maxRetries: 3,
808
1049
  initialDelay: 1e3,
@@ -821,6 +1062,7 @@ async function fetchWithRetry(url, options, retryConfig = {}) {
821
1062
  } = retryConfig;
822
1063
  let lastError = null;
823
1064
  let delay = initialDelay;
1065
+ options = { ...options, headers: { "X-Morph-SDK-Version": SDK_VERSION, ...options.headers } };
824
1066
  for (let attempt = 0; attempt <= maxRetries; attempt++) {
825
1067
  try {
826
1068
  const response = await fetch(url, options);
@@ -3013,6 +3255,7 @@ function enforceContextLimit(messages, maxChars = AGENT_CONFIG.MAX_CONTEXT_CHARS
3013
3255
 
3014
3256
  // tools/warp_grep/agent/runner.ts
3015
3257
  var import_openai2 = __toESM(require("openai"), 1);
3258
+ init_version();
3016
3259
  var import_path3 = __toESM(require("path"), 1);
3017
3260
  var parser = new LLMResponseParser();
3018
3261
  var DEFAULT_API_URL3 = "https://api.morphllm.com";
@@ -3024,7 +3267,8 @@ async function callModel(messages, model, options = {}) {
3024
3267
  apiKey,
3025
3268
  baseURL: `${baseUrl}/v1`,
3026
3269
  maxRetries: options.retryConfig?.maxRetries,
3027
- timeout: timeoutMs
3270
+ timeout: timeoutMs,
3271
+ defaultHeaders: { "X-Morph-SDK-Version": SDK_VERSION }
3028
3272
  });
3029
3273
  const MAX_EMPTY_RETRIES = 1;
3030
3274
  for (let attempt = 0; attempt <= MAX_EMPTY_RETRIES; attempt++) {