55use App \Support \ControlPlaneProtocol ;
66use App \Support \ControlPlaneResponseContract ;
77use App \Support \ControlPlaneResultMapper ;
8+ use App \Support \NamespaceExternalPayloadStorage ;
89use App \Support \NamespaceWorkflowScope ;
910use App \Support \WorkflowCommandContextFactory ;
1011use App \Support \WorkflowQueryTaskBroker ;
@@ -30,6 +31,7 @@ public function __construct(
3031 private readonly ControlPlaneResultMapper $ resultMapper ,
3132 private readonly WorkflowQueryTaskBroker $ queryTasks ,
3233 private readonly WorkflowRunDiagnostics $ diagnostics ,
34+ private readonly NamespaceExternalPayloadStorage $ externalPayloadStorage ,
3335 ) {}
3436
3537 public function index (Request $ request ): JsonResponse
@@ -383,13 +385,14 @@ public function signal(Request $request, string $workflowId, string $signalName)
383385 'request_id ' => ['nullable ' , 'string ' , 'max:255 ' ],
384386 ]);
385387
386- $ envelope = PayloadEnvelopeResolver::resolve ($ validated ['input ' ] ?? null , 'input ' );
388+ $ externalStorage = $ this ->externalPayloadStorage ->driverFor ($ namespace );
389+ $ envelope = PayloadEnvelopeResolver::resolve ($ validated ['input ' ] ?? null , 'input ' , $ externalStorage );
387390
388391 $ result = $ this ->workflowControlPlane ->signal (
389392 $ workflowId ,
390393 $ signalName ,
391394 [
392- 'arguments ' => PayloadEnvelopeResolver::resolveToArray ($ validated ['input ' ] ?? null , 'input ' ),
395+ 'arguments ' => PayloadEnvelopeResolver::resolveToArray ($ validated ['input ' ] ?? null , 'input ' , $ externalStorage ),
393396 'payload_codec ' => $ envelope ['codec ' ],
394397 'payload_blob ' => $ envelope ['blob ' ],
395398 'command_context ' => $ this ->commandContexts ->make (
@@ -435,7 +438,8 @@ public function query(Request $request, string $workflowId, string $queryName):
435438 ]);
436439
437440 $ run = NamespaceWorkflowScope::currentRun ($ namespace , $ workflowId );
438- $ queryEnvelope = PayloadEnvelopeResolver::resolve ($ validated ['input ' ] ?? null , 'input ' );
441+ $ externalStorage = $ this ->externalPayloadStorage ->driverFor ($ namespace );
442+ $ queryEnvelope = PayloadEnvelopeResolver::resolve ($ validated ['input ' ] ?? null , 'input ' , $ externalStorage );
439443
440444 if ($ run instanceof WorkflowRun && $ this ->queryTasks ->hasWorkerFor ($ namespace , $ run )) {
441445 return $ this ->resultMapper ->query (
@@ -450,7 +454,7 @@ public function query(Request $request, string $workflowId, string $queryName):
450454 $ workflowId ,
451455 $ queryName ,
452456 [
453- 'arguments ' => PayloadEnvelopeResolver::resolveToArray ($ validated ['input ' ] ?? null , 'input ' ),
457+ 'arguments ' => PayloadEnvelopeResolver::resolveToArray ($ validated ['input ' ] ?? null , 'input ' , $ externalStorage ),
454458 'command_context ' => $ this ->commandContexts ->make (
455459 $ request ,
456460 workflowId: $ workflowId ,
@@ -496,12 +500,13 @@ public function update(Request $request, string $workflowId, string $updateName)
496500 ]);
497501
498502 $ this ->rejectLegacyUpdateFields ($ request );
503+ $ externalStorage = $ this ->externalPayloadStorage ->driverFor ($ namespace );
499504
500505 $ result = $ this ->workflowControlPlane ->update (
501506 $ workflowId ,
502507 $ updateName ,
503508 [
504- 'arguments ' => PayloadEnvelopeResolver::resolveToArray ($ validated ['input ' ] ?? null , 'input ' ),
509+ 'arguments ' => PayloadEnvelopeResolver::resolveToArray ($ validated ['input ' ] ?? null , 'input ' , $ externalStorage ),
505510 'command_context ' => $ this ->commandContexts ->make (
506511 $ request ,
507512 workflowId: $ workflowId ,
0 commit comments