@morphllm/morphsdk 0.2.65 → 0.2.67
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/anthropic-B6my2oBx.d.ts +56 -0
- package/dist/chunk-7CJPKJEE.js +57 -0
- package/dist/chunk-7CJPKJEE.js.map +1 -0
- package/dist/{chunk-S6FZAPJ7.js → chunk-7JEL2VZO.js} +2 -2
- package/dist/{chunk-IQFKDBQD.js → chunk-7V2KIZT5.js} +2 -2
- package/dist/{chunk-NTCSWQEM.js → chunk-AQD2JCLI.js} +2 -2
- package/dist/chunk-BGSHC2UK.js +96 -0
- package/dist/chunk-BGSHC2UK.js.map +1 -0
- package/dist/{chunk-527P5X2E.js → chunk-GGYMQZXI.js} +1 -1
- package/dist/{chunk-527P5X2E.js.map → chunk-GGYMQZXI.js.map} +1 -1
- package/dist/{chunk-NTKQXKGM.js → chunk-IVT6YMFA.js} +6 -6
- package/dist/{chunk-IZISG7DL.js → chunk-MFZP347Z.js} +10 -7
- package/dist/chunk-MFZP347Z.js.map +1 -0
- package/dist/{chunk-V2IEG55Y.js → chunk-SQHZPUCS.js} +6 -3
- package/dist/{chunk-V2IEG55Y.js.map → chunk-SQHZPUCS.js.map} +1 -1
- package/dist/chunk-X4WPMVCM.js +80 -0
- package/dist/chunk-X4WPMVCM.js.map +1 -0
- package/dist/{chunk-BLKHVDYQ.js → chunk-XLSODV6H.js} +2 -2
- package/dist/client.cjs +9 -6
- package/dist/client.cjs.map +1 -1
- package/dist/client.js +7 -7
- package/dist/{gemini-DPFWWG3k.d.ts → gemini-BIFBiIjY.d.ts} +5 -3
- package/dist/index.cjs +9 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +8 -8
- package/dist/openai-BQMeDFef.d.ts +81 -0
- package/dist/tools/browser/anthropic.cjs.map +1 -1
- package/dist/tools/browser/anthropic.d.ts +3 -50
- package/dist/tools/browser/anthropic.js +5 -64
- package/dist/tools/browser/anthropic.js.map +1 -1
- package/dist/tools/browser/core.cjs +9 -6
- package/dist/tools/browser/core.cjs.map +1 -1
- package/dist/tools/browser/core.d.ts +6 -6
- package/dist/tools/browser/core.js +1 -1
- package/dist/tools/browser/index.cjs +278 -6
- package/dist/tools/browser/index.cjs.map +1 -1
- package/dist/tools/browser/index.d.ts +125 -1
- package/dist/tools/browser/index.js +98 -2
- package/dist/tools/browser/index.js.map +1 -1
- package/dist/tools/browser/openai.cjs.map +1 -1
- package/dist/tools/browser/openai.d.ts +3 -72
- package/dist/tools/browser/openai.js +8 -74
- package/dist/tools/browser/openai.js.map +1 -1
- package/dist/tools/browser/vercel.cjs.map +1 -1
- package/dist/tools/browser/vercel.d.ts +3 -68
- package/dist/tools/browser/vercel.js +5 -41
- package/dist/tools/browser/vercel.js.map +1 -1
- package/dist/tools/warp_grep/anthropic.cjs.map +1 -1
- package/dist/tools/warp_grep/anthropic.js +3 -3
- package/dist/tools/warp_grep/client.cjs.map +1 -1
- package/dist/tools/warp_grep/client.js +2 -2
- package/dist/tools/warp_grep/gemini.cjs +4 -1
- package/dist/tools/warp_grep/gemini.cjs.map +1 -1
- package/dist/tools/warp_grep/gemini.d.ts +1 -1
- package/dist/tools/warp_grep/gemini.js +5 -3
- package/dist/tools/warp_grep/index.cjs +3 -1
- package/dist/tools/warp_grep/index.cjs.map +1 -1
- package/dist/tools/warp_grep/index.d.ts +1 -1
- package/dist/tools/warp_grep/index.js +6 -6
- package/dist/tools/warp_grep/openai.cjs.map +1 -1
- package/dist/tools/warp_grep/openai.js +3 -3
- package/dist/tools/warp_grep/providers/remote.cjs.map +1 -1
- package/dist/tools/warp_grep/providers/remote.js +1 -1
- package/dist/tools/warp_grep/vercel.cjs.map +1 -1
- package/dist/tools/warp_grep/vercel.js +3 -3
- package/dist/vercel-CsnNSdze.d.ts +74 -0
- package/package.json +1 -1
- package/dist/chunk-IZISG7DL.js.map +0 -1
- /package/dist/{chunk-S6FZAPJ7.js.map → chunk-7JEL2VZO.js.map} +0 -0
- /package/dist/{chunk-IQFKDBQD.js.map → chunk-7V2KIZT5.js.map} +0 -0
- /package/dist/{chunk-NTCSWQEM.js.map → chunk-AQD2JCLI.js.map} +0 -0
- /package/dist/{chunk-NTKQXKGM.js.map → chunk-IVT6YMFA.js.map} +0 -0
- /package/dist/{chunk-BLKHVDYQ.js.map → chunk-XLSODV6H.js.map} +0 -0
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import {
|
|
2
|
+
BROWSER_SYSTEM_PROMPT,
|
|
3
|
+
BROWSER_TOOL_DESCRIPTION
|
|
4
|
+
} from "./chunk-EI4UKP24.js";
|
|
5
|
+
import {
|
|
6
|
+
executeBrowserTask
|
|
7
|
+
} from "./chunk-MFZP347Z.js";
|
|
8
|
+
import {
|
|
9
|
+
__export
|
|
10
|
+
} from "./chunk-PZ5AY32C.js";
|
|
11
|
+
|
|
12
|
+
// tools/browser/anthropic.ts
|
|
13
|
+
var anthropic_exports = {};
|
|
14
|
+
__export(anthropic_exports, {
|
|
15
|
+
browserTool: () => browserTool,
|
|
16
|
+
createBrowserTool: () => createBrowserTool
|
|
17
|
+
});
|
|
18
|
+
var browserTool = {
|
|
19
|
+
name: "browser_task",
|
|
20
|
+
description: BROWSER_TOOL_DESCRIPTION,
|
|
21
|
+
input_schema: {
|
|
22
|
+
type: "object",
|
|
23
|
+
properties: {
|
|
24
|
+
task: {
|
|
25
|
+
type: "string",
|
|
26
|
+
description: 'Natural language description of what to do (e.g., "Test checkout flow for buying a pineapple")'
|
|
27
|
+
},
|
|
28
|
+
url: {
|
|
29
|
+
type: "string",
|
|
30
|
+
description: "Starting URL (e.g., https://3000-xyz.e2b.dev). Required if navigating to a specific page."
|
|
31
|
+
},
|
|
32
|
+
max_steps: {
|
|
33
|
+
type: "number",
|
|
34
|
+
description: "Maximum number of browser actions to take (1-50). Default: 10. Use 15-30 for complex flows.",
|
|
35
|
+
default: 10
|
|
36
|
+
},
|
|
37
|
+
region: {
|
|
38
|
+
type: "string",
|
|
39
|
+
enum: ["sfo", "lon"],
|
|
40
|
+
description: "Browserless region: sfo (US West Coast) or lon (Europe). Default: sfo.",
|
|
41
|
+
default: "sfo"
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
required: ["task"]
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
function formatResult(result) {
|
|
48
|
+
if (result.success) {
|
|
49
|
+
const parts = [
|
|
50
|
+
"\u2705 Browser task completed successfully",
|
|
51
|
+
`Steps taken: ${result.steps_taken ?? 0}`,
|
|
52
|
+
result.execution_time_ms ? `Execution time: ${result.execution_time_ms}ms` : null,
|
|
53
|
+
"",
|
|
54
|
+
"Result:",
|
|
55
|
+
result.result || "Task completed"
|
|
56
|
+
];
|
|
57
|
+
return parts.filter(Boolean).join("\n");
|
|
58
|
+
}
|
|
59
|
+
return `\u274C Browser task failed: ${result.error || "Unknown error"}`;
|
|
60
|
+
}
|
|
61
|
+
function createBrowserTool(config) {
|
|
62
|
+
return Object.assign({}, browserTool, {
|
|
63
|
+
execute: async (input) => {
|
|
64
|
+
return executeBrowserTask(input, config);
|
|
65
|
+
},
|
|
66
|
+
formatResult: (result) => {
|
|
67
|
+
return formatResult(result);
|
|
68
|
+
},
|
|
69
|
+
getSystemPrompt: () => {
|
|
70
|
+
return BROWSER_SYSTEM_PROMPT;
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export {
|
|
76
|
+
browserTool,
|
|
77
|
+
createBrowserTool,
|
|
78
|
+
anthropic_exports
|
|
79
|
+
};
|
|
80
|
+
//# sourceMappingURL=chunk-X4WPMVCM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../tools/browser/anthropic.ts"],"sourcesContent":["/**\n * Anthropic SDK adapter for browser automation tool\n */\n\nimport type { Tool } from '@anthropic-ai/sdk/resources/messages.mjs';\nimport { executeBrowserTask } from './core.js';\nimport type {\n BrowserConfig,\n BrowserTaskInput,\n BrowserTaskResult,\n} from './types.js';\nimport { BROWSER_TOOL_DESCRIPTION, BROWSER_SYSTEM_PROMPT } from './prompts.js';\n\n/**\n * Anthropic tool definition for browser automation\n */\nexport const browserTool: Tool = {\n name: 'browser_task',\n description: BROWSER_TOOL_DESCRIPTION,\n input_schema: {\n type: 'object',\n properties: {\n task: {\n type: 'string',\n description: 'Natural language description of what to do (e.g., \"Test checkout flow for buying a pineapple\")',\n },\n url: {\n type: 'string',\n description: 'Starting URL (e.g., https://3000-xyz.e2b.dev). Required if navigating to a specific page.',\n },\n max_steps: {\n type: 'number',\n description: 'Maximum number of browser actions to take (1-50). Default: 10. Use 15-30 for complex flows.',\n default: 10,\n },\n region: {\n type: 'string',\n enum: ['sfo', 'lon'],\n description: 'Browserless region: sfo (US West Coast) or lon (Europe). Default: sfo.',\n default: 'sfo',\n },\n },\n required: ['task'],\n },\n};\n\n/**\n * Format browser task result for Anthropic tool result\n * \n * Returns a concise summary suitable for agent context. The full result object\n * (with urls, errors, action_history, judgement, etc.) is available when calling\n * execute() directly, but this formatted string omits those details to save tokens.\n * \n * @param result - Browser task result with full history data\n * @returns Formatted string summary for tool result\n */\nfunction formatResult(result: BrowserTaskResult): string {\n if (result.success) {\n const parts = [\n '✅ Browser task completed successfully',\n `Steps taken: ${result.steps_taken ?? 0}`,\n result.execution_time_ms ? `Execution time: ${result.execution_time_ms}ms` : null,\n '',\n 'Result:',\n result.result || 'Task completed',\n ];\n return parts.filter(Boolean).join('\\n');\n }\n\n return `❌ Browser task failed: ${result.error || 'Unknown error'}`;\n}\n\n/**\n * Create a configured browser tool with execute and formatResult methods\n * \n * @param config - Browser worker configuration\n * @returns Tool definition with execute and formatResult methods\n * \n * @example\n * ```typescript\n * import Anthropic from '@anthropic-ai/sdk';\n * import { createBrowserTool } from 'morphsdk/tools/browser/anthropic';\n * \n * const tool = createBrowserTool({\n * apiKey: process.env.MORPH_API_KEY,\n * timeout: 180000\n * });\n * \n * const client = new Anthropic();\n * \n * const response = await client.messages.create({\n * model: 'claude-sonnet-4-5-20250929',\n * tools: [tool], // tool itself is the Tool definition\n * messages: [{\n * role: 'user',\n * content: 'Test the checkout flow at https://3000-abc.e2b.dev'\n * }]\n * });\n * \n * // Execute and format\n * const result = await tool.execute(toolUseBlock.input);\n * const formatted = tool.formatResult(result);\n * ```\n */\nexport function createBrowserTool(config?: BrowserConfig) {\n return Object.assign({}, browserTool, {\n execute: async (input: BrowserTaskInput): Promise<BrowserTaskResult> => {\n return executeBrowserTask(input, config);\n },\n formatResult: (result: BrowserTaskResult): string => {\n return formatResult(result);\n },\n getSystemPrompt: (): string => {\n return BROWSER_SYSTEM_PROMPT;\n },\n });\n}\n\n"],"mappings":";;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBO,IAAM,cAAoB;AAAA,EAC/B,MAAM;AAAA,EACN,aAAa;AAAA,EACb,cAAc;AAAA,IACZ,MAAM;AAAA,IACN,YAAY;AAAA,MACV,MAAM;AAAA,QACJ,MAAM;AAAA,QACN,aAAa;AAAA,MACf;AAAA,MACA,KAAK;AAAA,QACH,MAAM;AAAA,QACN,aAAa;AAAA,MACf;AAAA,MACA,WAAW;AAAA,QACT,MAAM;AAAA,QACN,aAAa;AAAA,QACb,SAAS;AAAA,MACX;AAAA,MACA,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM,CAAC,OAAO,KAAK;AAAA,QACnB,aAAa;AAAA,QACb,SAAS;AAAA,MACX;AAAA,IACF;AAAA,IACA,UAAU,CAAC,MAAM;AAAA,EACnB;AACF;AAYA,SAAS,aAAa,QAAmC;AACvD,MAAI,OAAO,SAAS;AAClB,UAAM,QAAQ;AAAA,MACZ;AAAA,MACA,gBAAgB,OAAO,eAAe,CAAC;AAAA,MACvC,OAAO,oBAAoB,mBAAmB,OAAO,iBAAiB,OAAO;AAAA,MAC7E;AAAA,MACA;AAAA,MACA,OAAO,UAAU;AAAA,IACnB;AACA,WAAO,MAAM,OAAO,OAAO,EAAE,KAAK,IAAI;AAAA,EACxC;AAEA,SAAO,+BAA0B,OAAO,SAAS,eAAe;AAClE;AAkCO,SAAS,kBAAkB,QAAwB;AACxD,SAAO,OAAO,OAAO,CAAC,GAAG,aAAa;AAAA,IACpC,SAAS,OAAO,UAAwD;AACtE,aAAO,mBAAmB,OAAO,MAAM;AAAA,IACzC;AAAA,IACA,cAAc,CAAC,WAAsC;AACnD,aAAO,aAAa,MAAM;AAAA,IAC5B;AAAA,IACA,iBAAiB,MAAc;AAC7B,aAAO;AAAA,IACT;AAAA,EACF,CAAC;AACH;","names":[]}
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
import {
|
|
6
6
|
executeToolCall,
|
|
7
7
|
formatResult
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-7JEL2VZO.js";
|
|
9
9
|
import {
|
|
10
10
|
getSystemPrompt
|
|
11
11
|
} from "./chunk-Q5AHGIQO.js";
|
|
@@ -71,4 +71,4 @@ export {
|
|
|
71
71
|
openai_default,
|
|
72
72
|
openai_exports
|
|
73
73
|
};
|
|
74
|
-
//# sourceMappingURL=chunk-
|
|
74
|
+
//# sourceMappingURL=chunk-XLSODV6H.js.map
|
package/dist/client.cjs
CHANGED
|
@@ -737,14 +737,17 @@ async function executeWithRecording(input, config = {}) {
|
|
|
737
737
|
recording
|
|
738
738
|
};
|
|
739
739
|
} catch (error) {
|
|
740
|
+
const errorRecording = {
|
|
741
|
+
id: taskResult.recording_id,
|
|
742
|
+
status: "ERROR",
|
|
743
|
+
error: error instanceof Error ? error.message : String(error),
|
|
744
|
+
created_at: (/* @__PURE__ */ new Date()).toISOString(),
|
|
745
|
+
getWebp: (options) => getWebp(taskResult.recording_id, config, options),
|
|
746
|
+
getErrors: () => getErrors(taskResult.recording_id, config)
|
|
747
|
+
};
|
|
740
748
|
return {
|
|
741
749
|
...taskResult,
|
|
742
|
-
recording:
|
|
743
|
-
id: taskResult.recording_id,
|
|
744
|
-
status: "ERROR",
|
|
745
|
-
error: error instanceof Error ? error.message : String(error),
|
|
746
|
-
created_at: (/* @__PURE__ */ new Date()).toISOString()
|
|
747
|
-
}
|
|
750
|
+
recording: errorRecording
|
|
748
751
|
};
|
|
749
752
|
}
|
|
750
753
|
}
|