Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
870ae88
docs: Align docs with current CLI behavior
doudouOUC Jun 22, 2026
a82a9a6
chore: merge main into docs audit branch
doudouOUC Jun 22, 2026
71c8c4e
codex: address PR review feedback (#5589)
doudouOUC Jun 22, 2026
5122c47
codex: address PR review feedback (#5589)
doudouOUC Jun 22, 2026
6023f47
codex: address PR review feedback (#5589)
doudouOUC Jun 22, 2026
d704c11
codex: address PR review feedback (#5589)
doudouOUC Jun 22, 2026
a56b5cf
codex: address PR review feedback (#5589)
doudouOUC Jun 22, 2026
ac2a3d9
codex: address PR review feedback (#5589)
doudouOUC Jun 22, 2026
57f6048
codex: address PR review feedback (#5589)
doudouOUC Jun 22, 2026
2fe19a0
codex: address PR review feedback (#5589)
doudouOUC Jun 22, 2026
265b103
codex: address PR review feedback (#5589)
doudouOUC Jun 22, 2026
269c864
codex: address PR review feedback (#5589)
doudouOUC Jun 22, 2026
6b68eaf
codex: fix BaseTextInput Ink import (#5589)
doudouOUC Jun 22, 2026
1ff883f
codex: address PR review feedback (#5589)
doudouOUC Jun 23, 2026
5e7c3b0
fix(core): surface MCP OAuth credential read failures
doudouOUC Jun 23, 2026
adc69e0
chore: merge main into PR 5589
doudouOUC Jun 23, 2026
02052e1
fix(core): harden MCP OAuth error handling
doudouOUC Jun 23, 2026
6dcca8d
fix(core): keep SSE OAuth pre-read best effort
doudouOUC Jun 23, 2026
7881659
fix(core): handle SSE OAuth validation errors
doudouOUC Jun 23, 2026
8732cd7
fix(core): surface MCP OAuth recovery guidance
doudouOUC Jun 23, 2026
6f4af39
fix(core): cover MCP OAuth retry paths
doudouOUC Jun 23, 2026
31b649b
fix(core): address OAuth guidance review
doudouOUC Jun 23, 2026
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
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ To run the integration tests, use the following command:
npm run test:e2e
```

For more detailed information on the integration testing framework, please see the [Integration Tests documentation](./docs/integration-tests.md).
For more detailed information on the integration testing framework, please see the [Integration Tests documentation](./docs/developers/development/integration-tests.md).

### Linting and Preflight Checks

Expand Down
2 changes: 1 addition & 1 deletion docs/developers/contributing.md
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ To run the integration tests, use the following command:
npm run test:e2e
```

For more detailed information on the integration testing framework, please see the [Integration Tests documentation](./docs/integration-tests.md).
For more detailed information on the integration testing framework, please see the [Integration Tests documentation](./development/integration-tests.md).

### Linting and Preflight Checks

Expand Down
15 changes: 8 additions & 7 deletions docs/developers/daemon/00-index.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ It complements, rather than replaces, these existing docs:
| [`../../users/qwen-serve.md`](../../users/qwen-serve.md) | Operators | User quickstart, flags, threat model |
| [`../qwen-serve-protocol.md`](../qwen-serve-protocol.md) | Protocol implementers | HTTP route catalog, request/response shapes, error codes |
| [`../examples/daemon-client-quickstart.md`](../examples/daemon-client-quickstart.md) | SDK users | End-to-end TypeScript walkthrough |
| [`../daemon-client-adapters/`](../daemon-client-adapters/) | Adapter authors | Client adapter design notes |
| [`../daemon-client-adapters/`](../daemon-client-adapters/) | Adapter authors | Legacy client adapter design docs |
| [`14-cli-tui-adapter.md`](./14-cli-tui-adapter.md) | Adapter authors | Client adapter design notes |
Comment thread
doudouOUC marked this conversation as resolved.
| [`../../design/f2-mcp-transport-pool.md`](../../design/f2-mcp-transport-pool.md) | F2 maintainers | Workspace MCP transport pool design v2.2 |

If you want to **start a daemon and use it**, read `qwen-serve.md` first. If you want to **build a client against the wire format**, read `qwen-serve-protocol.md`. If you want to **understand, extend, or debug the daemon internals**, read this set.
Expand Down Expand Up @@ -85,7 +86,7 @@ Use these anchors when moving from the docs into the latest `main` code:

| Surface | Implementation anchors | Primary docs |
| ----------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| Bootstrap and HTTP assembly | `packages/cli/src/serve/run-qwen-serve.ts`, `server.ts`, `/demo` | [`02`](./02-serve-runtime.md), [`20`](./20-quickstart-operations.md) |
| Bootstrap and HTTP assembly | `packages/cli/src/serve/run-qwen-serve.ts`, `server.ts`, `/demo` | [`02`](./02-serve-runtime.md), [`20`](./20-quickstart-operations.md) |
| ACP bridge and session multiplexing | `packages/acp-bridge/src/bridge.ts`, `packages/acp-bridge/src/bridgeTypes.ts`, `@qwen-code/acp-bridge` | [`03`](./03-acp-bridge.md), [`08`](./08-session-lifecycle.md) |
| Permission mediation | `packages/acp-bridge/src/permissionMediator.ts`, `fromLoopback: boolean`, `policy.*` | [`04`](./04-permission-mediation.md), [`12`](./12-auth-security.md) |
| MCP transport pool | `packages/core/src/tools/mcp-transport-pool.ts`, `mcp-pool-key.ts`, `pid-descendants.ts`, `session-mcp-view.ts`, `/mcp refresh`, `MCPCallInterruptedError` | [`05`](./05-mcp-transport-pool.md), [`06`](./06-mcp-budget-guardrails.md) |
Expand All @@ -94,7 +95,7 @@ Use these anchors when moving from the docs into the latest `main` code:
| Event schema and SSE writer | `packages/sdk-typescript/src/daemon/events.ts`, `packages/cli/src/serve/server.ts`, `formatSseFrame`, `packages/cli/src/acp-integration/session/emitters/ToolCallEmitter.ts`, `ToolCallEmitter.resolveToolProvenance`, `tool_call.provenance`, `serverId` | [`09`](./09-event-schema.md), [`10`](./10-event-bus.md) |
| Event resync | `state_resync_required`, `awaitingResync`, `RESYNC_PASSTHROUGH_TYPES`, `asKnownDaemonEvent`, `unrecognizedKnownEventCount` | [`09`](./09-event-schema.md), [`10`](./10-event-bus.md) |
| Capabilities | `packages/cli/src/serve/capabilities.ts`, `mcp_server_restart_refused.reason`, `MCP_RESTART_REFUSED_REASONS.has` | [`11`](./11-capabilities-versioning.md) |
| Auth and device flow | `packages/cli/src/serve/auth.ts`, `packages/cli/src/serve/auth/device-flow.ts` | [`12`](./12-auth-security.md) |
| Auth and device flow | `packages/cli/src/serve/auth.ts`, `packages/cli/src/serve/auth/device-flow.ts` | [`12`](./12-auth-security.md) |
| TypeScript SDK daemon client | `packages/sdk-typescript/src/daemon/{DaemonClient,DaemonSessionClient,DaemonAuthFlow,sse,events,types}.ts`, `MCP_RESTART_DEFAULT_TIMEOUT_MS` | [`13`](./13-sdk-daemon-client.md) |
| Shared UI transcript layer | `DaemonUiEventType`, `DaemonSessionProvider`, `packages/webui/src/daemon/` | [`13`](./13-sdk-daemon-client.md), [`14`](./14-cli-tui-adapter.md), [`../daemon-ui/README.md`](../daemon-ui/README.md) |
| Channels and IDE adapters | `packages/channels/`, `packages/vscode-ide-companion/src/services/daemonIdeConnection.ts` | [`15`](./15-channel-adapters.md), [`16`](./16-vscode-ide-adapter.md) |
Expand Down Expand Up @@ -149,11 +150,11 @@ Use these anchors when moving from the docs into the latest `main` code:

### Historical or deprecated surfaces

| Surface | Status |
| ------------------------------------------------ | -------------------------------------------------------------------------------------------------------------- |
| `docs/developers/daemon-client-adapters/tui.md` | Historical draft for the old `DaemonTuiAdapter` spike; current shared UI transcript architecture is in doc 14. |
| Surface | Status |
| -------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
| `docs/developers/daemon-client-adapters/tui.md` | Historical draft for the old `DaemonTuiAdapter` spike; current shared UI transcript architecture is in doc 14. |
| `packages/cli/src/ui/daemon/daemon-tui-adapter.ts` | Legacy experimental adapter still in-tree. New shared UI work should prefer SDK `daemon/ui/*`. |
| `--no-http-bridge` | Accepted for compatibility but falls back to http-bridge and prints stderr. |
| `--no-http-bridge` | Accepted for compatibility but falls back to http-bridge and prints stderr. |

### Forward compatibility

Expand Down
4 changes: 3 additions & 1 deletion docs/developers/daemon/12-auth-security.md
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,9 @@ details.

### Device-flow auth

Separate OAuth surface for provider authentication (Qwen OAuth, etc.):
Separate OAuth surface for provider authentication. The v1 provider identifier is
`qwen-oauth`, but Qwen OAuth free tier was discontinued on 2026-04-15; new
setups should use a currently supported auth provider when one is available.

- `POST /workspace/auth/device-flow` — start a flow; returns `{deviceFlowId, providerId, expiresAt, verificationUrl, userCode}`.
- `GET /workspace/auth/device-flow/:id` — poll state.
Expand Down
4 changes: 4 additions & 0 deletions docs/developers/daemon/13-sdk-daemon-client.md
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,10 @@ sequenceDiagram
AF-->>App: final state
```

`qwen-oauth` is the legacy v1 provider identifier. Qwen OAuth free tier was
discontinued on 2026-04-15, so new clients should prefer a currently supported
auth provider when one is available.

## State & Lifecycle

- `DaemonClient` is connection-less; nothing happens at construction. Every method opens a fresh `fetch`.
Expand Down
2 changes: 1 addition & 1 deletion docs/developers/development/telemetry.md
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ OpenTelemetry names: `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT`,
The `QWEN_TELEMETRY_OTLP_*` variants take precedence over the `OTEL_*` variants.

For detailed information about all configuration options, see the
[Configuration Guide](./cli/configuration.md).
[Configuration Guide](../../users/configuration/settings.md).

### Resource attributes

Expand Down
9 changes: 8 additions & 1 deletion docs/developers/qwen-serve-protocol.md
Original file line number Diff line number Diff line change
Expand Up @@ -1559,7 +1559,14 @@ After a successful vote, every connected client sees `permission_resolved` with

The daemon brokers an OAuth 2.0 Device Authorization Grant (RFC 8628) so a remote SDK client can trigger a login whose tokens land on the **daemon** filesystem — not on the client. The daemon polls the IdP itself; the client's only job is to display the verification URL + user code and (optionally) subscribe to SSE for completion events.

Capability tag: `auth_device_flow` (always advertised). Supported providers in v1: `qwen-oauth`.
Capability tag: `auth_device_flow` (always advertised). Supported providers in
v1: `qwen-oauth`.

> [!note]
>
> Qwen OAuth free tier was discontinued on 2026-04-15. Treat `qwen-oauth` as the
> legacy v1 provider identifier in this protocol; new clients should prefer a
> currently supported auth provider when one is available.

**Runtime locality.** The daemon never spawns a browser — even if it can. The client decides whether to call `open(verificationUri)` locally; on a headless pod (the canonical Mode B deployment) the user opens the URL on whatever device they have a browser on. See `docs/users/qwen-serve.md` for the recommended UX.

Expand Down
2 changes: 1 addition & 1 deletion docs/developers/sdk-java.md
Original file line number Diff line number Diff line change
Expand Up @@ -308,4 +308,4 @@ A: Yes, use the `setEnv()` method in `TransportOptions` to pass environment vari

## License

Apache-2.0 - see [LICENSE](./LICENSE) for details.
Apache-2.0 - see [LICENSE](../../LICENSE) for details.
Loading
Loading