You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Bring Java into parity for scenario-builds.yml #1423
Consider this statement from Phase 05 of 80-java-monorepo-add-01-remove-before-merge/dd-2989727-move-java-to-monorepo-plan.md.
Update scenario-builds.yml to include Java scenarios (if applicable).
Analysis
The scenario-builds.yml workflow verifies that example scenarios under scenarios compile for each SDK language. Java is completely absent — there are zero Java implementations in any scenario directory, and the workflow has no Java job or path triggers.
Current state of scenarios
Each scenario (e.g., gh-app) contains subdirectories per language (typescript/, python, go, csharp/, sometimes rust). Java has none.
What's needed
Two things:
Create Java implementations inside select scenario directories (e.g., test/scenarios/auth/gh-app/java/, test/scenarios/tools/custom-agents/java/, etc.) — each with a pom.xml referencing the local SDK and a Main.java demonstrating the feature.
Add a build-java job to scenario-builds.yml — sets up JDK 17, finds all test/scenarios/*/java/pom.xml files, and builds each one.
Proposed Plan
Phase A: Determine scope — Decide which scenarios get Java implementations. Candidates (matching what other core SDKs cover):
auth/gh-app
tools/custom-agents
callbacks/
sessions/
prompts/
modes/
Phase B: Create Java scenario implementations — For each selected scenario:
Create test/scenarios/<name>/java/pom.xml with a dependency on the local Java SDK (../../../java/)
Create test/scenarios/<name>/java/src/main/java/Main.java mirroring the logic from the TypeScript or C# version
Phase C: Update scenario-builds.yml — Add:
java/** to the paths trigger
A build-java job (JDK 17, Maven cache, iterate over scenario POMs and build each)
Phase D: Verify — Run the workflow locally or in CI to confirm all Java scenarios compile.
Look at the union of all the other language scenarios in scenario-builds.yml. Make a short table that lists the following aspects for each.
Rows: scenario name, or id, or short description, whatever you find.
Columns:
language
difficulty in t-shirt size
maturity in terms of number of commits to maintain that scenario
applicability to Java SDK on a scale of 1 - 5. 1 being: cannot possibly apply to Java, 5 being: is a perfect fit for the Java SDK.
desireablitiy: must have, nice to have, optional, undesireable
Here's the consolidated assessment:
#
Scenario
Languages
Difficulty (Java)
Maturity (commits)
Applicability (1-5)
Desirability
AUTH
14
1
auth/gh-app
TS, Py, Go, C#
M
14
5
Must have
2
auth/byok-openai
TS, Py, Go, C#
S
14
5
Must have
3
auth/byok-azure
TS, Py, Go, C#
S
14
5
Must have
4
auth/byok-anthropic
TS, Py, Go, C#
S
14
5
Must have
5
auth/byok-ollama
TS, Py, Go, C#
S
14
4
Nice to have
BUNDLING
16
6
bundling/fully-bundled
TS, Py, Go, C#
S
16
5
Must have
7
bundling/app-direct-server
TS, Py, Go, C#
S
16
5
Must have
8
bundling/app-backend-to-server
TS, Py, Go, C#
L
16
4
Nice to have
9
bundling/container-proxy
TS, Py, Go, C#
XL
16
3
Optional
CALLBACKS
21
10
callbacks/hooks
TS, Py, Go, C#, RS
M
21
5
Must have
11
callbacks/permissions
TS, Py, Go, C#, RS
M
21
5
Must have
12
callbacks/user-input
TS, Py, Go, C#, RS
S
21
5
Must have
MODES
16
13
modes/default
TS, Py, Go, C#, RS
S
16
5
Must have
14
modes/minimal
TS, Py, Go, C#, RS
S
16
5
Must have
PROMPTS
21
15
prompts/system-message
TS, Py, Go, C#, RS
S
21
5
Must have
16
prompts/attachments
TS, Py, Go, C#, RS
M
21
5
Must have
17
prompts/reasoning-effort
TS, Py, Go, C#, RS
S
21
5
Must have
SESSIONS
19
18
sessions/streaming
TS, Py, Go, C#, RS
S
19
5
Must have
19
sessions/infinite-sessions
TS, Py, Go, C#, RS
S
19
5
Must have
20
sessions/concurrent-sessions
TS, Py, Go, C#, RS
M
19
5
Must have
21
sessions/session-resume
TS, Py, Go, C#, RS
M
19
5
Must have
22
sessions/multi-user-long-lived
TS, Py, Go
L
19
4
Nice to have
23
sessions/multi-user-short-lived
TS, Py, Go
L
19
2
Optional
TOOLS
24
24
tools/no-tools
TS, Py, Go, C#, RS
S
24
5
Must have
25
tools/custom-agents
TS, Py, Go, C#, RS
M
24
5
Must have
26
tools/tool-filtering
TS, Py, Go, C#, RS
S
24
5
Must have
27
tools/tool-overrides
TS, Py, Go, C#, RS
M
24
5
Must have
28
tools/mcp-servers
TS, Py, Go, C#, RS
M
24
5
Must have
29
tools/skills
TS, Py, Go, C#, RS
M
24
5
Must have
30
tools/virtual-filesystem
TS, Go
L
24
2
Undesirable
TRANSPORT
18
31
transport/stdio
TS, Py, Go, C#, RS
S
18
5
Must have
32
transport/tcp
TS, Py, Go, C#, RS
S
18
5
Must have
33
transport/reconnect
TS only
M
18
1
Undesirable
Key observations
26 of 33 scenarios are rated applicability 4-5 for Java. The Java SDK already has APIs for nearly everything.
3 scenarios to skip: transport/reconnect (TS-only by design), tools/virtual-filesystem (Java lacks this, only TS+Go have it), sessions/multi-user-short-lived (depends on virtual-filesystem pattern Java doesn't support).
~22 are Size S or M — straightforward translations of config + ~20-60 lines of idiomatic Java.
The "must have" set is 24 scenarios — these represent features Java already supports and that all other core SDKs (C#, Go) implement.
Highest-effort items: bundling/app-backend-to-server (needs a Spring Boot / Javalin HTTP server), bundling/container-proxy (multi-file Docker setup), and sessions/multi-user-long-lived (multi-client orchestration).
Activity
edburns commentedon May 25, 2026
Look at the union of all the other language scenarios in
scenario-builds.yml. Make a short table that lists the following aspects for each.Rows: scenario name, or id, or short description, whatever you find.
Columns:
Here's the consolidated assessment:
auth/gh-appauth/byok-openaiauth/byok-azureauth/byok-anthropicauth/byok-ollamabundling/fully-bundledbundling/app-direct-serverbundling/app-backend-to-serverbundling/container-proxycallbacks/hookscallbacks/permissionscallbacks/user-inputmodes/defaultmodes/minimalprompts/system-messageprompts/attachmentsprompts/reasoning-effortsessions/streamingsessions/infinite-sessionssessions/concurrent-sessionssessions/session-resumesessions/multi-user-long-livedsessions/multi-user-short-livedtools/no-toolstools/custom-agentstools/tool-filteringtools/tool-overridestools/mcp-serverstools/skillstools/virtual-filesystemtransport/stdiotransport/tcptransport/reconnectKey observations
transport/reconnect(TS-only by design),tools/virtual-filesystem(Java lacks this, only TS+Go have it),sessions/multi-user-short-lived(depends on virtual-filesystem pattern Java doesn't support).bundling/app-backend-to-server(needs a Spring Boot / Javalin HTTP server),bundling/container-proxy(multi-file Docker setup), andsessions/multi-user-long-lived(multi-client orchestration).Recommended phasing for the agent prompt
reconnect,virtual-filesystem,multi-user-short-livedReady for you to ask me to refine this into an agent-executable prompt.
WIP Phase 05: #1423
WIP Phase 05: #1423
WIP Phase 05: #1423
WIP Phase 05: #1423
WIP Phase 05: #1423
Move java to monorepo. Phase 05: Cross-Cutting Updates (github#1441)
edburns commentedon Jun 13, 2026
fixed in 91d9410
Move java to monorepo. Phase 05: Cross-Cutting Updates (#1441)
Move java to monorepo. Phase 05: Cross-Cutting Updates (#1441)