Read bodies of responses the engine never recorded

A send with no request behind it — a plugin's ad-hoc ctx.httpRequest.send,
GraphQL introspection — gets a generated id and a body file, but no row.
Resolving purely through the database refused those, which would have
broken auth-oauth2 the moment it moved off readFileSync, since every
request it sends is ad-hoc.

The store now falls back to the response directory when there is no row,
accepting only ids shaped the way the engine generates them. Such a
response has no stored headers, so contentType is null and text()
decodes as UTF-8 — which is what the filesystem readers did anyway.
This commit is contained in:
Gregory Schier
2026-08-16 09:35:03 -07:00
parent 96c8a95094
commit 8b031db685
5 changed files with 89 additions and 26 deletions
+1 -1
View File
@@ -132,7 +132,7 @@ async fn build_plugin_reply(
match handle_shared_plugin_event(
&host_context.query_manager,
&FileResponseBodyStore::new(&host_context.query_manager),
&FileResponseBodyStore::new(&host_context.query_manager, &host_context.response_dir),
&event.payload,
SharedPluginEventContext { plugin_name, workspace_id: shared_workspace_id },
) {