@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
|
@@ -7,13 +7,14 @@ import {
|
|
|
7
7
|
getRecording,
|
|
8
8
|
getWebp,
|
|
9
9
|
waitForRecording
|
|
10
|
-
} from "../../chunk-
|
|
11
|
-
import "../../chunk-
|
|
10
|
+
} from "../../chunk-MRYULNMU.js";
|
|
11
|
+
import "../../chunk-DVCIADH3.js";
|
|
12
12
|
import "../../chunk-2AMEQAO2.js";
|
|
13
13
|
import "../../chunk-2VERUKO2.js";
|
|
14
14
|
import "../../chunk-YTYCHRQ2.js";
|
|
15
|
-
import "../../chunk-
|
|
16
|
-
import "../../chunk-
|
|
15
|
+
import "../../chunk-RR7P4SMP.js";
|
|
16
|
+
import "../../chunk-5AM23TC7.js";
|
|
17
|
+
import "../../chunk-CFCNSELX.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.
|
|
56
|
+
version: "0.2.164",
|
|
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",
|
|
@@ -223,6 +228,7 @@ var package_default = {
|
|
|
223
228
|
"test:browser": "vitest run browser",
|
|
224
229
|
"test:agent": "npx tsx tests/fullAgentTest.ts",
|
|
225
230
|
"test:integration": "npx tsx tests/fullIntegrationTest.ts",
|
|
231
|
+
"test:e2e": "vitest run --config vitest.e2e.config.ts",
|
|
226
232
|
"release:patch": "npm version patch && npm publish",
|
|
227
233
|
"release:minor": "npm version minor && npm publish",
|
|
228
234
|
"release:major": "npm version major && npm publish"
|
|
@@ -366,6 +372,44 @@ function sleep(ms) {
|
|
|
366
372
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
367
373
|
}
|
|
368
374
|
|
|
375
|
+
// logger.ts
|
|
376
|
+
var import_fs = require("fs");
|
|
377
|
+
var MorphLogger = class {
|
|
378
|
+
enabled;
|
|
379
|
+
fileStream;
|
|
380
|
+
constructor() {
|
|
381
|
+
this.enabled = process.env.MORPH_DEBUG === "1" || !!process.env.MORPH_LOG_FILE;
|
|
382
|
+
const f = process.env.MORPH_LOG_FILE;
|
|
383
|
+
this.fileStream = f ? (0, import_fs.createWriteStream)(f, { flags: "a" }) : null;
|
|
384
|
+
}
|
|
385
|
+
debug(component, msg, data) {
|
|
386
|
+
this._log("debug", component, msg, data);
|
|
387
|
+
}
|
|
388
|
+
info(component, msg, data) {
|
|
389
|
+
this._log("info", component, msg, data);
|
|
390
|
+
}
|
|
391
|
+
warn(component, msg, data) {
|
|
392
|
+
this._log("warn", component, msg, data);
|
|
393
|
+
}
|
|
394
|
+
error(component, msg, data) {
|
|
395
|
+
this._log("error", component, msg, data);
|
|
396
|
+
}
|
|
397
|
+
enable() {
|
|
398
|
+
this.enabled = true;
|
|
399
|
+
}
|
|
400
|
+
get isEnabled() {
|
|
401
|
+
return this.enabled;
|
|
402
|
+
}
|
|
403
|
+
_log(level, component, msg, data) {
|
|
404
|
+
if (level !== "error" && !this.enabled) return;
|
|
405
|
+
const ts = (/* @__PURE__ */ new Date()).toISOString();
|
|
406
|
+
const prefix = `[${ts}] [${level.toUpperCase()}] [${component}]`;
|
|
407
|
+
console.error(data ? `${prefix} ${msg} ${JSON.stringify(data)}` : `${prefix} ${msg}`);
|
|
408
|
+
this.fileStream?.write(JSON.stringify({ ts, level, component, msg, ...data && { data } }) + "\n");
|
|
409
|
+
}
|
|
410
|
+
};
|
|
411
|
+
var logger = new MorphLogger();
|
|
412
|
+
|
|
369
413
|
// tools/browser/live.ts
|
|
370
414
|
var LIVE_PRESETS = {
|
|
371
415
|
/** Read-only monitoring (no interaction) */
|
|
@@ -1062,11 +1106,7 @@ var BrowserClient = class {
|
|
|
1062
1106
|
if (!hasTask && !hasDiff) {
|
|
1063
1107
|
throw new Error('Browser task requires either "task" (natural language) or "diff" (PR-review planning)');
|
|
1064
1108
|
}
|
|
1065
|
-
|
|
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
|
-
}
|
|
1109
|
+
logger.debug("Browser", "create_task", { task: (input.task ?? "").slice(0, 100), url: input.url, endpoint: `${apiUrl}/browser-task/async` });
|
|
1070
1110
|
const headers = { "Content-Type": "application/json" };
|
|
1071
1111
|
if (this.config.apiKey) headers["Authorization"] = `Bearer ${this.config.apiKey}`;
|
|
1072
1112
|
const response = await fetch(`${apiUrl}/browser-task/async`, {
|
|
@@ -1096,14 +1136,11 @@ var BrowserClient = class {
|
|
|
1096
1136
|
});
|
|
1097
1137
|
if (!response.ok) {
|
|
1098
1138
|
const errorText = await response.text().catch(() => response.statusText);
|
|
1099
|
-
|
|
1139
|
+
logger.error("Browser", "create_task_error", { status: response.status, error: errorText });
|
|
1100
1140
|
throw new Error(`HTTP ${response.status}: ${errorText}`);
|
|
1101
1141
|
}
|
|
1102
1142
|
const result = mapTaskResult(await response.json());
|
|
1103
|
-
|
|
1104
|
-
const debugUrl = result.debugUrl;
|
|
1105
|
-
console.log(`[Browser] \u2705 Task created: recordingId=${result.recordingId ?? "none"} debugUrl=${debugUrl ? "available" : "none"}`);
|
|
1106
|
-
}
|
|
1143
|
+
logger.debug("Browser", "task_created", { recording_id: result.recordingId, task_id: result.taskId, debug_url: !!result.debugUrl });
|
|
1107
1144
|
if ("schema" in input) {
|
|
1108
1145
|
return wrapTaskResponseWithSchema(result, this.config, input.schema);
|
|
1109
1146
|
} else {
|
|
@@ -1163,10 +1200,7 @@ async function executeBrowserTask(input, config = {}) {
|
|
|
1163
1200
|
error: "maxSteps must be between 1 and 50. Use more steps for complex multi-page flows."
|
|
1164
1201
|
};
|
|
1165
1202
|
}
|
|
1166
|
-
|
|
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
|
-
}
|
|
1203
|
+
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
1204
|
const startTime = Date.now();
|
|
1171
1205
|
try {
|
|
1172
1206
|
const headers = { "Content-Type": "application/json" };
|
|
@@ -1205,14 +1239,12 @@ async function executeBrowserTask(input, config = {}) {
|
|
|
1205
1239
|
);
|
|
1206
1240
|
if (!response.ok) {
|
|
1207
1241
|
const errorText = await response.text().catch(() => response.statusText);
|
|
1208
|
-
|
|
1242
|
+
logger.error("Browser", "execute_error", { status: response.status, error: errorText });
|
|
1209
1243
|
throw new Error(`HTTP ${response.status}: ${errorText}`);
|
|
1210
1244
|
}
|
|
1211
1245
|
const result = mapTaskResult(await response.json());
|
|
1212
1246
|
const elapsed = Date.now() - startTime;
|
|
1213
|
-
|
|
1214
|
-
console.log(`[Browser] \u2705 ${result.success ? "Success" : "Failed"} in ${elapsed}ms | steps=${result.stepsTaken ?? 0} recordingId=${result.recordingId ?? "none"}`);
|
|
1215
|
-
}
|
|
1247
|
+
logger.debug("Browser", "execute_complete", { success: result.success, latency_ms: elapsed, steps: result.stepsTaken ?? 0, recording_id: result.recordingId });
|
|
1216
1248
|
return result;
|
|
1217
1249
|
} catch (error) {
|
|
1218
1250
|
if (error instanceof Error) {
|