Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Fix formatting: Rust nightly rustfmt, Python ruff, Node prettier
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
  • Loading branch information
SteveSandersonMS and Copilot committed May 26, 2026
commit 8f03311ec19ccd80062e8504b0b1c978e6e056bb
5 changes: 3 additions & 2 deletions nodejs/src/canvas.ts
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,9 @@ export interface CanvasOptions {
actions?: CanvasAction[];

/** Required. Open a new canvas instance. */
open: (ctx: CanvasProviderOpenRequest) => Promise<CanvasProviderOpenResult> | CanvasProviderOpenResult;
open: (
ctx: CanvasProviderOpenRequest
) => Promise<CanvasProviderOpenResult> | CanvasProviderOpenResult;

/**
* Optional. Notified when a canvas instance is closed by the user, the
Expand Down Expand Up @@ -158,4 +160,3 @@ export class Canvas {
export function createCanvas(options: CanvasOptions): Canvas {
return new Canvas(options);
}

4 changes: 3 additions & 1 deletion python/test_canvas.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,9 @@ def __init__(self) -> None:

async def on_open(self, ctx: CanvasProviderOpenRequest) -> CanvasProviderOpenResult:
self.open_calls.append(ctx)
return CanvasProviderOpenResult(url="https://canvas.example", title="Hi", status="ready")
return CanvasProviderOpenResult(
url="https://canvas.example", title="Hi", status="ready"
)

async def on_close(self, ctx: CanvasProviderCloseRequest) -> None:
self.close_calls.append(ctx)
Expand Down
10 changes: 8 additions & 2 deletions rust/src/canvas.rs
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,10 @@ mod tests {

#[async_trait]
impl CanvasHandler for EchoHandler {
async fn on_open(&self, ctx: CanvasProviderOpenRequest) -> CanvasResult<CanvasProviderOpenResult> {
async fn on_open(
&self,
ctx: CanvasProviderOpenRequest,
) -> CanvasResult<CanvasProviderOpenResult> {
Ok(CanvasProviderOpenResult {
url: Some(format!("https://example.test/{}", ctx.canvas_id)),
title: Some("Echo".to_string()),
Expand Down Expand Up @@ -216,7 +219,10 @@ mod tests {
struct OpenOnly;
#[async_trait]
impl CanvasHandler for OpenOnly {
async fn on_open(&self, _ctx: CanvasProviderOpenRequest) -> CanvasResult<CanvasProviderOpenResult> {
async fn on_open(
&self,
_ctx: CanvasProviderOpenRequest,
) -> CanvasResult<CanvasProviderOpenResult> {
Ok(CanvasProviderOpenResult {
url: None,
title: None,
Expand Down
3 changes: 1 addition & 2 deletions rust/src/generated/api_types.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,7 @@ use super::session_events::{
AbortReason, McpServerSource, McpServerStatus, PermissionPromptRequest, PermissionRule,
ReasoningSummary, SessionMode, ShutdownType, SkillSource, UserToolSessionApproval,
};
use crate::types::SessionEvent;
use crate::types::{RequestId, SessionId};
use crate::types::{RequestId, SessionEvent, SessionId};

/// JSON-RPC method name constants.
pub mod rpc_methods {
Expand Down
65 changes: 35 additions & 30 deletions rust/tests/e2e/canvas.rs
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,13 @@ impl TestCanvasHandler {

#[async_trait]
impl CanvasHandler for TestCanvasHandler {
async fn on_open(&self, ctx: CanvasProviderOpenRequest) -> CanvasResult<CanvasProviderOpenResult> {
async fn on_open(
&self,
ctx: CanvasProviderOpenRequest,
) -> CanvasResult<CanvasProviderOpenResult> {
self.open_calls.lock().push(ctx.clone());
Ok(CanvasProviderOpenResult {
url: Some(format!(
"https://example.com/counter/{}",
ctx.instance_id
)),
url: Some(format!("https://example.com/counter/{}", ctx.instance_id)),
title: Some(format!("Counter {}", ctx.instance_id)),
status: Some("ready".to_string()),
})
Expand Down Expand Up @@ -116,20 +116,19 @@ async fn canvas_open_round_trip() {
let open_result = session
.rpc()
.canvas()
.open(github_copilot_sdk::generated::api_types::CanvasOpenRequest {
canvas_id: "counter".to_string(),
instance_id: "counter-1".to_string(),
extension_id: Some(canvas.extension_id.clone()),
input: Some(json!({ "start": 41 })),
})
.open(
github_copilot_sdk::generated::api_types::CanvasOpenRequest {
canvas_id: "counter".to_string(),
instance_id: "counter-1".to_string(),
extension_id: Some(canvas.extension_id.clone()),
input: Some(json!({ "start": 41 })),
},
)
.await
.expect("open canvas");

assert_eq!(open_result.instance_id, "counter-1");
assert_eq!(
open_result.title.as_deref(),
Some("Counter counter-1")
);
assert_eq!(open_result.title.as_deref(), Some("Counter counter-1"));
assert_eq!(open_result.status.as_deref(), Some("ready"));
assert_eq!(
open_result.url.as_deref(),
Expand Down Expand Up @@ -176,12 +175,14 @@ async fn canvas_invoke_action_round_trip() {
session
.rpc()
.canvas()
.open(github_copilot_sdk::generated::api_types::CanvasOpenRequest {
canvas_id: "counter".to_string(),
instance_id: "counter-2".to_string(),
extension_id: Some(canvas.extension_id.clone()),
input: Some(json!({})),
})
.open(
github_copilot_sdk::generated::api_types::CanvasOpenRequest {
canvas_id: "counter".to_string(),
instance_id: "counter-2".to_string(),
extension_id: Some(canvas.extension_id.clone()),
input: Some(json!({})),
},
)
.await
.expect("open canvas");

Expand Down Expand Up @@ -233,12 +234,14 @@ async fn canvas_close_round_trip() {
session
.rpc()
.canvas()
.open(github_copilot_sdk::generated::api_types::CanvasOpenRequest {
canvas_id: "counter".to_string(),
instance_id: "counter-3".to_string(),
extension_id: Some(canvas.extension_id.clone()),
input: Some(json!({})),
})
.open(
github_copilot_sdk::generated::api_types::CanvasOpenRequest {
canvas_id: "counter".to_string(),
instance_id: "counter-3".to_string(),
extension_id: Some(canvas.extension_id.clone()),
input: Some(json!({})),
},
)
.await
.expect("open canvas");

Expand All @@ -247,9 +250,11 @@ async fn canvas_close_round_trip() {
session
.rpc()
.canvas()
.close(github_copilot_sdk::generated::api_types::CanvasCloseRequest {
instance_id: "counter-3".to_string(),
})
.close(
github_copilot_sdk::generated::api_types::CanvasCloseRequest {
instance_id: "counter-3".to_string(),
},
)
.await
.expect("close canvas");

Expand Down
5 changes: 4 additions & 1 deletion rust/tests/session_test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,10 @@ struct TestCanvasHandler;

#[async_trait]
impl CanvasHandler for TestCanvasHandler {
async fn on_open(&self, ctx: CanvasProviderOpenRequest) -> CanvasResult<CanvasProviderOpenResult> {
async fn on_open(
&self,
ctx: CanvasProviderOpenRequest,
) -> CanvasResult<CanvasProviderOpenResult> {
Ok(CanvasProviderOpenResult {
url: Some(format!("https://example.test/{}", ctx.canvas_id)),
title: Some("Test Canvas".to_string()),
Expand Down
Loading