Behind jackin❯ — crates

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

ModuleOwnsTests
lib.rscrate root, re-exports—
agent.rs · agent/agent identitytests.rs
instance.rsinstance type—
manifest.rsmanifest fragment—
status.rs · status/status typetests.rs
operator_notice.rsoperator notice—
auth.rsauth model—
account_key.rs · account_key/account keytests.rs
claude_keychain.rs · claude_keychain/Claude Code macOS Keychain service derivation (claude_keychain_scope) shared by instance provisioning and the usage probetests.rs
env_model.rs · env_model/env modeltests.rs
env_value.rs · env_value/env valuetests.rs
paths.rs · paths/host paths + PathsErrortests.rs
isolation.rsisolation type—
isolation_record.rsisolation record—
worktree_dirty.rs · worktree_dirty/worktree-dirty checktests.rs
runner.rsCommandRunner port—
clock.rs · clock/Clock port + ManualClocktests.rs
launch_progress.rslaunch progress—
prompt_result.rsprompt result—
selector.rsselector—
docker.rsdocker types—
docker_security.rs · docker_security/docker securitytests.rs
build_log_sink.rsbuild-log sink stub—
standalone_dialog.rs · standalone_dialog/standalone dialog port (trait + sink; render impl in jackin-launch)tests.rs
url_text.rsurl text—
path_text.rs · path_text/path texttests.rs
op_cache.rs · op_cache/op cachetests.rs
op_probe_error.rs · op_probe_error/typed op probe errorstests.rs
op_reference.rs · op_reference/op referencetests.rs
op_types.rsop types—
constants.rsshared constants—
container_paths.rs · container_paths/container-side /jackin/ path chokepointtests.rs

Public API

Plan 019 surface: implementation modules are private; the intentional API is the root re-export list in lib.rs (use jackin_core::\{Agent, JackinPaths, …}).

Remaining root pub mods (individually justified):

ModuleWhy public
container_pathsNamespace 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

On this page