hatchery-node 0.2.0

Hatchery node: the complete node kit over the gate4agent transport (PTY/inline sessions, file browser, local git, worktrees, mailbox, browser station, session restore)
Documentation

[package]
name = "hatchery-node"
version = "0.2.0"
edition = "2021"
license = "MIT"
repository = "https://github.com/ZENG3LD/hatchery"
description = "Hatchery node: the complete node kit over the gate4agent transport (PTY/inline sessions, file browser, local git, worktrees, mailbox, browser station, session restore)"

[lib]
name = "hatchery_node"

[[bin]]
name = "gate4agent-node"
path = "src/main.rs"

[dependencies]
# Standard kit cores, all from crates.io: dig2browser 0.5 (browser machine and
# stream), mail4agent 0.4 (lib face), session-restore libraries 0.1.x.
dig2browser = { version = "0.5.3", optional = true, default-features = false }
mail4agent = { version = "0.4.8", optional = true, default-features = false }
claude-session-restore = { version = "0.1.3", optional = true }
codex-session-restore = { version = "0.1.3", optional = true }
grok-session-restore = { version = "0.1.4", optional = true }
kimi-session-restore = { version = "0.1.4", optional = true }
gate4agent-adapters = { version = "0.5.0" }
gate4agent-catalog = { version = "0.5.0" }
gate4agent-handle = { version = "0.5.0" }
gate4agent-node-core = { version = "0.5.0" }
gate4agent-node-protocol = { version = "0.5.0" }
gate4agent-node-wire = { version = "0.5.0" }
gate4agent-runtime-native = { version = "0.5.0" }
gate4agent-testkit = { optional = true, version = "0.5.0" }
gate4agent-types = { version = "0.5.0" }
ring = "=0.17.14"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
thiserror = "2"
tokio = { version = "1", features = ["io-util", "macros", "net", "process", "rt", "signal", "sync", "time"] }
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }

[target.'cfg(unix)'.dependencies]
libc = "0.2"

[target.'cfg(windows)'.dependencies]
windows-sys = { version = "0.61", features = [
    "Win32_Foundation",
    "Win32_Security",
    "Win32_Security_Authorization",
    "Win32_Storage_FileSystem",
    "Win32_System_Diagnostics_ToolHelp",
    "Win32_System_Pipes",
    "Win32_System_Threading",
] }

[features]
# Full kit by default: there is no light mode.
default = ["kit"]
kit = ["m4a", "d2b", "session-restore", "wireguard", "memory"]
# Mailbox (mail4agent 0.4): started automatically by the node binary.
m4a = ["dep:mail4agent"]
# Local browser machine (dig2browser).
d2b = ["dep:dig2browser"]
# claude / codex / grok / kimi session restore.
session-restore = [
    "dep:claude-session-restore",
    "dep:codex-session-restore",
    "dep:grok-session-restore",
    "dep:kimi-session-restore",
]
# Kernel WireGuard for node<->C2. Either peer may dial. Not the UDP+ChaCha mesh
# underlay and not open_wireguard_daemon_stub. The driver may be replaced later;
# this build calls `ip link` / `wg`.
wireguard = ["gate4agent-node-core/wireguard"]
# Memory is exposed to agents only as a tool the agent chooses to call; the
# node never starts a memory daemon. Reserved: the tool registration lands with
# the memory4agent dependency; no code is gated on it yet.
memory = []
fixture = ["dep:gate4agent-testkit", "gate4agent-node-wire/fixture"]
# Cheap dig2browser-station named-pipe path reachability probe + node-local
# exclusive BrowserStationLease. The dig2browser crate dep itself is feature `d2b`.
# Feature off keeps browser_profile_id stub echo.
dig2-station-probe = []

[dev-dependencies]
tokio = { version = "1", features = ["io-util", "macros", "net", "process", "rt-multi-thread", "signal", "sync", "time"] }
# C2 <-> node integration tests (tests/c2_*.rs): C2 and the node are equal peers.
hatchery-c2 = { path = "../hatchery-c2", version = "0.2.0" }
hatchery-c2-client = { path = "../hatchery-c2-client", version = "0.2.0" }
vt100 = "0.16"