Source-accurate inventory for CLI commands, plugin tools, relay channel commands, flags, and modes.
Status: active
Last updated: 2026-05-19
This reference is intentionally exhaustive and should stay synchronized with:
src/public-surface/source.tsscripts/generate-public-surface-manifest.mjssrc/public-surface/generated-manifest.tssrc/public-surface/generated-manifest.jsonsrc/cli/args.tssrc/cli/help.tssrc/tools/index.tsextension/src/ops/ops-runtime.tsextension/src/canvas/canvas-runtime.tssrc/browser/canvas-manager.tssrc/relay/protocol.ts
Operational mirror:
npx opendevbrowser --help(all commands with usage + primary flags, all grouped flags, all tools)npx opendevbrowser help(same inventory as--help)
First-contact note:
- Start with generated help and
docs/FIRST_RUN_ONBOARDING.md; this page stays inventory-only. - Generated help now leads with a
Find It Fastblock forscreencast / browser replay,desktop observation, andcomputer use / browser-scoped computer use; this page stays inventory-only. - Installer lifecycle owns refresh and cleanup of the canonical bundled skill packs; this page stays inventory-only.
install- Install the plugin.update- Repair OpenCode package caches and refresh managed skill packs.uninstall- Remove plugin from config.help- Show help.version- Show version.serve- Start or stop the local daemon.daemon- Install, uninstall, or inspect daemon auto-start.native- Install, uninstall, or inspect the native messaging host.run- Execute a JSON script in a single process.artifacts- Manage workflow artifact lifecycle.
launch- Launch a managed browser session via daemon.connect- Connect to an existing browser via daemon.disconnect- Disconnect a daemon session.status- Get daemon or session status.status-capabilities- Inspect runtime capability discovery for the host and an optional session.cookie-import- Import validated cookies into a session.cookie-list- List cookies for a session, optionally filtered by URL.research- Run research workflows.shopping- Run shopping workflows.product-video- Run product presentation asset workflows.inspiredesign- Run inspiredesign workflows and visual reference harvests.
goto- Navigate the current session to a URL.wait- Wait for load completion or a ref/state condition.snapshot- Capture a snapshot of the active page.review- Capture a first-class review payload for the active target.review-desktop- Capture desktop-assisted browser review with read-only desktop evidence and browser-owned verification.
click- Click an element by ref.hover- Hover an element by ref.press- Press a keyboard key.check- Check a checkbox by ref.uncheck- Uncheck a checkbox by ref.type- Type into an element by ref.select- Select values in a select by ref.scroll- Scroll the page or an element by ref.scroll-into-view- Scroll an element into view by ref.upload- Upload files to a file input or chooser by ref.pointer-move- Move the pointer to viewport coordinates.pointer-down- Press a mouse button at viewport coordinates.pointer-up- Release a mouse button at viewport coordinates.pointer-drag- Drag the pointer between two viewport coordinates.
targets-list- List page targets.target-use- Focus a target by id.target-new- Open a new target.target-close- Close a target by id.page- Open or focus a named page.pages- List named pages.page-close- Close a named page.
dom-html- Capture HTML for a ref.dom-text- Capture text for a ref.dom-attr- Capture an attribute value for a ref.dom-value- Capture an input value for a ref.dom-visible- Check visibility for a ref.dom-enabled- Check enabled state for a ref.dom-checked- Check checked state for a ref.
screenshot- Capture a still browser image.screencast-start- Start a browser replay capture that samples the existing screenshot lane.screencast-stop- Finalize and retrieve a browser replay capture by session and screencast id.
Browser capture behavior:
- Omitted screenshot output saves
.opendevbrowser/screenshot/<uuid>/capture.pngand returnspathplusartifact_path; explicit--pathremains caller-controlled. - Omitted screencast output saves replay files under
.opendevbrowser/screencast/<uuid>and returnsartifact_path; explicit--output-dirremains caller-controlled.
desktop-status- Inspect sibling desktop observation availability.desktop-windows- List observable desktop windows.desktop-active-window- Inspect the active desktop window.desktop-capture-desktop- Capture the current desktop surface.desktop-capture-window- Capture a specific desktop window.desktop-accessibility-snapshot- Capture desktop accessibility state.
Operational note:
- On macOS, this plane requires the local
swiftcommand for availability, window, and accessibility probes; missingswiftsurfacesdesktop_unsupported.
canvas- Execute a design-canvas command.
clone-page- Clone the active page to React.clone-component- Clone a component by ref.perf- Capture performance metrics.dialog- Inspect or handle a JavaScript dialog.console-poll- Poll console events.network-poll- Poll network events.debug-trace-snapshot- Capture page, console, network, and exception diagnostics.session-inspector- Capture a session-first diagnostic bundle with relay health, trace proof, and a suggested next action.session-inspector-plan- Inspect browser-scoped computer-use policy, eligibility, and safe suggested steps.session-inspector-audit- Capture a correlated audit bundle across desktop evidence, browser review, and policy state.macro-resolve- Resolve or execute a macro expression via provider actions.annotate- Request interactive annotations via direct or relay transport.rpc- Execute an internal daemon RPC command. CLI-only, internal power surface.
opendevbrowser_launch- Launch a managed browser session.opendevbrowser_connect- Connect to an existing browser session.opendevbrowser_disconnect- Disconnect a managed or connected session.opendevbrowser_status- Inspect session and relay status.opendevbrowser_status_capabilities- Inspect runtime capability discovery for the host and an optional session.opendevbrowser_cookie_import- Import validated cookies into a session.opendevbrowser_cookie_list- List cookies in a session with optional URL filters.
opendevbrowser_targets_list- List available page targets and tabs.opendevbrowser_target_use- Switch the active target by id.opendevbrowser_target_new- Create a new target or tab.opendevbrowser_target_close- Close a target or tab by id.opendevbrowser_page- Open or focus a named page.opendevbrowser_list- List named pages in the session.opendevbrowser_close- Close a named page.
opendevbrowser_goto- Navigate to a URL.opendevbrowser_wait- Wait for load, ref, or state conditions.opendevbrowser_snapshot- Capture AX-tree refs for actions.opendevbrowser_review- Capture a first-class review payload with status and actionables.opendevbrowser_review_desktop- Capture desktop-assisted browser review with read-only desktop evidence and browser-owned verification.opendevbrowser_click- Click an element by ref.opendevbrowser_hover- Hover an element by ref.opendevbrowser_press- Send a keyboard key.opendevbrowser_check- Check a checkbox or radio by ref.opendevbrowser_uncheck- Uncheck a checkbox or radio by ref.opendevbrowser_type- Type text into an input by ref.opendevbrowser_select- Set select values by ref.opendevbrowser_scroll- Scroll a page or element.opendevbrowser_scroll_into_view- Scroll a target element into view.opendevbrowser_upload- Upload files to a file input or chooser by ref.opendevbrowser_pointer_move- Move the pointer to viewport coordinates.opendevbrowser_pointer_down- Press a mouse button at viewport coordinates.opendevbrowser_pointer_up- Release a mouse button at viewport coordinates.opendevbrowser_pointer_drag- Drag the pointer between viewport coordinates.opendevbrowser_run- Execute multi-action automation scripts.
opendevbrowser_dom_get_html- Get HTML for a page or ref.opendevbrowser_dom_get_text- Get text for a page or ref.opendevbrowser_get_attr- Read a DOM attribute by ref.opendevbrowser_get_value- Read a form or control value by ref.opendevbrowser_is_visible- Check ref visibility.opendevbrowser_is_enabled- Check ref enabled state.opendevbrowser_is_checked- Check ref checked state.
opendevbrowser_screenshot- Capture a page screenshot and persist omitted outputs under.opendevbrowser/screenshot/<uuid>/capture.png.opendevbrowser_screencast_start- Start a browser replay screencast capture and persist omitted outputs under.opendevbrowser/screencast/<uuid>.opendevbrowser_screencast_stop- Stop a browser replay screencast capture and return artifact metadata.
opendevbrowser_desktop_status- Inspect public read-only desktop observation availability.opendevbrowser_desktop_windows- List windows exposed by the public read-only desktop observation plane.opendevbrowser_desktop_active_window- Inspect the active window through the public read-only desktop observation plane.opendevbrowser_desktop_capture_desktop- Capture the current desktop surface through the public read-only desktop observation plane.opendevbrowser_desktop_capture_window- Capture a specific window through the public read-only desktop observation plane.opendevbrowser_desktop_accessibility_snapshot- Capture desktop accessibility state through the public read-only desktop observation plane.
opendevbrowser_console_poll- Poll redacted console events.opendevbrowser_network_poll- Poll redacted network events.opendevbrowser_debug_trace_snapshot- Capture page, console, and network diagnostics.opendevbrowser_session_inspector- Capture a session-first diagnostic bundle with relay health, trace proof, and a suggested next action.opendevbrowser_session_inspector_plan- Inspect browser-scoped computer-use policy, eligibility, and safe suggested steps.opendevbrowser_session_inspector_audit- Capture a correlated audit bundle across desktop evidence, browser review, and policy state.opendevbrowser_perf- Collect browser performance metrics.opendevbrowser_dialog- Inspect or handle a JavaScript dialog.opendevbrowser_clone_page- Export the active page into React code.opendevbrowser_clone_component- Export a component by ref into React code.opendevbrowser_annotate- Capture interactive annotations.
opendevbrowser_canvas- Execute a typed design-canvas command surface call.
opendevbrowser_macro_resolve- Resolve or execute provider macro expressions.opendevbrowser_research_run- Run the research workflow directly.opendevbrowser_shopping_run- Run the shopping workflow directly.opendevbrowser_product_video_run- Run the product-video asset workflow directly.opendevbrowser_inspiredesign_run- Run the inspiredesign workflow directly, including harvest query discovery and visual evidence capture.opendevbrowser_prompting_guide- Return best-practice prompting guidance and the bundled quick start. Tool-only.opendevbrowser_skill_list- List available bundled and discovered skill packs. Tool-only.opendevbrowser_skill_load- Load a specific skill pack locally without browser work. Tool-only.
Workflow output note: omitted direct workflow tool output roots resolve through the workspace root to .opendevbrowser/<workflow>/<runId>. Explicit output roots are preserved as caller intent.
/ops is the high-level relay protocol used by default extension sessions.
Target.targetCreatedTarget.attachedToTargetTarget.targetDestroyedTarget.detachedFromTarget
session.launchsession.connectsession.disconnectsession.status
storage.setCookiesstorage.getCookies
targets.listtargets.usetargets.registerCanvastargets.newtargets.close
page.openpage.listpage.closepage.screenshotpage.dialog
Page.javascriptDialogOpeningPage.javascriptDialogClosedPage.fileChooserOpened
nav.gotonav.waitnav.snapshotnav.review
interact.clickinteract.hoverinteract.pressinteract.checkinteract.uncheckinteract.typeinteract.selectinteract.scrollinteract.scrollIntoViewinteract.upload
pointer.movepointer.downpointer.uppointer.drag
dom.getHtmldom.getTextdom.getAttrdom.getValuedom.isVisibledom.isEnableddom.isCheckeddom.refPoint
canvas.overlay.mountcanvas.overlay.unmountcanvas.overlay.selectcanvas.overlay.synccanvas.applyRuntimePreviewBridge
export.clonePageexport.cloneComponent
devtools.perfdevtools.consolePolldevtools.networkPoll
Envelope contract:
- request:
ops_request(requestId,opsSessionId,leaseId,command,payload) - success:
ops_response - error:
ops_error - stream/event:
ops_event,ops_chunk - liveness:
ops_ping,ops_pong
- Managed and
/ops-backed manager responses preserve the shipped blocker fieldsmeta.blocker,meta.blockerState, andmeta.blockerResolution. meta.challengeis additive and may appear on manager-shapedstatus,goto,wait, anddebugTraceSnapshotresponses after blocker reconciliation.meta.challengeOrchestrationis additive and may appear on manager-shapedstatus,goto,wait, andwaitForRefresponses after bounded challenge orchestration runs.meta.challengeOrchestrationand fallbackdetails.challengeOrchestrationcan includemode,source,standDownReason, andhelperEligibility.- Workflow and daemon surfaces expose the same override field name:
challengeAutomationMode. - Accepted override values are
off,browser, andbrowser_with_helper. - Effective precedence is
run > session > config. - Shipped config defaults resolve to helper-capable posture:
mode=browser_with_helperandoptionalComputerUseBridge.enabled=true. - The optional helper bridge stays browser-scoped and is not a desktop agent.
- Separate
desktop.*config gates the shipped public read-only desktop observation CLI and tool plane, while browser review remains the surfaced truth for challenge automation. No public desktop agent or desktop/opsfamily exists. - Provider browser fallback uses explicit transport
dispositionvalues:completed,challenge_preserved,deferred, andfailed, and may includedetails.challengeOrchestrationwhen the shared challenge plane ran during fallback. ProviderRegistryis the only durable anti-bot pressure authority. Workflow outputs keep their existing keys while reading registry-backed pressure instead of provider-local durable state.
- In scope: preserved sessions, low-level pointer control, visual observation loops, bounded auth-navigation and session-reuse attempts, reclaimable human yield packets, and owned-environment fixtures that use vendor test keys only.
- Out of scope: hidden bypasses, CAPTCHA-solving services, challenge token harvesting, or autonomous unsandboxed solving of third-party anti-bot systems.
/canvas is the typed design-canvas relay protocol used by opendevbrowser_canvas and the canvas CLI command. Canonical document mutations execute in core; extension runtime support is used for the extension-hosted canvas.html infinite-canvas editor, converged design-tab state sync, and overlay commands.
canvas.session.opencanvas.session.attachcanvas.session.statuscanvas.session.closecanvas.capabilities.getcanvas.plan.setcanvas.plan.get
canvas.document.loadcanvas.document.importcanvas.document.patchcanvas.history.undocanvas.history.redocanvas.document.savecanvas.document.export
canvas.inventory.listcanvas.inventory.insert
canvas.starter.listcanvas.starter.apply
canvas.tab.opencanvas.tab.closecanvas.overlay.mountcanvas.overlay.unmountcanvas.overlay.select
canvas.preview.rendercanvas.preview.refreshcanvas.feedback.pollcanvas.feedback.subscribecanvas.feedback.nextcanvas.feedback.unsubscribe
canvas.code.bindcanvas.code.unbindcanvas.code.pullcanvas.code.pushcanvas.code.statuscanvas.code.resolve
Extension runtime subset (internal relay helpers, not public agent commands):
canvas.tab.synccanvas.overlay.sync
Behavior notes:
canvas.session.opencreates a session and lease;canvas.session.attachjoins an existing session as anobserveror reclaims the write lease withattachMode=lease_reclaim.- Canvas guidance is centrally constructed with shared next-step advisory builders while preserving Canvas-native fields:
guidance.recommendedNextCommands,guidance.reason, and blockerrequiredNextCommands. - Repairable Canvas responses can also include typed
guidance.nextStepGuidance,guidance.paramsExamples,guidance.fieldExamples,guidance.validationChecks, andguidance.doNotProceedIfso agents can copy a valid repair shape instead of guessing. canvas.session.openreturns the first authoritative operator handshake.canvas.capabilities.getre-reads that handshake only after acanvasSessionIdexists; both includegenerationPlanRequirements.allowedValues,generationPlanIssues,warningClasses,mutationPolicy.allowedBeforePlan,guidance.recommendedNextCommands, and repair examples when a plan is missing or invalid.canvas.plan.setis the mutation gate. On success it returns accepted state plus next-step guidance; on failure it throwsgeneration_plan_invalidwithdetails.missingFields,details.issues,details.guidance.paramsExamples,details.guidance.fieldExamples,details.guidance.validationChecks, anddetails.guidance.doNotProceedIf.canvas.plan.getremains useful for diagnostics after that failure or after attach, but it is not required on the success path.canvas.document.patchsupports governance completion throughgovernance.updatepatch batches in addition to scene/node operations.canvas.document.patchalso supports reusable inventory mutations throughinventory.promote,inventory.update, andinventory.remove.canvas.document.importimports Figma file URLs, node URLs, or raw file-key inputs through the same lease-governed session flow. It caches image/SVG receipts under.opendevbrowser/canvas/assets/figma/<fileKey>/, records provenance indocument.meta.imports[], and treatsvariables/localfailures as typed degraded paths instead of opaque fatal errors.canvas.history.undoandcanvas.history.redoare lease-governed mutations. They returnhistory_emptybefore the first accepted-plan mutation, preserve selection and viewport preimages, and emithistory_invalidatedwhen external revision drift makes the recorded stack stale.- Extension design-tab history clicks emit the internal
canvas_eventtypecanvas_history_requested; the actual mutation still runs through publiccanvas.history.undoorcanvas.history.redoand should not be treated as a separate/canvascommand. - Accepted
canvas.document.patchbatches now auto-refresh every active preview target so browser verification stays in the same edit loop as the design tab. canvas.inventory.listis read-only and returns the merged reusable inventory surface: the current document-backed inventory plus the shipped built-in kit catalog entries.canvas.inventory.insertexpands either inventory template into new stage nodes under the requested or inferred parent.canvas.starter.listexposes the eight shipped built-in starters.canvas.starter.applyseeds a generation plan when missing, merges kit token collections intodocument.tokens, installs required kit entries intodocument.componentInventory, and inserts starter shell content onto the active page. Unsupported framework or adapter requests degrade to semantic shell nodes with typed feedback instead of failing the entire mutation. Starter payloads now preferlibraryAdapterIdfor the resolved built-in kit adapter; legacyadapterIdremains as a backward-compatible alias and should not be confused with code-syncframeworkAdapterId.canvas.document.saveandcanvas.document.exportcan fail withpolicy_violationwhenrequiredBeforeSavegovernance blocks are still missing.- Extension-hosted design tabs persist full same-origin editor state in
IndexedDB, rebroadcast converged state overBroadcastChannel, forward editor-originated patch requests throughcanvas_eventpayloads, and expose pages, layers, properties, history controls, and extension-stage region annotation. canvas.tab.openis the public command; internalcanvas.tab.synckeeps extension-hosted design tabs on the same core-rendered HTML materialization path after public mutations.canvas.code.*manages framework-adapter-backed bindings with repo-local manifests under.opendevbrowser/canvas/code-sync/<documentId>/<bindingId>.json. Built-in lanes currently ship forbuiltin:react-tsx-v2,builtin:html-static-v1,builtin:custom-elements-v1,builtin:vue-sfc-v1, andbuiltin:svelte-sfc-v1; legacytsx-react-v1bindings migrate on load tobuiltin:react-tsx-v2, and repo-local BYO adapter plugins load only from workspace metadata, repo manifests, or explicit local config declarations.canvas.preview.renderandcanvas.preview.refreshdefault to projectedcanvas_html, but bindings that opt intoprojection=bound_app_runtimeattempt in-place runtime reconciliation before falling back to canonical HTML projection.canvas.feedback.pollremains the snapshot query for cursor-based audits. Before the plan is accepted it synthesizes apreflight-blockeritem forplan_requiredorgeneration_plan_invalid, so agents can reuse the same loop for missing and invalid plan states.canvas.feedback.subscribereturnssubscriptionId,cursor,heartbeatMs,expiresAt,initialItems, andactiveTargetIds;canvas.feedback.nextreturns exactly onefeedback.item,feedback.heartbeat, orfeedback.completeevent;canvas.feedback.unsubscribeends the public pull stream. The CLIstream-jsonbridge now uses the same publicsubscribe -> next -> unsubscribecontract, and tool callers can do the same through repeatedopendevbrowser_canvascalls.canvas.session.statusandcanvas.code.statussurface attached clients, active lease holder, watch state, drift/conflict state, projection mode, fallback reasons, parity artifacts, available starter count, and the currently applied starter metadata.
Envelope contract:
- request:
canvas_request(requestId,canvasSessionId,leaseId,command,payload) - success:
canvas_response - error:
canvas_error - stream/event:
canvas_event,canvas_chunk - liveness:
canvas_ping,canvas_pong
Canvas event types:
canvas_session_createdcanvas_session_closed(payload.leaseIdrequired)canvas_session_expired(payload.leaseIdrequired)canvas_target_closedcanvas_document_snapshotcanvas_document_updatecanvas_presencecanvas_lease_changedcanvas_feedback_itemcanvas_patch_requestedcanvas_history_requestedcanvas_code_sync_startedcanvas_code_sync_appliedcanvas_code_sync_conflictcanvas_code_sync_failedcanvas_client_disconnected
/annotation is an internal relay lane used by annotate capture flows and extension send actions.
Commands:
startcancelfetch_storedstore_agent_payload
Behavior notes:
fetch_storedresolves the shared repo-local agent inbox path first and the extension-local stored payload fallback second.- Popup, canvas, and in-page
Sendactions dispatchannotation:sendPayloadto the extension background, which postsstore_agent_payloadover/annotation. - The relay handles
store_agent_payloadlocally, enqueues the sanitized payload into the sharedAgentInbox, and returns a typed receipt withreceiptId,deliveryState,storedFallback, optionalreason, optionalchatScopeKey, pluscreatedAt,itemCount,byteLength,source, andlabel. - Shared inbox persistence strips screenshots and keeps only asset refs plus the sanitized payload in
.opendevbrowser/annotate/agent-inbox.jsonl.
Envelope contract:
- request:
AnnotationCommand(requestId,command, optionalpayload/source/label/options) - success:
AnnotationResponsewith eitherpayloadorreceipt - error:
AnnotationResponsewitherror - stream/event:
RelayAnnotationEvent
/cdp relays low-level CDP messages and is explicitly opt-in (--extension-legacy).
Request envelope:
{
"id": 1,
"method": "Runtime.evaluate",
"params": { "expression": "document.title" },
"sessionId": "optional-flat-session-id"
}Response envelope:
{
"id": 1,
"result": { "result": { "type": "string", "value": "Example" } },
"sessionId": "optional-flat-session-id"
}Event envelope:
{
"method": "forwardCDPEvent",
"params": {
"method": "Runtime.consoleAPICalled",
"params": { "type": "log" },
"sessionId": "optional-flat-session-id"
}
}Auth and policy:
/ops,/canvas,/annotation, and/cdprequire?token=<relayToken>when pairing is enabled./opsis multi-client by design./canvasexposes typed design-session envelopes and reports relay usage viacanvasConnected./cdpis legacy and is typically subject to binding/lease coordination in hub mode.- Runtime concurrency key is
ExecutionKey = (sessionId,targetId). - Same target commands are FIFO; different targets in one session can run in parallel up to the governor cap.
- Legacy
/cdpremains sequential (effectiveParallelCap=1) for compatibility. - Extension headless is unsupported and returns
unsupported_modewhen extension-intent launch/connect is requested with headless. - Intentional parity exceptions must be listed in
docs/PARITY_DECLARED_DIVERGENCES.md.
TargetScoped:nav.*,interact.*,dom.*,export.*,devtools.*,page.screenshot,page.dialog
SessionStructural:session.*,targets.*,page.open,page.list,page.close, storage commands
extension(default when relay is available): launch/connect through/ops.managed:launch --no-extension(or explicit managed launch flags).extension-legacy:launch --extension-legacyorconnect --extension-legacythrough/cdp.cdpConnect: directconnect --ws-endpoint ...orconnect --host ... --cdp-port ....
--no-extension--extension-only--extension-legacy--wait-for-extension--wait-timeout-ms
- Global transport flag:
--transport relay|native(status and transport-aware flows). - Annotation transport flag:
annotate --transport auto|direct|relay. - Canvas wrapper flags:
canvas --command <canvas.*> --params|--params-file [--timeout-ms]. - Macro execute timeout flag:
macro-resolve --timeout-ms <ms>extends daemon-call timeout for slow execute runs. - Workflow and macro execute browser options:
research run,shopping run,product-video run,inspiredesign run,inspiredesign harvest, andmacro-resolve --executeaccept--browser-mode auto|extension|managed;extensionreuses relay-backed browser state, whilemanagedruns a deterministic managed browser. - Workflow and macro execute cookie options:
research run,shopping run,product-video run,inspiredesign run,inspiredesign harvest, andmacro-resolve --executeaccept--use-cookiesand--cookie-policy-override off|auto|required(--cookie-policyalias) so provider macros can require observable cookie-backed browser sessions. - Workflow and macro execute override flags:
research run,shopping run,product-video run,inspiredesign run,inspiredesign harvest, andmacro-resolve --executeaccept--challenge-automation-mode off|browser|browser_with_helper, which maps tochallengeAutomationModewithrun > session > configprecedence. - Inspiredesign harvest flags:
--query, repeatable--provider,--max-references 1..10, and--visual-evidence off|auto|required. Harvest requires--queryor at least one--url, keeps the daemon method asinspiredesign.run, defaults tomode=path,visualEvidence=required, andmaxReferences=5, and keeps explicit--urlreferences before discovered references. - Inspiredesign harvest supports browser-native site recipes for visually driven sites.
--provider social/pinterestselects the Pinterest recipe and should be run with extension mode, cookies, and--cookie-policy requiredwhen logged-in search is required. Compatible Pinterest URL recovery can run as--provider social/pinterest --url <pinterest-url>without--query; generic provider plus URL recovery without query remains rejected. Pinterest is not registered as a default full social provider. - Inspiredesign harvest artifacts:
visual-evidence.json,screenshot-index.json,ranked-references.json, andmeta-prompt.mdare emitted with screenshot PNGs undervisual-evidence/<referenceId>/viewport.png. JSON remains metadata-only with artifact-relative paths, hashes, byte counts, viewport metadata when available, reference id and URL, and warnings. ranked-references.json.rejectedReferencesserializes captured-but-rejected diagnostics, includinginterface_chrome_shell, without promoting those captures into design-facing references.- Inspiredesign visual policy boundaries: visual capture must not bypass
policy_blocked, unresolvedauth_required,challenge_detected, orrate_limited; blocked references surface diagnostics instead of browser screenshot fallback. - Workflow response keys: artifact-bearing workflow success payloads use
artifact_path; provider follow-up summaries usemeta.primaryConstraintSummary; typed recovery and handoff payloads usenextStepGuidance.readiness,reasonCode,primaryAction,paramsExamples,validationChecks,fallbackPolicy, anddoNotProceedIfwhen available. The inspiredesign CLI completion message includesreadiness=<value>when available so wrapper success is not confused with design readiness. - Continue to Canvas only when
nextStepGuidance.readinessisready. Forneeds_recovery,blocked, ordiagnostic_only, follow recovery-first guidance and do not treat emitted artifacts as design-ready. - Browser evidence omitted outputs use workspace-local artifact roots: screenshots write
.opendevbrowser/screenshot/<uuid>/capture.pngwithpathandartifact_path, and screencasts write.opendevbrowser/screencast/<uuid>with replay files. Explicit--pathand--output-dirremain caller-controlled. - Research and shopping guidance uses
meta.primaryConstraint.guidance.reasonplusmeta.primaryConstraint.guidance.recommendedNextCommands[]when provider recovery steps are known. Migrated workflow paths can includenextStepGuidancealongside those compatibility fields. - Failure tallies use
meta.metrics.reasonCodeDistributionfor research/shopping andmeta.reasonCodeDistributionfor product-video.
For complete argument and flag coverage by command, see docs/CLI.md.
npm run lint
npm run typecheck
npm run build
npm run test
npm run test -- tests/parity-matrix.test.ts
./skills/opendevbrowser-best-practices/scripts/validate-skill-assets.sh