Skip to content

fix: add logs to devboxes, smoke tests & examples#742

Merged
james-rl merged 3 commits into
mainfrom
james/sdk-logs
Mar 4, 2026
Merged

fix: add logs to devboxes, smoke tests & examples#742
james-rl merged 3 commits into
mainfrom
james/sdk-logs

Conversation

@james-rl

@james-rl james-rl commented Mar 4, 2026

Copy link
Copy Markdown
Contributor

User description

⚠️ PR Title Must Follow Conventional Commits

Format: feat[optional scope]: <description>

Examples: feat: add new SDK method · feat(storage): support file uploads · feat!: breaking API change


Description

  • Adds missing oo devbox .logs method

Motivation

  • I noticed it was missing

Changes

Testing

  • Unit tests added
  • Integration tests added
  • Smoke Tests added/updated
  • Tested locally

Breaking Changes

Checklist

  • PR title follows Conventional Commits format (feat: or feat(scope):)
  • Documentation updated (if needed)
  • Breaking changes documented (if applicable)

CodeAnt-AI Description

Add devbox and blueprint logs retrieval; add smoke tests and example usage

What Changed

  • Devbox objects now expose a logs call that returns logs and accepts execution_id or shell_name filters.
  • Blueprint examples now fetch and include blueprint build logs and devbox logs in lifecycle checks.
  • New smoke tests verify basic log retrieval and that filtering by execution ID and shell name returns a valid log list.

Impact

✅ Can fetch devbox logs
✅ Can fetch blueprint build logs
✅ Verified logs filtering by execution and shell in CI

💡 Usage Guide

Checking Your Pull Request

Every time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later.

Talking to CodeAnt AI

Got a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask:

@codeant-ai ask: Your question here

This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code.

Example

@codeant-ai ask: Can you suggest a safer alternative to storing this secret?

Preserve Org Learnings with CodeAnt

You can record team preferences so CodeAnt AI applies them in future reviews. Reply directly to the specific CodeAnt AI suggestion (in the same thread) and replace "Your feedback here" with your input:

@codeant-ai: Your feedback here

This helps CodeAnt AI learn and adapt to your team's coding style and standards.

Example

@codeant-ai: Do not flag unused imports.

Retrigger review

Ask CodeAnt AI to review the PR again, by typing:

@codeant-ai: review

Check Your Repository Health

To analyze the health of your code repository, visit our dashboard at https://app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health.

@codeant-ai

codeant-ai Bot commented Mar 4, 2026

Copy link
Copy Markdown
Contributor

CodeAnt AI is reviewing your PR.


Thanks for using CodeAnt! 🎉

We're free for open-source projects. if you're enjoying it, help us grow by sharing.

Share on X ·
Reddit ·
LinkedIn

@james-rl
james-rl requested review from dines-rl and tode-rl March 4, 2026 17:29
@codeant-ai codeant-ai Bot added the size:L This PR changes 100-499 lines, ignoring generated files label Mar 4, 2026
@codeant-ai

codeant-ai Bot commented Mar 4, 2026

Copy link
Copy Markdown
Contributor

Nitpicks 🔍

🔒 No security issues identified
⚡ Recommended areas for review

  • Import Consistency
    The PR adds an import of DevboxLogsListView and LogListParams from
    ../resources/devboxes/logs. Confirm that this module is the canonical
    source for these types and that there isn't a duplicate/overlapping export
    in ../resources/devboxes/devboxes. Inconsistent imports can cause subtle
    type drift or duplicate type declarations across the codebase.

  • Flaky Test Risk
    Tests now call devbox.logs() immediately after creation or command execution.
    Logs may be delayed or empty depending on timing. Consider adding retries,
    small backoff, or assertions tolerant of empty results to reduce flakiness.

@codeant-ai

codeant-ai Bot commented Mar 4, 2026

Copy link
Copy Markdown
Contributor

CodeAnt AI finished reviewing your PR.

@github-actions

github-actions Bot commented Mar 4, 2026

Copy link
Copy Markdown

⚠️ Object Smoke Tests & Coverage Report

Test Results

✅ All smoke tests passed

Coverage Results

Metric Coverage Required Status
Functions 99.52% 100%
Lines 88.87% - ℹ️
Branches 65.75% - ℹ️
Statements 87.53% - ℹ️

Coverage Requirement: 100% function coverage (all public methods must be called in smoke tests)

⚠️ Some object methods are not covered in smoke tests. Please add tests that call all public methods.

View detailed coverage report
File Functions Lines Branches
src/sdk.ts ✅ 100% 85.11% 70.83%
src/sdk/agent.ts ✅ 100% 100% 100%
src/sdk/blueprint.ts ✅ 100% 100% 80%
src/sdk/devbox.ts ❌ 97.56% 90.99% 96.96%
src/sdk/execution-result.ts ✅ 100% 92.68% 70.83%
src/sdk/execution.ts ✅ 100% 94.11% 83.33%
src/sdk/gateway-config.ts ✅ 100% 100% 100%
src/sdk/mcp-config.ts ✅ 100% 100% 100%
src/sdk/network-policy.ts ✅ 100% 100% 100%
src/sdk/scenario-run.ts ✅ 100% 96.87% 50%
src/sdk/scenario.ts ✅ 100% 100% 100%
src/sdk/scorer.ts ✅ 100% 100% 100%
src/sdk/snapshot.ts ✅ 100% 100% 100%
src/sdk/storage-object.ts ✅ 100% 80% 48.93%

📋 View workflow run

Comment thread README.md
const devbox = await runloop.devbox.create();

// Get all devbox logs
const logs = await devbox.logs();

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this all like executions too?

Comment thread README.md

// Filter logs by execution ID
const result = await devbox.cmd.exec('echo "hello"');
const execLogs = await devbox.logs({ execution_id: result.executionId });

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this the smae as getting the asyncExecResult.logs?

@james-rl
james-rl merged commit 0462122 into main Mar 4, 2026
9 checks passed
@james-rl
james-rl deleted the james/sdk-logs branch March 4, 2026 19:37
@stainless-app stainless-app Bot mentioned this pull request Mar 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L This PR changes 100-499 lines, ignoring generated files

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants