Commit Graph
12 Commits
Author SHA1 Message Date
haochenandZhangchenhao-111 008c0de746 docs(sdk): clarify empty core-tool allowlists across SDKs (#13949)
Co-authored-by: Zhangchenhao-111 <[email protected]>
2026-10-12 13:19:59 +00:00
8b72f4d456 fix(java): make SDK worker threads daemon (#9925)
* 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 [email protected]

* 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 [email protected]

* fix(java): reuse the custom example executor

Co-Authored-By: Claude Sonnet 4.6 [email protected]

* test(java): isolate SDK integration cases

Co-Authored-By: Claude Sonnet 4.6 [email protected]

---------

Co-authored-by: zhangyu.34 <[email protected]>
2026-09-01 18:06:25 +00:00
8104071260 docs(java): correct closed session exception (#9859)
* docs(java): correct closed session exception

* docs(java): clarify session control exceptions

Clarify which Java SDK entry points throw SessionControlException directly and pin closed-session behavior with a lightweight unit test.

Co-Authored-By: Claude Sonnet 4.6 [email protected]

* test(java): pin unavailable session exceptions

Co-Authored-By: Claude Sonnet 4.6 [email protected]

* test(java): pin session exception wrapping

Add coverage for direct session initialization failures and both QwenCodeCli.newSession wrapping paths so the Java SDK docs stay aligned with the exception contract.

Co-Authored-By: Claude Sonnet 4.6 [email protected]

---------

Co-authored-by: zhangyu.34 <[email protected]>
2026-08-29 15:01:02 +00:00
Dragon e09399e0fb feat(core): make list_directory opt-in (disabled by default) (#9424)
* feat(core): make list_directory opt-in (disabled by default)

glob covers directory listing in most cases, so list_directory is now disabled by default to keep the tool surface lean. Enable it with tools.listDirectory.enabled=true or by listing it in the coreTools allowlist (--core-tools / tools.core). The plan-mode reminder no longer steers the model toward the tool.

* fix(core): align list_directory opt-in gate with prompts and allowlist parsing

Round-1 review findings on the opt-in gate:

- Normalise coreTools entries with parseRule so specifier forms such as
  list_directory(/src) still re-enable the tool. isLsToolEnabled used
  resolveToolName, which does not strip specifiers, while
  PermissionManager admits the same entry via parseRule — so the
  allowlist accepted the tool and the registry never got it (R1-1).
- Drop list_directory from the plan-mode block error. That message is
  returned to the model as the tool result of every blocked call, so it
  kept steering the model at an unregistered tool even after the system
  prompt stopped doing so (R1-2).
- Remove the now-inert ToolNames.LS entries and the prompt text that
  advertised the tool to built-in agents. The gate also guards the
  forked-registry rebuild path, so these agents were silently stripped
  of a tool their own prompts told them to use (R1-3).
- Say why the tool is missing and how to enable it in the tool-not-found
  message, instead of offering unrelated Levenshtein suggestions (R1-6).
- Cover the alias and specifier forms in the registration tests (R1-4),
  and drop the stale examples from the sub-agents and Java SDK docs,
  where the listed entry can no longer register the tool (R1-5, R1-7).

* fix(core): address list_directory opt-in round-2 review findings

- Reword the skill-review agent task prompt so the inspection guidance
  only references read_file; the run's tool filter has no
  list_directory, glob, or shell, so the old `ls` instruction was
  unsatisfiable for the turn-budgeted background agent.
- Resolve tool-name aliases (ListFiles, ListFilesTool, ReadFolder) in
  the list_directory not-found message so aliased calls get the
  enablement explanation instead of a Levenshtein suggestion.
- Attribute a missing list_directory to the workspace tools toggle when
  the workspace disabledTools set blocks it, since the opt-in setting
  cannot lift that state.
- Drop the coreTools allowlist advice from the enablement message:
  setting tools.core to ["list_directory"] alone would exclude every
  other tool.
- Switch the two remaining sdk-java runTransportOptionsExample copies
  from list_directory to glob; setAllowedTools only adds auto-approve
  rules and never registers a tool.
- Extract the shared fake-server scaffolding in the list_directory
  integration tests into a local helper, keeping the load-bearing
  CLI-flag comment.
- Pin the skill-review agent tools array and assert the learn-skill
  prompt steers to read_file / glob, matching the sibling planners.

* fix(core): only claim list_directory is opt-in-disabled when it is unregistered

The not-found explanation resolved aliases (ListFiles, ReadFolder) before
checking whether the tool was actually absent. The registry is keyed by
canonical names while the lookup that reaches this path resolves legacy
migrations only, so an alias call missed even when list_directory was
enabled — and the message then told the user to switch on a setting that was
already on, hiding the generic path's "Did you mean list_directory"
self-correction.

Gate the branch on the canonical name being absent from the registry, and pin
the two alias combinations that were unpinned: an alias against a non-empty
workspace disabledTools set, and an alias against a registered tool.
2026-08-21 07:24:05 +00:00
60458f5e37 fix(serve): Coordinate caller-supplied session IDs (#8415)
* fix(serve): coordinate caller-supplied session IDs

Complete daemon-wide admission across REST, ACP, workspace generations, SDKs, and MCP.

Closes #8411

Co-authored-by: Qwen-Coder <[email protected]>

* test(serve): wire session bridges in hot-reload harness

Co-authored-by: Qwen-Coder <[email protected]>

* fix(serve): address review round for caller-supplied session IDs (#8415)

Restore the observability and fail-loud guarantees flagged in review:
log every session-id admission routing failure, name the live foreign
owner workspace in restore conflicts, make the ACP dispatcher's
admission dependency required so load/resume cannot run on a mount
without one, and require mountAcpHttp hosts to inject the daemon-wide
admission instead of silently building a weak fallback. Harden the SDK
WS transport against environments without global fetch and against
non-capabilities 200 envelopes, and align the design doc with the
implemented restore-sharing and persistence-failure semantics.

* fix(sdk): harden session ID capability fallback

Preserve REST capability errors, fail closed on malformed envelopes, retain restore routing diagnostics, and align retry documentation.

Co-authored-by: Qwen-Coder <[email protected]>

* fix(serve): normalize restored session IDs

Co-authored-by: Qwen-Coder <[email protected]>

* fix(session): preserve mixed-case legacy session access

Co-authored-by: Qwen-Coder <[email protected]>

---------

Co-authored-by: Qwen-Coder <[email protected]>
Co-authored-by: qwen-code-dev-bot <[email protected]>
2026-08-09 07:31:30 +00:00
jinyeandQwen-Coder e7097d0ef6 feat(sdk-java): Add daemon transport (#7463)
* feat(sdk-java): add daemon transport

Co-authored-by: Qwen-Coder <[email protected]>

* codex: address PR review feedback (#7463)

Co-authored-by: Qwen-Coder <[email protected]>

* test(sdk-java): stabilize lifecycle lock test

Co-authored-by: Qwen-Coder <[email protected]>

* codex: address PR review feedback (#7463)

Co-authored-by: Qwen-Coder <[email protected]>

* codex: address PR review feedback (#7463)

Co-authored-by: Qwen-Coder <[email protected]>

* codex: address PR review feedback (#7463)

Co-authored-by: Qwen-Coder <[email protected]>

* fix(cli): preserve prompt cancellation during context propagation

Co-authored-by: Qwen-Coder <[email protected]>

---------

Co-authored-by: Qwen-Coder <[email protected]>
2026-07-23 12:38:34 +00:00
jinyeandQwen-Coder a234860a4a fix(core): Align MCP OAuth guidance and docs (#5589)
* docs: Align docs with current CLI behavior

Update stale documentation and user-facing MCP OAuth guidance to match the current dialog-based flows, SDK permission semantics, current links, and Qwen OAuth status.

Also replace Ink internal imports with public Ink APIs for the shared text input so the workspace builds against Ink 7.

Co-authored-by: Qwen-Coder <[email protected]>

* codex: address PR review feedback (#5589)

Co-authored-by: Qwen-Coder <[email protected]>

* codex: address PR review feedback (#5589)

Co-authored-by: Qwen-Coder <[email protected]>

* codex: address PR review feedback (#5589)

Co-authored-by: Qwen-Coder <[email protected]>

* codex: address PR review feedback (#5589)

Co-authored-by: Qwen-Coder <[email protected]>

* codex: address PR review feedback (#5589)

Co-authored-by: Qwen-Coder <[email protected]>

* codex: address PR review feedback (#5589)

Co-authored-by: Qwen-Coder <[email protected]>

* codex: address PR review feedback (#5589)

Co-authored-by: Qwen-Coder <[email protected]>

* codex: address PR review feedback (#5589)

Co-authored-by: Qwen-Coder <[email protected]>

* codex: address PR review feedback (#5589)

Co-authored-by: Qwen-Coder <[email protected]>

* codex: address PR review feedback (#5589)

Co-authored-by: Qwen-Coder <[email protected]>

* codex: fix BaseTextInput Ink import (#5589)

Co-authored-by: Qwen-Coder <[email protected]>

* codex: address PR review feedback (#5589)

Co-authored-by: Qwen-Coder <[email protected]>

* fix(core): surface MCP OAuth credential read failures

Fix SSE OAuth credential pre-check failures by reporting token storage read errors before connecting.

Update SDK coreTools docs and extension release link text from the follow-up review.

Co-authored-by: Qwen-Coder <[email protected]>

* fix(core): harden MCP OAuth error handling

Handle stderr warning failures as best-effort and keep SSE 401 OAuth guidance when credential re-read fails.

Co-authored-by: Qwen-Coder <[email protected]>

* fix(core): keep SSE OAuth pre-read best effort

Avoid blocking SSE MCP connections when the diagnostic credential pre-read fails, and cover BaseTextInput absolute-position edge cases.

Co-authored-by: Qwen-Coder <[email protected]>

* fix(core): handle SSE OAuth validation errors

Co-authored-by: Qwen-Coder <[email protected]>

* fix(core): surface MCP OAuth recovery guidance

Co-authored-by: Qwen-Coder <[email protected]>

* fix(core): cover MCP OAuth retry paths

Co-authored-by: Qwen-Coder <[email protected]>

* fix(core): address OAuth guidance review

Co-authored-by: Qwen-Coder <[email protected]>

---------

Co-authored-by: Qwen-Coder <[email protected]>
2026-06-24 07:09:53 +08:00
zhangxy-zju ed14a33064 feat(core): add NotebookEdit tool for Jupyter notebooks
Adds NotebookEdit as the structured write counterpart to existing notebook read support.

Summary:
- Add `notebook_edit` for safe cell-level `.ipynb` replace/insert/delete operations.
- Integrate notebook editing with tool registration, permissions, Claude conversion, prior-read enforcement, IDE/inline modify flow, commit attribution, docs, and SDK permission docs.
- Harden notebook read/edit behavior for truncated notebook renders, ambiguous fallback cell IDs, internal modify metadata, compact JSON, UTF-8 BOM notebooks, and cache behavior after structural edits.
- Add unit and integration coverage for notebook read/edit behavior.

Follow-up work remains for tab-indented notebook formatting preservation, a few low-risk unit-test additions, and non-blocking hardening suggestions from review.
2026-05-21 00:06:15 +08:00
Viktor Szépe a1d1e5e276 Fix typo in class name (#2189) 2026-04-18 11:59:36 +08:00
tanzhenxinandQwen-Coder a4ffc6eb24 feat: promote Agent Skills from experimental to stable
Co-authored-by: Qwen-Coder <[email protected]>
2026-02-06 13:04:08 +08:00
skyfire ad3086f7dd add qwencode-sdk java doc 2026-01-06 17:18:41 +08:00
skyfire 8f3bbef575 add qwencode-sdk java doc 2026-01-06 17:11:47 +08:00