Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
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
17 changes: 10 additions & 7 deletions docs/features/custom-agents.md
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ package main
import (
"context"
copilot "github.com/github/copilot-sdk/go"
"github.com/github/copilot-sdk/go/rpc"
)

func main() {
Expand All @@ -128,8 +129,8 @@ func main() {
Prompt: "You are a code editor. Make minimal, surgical changes to files as requested.",
},
},
OnPermissionRequest: func(req copilot.PermissionRequest, inv copilot.PermissionInvocation) (copilot.PermissionRequestResult, error) {
return copilot.PermissionRequestResult{Kind: copilot.PermissionRequestResultKindApproved}, nil
OnPermissionRequest: func(req copilot.PermissionRequest, inv copilot.PermissionInvocation) (rpc.PermissionDecision, error) {
return &rpc.PermissionDecisionApproveOnce{}, nil
},
})
_ = session
Expand Down Expand Up @@ -160,8 +161,8 @@ session, _ := client.CreateSession(ctx, &copilot.SessionConfig{
Prompt: "You are a code editor. Make minimal, surgical changes to files as requested.",
},
},
OnPermissionRequest: func(req copilot.PermissionRequest, inv copilot.PermissionInvocation) (copilot.PermissionRequestResult, error) {
return copilot.PermissionRequestResult{Kind: copilot.PermissionRequestResultKindApproved}, nil
OnPermissionRequest: func(req copilot.PermissionRequest, inv copilot.PermissionInvocation) (rpc.PermissionDecision, error) {
return &rpc.PermissionDecisionApproveOnce{}, nil
},
})
```
Expand All @@ -173,6 +174,7 @@ session, _ := client.CreateSession(ctx, &copilot.SessionConfig{

```csharp
using GitHub.Copilot;
using GitHub.Copilot.Rpc;

await using var client = new CopilotClient();
await using var session = await client.CreateSessionAsync(new SessionConfig
Expand All @@ -198,7 +200,7 @@ await using var session = await client.CreateSessionAsync(new SessionConfig
},
},
OnPermissionRequest = (req, inv) =>
Task.FromResult(new PermissionRequestResult { Kind = PermissionRequestResultKind.Approved }),
Task.FromResult(PermissionDecision.ApproveOnce()),
});
```

Expand Down Expand Up @@ -519,6 +521,7 @@ import (
"context"
"fmt"
copilot "github.com/github/copilot-sdk/go"
"github.com/github/copilot-sdk/go/rpc"
)

func main() {
Expand All @@ -528,8 +531,8 @@ func main() {

session, _ := client.CreateSession(ctx, &copilot.SessionConfig{
Model: "gpt-4.1",
OnPermissionRequest: func(req copilot.PermissionRequest, inv copilot.PermissionInvocation) (copilot.PermissionRequestResult, error) {
return copilot.PermissionRequestResult{Kind: copilot.PermissionRequestResultKindApproved}, nil
OnPermissionRequest: func(req copilot.PermissionRequest, inv copilot.PermissionInvocation) (rpc.PermissionDecision, error) {
return &rpc.PermissionDecisionApproveOnce{}, nil
},
})

Expand Down
22 changes: 13 additions & 9 deletions docs/features/hooks.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ package main
import (
"context"
copilot "github.com/github/copilot-sdk/go"
"github.com/github/copilot-sdk/go/rpc"
)

func onSessionStart(input copilot.SessionStartHookInput, inv copilot.HookInvocation) (*copilot.SessionStartHookOutput, error) {
Expand All @@ -112,8 +113,8 @@ func main() {
OnPreToolUse: onPreToolUse,
OnPostToolUse: onPostToolUse,
},
OnPermissionRequest: func(req copilot.PermissionRequest, inv copilot.PermissionInvocation) (copilot.PermissionRequestResult, error) {
return copilot.PermissionRequestResult{Kind: copilot.PermissionRequestResultKindApproved}, nil
OnPermissionRequest: func(req copilot.PermissionRequest, inv copilot.PermissionInvocation) (rpc.PermissionDecision, error) {
return &rpc.PermissionDecisionApproveOnce{}, nil
},
})
_ = session
Expand All @@ -132,8 +133,8 @@ session, err := client.CreateSession(ctx, &copilot.SessionConfig{
OnPostToolUse: onPostToolUse,
// ... add only the hooks you need
},
OnPermissionRequest: func(req copilot.PermissionRequest, inv copilot.PermissionInvocation) (copilot.PermissionRequestResult, error) {
return copilot.PermissionRequestResult{Kind: copilot.PermissionRequestResultKindApproved}, nil
OnPermissionRequest: func(req copilot.PermissionRequest, inv copilot.PermissionInvocation) (rpc.PermissionDecision, error) {
return &rpc.PermissionDecisionApproveOnce{}, nil
},
})
```
Expand All @@ -146,6 +147,7 @@ session, err := client.CreateSession(ctx, &copilot.SessionConfig{
<!-- docs-validate: hidden -->
```csharp
using GitHub.Copilot;
using GitHub.Copilot.Rpc;

public static class HooksExample
{
Expand All @@ -169,7 +171,7 @@ public static class HooksExample
OnPostToolUse = onPostToolUse,
},
OnPermissionRequest = (req, inv) =>
Task.FromResult(new PermissionRequestResult { Kind = PermissionRequestResultKind.Approved }),
Task.FromResult(PermissionDecision.ApproveOnce()),
});
}
}
Expand All @@ -189,7 +191,7 @@ var session = await client.CreateSessionAsync(new SessionConfig
// ... add only the hooks you need
},
OnPermissionRequest = (req, inv) =>
Task.FromResult(new PermissionRequestResult { Kind = PermissionRequestResultKind.Approved }),
Task.FromResult(PermissionDecision.ApproveOnce()),
});
```

Expand Down Expand Up @@ -293,6 +295,7 @@ import (
"context"
"fmt"
copilot "github.com/github/copilot-sdk/go"
"github.com/github/copilot-sdk/go/rpc"
)

func main() {
Expand All @@ -313,8 +316,8 @@ func main() {
return &copilot.PreToolUseHookOutput{PermissionDecision: "allow"}, nil
},
},
OnPermissionRequest: func(req copilot.PermissionRequest, inv copilot.PermissionInvocation) (copilot.PermissionRequestResult, error) {
return copilot.PermissionRequestResult{Kind: copilot.PermissionRequestResultKindApproved}, nil
OnPermissionRequest: func(req copilot.PermissionRequest, inv copilot.PermissionInvocation) (rpc.PermissionDecision, error) {
return &rpc.PermissionDecisionApproveOnce{}, nil
},
})
_ = session
Expand Down Expand Up @@ -348,6 +351,7 @@ session, _ := client.CreateSession(ctx, &copilot.SessionConfig{
<!-- docs-validate: hidden -->
```csharp
using GitHub.Copilot;
using GitHub.Copilot.Rpc;

public static class PermissionControlExample
{
Expand Down Expand Up @@ -376,7 +380,7 @@ public static class PermissionControlExample
},
},
OnPermissionRequest = (req, inv) =>
Task.FromResult(new PermissionRequestResult { Kind = PermissionRequestResultKind.Approved }),
Task.FromResult(PermissionDecision.ApproveOnce()),
});
}
}
Expand Down
23 changes: 14 additions & 9 deletions docs/features/image-input.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ package main
import (
"context"
copilot "github.com/github/copilot-sdk/go"
"github.com/github/copilot-sdk/go/rpc"
)

func main() {
Expand All @@ -110,8 +111,8 @@ func main() {

session, _ := client.CreateSession(ctx, &copilot.SessionConfig{
Model: "gpt-4.1",
OnPermissionRequest: func(req copilot.PermissionRequest, inv copilot.PermissionInvocation) (copilot.PermissionRequestResult, error) {
return copilot.PermissionRequestResult{Kind: copilot.PermissionRequestResultKindApproved}, nil
OnPermissionRequest: func(req copilot.PermissionRequest, inv copilot.PermissionInvocation) (rpc.PermissionDecision, error) {
return &rpc.PermissionDecisionApproveOnce{}, nil
},
})

Expand All @@ -136,8 +137,8 @@ client.Start(ctx)

session, _ := client.CreateSession(ctx, &copilot.SessionConfig{
Model: "gpt-4.1",
OnPermissionRequest: func(req copilot.PermissionRequest, inv copilot.PermissionInvocation) (copilot.PermissionRequestResult, error) {
return copilot.PermissionRequestResult{Kind: copilot.PermissionRequestResultKindApproved}, nil
OnPermissionRequest: func(req copilot.PermissionRequest, inv copilot.PermissionInvocation) (rpc.PermissionDecision, error) {
return &rpc.PermissionDecisionApproveOnce{}, nil
},
})

Expand All @@ -161,6 +162,7 @@ session.Send(ctx, copilot.MessageOptions{
<!-- docs-validate: hidden -->
```csharp
using GitHub.Copilot;
using GitHub.Copilot.Rpc;

public static class ImageInputExample
{
Expand All @@ -171,7 +173,7 @@ public static class ImageInputExample
{
Model = "gpt-4.1",
OnPermissionRequest = (req, inv) =>
Task.FromResult(new PermissionRequestResult { Kind = PermissionRequestResultKind.Approved }),
Task.FromResult(PermissionDecision.ApproveOnce()),
});

await session.SendAsync(new MessageOptions
Expand All @@ -193,13 +195,14 @@ public static class ImageInputExample

```csharp
using GitHub.Copilot;
using GitHub.Copilot.Rpc;

await using var client = new CopilotClient();
await using var session = await client.CreateSessionAsync(new SessionConfig
{
Model = "gpt-4.1",
OnPermissionRequest = (req, inv) =>
Task.FromResult(new PermissionRequestResult { Kind = PermissionRequestResultKind.Approved }),
Task.FromResult(PermissionDecision.ApproveOnce()),
});

await session.SendAsync(new MessageOptions
Expand Down Expand Up @@ -321,6 +324,7 @@ package main
import (
"context"
copilot "github.com/github/copilot-sdk/go"
"github.com/github/copilot-sdk/go/rpc"
)

func main() {
Expand All @@ -330,8 +334,8 @@ func main() {

session, _ := client.CreateSession(ctx, &copilot.SessionConfig{
Model: "gpt-4.1",
OnPermissionRequest: func(req copilot.PermissionRequest, inv copilot.PermissionInvocation) (copilot.PermissionRequestResult, error) {
return copilot.PermissionRequestResult{Kind: copilot.PermissionRequestResultKindApproved}, nil
OnPermissionRequest: func(req copilot.PermissionRequest, inv copilot.PermissionInvocation) (rpc.PermissionDecision, error) {
return &rpc.PermissionDecisionApproveOnce{}, nil
},
})

Expand Down Expand Up @@ -375,6 +379,7 @@ session.Send(ctx, copilot.MessageOptions{
<!-- docs-validate: hidden -->
```csharp
using GitHub.Copilot;
using GitHub.Copilot.Rpc;

public static class BlobAttachmentExample
{
Expand All @@ -385,7 +390,7 @@ public static class BlobAttachmentExample
{
Model = "gpt-4.1",
OnPermissionRequest = (req, inv) =>
Task.FromResult(new PermissionRequestResult { Kind = PermissionRequestResultKind.Approved }),
Task.FromResult(PermissionDecision.ApproveOnce()),
});

var base64ImageData = "...";
Expand Down
11 changes: 6 additions & 5 deletions docs/features/remote-sessions.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,8 @@ session.on(on_event)
client, _ := copilot.NewClient(&copilot.ClientOptions{Remote: true})
session, _ := client.CreateSession(ctx, &copilot.SessionConfig{
WorkingDirectory: "/path/to/github-repo",
OnPermissionRequest: func(req copilot.PermissionRequest, inv copilot.PermissionInvocation) (copilot.PermissionRequestResult, error) {
return copilot.PermissionRequestResult{Kind: copilot.PermissionRequestResultKindApproved}, nil
OnPermissionRequest: func(req copilot.PermissionRequest, inv copilot.PermissionInvocation) (rpc.PermissionDecision, error) {
return &rpc.PermissionDecisionApproveOnce{}, nil
},
})

Expand All @@ -81,7 +81,7 @@ var session = await client.CreateSessionAsync(new SessionConfig
{
WorkingDirectory = "/path/to/github-repo",
OnPermissionRequest = (req, inv) =>
Task.FromResult(new PermissionRequestResult { Kind = PermissionRequestResultKind.Approved }),
Task.FromResult(PermissionDecision.ApproveOnce()),
});

session.On((SessionEvent e) =>
Expand All @@ -97,15 +97,16 @@ session.On((SessionEvent e) =>

<!-- docs-validate: skip -->
```rust
use github_copilot_sdk::{Client, ClientOptions, PermissionRequestResult, SessionConfig};
use github_copilot_sdk::{Client, ClientOptions, SessionConfig};
use github_copilot_sdk::handler::PermissionResult;

let client = Client::start(
ClientOptions::new().with_enable_remote_sessions(true)
).await?;
let session = client.create_session(
SessionConfig::new("/path/to/github-repo")
.with_permission_handler(|_req, _inv| async {
Ok(PermissionRequestResult::approved())
Ok(PermissionResult::approve_once())
}),
).await?;

Expand Down
8 changes: 5 additions & 3 deletions docs/features/session-persistence.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ package main
import (
"context"
copilot "github.com/github/copilot-sdk/go"
"github.com/github/copilot-sdk/go/rpc"
)

func main() {
Expand All @@ -79,8 +80,8 @@ func main() {
session, _ := client.CreateSession(ctx, &copilot.SessionConfig{
SessionID: "user-123-task-456",
Model: "gpt-5.2-codex",
OnPermissionRequest: func(req copilot.PermissionRequest, inv copilot.PermissionInvocation) (copilot.PermissionRequestResult, error) {
return copilot.PermissionRequestResult{Kind: copilot.PermissionRequestResultKindApproved}, nil
OnPermissionRequest: func(req copilot.PermissionRequest, inv copilot.PermissionInvocation) (rpc.PermissionDecision, error) {
return &rpc.PermissionDecisionApproveOnce{}, nil
},
})

Expand Down Expand Up @@ -202,6 +203,7 @@ session.SendAndWait(ctx, copilot.MessageOptions{Prompt: "What did we discuss ear
<!-- docs-validate: hidden -->
```csharp
using GitHub.Copilot;
using GitHub.Copilot.Rpc;

public static class ResumeSessionExample
{
Expand All @@ -212,7 +214,7 @@ public static class ResumeSessionExample
var session = await client.ResumeSessionAsync("user-123-task-456", new ResumeSessionConfig
{
OnPermissionRequest = (req, inv) =>
Task.FromResult(new PermissionRequestResult { Kind = PermissionRequestResultKind.Approved }),
Task.FromResult(PermissionDecision.ApproveOnce()),
});

await session.SendAndWaitAsync(new MessageOptions { Prompt = "What did we discuss earlier?" });
Expand Down
Loading
Loading