{"_id":"@_davideast/jules-env","_rev":"8-2f1bb14889c8c7da8ea01d1ffc0e8c5d","name":"@_davideast/jules-env","dist-tags":{"latest":"0.2.3"},"versions":{"0.0.2":{"name":"@_davideast/jules-env","version":"0.0.2","license":"Apache-2.0","_id":"@_davideast/jules-env@0.0.2","maintainers":[{"name":"_davideast","email":"eastdavid7@gmail.com"}],"bin":{"jules-env":"bin/jules-env"},"dist":{"shasum":"30efef72e2a58cd9cedb2b50bd1982f8bca4ebc9","tarball":"https://registry.npmjs.org/@_davideast/jules-env/-/jules-env-0.0.2.tgz","fileCount":5,"integrity":"sha512-RqQDKQj7q+eEo9hymW6zDRVHF/ejm7PhgmbslBevQAmKyxu+2vPOnnWJgQte1ga7a4pDYxeh0i/NR2QI/XBS8A==","signatures":[{"sig":"MEYCIQDfpbRgl3I3yjBWBpZiefs1W0q7JEwGDKG+90fS7hb46QIhAMy0w22TvuDb8M+kzDKy9cboPEKYuKI2MZbSiY8kJ1QI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":212808},"main":"dist/cli.mjs","type":"module","gitHead":"1d0813628d16a6469b12db95ebd72439962e6e13","scripts":{"test":"bun test","build":"bun run build:node && bun run build:binary","start":"bun run ./src/cli.ts","prepack":"bun run scripts/prepublish-checks.ts","check:all":"bun run scripts/prepublish-checks.ts","typecheck":"tsc --noEmit","build:node":"bun build ./src/cli.ts --outfile dist/cli.mjs --target node","build:binary":"bun build ./src/cli.ts --compile --outfile jules-env"},"_npmUser":{"name":"_davideast","email":"eastdavid7@gmail.com"},"_npmVersion":"10.9.3","description":"Configure ephemeral development environments","directories":{},"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"3.23.8","commander":"^14.0.2","@types/bun":"latest","@types/node":"^22"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/jules-env_0.0.2_1770504120231_0.26339748433406474","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@_davideast/jules-env","version":"0.1.0","license":"Apache-2.0","_id":"@_davideast/jules-env@0.1.0","maintainers":[{"name":"_davideast","email":"eastdavid7@gmail.com"}],"bin":{"jules-env":"bin/jules-env"},"dist":{"shasum":"c30c5fe6789606af14d205cf2422cbbabf1ef963","tarball":"https://registry.npmjs.org/@_davideast/jules-env/-/jules-env-0.1.0.tgz","fileCount":5,"integrity":"sha512-GYYk3HNWMVWIz8ZKLBkXmgx9L5EEkWgkmijGGCF+uWq4K656LcU/zO2U7algCkhRCWtVCxRGWF1BpRyJwVkqZw==","signatures":[{"sig":"MEUCIQCglbRZAG3Q4RA55MXiZ+QE/ZU8+Gc2nPWoJLl0ox6HmQIgWPGOpUkHYe/DIsnkkLJn5856zXkG2jA89IdAEE7a0Ko=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":216992},"main":"dist/cli.mjs","type":"module","gitHead":"6d845d95194b433d6409b8ead74d9784e537e0c3","scripts":{"test":"bun test","build":"bun run build:node && bun run build:binary","start":"bun run ./src/cli.ts","prepack":"bun run scripts/prepublish-checks.ts","check:all":"bun run scripts/prepublish-checks.ts","typecheck":"tsc --noEmit","build:node":"bun build ./src/cli.ts --outfile dist/cli.mjs --target node","build:binary":"bun build ./src/cli.ts --compile --outfile jules-env"},"_npmUser":{"name":"_davideast","email":"eastdavid7@gmail.com"},"_npmVersion":"10.9.3","description":"Configure ephemeral development environments","directories":{},"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"3.23.8","commander":"^14.0.2","@types/bun":"latest","@types/node":"^22"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/jules-env_0.1.0_1770528969101_0.2979122269144572","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@_davideast/jules-env","version":"0.1.1","license":"Apache-2.0","_id":"@_davideast/jules-env@0.1.1","maintainers":[{"name":"_davideast","email":"eastdavid7@gmail.com"}],"bin":{"jules-env":"bin/jules-env"},"dist":{"shasum":"9505fc3550c976798fd2a3316df901bb84ea09b1","tarball":"https://registry.npmjs.org/@_davideast/jules-env/-/jules-env-0.1.1.tgz","fileCount":5,"integrity":"sha512-QpDSUpkbYQ9+mNNKlfctPft/o6igRrSbNQiXAJbxWKMImUa0zfdqO3IQIIqFa3/qYZ002M6TQkIDOy9jCbnEoQ==","signatures":[{"sig":"MEUCIQCZiE1hYZKBSQmgyddCf6PfMQ5vz6zmFwsu1BUqobk1pAIgUVjzzA9t4jQ2erYN0hP3R4NnfPZ7LBoHMrp57II7MAo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":217097},"main":"dist/cli.mjs","type":"module","gitHead":"aaa9664426ebb9b38826214fde6918fbb418ac0c","scripts":{"test":"bun test","build":"bun run build:node && bun run build:binary","start":"bun run ./src/cli.ts","prepack":"bun run scripts/prepublish-checks.ts","check:all":"bun run scripts/prepublish-checks.ts","typecheck":"tsc --noEmit","build:node":"bun build ./src/cli.ts --outfile dist/cli.mjs --target node","build:binary":"bun build ./src/cli.ts --compile --outfile jules-env"},"_npmUser":{"name":"_davideast","email":"eastdavid7@gmail.com"},"_npmVersion":"10.9.3","description":"Configure ephemeral development environments","directories":{},"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"3.23.8","commander":"^14.0.2","@types/bun":"latest","@types/node":"^22"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/jules-env_0.1.1_1770531055345_0.5370025087297958","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@_davideast/jules-env","version":"0.1.2","license":"Apache-2.0","_id":"@_davideast/jules-env@0.1.2","maintainers":[{"name":"_davideast","email":"eastdavid7@gmail.com"}],"bin":{"jules-env":"bin/jules-env"},"dist":{"shasum":"c542fee6d5a36716d217cc73fe4295b81d28a630","tarball":"https://registry.npmjs.org/@_davideast/jules-env/-/jules-env-0.1.2.tgz","fileCount":5,"integrity":"sha512-hLMA2PqgJOjnW//1gAnwAdUuRTBkU3h9yZJ7mhtXVzIMsol9lFYA7JWtOinVc3bdQuQqQVk9CbAS+VC6E2vkrw==","signatures":[{"sig":"MEYCIQDMCF949LYLswOzP0N3CupTEzR4J55QWipYE9LjaRFpTAIhALO093YYhTkL1apQYTpFJOhKdorShNuAqlcKIYlSPzkR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":217075},"main":"dist/cli.mjs","type":"module","gitHead":"e2a04357ce9bab13bb54079e62fae04463574290","scripts":{"test":"bun test","build":"bun run build:node && bun run build:binary","start":"bun run ./src/cli.ts","prepack":"bun run scripts/prepublish-checks.ts","check:all":"bun run scripts/prepublish-checks.ts","typecheck":"tsc --noEmit","build:node":"bun build ./src/cli.ts --outfile dist/cli.mjs --target node","build:binary":"bun build ./src/cli.ts --compile --outfile jules-env"},"_npmUser":{"name":"_davideast","email":"eastdavid7@gmail.com"},"_npmVersion":"10.9.3","description":"Configure ephemeral development environments","directories":{},"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"3.23.8","commander":"^14.0.2","@types/bun":"latest","@types/node":"^22"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/jules-env_0.1.2_1770531505540_0.8976567562673201","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@_davideast/jules-env","version":"0.2.0","license":"Apache-2.0","_id":"@_davideast/jules-env@0.2.0","maintainers":[{"name":"_davideast","email":"eastdavid7@gmail.com"}],"np":{"2fa":false},"bin":{"jules-env":"bin/jules-env"},"dist":{"shasum":"9774b1e03689cb02f3761a3f51e85126d85dbc66","tarball":"https://registry.npmjs.org/@_davideast/jules-env/-/jules-env-0.2.0.tgz","fileCount":5,"integrity":"sha512-FvY+IGpHZ+QqbBHq2p1ZJH26Z5P/FolP8K0WKl3+yMQ5WmhTQxYGQmNCmBXBNVorBcS4LPfxXXfcrBQoNKCdcA==","signatures":[{"sig":"MEUCICqnmOeIRG30G9kKOqeqOOtiCcFavnPlUDr09cBm2NcLAiEAs2a3GQW+brWPX3SMWTJIUBa2yiw7Nxe5tIBxTsVTQZE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":219984},"main":"dist/cli.mjs","type":"module","gitHead":"9ff15516e768dd18c5319e4b04aa81d99152991e","scripts":{"test":"bun test","build":"bun run build:node && bun run build:binary","start":"bun run ./src/cli.ts","docker":"docker build -t jules-env . && docker run --rm -it jules-env","prepack":"bun run scripts/prepublish-checks.ts","check:all":"bun run scripts/prepublish-checks.ts","typecheck":"tsc --noEmit","build:node":"bun build ./src/cli.ts --outfile dist/cli.mjs --target node","build:binary":"bun build ./src/cli.ts --compile --outfile jules-env"},"_npmUser":{"name":"_davideast","email":"eastdavid7@gmail.com"},"_npmVersion":"10.9.3","description":"Configure ephemeral development environments","directories":{},"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"3.23.8","commander":"^14.0.2","@types/bun":"latest","@types/node":"^22"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/jules-env_0.2.0_1770578790800_0.5755237364861896","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@_davideast/jules-env","version":"0.2.1","license":"Apache-2.0","_id":"@_davideast/jules-env@0.2.1","maintainers":[{"name":"_davideast","email":"eastdavid7@gmail.com"}],"np":{"2fa":false},"bin":{"jules-env":"bin/jules-env"},"dist":{"shasum":"4d20e800d4f11d3cda22d5bd70c6ca09d4a8ea5e","tarball":"https://registry.npmjs.org/@_davideast/jules-env/-/jules-env-0.2.1.tgz","fileCount":5,"integrity":"sha512-ec+tLndBLjNZ9YuKHASZTs1PnMSJtWLuSxEqz1o6K2w1ZmscG3zH4nOWv3EU9KdLD/3JO/xlcsK74xHL69BOEA==","signatures":[{"sig":"MEYCIQC4drZ3/BiNgASWnbtBKxZMVo8ASaWp6+GLLY7Lkqx+qQIhAJFDXWX+ZmqyIJb2EV491NRDZyg0GGaf4ZXTtg/FSY/e","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":227968},"main":"dist/cli.mjs","type":"module","gitHead":"b9530d101c927db7128d88055f17b7f39475469f","scripts":{"test":"bun test","build":"bun run build:node && bun run build:binary","start":"bun run ./src/cli.ts","docker":"docker build -t jules-env . && docker run --rm -it jules-env","prepack":"bun run scripts/prepublish-checks.ts","check:all":"bun run scripts/prepublish-checks.ts","typecheck":"tsc --noEmit","build:node":"bun build ./src/cli.ts --outfile dist/cli.mjs --target node","build:binary":"bun build ./src/cli.ts --compile --outfile jules-env","test:install":"./scripts/test-install.sh"},"_npmUser":{"name":"_davideast","email":"eastdavid7@gmail.com"},"_npmVersion":"10.9.3","description":"Configure ephemeral development environments","directories":{},"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"3.23.8","commander":"^14.0.2","@types/bun":"latest","@types/node":"^22"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/jules-env_0.2.1_1770653772464_0.2893294878715793","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@_davideast/jules-env","version":"0.2.2","license":"Apache-2.0","_id":"@_davideast/jules-env@0.2.2","maintainers":[{"name":"_davideast","email":"eastdavid7@gmail.com"}],"np":{"2fa":false},"bin":{"jules-env":"bin/jules-env"},"dist":{"shasum":"793de08aead465c3c1f9b9cb56c29aa24c0102ae","tarball":"https://registry.npmjs.org/@_davideast/jules-env/-/jules-env-0.2.2.tgz","fileCount":5,"integrity":"sha512-jOFZPYlrD/r7gIpW5m5cuiPrCeyt0MAz/sgeWq42H/ASK+odfIGnF3jHuVbqmBobsrigQHfsTiocqhraP4qmbQ==","signatures":[{"sig":"MEMCIH//goOFbTwvo8RMiTJqLFwwJLoXz4FYCvDCy/lQR1GmAh8bAIdLJZVgbMAn8POdg1geqgnhdkw6CmK1D86ltKi+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":228059},"main":"dist/cli.mjs","type":"module","gitHead":"b7a58f1266b6587a150f25bca0e75f244f5accf8","scripts":{"test":"bun test","build":"bun run build:node && bun run build:binary","start":"bun run ./src/cli.ts","docker":"docker build -t jules-env . && docker run --rm -it jules-env","prepack":"bun run scripts/prepublish-checks.ts","check:all":"bun run scripts/prepublish-checks.ts","typecheck":"tsc --noEmit","build:node":"bun build ./src/cli.ts --outfile dist/cli.mjs --target node","build:binary":"bun build ./src/cli.ts --compile --outfile jules-env","test:install":"./scripts/test-install.sh"},"_npmUser":{"name":"_davideast","email":"eastdavid7@gmail.com"},"_npmVersion":"10.9.3","description":"Configure ephemeral development environments","directories":{},"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"3.23.8","commander":"^14.0.2","@types/bun":"latest","@types/node":"^22"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/jules-env_0.2.2_1770660853775_0.5932303664335787","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@_davideast/jules-env","version":"0.2.3","description":"Configure ephemeral development environments","license":"Apache-2.0","type":"module","main":"dist/cli.mjs","bin":{"jules-env":"bin/jules-env"},"publishConfig":{"access":"public"},"devDependencies":{"@types/bun":"latest","@types/node":"^22","commander":"^14.0.2","zod":"3.23.8"},"peerDependencies":{"typescript":"^5"},"scripts":{"build":"bun run build:node && bun run build:binary","build:node":"bun build ./src/cli.ts --outfile dist/cli.mjs --target node","build:binary":"bun build ./src/cli.ts --compile --outfile jules-env","start":"bun run ./src/cli.ts","test":"bun test","typecheck":"tsc --noEmit","check:all":"bun run scripts/prepublish-checks.ts","prepack":"bun run scripts/prepublish-checks.ts","docker":"docker build -t jules-env . && docker run --rm -it jules-env","test:install":"./scripts/test-install.sh"},"np":{"2fa":false},"_id":"@_davideast/jules-env@0.2.3","gitHead":"01647ea02a6c81cd9b814257d2752714c93ffc23","_nodeVersion":"22.18.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-hq5ol97IQTZoxT/GqP18BRhz3gPVFL33XvoXAuUbcaZZNiRAZwZdr1r1gfb1LTP/KvBVBSxeah7LOZ6Pluszfg==","shasum":"e1d740ea75aacc12ba4c8eb0b02069e0f8278d02","tarball":"https://registry.npmjs.org/@_davideast/jules-env/-/jules-env-0.2.3.tgz","fileCount":5,"unpackedSize":231190,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGJD9CM6GSLv9o40OH6LqStwrRbxyKZnJrPdlKxMYC7OAiAVAd1+ozY57baki8VYFQ3dQNv5HWkj8Tllk+P3urBthg=="}]},"_npmUser":{"name":"_davideast","email":"eastdavid7@gmail.com"},"directories":{},"maintainers":[{"name":"_davideast","email":"eastdavid7@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/jules-env_0.2.3_1770746843448_0.5129723100427146"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-07T22:42:00.124Z","modified":"2026-02-10T18:07:23.714Z","0.0.2":"2026-02-07T22:42:00.388Z","0.1.0":"2026-02-08T05:36:09.243Z","0.1.1":"2026-02-08T06:10:55.490Z","0.1.2":"2026-02-08T06:18:25.728Z","0.2.0":"2026-02-08T19:26:30.958Z","0.2.1":"2026-02-09T16:16:12.633Z","0.2.2":"2026-02-09T18:14:13.942Z","0.2.3":"2026-02-10T18:07:23.607Z"},"license":"Apache-2.0","description":"Configure ephemeral development environments","maintainers":[{"name":"_davideast","email":"eastdavid7@gmail.com"}],"readme":"# jules-env\n\nConfigure ephemeral development environments in one command.\n\n```bash\njules-env use dart\n```\n\nThat's it. The runtime is installed, environment variables are set, and your shell is configured:\n\n```\n✔ brew install dart-sdk\nWrote ~/.jules/shellenv\n  export PATH=\"/opt/homebrew/opt/dart-sdk/bin:$PATH\"\n  export DART_SDK=\"/opt/homebrew/opt/dart-sdk/libexec\"\n```\n\n## Runtime configuration\n\n`jules-env` follows a **recipe → plan → execute** model:\n\n1. **Recipe** — A recipe describes how to install a runtime. It probes the system (e.g., `brew --prefix dart-sdk`) but never modifies it.\n2. **Plan** — The recipe produces an execution plan: shell commands to run, environment variables to set, and paths to prepend.\n3. **Execute** — The plan runs. Install steps that are already satisfied (checked via an optional `checkCmd`) are skipped. State is persisted to `~/.jules/shellenv`.\n\n### Data recipes\n\nRecipes can also be defined as JSON files. A data recipe is a static execution plan — no system probing, no dynamic resolution. This makes them easy to generate programmatically (e.g., by an LLM). Data recipes are validated against a Zod schema at load time. See `src/recipes/ollama.json` for an example.\n\n## Shell environment\n\nAfter execution, `~/.jules/shellenv` contains the environment your runtime needs:\n\n```bash\nexport PATH=\"/opt/homebrew/opt/dart-sdk/bin:$PATH\"\nexport DART_SDK=\"/opt/homebrew/opt/dart-sdk/libexec\"\n```\n\nSource it to activate:\n\n```bash\nsource ~/.jules/shellenv\n```\n\nThe file is appended to on subsequent runs, so multiple runtimes compose cleanly.\n\n## CLI reference\n\n```\njules-env use <runtime> [options]\n```\n\n### Arguments\n\n- `<runtime>` — The runtime environment to setup (e.g., `dart`).\n\n### Options\n\n| Flag | Description | Default |\n|------|-------------|---------|\n| `--version <v>` | Version of the runtime to install | `latest` |\n| `--dry-run` | Simulate execution — no changes are made | `false` |\n| `--preset <p>` | Apply a configuration preset (if available for the runtime) | — |\n| `-h, --help` | Display help | — |\n\n### Dry run\n\nPreview what would happen without touching the system:\n\n```bash\njules-env use dart --dry-run\n```\n\n## Available recipes\n\n| Runtime | Recipe | Type | Description |\n|---------|--------|------|-------------|\n| Dart | `dart` | Code | Installs the Dart SDK (Homebrew on macOS, apt on Linux) |\n| Ollama | `ollama` | Data | Installs Ollama with EmbeddingGemma model |\n\n## Installation\n\n### npm\n\n```bash\nnpm install jules-env\n```\n\n### From source\n\n```bash\ngit clone <repository_url>\ncd jules-env\nbun install\nbun run build\n```\n\n## Development\n\n### Prerequisites\n\n- [Bun](https://bun.sh/)\n- [Homebrew](https://brew.sh/) (macOS only, used by Dart recipe)\n\n### Run tests\n\n```bash\nbun test\n```\n\n### Build\n\n```bash\nbun run build          # Build both Node.js bundle and Bun binary\nbun run build:node     # Node.js bundle only (dist/cli.mjs)\nbun run build:binary   # Standalone Bun binary only (jules-env)\n```\n\n### Type check\n\n```bash\nbun run typecheck\n```\n\n### Prepublish checks\n\nRun the full validation suite before publishing:\n\n```bash\nbun run check:all\n```\n\nThis validates version, runs type checks, tests, builds both targets, and smoke-tests the outputs.\n","readmeFilename":"README.md"}