@mindstudio-ai/agent 0.1.61 → 0.1.63

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/index.js CHANGED
@@ -57,12 +57,13 @@ async function requestWithRetry(config, method, url, body, attempt) {
57
57
  try {
58
58
  const body2 = JSON.parse(text);
59
59
  details = body2;
60
- const errMsg = (typeof body2.error === "string" ? body2.error : void 0) ?? (typeof body2.message === "string" ? body2.message : void 0) ?? (typeof body2.details === "string" ? body2.details : void 0);
60
+ const errMsg = (typeof body2.errorMessage === "string" ? body2.errorMessage : void 0) ?? (typeof body2.errorString === "string" ? body2.errorString : void 0) ?? (typeof body2.error === "string" ? body2.error : void 0) ?? (typeof body2.message === "string" ? body2.message : void 0) ?? (typeof body2.details === "string" ? body2.details : void 0);
61
61
  if (errMsg) message = errMsg;
62
62
  else if (body2.error || body2.message || body2.details) {
63
63
  message = JSON.stringify(body2.error ?? body2.message ?? body2.details);
64
64
  }
65
- if (body2.code) code = body2.code;
65
+ if (body2.code) code = String(body2.code);
66
+ else if (typeof body2.errorString === "string") code = body2.errorString;
66
67
  } catch {
67
68
  if (text) {
68
69
  const stripped = text.replace(/<[^>]*>/g, " ").replace(/\s+/g, " ").trim();
@@ -2129,6 +2130,13 @@ var stepMetadata = {
2129
2130
  inputSchema: { "type": "object", "properties": { "videoUrl": { "type": "string", "description": "YouTube video URL to fetch metadata for" } }, "required": ["videoUrl"] },
2130
2131
  outputSchema: { "type": "object", "properties": {}, "required": [] }
2131
2132
  },
2133
+ "generate3dModel": {
2134
+ stepType: "generate3dModel",
2135
+ description: "Generate a 3D model using a 3D generation model.",
2136
+ usageNotes: "- Text-to-3D models use the prompt field.\n- Image-to-3D and multi-view models take image URLs through the selected model's configuration inputs.\n- The output is standardized as a GLB URL plus optional FBX/OBJ/USDZ, thumbnail, texture maps, and provider task ID.",
2137
+ inputSchema: { "type": "object", "properties": { "prompt": { "type": "string", "description": "Text prompt for text-to-3D models, or optional guidance for image-to-3D models" }, "intermediateAsset": { "type": "boolean", "description": "When true, the asset is created but hidden from the user's gallery (tagged as intermediate)" }, "threeDModelOverride": { "type": "object", "properties": { "model": { "type": "string", "description": "3D generation model identifier" }, "config": { "type": "object", "properties": {}, "required": [], "description": "Additional model-specific configuration" } }, "required": ["model"], "description": "Optional model configuration override. Uses the workflow's default 3D model if not specified" } } },
2138
+ outputSchema: { "type": "object", "properties": { "prompt": { "type": "string" }, "glbUrl": { "type": "string" }, "fbxUrl": { "type": "string" }, "objUrl": { "type": "string" }, "usdzUrl": { "type": "string" }, "thumbnailUrl": { "type": "string" }, "textureUrls": { "type": "array", "items": { "type": "object", "properties": {}, "required": [] } }, "providerTaskId": { "type": "string" }, "resolvedConfig": { "type": "object", "properties": {}, "required": [] } }, "required": ["glbUrl"] }
2139
+ },
2132
2140
  "generateAsset": {
2133
2141
  stepType: "generatePdf",
2134
2142
  description: "Generate an HTML asset and export it as a webpage, PDF, or image",
@@ -2417,6 +2425,48 @@ var stepMetadata = {
2417
2425
  inputSchema: { "type": "object", "properties": { "videoUrls": { "type": "array", "items": { "type": "string" }, "description": "URLs of the video clips to merge in order" }, "transition": { "type": "string", "description": "Optional xfade transition effect name" }, "transitionDuration": { "type": "number", "description": "Duration of the transition in seconds" }, "intermediateAsset": { "type": "boolean", "description": "When true, the asset is created but hidden from the user's gallery (tagged as intermediate)" } }, "required": ["videoUrls"] },
2418
2426
  outputSchema: { "type": "object", "properties": { "videoUrl": { "type": "string", "description": "URL of the merged video" } }, "required": ["videoUrl"] }
2419
2427
  },
2428
+ "meshyAnimate": {
2429
+ stepType: "meshyAnimate",
2430
+ description: "Apply a preset animation to a rigged 3D character model using Meshy.",
2431
+ usageNotes: "- Requires a rig_task_id from a previously completed Meshy rigging step.\n- Select an animation from Meshy's library of 600+ preset animations.\n- Only works with humanoid (bipedal) rigged characters.\n- Supports post-processing: FPS change (24/25/30/60), FBX-to-USDZ conversion, or armature extraction.\n- Animation categories: DailyActions, WalkAndRun, Fighting, Dancing, BodyMovements.",
2432
+ inputSchema: { "type": "object", "properties": { "rigTaskId": { "type": "string", "description": "ID of a completed Meshy rigging task" }, "actionId": { "type": "number", "description": "Animation action ID from the Meshy animation library" } }, "required": ["rigTaskId", "actionId"] },
2433
+ outputSchema: { "type": "object", "properties": { "glbUrl": { "type": "string" }, "fbxUrl": { "type": "string" }, "objUrl": { "type": "string" }, "usdzUrl": { "type": "string" }, "thumbnailUrl": { "type": "string" }, "textureUrls": { "type": "array", "items": { "type": "object", "properties": {}, "required": [] } }, "animations": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "glbUrl": { "type": "string" }, "fbxUrl": { "type": "string" } }, "required": ["name"] } }, "providerTaskId": { "type": "string" } }, "required": ["glbUrl"] }
2434
+ },
2435
+ "meshyImageTo3d": {
2436
+ stepType: "meshyImageTo3d",
2437
+ description: "Generate a 3D model from one or more images using Meshy. Uses the multi-image-to-3D endpoint.",
2438
+ usageNotes: "- Accepts 1-4 image URLs. All images should depict the same object from different angles for best results.\n- By default generates with textures. Set shouldTexture to false for mesh-only output.\n- Uses should_remesh: false to preserve UV mapping integrity.",
2439
+ inputSchema: { "type": "object", "properties": { "imageUrls": { "type": "array", "items": { "type": "string" }, "description": "1-4 image URLs depicting the same object from different angles" }, "shouldTexture": { "type": "boolean", "description": "Whether to generate textures (default true)" }, "topology": { "type": "string", "description": '"triangle" (default) or "quad"' }, "targetPolycount": { "type": "number", "description": "Target polygon count (default 30000, range 100-300000)" }, "symmetryMode": { "type": "string", "description": 'Symmetry mode: "auto" (default), "off", or "on"' }, "poseMode": { "type": "string", "description": 'Pose mode: "a-pose", "t-pose", or "" (default, no specific pose)' }, "textureImageUrl": { "type": "string", "description": "2D image URL to guide the texturing process (.jpg, .jpeg, .png)" } }, "required": ["imageUrls"] },
2440
+ outputSchema: { "type": "object", "properties": { "glbUrl": { "type": "string" }, "fbxUrl": { "type": "string" }, "objUrl": { "type": "string" }, "usdzUrl": { "type": "string" }, "thumbnailUrl": { "type": "string" }, "textureUrls": { "type": "array", "items": { "type": "object", "properties": {}, "required": [] } }, "animations": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "glbUrl": { "type": "string" }, "fbxUrl": { "type": "string" } }, "required": ["name"] } }, "providerTaskId": { "type": "string" } }, "required": ["glbUrl"] }
2441
+ },
2442
+ "meshyRemesh": {
2443
+ stepType: "meshyRemesh",
2444
+ description: "Remesh an existing 3D model to adjust topology, polygon count, or convert formats using Meshy.",
2445
+ usageNotes: "- Provide either an input task ID (from a previous Meshy step) or a model URL.\n- Defaults to triangle topology with 30,000 target polys.\n- Useful for reducing face count before rigging (max 300k faces for rigging).",
2446
+ inputSchema: { "type": "object", "properties": { "inputTaskId": { "type": "string", "description": "ID of a completed Meshy task to remesh" }, "modelUrl": { "type": "string", "description": "URL to a 3D model file (.glb, .fbx, .obj, .stl)" }, "topology": { "type": "string", "description": 'Topology: "triangle" (default) or "quad"' }, "targetPolycount": { "type": "number", "description": "Target polygon count (default 30000, range 100-300000)" }, "resizeHeight": { "type": "number", "description": "Resize model to this height in meters (0 or omitted = no resize)" } } },
2447
+ outputSchema: { "type": "object", "properties": { "glbUrl": { "type": "string" }, "fbxUrl": { "type": "string" }, "objUrl": { "type": "string" }, "usdzUrl": { "type": "string" }, "thumbnailUrl": { "type": "string" }, "textureUrls": { "type": "array", "items": { "type": "object", "properties": {}, "required": [] } }, "animations": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "glbUrl": { "type": "string" }, "fbxUrl": { "type": "string" } }, "required": ["name"] } }, "providerTaskId": { "type": "string" } }, "required": ["glbUrl"] }
2448
+ },
2449
+ "meshyRig": {
2450
+ stepType: "meshyRig",
2451
+ description: "Auto-rig a humanoid 3D model and generate basic walking/running animations using Meshy.",
2452
+ usageNotes: "- Only works well with standard humanoid (bipedal) models with clearly defined limbs.\n- Prefers model_url over input_task_id for cleaner rigging input.\n- Models with more than 300,000 faces should be remeshed first.\n- Returns rigged model files and optional basic animations.",
2453
+ inputSchema: { "type": "object", "properties": { "inputTaskId": { "type": "string", "description": "ID of a completed Meshy task to rig" }, "modelUrl": { "type": "string", "description": "URL to a textured humanoid GLB file (preferred over inputTaskId)" }, "heightMeters": { "type": "number", "description": "Approximate character height in meters (default 1.7)" } } },
2454
+ outputSchema: { "type": "object", "properties": { "glbUrl": { "type": "string" }, "fbxUrl": { "type": "string" }, "objUrl": { "type": "string" }, "usdzUrl": { "type": "string" }, "thumbnailUrl": { "type": "string" }, "textureUrls": { "type": "array", "items": { "type": "object", "properties": {}, "required": [] } }, "animations": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "glbUrl": { "type": "string" }, "fbxUrl": { "type": "string" } }, "required": ["name"] } }, "providerTaskId": { "type": "string" } }, "required": ["glbUrl"] }
2455
+ },
2456
+ "meshyTextTo3d": {
2457
+ stepType: "meshyTextTo3d",
2458
+ description: "Generate a 3D model preview from a text prompt using Meshy. Produces an untextured mesh (preview stage).",
2459
+ usageNotes: "- Creates a text-to-3D preview task (mesh generation only, no texture).\n- Use the Meshy Texture step to apply textures to the preview.\n- Maximum prompt length is 600 characters.",
2460
+ inputSchema: { "type": "object", "properties": { "prompt": { "type": "string", "description": "Description of the 3D model to generate (max 600 characters)" }, "modelType": { "type": "string", "description": '"standard" (default) or "lowpoly". Lowpoly ignores topology/target_polycount.' }, "topology": { "type": "string", "description": '"triangle" (default) or "quad"' }, "targetPolycount": { "type": "number", "description": "Target polygon count (default 30000, range 100-300000)" }, "symmetryMode": { "type": "string", "description": 'Symmetry mode: "auto" (default), "off", or "on"' }, "poseMode": { "type": "string", "description": 'Pose mode: "a-pose", "t-pose", or "" (default, no specific pose)' } }, "required": ["prompt"] },
2461
+ outputSchema: { "type": "object", "properties": { "glbUrl": { "type": "string" }, "fbxUrl": { "type": "string" }, "objUrl": { "type": "string" }, "usdzUrl": { "type": "string" }, "thumbnailUrl": { "type": "string" }, "textureUrls": { "type": "array", "items": { "type": "object", "properties": {}, "required": [] } }, "animations": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "glbUrl": { "type": "string" }, "fbxUrl": { "type": "string" } }, "required": ["name"] } }, "providerTaskId": { "type": "string" } }, "required": ["glbUrl"] }
2462
+ },
2463
+ "meshyTexture": {
2464
+ stepType: "meshyTexture",
2465
+ description: "Apply or replace textures on a 3D model using a text prompt or reference image via Meshy.",
2466
+ usageNotes: "- Provide either an input task ID (from a previous Meshy step) or a model URL.\n- Provide either a text style prompt or an image style URL to guide texturing.\n- Supports .glb, .gltf, .obj, .fbx, .stl model formats when using modelUrl.\n- By default preserves original UVs (enableOriginalUv = true).\n- Works with any model source: text-to-3D previews, image-to-3D, remeshed models, or external files.",
2467
+ inputSchema: { "type": "object", "properties": { "inputTaskId": { "type": "string", "description": "ID of a completed Meshy task to texture" }, "modelUrl": { "type": "string", "description": "URL to a 3D model file (.glb, .gltf, .obj, .fbx, .stl)" }, "textStylePrompt": { "type": "string", "description": "Text description of desired texture style (max 600 characters)" }, "imageStyleUrl": { "type": "string", "description": "2D image URL to guide texturing (.jpg, .jpeg, .png)" }, "enableOriginalUv": { "type": "boolean", "description": "Preserve original UV mapping (default true)" }, "enablePbr": { "type": "boolean", "description": "Generate PBR maps (metallic, roughness, normal). Default false." } } },
2468
+ outputSchema: { "type": "object", "properties": { "glbUrl": { "type": "string" }, "fbxUrl": { "type": "string" }, "objUrl": { "type": "string" }, "usdzUrl": { "type": "string" }, "thumbnailUrl": { "type": "string" }, "textureUrls": { "type": "array", "items": { "type": "object", "properties": {}, "required": [] } }, "animations": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "glbUrl": { "type": "string" }, "fbxUrl": { "type": "string" } }, "required": ["name"] } }, "providerTaskId": { "type": "string" } }, "required": ["glbUrl"] }
2469
+ },
2420
2470
  "mixAudioIntoVideo": {
2421
2471
  stepType: "mixAudioIntoVideo",
2422
2472
  description: "Mix an audio track into a video",
@@ -2518,8 +2568,10 @@ var stepMetadata = {
2518
2568
  "removeBackgroundFromImage": {
2519
2569
  stepType: "removeBackgroundFromImage",
2520
2570
  description: "Remove the background from an image using AI, producing a transparent PNG.",
2521
- usageNotes: "- Uses the Bria background removal model via fal.ai.\n- Output is re-hosted on the CDN as a PNG with transparency.",
2522
- inputSchema: { "type": "object", "properties": { "imageUrl": { "type": "string", "description": "URL of the source image to remove the background from" } }, "required": ["imageUrl"] },
2571
+ usageNotes: `- Uses the Bria background removal model via fal.ai by default.
2572
+ - Uses WaveSpeed's Ideogram background removal model when type is "advanced".
2573
+ - Output is re-hosted on the CDN as a PNG with transparency.`,
2574
+ inputSchema: { "type": "object", "properties": { "type": { "enum": ["standard", "advanced"], "type": "string" }, "imageUrl": { "type": "string", "description": "URL of the source image to remove the background from" } }, "required": ["imageUrl"] },
2523
2575
  outputSchema: { "type": "object", "properties": { "imageUrl": { "type": "string", "description": "CDN URL of the image with background removed (transparent PNG)" } }, "required": ["imageUrl"] }
2524
2576
  },
2525
2577
  "replyToGmailEmail": {
@@ -2966,6 +3018,41 @@ var stepMetadata = {
2966
3018
  usageNotes: "",
2967
3019
  inputSchema: { "type": "object", "properties": { "videoUrl": { "type": "string", "description": "URL of the source video" }, "imageUrl": { "type": "string", "description": "URL of the watermark image to overlay" }, "corner": { "enum": ["top-left", "top-right", "bottom-left", "bottom-right"], "type": "string", "description": "Corner position for the watermark placement" }, "paddingPx": { "type": "number", "description": "Padding from the corner in pixels" }, "widthPx": { "type": "number", "description": "Width of the watermark overlay in pixels" }, "intermediateAsset": { "type": "boolean", "description": "When true, the asset is created but hidden from the user's gallery (tagged as intermediate)" } }, "required": ["videoUrl", "imageUrl", "corner", "paddingPx", "widthPx"] },
2968
3020
  outputSchema: { "type": "object", "properties": { "videoUrl": { "type": "string", "description": "URL of the watermarked video" } }, "required": ["videoUrl"] }
3021
+ },
3022
+ "youDotComFinanceResearch": {
3023
+ stepType: "youDotComFinanceResearch",
3024
+ description: "Ask a financial research question using You.com Finance Research and return the sourced response.",
3025
+ usageNotes: "- Use this for financial questions such as company analysis, earnings, market research, filings, macroeconomics, and due diligence.\n- researchEffort supports deep (default) or exhaustive.\n- Finance Research returns the same response shape as Web Research, but searches a finance-optimized index.\n- Use it for cited synthesis, not raw price feeds or structured time-series exports.",
3026
+ inputSchema: { "type": "object", "properties": { "input": { "type": "string", "description": "Financial research question" }, "researchEffort": { "enum": ["deep", "exhaustive"], "type": "string", "description": "Depth of finance research to perform" } }, "required": ["input"] },
3027
+ outputSchema: { "type": "object", "properties": { "data": { "anyOf": [{ "type": "object", "properties": {}, "required": [] }, { "type": "array", "items": {} }] } }, "required": ["data"] }
3028
+ },
3029
+ "youDotComGetPageContent": {
3030
+ stepType: "youDotComGetPageContent",
3031
+ description: "Fetch clean Markdown, HTML, or metadata for known URLs using the You.com Contents API.",
3032
+ usageNotes: "- Use this step when you already know the URLs. Use Web Search with livecrawl when You.com should discover pages from a query.\n- A single request supports up to 10 URLs.\n- Request only the formats you need. Markdown is recommended for LLM consumption.\n- Increase crawlTimeout for JavaScript-heavy pages, up to 60 seconds.\n- Individual pages can partially fail; check each returned item before processing.",
3033
+ inputSchema: { "type": "object", "properties": { "urls": { "type": "array", "items": { "type": "string" }, "description": "URLs to fetch, max 10" }, "formats": { "type": "array", "items": { "enum": ["markdown", "html", "metadata"], "type": "string" }, "description": "Content formats to return; defaults to markdown" }, "crawlTimeout": { "type": "number", "description": "Per-URL crawl timeout in seconds" } }, "required": ["urls"] },
3034
+ outputSchema: { "type": "object", "properties": { "data": { "anyOf": [{ "type": "object", "properties": {}, "required": [] }, { "type": "array", "items": {} }] } }, "required": ["data"] }
3035
+ },
3036
+ "youDotComLiveNews": {
3037
+ stepType: "youDotComLiveNews",
3038
+ description: "Fetch live news articles through the You.com Search API and return the full structured response.",
3039
+ usageNotes: "- Defaults freshness to day for breaking or recent news.\n- Use country and language together to monitor regional or non-English news.\n- Use livecrawl: 'news' with livecrawlFormats: ['markdown'] when you need full article text.\n- Use a custom freshness range like YYYY-MM-DDtoYYYY-MM-DD for historical news windows.",
3040
+ inputSchema: { "type": "object", "properties": { "query": { "type": "string", "description": "News query" }, "freshness": { "type": "string", "description": "Recency filter; defaults to day" }, "count": { "type": "number", "description": "Max results per section, up to 100" }, "country": { "type": "string", "description": "ISO 3166-1 alpha-2 country code" }, "language": { "type": "string", "description": "BCP 47 language code" }, "safesearch": { "enum": ["off", "moderate", "strict"], "type": "string", "description": "Content moderation level" }, "livecrawl": { "enum": ["news", "all"], "type": "string", "description": "Fetch full content for news or all results" }, "livecrawlFormats": { "type": "array", "items": { "enum": ["markdown", "html"], "type": "string" }, "description": "Full-content formats to return when livecrawl is enabled" } }, "required": ["query"] },
3041
+ outputSchema: { "type": "object", "properties": { "data": { "anyOf": [{ "type": "object", "properties": {}, "required": [] }, { "type": "array", "items": {} }] } }, "required": ["data"] }
3042
+ },
3043
+ "youDotComWebResearch": {
3044
+ stepType: "youDotComWebResearch",
3045
+ description: "Ask a research question and return a grounded You.com Research API answer with sources.",
3046
+ usageNotes: "- Use Web Search when you need raw URLs and snippets. Use Web Research when you want a synthesized answer with citations.\n- researchEffort controls depth and latency: lite, standard, deep, or exhaustive. standard is a good default.\n- sourceControl can restrict, exclude, or boost domains, and can apply freshness or country filters.\n- includeDomains cannot be combined with excludeDomains or boostDomains.\n- outputSchema returns structured output.content and is supported by standard, deep, and exhaustive, not lite.",
3047
+ inputSchema: { "type": "object", "properties": { "input": { "type": "string", "description": "Research question" }, "researchEffort": { "enum": ["lite", "standard", "deep", "exhaustive"], "type": "string", "description": "Depth of research to perform" }, "sourceControl": { "anyOf": [{ "type": "object", "properties": { "includeDomains": { "type": "array", "items": { "type": "string" } }, "excludeDomains": { "type": "array", "items": { "type": "string" } }, "boostDomains": { "type": "array", "items": { "type": "string" } }, "freshness": { "type": "string" }, "country": { "type": "string" } } }, { "type": "string" }] }, "outputSchema": { "anyOf": [{ "type": "object", "properties": {}, "required": [] }, { "type": "string" }] } }, "required": ["input"] },
3048
+ outputSchema: { "type": "object", "properties": { "data": { "anyOf": [{ "type": "object", "properties": {}, "required": [] }, { "type": "array", "items": {} }] } }, "required": ["data"] }
3049
+ },
3050
+ "youDotComWebSearch": {
3051
+ stepType: "youDotComWebSearch",
3052
+ description: "Search the web and news using the You.com Search API and return the full structured response.",
3053
+ usageNotes: "- Query supports You.com search operators:\n\n| Operator | Description | Example |\n| -------- | ----------- | ------- |\n| site: | Search within a domain and its subdomains | site:uscourts.gov |\n| filetype: | Search for a specific file type | filetype:pdf |\n| + | Require the exact term after the operator | +GAAP |\n| - | Exclude the exact term after the operator | -prs |\n| AND | Require both expressions | guitar AND Fender |\n| OR | Match either expression | guitar OR drum |\n| NOT | Negate an expression | NOT site:uscourts.gov |\n\n- Use livecrawl with livecrawlFormats: ['markdown'] when you need full page content instead of snippets.\n- Use the Get Page Content step when you already know the URLs to fetch.\n- Use freshness for recency: day, week, month, year, or YYYY-MM-DDtoYYYY-MM-DD.\n- Use country (ISO 3166-1 alpha-2) and language (BCP 47) to focus results geographically or linguistically.\n- includeDomains cannot be combined with excludeDomains or boostDomains.",
3054
+ inputSchema: { "type": "object", "properties": { "query": { "type": "string", "description": "Search query; supports You.com search operators" }, "count": { "type": "number", "description": "Max results per section, up to 100" }, "freshness": { "type": "string", "description": "Recency filter: day, week, month, year, or YYYY-MM-DDtoYYYY-MM-DD" }, "country": { "type": "string", "description": "ISO 3166-1 alpha-2 country code" }, "language": { "type": "string", "description": "BCP 47 language code" }, "offset": { "type": "number", "description": "Pagination offset, 0-9" }, "safesearch": { "enum": ["off", "moderate", "strict"], "type": "string", "description": "Content moderation level" }, "livecrawl": { "enum": ["web", "news", "all"], "type": "string", "description": "Fetch full content for web, news, or all results" }, "livecrawlFormats": { "type": "array", "items": { "enum": ["markdown", "html"], "type": "string" }, "description": "Full-content formats to return when livecrawl is enabled" }, "crawlTimeout": { "type": "number", "description": "Maximum livecrawl timeout in seconds" }, "includeDomains": { "type": "array", "items": { "type": "string" }, "description": "Restrict results to these domains" }, "excludeDomains": { "type": "array", "items": { "type": "string" }, "description": "Exclude these domains" }, "boostDomains": { "type": "array", "items": { "type": "string" }, "description": "Boost these domains without excluding other domains" } }, "required": ["query"] },
3055
+ outputSchema: { "type": "object", "properties": { "data": { "anyOf": [{ "type": "object", "properties": {}, "required": [] }, { "type": "array", "items": {} }] } }, "required": ["data"] }
2969
3056
  }
2970
3057
  };
2971
3058
 
@@ -3319,6 +3406,9 @@ function applyStepMethods(AgentClass) {
3319
3406
  proto.fetchYoutubeVideo = function(step, options) {
3320
3407
  return this.executeStep("fetchYoutubeVideo", step, options);
3321
3408
  };
3409
+ proto.generate3dModel = function(step, options) {
3410
+ return this.executeStep("generate3dModel", step, options);
3411
+ };
3322
3412
  proto.generateChart = function(step, options) {
3323
3413
  return this.executeStep("generateChart", step, options);
3324
3414
  };
@@ -3430,6 +3520,24 @@ function applyStepMethods(AgentClass) {
3430
3520
  proto.mergeVideos = function(step, options) {
3431
3521
  return this.executeStep("mergeVideos", step, options);
3432
3522
  };
3523
+ proto.meshyAnimate = function(step, options) {
3524
+ return this.executeStep("meshyAnimate", step, options);
3525
+ };
3526
+ proto.meshyImageTo3d = function(step, options) {
3527
+ return this.executeStep("meshyImageTo3d", step, options);
3528
+ };
3529
+ proto.meshyRemesh = function(step, options) {
3530
+ return this.executeStep("meshyRemesh", step, options);
3531
+ };
3532
+ proto.meshyRig = function(step, options) {
3533
+ return this.executeStep("meshyRig", step, options);
3534
+ };
3535
+ proto.meshyTextTo3d = function(step, options) {
3536
+ return this.executeStep("meshyTextTo3d", step, options);
3537
+ };
3538
+ proto.meshyTexture = function(step, options) {
3539
+ return this.executeStep("meshyTexture", step, options);
3540
+ };
3433
3541
  proto.mixAudioIntoVideo = function(step, options) {
3434
3542
  return this.executeStep("mixAudioIntoVideo", step, options);
3435
3543
  };
@@ -3658,6 +3766,21 @@ function applyStepMethods(AgentClass) {
3658
3766
  proto.watermarkVideo = function(step, options) {
3659
3767
  return this.executeStep("watermarkVideo", step, options);
3660
3768
  };
3769
+ proto.youDotComFinanceResearch = function(step, options) {
3770
+ return this.executeStep("youDotComFinanceResearch", step, options);
3771
+ };
3772
+ proto.youDotComGetPageContent = function(step, options) {
3773
+ return this.executeStep("youDotComGetPageContent", step, options);
3774
+ };
3775
+ proto.youDotComLiveNews = function(step, options) {
3776
+ return this.executeStep("youDotComLiveNews", step, options);
3777
+ };
3778
+ proto.youDotComWebResearch = function(step, options) {
3779
+ return this.executeStep("youDotComWebResearch", step, options);
3780
+ };
3781
+ proto.youDotComWebSearch = function(step, options) {
3782
+ return this.executeStep("youDotComWebSearch", step, options);
3783
+ };
3661
3784
  }
3662
3785
 
3663
3786
  // src/client.ts
@@ -4816,38 +4939,38 @@ var MindStudioAgent = class {
4816
4939
  /**
4817
4940
  * Upload a file to the MindStudio CDN.
4818
4941
  *
4819
- * Gets a signed upload URL, PUTs the file content, and returns the
4820
- * permanent public URL.
4942
+ * Gets a presigned upload request from the API, POSTs the file as
4943
+ * multipart/form-data, and returns the permanent public URL.
4821
4944
  */
4822
4945
  async uploadFile(content, options) {
4823
- const { data } = await request(
4824
- this._currentHttpConfig,
4825
- "POST",
4826
- "/account/upload",
4827
- {
4828
- extension: options.extension,
4829
- ...options.type != null && { type: options.type }
4830
- }
4831
- );
4946
+ const filename = options.filename ?? `upload.${options.extension}`;
4947
+ const { data } = await request(this._currentHttpConfig, "POST", "/account/upload", { filename });
4948
+ const form = new FormData();
4949
+ for (const [k, v] of Object.entries(data.fields)) form.append(k, v);
4832
4950
  const buf = content.buffer.slice(
4833
4951
  content.byteOffset,
4834
4952
  content.byteOffset + content.byteLength
4835
4953
  );
4836
- const res = await fetch(data.uploadUrl, {
4837
- method: "PUT",
4838
- body: buf,
4839
- headers: options.type ? { "Content-Type": options.type } : {}
4840
- });
4954
+ const fileBlob = new Blob([buf], options.type ? { type: options.type } : void 0);
4955
+ form.append("file", fileBlob, filename);
4956
+ const res = await fetch(data.url, { method: "POST", body: form });
4841
4957
  if (!res.ok) {
4842
- const errorBody = await res.json().catch(() => ({}));
4958
+ const errorText = await res.text().catch(() => "");
4843
4959
  throw new MindStudioError(
4844
- errorBody.message ?? errorBody.error ?? `Upload failed: ${res.status} ${res.statusText}`,
4845
- errorBody.code ?? "upload_error",
4960
+ `Upload failed: ${res.status} ${res.statusText}${errorText ? ` \u2014 ${errorText.replace(/<[^>]*>/g, " ").replace(/\s+/g, " ").trim().slice(0, 200)}` : ""}`,
4961
+ "upload_error",
4846
4962
  res.status,
4847
- errorBody
4963
+ errorText || void 0
4964
+ );
4965
+ }
4966
+ if (!data.publicUrl) {
4967
+ throw new MindStudioError(
4968
+ "Upload succeeded but server did not return a public URL.",
4969
+ "missing_public_url",
4970
+ 500
4848
4971
  );
4849
4972
  }
4850
- return { url: data.url };
4973
+ return { url: data.publicUrl };
4851
4974
  }
4852
4975
  };
4853
4976
  function sleep3(ms) {
@@ -4923,6 +5046,7 @@ var monacoSnippets = {
4923
5046
  "fetchYoutubeChannel": { fields: [["channelUrl", "string"]], outputKeys: [] },
4924
5047
  "fetchYoutubeComments": { fields: [["videoUrl", "string"], ["exportType", ["text", "json"]], ["limitPages", "string"]], outputKeys: ["comments"] },
4925
5048
  "fetchYoutubeVideo": { fields: [["videoUrl", "string"]], outputKeys: [] },
5049
+ "generate3dModel": { fields: [], outputKeys: ["glbUrl"] },
4926
5050
  "generateAsset": { fields: [["source", "string"], ["sourceType", ["html", "markdown", "spa", "raw", "dynamic", "customInterface"]], ["outputFormat", ["pdf", "png", "html", "mp4", "openGraph"]], ["pageSize", ["full", "letter", "A4", "custom"]], ["testData", "object"]], outputKeys: ["url"] },
4927
5051
  "generateChart": { fields: [["chart", "object"]], outputKeys: ["chartUrl"] },
4928
5052
  "generateImage": { fields: [["prompt", "string"]], outputKeys: ["imageUrl"] },
@@ -4962,6 +5086,12 @@ var monacoSnippets = {
4962
5086
  "makeDotComRunScenario": { fields: [["webhookUrl", "string"], ["input", "object"]], outputKeys: ["data"] },
4963
5087
  "mergeAudio": { fields: [["mp3Urls", "array"]], outputKeys: ["audioUrl"] },
4964
5088
  "mergeVideos": { fields: [["videoUrls", "array"]], outputKeys: ["videoUrl"] },
5089
+ "meshyAnimate": { fields: [["rigTaskId", "string"], ["actionId", "number"]], outputKeys: ["glbUrl"] },
5090
+ "meshyImageTo3d": { fields: [["imageUrls", "array"]], outputKeys: ["glbUrl"] },
5091
+ "meshyRemesh": { fields: [], outputKeys: ["glbUrl"] },
5092
+ "meshyRig": { fields: [], outputKeys: ["glbUrl"] },
5093
+ "meshyTextTo3d": { fields: [["prompt", "string"]], outputKeys: ["glbUrl"] },
5094
+ "meshyTexture": { fields: [], outputKeys: ["glbUrl"] },
4965
5095
  "mixAudioIntoVideo": { fields: [["videoUrl", "string"], ["audioUrl", "string"], ["options", "object"]], outputKeys: ["videoUrl"] },
4966
5096
  "muteVideo": { fields: [["videoUrl", "string"]], outputKeys: ["videoUrl"] },
4967
5097
  "n8nRunNode": { fields: [["method", "string"], ["authentication", ["none", "basic", "string"]], ["user", "string"], ["password", "string"], ["webhookUrl", "string"], ["input", "object"]], outputKeys: ["data"] },
@@ -5037,7 +5167,12 @@ var monacoSnippets = {
5037
5167
  "videoRemoveBackground": { fields: [["videoUrl", "string"], ["newBackground", ["transparent", "image"]], ["engine", "string"]], outputKeys: ["videoUrl"] },
5038
5168
  "videoRemoveWatermark": { fields: [["videoUrl", "string"], ["engine", "string"]], outputKeys: ["videoUrl"] },
5039
5169
  "watermarkImage": { fields: [["imageUrl", "string"], ["watermarkImageUrl", "string"], ["corner", ["top-left", "top-right", "bottom-left", "bottom-right"]], ["paddingPx", "number"], ["widthPx", "number"]], outputKeys: ["imageUrl"] },
5040
- "watermarkVideo": { fields: [["videoUrl", "string"], ["imageUrl", "string"], ["corner", ["top-left", "top-right", "bottom-left", "bottom-right"]], ["paddingPx", "number"], ["widthPx", "number"]], outputKeys: ["videoUrl"] }
5170
+ "watermarkVideo": { fields: [["videoUrl", "string"], ["imageUrl", "string"], ["corner", ["top-left", "top-right", "bottom-left", "bottom-right"]], ["paddingPx", "number"], ["widthPx", "number"]], outputKeys: ["videoUrl"] },
5171
+ "youDotComFinanceResearch": { fields: [["input", "string"]], outputKeys: ["data"] },
5172
+ "youDotComGetPageContent": { fields: [["urls", "array"]], outputKeys: ["data"] },
5173
+ "youDotComLiveNews": { fields: [["query", "string"]], outputKeys: ["data"] },
5174
+ "youDotComWebResearch": { fields: [["input", "string"]], outputKeys: ["data"] },
5175
+ "youDotComWebSearch": { fields: [["query", "string"]], outputKeys: ["data"] }
5041
5176
  };
5042
5177
  var blockTypeAliases = {
5043
5178
  "userMessage": "generateText",