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



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

Canonical host-console product surface. Owns reusable console state, update/input planning, view composition, components, pure product decisions, and effects-as-data for the operator console — the TUI an operator drives via `jackin console`.

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

* Console state + planning for workspaces, mounts, and services (`workspace`, `services`, `github_mounts`).
* Mount diff/info and the mount-info cache (`mount_diff`, `mount_info`, `mount_info_cache`).
* Console view composition + input (`tui`).

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

**L3 presentation.** Allowed workspace dependencies: `jackin-config`, `jackin-console-oppicker`, `jackin-core`, `jackin-diagnostics`, `jackin-env`, `jackin-protocol`, `jackin-tui`. Must NOT depend on `jackin-runtime`, `jackin-launch-tui`, or `jackin-capsule` directly — console reaches runtime through effects-as-data, not direct calls.

## Structure [#structure]

| Module                                                                                                                                                                              | Owns                                               | Tests                                                                                   |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- | --------------------------------------------------------------------------------------- |
| <RepoFile path="crates/jackin-console/src/lib.rs">`lib.rs`</RepoFile>                                                                                                               | crate root, re-exports                             | —                                                                                       |
| <RepoFile path="crates/jackin-console/src/workspace.rs">`workspace.rs`</RepoFile> · <RepoFile path="crates/jackin-console/src/workspace.rs">`workspace/`</RepoFile>                 | console workspace state                            | <RepoFile path="crates/jackin-console/src/workspace/tests.rs">`tests.rs`</RepoFile>     |
| <RepoFile path="crates/jackin-console/src/services.rs">`services.rs`</RepoFile> · <RepoFile path="crates/jackin-console/src/services.rs">`services/`</RepoFile>                     | services                                           | —                                                                                       |
| <RepoFile path="crates/jackin-console/src/github_mounts.rs">`github_mounts.rs`</RepoFile> · <RepoFile path="crates/jackin-console/src/github_mounts.rs">`github_mounts/`</RepoFile> | GitHub mounts                                      | <RepoFile path="crates/jackin-console/src/github_mounts/tests.rs">`tests.rs`</RepoFile> |
| <RepoFile path="crates/jackin-console/src/mount_info.rs">`mount_info.rs`</RepoFile> · <RepoFile path="crates/jackin-console/src/mount_info.rs">`mount_info/`</RepoFile>             | mount info                                         | <RepoFile path="crates/jackin-console/src/mount_info/tests.rs">`tests.rs`</RepoFile>    |
| <RepoFile path="crates/jackin-console/src/mount_info_cache.rs">`mount_info_cache.rs`</RepoFile>                                                                                     | mount-info cache                                   | —                                                                                       |
| <RepoFile path="crates/jackin-console/src/mount_diff.rs">`mount_diff.rs`</RepoFile>                                                                                                 | mount diff                                         | —                                                                                       |
| <RepoFile path="crates/jackin-console/src/tui.rs">`tui.rs`</RepoFile> · <RepoFile path="crates/jackin-console/src/tui.rs">`tui/`</RepoFile>                                         | view composition + input                           | —                                                                                       |
| <RepoFile path="crates/jackin-console/src/tui/screens/form_model.rs">`tui/screens/form_model.rs`</RepoFile>                                                                         | shared form `FieldRow` / `FormSection` view models | —                                                                                       |

## Public API [#public-api]

Console state machine + view models consumed by the `jackin` binary's console entry point. Picker model/planning is split into `jackin-console-oppicker`; this crate owns only the side-effect adapters.

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

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