-
Notifications
You must be signed in to change notification settings - Fork 3.2k
improvement(files): update execution for passing base64 strings #2906
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Greptile SummaryThis PR implements base64 string hydration for file outputs during workflow execution, enabling downstream blocks to access file content directly without additional fetches. Key Changes:
Architecture:
Confidence Score: 4/5
Important Files Changed
Sequence DiagramsequenceDiagram
participant Client
participant ExecuteRoute as /api/workflows/[id]/execute
participant ExecutionCore
participant BlockExecutor
participant FileParseAPI as /api/files/parse
participant Storage as Execution Storage
participant Redis as Redis Cache
Client->>ExecuteRoute: POST (includeFileBase64: true)
ExecuteRoute->>ExecutionCore: executeWorkflowCore()
ExecutionCore->>BlockExecutor: execute block (e.g., File Parser)
BlockExecutor->>FileParseAPI: parse file
FileParseAPI->>Storage: uploadExecutionFile()
Storage-->>FileParseAPI: UserFile (with key)
FileParseAPI-->>BlockExecutor: ParseResult with UserFile
Note over BlockExecutor: if includeFileBase64 && containsUserFileWithMetadata
BlockExecutor->>Redis: cache.get(file)
alt Cache hit
Redis-->>BlockExecutor: base64 string
else Cache miss
BlockExecutor->>Storage: downloadFileFromStorage()
Storage-->>BlockExecutor: Buffer
BlockExecutor->>BlockExecutor: bufferToBase64()
BlockExecutor->>Redis: cache.set(file, base64, ttl)
end
BlockExecutor-->>ExecutionCore: output with UserFile.base64
ExecutionCore-->>ExecuteRoute: ExecutionResult
ExecuteRoute->>ExecuteRoute: hydrateUserFilesWithBase64(output)
ExecuteRoute->>Redis: cleanupExecutionBase64Cache(executionId)
ExecuteRoute-->>Client: Response with base64 hydrated files
|
|
@cursor review |
|
@cursor review |
|
@cursor review |
|
@cursor review |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
* fix(google): wrap primitive tool responses for Gemini API compatibility (#2900) * fix(canonical): copilot path + update parent (#2901) * fix(rss): add top-level title, link, pubDate fields to RSS trigger output (#2902) * fix(rss): add top-level title, link, pubDate fields to RSS trigger output * fix(imap): add top-level fields to IMAP trigger output * improvement(browseruse): add profile id param (#2903) * improvement(browseruse): add profile id param * make request a stub since we have directExec * improvement(executor): upgraded abort controller to handle aborts for loops and parallels (#2880) * improvement(executor): upgraded abort controller to handle aborts for loops and parallels * comments * improvement(files): update execution for passing base64 strings (#2906) * progress * improvement(execution): update execution for passing base64 strings * fix types * cleanup comments * path security vuln * reject promise correctly * fix redirect case * remove proxy routes * fix tests * use ipaddr * feat(tools): added textract, added v2 for mistral, updated tag dropdown (#2904) * feat(tools): added textract * cleanup * ack pr comments * reorder * removed upload for textract async version * fix additional fields dropdown in editor, update parser to leave validation to be done on the server * added mistral v2, files v2, and finalized textract * updated the rest of the old file patterns, updated mistral outputs for v2 * updated tag dropdown to parse non-operation fields as well * updated extension finder * cleanup * added description for inputs to workflow * use helper for internal route check * fix tag dropdown merge conflict change * remove duplicate code --------- Co-authored-by: Vikhyath Mondreti <[email protected]> * fix(ui): change add inputs button to match output selector (#2907) * fix(canvas): removed invite to workspace from canvas popover (#2908) * fix(canvas): removed invite to workspace * removed unused props * fix(copilot): legacy tool display names (#2911) * fix(a2a): canonical merge (#2912) * fix canonical merge * fix empty array case * fix(change-detection): copilot diffs have extra field (#2913) * improvement(logs): improved logs ui bugs, added subflow disable UI (#2910) * improvement(logs): improved logs ui bugs, added subflow disable UI * added duplicate to action bar for subflows * feat(broadcast): email v0.5 (#2905) --------- Co-authored-by: Vikhyath Mondreti <[email protected]> Co-authored-by: Vikhyath Mondreti <[email protected]> Co-authored-by: Emir Karabeg <[email protected]>
Summary
Hydrate base64 strings into outputs during execution.
Type of Change
Testing
Tested manually
Checklist