@morphllm/morphsdk 0.2.167 → 0.2.169

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 (157) hide show
  1. package/dist/{chunk-M2ZRPA25.js → chunk-23TY43FN.js} +3 -3
  2. package/dist/{chunk-M2ZRPA25.js.map → chunk-23TY43FN.js.map} +1 -1
  3. package/dist/{chunk-4CWVFY37.js → chunk-3IJUN4VG.js} +2 -2
  4. package/dist/{chunk-RL6HPG6T.js → chunk-47LMC6YC.js} +3 -3
  5. package/dist/chunk-47LMC6YC.js.map +1 -0
  6. package/dist/{chunk-3OCIKAKR.js → chunk-4KR6B2Y5.js} +2 -2
  7. package/dist/{chunk-RUCLVREC.js → chunk-6JIO5UUE.js} +2 -2
  8. package/dist/{chunk-QXFRJWLJ.js → chunk-7USFVE5F.js} +2 -2
  9. package/dist/{chunk-52XNO42N.js → chunk-A4RMBNU5.js} +2 -2
  10. package/dist/{chunk-YGTXTR2R.js → chunk-CXHOWSY3.js} +2 -2
  11. package/dist/{chunk-7QM3IIMH.js → chunk-DTNHYYIG.js} +2 -2
  12. package/dist/{chunk-T3GWCA4E.js → chunk-E573FB56.js} +2 -2
  13. package/dist/{chunk-T3GWCA4E.js.map → chunk-E573FB56.js.map} +1 -1
  14. package/dist/{chunk-CYBUKNBA.js → chunk-GP5NFQNP.js} +2 -2
  15. package/dist/{chunk-E7VB5L7T.js → chunk-HCMTB3OS.js} +2 -2
  16. package/dist/{chunk-UIKUY4M2.js → chunk-IRL5UBOX.js} +2 -2
  17. package/dist/{chunk-3HM7DWTQ.js → chunk-JW3D44G5.js} +2 -2
  18. package/dist/{chunk-E5V6ELPJ.js → chunk-KDVYSIYB.js} +2 -2
  19. package/dist/{chunk-B4T3MEDZ.js → chunk-KQ362JQN.js} +2 -2
  20. package/dist/{chunk-XSNH2GO6.js → chunk-NIVPMEC5.js} +2 -2
  21. package/dist/{chunk-TJVPIGPU.js → chunk-NZFBFS6L.js} +2 -2
  22. package/dist/{chunk-7BJD3HWT.js → chunk-OODJBZYX.js} +2 -2
  23. package/dist/{chunk-KMSBCSLN.js → chunk-QZ2Q3T2H.js} +2 -2
  24. package/dist/{chunk-5ME65IIH.js → chunk-RCOKGLMG.js} +17 -17
  25. package/dist/{chunk-S5XMFILN.js → chunk-UW2V5ML4.js} +2 -2
  26. package/dist/{chunk-HTRWOV7V.js → chunk-WP6AJP4D.js} +2 -2
  27. package/dist/{chunk-LR4BVBWY.js → chunk-Y75D5SGD.js} +3 -3
  28. package/dist/{chunk-S35OWSO5.js → chunk-ZMZUMBCP.js} +2 -2
  29. package/dist/{chunk-S35OWSO5.js.map → chunk-ZMZUMBCP.js.map} +1 -1
  30. package/dist/client.cjs +4 -4
  31. package/dist/client.cjs.map +1 -1
  32. package/dist/client.js +22 -22
  33. package/dist/edge.cjs +2 -2
  34. package/dist/edge.cjs.map +1 -1
  35. package/dist/edge.js +4 -4
  36. package/dist/index.cjs +4 -4
  37. package/dist/index.cjs.map +1 -1
  38. package/dist/index.js +22 -22
  39. package/dist/modelrouter/core.cjs +1 -1
  40. package/dist/modelrouter/core.cjs.map +1 -1
  41. package/dist/modelrouter/core.js +3 -3
  42. package/dist/modelrouter/index.cjs +1 -1
  43. package/dist/modelrouter/index.cjs.map +1 -1
  44. package/dist/modelrouter/index.js +3 -3
  45. package/dist/subagents/anthropic.cjs +2 -2
  46. package/dist/subagents/anthropic.cjs.map +1 -1
  47. package/dist/subagents/anthropic.js +4 -4
  48. package/dist/subagents/vercel.cjs +2 -2
  49. package/dist/subagents/vercel.cjs.map +1 -1
  50. package/dist/subagents/vercel.js +4 -4
  51. package/dist/tools/browser/anthropic.cjs +1 -1
  52. package/dist/tools/browser/anthropic.cjs.map +1 -1
  53. package/dist/tools/browser/anthropic.js +5 -5
  54. package/dist/tools/browser/core.cjs +1 -1
  55. package/dist/tools/browser/core.cjs.map +1 -1
  56. package/dist/tools/browser/core.js +4 -4
  57. package/dist/tools/browser/index.cjs +1 -1
  58. package/dist/tools/browser/index.cjs.map +1 -1
  59. package/dist/tools/browser/index.js +7 -7
  60. package/dist/tools/browser/openai.cjs +1 -1
  61. package/dist/tools/browser/openai.cjs.map +1 -1
  62. package/dist/tools/browser/openai.js +5 -5
  63. package/dist/tools/browser/profiles/core.cjs +1 -1
  64. package/dist/tools/browser/profiles/core.cjs.map +1 -1
  65. package/dist/tools/browser/profiles/core.js +3 -3
  66. package/dist/tools/browser/profiles/index.cjs +1 -1
  67. package/dist/tools/browser/profiles/index.cjs.map +1 -1
  68. package/dist/tools/browser/profiles/index.js +3 -3
  69. package/dist/tools/browser/vercel.cjs +1 -1
  70. package/dist/tools/browser/vercel.cjs.map +1 -1
  71. package/dist/tools/browser/vercel.js +5 -5
  72. package/dist/tools/codebase_search/anthropic.cjs +1 -1
  73. package/dist/tools/codebase_search/anthropic.cjs.map +1 -1
  74. package/dist/tools/codebase_search/anthropic.js +4 -4
  75. package/dist/tools/codebase_search/core.cjs +1 -1
  76. package/dist/tools/codebase_search/core.cjs.map +1 -1
  77. package/dist/tools/codebase_search/core.js +3 -3
  78. package/dist/tools/codebase_search/index.cjs +1 -1
  79. package/dist/tools/codebase_search/index.cjs.map +1 -1
  80. package/dist/tools/codebase_search/index.js +6 -6
  81. package/dist/tools/codebase_search/openai.cjs +1 -1
  82. package/dist/tools/codebase_search/openai.cjs.map +1 -1
  83. package/dist/tools/codebase_search/openai.js +4 -4
  84. package/dist/tools/codebase_search/vercel.cjs +1 -1
  85. package/dist/tools/codebase_search/vercel.cjs.map +1 -1
  86. package/dist/tools/codebase_search/vercel.js +4 -4
  87. package/dist/tools/fastapply/anthropic.cjs +3 -3
  88. package/dist/tools/fastapply/anthropic.cjs.map +1 -1
  89. package/dist/tools/fastapply/anthropic.js +4 -4
  90. package/dist/tools/fastapply/apply.cjs +2 -2
  91. package/dist/tools/fastapply/apply.cjs.map +1 -1
  92. package/dist/tools/fastapply/apply.js +2 -2
  93. package/dist/tools/fastapply/core.cjs +3 -3
  94. package/dist/tools/fastapply/core.cjs.map +1 -1
  95. package/dist/tools/fastapply/core.js +3 -3
  96. package/dist/tools/fastapply/index.cjs +3 -3
  97. package/dist/tools/fastapply/index.cjs.map +1 -1
  98. package/dist/tools/fastapply/index.js +6 -6
  99. package/dist/tools/fastapply/openai.cjs +3 -3
  100. package/dist/tools/fastapply/openai.cjs.map +1 -1
  101. package/dist/tools/fastapply/openai.js +4 -4
  102. package/dist/tools/fastapply/vercel.cjs +3 -3
  103. package/dist/tools/fastapply/vercel.cjs.map +1 -1
  104. package/dist/tools/fastapply/vercel.js +4 -4
  105. package/dist/tools/index.cjs +3 -3
  106. package/dist/tools/index.cjs.map +1 -1
  107. package/dist/tools/index.js +6 -6
  108. package/dist/tools/utils/resilience.cjs +1 -1
  109. package/dist/tools/utils/resilience.cjs.map +1 -1
  110. package/dist/tools/utils/resilience.js +2 -2
  111. package/dist/tools/warp_grep/agent/runner.cjs +2 -2
  112. package/dist/tools/warp_grep/agent/runner.cjs.map +1 -1
  113. package/dist/tools/warp_grep/agent/runner.js +2 -2
  114. package/dist/tools/warp_grep/anthropic.cjs +2 -2
  115. package/dist/tools/warp_grep/anthropic.cjs.map +1 -1
  116. package/dist/tools/warp_grep/anthropic.js +4 -4
  117. package/dist/tools/warp_grep/client.cjs +2 -2
  118. package/dist/tools/warp_grep/client.cjs.map +1 -1
  119. package/dist/tools/warp_grep/client.js +3 -3
  120. package/dist/tools/warp_grep/gemini.cjs +2 -2
  121. package/dist/tools/warp_grep/gemini.cjs.map +1 -1
  122. package/dist/tools/warp_grep/gemini.js +3 -3
  123. package/dist/tools/warp_grep/index.cjs +2 -2
  124. package/dist/tools/warp_grep/index.cjs.map +1 -1
  125. package/dist/tools/warp_grep/index.js +3 -3
  126. package/dist/tools/warp_grep/openai.cjs +2 -2
  127. package/dist/tools/warp_grep/openai.cjs.map +1 -1
  128. package/dist/tools/warp_grep/openai.js +4 -4
  129. package/dist/tools/warp_grep/vercel.cjs +2 -2
  130. package/dist/tools/warp_grep/vercel.cjs.map +1 -1
  131. package/dist/tools/warp_grep/vercel.js +4 -4
  132. package/dist/version.cjs +1 -1
  133. package/dist/version.cjs.map +1 -1
  134. package/dist/version.js +1 -1
  135. package/package.json +1 -1
  136. package/dist/chunk-RL6HPG6T.js.map +0 -1
  137. /package/dist/{chunk-4CWVFY37.js.map → chunk-3IJUN4VG.js.map} +0 -0
  138. /package/dist/{chunk-3OCIKAKR.js.map → chunk-4KR6B2Y5.js.map} +0 -0
  139. /package/dist/{chunk-RUCLVREC.js.map → chunk-6JIO5UUE.js.map} +0 -0
  140. /package/dist/{chunk-QXFRJWLJ.js.map → chunk-7USFVE5F.js.map} +0 -0
  141. /package/dist/{chunk-52XNO42N.js.map → chunk-A4RMBNU5.js.map} +0 -0
  142. /package/dist/{chunk-YGTXTR2R.js.map → chunk-CXHOWSY3.js.map} +0 -0
  143. /package/dist/{chunk-7QM3IIMH.js.map → chunk-DTNHYYIG.js.map} +0 -0
  144. /package/dist/{chunk-CYBUKNBA.js.map → chunk-GP5NFQNP.js.map} +0 -0
  145. /package/dist/{chunk-E7VB5L7T.js.map → chunk-HCMTB3OS.js.map} +0 -0
  146. /package/dist/{chunk-UIKUY4M2.js.map → chunk-IRL5UBOX.js.map} +0 -0
  147. /package/dist/{chunk-3HM7DWTQ.js.map → chunk-JW3D44G5.js.map} +0 -0
  148. /package/dist/{chunk-E5V6ELPJ.js.map → chunk-KDVYSIYB.js.map} +0 -0
  149. /package/dist/{chunk-B4T3MEDZ.js.map → chunk-KQ362JQN.js.map} +0 -0
  150. /package/dist/{chunk-XSNH2GO6.js.map → chunk-NIVPMEC5.js.map} +0 -0
  151. /package/dist/{chunk-TJVPIGPU.js.map → chunk-NZFBFS6L.js.map} +0 -0
  152. /package/dist/{chunk-7BJD3HWT.js.map → chunk-OODJBZYX.js.map} +0 -0
  153. /package/dist/{chunk-KMSBCSLN.js.map → chunk-QZ2Q3T2H.js.map} +0 -0
  154. /package/dist/{chunk-5ME65IIH.js.map → chunk-RCOKGLMG.js.map} +0 -0
  155. /package/dist/{chunk-S5XMFILN.js.map → chunk-UW2V5ML4.js.map} +0 -0
  156. /package/dist/{chunk-HTRWOV7V.js.map → chunk-WP6AJP4D.js.map} +0 -0
  157. /package/dist/{chunk-LR4BVBWY.js.map → chunk-Y75D5SGD.js.map} +0 -0
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  fetchWithRetry,
3
3
  withTimeout
4
- } from "./chunk-E7VB5L7T.js";
4
+ } from "./chunk-HCMTB3OS.js";
5
5
  import {
6
6
  logger
7
7
  } from "./chunk-F3NCFNUX.js";
@@ -194,4 +194,4 @@ export {
194
194
  GeminiRouter,
195
195
  RawRouter
196
196
  };
197
- //# sourceMappingURL=chunk-S5XMFILN.js.map
197
+ //# sourceMappingURL=chunk-UW2V5ML4.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-2HMEZZKK.js";
4
4
  import {
5
5
  executeBrowserTask
6
- } from "./chunk-LR4BVBWY.js";
6
+ } from "./chunk-Y75D5SGD.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-HTRWOV7V.js.map
57
+ //# sourceMappingURL=chunk-WP6AJP4D.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  ProfilesClient
3
- } from "./chunk-7BJD3HWT.js";
3
+ } from "./chunk-OODJBZYX.js";
4
4
  import {
5
5
  buildEmbedCode,
6
6
  buildLiveIframe,
@@ -10,7 +10,7 @@ import {
10
10
  import {
11
11
  fetchWithRetry,
12
12
  withTimeout
13
- } from "./chunk-E7VB5L7T.js";
13
+ } from "./chunk-HCMTB3OS.js";
14
14
  import {
15
15
  logger
16
16
  } from "./chunk-F3NCFNUX.js";
@@ -600,4 +600,4 @@ export {
600
600
  getWebp,
601
601
  checkHealth
602
602
  };
603
- //# sourceMappingURL=chunk-LR4BVBWY.js.map
603
+ //# sourceMappingURL=chunk-Y75D5SGD.js.map
@@ -9,7 +9,7 @@ var DEFAULT_CONFIG = {
9
9
  baseDir: process.cwd(),
10
10
  generateUdiff: true,
11
11
  autoWrite: true,
12
- timeout: 3e4,
12
+ timeout: 9e4,
13
13
  debug: false
14
14
  };
15
15
  var FastApplyClient = class {
@@ -124,4 +124,4 @@ export {
124
124
  FastApplyClient,
125
125
  executeEditFile
126
126
  };
127
- //# sourceMappingURL=chunk-S35OWSO5.js.map
127
+ //# sourceMappingURL=chunk-ZMZUMBCP.js.map
@@ -1 +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';\nimport { logger } from '../../logger.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' | 'large'>> = {\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\n logger.debug('FastApply', 'execute_start', { target_filepath: input.target_filepath, baseDir, autoWrite: config.autoWrite !== false });\n\n // Security: ensure file is within baseDir\n const relativePath = relative(baseDir, fullPath);\n if (relativePath.startsWith('..') || fullPath === baseDir) {\n logger.warn('FastApply', 'security_check_failed', { target_filepath: input.target_filepath, relative: relativePath });\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 logger.debug('FastApply', 'security_check', { resolved: fullPath, relative: relativePath });\n\n try {\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 let fileExists = true;\n try {\n originalCode = await readFile(fullPath, 'utf-8');\n logger.debug('FastApply', 'file_read', { path: fullPath, exists: true, size_bytes: originalCode.length });\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 fileExists = false;\n logger.debug('FastApply', 'file_read', { path: fullPath, exists: false });\n }\n\n const instruction = input.instruction ?? input.instructions ?? '';\n logger.debug('FastApply', 'api_call', { instruction_len: instruction.length, code_edit_len: input.code_edit.length, original_len: originalCode.length });\n\n const { content: mergedCode, completionId } = await callMorphAPI(originalCode, input.code_edit, instruction, input.target_filepath, config);\n\n logger.debug('FastApply', 'api_response', { completion_id: completionId, merged_len: mergedCode.length });\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 logger.debug('FastApply', 'file_write', { path: fullPath, size_bytes: mergedCode.length });\n }\n\n const changes = countChanges(originalCode, mergedCode);\n logger.debug('FastApply', 'changes', { added: changes.linesAdded, removed: changes.linesRemoved, modified: changes.linesModified });\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 logger.error('FastApply', 'execute_error', { error: errorMessage, target_filepath: input.target_filepath, stack: error instanceof Error ? error.stack : undefined });\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":";;;;;AAOA,SAAS,MAAM,SAAS,gBAAgB;AAWxC,IAAM,iBAA2H;AAAA,EAC/H,aAAa;AAAA,EACb,SAAS,QAAQ,IAAI;AAAA,EACrB,eAAe;AAAA,EACf,WAAW;AAAA,EACX,SAAS;AAAA,EACT,OAAO;AACT;AAMO,IAAM,kBAAN,MAAsB;AAAA,EACnB;AAAA,EAER,YAAY,SAAoF,CAAC,GAAG;AAClG,SAAK,SAAS;AAAA,MACZ,aAAa,OAAO;AAAA,MACpB,aAAa,eAAe;AAAA,MAC5B,OAAO,OAAO;AAAA,MACd,SAAS,OAAO,WAAW,eAAe;AAAA,MAC1C,aAAa,OAAO;AAAA,MACpB,eAAe,eAAe;AAAA,MAC9B,WAAW,eAAe;AAAA,IAC5B;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,QAAQ,OAAsB,WAA8D;AAChG,WAAO,gBAAgB,OAAO,EAAE,GAAG,KAAK,QAAQ,GAAG,UAAU,CAAC;AAAA,EAChE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsBA,MAAM,UAAU,OAA4C,WAA0G;AACpK,UAAM,EAAE,WAAAA,WAAU,IAAI,MAAM,OAAO,4BAAY;AAC/C,WAAOA,WAAU,OAAO,EAAE,GAAG,KAAK,QAAQ,GAAG,UAAU,CAAC;AAAA,EAC1D;AACF;AAMA,eAAsB,gBACpB,OACA,SAAyB,CAAC,GACD;AACzB,QAAM,UAAU,OAAO,WAAW,eAAe;AACjD,QAAM,WAAW,QAAQ,KAAK,SAAS,MAAM,eAAe,CAAC;AAE7D,SAAO,MAAM,aAAa,iBAAiB,EAAE,iBAAiB,MAAM,iBAAiB,SAAS,WAAW,OAAO,cAAc,MAAM,CAAC;AAGrI,QAAM,eAAe,SAAS,SAAS,QAAQ;AAC/C,MAAI,aAAa,WAAW,IAAI,KAAK,aAAa,SAAS;AACzD,WAAO,KAAK,aAAa,yBAAyB,EAAE,iBAAiB,MAAM,iBAAiB,UAAU,aAAa,CAAC;AACpH,WAAO;AAAA,MACL,SAAS;AAAA,MACT,UAAU,MAAM;AAAA,MAChB,SAAS,EAAE,YAAY,GAAG,cAAc,GAAG,eAAe,EAAE;AAAA,MAC5D,OAAO,sBAAsB,MAAM,eAAe;AAAA,IACpD;AAAA,EACF;AAEA,SAAO,MAAM,aAAa,kBAAkB,EAAE,UAAU,UAAU,UAAU,aAAa,CAAC;AAE1F,MAAI;AAEF,UAAM,EAAE,UAAU,UAAU,IAAI,MAAM,OAAO,aAAa;AAC1D,UAAM,EAAE,cAAAC,eAAc,eAAAC,gBAAe,cAAAC,cAAa,IAAI,MAAM,OAAO,4BAAY;AAG/E,QAAI,eAAe;AACnB,QAAI,aAAa;AACjB,QAAI;AACF,qBAAe,MAAM,SAAS,UAAU,OAAO;AAC/C,aAAO,MAAM,aAAa,aAAa,EAAE,MAAM,UAAU,QAAQ,MAAM,YAAY,aAAa,OAAO,CAAC;AAAA,IAC1G,SAAS,OAAY;AACnB,UAAI,MAAM,SAAS,UAAU;AAC3B,cAAM;AAAA,MACR;AACA,mBAAa;AACb,aAAO,MAAM,aAAa,aAAa,EAAE,MAAM,UAAU,QAAQ,MAAM,CAAC;AAAA,IAC1E;AAEA,UAAM,cAAc,MAAM,eAAe,MAAM,gBAAgB;AAC/D,WAAO,MAAM,aAAa,YAAY,EAAE,iBAAiB,YAAY,QAAQ,eAAe,MAAM,UAAU,QAAQ,cAAc,aAAa,OAAO,CAAC;AAEvJ,UAAM,EAAE,SAAS,YAAY,aAAa,IAAI,MAAMF,cAAa,cAAc,MAAM,WAAW,aAAa,MAAM,iBAAiB,MAAM;AAE1I,WAAO,MAAM,aAAa,gBAAgB,EAAE,eAAe,cAAc,YAAY,WAAW,OAAO,CAAC;AAExG,UAAM,QAAQ,OAAO,kBAAkB,QAAQC,eAAc,cAAc,YAAY,MAAM,eAAe,IAAI;AAEhH,QAAI,OAAO,cAAc,OAAO;AAC9B,YAAM,UAAU,UAAU,YAAY,OAAO;AAC7C,aAAO,MAAM,aAAa,cAAc,EAAE,MAAM,UAAU,YAAY,WAAW,OAAO,CAAC;AAAA,IAC3F;AAEA,UAAM,UAAUC,cAAa,cAAc,UAAU;AACrD,WAAO,MAAM,aAAa,WAAW,EAAE,OAAO,QAAQ,YAAY,SAAS,QAAQ,cAAc,UAAU,QAAQ,cAAc,CAAC;AAElI,WAAO;AAAA,MACL,SAAS;AAAA,MACT,UAAU,MAAM;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF,SAAS,OAAO;AACd,UAAM,eAAe,iBAAiB,QAAQ,MAAM,UAAU;AAC9D,WAAO,MAAM,aAAa,iBAAiB,EAAE,OAAO,cAAc,iBAAiB,MAAM,iBAAiB,OAAO,iBAAiB,QAAQ,MAAM,QAAQ,OAAU,CAAC;AAEnK,WAAO;AAAA,MACL,SAAS;AAAA,MACT,UAAU,MAAM;AAAA,MAChB,SAAS,EAAE,YAAY,GAAG,cAAc,GAAG,eAAe,EAAE;AAAA,MAC5D,OAAO;AAAA,IACT;AAAA,EACF;AACF;","names":["applyEdit","callMorphAPI","generateUdiff","countChanges"]}
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';\nimport { logger } from '../../logger.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' | 'large'>> = {\n morphApiUrl: 'https://api.morphllm.com',\n baseDir: process.cwd(),\n generateUdiff: true,\n autoWrite: true,\n timeout: 90000,\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\n logger.debug('FastApply', 'execute_start', { target_filepath: input.target_filepath, baseDir, autoWrite: config.autoWrite !== false });\n\n // Security: ensure file is within baseDir\n const relativePath = relative(baseDir, fullPath);\n if (relativePath.startsWith('..') || fullPath === baseDir) {\n logger.warn('FastApply', 'security_check_failed', { target_filepath: input.target_filepath, relative: relativePath });\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 logger.debug('FastApply', 'security_check', { resolved: fullPath, relative: relativePath });\n\n try {\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 let fileExists = true;\n try {\n originalCode = await readFile(fullPath, 'utf-8');\n logger.debug('FastApply', 'file_read', { path: fullPath, exists: true, size_bytes: originalCode.length });\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 fileExists = false;\n logger.debug('FastApply', 'file_read', { path: fullPath, exists: false });\n }\n\n const instruction = input.instruction ?? input.instructions ?? '';\n logger.debug('FastApply', 'api_call', { instruction_len: instruction.length, code_edit_len: input.code_edit.length, original_len: originalCode.length });\n\n const { content: mergedCode, completionId } = await callMorphAPI(originalCode, input.code_edit, instruction, input.target_filepath, config);\n\n logger.debug('FastApply', 'api_response', { completion_id: completionId, merged_len: mergedCode.length });\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 logger.debug('FastApply', 'file_write', { path: fullPath, size_bytes: mergedCode.length });\n }\n\n const changes = countChanges(originalCode, mergedCode);\n logger.debug('FastApply', 'changes', { added: changes.linesAdded, removed: changes.linesRemoved, modified: changes.linesModified });\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 logger.error('FastApply', 'execute_error', { error: errorMessage, target_filepath: input.target_filepath, stack: error instanceof Error ? error.stack : undefined });\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
@@ -89,7 +89,7 @@ var init_package = __esm({
89
89
  "package.json"() {
90
90
  package_default = {
91
91
  name: "@morphllm/morphsdk",
92
- version: "0.2.167",
92
+ version: "0.2.169",
93
93
  description: "TypeScript SDK and CLI for Morph Fast Apply integration",
94
94
  type: "module",
95
95
  main: "./dist/index.cjs",
@@ -472,7 +472,7 @@ var init_apply = __esm({
472
472
  init_version();
473
473
  init_logger();
474
474
  DEFAULT_API_URL = "https://api.morphllm.com";
475
- DEFAULT_TIMEOUT = 3e4;
475
+ DEFAULT_TIMEOUT = 9e4;
476
476
  }
477
477
  });
478
478
 
@@ -1080,7 +1080,7 @@ var DEFAULT_CONFIG = {
1080
1080
  baseDir: process.cwd(),
1081
1081
  generateUdiff: true,
1082
1082
  autoWrite: true,
1083
- timeout: 3e4,
1083
+ timeout: 9e4,
1084
1084
  debug: false
1085
1085
  };
1086
1086
  var FastApplyClient = class {
@@ -3023,7 +3023,7 @@ async function callModel(messages, model, options = {}) {
3023
3023
  const client = new import_openai2.default({
3024
3024
  apiKey,
3025
3025
  baseURL,
3026
- maxRetries: options.retryConfig?.maxRetries,
3026
+ maxRetries: 0,
3027
3027
  timeout: timeoutMs,
3028
3028
  defaultHeaders: { "X-Morph-SDK-Version": SDK_VERSION }
3029
3029
  });