Commit 0061aa7
authored
fix: preserve Claude Code Messages transport fidelity (vllm-project#161)
## Summary
- preserve the original Messages query string and open-ended
Anthropic/Claude Code request headers across every server-side gateway
tool round
- preserve upstream Messages status, body, request IDs, retry guidance,
and rate-limit metadata while keeping local connection failures in valid
Anthropic JSON envelopes
- forward documented upstream SSE error events and terminate without a
synthetic successful message stop
- verify multi-block system attribution and a valid four-breakpoint,
correctly ordered cache-control layout survive transparent proxying and
native gateway tool loops
- run the real Claude Code CLI through agentic-server against recorded
vLLM streaming responses and a local web-search replay service
- pin Claude Code 2.1.218, PyYAML 6.0.3, Node 24, and immutable action
SHAs in the dedicated GitHub Actions check
The E2E job uses localhost services and a placeholder token. It requires
no Anthropic credential, GPU, model download, or paid inference. This
change does not add conversation persistence or other server-side client
state; the request-scoped transport context is reused only for the
gateway-owned tool loop.
For non-streaming requests, response metadata comes from the terminal
upstream round. For streaming requests, HTTP response metadata comes
from the initial upstream response because later rounds occur after the
client response has started.
The visible reasoning double-render remains a vLLM-side issue tracked
separately; this PR closes the agentic-api transport and error-fidelity
gaps found by running Claude Code.
Related to vllm-project#116.
## Test Plan
- cargo test
- cargo clippy --all-targets -- -D warnings
- cargo fmt --all -- --check
- pre-commit 4.4.0: pre-commit run --all-files
- pinned replay-server unit tests: 7 passed
- pinned Claude Code smoke test: capture valid: messages=2 transports=2
searches=1
- bash -n scripts/claude-code-smoke.sh
---------
Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>1 parent e1c61ce commit 0061aa7
20 files changed
Lines changed: 1520 additions & 422 deletions
File tree
- .github/workflows
- crates
- agentic-server-core
- src
- executor
- tests
- cassettes
- fixtures
- agentic-server
- src/handler
- http
- websocket
- tests
- docs/design
- scripts
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
29 | 29 | | |
30 | 30 | | |
31 | 31 | | |
32 | | - | |
| 32 | + | |
33 | 33 | | |
34 | | - | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
35 | 43 | | |
36 | 44 | | |
37 | 45 | | |
| |||
101 | 109 | | |
102 | 110 | | |
103 | 111 | | |
104 | | - | |
| 112 | + | |
105 | 113 | | |
106 | 114 | | |
107 | 115 | | |
| |||
122 | 130 | | |
123 | 131 | | |
124 | 132 | | |
125 | | - | |
| 133 | + | |
126 | 134 | | |
127 | 135 | | |
128 | 136 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
| 13 | + | |
13 | 14 | | |
14 | 15 | | |
15 | 16 | | |
| |||
55 | 56 | | |
56 | 57 | | |
57 | 58 | | |
58 | | - | |
| 59 | + | |
| 60 | + | |
59 | 61 | | |
60 | 62 | | |
61 | 63 | | |
62 | 64 | | |
63 | 65 | | |
| 66 | + | |
64 | 67 | | |
65 | | - | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
66 | 73 | | |
67 | 74 | | |
68 | 75 | | |
69 | 76 | | |
70 | | - | |
| 77 | + | |
71 | 78 | | |
72 | 79 | | |
73 | 80 | | |
74 | 81 | | |
75 | 82 | | |
76 | | - | |
77 | | - | |
| 83 | + | |
| 84 | + | |
78 | 85 | | |
79 | | - | |
| 86 | + | |
80 | 87 | | |
81 | 88 | | |
82 | 89 | | |
83 | 90 | | |
84 | 91 | | |
| 92 | + | |
85 | 93 | | |
86 | 94 | | |
87 | 95 | | |
| |||
92 | 100 | | |
93 | 101 | | |
94 | 102 | | |
| 103 | + | |
95 | 104 | | |
96 | 105 | | |
97 | 106 | | |
| |||
107 | 116 | | |
108 | 117 | | |
109 | 118 | | |
110 | | - | |
| 119 | + | |
111 | 120 | | |
112 | 121 | | |
113 | 122 | | |
114 | 123 | | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
115 | 137 | | |
116 | 138 | | |
117 | 139 | | |
118 | 140 | | |
119 | 141 | | |
120 | 142 | | |
121 | | - | |
122 | | - | |
| 143 | + | |
| 144 | + | |
123 | 145 | | |
124 | 146 | | |
125 | 147 | | |
| |||
129 | 151 | | |
130 | 152 | | |
131 | 153 | | |
132 | | - | |
| 154 | + | |
133 | 155 | | |
134 | 156 | | |
135 | 157 | | |
136 | 158 | | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
137 | 172 | | |
138 | 173 | | |
139 | 174 | | |
| |||
Lines changed: 68 additions & 19 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
4 | | - | |
5 | | - | |
6 | | - | |
| 4 | + | |
| 5 | + | |
7 | 6 | | |
8 | 7 | | |
9 | 8 | | |
| |||
19 | 18 | | |
20 | 19 | | |
21 | 20 | | |
22 | | - | |
| 21 | + | |
23 | 22 | | |
24 | 23 | | |
25 | 24 | | |
| |||
37 | 36 | | |
38 | 37 | | |
39 | 38 | | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
40 | 74 | | |
41 | 75 | | |
42 | 76 | | |
| |||
58 | 92 | | |
59 | 93 | | |
60 | 94 | | |
61 | | - | |
62 | | - | |
63 | | - | |
| 95 | + | |
| 96 | + | |
64 | 97 | | |
65 | 98 | | |
66 | 99 | | |
67 | 100 | | |
68 | 101 | | |
69 | 102 | | |
70 | 103 | | |
71 | | - | |
| 104 | + | |
| 105 | + | |
72 | 106 | | |
73 | 107 | | |
74 | 108 | | |
75 | 109 | | |
76 | 110 | | |
77 | | - | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
78 | 115 | | |
79 | 116 | | |
80 | 117 | | |
| |||
84 | 121 | | |
85 | 122 | | |
86 | 123 | | |
87 | | - | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
88 | 128 | | |
89 | 129 | | |
90 | 130 | | |
| |||
105 | 145 | | |
106 | 146 | | |
107 | 147 | | |
108 | | - | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
109 | 152 | | |
110 | 153 | | |
111 | 154 | | |
112 | 155 | | |
113 | 156 | | |
114 | 157 | | |
115 | 158 | | |
116 | | - | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
117 | 163 | | |
118 | 164 | | |
119 | 165 | | |
| |||
129 | 175 | | |
130 | 176 | | |
131 | 177 | | |
132 | | - | |
133 | | - | |
134 | | - | |
135 | | - | |
136 | | - | |
137 | | - | |
138 | | - | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
139 | 188 | | |
140 | 189 | | |
141 | 190 | | |
| |||
0 commit comments