Skip to content

Commit c330a7d

Browse files
committed
Address review feedback
- Replace Thread.sleep with sendAndWait in PRVisualization - Fix top-level statements in multiple-sessions.md (wrap in class) - Fix .getMessage() → .getData().content() in MultipleSessions.java - Guard against null readLine() in AccessibilityReport.java - Add null-safe getCause() + InterruptedException handling in ErrorHandling.java - Fix paths: jbang commands now include recipe/ prefix - Fix root README path: cd java/recipe (not java/cookbook/recipe) - Fix recipe/README.md ralph-loop CLI example
1 parent 0b28003 commit c330a7d

File tree

4 files changed

+36
-42
lines changed

4 files changed

+36
-42
lines changed

cookbook/copilot-sdk/java/multiple-sessions.md

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -23,35 +23,35 @@ import com.github.copilot.sdk.json.*;
2323
2424
public class MultipleSessions {
2525
public static void main(String[] args) throws Exception {
26-
var client = new CopilotClient();
27-
client.start().get();
28-
29-
// Create multiple independent sessions
30-
var session1 = client.createSession(new SessionConfig()
31-
.setModel("gpt-5")
32-
.setOnPermissionRequest(PermissionHandler.APPROVE_ALL)).get();
33-
var session2 = client.createSession(new SessionConfig()
34-
.setModel("gpt-5")
35-
.setOnPermissionRequest(PermissionHandler.APPROVE_ALL)).get();
36-
var session3 = client.createSession(new SessionConfig()
37-
.setModel("claude-sonnet-4.5")
38-
.setOnPermissionRequest(PermissionHandler.APPROVE_ALL)).get();
39-
40-
// Each session maintains its own conversation history
41-
session1.sendAndWait(new MessageOptions().setPrompt("You are helping with a Python project")).get();
42-
session2.sendAndWait(new MessageOptions().setPrompt("You are helping with a TypeScript project")).get();
43-
session3.sendAndWait(new MessageOptions().setPrompt("You are helping with a Go project")).get();
44-
45-
// Follow-up messages stay in their respective contexts
46-
session1.sendAndWait(new MessageOptions().setPrompt("How do I create a virtual environment?")).get();
47-
session2.sendAndWait(new MessageOptions().setPrompt("How do I set up tsconfig?")).get();
48-
session3.sendAndWait(new MessageOptions().setPrompt("How do I initialize a module?")).get();
49-
50-
// Clean up all sessions
51-
session1.destroy().get();
52-
session2.destroy().get();
53-
session3.destroy().get();
54-
client.stop().get();
26+
try (var client = new CopilotClient()) {
27+
client.start().get();
28+
29+
// Create multiple independent sessions
30+
var session1 = client.createSession(new SessionConfig()
31+
.setModel("gpt-5")
32+
.setOnPermissionRequest(PermissionHandler.APPROVE_ALL)).get();
33+
var session2 = client.createSession(new SessionConfig()
34+
.setModel("gpt-5")
35+
.setOnPermissionRequest(PermissionHandler.APPROVE_ALL)).get();
36+
var session3 = client.createSession(new SessionConfig()
37+
.setModel("claude-sonnet-4.5")
38+
.setOnPermissionRequest(PermissionHandler.APPROVE_ALL)).get();
39+
40+
// Each session maintains its own conversation history
41+
session1.sendAndWait(new MessageOptions().setPrompt("You are helping with a Python project")).get();
42+
session2.sendAndWait(new MessageOptions().setPrompt("You are helping with a TypeScript project")).get();
43+
session3.sendAndWait(new MessageOptions().setPrompt("You are helping with a Go project")).get();
44+
45+
// Follow-up messages stay in their respective contexts
46+
session1.sendAndWait(new MessageOptions().setPrompt("How do I create a virtual environment?")).get();
47+
session2.sendAndWait(new MessageOptions().setPrompt("How do I set up tsconfig?")).get();
48+
session3.sendAndWait(new MessageOptions().setPrompt("How do I initialize a module?")).get();
49+
50+
// Clean up all sessions
51+
session1.destroy().get();
52+
session2.destroy().get();
53+
session3.destroy().get();
54+
}
5555
}
5656
}
5757
```

cookbook/copilot-sdk/java/pr-visualization.md

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -118,10 +118,7 @@ public class PRVisualization {
118118
Finally, summarize the PR health - average age, oldest PR, and how many might be considered stale.
119119
""", owner, repoName);
120120

121-
session.send(new MessageOptions().setPrompt(prompt));
122-
123-
// Wait a bit for initial processing
124-
Thread.sleep(10000);
121+
session.sendAndWait(new MessageOptions().setPrompt(prompt)).get();
125122

126123
// Interactive loop
127124
System.out.println("\n💡 Ask follow-up questions or type \"exit\" to quit.\n");
@@ -145,8 +142,7 @@ public class PRVisualization {
145142
break;
146143
}
147144

148-
session.send(new MessageOptions().setPrompt(input));
149-
Thread.sleep(2000); // Give time for response
145+
session.sendAndWait(new MessageOptions().setPrompt(input)).get();
150146
}
151147
}
152148

cookbook/copilot-sdk/java/recipe/PRVisualization.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -93,10 +93,7 @@ public static void main(String[] args) throws Exception {
9393
Finally, summarize the PR health - average age, oldest PR, and how many might be considered stale.
9494
""", owner, repoName);
9595

96-
session.send(new MessageOptions().setPrompt(prompt));
97-
98-
// Wait a bit for initial processing
99-
Thread.sleep(10000);
96+
session.sendAndWait(new MessageOptions().setPrompt(prompt)).get();
10097

10198
// Interactive loop
10299
System.out.println("\n💡 Ask follow-up questions or type \"exit\" to quit.\n");
@@ -120,8 +117,7 @@ public static void main(String[] args) throws Exception {
120117
break;
121118
}
122119

123-
session.send(new MessageOptions().setPrompt(input));
124-
Thread.sleep(2000); // Give time for response
120+
session.sendAndWait(new MessageOptions().setPrompt(input)).get();
125121
}
126122
}
127123

cookbook/copilot-sdk/java/recipe/README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,10 @@ jbang PRVisualization.java github/copilot-sdk
5454
jbang ManagingLocalFiles.java /path/to/your/folder
5555
```
5656

57-
**Ralph Loop with a prompt file:**
57+
**Ralph Loop with a custom prompt file:**
5858

59+
```bash
60+
jbang RalphLoop.java PROMPT_build.md 20
5961
```
6062

6163
## Why JBang?

0 commit comments

Comments
 (0)