Skip to content

[Demos] Refactor+Move waypoint into v2 - #579

Merged
ArielG-NV merged 6 commits into
NVIDIA:mainfrom
ArielG-NV:refactor-v2/waypoint-port
Sep 4, 2026
Merged

ArielG-NV merged 6 commits into
NVIDIA:mainfrom
ArielG-NV:refactor-v2/waypoint-port

Conversation

@ArielG-NV

Copy link
Copy Markdown
Collaborator

Related to larger porting effort: #479

Changes:

  • Adds a reusable action2v demo application for interactive action-conditioned video models. It owns the shared session loop, input mapping, and (mouse) cursor setup so integrations only need to provide their model-specific adapter. This is just initial support, extensive controller support (etc...) can be managed later.

  • Ports Waypoint to the v2 API using the new Action2V application. The Waypoint implementation, configuration, tests, and example controls are moved into the integrations_v2/waypoint dir.

  • Extends the IClientWindow and IUILoop protocols with support for hide_cursor and lock_cursor_to_window. UILoop requests are now bundled all in one object called UILoopRequest.

  • Adds runtime cursor control for native and WebRTC windows. Action2V requests a hidden cursor locked to the window through invoke_async. Default behavior is a visible not-locked-to-window cursor. WebRTC sends the initial cursor state when a client connects and only sends further updates when the effective options change.

@copy-pr-bot

copy-pr-bot Bot commented Sep 3, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@greptile-apps

greptile-apps Bot commented Sep 3, 2026 •

Copy link
Copy Markdown
Contributor

Greptile Summary

The PR introduces a reusable Action2V application, ports Waypoint to the v2 integration API, and adds runtime cursor visibility and capture controls.

  • Adds shared Action2V session, input accumulation, lifecycle, and dummy-demo infrastructure.
  • Moves Waypoint configuration, model implementation, adapter, and tests into integrations_v2/waypoint.
  • Bundles UI-loop requests and implements cursor updates for native and WebRTC windows.

Confidence Score: 4/5

The PR is not yet safe to merge because the previously reported promptless MP4 path still completes without generating video.

A missing prompt is still passed into T2VSession, whose model loop immediately reports itself finished, so the MP4 sink receives no generated frames.

Files Needing Attention: apps/t2v/t2v/application.py, apps/t2v/t2v/session.py

Important Files Changed

Filename Overview
apps/action2v/action2v/application.py Defines the reusable Action2V application configuration, argument handling, pipeline setup, and session creation.
apps/action2v/action2v/session.py Implements Action2V model-loop state, input-driven generation, deterministic reset behavior, and cursor requests.
flashdreams/flashdreams/api_v2/loop.py Extends UI-loop requests to bundle replacement-session and cursor-control options.
flashdreams/flashdreams/runtime_v2/session_runner.py Applies bundled cursor and replacement-session requests during the UI-loop lifecycle.
flashdreams/flashdreams/runtime_v2/serving/webrtc_server.py Propagates initial and changed cursor options to connected WebRTC clients.
integrations_v2/waypoint/apps/action2v/adapter.py Adapts Waypoint image loading, action mapping, and model configuration to the shared Action2V application.

Sequence Diagram

sequenceDiagram
    participant User
    participant Action2V
    participant SessionRunner
    participant UILoop
    participant Window
    participant Waypoint
    User->>Action2V: Start application with image and controls
    Action2V->>Waypoint: Resolve seed and construct adapter
    Action2V->>SessionRunner: Create Action2V session
    SessionRunner->>UILoop: Initialize UI loop
    UILoop->>Window: Request hidden, locked cursor
    Window-->>SessionRunner: Keyboard and mouse events
    SessionRunner->>Waypoint: Map actions and generate frames
    Waypoint-->>SessionRunner: Video chunk
    SessionRunner-->>Window: Present generated frames
Loading

Reviews (5): Last reviewed commit: "clean up and address review" | Re-trigger Greptile

Comment thread apps/t2v/t2v/application.py
@ArielG-NV
ArielG-NV force-pushed the refactor-v2/waypoint-port branch from 2be6b96 to 20ba4b1 Compare September 3, 2026 20:15
@ArielG-NV

Copy link
Copy Markdown
Collaborator Author

/ok to test 20ba4b1

@ArielG-NV ArielG-NV changed the title Refactor v2/waypoint port [Demos] Refactor+Move waypoint into v2 Sep 3, 2026
@ArielG-NV

Copy link
Copy Markdown
Collaborator Author

/ok to test f1eef2a

Comment thread apps/action2v/action2v/application.py Outdated
Comment thread apps/action2v/action2v/application.py Outdated
Comment thread apps/action2v/action2v/application.py Outdated
raise ValueError("--mouse-sensitivity must be finite and non-negative")
self._validate_arguments(args)

seed = secrets.randbits(63) if args.seed is None else args.seed

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if we use random seed by default, make sure the benchmark/CI is aware of that and provides the seed arg

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I will ensure use matches cam2v.

Comment thread apps/action2v/action2v/application.py
Comment thread integrations_v2/waypoint/impl/model_session.py Outdated
Comment thread flashdreams/flashdreams/runtime_v2/session_runner.py
Comment thread apps/action2v/action2v/session.py Outdated

def is_finished(self) -> bool:
"""Keep the live model loop running until the runtime stops it."""
return False

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P1] Public MP4/null launches have no finite completion or deterministic controls

Action2VModelLoop.is_finished() always returns False, while the public Action2V app accepts neither a control file nor an action limit. The CLI only exposes a wall-clock timeout, not the internal run_session(..., steps=...) bound used by tests. As a result, normal MP4/null execution cannot finish deterministically or replay a specified control trace, and the packaged example_controls.json is unreachable from the production path. This misses the bounded finite-replay requirement in #479. Please add a finite control source/action limit, finish when it is exhausted, and cover the public ApplicationRunner/CLI path.

@ArielG-NV ArielG-NV Sep 3, 2026 •

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note: comment was from Sol, I reviewed it, I need to modify skills/settings so my agents always attribute .

@ArielG-NV
ArielG-NV force-pushed the refactor-v2/waypoint-port branch from f1eef2a to 168014a Compare September 3, 2026 22:51
@ArielG-NV

Copy link
Copy Markdown
Collaborator Author

/ok to test 75907e9

@gtong-nv gtong-nv left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@ArielG-NV
ArielG-NV added this pull request to the merge queue Sep 4, 2026
Merged via the queue into NVIDIA:main with commit 29f0bc3 Sep 4, 2026
9 checks passed
@ArielG-NV
ArielG-NV deleted the refactor-v2/waypoint-port branch September 4, 2026 00:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants