()
| 144 | } |
| 145 | |
| 146 | async function main(): Promise<number> { |
| 147 | try { |
| 148 | const input = await parseHookInput<StopHookInput>(); |
| 149 | const state = loadState(); |
| 150 | |
| 151 | if (input.generation_id && input.generation_id === state.lastProcessedGenerationId) { |
| 152 | console.log(JSON.stringify({})); |
| 153 | return 0; |
| 154 | } |
| 155 | state.lastProcessedGenerationId = input.generation_id ?? null; |
| 156 | |
| 157 | const countedTurn = shouldCountTurn(input); |
| 158 | const turnIncrement = countedTurn ? 1 : 0; |
| 159 | const turnsSinceLastRun = state.turnsSinceLastRun + turnIncrement; |
| 160 | const now = Date.now(); |
| 161 | |
| 162 | const trialEnabled = parseBoolean( |
| 163 | readEnvValue("CONTINUAL_LEARNING_TRIAL_MODE", "CONTINUOUS_LEARNING_TRIAL_MODE") |
| 164 | ); |
| 165 | if (trialEnabled && countedTurn && state.trialStartedAtMs === null) { |
| 166 | state.trialStartedAtMs = now; |
| 167 | } |
| 168 | |
| 169 | const trialDurationMinutes = parsePositiveInt( |
| 170 | readEnvValue( |
| 171 | "CONTINUAL_LEARNING_TRIAL_DURATION_MINUTES", |
| 172 | "CONTINUOUS_LEARNING_TRIAL_DURATION_MINUTES" |
| 173 | ), |
| 174 | TRIAL_DEFAULT_DURATION_MINUTES |
| 175 | ); |
| 176 | const trialMinTurns = parsePositiveInt( |
| 177 | readEnvValue( |
| 178 | "CONTINUAL_LEARNING_TRIAL_MIN_TURNS", |
| 179 | "CONTINUOUS_LEARNING_TRIAL_MIN_TURNS" |
| 180 | ), |
| 181 | TRIAL_DEFAULT_MIN_TURNS |
| 182 | ); |
| 183 | const trialMinMinutes = parsePositiveInt( |
| 184 | readEnvValue( |
| 185 | "CONTINUAL_LEARNING_TRIAL_MIN_MINUTES", |
| 186 | "CONTINUOUS_LEARNING_TRIAL_MIN_MINUTES" |
| 187 | ), |
| 188 | TRIAL_DEFAULT_MIN_MINUTES |
| 189 | ); |
| 190 | const inTrialWindow = |
| 191 | trialEnabled && |
| 192 | state.trialStartedAtMs !== null && |
| 193 | now - state.trialStartedAtMs < trialDurationMinutes * 60_000; |
| 194 | |
| 195 | const minTurns = parsePositiveInt( |
| 196 | readEnvValue("CONTINUAL_LEARNING_MIN_TURNS", "CONTINUOUS_LEARNING_MIN_TURNS"), |
| 197 | DEFAULT_MIN_TURNS |
| 198 | ); |
| 199 | const minMinutes = parsePositiveInt( |
| 200 | readEnvValue("CONTINUAL_LEARNING_MIN_MINUTES", "CONTINUOUS_LEARNING_MIN_MINUTES"), |
| 201 | DEFAULT_MIN_MINUTES |
| 202 | ); |
| 203 |
no test coverage detected