@morphllm/morphsdk 0.2.162 → 0.2.164
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.
- package/dist/{chunk-OGMHU4PJ.js → chunk-3HVVQHHX.js} +9 -2
- package/dist/chunk-3HVVQHHX.js.map +1 -0
- package/dist/{chunk-JVKGSMEF.js → chunk-3NWJ74R4.js} +2 -2
- package/dist/{chunk-XUV5B27P.js → chunk-4DDD65QF.js} +2 -2
- package/dist/{chunk-DRTPCCEI.js → chunk-4FZXI4FI.js} +2 -2
- package/dist/chunk-5AM23TC7.js +42 -0
- package/dist/chunk-5AM23TC7.js.map +1 -0
- package/dist/{chunk-CNFHKQ42.js → chunk-BFNH475L.js} +2 -2
- package/dist/{chunk-ZG3YLRR5.js → chunk-CFCNSELX.js} +8 -2
- package/dist/chunk-CFCNSELX.js.map +1 -0
- package/dist/{chunk-NKUGRAYU.js → chunk-CRU3FQ54.js} +2 -2
- package/dist/{chunk-DXMNKPB6.js → chunk-DKPC5ZVX.js} +2 -2
- package/dist/{chunk-PWGBAVQ5.js → chunk-DVCIADH3.js} +2 -2
- package/dist/{chunk-LECHLXI4.js → chunk-EAIAZ2GD.js} +17 -6
- package/dist/chunk-EAIAZ2GD.js.map +1 -0
- package/dist/{chunk-4GQNYJBB.js → chunk-ECELX2KF.js} +9 -12
- package/dist/chunk-ECELX2KF.js.map +1 -0
- package/dist/{chunk-YRHM3RCQ.js → chunk-EPYCKNQ3.js} +2 -2
- package/dist/{chunk-OOE2TKKY.js → chunk-MRYULNMU.js} +12 -21
- package/dist/chunk-MRYULNMU.js.map +1 -0
- package/dist/{chunk-4U5JFT6X.js → chunk-MVMB6GBY.js} +33 -26
- package/dist/{chunk-4U5JFT6X.js.map → chunk-MVMB6GBY.js.map} +1 -1
- package/dist/{chunk-UKT3CKC7.js → chunk-N4SSQFYN.js} +2 -2
- package/dist/{chunk-7QMX45QD.js → chunk-NKFMGSUH.js} +33 -6
- package/dist/chunk-NKFMGSUH.js.map +1 -0
- package/dist/{chunk-LZQBVEY2.js → chunk-NMRQWMTH.js} +35 -27
- package/dist/chunk-NMRQWMTH.js.map +1 -0
- package/dist/{chunk-UVRC4LKZ.js → chunk-Q7XZ6JGW.js} +2 -2
- package/dist/{chunk-UZX7SY33.js → chunk-RR7P4SMP.js} +2 -2
- package/dist/{chunk-UETFIUIG.js → chunk-VCFUU5TL.js} +2 -2
- package/dist/{chunk-5XTA7GCY.js → chunk-VDMF4WWF.js} +2 -2
- package/dist/{chunk-YBKT2UOK.js → chunk-XULEBEBX.js} +2 -2
- package/dist/{chunk-Y4NYT5L6.js → chunk-YOF3N2EL.js} +11 -26
- package/dist/chunk-YOF3N2EL.js.map +1 -0
- package/dist/{chunk-4Q6VFODP.js → chunk-ZEEHRQYJ.js} +2 -2
- package/dist/{chunk-VQSLLYKE.js → chunk-ZEMLB2KV.js} +2 -2
- package/dist/client.cjs +185 -115
- package/dist/client.cjs.map +1 -1
- package/dist/client.d.ts +1 -1
- package/dist/client.js +25 -24
- package/dist/edge.cjs +83 -50
- package/dist/edge.cjs.map +1 -1
- package/dist/edge.js +5 -4
- package/dist/index.cjs +187 -115
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +29 -28
- package/dist/modelrouter/core.cjs +51 -25
- package/dist/modelrouter/core.cjs.map +1 -1
- package/dist/modelrouter/core.js +4 -3
- package/dist/modelrouter/index.cjs +51 -25
- package/dist/modelrouter/index.cjs.map +1 -1
- package/dist/modelrouter/index.js +4 -3
- package/dist/subagents/anthropic.cjs +86 -12
- package/dist/subagents/anthropic.cjs.map +1 -1
- package/dist/subagents/anthropic.js +5 -4
- package/dist/subagents/vercel.cjs +86 -12
- package/dist/subagents/vercel.cjs.map +1 -1
- package/dist/subagents/vercel.js +5 -4
- package/dist/tools/browser/anthropic.cjs +48 -9
- package/dist/tools/browser/anthropic.cjs.map +1 -1
- package/dist/tools/browser/anthropic.js +6 -5
- package/dist/tools/browser/core.cjs +51 -19
- package/dist/tools/browser/core.cjs.map +1 -1
- package/dist/tools/browser/core.js +5 -4
- package/dist/tools/browser/index.cjs +51 -19
- package/dist/tools/browser/index.cjs.map +1 -1
- package/dist/tools/browser/index.js +10 -9
- package/dist/tools/browser/index.js.map +1 -1
- package/dist/tools/browser/openai.cjs +48 -9
- package/dist/tools/browser/openai.cjs.map +1 -1
- package/dist/tools/browser/openai.js +6 -5
- package/dist/tools/browser/profiles/core.cjs +7 -1
- package/dist/tools/browser/profiles/core.cjs.map +1 -1
- package/dist/tools/browser/profiles/core.js +3 -3
- package/dist/tools/browser/profiles/index.cjs +7 -1
- package/dist/tools/browser/profiles/index.cjs.map +1 -1
- package/dist/tools/browser/profiles/index.js +3 -3
- package/dist/tools/browser/vercel.cjs +48 -9
- package/dist/tools/browser/vercel.cjs.map +1 -1
- package/dist/tools/browser/vercel.js +6 -5
- package/dist/tools/codebase_search/anthropic.cjs +49 -11
- package/dist/tools/codebase_search/anthropic.cjs.map +1 -1
- package/dist/tools/codebase_search/anthropic.js +5 -4
- package/dist/tools/codebase_search/core.cjs +49 -11
- package/dist/tools/codebase_search/core.cjs.map +1 -1
- package/dist/tools/codebase_search/core.js +4 -3
- package/dist/tools/codebase_search/index.cjs +49 -11
- package/dist/tools/codebase_search/index.cjs.map +1 -1
- package/dist/tools/codebase_search/index.js +9 -8
- package/dist/tools/codebase_search/openai.cjs +49 -11
- package/dist/tools/codebase_search/openai.cjs.map +1 -1
- package/dist/tools/codebase_search/openai.js +5 -4
- package/dist/tools/codebase_search/vercel.cjs +49 -11
- package/dist/tools/codebase_search/vercel.cjs.map +1 -1
- package/dist/tools/codebase_search/vercel.js +5 -4
- package/dist/tools/fastapply/anthropic.cjs +95 -31
- package/dist/tools/fastapply/anthropic.cjs.map +1 -1
- package/dist/tools/fastapply/anthropic.js +5 -4
- package/dist/tools/fastapply/apply.cjs +75 -26
- package/dist/tools/fastapply/apply.cjs.map +1 -1
- package/dist/tools/fastapply/apply.js +3 -2
- package/dist/tools/fastapply/core.cjs +95 -31
- package/dist/tools/fastapply/core.cjs.map +1 -1
- package/dist/tools/fastapply/core.js +4 -3
- package/dist/tools/fastapply/index.cjs +95 -31
- package/dist/tools/fastapply/index.cjs.map +1 -1
- package/dist/tools/fastapply/index.js +9 -8
- package/dist/tools/fastapply/openai.cjs +95 -31
- package/dist/tools/fastapply/openai.cjs.map +1 -1
- package/dist/tools/fastapply/openai.js +5 -4
- package/dist/tools/fastapply/vercel.cjs +95 -31
- package/dist/tools/fastapply/vercel.cjs.map +1 -1
- package/dist/tools/fastapply/vercel.js +5 -4
- package/dist/tools/index.cjs +95 -31
- package/dist/tools/index.cjs.map +1 -1
- package/dist/tools/index.js +9 -8
- package/dist/tools/utils/resilience.cjs +7 -1
- package/dist/tools/utils/resilience.cjs.map +1 -1
- package/dist/tools/utils/resilience.js +2 -2
- package/dist/tools/warp_grep/agent/runner.cjs +75 -5
- package/dist/tools/warp_grep/agent/runner.cjs.map +1 -1
- package/dist/tools/warp_grep/agent/runner.js +3 -2
- package/dist/tools/warp_grep/anthropic.cjs +86 -12
- package/dist/tools/warp_grep/anthropic.cjs.map +1 -1
- package/dist/tools/warp_grep/anthropic.js +5 -4
- package/dist/tools/warp_grep/client.cjs +86 -12
- package/dist/tools/warp_grep/client.cjs.map +1 -1
- package/dist/tools/warp_grep/client.js +4 -3
- package/dist/tools/warp_grep/gemini.cjs +86 -12
- package/dist/tools/warp_grep/gemini.cjs.map +1 -1
- package/dist/tools/warp_grep/gemini.js +4 -3
- package/dist/tools/warp_grep/gemini.js.map +1 -1
- package/dist/tools/warp_grep/index.cjs +86 -12
- package/dist/tools/warp_grep/index.cjs.map +1 -1
- package/dist/tools/warp_grep/index.js +4 -3
- package/dist/tools/warp_grep/openai.cjs +86 -12
- package/dist/tools/warp_grep/openai.cjs.map +1 -1
- package/dist/tools/warp_grep/openai.js +5 -4
- package/dist/tools/warp_grep/vercel.cjs +86 -12
- package/dist/tools/warp_grep/vercel.cjs.map +1 -1
- package/dist/tools/warp_grep/vercel.d.ts +1 -1
- package/dist/tools/warp_grep/vercel.js +5 -4
- package/dist/version.cjs +7 -1
- package/dist/version.cjs.map +1 -1
- package/dist/version.js +1 -1
- package/package.json +7 -1
- package/dist/chunk-4GQNYJBB.js.map +0 -1
- package/dist/chunk-7QMX45QD.js.map +0 -1
- package/dist/chunk-LECHLXI4.js.map +0 -1
- package/dist/chunk-LZQBVEY2.js.map +0 -1
- package/dist/chunk-OGMHU4PJ.js.map +0 -1
- package/dist/chunk-OOE2TKKY.js.map +0 -1
- package/dist/chunk-Y4NYT5L6.js.map +0 -1
- package/dist/chunk-ZG3YLRR5.js.map +0 -1
- package/dist/{chunk-JVKGSMEF.js.map → chunk-3NWJ74R4.js.map} +0 -0
- package/dist/{chunk-XUV5B27P.js.map → chunk-4DDD65QF.js.map} +0 -0
- package/dist/{chunk-DRTPCCEI.js.map → chunk-4FZXI4FI.js.map} +0 -0
- package/dist/{chunk-CNFHKQ42.js.map → chunk-BFNH475L.js.map} +0 -0
- package/dist/{chunk-NKUGRAYU.js.map → chunk-CRU3FQ54.js.map} +0 -0
- package/dist/{chunk-DXMNKPB6.js.map → chunk-DKPC5ZVX.js.map} +0 -0
- package/dist/{chunk-PWGBAVQ5.js.map → chunk-DVCIADH3.js.map} +0 -0
- package/dist/{chunk-YRHM3RCQ.js.map → chunk-EPYCKNQ3.js.map} +0 -0
- package/dist/{chunk-UKT3CKC7.js.map → chunk-N4SSQFYN.js.map} +0 -0
- package/dist/{chunk-UVRC4LKZ.js.map → chunk-Q7XZ6JGW.js.map} +0 -0
- package/dist/{chunk-UZX7SY33.js.map → chunk-RR7P4SMP.js.map} +0 -0
- package/dist/{chunk-UETFIUIG.js.map → chunk-VCFUU5TL.js.map} +0 -0
- package/dist/{chunk-5XTA7GCY.js.map → chunk-VDMF4WWF.js.map} +0 -0
- package/dist/{chunk-YBKT2UOK.js.map → chunk-XULEBEBX.js.map} +0 -0
- package/dist/{chunk-4Q6VFODP.js.map → chunk-ZEEHRQYJ.js.map} +0 -0
- package/dist/{chunk-VQSLLYKE.js.map → chunk-ZEMLB2KV.js.map} +0 -0
- package/dist/{client-PkB7g9SA.d.ts → client-DsAAqupx.d.ts} +1 -1
|
@@ -34,7 +34,7 @@ module.exports = __toCommonJS(core_exports);
|
|
|
34
34
|
// package.json
|
|
35
35
|
var package_default = {
|
|
36
36
|
name: "@morphllm/morphsdk",
|
|
37
|
-
version: "0.2.
|
|
37
|
+
version: "0.2.164",
|
|
38
38
|
description: "TypeScript SDK and CLI for Morph Fast Apply integration",
|
|
39
39
|
type: "module",
|
|
40
40
|
main: "./dist/index.cjs",
|
|
@@ -46,6 +46,11 @@ var package_default = {
|
|
|
46
46
|
import: "./dist/index.js",
|
|
47
47
|
require: "./dist/index.cjs"
|
|
48
48
|
},
|
|
49
|
+
"./logger": {
|
|
50
|
+
types: "./dist/logger.d.ts",
|
|
51
|
+
import: "./dist/logger.js",
|
|
52
|
+
require: "./dist/logger.cjs"
|
|
53
|
+
},
|
|
49
54
|
"./edge": {
|
|
50
55
|
types: "./dist/edge.d.ts",
|
|
51
56
|
import: "./dist/edge.js",
|
|
@@ -204,6 +209,7 @@ var package_default = {
|
|
|
204
209
|
"test:browser": "vitest run browser",
|
|
205
210
|
"test:agent": "npx tsx tests/fullAgentTest.ts",
|
|
206
211
|
"test:integration": "npx tsx tests/fullIntegrationTest.ts",
|
|
212
|
+
"test:e2e": "vitest run --config vitest.e2e.config.ts",
|
|
207
213
|
"release:patch": "npm version patch && npm publish",
|
|
208
214
|
"release:minor": "npm version minor && npm publish",
|
|
209
215
|
"release:major": "npm version major && npm publish"
|
|
@@ -347,6 +353,44 @@ function sleep(ms) {
|
|
|
347
353
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
348
354
|
}
|
|
349
355
|
|
|
356
|
+
// logger.ts
|
|
357
|
+
var import_fs = require("fs");
|
|
358
|
+
var MorphLogger = class {
|
|
359
|
+
enabled;
|
|
360
|
+
fileStream;
|
|
361
|
+
constructor() {
|
|
362
|
+
this.enabled = process.env.MORPH_DEBUG === "1" || !!process.env.MORPH_LOG_FILE;
|
|
363
|
+
const f = process.env.MORPH_LOG_FILE;
|
|
364
|
+
this.fileStream = f ? (0, import_fs.createWriteStream)(f, { flags: "a" }) : null;
|
|
365
|
+
}
|
|
366
|
+
debug(component, msg, data) {
|
|
367
|
+
this._log("debug", component, msg, data);
|
|
368
|
+
}
|
|
369
|
+
info(component, msg, data) {
|
|
370
|
+
this._log("info", component, msg, data);
|
|
371
|
+
}
|
|
372
|
+
warn(component, msg, data) {
|
|
373
|
+
this._log("warn", component, msg, data);
|
|
374
|
+
}
|
|
375
|
+
error(component, msg, data) {
|
|
376
|
+
this._log("error", component, msg, data);
|
|
377
|
+
}
|
|
378
|
+
enable() {
|
|
379
|
+
this.enabled = true;
|
|
380
|
+
}
|
|
381
|
+
get isEnabled() {
|
|
382
|
+
return this.enabled;
|
|
383
|
+
}
|
|
384
|
+
_log(level, component, msg, data) {
|
|
385
|
+
if (level !== "error" && !this.enabled) return;
|
|
386
|
+
const ts = (/* @__PURE__ */ new Date()).toISOString();
|
|
387
|
+
const prefix = `[${ts}] [${level.toUpperCase()}] [${component}]`;
|
|
388
|
+
console.error(data ? `${prefix} ${msg} ${JSON.stringify(data)}` : `${prefix} ${msg}`);
|
|
389
|
+
this.fileStream?.write(JSON.stringify({ ts, level, component, msg, ...data && { data } }) + "\n");
|
|
390
|
+
}
|
|
391
|
+
};
|
|
392
|
+
var logger = new MorphLogger();
|
|
393
|
+
|
|
350
394
|
// tools/browser/live.ts
|
|
351
395
|
var LIVE_PRESETS = {
|
|
352
396
|
/** Read-only monitoring (no interaction) */
|
|
@@ -1043,11 +1087,7 @@ var BrowserClient = class {
|
|
|
1043
1087
|
if (!hasTask && !hasDiff) {
|
|
1044
1088
|
throw new Error('Browser task requires either "task" (natural language) or "diff" (PR-review planning)');
|
|
1045
1089
|
}
|
|
1046
|
-
|
|
1047
|
-
const preview = (input.task ?? "").slice(0, 60);
|
|
1048
|
-
console.log(`[Browser] createTask: "${preview}..." url=${input.url || "none"}`);
|
|
1049
|
-
console.log(`[Browser] Calling async endpoint: ${apiUrl}/browser-task/async`);
|
|
1050
|
-
}
|
|
1090
|
+
logger.debug("Browser", "create_task", { task: (input.task ?? "").slice(0, 100), url: input.url, endpoint: `${apiUrl}/browser-task/async` });
|
|
1051
1091
|
const headers = { "Content-Type": "application/json" };
|
|
1052
1092
|
if (this.config.apiKey) headers["Authorization"] = `Bearer ${this.config.apiKey}`;
|
|
1053
1093
|
const response = await fetch(`${apiUrl}/browser-task/async`, {
|
|
@@ -1077,14 +1117,11 @@ var BrowserClient = class {
|
|
|
1077
1117
|
});
|
|
1078
1118
|
if (!response.ok) {
|
|
1079
1119
|
const errorText = await response.text().catch(() => response.statusText);
|
|
1080
|
-
|
|
1120
|
+
logger.error("Browser", "create_task_error", { status: response.status, error: errorText });
|
|
1081
1121
|
throw new Error(`HTTP ${response.status}: ${errorText}`);
|
|
1082
1122
|
}
|
|
1083
1123
|
const result = mapTaskResult(await response.json());
|
|
1084
|
-
|
|
1085
|
-
const debugUrl = result.debugUrl;
|
|
1086
|
-
console.log(`[Browser] \u2705 Task created: recordingId=${result.recordingId ?? "none"} debugUrl=${debugUrl ? "available" : "none"}`);
|
|
1087
|
-
}
|
|
1124
|
+
logger.debug("Browser", "task_created", { recording_id: result.recordingId, task_id: result.taskId, debug_url: !!result.debugUrl });
|
|
1088
1125
|
if ("schema" in input) {
|
|
1089
1126
|
return wrapTaskResponseWithSchema(result, this.config, input.schema);
|
|
1090
1127
|
} else {
|
|
@@ -1144,10 +1181,7 @@ async function executeBrowserTask(input, config = {}) {
|
|
|
1144
1181
|
error: "maxSteps must be between 1 and 50. Use more steps for complex multi-page flows."
|
|
1145
1182
|
};
|
|
1146
1183
|
}
|
|
1147
|
-
|
|
1148
|
-
console.log(`[Browser] Task: "${input.task.slice(0, 60)}..." url=${input.url || "none"} maxSteps=${input.maxSteps ?? 10}`);
|
|
1149
|
-
console.log(`[Browser] Recording: ${input.recordVideo ? "yes" : "no"} | Calling ${apiUrl}/browser-task`);
|
|
1150
|
-
}
|
|
1184
|
+
logger.debug("Browser", "execute_start", { task: input.task.slice(0, 100), url: input.url, max_steps: input.maxSteps ?? 10, record_video: input.recordVideo ?? false });
|
|
1151
1185
|
const startTime = Date.now();
|
|
1152
1186
|
try {
|
|
1153
1187
|
const headers = { "Content-Type": "application/json" };
|
|
@@ -1186,14 +1220,12 @@ async function executeBrowserTask(input, config = {}) {
|
|
|
1186
1220
|
);
|
|
1187
1221
|
if (!response.ok) {
|
|
1188
1222
|
const errorText = await response.text().catch(() => response.statusText);
|
|
1189
|
-
|
|
1223
|
+
logger.error("Browser", "execute_error", { status: response.status, error: errorText });
|
|
1190
1224
|
throw new Error(`HTTP ${response.status}: ${errorText}`);
|
|
1191
1225
|
}
|
|
1192
1226
|
const result = mapTaskResult(await response.json());
|
|
1193
1227
|
const elapsed = Date.now() - startTime;
|
|
1194
|
-
|
|
1195
|
-
console.log(`[Browser] \u2705 ${result.success ? "Success" : "Failed"} in ${elapsed}ms | steps=${result.stepsTaken ?? 0} recordingId=${result.recordingId ?? "none"}`);
|
|
1196
|
-
}
|
|
1228
|
+
logger.debug("Browser", "execute_complete", { success: result.success, latency_ms: elapsed, steps: result.stepsTaken ?? 0, recording_id: result.recordingId });
|
|
1197
1229
|
return result;
|
|
1198
1230
|
} catch (error) {
|
|
1199
1231
|
if (error instanceof Error) {
|