@morphllm/morphsdk 0.2.161 → 0.2.163

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 (174) hide show
  1. package/dist/{chunk-JIPYZNK3.js → chunk-2KDJKRZG.js} +2 -2
  2. package/dist/chunk-5AM23TC7.js +42 -0
  3. package/dist/chunk-5AM23TC7.js.map +1 -0
  4. package/dist/{chunk-PQXJ32G4.js → chunk-5BMWOPYW.js} +2 -2
  5. package/dist/{chunk-F2SBKBBS.js → chunk-5FYJMU6H.js} +2 -2
  6. package/dist/{chunk-KP3CAEH5.js → chunk-6PFGM4CM.js} +2 -2
  7. package/dist/{chunk-5R3QCYHW.js → chunk-6YOSNPHS.js} +2 -2
  8. package/dist/{chunk-G3E75GPM.js → chunk-6YTCBLRI.js} +2 -2
  9. package/dist/{chunk-2CE4PG2F.js → chunk-COUYHTIO.js} +2 -2
  10. package/dist/{chunk-KCJRKSMG.js → chunk-CUMC7Z5R.js} +11 -26
  11. package/dist/chunk-CUMC7Z5R.js.map +1 -0
  12. package/dist/{chunk-HDZ4XYUX.js → chunk-EJBWDGTH.js} +2 -2
  13. package/dist/{chunk-DKQMGEHV.js → chunk-FNCPPCPV.js} +2 -2
  14. package/dist/{chunk-IHSLH64T.js → chunk-FQXUOZBX.js} +9 -12
  15. package/dist/chunk-FQXUOZBX.js.map +1 -0
  16. package/dist/{chunk-27VVVW57.js → chunk-HBH56DLN.js} +2 -2
  17. package/dist/{chunk-5GVI7L4O.js → chunk-HFN3YCF4.js} +2 -2
  18. package/dist/{chunk-QQBEGCX2.js → chunk-HMGC7FLZ.js} +2 -2
  19. package/dist/{chunk-KF2AYKGJ.js → chunk-KHR4CZMX.js} +24 -17
  20. package/dist/{chunk-KF2AYKGJ.js.map → chunk-KHR4CZMX.js.map} +1 -1
  21. package/dist/{chunk-LGF2WTXG.js → chunk-LSHQISAX.js} +9 -2
  22. package/dist/chunk-LSHQISAX.js.map +1 -0
  23. package/dist/{chunk-L6WYOSFK.js → chunk-LST7MZOZ.js} +7 -2
  24. package/dist/chunk-LST7MZOZ.js.map +1 -0
  25. package/dist/{chunk-63JAZOI3.js → chunk-LW5EAPZ6.js} +2 -2
  26. package/dist/{chunk-N4EFVT45.js → chunk-NNATBEOF.js} +2 -2
  27. package/dist/{chunk-RZS5DQAX.js → chunk-OKFW4KGU.js} +2 -2
  28. package/dist/{chunk-QR34LBOS.js → chunk-QXGOEDZD.js} +2 -2
  29. package/dist/{chunk-442YHCTX.js → chunk-SELI567A.js} +12 -21
  30. package/dist/chunk-SELI567A.js.map +1 -0
  31. package/dist/{chunk-VM4TVOBU.js → chunk-VMNEYCFP.js} +17 -6
  32. package/dist/chunk-VMNEYCFP.js.map +1 -0
  33. package/dist/{chunk-NBGHPRU6.js → chunk-WM6SBI4B.js} +37 -29
  34. package/dist/chunk-WM6SBI4B.js.map +1 -0
  35. package/dist/{chunk-CMRUAJYD.js → chunk-ZMCDGAGF.js} +33 -6
  36. package/dist/chunk-ZMCDGAGF.js.map +1 -0
  37. package/dist/client.cjs +186 -117
  38. package/dist/client.cjs.map +1 -1
  39. package/dist/client.d.ts +1 -1
  40. package/dist/client.js +23 -22
  41. package/dist/edge.cjs +84 -52
  42. package/dist/edge.cjs.map +1 -1
  43. package/dist/edge.js +5 -4
  44. package/dist/index.cjs +188 -117
  45. package/dist/index.cjs.map +1 -1
  46. package/dist/index.d.ts +1 -1
  47. package/dist/index.js +23 -22
  48. package/dist/modelrouter/core.cjs +50 -25
  49. package/dist/modelrouter/core.cjs.map +1 -1
  50. package/dist/modelrouter/core.js +4 -3
  51. package/dist/modelrouter/index.cjs +50 -25
  52. package/dist/modelrouter/index.cjs.map +1 -1
  53. package/dist/modelrouter/index.js +4 -3
  54. package/dist/subagents/anthropic.cjs +85 -12
  55. package/dist/subagents/anthropic.cjs.map +1 -1
  56. package/dist/subagents/anthropic.js +5 -4
  57. package/dist/subagents/vercel.cjs +85 -12
  58. package/dist/subagents/vercel.cjs.map +1 -1
  59. package/dist/subagents/vercel.js +5 -4
  60. package/dist/tools/browser/anthropic.cjs +47 -9
  61. package/dist/tools/browser/anthropic.cjs.map +1 -1
  62. package/dist/tools/browser/anthropic.js +6 -5
  63. package/dist/tools/browser/core.cjs +50 -19
  64. package/dist/tools/browser/core.cjs.map +1 -1
  65. package/dist/tools/browser/core.js +5 -4
  66. package/dist/tools/browser/index.cjs +50 -19
  67. package/dist/tools/browser/index.cjs.map +1 -1
  68. package/dist/tools/browser/index.js +8 -7
  69. package/dist/tools/browser/index.js.map +1 -1
  70. package/dist/tools/browser/openai.cjs +47 -9
  71. package/dist/tools/browser/openai.cjs.map +1 -1
  72. package/dist/tools/browser/openai.js +6 -5
  73. package/dist/tools/browser/profiles/core.cjs +6 -1
  74. package/dist/tools/browser/profiles/core.cjs.map +1 -1
  75. package/dist/tools/browser/profiles/core.js +3 -3
  76. package/dist/tools/browser/profiles/index.cjs +6 -1
  77. package/dist/tools/browser/profiles/index.cjs.map +1 -1
  78. package/dist/tools/browser/profiles/index.js +3 -3
  79. package/dist/tools/browser/vercel.cjs +47 -9
  80. package/dist/tools/browser/vercel.cjs.map +1 -1
  81. package/dist/tools/browser/vercel.js +6 -5
  82. package/dist/tools/codebase_search/anthropic.cjs +48 -11
  83. package/dist/tools/codebase_search/anthropic.cjs.map +1 -1
  84. package/dist/tools/codebase_search/anthropic.js +5 -4
  85. package/dist/tools/codebase_search/core.cjs +48 -11
  86. package/dist/tools/codebase_search/core.cjs.map +1 -1
  87. package/dist/tools/codebase_search/core.js +4 -3
  88. package/dist/tools/codebase_search/index.cjs +48 -11
  89. package/dist/tools/codebase_search/index.cjs.map +1 -1
  90. package/dist/tools/codebase_search/index.js +7 -6
  91. package/dist/tools/codebase_search/openai.cjs +48 -11
  92. package/dist/tools/codebase_search/openai.cjs.map +1 -1
  93. package/dist/tools/codebase_search/openai.js +5 -4
  94. package/dist/tools/codebase_search/vercel.cjs +48 -11
  95. package/dist/tools/codebase_search/vercel.cjs.map +1 -1
  96. package/dist/tools/codebase_search/vercel.js +5 -4
  97. package/dist/tools/fastapply/anthropic.cjs +96 -33
  98. package/dist/tools/fastapply/anthropic.cjs.map +1 -1
  99. package/dist/tools/fastapply/anthropic.js +5 -4
  100. package/dist/tools/fastapply/apply.cjs +76 -28
  101. package/dist/tools/fastapply/apply.cjs.map +1 -1
  102. package/dist/tools/fastapply/apply.js +3 -2
  103. package/dist/tools/fastapply/core.cjs +96 -33
  104. package/dist/tools/fastapply/core.cjs.map +1 -1
  105. package/dist/tools/fastapply/core.js +4 -3
  106. package/dist/tools/fastapply/index.cjs +96 -33
  107. package/dist/tools/fastapply/index.cjs.map +1 -1
  108. package/dist/tools/fastapply/index.js +7 -6
  109. package/dist/tools/fastapply/openai.cjs +96 -33
  110. package/dist/tools/fastapply/openai.cjs.map +1 -1
  111. package/dist/tools/fastapply/openai.js +5 -4
  112. package/dist/tools/fastapply/types.cjs.map +1 -1
  113. package/dist/tools/fastapply/types.d.ts +4 -4
  114. package/dist/tools/fastapply/vercel.cjs +96 -33
  115. package/dist/tools/fastapply/vercel.cjs.map +1 -1
  116. package/dist/tools/fastapply/vercel.js +5 -4
  117. package/dist/tools/index.cjs +96 -33
  118. package/dist/tools/index.cjs.map +1 -1
  119. package/dist/tools/index.js +7 -6
  120. package/dist/tools/utils/resilience.cjs +6 -1
  121. package/dist/tools/utils/resilience.cjs.map +1 -1
  122. package/dist/tools/utils/resilience.js +2 -2
  123. package/dist/tools/warp_grep/agent/runner.cjs +74 -5
  124. package/dist/tools/warp_grep/agent/runner.cjs.map +1 -1
  125. package/dist/tools/warp_grep/agent/runner.js +3 -2
  126. package/dist/tools/warp_grep/anthropic.cjs +85 -12
  127. package/dist/tools/warp_grep/anthropic.cjs.map +1 -1
  128. package/dist/tools/warp_grep/anthropic.js +5 -4
  129. package/dist/tools/warp_grep/client.cjs +85 -12
  130. package/dist/tools/warp_grep/client.cjs.map +1 -1
  131. package/dist/tools/warp_grep/client.js +4 -3
  132. package/dist/tools/warp_grep/gemini.cjs +85 -12
  133. package/dist/tools/warp_grep/gemini.cjs.map +1 -1
  134. package/dist/tools/warp_grep/gemini.js +4 -3
  135. package/dist/tools/warp_grep/gemini.js.map +1 -1
  136. package/dist/tools/warp_grep/index.cjs +85 -12
  137. package/dist/tools/warp_grep/index.cjs.map +1 -1
  138. package/dist/tools/warp_grep/index.js +4 -3
  139. package/dist/tools/warp_grep/openai.cjs +85 -12
  140. package/dist/tools/warp_grep/openai.cjs.map +1 -1
  141. package/dist/tools/warp_grep/openai.js +5 -4
  142. package/dist/tools/warp_grep/vercel.cjs +85 -12
  143. package/dist/tools/warp_grep/vercel.cjs.map +1 -1
  144. package/dist/tools/warp_grep/vercel.d.ts +1 -1
  145. package/dist/tools/warp_grep/vercel.js +5 -4
  146. package/dist/version.cjs +6 -1
  147. package/dist/version.cjs.map +1 -1
  148. package/dist/version.js +1 -1
  149. package/package.json +6 -1
  150. package/dist/chunk-442YHCTX.js.map +0 -1
  151. package/dist/chunk-CMRUAJYD.js.map +0 -1
  152. package/dist/chunk-IHSLH64T.js.map +0 -1
  153. package/dist/chunk-KCJRKSMG.js.map +0 -1
  154. package/dist/chunk-L6WYOSFK.js.map +0 -1
  155. package/dist/chunk-LGF2WTXG.js.map +0 -1
  156. package/dist/chunk-NBGHPRU6.js.map +0 -1
  157. package/dist/chunk-VM4TVOBU.js.map +0 -1
  158. package/dist/{chunk-JIPYZNK3.js.map → chunk-2KDJKRZG.js.map} +0 -0
  159. package/dist/{chunk-PQXJ32G4.js.map → chunk-5BMWOPYW.js.map} +0 -0
  160. package/dist/{chunk-F2SBKBBS.js.map → chunk-5FYJMU6H.js.map} +0 -0
  161. package/dist/{chunk-KP3CAEH5.js.map → chunk-6PFGM4CM.js.map} +0 -0
  162. package/dist/{chunk-5R3QCYHW.js.map → chunk-6YOSNPHS.js.map} +0 -0
  163. package/dist/{chunk-G3E75GPM.js.map → chunk-6YTCBLRI.js.map} +0 -0
  164. package/dist/{chunk-2CE4PG2F.js.map → chunk-COUYHTIO.js.map} +0 -0
  165. package/dist/{chunk-HDZ4XYUX.js.map → chunk-EJBWDGTH.js.map} +0 -0
  166. package/dist/{chunk-DKQMGEHV.js.map → chunk-FNCPPCPV.js.map} +0 -0
  167. package/dist/{chunk-27VVVW57.js.map → chunk-HBH56DLN.js.map} +0 -0
  168. package/dist/{chunk-5GVI7L4O.js.map → chunk-HFN3YCF4.js.map} +0 -0
  169. package/dist/{chunk-QQBEGCX2.js.map → chunk-HMGC7FLZ.js.map} +0 -0
  170. package/dist/{chunk-63JAZOI3.js.map → chunk-LW5EAPZ6.js.map} +0 -0
  171. package/dist/{chunk-N4EFVT45.js.map → chunk-NNATBEOF.js.map} +0 -0
  172. package/dist/{chunk-RZS5DQAX.js.map → chunk-OKFW4KGU.js.map} +0 -0
  173. package/dist/{chunk-QR34LBOS.js.map → chunk-QXGOEDZD.js.map} +0 -0
  174. package/dist/{client-PkB7g9SA.d.ts → client-DsAAqupx.d.ts} +1 -1
@@ -7,13 +7,14 @@ import {
7
7
  getRecording,
8
8
  getWebp,
9
9
  waitForRecording
10
- } from "../../chunk-442YHCTX.js";
11
- import "../../chunk-QR34LBOS.js";
10
+ } from "../../chunk-SELI567A.js";
11
+ import "../../chunk-QXGOEDZD.js";
12
12
  import "../../chunk-2AMEQAO2.js";
13
13
  import "../../chunk-2VERUKO2.js";
14
14
  import "../../chunk-YTYCHRQ2.js";
15
- import "../../chunk-DKQMGEHV.js";
16
- import "../../chunk-L6WYOSFK.js";
15
+ import "../../chunk-FNCPPCPV.js";
16
+ import "../../chunk-5AM23TC7.js";
17
+ import "../../chunk-LST7MZOZ.js";
17
18
  import "../../chunk-PZ5AY32C.js";
18
19
  export {
19
20
  BrowserClient,
@@ -53,7 +53,7 @@ module.exports = __toCommonJS(browser_exports);
53
53
  // package.json
54
54
  var package_default = {
55
55
  name: "@morphllm/morphsdk",
56
- version: "0.2.161",
56
+ version: "0.2.163",
57
57
  description: "TypeScript SDK and CLI for Morph Fast Apply integration",
58
58
  type: "module",
59
59
  main: "./dist/index.cjs",
@@ -65,6 +65,11 @@ var package_default = {
65
65
  import: "./dist/index.js",
66
66
  require: "./dist/index.cjs"
67
67
  },
68
+ "./logger": {
69
+ types: "./dist/logger.d.ts",
70
+ import: "./dist/logger.js",
71
+ require: "./dist/logger.cjs"
72
+ },
68
73
  "./edge": {
69
74
  types: "./dist/edge.d.ts",
70
75
  import: "./dist/edge.js",
@@ -366,6 +371,44 @@ function sleep(ms) {
366
371
  return new Promise((resolve) => setTimeout(resolve, ms));
367
372
  }
368
373
 
374
+ // logger.ts
375
+ var import_fs = require("fs");
376
+ var MorphLogger = class {
377
+ enabled;
378
+ fileStream;
379
+ constructor() {
380
+ this.enabled = process.env.MORPH_DEBUG === "1" || !!process.env.MORPH_LOG_FILE;
381
+ const f = process.env.MORPH_LOG_FILE;
382
+ this.fileStream = f ? (0, import_fs.createWriteStream)(f, { flags: "a" }) : null;
383
+ }
384
+ debug(component, msg, data) {
385
+ this._log("debug", component, msg, data);
386
+ }
387
+ info(component, msg, data) {
388
+ this._log("info", component, msg, data);
389
+ }
390
+ warn(component, msg, data) {
391
+ this._log("warn", component, msg, data);
392
+ }
393
+ error(component, msg, data) {
394
+ this._log("error", component, msg, data);
395
+ }
396
+ enable() {
397
+ this.enabled = true;
398
+ }
399
+ get isEnabled() {
400
+ return this.enabled;
401
+ }
402
+ _log(level, component, msg, data) {
403
+ if (level !== "error" && !this.enabled) return;
404
+ const ts = (/* @__PURE__ */ new Date()).toISOString();
405
+ const prefix = `[${ts}] [${level.toUpperCase()}] [${component}]`;
406
+ console.error(data ? `${prefix} ${msg} ${JSON.stringify(data)}` : `${prefix} ${msg}`);
407
+ this.fileStream?.write(JSON.stringify({ ts, level, component, msg, ...data && { data } }) + "\n");
408
+ }
409
+ };
410
+ var logger = new MorphLogger();
411
+
369
412
  // tools/browser/live.ts
370
413
  var LIVE_PRESETS = {
371
414
  /** Read-only monitoring (no interaction) */
@@ -1062,11 +1105,7 @@ var BrowserClient = class {
1062
1105
  if (!hasTask && !hasDiff) {
1063
1106
  throw new Error('Browser task requires either "task" (natural language) or "diff" (PR-review planning)');
1064
1107
  }
1065
- if (debug) {
1066
- const preview = (input.task ?? "").slice(0, 60);
1067
- console.log(`[Browser] createTask: "${preview}..." url=${input.url || "none"}`);
1068
- console.log(`[Browser] Calling async endpoint: ${apiUrl}/browser-task/async`);
1069
- }
1108
+ logger.debug("Browser", "create_task", { task: (input.task ?? "").slice(0, 100), url: input.url, endpoint: `${apiUrl}/browser-task/async` });
1070
1109
  const headers = { "Content-Type": "application/json" };
1071
1110
  if (this.config.apiKey) headers["Authorization"] = `Bearer ${this.config.apiKey}`;
1072
1111
  const response = await fetch(`${apiUrl}/browser-task/async`, {
@@ -1096,14 +1135,11 @@ var BrowserClient = class {
1096
1135
  });
1097
1136
  if (!response.ok) {
1098
1137
  const errorText = await response.text().catch(() => response.statusText);
1099
- if (debug) console.error(`[Browser] Error: ${response.status} - ${errorText}`);
1138
+ logger.error("Browser", "create_task_error", { status: response.status, error: errorText });
1100
1139
  throw new Error(`HTTP ${response.status}: ${errorText}`);
1101
1140
  }
1102
1141
  const result = mapTaskResult(await response.json());
1103
- if (debug) {
1104
- const debugUrl = result.debugUrl;
1105
- console.log(`[Browser] \u2705 Task created: recordingId=${result.recordingId ?? "none"} debugUrl=${debugUrl ? "available" : "none"}`);
1106
- }
1142
+ logger.debug("Browser", "task_created", { recording_id: result.recordingId, task_id: result.taskId, debug_url: !!result.debugUrl });
1107
1143
  if ("schema" in input) {
1108
1144
  return wrapTaskResponseWithSchema(result, this.config, input.schema);
1109
1145
  } else {
@@ -1163,10 +1199,7 @@ async function executeBrowserTask(input, config = {}) {
1163
1199
  error: "maxSteps must be between 1 and 50. Use more steps for complex multi-page flows."
1164
1200
  };
1165
1201
  }
1166
- if (debug) {
1167
- console.log(`[Browser] Task: "${input.task.slice(0, 60)}..." url=${input.url || "none"} maxSteps=${input.maxSteps ?? 10}`);
1168
- console.log(`[Browser] Recording: ${input.recordVideo ? "yes" : "no"} | Calling ${apiUrl}/browser-task`);
1169
- }
1202
+ logger.debug("Browser", "execute_start", { task: input.task.slice(0, 100), url: input.url, max_steps: input.maxSteps ?? 10, record_video: input.recordVideo ?? false });
1170
1203
  const startTime = Date.now();
1171
1204
  try {
1172
1205
  const headers = { "Content-Type": "application/json" };
@@ -1205,14 +1238,12 @@ async function executeBrowserTask(input, config = {}) {
1205
1238
  );
1206
1239
  if (!response.ok) {
1207
1240
  const errorText = await response.text().catch(() => response.statusText);
1208
- if (debug) console.error(`[Browser] Error: ${response.status} - ${errorText}`);
1241
+ logger.error("Browser", "execute_error", { status: response.status, error: errorText });
1209
1242
  throw new Error(`HTTP ${response.status}: ${errorText}`);
1210
1243
  }
1211
1244
  const result = mapTaskResult(await response.json());
1212
1245
  const elapsed = Date.now() - startTime;
1213
- if (debug) {
1214
- console.log(`[Browser] \u2705 ${result.success ? "Success" : "Failed"} in ${elapsed}ms | steps=${result.stepsTaken ?? 0} recordingId=${result.recordingId ?? "none"}`);
1215
- }
1246
+ logger.debug("Browser", "execute_complete", { success: result.success, latency_ms: elapsed, steps: result.stepsTaken ?? 0, recording_id: result.recordingId });
1216
1247
  return result;
1217
1248
  } catch (error) {
1218
1249
  if (error instanceof Error) {