feat: add 'logs' command to download info from devboxes#164
Conversation
0e3033b to
ecb6a11
Compare
Add an rli non-interactive command to fetch, format and print scenario info
james-rl
left a comment
There was a problem hiding this comment.
Looks good. Some questions for you but I don't see any issues
| const outcome = outcomeMap.get(scenarioRunId); | ||
| if (outcome) return outcome.scenario_name; | ||
|
|
||
| try { | ||
| const client = getClient(); | ||
| const scenario = await client.scenarios.retrieve(scenarioId); | ||
| return scenario.name; | ||
| } catch { | ||
| return scenarioId; | ||
| } |
There was a problem hiding this comment.
This is more of a nit considering how this function gets used, but the fallback behavior for this test case is quite confusing. I can't see any situation where name would fail to resolve unless the backend was down, in which case eating the error may make troubleshooting harder.
| } | ||
|
|
||
| /** | ||
| * Assign unique destination directories, appending -2, -3, etc. for duplicates. |
There was a problem hiding this comment.
Just for knowledge sharing, under what situations would you end up with a duplicate?
It seems like you would need the same scenario name + agent + model name for these to collide. Maybe it would be more intuitive to augment the ScenarioLogTarget with ScenarioId and use that string as a postfix instead of count.
There was a problem hiding this comment.
The --n-attempts flag to rli bmj run does N runs of each scenario.
🤖 I have created a release *beep* *boop* --- ## [1.14.0](v1.13.3...v1.14.0) (2026-03-25) ### Features * add 'logs' command to download info from devboxes ([#164](#164)) ([d5354be](d5354be)) * use total_count field from Pagination API response ([#175](#175)) ([4e84f30](4e84f30)) ### Bug Fixes * **benchmark:** fix benchmark id when creating job with benchmark ([#170](#170)) ([2c73cba](2c73cba)) * bmj list now counts finished scenarios from in-progress runs ([#168](#168)) ([123f1d4](123f1d4)) * **cli:** show failure reason when benchmark job fails with no outcomes ([#182](#182)) ([817b5cd](817b5cd)) * **cli:** use allSettled() instead of all() so one bad download doesn't spoil the barrel ([#178](#178)) ([8f4145a](8f4145a)) * don't reset TUI menu cursor on back ([#181](#181)) ([6cc35a7](6cc35a7)) * eliminate flicker in bmj watch and show job elapsed time ([#167](#167)) ([9b1deed](9b1deed)) * prevent double devbox creation when pressing Enter in interactive form ([#173](#173)) ([23f8a28](23f8a28)) * scenarios sometimes listed as in progress after bmj completes ([#174](#174)) ([78f8f55](78f8f55)) * update broken tests ([#169](#169)) ([d8b35a2](d8b35a2)) ### Performance Improvements * **cli:** parallelize scenario log downloads with max concurrency of 50 ([#176](#176)) ([a5828a2](a5828a2)) * **cli:** parallelize scenario run fetching and name resolution in bmj logs ([#179](#179)) ([227d0fd](227d0fd)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
No description provided.