jackin-core
Shared jackin❯ vocabulary and pure cross-surface projections. This L0 leaf has no jackin❯ dependencies, async runtime, filesystem, subprocess, or side effects.
What this crate owns
- Domain nouns every other crate speaks in: agent identity, instance, isolation, manifest fragments, env model, status, launch progress, operator notices.
- Ports, constants, paths, and selector/URL/path helpers reused by higher crates.
- Renderer-neutral product identity tokens live in
jackin-brand; terminal protocol encoding and Ratatui adapters live in their presentation owners.
Cross-surface product presentation (Debug-info paint, product brand/domain Ratatui tokens, shared product chrome composition) lives in jackin-tui, not here.
Architecture tier and allowed dependencies
L0 leaf/domain + pure projections. No workspace dependencies or effects. No Ratatui frame paint, layout adapters, or widget bodies. Presentation layout, hover builders, terminal-protocol scroll decode, Debug-info rendering, and product tokens live in jackin-tui and surface crates (jackin-console / jackin-capsule / jackin-launch) — not here. Neutral TermRock Theme/Role resolution is done at the surface call site.
Structure
Public API
Plan 019 surface: implementation modules are private; the intentional API is the root re-export list in (lib.rsuse jackin_core::\{Agent, JackinPaths, …}).
Remaining root pub mods (individually justified):
| Module | Why public |
|---|---|
container_paths | Namespace for container-side /jackin/ path constants (use jackin_core::container_paths) across runtime/capsule/usage |
Higher crates implement the port traits defined here (e.g. CommandRunner) and pass the domain types through. Debug-info product presentation is jackin_tui::operator_info.
Typed construction/parse errors (thiserror): ParseProfileError, ParseMountIsolationError, ParseAgentError, SelectorError, EnvCycleError, PathsError, OpProbeError.
How to verify
cargo nextest run -p jackin-core
cargo clippy -p jackin-core --all-targets -- -D warnings