# jackin-env (https://jackin.tailrocks.com/reference/crates/jackin-env/)



{/* GENERATED from crates/jackin-env/README.md — edit the README, not this file */}

Operator-environment resolution and 1Password (`op`) CLI integration. Turns declared operator env into resolved values, runs the `op` CLI for secret lookups, and feeds the resolved env layer into runtime launch.

## What this crate owns [#what-this-crate-owns]

* The `operator_env` resolution stack (`env_layer`, `env_resolver`, `resolve`) and the `op` CLI bridge (`op_cli`, `op_runner`, `op_struct`, `token_setup`).
* The interactive 1Password secret picker (`picker`) and host-side Claude env wiring (`host_claude`).
* Output/parse helpers and `test_support` for deterministic env fixtures.

## Architecture tier and allowed dependencies [#architecture-tier-and-allowed-dependencies]

**L1 application.** Allowed workspace dependencies: `jackin-core`, `jackin-config`, `jackin-protocol`, `jackin-diagnostics`. Stays below presentation so `jackin-launch-tui`/`jackin-console` can consume it.

## Structure [#structure]

| Module                                                                                                                                                                                     | Owns                                                         | Tests                                                                              |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------ | ---------------------------------------------------------------------------------- |
| <RepoFile path="crates/jackin-env/src/lib.rs">`lib.rs`</RepoFile>                                                                                                                          | crate root, re-exports                                       | —                                                                                  |
| <RepoFile path="crates/jackin-env/src/env_resolver.rs">`env_resolver.rs`</RepoFile> · <RepoFile path="crates/jackin-env/src/env_resolver.rs">`env_resolver/`</RepoFile>                    | env resolution                                               | <RepoFile path="crates/jackin-env/src/env_resolver/tests.rs">`tests.rs`</RepoFile> |
| <RepoFile path="crates/jackin-env/src/env_layer.rs">`env_layer.rs`</RepoFile&#x3E; &#x2A;(internal)*                                                                                       | env layer                                                    | —                                                                                  |
| <RepoFile path="crates/jackin-env/src/resolve.rs">`resolve.rs`</RepoFile> · <RepoFile path="crates/jackin-env/src/resolve.rs">`resolve/`</RepoFile>                                        | resolution entry                                             | <RepoFile path="crates/jackin-env/src/resolve/tests.rs">`tests.rs`</RepoFile>      |
| <RepoFile path="crates/jackin-env/src/op_cli.rs">`op_cli.rs`</RepoFile> · <RepoFile path="crates/jackin-env/src/op_cli.rs">`op_cli/`</RepoFile>                                            | `op` CLI bridge                                              | <RepoFile path="crates/jackin-env/src/op_cli/tests.rs">`tests.rs`</RepoFile>       |
| <RepoFile path="crates/jackin-env/src/op_runner.rs">`op_runner.rs`</RepoFile>                                                                                                              | `op` runner                                                  | —                                                                                  |
| <RepoFile path="crates/jackin-env/src/op_struct.rs">`op_struct.rs`</RepoFile>                                                                                                              | `op` struct types                                            | —                                                                                  |
| <RepoFile path="crates/jackin-env/src/token_setup.rs">`token_setup.rs`</RepoFile> · <RepoFile path="crates/jackin-env/src/token_setup.rs">`token_setup/`</RepoFile>                        | `op` token setup                                             | <RepoFile path="crates/jackin-env/src/token_setup/tests.rs">`tests.rs`</RepoFile>  |
| <RepoFile path="crates/jackin-env/src/picker.rs">`picker.rs`</RepoFile>                                                                                                                    | secret picker model (pure half in `jackin-console-oppicker`) | —                                                                                  |
| <RepoFile path="crates/jackin-env/src/host_claude.rs">`host_claude.rs`</RepoFile&#x3E; &#x2A;(internal)* · <RepoFile path="crates/jackin-env/src/host_claude.rs">`host_claude/`</RepoFile> | host-side Claude env wiring                                  | <RepoFile path="crates/jackin-env/src/host_claude/tests.rs">`tests.rs`</RepoFile>  |
| <RepoFile path="crates/jackin-env/src/output.rs">`output.rs`</RepoFile>                                                                                                                    | output helpers                                               | —                                                                                  |
| <RepoFile path="crates/jackin-env/src/parse_helpers.rs">`parse_helpers.rs`</RepoFile>                                                                                                      | parse helpers                                                | —                                                                                  |
| <RepoFile path="crates/jackin-env/src/test_support.rs">`test_support.rs`</RepoFile>                                                                                                        | test fixtures                                                | —                                                                                  |

## Public API [#public-api]

**All public items are root re-exports; module paths are not API.** Implementation modules are crate-private (`mod` not `pub mod`). Consumers import `jackin_env::\{…}` only.

Root surface groups: env resolution (`ResolvedEnv`, `EnvPrompter`, `resolve_env*`, `ResolveEnvError`), operator-env resolve (`resolve_operator_env*`, `OperatorEnvError`, `collect_on_demand_bindings`, …), `op` CLI/runner/struct/picker types, token-setup orchestrator subset, `parse_host_ref`.

Feature `test-support` keeps `jackin_env::test_support` as a public module path.

Typed errors (thiserror): `OperatorEnvError`, `ResolveEnvError`.

## How to verify [#how-to-verify]

```sh
cargo nextest run -p jackin-env
cargo clippy -p jackin-env --all-targets -- -D warnings
```
