Get desktop application:
View/edit binary Protocol Buffers messages
Fired when the side pane's Canvas parse (`useCanvasParse`) settles. Covers both success and failure outcomes so a single event powers conversion (success / total) and failure-rate analytics. Emitted at most once per distinct (projectId, environmentId, before, after) input set.
dbt project file path the parse was run for.
Outcome of the parse — success vs. error.
Which side failed when status = ERROR. NONE when status = SUCCESS.
Error message surfaced from parseSql when status = ERROR. Empty otherwise.
Character count of the pre-edit ("before") SQL fed into parseSql. Zero when no before content was provided (new file).
Character count of the post-edit ("after") SQL fed into parseSql.
True when the before parse also succeeded and the pane rendered a DAG-diff; false when the pane fell back to a single-DAG view of the after content. Only meaningful when status = SUCCESS.
Wall-clock duration of the parseSql round-trip in milliseconds (start to settle). Captured via performance.now().
Which side of the diff failed to parse. BEFORE-only failure is non-fatal (the pane falls back to a single-DAG view of the after content) so it is reported as NONE rather than as its own value.
Used in:
No failure — the parse succeeded.
The after-edit parse failed; the canvas view is unavailable.
Both before and after parses failed.
Outcome of the parseSql calls fired by the side pane's Canvas view.
Used in:
Fired when the user clicks a kickout destination (Open in Editor, Open in Catalog) from either the inline DiffCard or the side pane's "Open in..." menu. Canvas kickouts are tracked separately via OpenInCanvasCtaClicked in canvas.proto and are intentionally not duplicated here.
dbt project file path the kickout was clicked against.
Destination the user kicked out to.
Which surface the kickout was clicked from.
The active view in the side pane when the kickout was clicked. Only meaningful when surface = SIDE_PANE; for INLINE_DIFF_CARD callsites this will be UNSPECIFIED.
Which surface the kickout was clicked from.
Used in:
The inline DiffCard rendered in the chat transcript.
The "Open in..." menu in the side pane header.
Which kickout destination the user clicked from a Beacon DiffCard or the side pane "Open in..." menu. Canvas is intentionally excluded — the Studio→Canvas kickout is already tracked via the OpenInCanvasCta* events in canvas.proto.
Used in:
The dbt platform editor (labeled "Editor" inside Studio, "Studio" when Beacon is embedded full-screen — same destination, label flips on the surface).
The dbt platform Catalog page for the file's node.
Why the side pane closed. Distinguishes user-initiated closes from the automatic close that fires when the user switches chat threads.
Used in:
The user clicked the close (X) button in the pane header.
The active chat thread changed and the pane was closed automatically so the previous thread's diff doesn't read as the new thread's diff.
Fallback for cases where the pane closed but no specific reason was captured (e.g. provider unmount during navigation).
Fired when the Beacon side pane closes (CopilotSidePaneContext.close()).
Which view was active when the user closed the pane.
Why the pane closed — user-initiated close vs. automatic close from a chat-thread change, etc.
What surface triggered the side pane to open.
Used in:
The "Open" button on the in-chat DiffMessage. Also covers the whole-card / icon click target and the auto-open on a pending edit approval — all map back to the same DiffMessage surface and a single source value is sufficient.
An "Open in Canvas" CTA in chat (e.g. on a model preview / handoff card).
Fired when the Beacon side pane opens (CopilotSidePaneContext.open()). Gated on the ve-2061-beacon-split-pane LD flag.
Which view was opened.
What surface triggered the open.
dbt project file path shown in the pane (for diff view; empty for views that don't have a single file).
Which view is active in the Beacon side pane.
Used in: , , ,
Fired when the user switches between views inside the side pane via the SegmentedButton toggle (e.g. Diff <-> Canvas). The pane stays open.
The view that was active before the toggle.
The view the user toggled to.