@runtypelabs/cli 2.24.0 → 2.24.1

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 (2) hide show
  1. package/dist/index.js +41 -9
  2. package/package.json +3 -3
package/dist/index.js CHANGED
@@ -549,7 +549,7 @@ import { RuntypeApiError } from "@runtypelabs/sdk";
549
549
  // src/lib/sdk-client.ts
550
550
  import { createClient } from "@runtypelabs/sdk";
551
551
 
552
- // ../shared/dist/chunk-MYXAZOFG.mjs
552
+ // ../shared/dist/chunk-6FWWIIGE.mjs
553
553
  var travrseConfig = {
554
554
  name: "Travrse",
555
555
  nameLower: "travrse",
@@ -573,7 +573,7 @@ var runtypeConfig = {
573
573
  name: "Runtype",
574
574
  nameLower: "runtype",
575
575
  tagline: "Your AI Product Platform",
576
- description: "Build and deploy AI experiences faster than ever. Powerful API for developers, intuitive dashboard for teams.",
576
+ description: "The fastest way to ship agentic products. Prototype in minutes, prove it with evals, and ship to every surface on our cloud or yours.",
577
577
  url: "https://www.runtype.com",
578
578
  website: "https://runtype.com",
579
579
  domain: "runtype.com",
@@ -15566,7 +15566,7 @@ function resolveFallback(parsed, context, tracking) {
15566
15566
  }
15567
15567
  var templateEngine = new SimpleTemplateEngine();
15568
15568
 
15569
- // ../shared/dist/chunk-MMDRPM6Q.mjs
15569
+ // ../shared/dist/chunk-ONVX3P3J.mjs
15570
15570
  var tokensSchema = external_exports.object({ input: external_exports.number(), output: external_exports.number() });
15571
15571
  var wireStopReasonSchema = external_exports.enum([
15572
15572
  "end_turn",
@@ -15904,7 +15904,17 @@ var unifiedAwaitEventSchema = external_exports.object({
15904
15904
  parameters: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
15905
15905
  awaitedAt: external_exports.string().optional(),
15906
15906
  origin: external_exports.enum(["webmcp", "sdk"]).optional(),
15907
- pageOrigin: external_exports.string().optional()
15907
+ pageOrigin: external_exports.string().optional(),
15908
+ // Discriminates an AUTO-RESUMING durable pause (`crawl_pending` /
15909
+ // `durable_poll`, resumed server-side by the crawl / wait-until
15910
+ // Workflow) from a CLIENT-RESOLVABLE local-tool / WebMCP await (absent), so a
15911
+ // streaming consumer does not render a "resume" prompt for a pause that
15912
+ // resumes itself. Mirrors the JSON `pausedReason` discriminator
15913
+ // (execution-pipeline.ts); the server-resumed pauses carry `crawlId` /
15914
+ // `stepId` instead of the tool fields. UX context; never a control signal.
15915
+ awaitReason: external_exports.string().optional(),
15916
+ crawlId: external_exports.string().optional(),
15917
+ stepId: external_exports.string().optional()
15908
15918
  });
15909
15919
  var unifiedErrorEventSchema = external_exports.object({
15910
15920
  ...unifiedBase,
@@ -16400,7 +16410,17 @@ var flowAwaitEventSchema = external_exports.object({
16400
16410
  parameters: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
16401
16411
  awaitedAt: external_exports.string(),
16402
16412
  origin: external_exports.enum(["webmcp", "sdk"]).optional(),
16403
- pageOrigin: external_exports.string().optional()
16413
+ pageOrigin: external_exports.string().optional(),
16414
+ // Discriminates an AUTO-RESUMING durable pause (`crawl_pending` /
16415
+ // `durable_poll`, resumed server-side by the crawl / wait-until
16416
+ // Workflow) from a CLIENT-RESOLVABLE local-tool / WebMCP await (absent). The
16417
+ // server-resumed pauses carry `crawlId` / `stepId` instead of the tool fields.
16418
+ // Open `z.string()` (not an enum) for forward-compat — kept in lockstep with
16419
+ // the JSON `pausedReason` discriminator in execution-pipeline.ts. UX context;
16420
+ // never a control signal.
16421
+ awaitReason: external_exports.string().optional(),
16422
+ crawlId: external_exports.string().optional(),
16423
+ stepId: external_exports.string().optional()
16404
16424
  });
16405
16425
  var stepStartEventSchema = external_exports.object({
16406
16426
  ...baseFlowEvent,
@@ -33327,7 +33347,7 @@ var CORE_BUILTIN_TOOLS_REGISTRY = [
33327
33347
  {
33328
33348
  id: "exa",
33329
33349
  name: "Exa",
33330
- description: "Search the web using neural and keyword algorithms. Returns relevant content with optional summaries, highlights, and full text.",
33350
+ description: "Search the web using neural and keyword algorithms. Returns relevant content with optional summaries, highlights, and full text. Tuned for retrieval and not blocked by anti-bot defenses, so prefer this over the raw fetch-url/crawl flow steps for research against sites that block datacenter traffic.",
33331
33351
  category: BuiltInToolCategory.WEB_SEARCH,
33332
33352
  providers: [BuiltInToolProvider.MULTI],
33333
33353
  parametersSchema: {
@@ -33402,7 +33422,7 @@ var CORE_BUILTIN_TOOLS_REGISTRY = [
33402
33422
  {
33403
33423
  id: "firecrawl",
33404
33424
  name: "Firecrawl",
33405
- description: "Scrape and extract content from a URL as markdown. Provide a url and optional formats array.",
33425
+ description: "Scrape and extract content from a URL as markdown. Provide a url and optional formats array. Handles rendering and anti-bot measures, so prefer this over a raw HTTP fetch when a site blocks, rate-limits, or challenges datacenter (non-human) traffic.",
33406
33426
  category: BuiltInToolCategory.WEB_SCRAPING,
33407
33427
  providers: [BuiltInToolProvider.MULTI],
33408
33428
  parametersSchema: {
@@ -42146,10 +42166,10 @@ var FLOW_STEP_TYPE_METADATA = {
42146
42166
  configHints: "vectorsSource, destination, idTemplate, outputVariable"
42147
42167
  },
42148
42168
  crawl: {
42149
- description: "Crawl a website and extract content from pages.",
42169
+ description: "Crawl a website with Cloudflare Browser Rendering and extract page content as markdown. Renders the SEED page fully; at depth >= 1 it enumerates child links WITHOUT rendering them (1 rendered seed record + N empty-markdown child records) and follows only ABSOLUTE link hrefs (relative links like item?id= are never followed). Writes { crawlId, status, result, resultPages[] } to outputVariable \u2014 flatten resultPages[].records[] (each { url, status, markdown?, metadata? }) to read every page. GOTCHA: the URL query string is DROPPED (https://site/item?id=42 crawls https://site/item) \u2014 for query-string URLs, JSON APIs, SPAs, or single detail/comment pages use fetch-url or the builtin:firecrawl scrape tool instead (firecrawl preserves query strings). ASYNC by default: with no streaming consumer (MCP run_flow/dispatch) the flow durably PAUSES while a Workflow polls; if the crawl exceeds completionTimeoutMs (default 120000 = 2 min) the step SILENTLY resumes with output = null. For real crawls raise completionTimeoutMs (e.g. 600000) and set pollIntervalMs (e.g. 5000), or set asyncCrawl:false to poll inline within the request (good for smoke tests).",
42150
42170
  category: "integration",
42151
42171
  isPrompt: false,
42152
- configHints: "url, limit, depth, outputVariable"
42172
+ configHints: 'url (required; query string is dropped), outputVariable (required), depth (0 = seed-only render, recommended), limit, formats (e.g. ["markdown"]), render, options ({ includePatterns, excludePatterns, allowSubdomains, allowExternalLinks, ignoreSitemap, sitemapOnly }), waitForSelector, completionTimeoutMs (default 120000; raise for slow crawls), pollIntervalMs, asyncCrawl (false = synchronous inline polling), errorHandling ({ onError: "continue"|"fail" } OBJECT, not a bare string), defaultValue. Pattern for "index + detail/comment pages": crawl the index with depth 0, transform-data to extract the links/ids from result markdown, then an agent prompt step (mode: "agent") with tools.toolIds ["builtin:firecrawl"] to fetch each query-string detail URL.'
42153
42173
  },
42154
42174
  "paginate-api": {
42155
42175
  description: "Fetch paginated data from an API endpoint across multiple pages.",
@@ -42867,6 +42887,7 @@ ${orthogonalLines.join("\n")}
42867
42887
  - **Web search (provider-native, inline citations)** \u2192 see Provider-Native Search section above
42868
42888
  - **Web search (standalone, AI-powered)** \u2192 \`builtin:exa\`
42869
42889
  - **Simple web scraping to markdown** \u2192 \`builtin:firecrawl\`
42890
+ - **Research/scraping a site that blocks bots** \u2192 prefer \`builtin:firecrawl\` or \`builtin:exa\` over the raw \`fetch-url\`/\`crawl\` flow steps. Those steps request from datacenter IPs flagged as non-human traffic, so sites behind a WAF/anti-bot service often return a 403, CAPTCHA, or empty body. A mixed approach (fetch first, fall back to Firecrawl/Exa on a block) is the most reliable.
42870
42891
  - **Rendered web pages, screenshots, structured extraction, or link harvesting** \u2192 \`builtin:browser:markdown\`, \`builtin:browser:snapshot\`, \`builtin:browser:json\`, \`builtin:browser:scrape\`, \`builtin:browser:links\` (stateless, one-shot \u2014 cheap, no session overhead)
42871
42892
  - **Autonomous browsing (just want the outcome \u2014 extract data, complete a form, find info on a page)** \u2192 \`builtin:browser:agent\` with a natural-language \`goal\` plus \`startUrl\` (fresh browser) or \`sessionId\` (continue an existing session). Stagehand handles observe/act/extract; you get back text or, with an \`outputSchema\`, structured JSON. Try this BEFORE reaching for the manual session tools below.
42872
42893
  - **Interactive browsing (precise control over individual actions)** \u2192 \`builtin:browser:open\` to start a session, then \`builtin:browser:click\`, \`builtin:browser:type\`, \`builtin:browser:scroll\`, \`builtin:browser:session-screenshot\`, \`builtin:browser:evaluate\`, \`builtin:browser:navigate\`, and \`builtin:browser:close\` when done. Session tools maintain cookies and page state across calls but cost more than stateless tools \u2014 prefer stateless tools when a single page read suffices.
@@ -42932,6 +42953,7 @@ Tools are added to prompt steps via \`tools: { toolIds: ["<id>"] }\`. The AI mod
42932
42953
  - **Web search (provider-native, inline citations)** \u2192 see the Provider-Native Search section
42933
42954
  - **Web search (standalone, AI-powered)** \u2192 \`builtin:exa\`
42934
42955
  - **Simple web scraping to markdown** \u2192 \`builtin:firecrawl\`
42956
+ - **Research/scraping a site that blocks bots** \u2192 prefer \`builtin:firecrawl\` or \`builtin:exa\` over the raw \`fetch-url\`/\`crawl\` flow steps. Those steps request from datacenter IPs flagged as non-human traffic, so sites behind a WAF/anti-bot service often return a 403, CAPTCHA, or empty body. A mixed approach (fetch first, fall back to Firecrawl/Exa on a block) is the most reliable.
42935
42957
  - **Rendered web pages, screenshots, structured extraction, or link harvesting** \u2192 \`builtin:browser:markdown\`, \`builtin:browser:snapshot\`, \`builtin:browser:json\`, \`builtin:browser:scrape\`, \`builtin:browser:links\` (stateless, one-shot)
42936
42958
  - **Autonomous browsing (just want the outcome)** \u2192 \`builtin:browser:agent\` with a natural-language \`goal\` plus \`startUrl\` or \`sessionId\` \u2014 try this BEFORE the manual session tools
42937
42959
  - **Interactive browsing (precise control)** \u2192 \`builtin:browser:open\`, then \`builtin:browser:click\` / \`type\` / \`scroll\` / \`session-screenshot\` / \`evaluate\` / \`navigate\`, and \`builtin:browser:close\` when done
@@ -43952,6 +43974,15 @@ var RuntimeProxyToolConfigSchema = external_exports.object({
43952
43974
  toolCallStrategy: external_exports.enum(["auto", "required", "none"]).optional(),
43953
43975
  onToolError: external_exports.enum(["fail", "continue", "retry"]).optional()
43954
43976
  });
43977
+ var RuntimeProxyProviderTransportSchema = external_exports.object({
43978
+ mixlayer: external_exports.object({
43979
+ modelApi: external_exports.enum(["chat", "responses"]).optional(),
43980
+ responsesTransport: external_exports.enum(["http", "websocket"]).optional()
43981
+ }).optional(),
43982
+ openai: external_exports.object({
43983
+ responsesTransport: external_exports.enum(["http", "websocket"]).optional()
43984
+ }).optional()
43985
+ });
43955
43986
  var RuntimeProxyRequestSchema = external_exports.object({
43956
43987
  model: external_exports.string().min(1),
43957
43988
  prompt: external_exports.string().default(""),
@@ -43968,6 +43999,7 @@ var RuntimeProxyRequestSchema = external_exports.object({
43968
43999
  seed: external_exports.number().int().optional(),
43969
44000
  tools: external_exports.array(RuntimeProxyToolSchema).optional(),
43970
44001
  providerTools: external_exports.array(RuntimeProxyProviderToolSchema).optional(),
44002
+ providerTransport: RuntimeProxyProviderTransportSchema.optional(),
43971
44003
  toolConfiguration: RuntimeProxyToolConfigSchema.optional()
43972
44004
  }).optional().default({})
43973
44005
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@runtypelabs/cli",
3
- "version": "2.24.0",
3
+ "version": "2.24.1",
4
4
  "description": "Command-line interface for Runtype AI platform",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -24,7 +24,7 @@
24
24
  "rosie-skills": "0.8.1",
25
25
  "yaml": "^2.9.0",
26
26
  "@runtypelabs/ink-components": "0.3.4",
27
- "@runtypelabs/sdk": "5.6.0",
27
+ "@runtypelabs/sdk": "5.7.0",
28
28
  "@runtypelabs/terminal-animations": "0.2.1"
29
29
  },
30
30
  "devDependencies": {
@@ -39,7 +39,7 @@
39
39
  "tsx": "^4.7.1",
40
40
  "typescript": "^6.0.3",
41
41
  "vitest": "^4.1.0",
42
- "@runtypelabs/shared": "1.42.6"
42
+ "@runtypelabs/shared": "1.43.1"
43
43
  },
44
44
  "engines": {
45
45
  "node": ">=22.0.0"