@morphllm/morphsdk 0.2.159 → 0.2.161

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 (169) hide show
  1. package/dist/{chunk-4E7E7AV4.js → chunk-27VVVW57.js} +2 -2
  2. package/dist/{chunk-6TYVZRES.js → chunk-2CE4PG2F.js} +2 -2
  3. package/dist/{chunk-DKXCYF4X.js → chunk-442YHCTX.js} +3 -3
  4. package/dist/{chunk-MF4I43IU.js → chunk-5GVI7L4O.js} +2 -2
  5. package/dist/{chunk-PU2VOO2D.js → chunk-5R3QCYHW.js} +2 -2
  6. package/dist/{chunk-B7IMPNWU.js → chunk-63JAZOI3.js} +2 -2
  7. package/dist/{chunk-RVOUIKLY.js → chunk-CMRUAJYD.js} +3 -3
  8. package/dist/{chunk-3EJEE5GO.js → chunk-DKQMGEHV.js} +2 -2
  9. package/dist/{chunk-XBJAMGI2.js → chunk-F2SBKBBS.js} +2 -2
  10. package/dist/{chunk-CMSHXALI.js → chunk-FBRNUWEB.js} +3 -2
  11. package/dist/chunk-FBRNUWEB.js.map +1 -0
  12. package/dist/{chunk-CNPAYMDN.js → chunk-G3E75GPM.js} +2 -2
  13. package/dist/{chunk-QWKGNQEW.js → chunk-HDZ4XYUX.js} +2 -2
  14. package/dist/{chunk-V6I2GG65.js → chunk-IHSLH64T.js} +2 -2
  15. package/dist/{chunk-ORE44IJ2.js → chunk-JIPYZNK3.js} +2 -2
  16. package/dist/{chunk-3NNS5IQ7.js → chunk-KCJRKSMG.js} +2 -2
  17. package/dist/{chunk-V4LGPMZD.js → chunk-KF2AYKGJ.js} +17 -17
  18. package/dist/{chunk-2SDJIJDR.js → chunk-KP3CAEH5.js} +2 -2
  19. package/dist/{chunk-BQRDC7EJ.js → chunk-L6WYOSFK.js} +2 -2
  20. package/dist/{chunk-BQRDC7EJ.js.map → chunk-L6WYOSFK.js.map} +1 -1
  21. package/dist/{chunk-BTPD2LBP.js → chunk-LGF2WTXG.js} +2 -2
  22. package/dist/{chunk-YIHCMNNJ.js → chunk-N4EFVT45.js} +2 -2
  23. package/dist/{chunk-RVFHET5R.js → chunk-NBGHPRU6.js} +8 -3
  24. package/dist/chunk-NBGHPRU6.js.map +1 -0
  25. package/dist/{chunk-BD7THL46.js → chunk-PQXJ32G4.js} +2 -2
  26. package/dist/{chunk-FUWPB6PB.js → chunk-QQBEGCX2.js} +2 -2
  27. package/dist/{chunk-QJAO6WIG.js → chunk-QR34LBOS.js} +2 -2
  28. package/dist/{chunk-GGF2ZZ2M.js → chunk-RZS5DQAX.js} +2 -2
  29. package/dist/{chunk-VZJXOTO6.js → chunk-VM4TVOBU.js} +1 -1
  30. package/dist/chunk-VM4TVOBU.js.map +1 -0
  31. package/dist/client.cjs +9 -3
  32. package/dist/client.cjs.map +1 -1
  33. package/dist/client.js +23 -23
  34. package/dist/edge.cjs +7 -2
  35. package/dist/edge.cjs.map +1 -1
  36. package/dist/edge.js +4 -4
  37. package/dist/index.cjs +9 -3
  38. package/dist/index.cjs.map +1 -1
  39. package/dist/index.js +23 -23
  40. package/dist/modelrouter/core.cjs +1 -1
  41. package/dist/modelrouter/core.cjs.map +1 -1
  42. package/dist/modelrouter/core.js +3 -3
  43. package/dist/modelrouter/index.cjs +1 -1
  44. package/dist/modelrouter/index.cjs.map +1 -1
  45. package/dist/modelrouter/index.js +3 -3
  46. package/dist/subagents/anthropic.cjs +3 -2
  47. package/dist/subagents/anthropic.cjs.map +1 -1
  48. package/dist/subagents/anthropic.js +5 -5
  49. package/dist/subagents/vercel.cjs +3 -2
  50. package/dist/subagents/vercel.cjs.map +1 -1
  51. package/dist/subagents/vercel.js +5 -5
  52. package/dist/tools/browser/anthropic.cjs +1 -1
  53. package/dist/tools/browser/anthropic.cjs.map +1 -1
  54. package/dist/tools/browser/anthropic.js +5 -5
  55. package/dist/tools/browser/core.cjs +1 -1
  56. package/dist/tools/browser/core.cjs.map +1 -1
  57. package/dist/tools/browser/core.js +4 -4
  58. package/dist/tools/browser/index.cjs +1 -1
  59. package/dist/tools/browser/index.cjs.map +1 -1
  60. package/dist/tools/browser/index.js +7 -7
  61. package/dist/tools/browser/openai.cjs +1 -1
  62. package/dist/tools/browser/openai.cjs.map +1 -1
  63. package/dist/tools/browser/openai.js +5 -5
  64. package/dist/tools/browser/profiles/core.cjs +1 -1
  65. package/dist/tools/browser/profiles/core.cjs.map +1 -1
  66. package/dist/tools/browser/profiles/core.js +3 -3
  67. package/dist/tools/browser/profiles/index.cjs +1 -1
  68. package/dist/tools/browser/profiles/index.cjs.map +1 -1
  69. package/dist/tools/browser/profiles/index.js +3 -3
  70. package/dist/tools/browser/vercel.cjs +1 -1
  71. package/dist/tools/browser/vercel.cjs.map +1 -1
  72. package/dist/tools/browser/vercel.js +5 -5
  73. package/dist/tools/codebase_search/anthropic.cjs +1 -1
  74. package/dist/tools/codebase_search/anthropic.cjs.map +1 -1
  75. package/dist/tools/codebase_search/anthropic.js +4 -4
  76. package/dist/tools/codebase_search/core.cjs +1 -1
  77. package/dist/tools/codebase_search/core.cjs.map +1 -1
  78. package/dist/tools/codebase_search/core.js +3 -3
  79. package/dist/tools/codebase_search/index.cjs +1 -1
  80. package/dist/tools/codebase_search/index.cjs.map +1 -1
  81. package/dist/tools/codebase_search/index.js +6 -6
  82. package/dist/tools/codebase_search/openai.cjs +1 -1
  83. package/dist/tools/codebase_search/openai.cjs.map +1 -1
  84. package/dist/tools/codebase_search/openai.js +4 -4
  85. package/dist/tools/codebase_search/vercel.cjs +1 -1
  86. package/dist/tools/codebase_search/vercel.cjs.map +1 -1
  87. package/dist/tools/codebase_search/vercel.js +4 -4
  88. package/dist/tools/fastapply/anthropic.cjs +7 -2
  89. package/dist/tools/fastapply/anthropic.cjs.map +1 -1
  90. package/dist/tools/fastapply/anthropic.js +4 -4
  91. package/dist/tools/fastapply/apply.cjs +7 -2
  92. package/dist/tools/fastapply/apply.cjs.map +1 -1
  93. package/dist/tools/fastapply/apply.js +2 -2
  94. package/dist/tools/fastapply/core.cjs +7 -2
  95. package/dist/tools/fastapply/core.cjs.map +1 -1
  96. package/dist/tools/fastapply/core.js +3 -3
  97. package/dist/tools/fastapply/index.cjs +7 -2
  98. package/dist/tools/fastapply/index.cjs.map +1 -1
  99. package/dist/tools/fastapply/index.js +6 -6
  100. package/dist/tools/fastapply/openai.cjs +7 -2
  101. package/dist/tools/fastapply/openai.cjs.map +1 -1
  102. package/dist/tools/fastapply/openai.js +4 -4
  103. package/dist/tools/fastapply/types.cjs.map +1 -1
  104. package/dist/tools/fastapply/types.d.ts +4 -0
  105. package/dist/tools/fastapply/vercel.cjs +7 -2
  106. package/dist/tools/fastapply/vercel.cjs.map +1 -1
  107. package/dist/tools/fastapply/vercel.js +4 -4
  108. package/dist/tools/index.cjs +7 -2
  109. package/dist/tools/index.cjs.map +1 -1
  110. package/dist/tools/index.js +6 -6
  111. package/dist/tools/utils/resilience.cjs +1 -1
  112. package/dist/tools/utils/resilience.cjs.map +1 -1
  113. package/dist/tools/utils/resilience.js +2 -2
  114. package/dist/tools/warp_grep/agent/parser.cjs +2 -1
  115. package/dist/tools/warp_grep/agent/parser.cjs.map +1 -1
  116. package/dist/tools/warp_grep/agent/parser.js +1 -1
  117. package/dist/tools/warp_grep/agent/runner.cjs +3 -2
  118. package/dist/tools/warp_grep/agent/runner.cjs.map +1 -1
  119. package/dist/tools/warp_grep/agent/runner.js +3 -3
  120. package/dist/tools/warp_grep/anthropic.cjs +3 -2
  121. package/dist/tools/warp_grep/anthropic.cjs.map +1 -1
  122. package/dist/tools/warp_grep/anthropic.js +5 -5
  123. package/dist/tools/warp_grep/client.cjs +3 -2
  124. package/dist/tools/warp_grep/client.cjs.map +1 -1
  125. package/dist/tools/warp_grep/client.js +4 -4
  126. package/dist/tools/warp_grep/gemini.cjs +3 -2
  127. package/dist/tools/warp_grep/gemini.cjs.map +1 -1
  128. package/dist/tools/warp_grep/gemini.js +4 -4
  129. package/dist/tools/warp_grep/harness.cjs +2 -1
  130. package/dist/tools/warp_grep/harness.cjs.map +1 -1
  131. package/dist/tools/warp_grep/harness.js +1 -1
  132. package/dist/tools/warp_grep/index.cjs +3 -2
  133. package/dist/tools/warp_grep/index.cjs.map +1 -1
  134. package/dist/tools/warp_grep/index.js +4 -4
  135. package/dist/tools/warp_grep/openai.cjs +3 -2
  136. package/dist/tools/warp_grep/openai.cjs.map +1 -1
  137. package/dist/tools/warp_grep/openai.js +5 -5
  138. package/dist/tools/warp_grep/vercel.cjs +3 -2
  139. package/dist/tools/warp_grep/vercel.cjs.map +1 -1
  140. package/dist/tools/warp_grep/vercel.js +5 -5
  141. package/dist/version.cjs +1 -1
  142. package/dist/version.cjs.map +1 -1
  143. package/dist/version.js +1 -1
  144. package/package.json +1 -1
  145. package/dist/chunk-CMSHXALI.js.map +0 -1
  146. package/dist/chunk-RVFHET5R.js.map +0 -1
  147. package/dist/chunk-VZJXOTO6.js.map +0 -1
  148. /package/dist/{chunk-4E7E7AV4.js.map → chunk-27VVVW57.js.map} +0 -0
  149. /package/dist/{chunk-6TYVZRES.js.map → chunk-2CE4PG2F.js.map} +0 -0
  150. /package/dist/{chunk-DKXCYF4X.js.map → chunk-442YHCTX.js.map} +0 -0
  151. /package/dist/{chunk-MF4I43IU.js.map → chunk-5GVI7L4O.js.map} +0 -0
  152. /package/dist/{chunk-PU2VOO2D.js.map → chunk-5R3QCYHW.js.map} +0 -0
  153. /package/dist/{chunk-B7IMPNWU.js.map → chunk-63JAZOI3.js.map} +0 -0
  154. /package/dist/{chunk-RVOUIKLY.js.map → chunk-CMRUAJYD.js.map} +0 -0
  155. /package/dist/{chunk-3EJEE5GO.js.map → chunk-DKQMGEHV.js.map} +0 -0
  156. /package/dist/{chunk-XBJAMGI2.js.map → chunk-F2SBKBBS.js.map} +0 -0
  157. /package/dist/{chunk-CNPAYMDN.js.map → chunk-G3E75GPM.js.map} +0 -0
  158. /package/dist/{chunk-QWKGNQEW.js.map → chunk-HDZ4XYUX.js.map} +0 -0
  159. /package/dist/{chunk-V6I2GG65.js.map → chunk-IHSLH64T.js.map} +0 -0
  160. /package/dist/{chunk-ORE44IJ2.js.map → chunk-JIPYZNK3.js.map} +0 -0
  161. /package/dist/{chunk-3NNS5IQ7.js.map → chunk-KCJRKSMG.js.map} +0 -0
  162. /package/dist/{chunk-V4LGPMZD.js.map → chunk-KF2AYKGJ.js.map} +0 -0
  163. /package/dist/{chunk-2SDJIJDR.js.map → chunk-KP3CAEH5.js.map} +0 -0
  164. /package/dist/{chunk-BTPD2LBP.js.map → chunk-LGF2WTXG.js.map} +0 -0
  165. /package/dist/{chunk-YIHCMNNJ.js.map → chunk-N4EFVT45.js.map} +0 -0
  166. /package/dist/{chunk-BD7THL46.js.map → chunk-PQXJ32G4.js.map} +0 -0
  167. /package/dist/{chunk-FUWPB6PB.js.map → chunk-QQBEGCX2.js.map} +0 -0
  168. /package/dist/{chunk-QJAO6WIG.js.map → chunk-QR34LBOS.js.map} +0 -0
  169. /package/dist/{chunk-GGF2ZZ2M.js.map → chunk-RZS5DQAX.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../tools/fastapply/core.ts"],"sourcesContent":["/**\n * Core implementation of Morph Fast Apply\n *\n * This module provides file-based operations that require Node.js.\n * For edge-compatible code-in/code-out operations, use applyEdit from ./apply.ts\n */\n\nimport { join, resolve, relative } from 'path';\nimport type {\n EditFileInput,\n EditFileResult,\n EditFileConfig,\n} from './types.js';\n\n// Re-export edge-compatible functions\nexport { applyEdit, generateUdiff, countChanges, callMorphAPI } from './apply.js';\n\nconst DEFAULT_CONFIG: Required<Omit<EditFileConfig, 'morphApiKey' | 'systemPrompt' | 'retryConfig' | 'description' | 'fast'>> = {\n morphApiUrl: 'https://api.morphllm.com',\n baseDir: process.cwd(),\n generateUdiff: true,\n autoWrite: true,\n timeout: 30000,\n debug: false,\n};\n\n/**\n * FastApply client for programmatic file editing\n * Note: This client requires Node.js for file operations\n */\nexport class FastApplyClient {\n private config: EditFileConfig;\n\n constructor(config: { apiKey?: string; debug?: boolean; timeout?: number; retryConfig?: any } = {}) {\n this.config = {\n morphApiKey: config.apiKey,\n morphApiUrl: DEFAULT_CONFIG.morphApiUrl,\n debug: config.debug,\n timeout: config.timeout || DEFAULT_CONFIG.timeout,\n retryConfig: config.retryConfig,\n generateUdiff: DEFAULT_CONFIG.generateUdiff,\n autoWrite: DEFAULT_CONFIG.autoWrite,\n };\n }\n\n /**\n * Execute a file edit operation\n *\n * @param input - Edit parameters including filepath, instructions, and code_edit\n * @param overrides - Optional config overrides for this operation\n * @returns Edit result with success status and changes\n */\n async execute(input: EditFileInput, overrides?: Partial<EditFileConfig>): Promise<EditFileResult> {\n return executeEditFile(input, { ...this.config, ...overrides });\n }\n\n /**\n * Apply an edit to code directly without file I/O\n *\n * Useful for sandbox environments or when you manage your own file system.\n * Compatible with the earlier OpenAI client API contract.\n *\n * @param input - Code and edit parameters\n * @param overrides - Optional config overrides for this operation\n * @returns Result with merged code\n *\n * @example\n * ```typescript\n * const result = await client.applyEdit({\n * originalCode: 'function hello() { return \"world\"; }',\n * codeEdit: 'function hello() { return \"universe\"; }',\n * instructions: 'Change return value'\n * });\n * console.log(result.mergedCode);\n * ```\n */\n async applyEdit(input: import('./types.js').ApplyEditInput, overrides?: Partial<import('./types.js').ApplyEditConfig>): Promise<import('./types.js').ApplyEditResult> {\n const { applyEdit } = await import('./apply.js');\n return applyEdit(input, { ...this.config, ...overrides });\n }\n}\n\n/**\n * Execute a file edit using Morph Fast Apply\n * Note: This function requires Node.js for file I/O\n */\nexport async function executeEditFile(\n input: EditFileInput,\n config: EditFileConfig = {}\n): Promise<EditFileResult> {\n const baseDir = config.baseDir || DEFAULT_CONFIG.baseDir;\n const fullPath = resolve(join(baseDir, input.target_filepath));\n const debug = config.debug || false;\n\n // Security: ensure file is within baseDir\n const relativePath = relative(baseDir, fullPath);\n if (relativePath.startsWith('..') || fullPath === baseDir) {\n return {\n success: false,\n filepath: input.target_filepath,\n changes: { linesAdded: 0, linesRemoved: 0, linesModified: 0 },\n error: `Invalid filepath: '${input.target_filepath}' is outside baseDir`,\n };\n }\n\n try {\n if (debug) console.log(`[FastApply] Reading file: ${input.target_filepath}`);\n\n // Dynamic import to avoid loading Node.js fs module at module evaluation time\n const { readFile, writeFile } = await import('fs/promises');\n const { callMorphAPI, generateUdiff, countChanges } = await import('./apply.js');\n\n // Handle both existing and non-existent files\n let originalCode = '';\n try {\n originalCode = await readFile(fullPath, 'utf-8');\n } catch (error: any) {\n if (error.code !== 'ENOENT') {\n throw error; // Re-throw if it's not a \"file not found\" error\n }\n // File doesn't exist, proceed with empty content (will create new file)\n if (debug) console.log(`[FastApply] File doesn't exist, will create new file`);\n }\n\n const instruction = input.instruction ?? input.instructions ?? '';\n const { content: mergedCode, completionId } = await callMorphAPI(originalCode, input.code_edit, instruction, input.target_filepath, config);\n\n const udiff = config.generateUdiff !== false ? generateUdiff(originalCode, mergedCode, input.target_filepath) : undefined;\n\n if (config.autoWrite !== false) {\n await writeFile(fullPath, mergedCode, 'utf-8');\n if (debug) console.log(`[FastApply] Wrote ${mergedCode.length} chars to ${input.target_filepath}`);\n }\n\n const changes = countChanges(originalCode, mergedCode);\n\n return {\n success: true,\n filepath: input.target_filepath,\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 filepath: input.target_filepath,\n changes: { linesAdded: 0, linesRemoved: 0, linesModified: 0 },\n error: errorMessage,\n };\n }\n}\n"],"mappings":"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","names":["applyEdit","callMorphAPI","generateUdiff","countChanges"]}
package/dist/client.cjs CHANGED
@@ -36,7 +36,7 @@ var init_package = __esm({
36
36
  "package.json"() {
37
37
  package_default = {
38
38
  name: "@morphllm/morphsdk",
39
- version: "0.2.159",
39
+ version: "0.2.161",
40
40
  description: "TypeScript SDK and CLI for Morph Fast Apply integration",
41
41
  type: "module",
42
42
  main: "./dist/index.cjs",
@@ -323,6 +323,8 @@ function countChanges(original, modified) {
323
323
  async function callMorphAPI(originalCode, codeEdit, instructions, filepath, config) {
324
324
  const apiKey = config.morphApiKey || (typeof process !== "undefined" ? process.env?.MORPH_API_KEY : void 0);
325
325
  const apiUrl = config.morphApiUrl || DEFAULT_API_URL;
326
+ const useFast = config.fast ?? (typeof process !== "undefined" && process.env?.MORPH_FAST_APPLY === "true");
327
+ const model = useFast ? "morph-v3-fast" : "morph-v3-large";
326
328
  const timeout = config.timeout || DEFAULT_TIMEOUT;
327
329
  const debug = config.debug || false;
328
330
  if (!apiKey) {
@@ -346,8 +348,11 @@ async function callMorphAPI(originalCode, codeEdit, instructions, filepath, conf
346
348
  maxRetries: config.retryConfig?.maxRetries ?? 3,
347
349
  defaultHeaders: { "X-Morph-SDK-Version": SDK_VERSION }
348
350
  });
351
+ if (debug) {
352
+ console.log(`[FastApply] Using model: ${model}`);
353
+ }
349
354
  const completion = await client.chat.completions.create({
350
- model: "morph-v3-fast",
355
+ model,
351
356
  messages: [{ role: "user", content: message }]
352
357
  });
353
358
  const content = completion.choices[0]?.message?.content;
@@ -2557,7 +2562,8 @@ function parseFinishFiles(filesStr) {
2557
2562
  for (const line of filesStr.trim().split(/\s+/)) {
2558
2563
  const trimmed = line.trim();
2559
2564
  if (!trimmed) continue;
2560
- const colonIdx = trimmed.indexOf(":");
2565
+ const searchFrom = /^[A-Za-z]:/.test(trimmed) ? 2 : 0;
2566
+ const colonIdx = trimmed.indexOf(":", searchFrom);
2561
2567
  if (colonIdx === -1) {
2562
2568
  files.push({ path: trimmed, lines: "*" });
2563
2569
  continue;