* fix(java): make SDK worker threads daemon
Use daemon threads for the Java SDK default executors so background helper pools do not keep example or short-lived JVM processes alive after work completes.
Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com
* fix(java): document and test daemon pool lifecycle
Keep examples and docs aligned with daemon executors, and ensure the client module actually discovers its JUnit 5 regression test.
Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com
* fix(java): reuse the custom example executor
Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com
* test(java): isolate SDK integration cases
Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com
---------
Co-authored-by: zhangyu.34 <zhangyu.34@bytedance.com>
The constant was defined as new Timeout(60L, TimeUnit.MINUTES) in both
the client and qwencode modules, i.e. 60 minutes, contradicting its name
and Javadoc ("A timeout of 30 minutes."). It is the fallback turn timeout
in ProcessTransport and the timeout used by QwenCodeCli.simpleQuery, so
callers waited twice the documented default. The 30-minute intent is
corroborated by TransportOptionsAdapter.DEFAULT_TURN_TIMEOUT (30 min).
Change the literal to 30L in both modules.
The two catch blocks in AcpClient's constructor threw a new
AgentInitializeException with only a message, discarding the caught
IOException/ExecutionException/InterruptedException/TimeoutException.
AgentInitializeException already has a (String, Throwable) constructor,
so pass the caught exception as the cause to keep the root failure and
its stack trace in the exception chain.