Commit e727a8b
fix(intercept): structuredContent.result も rewrite 対象に追加
fastmcp 系上流は tools/call レスポンスで content[] と並行して
structuredContent.result[] にも同じデータを mirror する。 既存 intercept は
content[] だけ走査していたので、 SC 側に container 内絶対パス
(/var/lib/openai-image-tmp/...) が漏れ出していた。 大半のクライアントは
content[] を消費するため実害は限定的だが、 SC を直接読む厳格クライアントだと
ファイルにアクセスできず即死する。
- ToolCallEnvelope に structuredContent?.result?: ContentItem[] を追加。
- ContentItem を共通型に抽出。
- rewriteSseEventBlock に processArray() inner helper を切って content[] と
structuredContent.result[] の両方を同じ規則で処理。 SHA256 prefix12 は
idempotent なので 1 ファイルに対する 2 path 検出でも artifact は 1 件。
- e2e 検証: 修正後の generate_image 呼び出しで両フィールドの text が
/files/<id>.jpg に書き換わり、 grep -c /var/lib/openai-image-tmp = 0 を確認。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent 28f9047 commit e727a8b
1 file changed
Lines changed: 33 additions & 10 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
95 | 95 | | |
96 | 96 | | |
97 | 97 | | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
98 | 106 | | |
99 | 107 | | |
100 | 108 | | |
101 | 109 | | |
102 | | - | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
103 | 118 | | |
104 | 119 | | |
105 | 120 | | |
| |||
151 | 166 | | |
152 | 167 | | |
153 | 168 | | |
154 | | - | |
155 | | - | |
| 169 | + | |
| 170 | + | |
156 | 171 | | |
157 | 172 | | |
158 | 173 | | |
159 | 174 | | |
160 | | - | |
161 | | - | |
162 | | - | |
163 | | - | |
164 | | - | |
165 | | - | |
166 | | - | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
167 | 184 | | |
168 | 185 | | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
169 | 192 | | |
170 | 193 | | |
171 | 194 | | |
| |||
0 commit comments