1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
[]
= "running-process"
= true
= true
= true
= true
= true
= true
= "Subprocess and PTY runtime for the running-process project"
[]
# Phase 0 of #228: pick up the workspace-wide `disallowed_methods =
# "deny"` so bincode serialization is rejected at compile time.
= true
[[]]
# Wave 4 of #165: PM2-style supervisor CLI absorbed from
# `running-process-client`. Requires the `client` feature for IPC deps.
= "runpm"
= "src/bin/runpm.rs"
= ["client"]
[[]]
# Wave 5 of #165: daemon binary absorbed from `running-process-daemon`.
# Requires the heavy `daemon` feature (tokio, sqlite, etc.).
= "running-process-daemon"
= "src/bin/daemon.rs"
= ["daemon"]
[[]]
# Wave 6 of #165: tiny launcher binary absorbed from the
# `daemon-trampoline` crate. Reads a sidecar JSON file and execs the
# target command. No required-features — uses only serde/serde_json
# (promoted to unconditional deps below) plus libc + winapi which
# the lib already pulls in.
= "daemon-trampoline"
= "src/bin/trampoline.rs"
[[]]
= "running-process-cleanup"
= "src/bin/running-process-cleanup.rs"
= ["client"]
[[]]
= "running-process-broker-v1"
= "src/bin/running-process-broker-v1.rs"
= ["daemon"]
[[]]
# Dev-only evidence harness for #387: deploys the real broker binary plus
# a separate backend process and measures the opt-in handle-passing
# handoff against the reconnect fallback. Never shipped; see
# docs/v1-handoff-optimization.md for the recorded numbers.
= "handoff_rollout_evidence"
= ["client"]
[]
# Final feature scheme per #165:
# * `core` — always-available API (spawn / pty / containment).
# * `client` — adds proto types + IPC client (prost, interprocess, dirs).
# * `telemetry` — tee sink primitives without the full daemon runtime.
# * `daemon` — superset of client; adds the full daemon runtime
# (tokio, rusqlite, tracing, etc.).
# Default ships `client` so `cargo install running-process` installs
# the `runpm` binary out of the box (per Q1 resolution in #165:
# `required-features` are not auto-activated by cargo install).
= ["client"]
= []
= []
= ["dep:prost", "dep:prost-types", "dep:interprocess", "dep:dirs", "dep:anyhow", "dep:clap", "dep:blake3", "dep:sha2", "dep:getrandom"]
# Opt-in async client surface for tokio daemons (#414). Adds async
# variants of `BackendHandle::probe_with_service` and `FrameClient`
# on top of the existing blocking surface. The synchronous probe and
# frame wire is the wire-of-record; the async layer wraps each
# round-trip in `tokio::task::spawn_blocking` so the caller's task
# yields the runtime worker thread without us duplicating the v1
# wire against `AsyncRead`/`AsyncWrite`. That keeps the tokio
# footprint minimal — only `rt` + `time` are required.
= [
"client",
"dep:tokio",
]
= [
"client",
"client-async",
"interprocess/tokio",
"dep:tokio", "dep:tokio-util", "dep:bytes", "dep:futures-util",
"tokio/full",
"dep:tracing", "dep:tracing-subscriber",
"dep:rusqlite", "dep:toml",
]
= [] # used by running-process-py for cwd-tagging
# #415: consumer-consumable conformance test kit
# (`crate::test_support::conformance`). Off by default; consumers opt in
# from their `dev-dependencies`.
= ["client"]
[]
= "0.2"
= "0.9"
= "0.30"
= { = true }
= { = "0.3", = ["errhandlingapi", "fileapi", "handleapi", "ioapiset", "jobapi2", "namedpipeapi", "processthreadsapi", "winnt", "minwindef", "windef", "winuser", "consoleapi", "processenv", "synchapi", "winbase", "wincon", "tlhelp32", "securitybaseapi", "winerror", "sysinfoapi"] }
# Wave 4 of #165: client-feature deps. All optional so the always-on
# `core` API stays a minimal-dep leaf.
= { = "0.14", = true }
= { = "0.14", = true }
= { = "2", = true }
= { = "6", = true }
# Used by the `runpm` PM2-style supervisor CLI (src/bin/runpm.rs).
= { = "1", = true }
= { = "4", = ["derive"], = true }
# Phase 1 of #228 (issue #230): broker user-SID hashing in
# `src/broker/lifecycle/sid.rs`. blake3 is small (no_std-capable,
# no transitive deps beyond `arrayref`/`arrayvec` and `cc`-built SIMD).
= { = "1", = true }
= { = "0.10", = true }
= { = "0.4", = true }
# Wave 5 of #165: daemon-feature deps. All optional.
# tokio: `client-async` (#414) only needs the `rt` (spawn_blocking)
# and `time` (`tokio::time::timeout`) features; the `daemon` feature
# layers `tokio/full` on top below. Cargo unifies feature sets, so
# any consumer enabling both ends up with the daemon footprint
# exactly as before.
= { = "1", = false, = ["rt", "time"], = true }
= { = "0.7", = ["codec"], = true }
= { = "1", = true }
= { = "0.3", = ["sink"], = true }
= { = "0.1", = true }
= { = "0.3", = ["env-filter"], = true }
= { = true, = true }
= { = "0.8", = true }
# Wave 6 of #165: serde / serde_json promoted from daemon-feature
# optional to unconditional so the `daemon-trampoline` binary (which
# does not need the full daemon runtime) can deserialize its sidecar
# JSON without forcing `--features daemon`. They were already pulled
# in transitively under the daemon path; this just makes them always
# present.
= { = "1", = ["derive"] }
= "1"
[]
# Wave 3 of #165: build.rs absorbed from `running-process-proto`.
# Compiles proto/daemon.proto into OUT_DIR.
= "0.14"
= "0.9"
[]
# Platform-default service-definition dir tests (#386) assert against
# the same `dirs` resolution the loader uses, not hardcoded strings.
= "6"
= "1"
= "3"
= { = "../test-watchdog" }
# #150: ConPTY passthrough rewrite uses windows-sys directly for the
# new conpty_passthrough module. Kept alongside (not replacing) the
# existing winapi 0.3 dep because the rest of the crate's Windows
# call sites are on winapi and migrating them is out of scope.
# windows-sys 0.59 exposes CreatePseudoConsole / ResizePseudoConsole /
# ClosePseudoConsole + PROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE directly.
[]
= { = "0.59", = [
"Win32_Foundation",
"Win32_Security",
"Win32_Security_Authorization",
"Win32_Storage_FileSystem",
"Win32_System_Console",
"Win32_System_IO",
"Win32_System_Memory",
"Win32_System_Pipes",
"Win32_System_Registry",
"Win32_System_Threading",
"Win32_System_Diagnostics_Debug",
] }
# Wave 5 of #165: extra dev-deps absorbed from `running-process-daemon`
# for its windows-only and unix-only integration tests.
[]
= { = "0.3", = ["handleapi", "processthreadsapi", "winnt"] }