@@ -19,33 +19,53 @@ import { internal } from "./_generated/api.js";
1919import { type FunctionHandle } from "convex/server" ;
2020import { getDefaultLogger } from "./utils.js" ;
2121import { assert } from "convex-helpers" ;
22+ import { MAX_JOURNAL_SIZE } from "../shared.js" ;
2223
2324export const load = query ( {
2425 args : {
2526 workflowId : v . id ( "workflows" ) ,
27+ shortCircuit : v . optional ( v . boolean ( ) ) ,
2628 } ,
2729 returns : v . object ( {
2830 workflow : workflowDocument ,
2931 journalEntries : v . array ( journalDocument ) ,
3032 ok : v . boolean ( ) ,
3133 logLevel,
34+ blocked : v . optional ( v . boolean ( ) ) ,
3235 } ) ,
33- handler : async ( ctx , { workflowId } ) => {
36+ handler : async ( ctx , { workflowId, shortCircuit } ) => {
3437 const workflow = await ctx . db . get ( workflowId ) ;
3538 assert ( workflow , `Workflow not found: ${ workflowId } ` ) ;
3639 const { logLevel } = await getDefaultLogger ( ctx ) ;
3740 const journalEntries : JournalEntry [ ] = [ ] ;
38- let sizeSoFar = 0 ;
41+ let journalSize = 0 ;
42+ if ( shortCircuit ) {
43+ const inProgress = await ctx . db
44+ . query ( "steps" )
45+ . withIndex ( "inProgress" , ( q ) =>
46+ q . eq ( "step.inProgress" , true ) . eq ( "workflowId" , workflowId ) ,
47+ )
48+ . first ( ) ;
49+ if ( inProgress ) {
50+ return {
51+ journalEntries : [ inProgress ] ,
52+ blocked : true ,
53+ workflow,
54+ logLevel,
55+ ok : false ,
56+ } ;
57+ }
58+ }
3959 for await ( const entry of ctx . db
4060 . query ( "steps" )
4161 . withIndex ( "workflow" , ( q ) => q . eq ( "workflowId" , workflowId ) ) ) {
4262 journalEntries . push ( entry ) ;
43- sizeSoFar += journalEntrySize ( entry ) ;
44- if ( sizeSoFar > 4 * 1024 * 1024 ) {
45- return { journalEntries, ok : false , workflow, logLevel } ;
63+ journalSize += journalEntrySize ( entry ) ;
64+ if ( journalSize > MAX_JOURNAL_SIZE ) {
65+ return { journalEntries, workflow, logLevel, ok : false } ;
4666 }
4767 }
48- return { journalEntries, ok : true , workflow, logLevel } ;
68+ return { journalEntries, workflow, logLevel, ok : true } ;
4969 } ,
5070} ) ;
5171
0 commit comments