@rtrvr-ai/rover 4.1.0 → 4.2.0

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/README.md CHANGED
@@ -514,10 +514,17 @@ const RoverWidget = dynamic(() => import('./RoverWidget'), { ssr: false });
514
514
  | `ui.thoughtStyle` | `'concise_cards' \| 'minimal'` | `'concise_cards'` | Thought rendering style |
515
515
  | `ui.panel.resizable` | `boolean` | `true` | Enables desktop freeform resizing plus phone/tablet snap-height resizing with per-device memory |
516
516
  | `ui.showTaskControls` | `boolean` | `true` | Show new/end task controls |
517
- | `ui.shortcuts` | `RoverShortcut[]` | `[]` | Suggested journeys (max 100 stored, max 12 rendered by default; lower site-key policy caps are enforced). Shortcuts can also publish agent-facing metadata such as `tags`, `examples`, `inputSchema`, `outputSchema`, `sideEffect`, and `requiresConfirmation`. |
517
+ | `ui.shortcuts` | `RoverShortcut[]` | `[]` | Suggested journeys (max 100 stored, max 12 rendered by default; lower site-key policy caps are enforced). Set `runKind: 'guide'` for onboarding/demo journeys that should narrate under the guided default. Shortcuts can also publish agent-facing metadata such as `tags`, `examples`, `inputSchema`, `outputSchema`, `sideEffect`, and `requiresConfirmation`. |
518
518
  | `cloudSandboxEnabled` | `boolean` | `false` | Owner-facing shorthand for cloud execution plus approved third-party browsing. When `true`, Rover materializes `tools.web.enableExternalWebContext=true` and `tools.web.scrapeMode='on_demand'`. |
519
519
  | `ui.greeting` | `{ text?, delay?, duration?, disabled? }` | — | Greeting bubble config (`{name}` token supported) |
520
520
  | `ui.voice` | `{ enabled?: boolean; language?: string; autoStopMs?: number }` | — | Browser dictation for supported Chromium browsers. Rover fills the draft live, waits for post-speech silence before stopping, and the user still sends manually. |
521
+ | `ui.experience.audio.narration.enabled` | `boolean` | `true` | Owner gate for Web Speech step narration. Visitors get a site-scoped speaker toggle when supported. |
522
+ | `ui.experience.audio.narration.defaultMode` | `'guided' \| 'always' \| 'off'` | `'guided'` | Speak guided/demo runs by default, every run, or stay off unless the visitor enables it. |
523
+ | `ui.experience.audio.narration.rate` | `number` | `1` | Web Speech playback rate, clamped to `0.85`-`1.15`. |
524
+ | `ui.experience.audio.narration.language` | `string` | `'en-US'` | Preferred narration language for voice matching. |
525
+ | `ui.experience.audio.narration.voicePreference` | `'auto' \| 'system' \| 'natural'` | `'auto'` | Voice matching preference; `natural` prefers higher-quality browser voices when available. |
526
+ | `ui.experience.motion.actionSpotlight` | `boolean` | `true` | Highlights the element Rover is clicking, typing into, selecting, or scrolling to. |
527
+ | `ui.experience.motion.actionSpotlightColor` | `"#RRGGBB"` | `"#FF4C00"` | Ring and glow color for Action Spotlight. |
521
528
 
522
529
  ### Web Tools
523
530
 
@@ -530,7 +537,7 @@ const RoverWidget = dynamic(() => import('./RoverWidget'), { ssr: false });
530
537
  | `tools.web.denyDomains` | `string[]` | `[]` | External context denylist |
531
538
  | `tools.client` | `ClientToolDefinition[]` | `[]` | Runtime-registered client tools. Tool definitions can include `title`, `outputSchema`, and `annotations` (`whenToUse`, `whyUse`, `examples`, `sideEffect`, `requiresConfirmation`) to improve model tool selection and discovery-card quality. |
532
539
  | `agentDiscovery` | `{ enabled?, siteName?, description?, version?, siteUrl?, agentCardUrl?, roverSiteUrl?, llmsUrl?, hostSurfaceSelector?, preferExecution?, discoverySurface?, additionalSkills? }` | — | Optional overrides for Rover's generated discovery surfaces. `rover-site.json` is the authoritative rich profile, `agent-card.json` is the interop card, and `discoverySurface.beaconLabel` now feeds the visible seed/presence CTA text in production. Legacy `visibleCue` / `visibleCueLabel` remain compatibility inputs only. |
533
- | `pageConfig` | `RoverPageCaptureConfig` | | Optional per-site page-capture overrides such as `disableAutoScroll`, settle timing, and sparse-tree retry settings |
540
+ | `pageConfig` | `RoverPageCaptureConfig` | `{ disableAutoScroll: true }` for generated installs | Optional per-site page-capture overrides such as `disableAutoScroll`, settle timing, and sparse-tree retry settings. Set `disableAutoScroll: false` only when automatic page-capture scrolling is desired. |
534
541
 
535
542
  ### AI-Callable URLs (Deep Links)
536
543
 
@@ -63,6 +63,7 @@ export type RoverPublicSkillDefinition = {
63
63
  shortcutId?: string;
64
64
  prompt?: string;
65
65
  routing?: 'auto' | 'act' | 'planner';
66
+ runKind?: 'guide' | 'task';
66
67
  toolName?: string;
67
68
  run?: {
68
69
  endpoint: string;
@@ -414,7 +414,7 @@ function normalizeAnnotations(value) {
414
414
  requiresConfirmation: typeof annotations.requiresConfirmation === 'boolean'
415
415
  ? annotations.requiresConfirmation
416
416
  : undefined,
417
- preferredInterface: annotations.preferredInterface === 'task'
417
+ preferredInterface: annotations.preferredInterface === 'run'
418
418
  || annotations.preferredInterface === 'shortcut'
419
419
  || annotations.preferredInterface === 'client_tool'
420
420
  || annotations.preferredInterface === 'webmcp'
@@ -472,6 +472,7 @@ function normalizePublishedShortcut(shortcut) {
472
472
  prompt,
473
473
  ...(description ? { description } : {}),
474
474
  ...(shortcut.routing ? { routing: shortcut.routing } : {}),
475
+ ...(shortcut.runKind === 'guide' || shortcut.runKind === 'task' ? { runKind: shortcut.runKind } : {}),
475
476
  };
476
477
  }
477
478
  function buildShortcutSkill(shortcut, config, runEndpoint) {
@@ -518,6 +519,7 @@ function buildShortcutSkill(shortcut, config, runEndpoint) {
518
519
  shortcutId: id,
519
520
  prompt,
520
521
  routing: shortcut.routing,
522
+ runKind: shortcut.runKind,
521
523
  deepLink: buildDeepLink(config.siteUrl, id),
522
524
  run: {
523
525
  endpoint: runEndpoint,
@@ -1025,15 +1027,15 @@ export function createRoverAgentDiscoveryTags(config) {
1025
1027
  const escapedRoverSiteJson = escapeScriptJson(roverSiteJson);
1026
1028
  const escapedPageManifestJson = escapeScriptJson(pageManifestJson);
1027
1029
  const lines = [
1028
- `<script type="application/agent+json">${markerJson}</script>`,
1029
- `<link rel="service-desc" href="${escapeHtmlAttr(serviceDescHref)}" type="application/json" />`,
1030
+ `<script type="application/agent+json" data-rover-agent-discovery="marker">${markerJson}</script>`,
1031
+ `<link rel="service-desc" href="${escapeHtmlAttr(serviceDescHref)}" type="application/json" data-rover-agent-discovery="service-desc" />`,
1030
1032
  ];
1031
1033
  if (llmsUrl) {
1032
- lines.push(`<link rel="service-doc" href="${escapeHtmlAttr(llmsUrl)}" type="text/markdown" />`);
1034
+ lines.push(`<link rel="service-doc" href="${escapeHtmlAttr(llmsUrl)}" type="text/markdown" data-rover-agent-discovery="service-doc" />`);
1033
1035
  }
1034
- lines.push(`<script type="application/rover-site+json">${escapedRoverSiteJson}</script>`);
1035
- lines.push(`<script type="application/rover-page+json">${escapedPageManifestJson}</script>`);
1036
- lines.push(`<script type="application/agent-card+json">${escapedCardJson}</script>`);
1036
+ lines.push(`<script type="application/rover-site+json" data-rover-agent-discovery="rover-site">${escapedRoverSiteJson}</script>`);
1037
+ lines.push(`<script type="application/rover-page+json" data-rover-agent-discovery="page">${escapedPageManifestJson}</script>`);
1038
+ lines.push(`<script type="application/agent-card+json" data-rover-agent-discovery="agent-card">${escapedCardJson}</script>`);
1037
1039
  return lines.join('\n');
1038
1040
  }
1039
1041
  export { createRoverAgentDiscoverySnapshot };