running-process 4.6.0__tar.gz → 4.6.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (435) hide show
  1. {running_process-4.6.0 → running_process-4.6.1}/Cargo.lock +11 -11
  2. {running_process-4.6.0 → running_process-4.6.1}/Cargo.toml +1 -1
  3. {running_process-4.6.0 → running_process-4.6.1}/PKG-INFO +1 -1
  4. running_process-4.6.1/crates/running-process/src/README.md +16 -0
  5. running_process-4.6.1/crates/running-process/src/environment.rs +302 -0
  6. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/spawn.rs +5 -2
  7. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/Cargo.toml +1 -1
  8. {running_process-4.6.0 → running_process-4.6.1}/pyproject.toml +1 -1
  9. {running_process-4.6.0 → running_process-4.6.1}/src/running_process/__init__.py +1 -1
  10. running_process-4.6.0/crates/running-process/src/environment.rs +0 -142
  11. {running_process-4.6.0 → running_process-4.6.1}/LICENSE +0 -0
  12. {running_process-4.6.0 → running_process-4.6.1}/README.md +0 -0
  13. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/Cargo.toml +0 -0
  14. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/README.md +0 -0
  15. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/build.rs +0 -0
  16. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/examples/handoff_rollout_evidence.rs +0 -0
  17. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/proto/broker_v1/broker_v1_admin.proto +0 -0
  18. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/proto/broker_v1/broker_v1_envelope.proto +0 -0
  19. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/proto/broker_v1/broker_v1_manifest.proto +0 -0
  20. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/proto/broker_v1/broker_v1_service_def.proto +0 -0
  21. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/proto/broker_v1/buf.yaml +0 -0
  22. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/proto/broker_v2/broker_v2_control.proto +0 -0
  23. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/proto/broker_v2/broker_v2_manifest.proto +0 -0
  24. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/proto/broker_v2/broker_v2_service_def.proto +0 -0
  25. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/proto/daemon.proto +0 -0
  26. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/bin/README.md +0 -0
  27. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/bin/daemon.rs +0 -0
  28. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/bin/running-process-broker-v1.rs +0 -0
  29. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/bin/running-process-broker-v2.rs +0 -0
  30. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/bin/running-process-cleanup.rs +0 -0
  31. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/bin/runpm.rs +0 -0
  32. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/bin/trampoline.rs +0 -0
  33. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/boot_autostart/linux.rs +0 -0
  34. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/boot_autostart/macos.rs +0 -0
  35. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/boot_autostart/mod.rs +0 -0
  36. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/boot_autostart/windows.rs +0 -0
  37. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/README.md +0 -0
  38. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/adopt.rs +0 -0
  39. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/backend_handle.rs +0 -0
  40. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/backend_lib/accept_handed_off.rs +0 -0
  41. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/backend_lib/mod.rs +0 -0
  42. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/backend_lib/wire.rs +0 -0
  43. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/backend_lifecycle/identity.rs +0 -0
  44. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/backend_lifecycle/mod.rs +0 -0
  45. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/backend_lifecycle/probe.rs +0 -0
  46. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/backend_lifecycle/probe_async.rs +0 -0
  47. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/backend_lifecycle/verify_pid.rs +0 -0
  48. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/backend_sdk/frame_client.rs +0 -0
  49. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/backend_sdk/frame_client_async.rs +0 -0
  50. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/backend_sdk/identity_file.rs +0 -0
  51. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/backend_sdk/mod.rs +0 -0
  52. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/backend_sdk/mux.rs +0 -0
  53. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/broker_http_port.rs +0 -0
  54. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/broker_http_server.rs +0 -0
  55. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/brokered_backend.rs +0 -0
  56. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/builders.rs +0 -0
  57. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/capabilities.rs +0 -0
  58. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/client.rs +0 -0
  59. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/client_v2.rs +0 -0
  60. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/doctor.rs +0 -0
  61. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/fs_health.rs +0 -0
  62. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/get_http_endpoint_dispatch.rs +0 -0
  63. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/host_identity.rs +0 -0
  64. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/http_endpoint_registry.rs +0 -0
  65. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/lifecycle/crash_dump.rs +0 -0
  66. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/lifecycle/mod.rs +0 -0
  67. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/lifecycle/names.rs +0 -0
  68. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/lifecycle/names_v2.rs +0 -0
  69. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/lifecycle/privilege.rs +0 -0
  70. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/lifecycle/process_tree.rs +0 -0
  71. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/lifecycle/sid.rs +0 -0
  72. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/manifest.rs +0 -0
  73. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/mod.rs +0 -0
  74. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/protocol/frame_ext.rs +0 -0
  75. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/protocol/framing.rs +0 -0
  76. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/protocol/mod.rs +0 -0
  77. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/protocol/registry.rs +0 -0
  78. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/protocol/validate.rs +0 -0
  79. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/protocol_v2/README.md +0 -0
  80. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/protocol_v2/backend_handle.rs +0 -0
  81. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/protocol_v2/client_compat.rs +0 -0
  82. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/protocol_v2/io.rs +0 -0
  83. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/protocol_v2/loader.rs +0 -0
  84. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/protocol_v2/manifest_io.rs +0 -0
  85. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/protocol_v2/mod.rs +0 -0
  86. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/secure_dir.rs +0 -0
  87. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/admin.rs +0 -0
  88. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/backend_endpoint_allocator.rs +0 -0
  89. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/backend_launcher.rs +0 -0
  90. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/backend_registry.rs +0 -0
  91. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/broadcast.rs +0 -0
  92. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/connection.rs +0 -0
  93. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/control_socket.rs +0 -0
  94. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/fd_pressure.rs +0 -0
  95. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/handoff/ack.rs +0 -0
  96. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/handoff/fallback.rs +0 -0
  97. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/handoff/handoff_token.rs +0 -0
  98. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/handoff/latency.rs +0 -0
  99. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/handoff/mod.rs +0 -0
  100. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/handoff/orchestrate.rs +0 -0
  101. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/handoff/orchestrate_unix.rs +0 -0
  102. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/handoff/pending.rs +0 -0
  103. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/handoff/unix.rs +0 -0
  104. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/handoff/windows.rs +0 -0
  105. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/handoff/wire.rs +0 -0
  106. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/handoff_serve.rs +0 -0
  107. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/hello_handler.rs +0 -0
  108. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/hello_router.rs +0 -0
  109. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/idle_coord.rs +0 -0
  110. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/instance.rs +0 -0
  111. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/metrics.rs +0 -0
  112. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/mod.rs +0 -0
  113. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/perf_guard.rs +0 -0
  114. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/recovery.rs +0 -0
  115. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/serve.rs +0 -0
  116. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/service_def_loader.rs +0 -0
  117. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/spawn_coordinator.rs +0 -0
  118. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/spawn_wait.rs +0 -0
  119. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/trace_context.rs +0 -0
  120. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/broker/server/version_allow_list.rs +0 -0
  121. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/cleanup/instances.rs +0 -0
  122. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/cleanup/list.rs +0 -0
  123. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/cleanup/mod.rs +0 -0
  124. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/cleanup/prune.rs +0 -0
  125. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/cleanup/uninstall.rs +0 -0
  126. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/cleanup/verify_artifacts.rs +0 -0
  127. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/cleanup/verify_basic.rs +0 -0
  128. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/client/client.rs +0 -0
  129. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/client/deadline_io.rs +0 -0
  130. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/client/mod.rs +0 -0
  131. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/client/observer.rs +0 -0
  132. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/client/paths.rs +0 -0
  133. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/client/pipe_session.rs +0 -0
  134. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/client/pty_session.rs +0 -0
  135. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/client/telemetry.rs +0 -0
  136. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/console_detect.rs +0 -0
  137. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/containment.rs +0 -0
  138. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/attach_stream.rs +0 -0
  139. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/config.rs +0 -0
  140. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/emergency_reserve.rs +0 -0
  141. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/handlers/core.rs +0 -0
  142. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/handlers/kill.rs +0 -0
  143. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/handlers/maintenance.rs +0 -0
  144. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/handlers/mod.rs +0 -0
  145. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/handlers/observer.rs +0 -0
  146. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/handlers/pipe_sessions_handlers.rs +0 -0
  147. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/handlers/process_tree.rs +0 -0
  148. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/handlers/pty_sessions_handlers.rs +0 -0
  149. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/handlers/registry_handlers.rs +0 -0
  150. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/handlers/services.rs +0 -0
  151. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/handlers/spawn.rs +0 -0
  152. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/handlers/telemetry.rs +0 -0
  153. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/handlers/util.rs +0 -0
  154. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/handlers_tests.rs +0 -0
  155. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/idle.rs +0 -0
  156. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/mod.rs +0 -0
  157. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/observer_registry.rs +0 -0
  158. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/pipe_attach_stream.rs +0 -0
  159. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/pipe_sessions.rs +0 -0
  160. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/platform/mod.rs +0 -0
  161. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/platform/unix.rs +0 -0
  162. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/platform/windows.rs +0 -0
  163. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/pty_sessions.rs +0 -0
  164. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/reaper.rs +0 -0
  165. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/registry.rs +0 -0
  166. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/runtime_gc.rs +0 -0
  167. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/server.rs +0 -0
  168. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/services.rs +0 -0
  169. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/services_snapshot.rs +0 -0
  170. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/shadow.rs +0 -0
  171. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/daemon/telemetry.rs +0 -0
  172. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/helpers.rs +0 -0
  173. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/lib.rs +0 -0
  174. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/maintenance/mod.rs +0 -0
  175. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/maintenance/release_handles.rs +0 -0
  176. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/observer/cmdline.rs +0 -0
  177. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/observer/descendants_linux.rs +0 -0
  178. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/observer/descendants_macos.rs +0 -0
  179. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/observer/file_handles.rs +0 -0
  180. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/observer/mod.rs +0 -0
  181. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/observer/tests.rs +0 -0
  182. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/originator.rs +0 -0
  183. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/process_tree.rs +0 -0
  184. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/pty/backend.rs +0 -0
  185. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/pty/conpty_passthrough/child.rs +0 -0
  186. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/pty/conpty_passthrough/conpty_acquire.rs +0 -0
  187. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/pty/conpty_passthrough/conpty_api.rs +0 -0
  188. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/pty/conpty_passthrough/conpty_sidecar_hashes.rs +0 -0
  189. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/pty/conpty_passthrough/mod.rs +0 -0
  190. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/pty/conpty_passthrough/pipes.rs +0 -0
  191. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/pty/conpty_passthrough/proc_thread_attr.rs +0 -0
  192. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/pty/conpty_passthrough/pseudoconsole.rs +0 -0
  193. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/pty/conpty_passthrough/win_version.rs +0 -0
  194. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/pty/mod.rs +0 -0
  195. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/pty/native_pty_process.rs +0 -0
  196. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/pty/pty_posix.rs +0 -0
  197. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/pty/pty_windows.rs +0 -0
  198. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/pty/terminal_input.rs +0 -0
  199. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/public_symbols.rs +0 -0
  200. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/runpm_config.rs +0 -0
  201. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/rust_debug.rs +0 -0
  202. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/spawn_imp_unix.rs +0 -0
  203. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/spawn_imp_windows.rs +0 -0
  204. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/systemd_killmode.rs +0 -0
  205. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/terminal_graphics.rs +0 -0
  206. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/test_support/conformance.rs +0 -0
  207. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/test_support/mod.rs +0 -0
  208. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/tests.rs +0 -0
  209. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/types.rs +0 -0
  210. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/unix.rs +0 -0
  211. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/src/windows.rs +0 -0
  212. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/README.md +0 -0
  213. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/admin.rs +0 -0
  214. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/backend_endpoint_allocator.rs +0 -0
  215. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/backend_handle_boot_id.rs +0 -0
  216. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/backend_handle_common.rs +0 -0
  217. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/backend_handle_dead.rs +0 -0
  218. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/backend_handle_probe.rs +0 -0
  219. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/backend_handle_recycled.rs +0 -0
  220. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/backend_registry.rs +0 -0
  221. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/backend_sdk.rs +0 -0
  222. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/backend_sdk_async.rs +0 -0
  223. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/broadcast_release_handles.rs +0 -0
  224. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/builders.rs +0 -0
  225. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/client.rs +0 -0
  226. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/conformance_kit.rs +0 -0
  227. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/connection.rs +0 -0
  228. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/contrib_templates.rs +0 -0
  229. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/docs_escape_hatch.rs +0 -0
  230. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/docs_index.rs +0 -0
  231. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/doctor.rs +0 -0
  232. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/fd_pressure.rs +0 -0
  233. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/framing.rs +0 -0
  234. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/golden_bytes.rs +0 -0
  235. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/handoff_ack_deadline.rs +0 -0
  236. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/handoff_adopted_backend.rs +0 -0
  237. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/handoff_adoption.rs +0 -0
  238. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/handoff_backend_lib.rs +0 -0
  239. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/handoff_capability.rs +0 -0
  240. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/handoff_cross_os_acceptance.rs +0 -0
  241. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/handoff_end_to_end_acceptance.rs +0 -0
  242. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/handoff_fallback_perm_denied.rs +0 -0
  243. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/handoff_latency.rs +0 -0
  244. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/handoff_latency_e2e.rs +0 -0
  245. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/handoff_orchestrate.rs +0 -0
  246. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/handoff_serve_e2e.rs +0 -0
  247. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/handoff_serve_latency.rs +0 -0
  248. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/handoff_token_mismatch.rs +0 -0
  249. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/handoff_transport.rs +0 -0
  250. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/handoff_under_load.rs +0 -0
  251. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/handoff_unix_e2e_orchestrate.rs +0 -0
  252. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/handoff_unix_orchestrate.rs +0 -0
  253. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/handoff_windows_duplicate_handle.rs +0 -0
  254. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/handoff_windows_orchestrate.rs +0 -0
  255. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/handoff_wire.rs +0 -0
  256. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/hello_concurrent.rs +0 -0
  257. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/hello_handler.rs +0 -0
  258. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/hello_rate_limit.rs +0 -0
  259. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/hello_router.rs +0 -0
  260. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/hello_service_unknown.rs +0 -0
  261. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/hello_skip.rs +0 -0
  262. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/hello_version_blocked.rs +0 -0
  263. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/idle_coord.rs +0 -0
  264. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/instance.rs +0 -0
  265. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/instance_isolation.rs +0 -0
  266. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/into_backend_io.rs +0 -0
  267. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/lifecycle_event_size.rs +0 -0
  268. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/main.rs +0 -0
  269. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/manifest_atomic.rs +0 -0
  270. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/manifest_boot_id.rs +0 -0
  271. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/manifest_corruption.rs +0 -0
  272. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/manifest_roundtrip.rs +0 -0
  273. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/metrics_names_frozen.rs +0 -0
  274. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/names.rs +0 -0
  275. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/peer_creds_drop.rs +0 -0
  276. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/perf_guard.rs +0 -0
  277. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/process_tree_lifecycle.rs +0 -0
  278. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/proto_field_numbers.rs +0 -0
  279. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/proto_roundtrip.rs +0 -0
  280. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/recovery_one_retry.rs +0 -0
  281. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/serve.rs +0 -0
  282. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/service_def_loader.rs +0 -0
  283. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/servicedef_cli.rs +0 -0
  284. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/socket_common.rs +0 -0
  285. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/spawn_coordinator.rs +0 -0
  286. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/spawn_wait.rs +0 -0
  287. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/toy_three_party.rs +0 -0
  288. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/trace_propagation.rs +0 -0
  289. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/verify_pid/linux.rs +0 -0
  290. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/verify_pid/macos.rs +0 -0
  291. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/verify_pid/mod.rs +0 -0
  292. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker/verify_pid/windows.rs +0 -0
  293. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/broker_v2_scaffold_accepts_connection.rs +0 -0
  294. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/brokered_backend_ui.rs +0 -0
  295. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/cleanup/cleanup_list.rs +0 -0
  296. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/cleanup/cleanup_prune_confirm.rs +0 -0
  297. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/cleanup/cleanup_prune_dryrun.rs +0 -0
  298. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/cleanup/cleanup_uninstall.rs +0 -0
  299. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/cleanup/cleanup_verify_artifacts.rs +0 -0
  300. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/cleanup/common.rs +0 -0
  301. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/cleanup/main.rs +0 -0
  302. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/common/mitm_stdin.rs +0 -0
  303. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/common/mod.rs +0 -0
  304. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/containment_test.rs +0 -0
  305. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/daemon_autostart_test.rs +0 -0
  306. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/daemon_backlog_accumulation_test.rs +0 -0
  307. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/daemon_cross_process_pty_attach_test.rs +0 -0
  308. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/daemon_fast_ctrl_c_handoff_test.rs +0 -0
  309. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/daemon_integration/compiler_wrap_seam_test.rs +0 -0
  310. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/daemon_integration/env_replace_test.rs +0 -0
  311. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/daemon_integration/main.rs +0 -0
  312. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/daemon_integration/more_tests.rs +0 -0
  313. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/daemon_integration/stdout_seam_test.rs +0 -0
  314. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/daemon_non_tty_attach_test.rs +0 -0
  315. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/daemon_pipe_session_attach_test.rs +0 -0
  316. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/daemon_pty_session_attach_test.rs +0 -0
  317. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/daemon_resize_rpc_test.rs +0 -0
  318. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/daemon_runpm_save_resurrect.rs +0 -0
  319. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/daemon_runpm_service_stubs.rs +0 -0
  320. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/daemon_sessions_bulk_ops_test.rs +0 -0
  321. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/daemon_sessions_log_test.rs +0 -0
  322. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/daemon_tee_ring_test.rs +0 -0
  323. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/daemon_termination_outcome_test.rs +0 -0
  324. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/daemon_tree_kill_test.rs +0 -0
  325. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/daemon_tui_repaint_test.rs +0 -0
  326. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/fs_adversarial_test.rs +0 -0
  327. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/interactive_pty_session_test.rs +0 -0
  328. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/maintenance/main.rs +0 -0
  329. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/maintenance/release_handles_unix.rs +0 -0
  330. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/maintenance/release_handles_windows.rs +0 -0
  331. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/originator_test.rs +0 -0
  332. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/process_core_test.rs +0 -0
  333. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/pty_conhost_job_test.rs +0 -0
  334. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/pty_master_public_api_test.rs +0 -0
  335. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/pty_mitm_paste_test.rs +0 -0
  336. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/pty_mitm_stdin_test.rs +0 -0
  337. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/runpm_boot_autostart_fixtures.rs +0 -0
  338. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/runpm_toml_config.rs +0 -0
  339. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/security/cross_user_release_handles.rs +0 -0
  340. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/security/cve_dbus_2014_3639.rs +0 -0
  341. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/security/cve_dbus_2023_34969.rs +0 -0
  342. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/security/cve_sccache_2023_1521.rs +0 -0
  343. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/security/deferred_runtime_surfaces.rs +0 -0
  344. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/security/dependency_surface.rs +0 -0
  345. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/security/fuzz_campaign_signoff.rs +0 -0
  346. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/security/main.rs +0 -0
  347. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/security/manifest_tamper_detection.rs +0 -0
  348. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/security/no_network_dependencies.rs +0 -0
  349. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/security/pipe_name_validation.rs +0 -0
  350. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/security/pipe_squatting.rs +0 -0
  351. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/security/security_audit_workflow.rs +0 -0
  352. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/security/security_fuzz_workflow.rs +0 -0
  353. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/security/service_name_validation.rs +0 -0
  354. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/security/unsafe_inventory.rs +0 -0
  355. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/security/wanted_version_shell_injection.rs +0 -0
  356. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/security/wanted_version_traversal.rs +0 -0
  357. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/spawn_test.rs +0 -0
  358. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/terminal_graphics_capabilities_test.rs +0 -0
  359. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/ui/brokered_backend_state_in_bind.rs +0 -0
  360. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process/tests/ui/brokered_backend_state_in_bind.stderr +0 -0
  361. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/containment.rs +0 -0
  362. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/daemon_client.rs +0 -0
  363. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/debug_traces.rs +0 -0
  364. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/helpers.rs +0 -0
  365. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/idle_detector.rs +0 -0
  366. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/lib.rs +0 -0
  367. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/metrics.rs +0 -0
  368. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/originator.rs +0 -0
  369. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/pid_tracking.rs +0 -0
  370. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/priority.rs +0 -0
  371. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/process.rs +0 -0
  372. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/process_tree.rs +0 -0
  373. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/pty_buffer.rs +0 -0
  374. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/pty_process.rs +0 -0
  375. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/public_symbols.rs +0 -0
  376. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/py_native_process.rs +0 -0
  377. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/registry.rs +0 -0
  378. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/signal_bool.rs +0 -0
  379. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/terminal_input.rs +0 -0
  380. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/tests/control_churn.rs +0 -0
  381. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/tests/expect_match.rs +0 -0
  382. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/tests/idle_detector.rs +0 -0
  383. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/tests/mod.rs +0 -0
  384. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/tests/parse_command.rs +0 -0
  385. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/tests/process_tree.rs +0 -0
  386. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/tests/pty_buffer.rs +0 -0
  387. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/tests/pty_process.rs +0 -0
  388. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/tests/registry.rs +0 -0
  389. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/tests/signal_bool.rs +0 -0
  390. {running_process-4.6.0 → running_process-4.6.1}/crates/running-process-py/src/tests/terminal_input.rs +0 -0
  391. {running_process-4.6.0 → running_process-4.6.1}/crates/test-watchdog/Cargo.toml +0 -0
  392. {running_process-4.6.0 → running_process-4.6.1}/crates/test-watchdog/src/lib.rs +0 -0
  393. {running_process-4.6.0 → running_process-4.6.1}/crates/test-watchdog/tests/hang_dump.rs +0 -0
  394. {running_process-4.6.0 → running_process-4.6.1}/src/running_process/assets/example.txt +0 -0
  395. {running_process-4.6.0 → running_process-4.6.1}/src/running_process/cli.py +0 -0
  396. {running_process-4.6.0 → running_process-4.6.1}/src/running_process/command_render.py +0 -0
  397. {running_process-4.6.0 → running_process-4.6.1}/src/running_process/compat.py +0 -0
  398. {running_process-4.6.0 → running_process-4.6.1}/src/running_process/console_encoding.py +0 -0
  399. {running_process-4.6.0 → running_process-4.6.1}/src/running_process/daemon.py +0 -0
  400. {running_process-4.6.0 → running_process-4.6.1}/src/running_process/dashboard.py +0 -0
  401. {running_process-4.6.0 → running_process-4.6.1}/src/running_process/exit_status.py +0 -0
  402. {running_process-4.6.0 → running_process-4.6.1}/src/running_process/expect.py +0 -0
  403. {running_process-4.6.0 → running_process-4.6.1}/src/running_process/interrupt_handler.py +0 -0
  404. {running_process-4.6.0 → running_process-4.6.1}/src/running_process/launch.py +0 -0
  405. {running_process-4.6.0 → running_process-4.6.1}/src/running_process/line_iterator.py +0 -0
  406. {running_process-4.6.0 → running_process-4.6.1}/src/running_process/output_formatter.py +0 -0
  407. {running_process-4.6.0 → running_process-4.6.1}/src/running_process/priority.py +0 -0
  408. {running_process-4.6.0 → running_process-4.6.1}/src/running_process/process_utils.py +0 -0
  409. {running_process-4.6.0 → running_process-4.6.1}/src/running_process/processor_cli.py +0 -0
  410. {running_process-4.6.0 → running_process-4.6.1}/src/running_process/pty/__init__.py +0 -0
  411. {running_process-4.6.0 → running_process-4.6.1}/src/running_process/pty/_command.py +0 -0
  412. {running_process-4.6.0 → running_process-4.6.1}/src/running_process/pty/_console_io.py +0 -0
  413. {running_process-4.6.0 → running_process-4.6.1}/src/running_process/pty/_errors.py +0 -0
  414. {running_process-4.6.0 → running_process-4.6.1}/src/running_process/pty/_idle_helpers.py +0 -0
  415. {running_process-4.6.0 → running_process-4.6.1}/src/running_process/pty/_idle_state.py +0 -0
  416. {running_process-4.6.0 → running_process-4.6.1}/src/running_process/pty/_interactive.py +0 -0
  417. {running_process-4.6.0 → running_process-4.6.1}/src/running_process/pty/_process_helpers.py +0 -0
  418. {running_process-4.6.0 → running_process-4.6.1}/src/running_process/pty/_pseudo_terminal.py +0 -0
  419. {running_process-4.6.0 → running_process-4.6.1}/src/running_process/pty/_pty_expect.py +0 -0
  420. {running_process-4.6.0 → running_process-4.6.1}/src/running_process/pty/_pty_idle_waiter.py +0 -0
  421. {running_process-4.6.0 → running_process-4.6.1}/src/running_process/pty/_pty_input_relay.py +0 -0
  422. {running_process-4.6.0 → running_process-4.6.1}/src/running_process/pty/_pty_reader.py +0 -0
  423. {running_process-4.6.0 → running_process-4.6.1}/src/running_process/pty/_pty_wait_for.py +0 -0
  424. {running_process-4.6.0 → running_process-4.6.1}/src/running_process/pty/_terminal_strip.py +0 -0
  425. {running_process-4.6.0 → running_process-4.6.1}/src/running_process/pty/_types.py +0 -0
  426. {running_process-4.6.0 → running_process-4.6.1}/src/running_process/pty/_wait_input.py +0 -0
  427. {running_process-4.6.0 → running_process-4.6.1}/src/running_process/running_process/__init__.py +0 -0
  428. {running_process-4.6.0 → running_process-4.6.1}/src/running_process/running_process/_classmethod_api.py +0 -0
  429. {running_process-4.6.0 → running_process-4.6.1}/src/running_process/running_process/_core.py +0 -0
  430. {running_process-4.6.0 → running_process-4.6.1}/src/running_process/running_process/_helpers.py +0 -0
  431. {running_process-4.6.0 → running_process-4.6.1}/src/running_process/running_process/_iter.py +0 -0
  432. {running_process-4.6.0 → running_process-4.6.1}/src/running_process/running_process/_subprocess.py +0 -0
  433. {running_process-4.6.0 → running_process-4.6.1}/src/running_process/running_process/_types.py +0 -0
  434. {running_process-4.6.0 → running_process-4.6.1}/src/running_process/running_process/_wait_methods.py +0 -0
  435. {running_process-4.6.0 → running_process-4.6.1}/src/running_process/running_process_manager.py +0 -0
@@ -75,9 +75,9 @@ dependencies = [
75
75
 
76
76
  [[package]]
77
77
  name = "anyhow"
78
- version = "1.0.102"
78
+ version = "1.0.104"
79
79
  source = "registry+https://github.com/rust-lang/crates.io-index"
80
- checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c"
80
+ checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470"
81
81
 
82
82
  [[package]]
83
83
  name = "arrayref"
@@ -256,9 +256,9 @@ dependencies = [
256
256
 
257
257
  [[package]]
258
258
  name = "crossbeam-epoch"
259
- version = "0.9.18"
259
+ version = "0.9.20"
260
260
  source = "registry+https://github.com/rust-lang/crates.io-index"
261
- checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
261
+ checksum = "2d6914041f254d6e9176c01941b21115dcfb7089e55135a35411081bd106ef3f"
262
262
  dependencies = [
263
263
  "crossbeam-utils",
264
264
  ]
@@ -1351,7 +1351,7 @@ dependencies = [
1351
1351
 
1352
1352
  [[package]]
1353
1353
  name = "running-process"
1354
- version = "4.6.0"
1354
+ version = "4.6.1"
1355
1355
  dependencies = [
1356
1356
  "anyhow",
1357
1357
  "blake3",
@@ -1390,7 +1390,7 @@ dependencies = [
1390
1390
 
1391
1391
  [[package]]
1392
1392
  name = "running-process-observer"
1393
- version = "4.6.0"
1393
+ version = "4.6.1"
1394
1394
  dependencies = [
1395
1395
  "blake3",
1396
1396
  "dirs",
@@ -1400,21 +1400,21 @@ dependencies = [
1400
1400
 
1401
1401
  [[package]]
1402
1402
  name = "running-process-observer-interposer-linux"
1403
- version = "4.6.0"
1403
+ version = "4.6.1"
1404
1404
  dependencies = [
1405
1405
  "libc",
1406
1406
  ]
1407
1407
 
1408
1408
  [[package]]
1409
1409
  name = "running-process-observer-interposer-macos"
1410
- version = "4.6.0"
1410
+ version = "4.6.1"
1411
1411
  dependencies = [
1412
1412
  "libc",
1413
1413
  ]
1414
1414
 
1415
1415
  [[package]]
1416
1416
  name = "running-process-observer-interposer-windows"
1417
- version = "4.6.0"
1417
+ version = "4.6.1"
1418
1418
  dependencies = [
1419
1419
  "retour",
1420
1420
  "windows-sys 0.59.0",
@@ -1422,7 +1422,7 @@ dependencies = [
1422
1422
 
1423
1423
  [[package]]
1424
1424
  name = "running-process-py"
1425
- version = "4.6.0"
1425
+ version = "4.6.1"
1426
1426
  dependencies = [
1427
1427
  "interprocess",
1428
1428
  "libc",
@@ -1436,7 +1436,7 @@ dependencies = [
1436
1436
 
1437
1437
  [[package]]
1438
1438
  name = "running-process-win-gnu-bridge"
1439
- version = "4.6.0"
1439
+ version = "4.6.1"
1440
1440
  dependencies = [
1441
1441
  "windows-sys 0.59.0",
1442
1442
  ]
@@ -3,7 +3,7 @@ resolver = "2"
3
3
  members = ["crates/running-process", "crates/running-process-py", "crates/test-watchdog"]
4
4
 
5
5
  [workspace.package]
6
- version = "4.6.0"
6
+ version = "4.6.1"
7
7
  edition = "2021"
8
8
  rust-version = "1.85"
9
9
  license = "BSD-3-Clause"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: running_process
3
- Version: 4.6.0
3
+ Version: 4.6.1
4
4
  License-File: LICENSE
5
5
  Summary: A Rust-backed subprocess wrapper with split stdout/stderr streaming
6
6
  Home-Page: https://github.com/zackees/running-process
@@ -0,0 +1,16 @@
1
+ # running-process — crate source
2
+
3
+ Top-level modules of the published `running-process` crate. Feature gating is
4
+ described in the repo-root `CLAUDE.md` ("Rust workspace" section).
5
+
6
+ - `lib.rs` / `public_symbols.rs` — crate surface and re-exports
7
+ - `environment.rs` — user baseline environment (Windows `CreateEnvironmentBlock`, Unix snapshot)
8
+ - `spawn.rs`, `spawn_imp_unix.rs`, `spawn_imp_windows.rs` — process spawn implementations
9
+ - `process_tree.rs` — process-tree enumeration and tree kill
10
+ - `containment.rs` — Job Objects / process-group containment
11
+ - `console_detect.rs`, `terminal_graphics.rs`, `pty/` — console + PTY support
12
+ - `client/`, `daemon/`, `broker/`, `observer/` — IPC client, daemon runtime, broker tiers, observer sidecar
13
+ - `bin/` — `runpm`, `daemon`, `trampoline`, broker + cleanup binaries
14
+ - `boot_autostart/`, `maintenance/`, `cleanup/` — lifecycle helpers
15
+ - `originator.rs`, `runpm_config.rs`, `systemd_killmode.rs`, `unix.rs`, `windows.rs`, `helpers.rs`, `types.rs` — platform + config plumbing
16
+ - `test_support/`, `tests.rs`, `rust_debug.rs` — test-only support
@@ -0,0 +1,302 @@
1
+ //! Process environment baselines.
2
+ //!
3
+ //! Windows exposes the logged-in user's machine + user environment through
4
+ //! `CreateEnvironmentBlock`. Unix has no OS API that reconstructs a login
5
+ //! environment, so the baseline is rebuilt from the user's identity:
6
+ //! `getpwuid_r` supplies `USER`/`LOGNAME`/`HOME`/`SHELL`, `PATH` gets the
7
+ //! platform's login default, and locale/timezone/tmpdir variables are
8
+ //! carried over from the current process when present.
9
+
10
+ #[cfg(windows)]
11
+ use std::ffi::c_void;
12
+ use std::ffi::OsString;
13
+ use std::io;
14
+
15
+ /// Return the logged-in user's baseline environment.
16
+ ///
17
+ /// On Windows this is freshly constructed from machine and user settings via
18
+ /// `CreateEnvironmentBlock` and therefore excludes variables that exist only
19
+ /// in the current process. On Unix it is reconstructed from the user's
20
+ /// identity (`getpwuid_r`): `USER`, `LOGNAME`, `HOME`, `SHELL`, a platform
21
+ /// default `PATH`, plus locale (`LANG`, `LC_*`), `TZ`, and `TMPDIR` carried
22
+ /// over from the current process when set. Non-Windows targets without a
23
+ /// resolvable passwd entry fall back to the current process environment.
24
+ pub fn user_baseline_environment() -> io::Result<Vec<(OsString, OsString)>> {
25
+ #[cfg(windows)]
26
+ {
27
+ let block = user_baseline_environment_block()?;
28
+ Ok(parse_windows_environment_block(&block))
29
+ }
30
+ #[cfg(unix)]
31
+ {
32
+ Ok(unix_login_baseline_environment().unwrap_or_else(|| std::env::vars_os().collect()))
33
+ }
34
+ #[cfg(not(any(windows, unix)))]
35
+ {
36
+ Ok(std::env::vars_os().collect())
37
+ }
38
+ }
39
+
40
+ /// The `PATH` a fresh login would start from. Matches `/etc/paths` order on
41
+ /// macOS and the customary `login(1)` default elsewhere.
42
+ #[cfg(unix)]
43
+ const UNIX_LOGIN_DEFAULT_PATH: &str = if cfg!(target_os = "macos") {
44
+ "/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
45
+ } else {
46
+ "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
47
+ };
48
+
49
+ /// Build a clean login environment from the user's identity instead of the
50
+ /// current process environment. Returns `None` when the passwd entry cannot
51
+ /// be resolved (e.g. UID absent from NSS) so the caller can fall back.
52
+ #[cfg(unix)]
53
+ fn unix_login_baseline_environment() -> Option<Vec<(OsString, OsString)>> {
54
+ use std::ffi::CStr;
55
+ use std::os::unix::ffi::OsStringExt;
56
+
57
+ let mut passwd: libc::passwd = unsafe { std::mem::zeroed() };
58
+ let mut result: *mut libc::passwd = std::ptr::null_mut();
59
+ // sysconf(_SC_GETPW_R_SIZE_MAX) is allowed to return -1 ("no limit");
60
+ // 1 KiB covers real-world passwd entries and getpwuid_r reports ERANGE
61
+ // if it does not, in which case we grow and retry.
62
+ let mut buf = vec![0u8; 1024];
63
+ loop {
64
+ let rc = unsafe {
65
+ libc::getpwuid_r(
66
+ libc::getuid(),
67
+ &mut passwd,
68
+ buf.as_mut_ptr().cast(),
69
+ buf.len(),
70
+ &mut result,
71
+ )
72
+ };
73
+ if rc == libc::ERANGE && buf.len() < 1 << 20 {
74
+ buf.resize(buf.len() * 2, 0);
75
+ continue;
76
+ }
77
+ if rc != 0 || result.is_null() {
78
+ return None;
79
+ }
80
+ break;
81
+ }
82
+
83
+ let field = |ptr: *const libc::c_char| -> Option<OsString> {
84
+ if ptr.is_null() {
85
+ return None;
86
+ }
87
+ let bytes = unsafe { CStr::from_ptr(ptr) }.to_bytes();
88
+ (!bytes.is_empty()).then(|| OsString::from_vec(bytes.to_vec()))
89
+ };
90
+ let name = field(passwd.pw_name)?;
91
+ let home = field(passwd.pw_dir)?;
92
+
93
+ let mut env: Vec<(OsString, OsString)> = vec![
94
+ (OsString::from("USER"), name.clone()),
95
+ (OsString::from("LOGNAME"), name),
96
+ (OsString::from("HOME"), home),
97
+ (
98
+ OsString::from("PATH"),
99
+ OsString::from(UNIX_LOGIN_DEFAULT_PATH),
100
+ ),
101
+ ];
102
+ if let Some(shell) = field(passwd.pw_shell) {
103
+ env.push((OsString::from("SHELL"), shell));
104
+ }
105
+ // Locale, timezone, and per-user tmpdir describe the session rather
106
+ // than the parent process; carry them over when present so children
107
+ // keep rendering text and resolving paths the way the user expects.
108
+ for (key, value) in std::env::vars_os() {
109
+ let carry = key == "LANG" || key == "TZ" || key == "TMPDIR" || {
110
+ key.to_str().is_some_and(|k| k.starts_with("LC_"))
111
+ };
112
+ if carry {
113
+ env.push((key, value));
114
+ }
115
+ }
116
+ Some(env)
117
+ }
118
+
119
+ /// Return a CreateProcessW-compatible Unicode user environment block.
120
+ ///
121
+ /// The returned buffer is sorted and double-NUL terminated by Windows. It is
122
+ /// useful to callers that own a manual `CreateProcessW` path.
123
+ #[cfg(windows)]
124
+ pub fn user_baseline_environment_block() -> io::Result<Vec<u16>> {
125
+ use windows_sys::Win32::Foundation::CloseHandle;
126
+ use windows_sys::Win32::Security::{TOKEN_DUPLICATE, TOKEN_IMPERSONATE, TOKEN_QUERY};
127
+ use windows_sys::Win32::System::Environment::{
128
+ CreateEnvironmentBlock, DestroyEnvironmentBlock,
129
+ };
130
+ use windows_sys::Win32::System::Threading::{GetCurrentProcess, OpenProcessToken};
131
+
132
+ // CreateEnvironmentBlock documents that the token needs TOKEN_QUERY,
133
+ // TOKEN_DUPLICATE, and TOKEN_IMPERSONATE. With TOKEN_QUERY alone the
134
+ // call still *succeeds* but silently omits the per-user dynamic
135
+ // variables (USERNAME, USERDOMAIN) — downstream consumers that key
136
+ // behavior on USERNAME (e.g. soldr's daemon pipe name) then diverge
137
+ // from processes holding the real login environment.
138
+ let mut token = std::ptr::null_mut();
139
+ let opened = unsafe {
140
+ OpenProcessToken(
141
+ GetCurrentProcess(),
142
+ TOKEN_QUERY | TOKEN_DUPLICATE | TOKEN_IMPERSONATE,
143
+ &mut token,
144
+ )
145
+ };
146
+ if opened == 0 {
147
+ return Err(io::Error::last_os_error());
148
+ }
149
+
150
+ let mut raw_block: *mut c_void = std::ptr::null_mut();
151
+ let created = unsafe { CreateEnvironmentBlock(&mut raw_block, token, 0) };
152
+ let create_error = if created == 0 {
153
+ Some(io::Error::last_os_error())
154
+ } else {
155
+ None
156
+ };
157
+ unsafe {
158
+ CloseHandle(token);
159
+ }
160
+ if let Some(error) = create_error {
161
+ return Err(error);
162
+ }
163
+
164
+ let copied = unsafe { copy_windows_environment_block(raw_block.cast::<u16>()) };
165
+ unsafe {
166
+ DestroyEnvironmentBlock(raw_block);
167
+ }
168
+ Ok(copied)
169
+ }
170
+
171
+ #[cfg(windows)]
172
+ unsafe fn copy_windows_environment_block(cursor: *const u16) -> Vec<u16> {
173
+ let mut len = 0usize;
174
+ loop {
175
+ if *cursor.add(len) == 0 && *cursor.add(len + 1) == 0 {
176
+ len += 2;
177
+ break;
178
+ }
179
+ len += 1;
180
+ }
181
+ std::slice::from_raw_parts(cursor, len).to_vec()
182
+ }
183
+
184
+ #[cfg(windows)]
185
+ fn parse_windows_environment_block(block: &[u16]) -> Vec<(OsString, OsString)> {
186
+ use std::os::windows::ffi::OsStringExt;
187
+
188
+ let mut env = Vec::new();
189
+ let mut offset = 0usize;
190
+ while offset < block.len() && block[offset] != 0 {
191
+ let Some(relative_end) = block[offset..].iter().position(|value| *value == 0) else {
192
+ break;
193
+ };
194
+ let end = offset + relative_end;
195
+ let entry = &block[offset..end];
196
+ // Drive-current-directory pseudo variables have the shape
197
+ // `=C:=C:\path`; skip index zero so their second '=' is the
198
+ // key/value separator.
199
+ if let Some(separator) = entry
200
+ .iter()
201
+ .enumerate()
202
+ .skip(1)
203
+ .find_map(|(index, value)| (*value == b'=' as u16).then_some(index))
204
+ {
205
+ let key = OsString::from_wide(&entry[..separator]);
206
+ let value = OsString::from_wide(&entry[separator + 1..]);
207
+ env.push((key, value));
208
+ }
209
+ offset = end + 1;
210
+ }
211
+ env
212
+ }
213
+
214
+ #[cfg(all(test, unix))]
215
+ mod unix_tests {
216
+ use super::*;
217
+
218
+ #[test]
219
+ fn login_baseline_contains_identity_and_default_path() {
220
+ let env = user_baseline_environment().unwrap();
221
+ let get = |name: &str| {
222
+ env.iter()
223
+ .find(|(key, _)| key == name)
224
+ .map(|(_, value)| value.clone())
225
+ };
226
+ let user = get("USER").expect("baseline must contain USER");
227
+ assert!(!user.is_empty());
228
+ assert_eq!(get("LOGNAME").as_ref(), Some(&user));
229
+ let home = get("HOME").expect("baseline must contain HOME");
230
+ assert!(!home.is_empty());
231
+ let path = get("PATH").expect("baseline must contain PATH");
232
+ assert!(!path.is_empty());
233
+ }
234
+
235
+ #[test]
236
+ fn login_baseline_does_not_leak_arbitrary_process_vars() {
237
+ // A variable that only exists in this process must not survive
238
+ // into the login baseline (that's what Inherit is for).
239
+ std::env::set_var("RUNNING_PROCESS_BASELINE_CANARY", "1");
240
+ let env = unix_login_baseline_environment().expect("test user must have a passwd entry");
241
+ assert!(
242
+ !env.iter()
243
+ .any(|(key, _)| key == "RUNNING_PROCESS_BASELINE_CANARY"),
244
+ "process-local variables must not leak into the login baseline"
245
+ );
246
+ std::env::remove_var("RUNNING_PROCESS_BASELINE_CANARY");
247
+ }
248
+ }
249
+
250
+ #[cfg(all(test, windows))]
251
+ mod tests {
252
+ use super::*;
253
+ use std::ffi::OsStr;
254
+ use std::os::windows::ffi::OsStrExt;
255
+
256
+ #[test]
257
+ fn parser_preserves_drive_current_directory_entries() {
258
+ let block: Vec<u16> = OsStr::new("=C:=C:\\work")
259
+ .encode_wide()
260
+ .chain(std::iter::once(0))
261
+ .chain(OsStr::new("Path=C:\\Windows").encode_wide())
262
+ .chain(std::iter::once(0))
263
+ .chain(std::iter::once(0))
264
+ .collect();
265
+ assert_eq!(
266
+ parse_windows_environment_block(&block),
267
+ vec![
268
+ (OsString::from("=C:"), OsString::from("C:\\work")),
269
+ (OsString::from("Path"), OsString::from("C:\\Windows")),
270
+ ]
271
+ );
272
+ }
273
+
274
+ #[test]
275
+ fn live_user_baseline_is_double_nul_terminated() {
276
+ let block = user_baseline_environment_block().unwrap();
277
+ assert!(block.len() >= 2);
278
+ assert_eq!(&block[block.len() - 2..], &[0, 0]);
279
+ }
280
+
281
+ /// Regression: with TOKEN_QUERY-only access, CreateEnvironmentBlock
282
+ /// succeeds but silently drops the per-user dynamic variables. The
283
+ /// baseline must contain USERNAME (and it must match the live value
284
+ /// when the current process has one).
285
+ #[test]
286
+ fn live_user_baseline_contains_username() {
287
+ let env = user_baseline_environment().unwrap();
288
+ let username = env
289
+ .iter()
290
+ .find(|(key, _)| key.eq_ignore_ascii_case("USERNAME"))
291
+ .map(|(_, value)| value.clone());
292
+ let username = username.expect("baseline environment must contain USERNAME");
293
+ assert!(!username.is_empty(), "USERNAME must be non-empty");
294
+ if let Ok(live) = std::env::var("USERNAME") {
295
+ assert_eq!(
296
+ username.to_string_lossy(),
297
+ live,
298
+ "baseline USERNAME must match the live login USERNAME"
299
+ );
300
+ }
301
+ }
302
+ }
@@ -48,8 +48,11 @@ pub enum EnvironmentPolicy {
48
48
  Inherit,
49
49
  /// Start from the logged-in user's machine + user environment.
50
50
  ///
51
- /// Windows implements this with `CreateEnvironmentBlock`. Unix has no
52
- /// equivalent stable OS API, so it currently falls back to inheritance.
51
+ /// Windows implements this with `CreateEnvironmentBlock`. Unix
52
+ /// reconstructs a clean login environment from the user's identity
53
+ /// (`getpwuid_r` → `USER`/`LOGNAME`/`HOME`/`SHELL`, platform default
54
+ /// `PATH`, carried-over locale/`TZ`/`TMPDIR`), falling back to
55
+ /// inheritance only when the passwd entry cannot be resolved.
53
56
  UserBaseline,
54
57
  /// Start from an empty environment.
55
58
  Clear,
@@ -20,7 +20,7 @@ crate-type = ["cdylib", "lib"]
20
20
  libc = "0.2"
21
21
  pyo3 = { workspace = true }
22
22
  regex = "1"
23
- running-process = { path = "../running-process", version = "4.6.0", features = ["client", "originator-scan"] }
23
+ running-process = { path = "../running-process", version = "4.6.1", features = ["client", "originator-scan"] }
24
24
  sysinfo = "0.30"
25
25
  winapi = { version = "0.3", features = ["consoleapi", "handleapi", "jobapi2", "processenv", "processthreadsapi", "synchapi", "winbase", "wincon", "winnt", "winuser"] }
26
26
  prost = "0.14"
@@ -4,7 +4,7 @@ build-backend = "soldr"
4
4
 
5
5
  [project]
6
6
  name = "running_process"
7
- version = "4.6.0"
7
+ version = "4.6.1"
8
8
  description = "A Rust-backed subprocess wrapper with split stdout/stderr streaming"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -1,6 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
- __version__ = "4.6.0"
3
+ __version__ = "4.6.1"
4
4
 
5
5
  from running_process._native import (
6
6
  ContainedProcessGroup,
@@ -1,142 +0,0 @@
1
- //! Process environment baselines.
2
- //!
3
- //! Windows exposes the logged-in user's machine + user environment through
4
- //! `CreateEnvironmentBlock`. Unix has no equivalent stable OS API, so the
5
- //! conservative fallback is a snapshot of the current process environment.
6
-
7
- #[cfg(windows)]
8
- use std::ffi::c_void;
9
- use std::ffi::OsString;
10
- use std::io;
11
-
12
- /// Return the logged-in user's baseline environment.
13
- ///
14
- /// On Windows this is freshly constructed from machine and user settings and
15
- /// therefore excludes variables that exist only in the current process. On
16
- /// Unix this currently falls back to the current process environment.
17
- pub fn user_baseline_environment() -> io::Result<Vec<(OsString, OsString)>> {
18
- #[cfg(windows)]
19
- {
20
- let block = user_baseline_environment_block()?;
21
- Ok(parse_windows_environment_block(&block))
22
- }
23
- #[cfg(not(windows))]
24
- {
25
- Ok(std::env::vars_os().collect())
26
- }
27
- }
28
-
29
- /// Return a CreateProcessW-compatible Unicode user environment block.
30
- ///
31
- /// The returned buffer is sorted and double-NUL terminated by Windows. It is
32
- /// useful to callers that own a manual `CreateProcessW` path.
33
- #[cfg(windows)]
34
- pub fn user_baseline_environment_block() -> io::Result<Vec<u16>> {
35
- use windows_sys::Win32::Foundation::CloseHandle;
36
- use windows_sys::Win32::Security::TOKEN_QUERY;
37
- use windows_sys::Win32::System::Environment::{
38
- CreateEnvironmentBlock, DestroyEnvironmentBlock,
39
- };
40
- use windows_sys::Win32::System::Threading::{GetCurrentProcess, OpenProcessToken};
41
-
42
- let mut token = std::ptr::null_mut();
43
- let opened = unsafe { OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &mut token) };
44
- if opened == 0 {
45
- return Err(io::Error::last_os_error());
46
- }
47
-
48
- let mut raw_block: *mut c_void = std::ptr::null_mut();
49
- let created = unsafe { CreateEnvironmentBlock(&mut raw_block, token, 0) };
50
- let create_error = if created == 0 {
51
- Some(io::Error::last_os_error())
52
- } else {
53
- None
54
- };
55
- unsafe {
56
- CloseHandle(token);
57
- }
58
- if let Some(error) = create_error {
59
- return Err(error);
60
- }
61
-
62
- let copied = unsafe { copy_windows_environment_block(raw_block.cast::<u16>()) };
63
- unsafe {
64
- DestroyEnvironmentBlock(raw_block);
65
- }
66
- Ok(copied)
67
- }
68
-
69
- #[cfg(windows)]
70
- unsafe fn copy_windows_environment_block(cursor: *const u16) -> Vec<u16> {
71
- let mut len = 0usize;
72
- loop {
73
- if *cursor.add(len) == 0 && *cursor.add(len + 1) == 0 {
74
- len += 2;
75
- break;
76
- }
77
- len += 1;
78
- }
79
- std::slice::from_raw_parts(cursor, len).to_vec()
80
- }
81
-
82
- #[cfg(windows)]
83
- fn parse_windows_environment_block(block: &[u16]) -> Vec<(OsString, OsString)> {
84
- use std::os::windows::ffi::OsStringExt;
85
-
86
- let mut env = Vec::new();
87
- let mut offset = 0usize;
88
- while offset < block.len() && block[offset] != 0 {
89
- let Some(relative_end) = block[offset..].iter().position(|value| *value == 0) else {
90
- break;
91
- };
92
- let end = offset + relative_end;
93
- let entry = &block[offset..end];
94
- // Drive-current-directory pseudo variables have the shape
95
- // `=C:=C:\path`; skip index zero so their second '=' is the
96
- // key/value separator.
97
- if let Some(separator) = entry
98
- .iter()
99
- .enumerate()
100
- .skip(1)
101
- .find_map(|(index, value)| (*value == b'=' as u16).then_some(index))
102
- {
103
- let key = OsString::from_wide(&entry[..separator]);
104
- let value = OsString::from_wide(&entry[separator + 1..]);
105
- env.push((key, value));
106
- }
107
- offset = end + 1;
108
- }
109
- env
110
- }
111
-
112
- #[cfg(all(test, windows))]
113
- mod tests {
114
- use super::*;
115
- use std::ffi::OsStr;
116
- use std::os::windows::ffi::OsStrExt;
117
-
118
- #[test]
119
- fn parser_preserves_drive_current_directory_entries() {
120
- let block: Vec<u16> = OsStr::new("=C:=C:\\work")
121
- .encode_wide()
122
- .chain(std::iter::once(0))
123
- .chain(OsStr::new("Path=C:\\Windows").encode_wide())
124
- .chain(std::iter::once(0))
125
- .chain(std::iter::once(0))
126
- .collect();
127
- assert_eq!(
128
- parse_windows_environment_block(&block),
129
- vec![
130
- (OsString::from("=C:"), OsString::from("C:\\work")),
131
- (OsString::from("Path"), OsString::from("C:\\Windows")),
132
- ]
133
- );
134
- }
135
-
136
- #[test]
137
- fn live_user_baseline_is_double_nul_terminated() {
138
- let block = user_baseline_environment_block().unwrap();
139
- assert!(block.len() >= 2);
140
- assert_eq!(&block[block.len() - 2..], &[0, 0]);
141
- }
142
- }
File without changes