@rtrvr-ai/rover 4.1.0 → 4.2.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.
- package/README.md +21 -11
- package/dist/agentDiscovery.d.ts +1 -0
- package/dist/agentDiscovery.js +11 -8
- package/dist/embed.js +303 -86
- package/dist/index.d.ts +31 -1
- package/dist/ownerInstall.js +13 -8
- package/dist/previewBootstrap.d.ts +20 -0
- package/dist/previewBootstrap.js +132 -9
- package/dist/rover.js +303 -86
- package/dist/worker/rover-worker.js +13 -15
- package/package.json +1 -1
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` |
|
|
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
|
|
|
@@ -588,13 +595,13 @@ Content-Type: application/json
|
|
|
588
595
|
|
|
589
596
|
{
|
|
590
597
|
"url": "https://www.rtrvr.ai",
|
|
591
|
-
"
|
|
598
|
+
"prompt": "Get me the latest blog post",
|
|
592
599
|
"capabilityId": "latest_blog_post",
|
|
593
600
|
"accept": { "modes": ["text", "json"] }
|
|
594
601
|
}
|
|
595
602
|
```
|
|
596
603
|
|
|
597
|
-
Use the explicit A2W run envelope with `
|
|
604
|
+
Use the explicit A2W run envelope with `prompt` for natural-language instructions and `shortcutId` for saved journeys. `goal` is still accepted as a compatibility alias.
|
|
598
605
|
|
|
599
606
|
Callers may also provide structured visiting-agent metadata:
|
|
600
607
|
|
|
@@ -604,7 +611,7 @@ Content-Type: application/json
|
|
|
604
611
|
|
|
605
612
|
{
|
|
606
613
|
"url": "https://www.rtrvr.ai",
|
|
607
|
-
"
|
|
614
|
+
"prompt": "Get me the latest blog post",
|
|
608
615
|
"agent": {
|
|
609
616
|
"key": "gpt-5.4-demo-agent",
|
|
610
617
|
"name": "GPT-5.4 Demo Agent",
|
|
@@ -627,6 +634,8 @@ The returned run URL is the canonical resource:
|
|
|
627
634
|
- `DELETE` to cancel
|
|
628
635
|
- a `workflow` URL when the run belongs to an aggregated multi-site workflow
|
|
629
636
|
|
|
637
|
+
Run creation may return `202 Accepted` before work is complete. The payload includes `links.poll`, `links.stream`, `links.ndjson`, `terminalStatuses`, `interactiveStatuses`, and `retryAfterMs` so outside agents can keep following the run without guessing.
|
|
638
|
+
|
|
630
639
|
Run creation may also return browser handoff URLs:
|
|
631
640
|
|
|
632
641
|
- `open`: clean receipt URL for browser attach
|
|
@@ -635,7 +644,7 @@ Run creation may also return browser handoff URLs:
|
|
|
635
644
|
The run URL remains canonical; receipt links are only a browser handoff layer over that same run.
|
|
636
645
|
|
|
637
646
|
- `Prefer: execution=browser` keeps execution browser-first
|
|
638
|
-
- `Prefer: execution=cloud` is the explicit browserless path
|
|
647
|
+
- `Prefer: execution=cloud, wait=10` is the explicit browserless path for callers that want a short initial wait before following the returned links
|
|
639
648
|
- `Prefer: execution=auto` prefers browser attach first; delayed cloud auto-promotion is a follow-up robustness phase
|
|
640
649
|
|
|
641
650
|
Rover deep links like `?rover=` and `?rover_shortcut=` remain the simple browser-first entrypoints; `/v1/a2w/runs` is the machine-oriented protocol. Cross-site workflows and handoffs extend that same public contract rather than replacing it.
|
|
@@ -645,12 +654,13 @@ Rover deep links like `?rover=` and `?rover_shortcut=` remain the simple browser
|
|
|
645
654
|
Rover normalizes visiting-agent attribution in this order:
|
|
646
655
|
|
|
647
656
|
1. verified signed signal
|
|
648
|
-
2.
|
|
649
|
-
3.
|
|
650
|
-
4.
|
|
651
|
-
5.
|
|
657
|
+
2. Signature-Agent directory/signature-envelope evidence without full request verification
|
|
658
|
+
3. explicit `agent` object on A2W run creation or handoffs
|
|
659
|
+
4. heuristic headers such as `User-Agent`, `Signature-Agent`, `Signature`, `Signature-Input`, and `X-RTRVR-Client-Id`
|
|
660
|
+
5. advanced local fallbacks such as RoverBook `identityResolver`
|
|
661
|
+
6. anonymous fallback
|
|
652
662
|
|
|
653
|
-
Trust tiers are `verified_signed`, `signed_directory_only`, `self_reported`, `heuristic`, and `anonymous`.
|
|
663
|
+
Trust tiers are `verified_signed`, `signed_directory_only`, `self_reported`, `heuristic`, and `anonymous`. The stored `agentKey` is chosen from explicit agent key fields first, then `clientId`, then `Signature-Agent`, then previous attribution. `signed_directory_only` means the chosen identity had Signature-Agent directory/signature-envelope evidence, but no completed HTTP Message Signature verification. Loose headers without that evidence remain `heuristic`.
|
|
654
664
|
|
|
655
665
|
### Cross-site workflows and handoffs
|
|
656
666
|
|
package/dist/agentDiscovery.d.ts
CHANGED
package/dist/agentDiscovery.js
CHANGED
|
@@ -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 === '
|
|
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,12 +519,13 @@ 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,
|
|
524
526
|
payload: {
|
|
525
527
|
url: normalizeSiteUrl(config.siteUrl),
|
|
526
|
-
|
|
528
|
+
shortcutId: id,
|
|
527
529
|
},
|
|
528
530
|
preferExecution: config.preferExecution || 'auto',
|
|
529
531
|
},
|
|
@@ -879,6 +881,7 @@ export function createRoverAgentCard(config) {
|
|
|
879
881
|
instructions: [
|
|
880
882
|
'Prefer exact Rover shortcuts and explicit site tools over raw DOM automation when the user goal matches a published skill.',
|
|
881
883
|
'Use POST /v1/a2w/runs when you need structured A2W progress, continuation input, or a stable final result channel.',
|
|
884
|
+
'For browserless calls, send Prefer: execution=cloud, wait=10 and follow links.stream, links.ndjson, or links.poll until terminal or input_required.',
|
|
882
885
|
'Fall back to generic DOM automation only when no matching Rover shortcut or explicit tool exists for the requested outcome.',
|
|
883
886
|
],
|
|
884
887
|
capabilitiesGraph: capabilityGraph.capabilities,
|
|
@@ -1025,15 +1028,15 @@ export function createRoverAgentDiscoveryTags(config) {
|
|
|
1025
1028
|
const escapedRoverSiteJson = escapeScriptJson(roverSiteJson);
|
|
1026
1029
|
const escapedPageManifestJson = escapeScriptJson(pageManifestJson);
|
|
1027
1030
|
const lines = [
|
|
1028
|
-
`<script type="application/agent+json">${markerJson}</script>`,
|
|
1029
|
-
`<link rel="service-desc" href="${escapeHtmlAttr(serviceDescHref)}" type="application/json" />`,
|
|
1031
|
+
`<script type="application/agent+json" data-rover-agent-discovery="marker">${markerJson}</script>`,
|
|
1032
|
+
`<link rel="service-desc" href="${escapeHtmlAttr(serviceDescHref)}" type="application/json" data-rover-agent-discovery="service-desc" />`,
|
|
1030
1033
|
];
|
|
1031
1034
|
if (llmsUrl) {
|
|
1032
|
-
lines.push(`<link rel="service-doc" href="${escapeHtmlAttr(llmsUrl)}" type="text/markdown" />`);
|
|
1035
|
+
lines.push(`<link rel="service-doc" href="${escapeHtmlAttr(llmsUrl)}" type="text/markdown" data-rover-agent-discovery="service-doc" />`);
|
|
1033
1036
|
}
|
|
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>`);
|
|
1037
|
+
lines.push(`<script type="application/rover-site+json" data-rover-agent-discovery="rover-site">${escapedRoverSiteJson}</script>`);
|
|
1038
|
+
lines.push(`<script type="application/rover-page+json" data-rover-agent-discovery="page">${escapedPageManifestJson}</script>`);
|
|
1039
|
+
lines.push(`<script type="application/agent-card+json" data-rover-agent-discovery="agent-card">${escapedCardJson}</script>`);
|
|
1037
1040
|
return lines.join('\n');
|
|
1038
1041
|
}
|
|
1039
1042
|
export { createRoverAgentDiscoverySnapshot };
|