23adc93f5e
Currently, when you provide a simple folder pattern like `folder/` to copy() it will not check folders contents for changes (only the folder metadata itself) which leads to stale caches. This fix appends ** pattern when no pattern is specified for recursive hash computation. <!-- CURSOR_SUMMARY --> --- > [!NOTE] > Ensure folder COPY patterns hash contents recursively to fix cache invalidation, adding a shared file-gathering helper, tests, and a Python glob dependency. > > - **Template hashing (JS + Python SDKs)**: > - Add `getAllFilesForFilesHash` (`packages/js-sdk/src/template/utils.ts`) and `get_all_files_for_files_hash` (`packages/python-sdk/e2b/template/utils.py`) to collect directories and nested files using glob patterns and ignores. > - Update `calculateFilesHash`/`calculate_files_hash` to use the new helpers, hashing recursive paths, metadata, and file contents; handle symlinks consistently. > - **Tests**: > - Add comprehensive tests for recursive matching, ignore patterns, sorting, empty dirs, symlinks in `packages/js-sdk/tests/.../getAllFilesForFilesHash.test.ts` and Python async/sync tests under `packages/python-sdk/tests/.../test_get_all_files_for_files_hash.py`. > - **Dependencies**: > - Add `wcmatch` in `packages/python-sdk/pyproject.toml` for advanced globbing. > - **Release**: > - Patch bump via `.changeset/green-mice-watch.md`. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit d495427d86ad4e4d5a280567baa63df40a3271fb. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> --------- Co-authored-by: Jakub Dobry <jakub.dobry8@gmail.com>
What is E2B?
E2B is an open-source infrastructure that allows you to run AI-generated code in secure isolated sandboxes in the cloud. To start and control sandboxes, use our JavaScript SDK or Python SDK.
Run your first Sandbox
1. Install SDK
npm i @e2b/code-interpreter
2. Get your E2B API key
E2B_API_KEY=e2b_***
3. Execute code with code interpreter inside Sandbox
import { Sandbox } from '@e2b/code-interpreter'
const sbx = await Sandbox.create()
await sbx.runCode('x = 1')
const execution = await sbx.runCode('x+=1; x')
console.log(execution.text) // outputs 2
4. Check docs
Visit E2B documentation.
5. E2B cookbook
Visit our Cookbook to get inspired by examples with different LLMs and AI frameworks.
