running-process 4.3.0__tar.gz → 4.4.0__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 (381) hide show
  1. {running_process-4.3.0 → running_process-4.4.0}/Cargo.lock +2 -2
  2. {running_process-4.3.0 → running_process-4.4.0}/Cargo.toml +1 -1
  3. {running_process-4.3.0 → running_process-4.4.0}/PKG-INFO +1 -1
  4. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/adopt.rs +117 -0
  5. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/backend_sdk/frame_client.rs +23 -0
  6. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/backend_sdk/frame_client_async.rs +11 -0
  7. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/protocol/mod.rs +1 -1
  8. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/protocol/registry.rs +15 -1
  9. running_process-4.4.0/crates/running-process/tests/broker/into_backend_io.rs +208 -0
  10. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/main.rs +1 -0
  11. {running_process-4.3.0 → running_process-4.4.0}/pyproject.toml +1 -1
  12. {running_process-4.3.0 → running_process-4.4.0}/src/running_process/__init__.py +1 -1
  13. {running_process-4.3.0 → running_process-4.4.0}/LICENSE +0 -0
  14. {running_process-4.3.0 → running_process-4.4.0}/README.md +0 -0
  15. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/Cargo.toml +0 -0
  16. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/README.md +0 -0
  17. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/build.rs +0 -0
  18. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/examples/handoff_rollout_evidence.rs +0 -0
  19. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/proto/broker_v1/broker_v1_admin.proto +0 -0
  20. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/proto/broker_v1/broker_v1_envelope.proto +0 -0
  21. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/proto/broker_v1/broker_v1_manifest.proto +0 -0
  22. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/proto/broker_v1/broker_v1_service_def.proto +0 -0
  23. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/proto/broker_v1/buf.yaml +0 -0
  24. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/proto/daemon.proto +0 -0
  25. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/bin/daemon.rs +0 -0
  26. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/bin/running-process-broker-v1.rs +0 -0
  27. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/bin/running-process-cleanup.rs +0 -0
  28. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/bin/runpm.rs +0 -0
  29. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/bin/trampoline.rs +0 -0
  30. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/backend_handle.rs +0 -0
  31. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/backend_lib/accept_handed_off.rs +0 -0
  32. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/backend_lib/mod.rs +0 -0
  33. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/backend_lib/wire.rs +0 -0
  34. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/backend_lifecycle/identity.rs +0 -0
  35. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/backend_lifecycle/mod.rs +0 -0
  36. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/backend_lifecycle/probe.rs +0 -0
  37. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/backend_lifecycle/probe_async.rs +0 -0
  38. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/backend_lifecycle/verify_pid.rs +0 -0
  39. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/backend_sdk/identity_file.rs +0 -0
  40. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/backend_sdk/mod.rs +0 -0
  41. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/backend_sdk/mux.rs +0 -0
  42. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/builders.rs +0 -0
  43. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/capabilities.rs +0 -0
  44. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/client.rs +0 -0
  45. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/doctor.rs +0 -0
  46. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/fs_health.rs +0 -0
  47. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/host_identity.rs +0 -0
  48. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/lifecycle/crash_dump.rs +0 -0
  49. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/lifecycle/mod.rs +0 -0
  50. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/lifecycle/names.rs +0 -0
  51. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/lifecycle/privilege.rs +0 -0
  52. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/lifecycle/process_tree.rs +0 -0
  53. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/lifecycle/sid.rs +0 -0
  54. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/manifest.rs +0 -0
  55. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/mod.rs +0 -0
  56. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/protocol/frame_ext.rs +0 -0
  57. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/protocol/framing.rs +0 -0
  58. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/protocol/validate.rs +0 -0
  59. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/secure_dir.rs +0 -0
  60. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/admin.rs +0 -0
  61. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/backend_endpoint_allocator.rs +0 -0
  62. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/backend_launcher.rs +0 -0
  63. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/backend_registry.rs +0 -0
  64. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/broadcast.rs +0 -0
  65. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/connection.rs +0 -0
  66. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/control_socket.rs +0 -0
  67. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/fd_pressure.rs +0 -0
  68. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/handoff/ack.rs +0 -0
  69. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/handoff/fallback.rs +0 -0
  70. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/handoff/handoff_token.rs +0 -0
  71. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/handoff/latency.rs +0 -0
  72. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/handoff/mod.rs +0 -0
  73. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/handoff/orchestrate.rs +0 -0
  74. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/handoff/orchestrate_unix.rs +0 -0
  75. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/handoff/pending.rs +0 -0
  76. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/handoff/unix.rs +0 -0
  77. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/handoff/windows.rs +0 -0
  78. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/handoff/wire.rs +0 -0
  79. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/handoff_serve.rs +0 -0
  80. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/hello_handler.rs +0 -0
  81. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/hello_router.rs +0 -0
  82. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/idle_coord.rs +0 -0
  83. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/instance.rs +0 -0
  84. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/metrics.rs +0 -0
  85. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/mod.rs +0 -0
  86. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/perf_guard.rs +0 -0
  87. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/recovery.rs +0 -0
  88. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/serve.rs +0 -0
  89. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/service_def_loader.rs +0 -0
  90. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/spawn_coordinator.rs +0 -0
  91. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/spawn_wait.rs +0 -0
  92. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/trace_context.rs +0 -0
  93. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/version_allow_list.rs +0 -0
  94. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/cleanup/instances.rs +0 -0
  95. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/cleanup/list.rs +0 -0
  96. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/cleanup/mod.rs +0 -0
  97. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/cleanup/prune.rs +0 -0
  98. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/cleanup/uninstall.rs +0 -0
  99. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/cleanup/verify_artifacts.rs +0 -0
  100. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/cleanup/verify_basic.rs +0 -0
  101. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/client/client.rs +0 -0
  102. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/client/mod.rs +0 -0
  103. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/client/paths.rs +0 -0
  104. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/client/pipe_session.rs +0 -0
  105. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/client/pty_session.rs +0 -0
  106. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/client/telemetry.rs +0 -0
  107. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/console_detect.rs +0 -0
  108. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/containment.rs +0 -0
  109. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/attach_stream.rs +0 -0
  110. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/config.rs +0 -0
  111. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/emergency_reserve.rs +0 -0
  112. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/handlers/core.rs +0 -0
  113. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/handlers/kill.rs +0 -0
  114. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/handlers/maintenance.rs +0 -0
  115. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/handlers/mod.rs +0 -0
  116. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/handlers/pipe_sessions_handlers.rs +0 -0
  117. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/handlers/process_tree.rs +0 -0
  118. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/handlers/pty_sessions_handlers.rs +0 -0
  119. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/handlers/registry_handlers.rs +0 -0
  120. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/handlers/services.rs +0 -0
  121. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/handlers/spawn.rs +0 -0
  122. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/handlers/telemetry.rs +0 -0
  123. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/handlers/util.rs +0 -0
  124. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/handlers_tests.rs +0 -0
  125. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/idle.rs +0 -0
  126. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/mod.rs +0 -0
  127. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/pipe_attach_stream.rs +0 -0
  128. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/pipe_sessions.rs +0 -0
  129. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/platform/mod.rs +0 -0
  130. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/platform/unix.rs +0 -0
  131. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/platform/windows.rs +0 -0
  132. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/pty_sessions.rs +0 -0
  133. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/reaper.rs +0 -0
  134. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/registry.rs +0 -0
  135. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/runtime_gc.rs +0 -0
  136. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/server.rs +0 -0
  137. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/services.rs +0 -0
  138. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/shadow.rs +0 -0
  139. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/telemetry.rs +0 -0
  140. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/helpers.rs +0 -0
  141. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/lib.rs +0 -0
  142. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/maintenance/mod.rs +0 -0
  143. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/maintenance/release_handles.rs +0 -0
  144. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/observer/mod.rs +0 -0
  145. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/observer/tests.rs +0 -0
  146. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/originator.rs +0 -0
  147. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/pty/backend.rs +0 -0
  148. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/pty/conpty_passthrough/child.rs +0 -0
  149. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/pty/conpty_passthrough/mod.rs +0 -0
  150. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/pty/conpty_passthrough/pipes.rs +0 -0
  151. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/pty/conpty_passthrough/proc_thread_attr.rs +0 -0
  152. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/pty/conpty_passthrough/pseudoconsole.rs +0 -0
  153. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/pty/mod.rs +0 -0
  154. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/pty/native_pty_process.rs +0 -0
  155. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/pty/pty_posix.rs +0 -0
  156. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/pty/pty_windows.rs +0 -0
  157. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/pty/terminal_input.rs +0 -0
  158. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/public_symbols.rs +0 -0
  159. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/rust_debug.rs +0 -0
  160. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/spawn.rs +0 -0
  161. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/spawn_imp_unix.rs +0 -0
  162. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/spawn_imp_windows.rs +0 -0
  163. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/systemd_killmode.rs +0 -0
  164. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/terminal_graphics.rs +0 -0
  165. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/test_support/conformance.rs +0 -0
  166. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/test_support/mod.rs +0 -0
  167. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/tests.rs +0 -0
  168. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/types.rs +0 -0
  169. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/unix.rs +0 -0
  170. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/windows.rs +0 -0
  171. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/admin.rs +0 -0
  172. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/backend_endpoint_allocator.rs +0 -0
  173. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/backend_handle_boot_id.rs +0 -0
  174. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/backend_handle_common.rs +0 -0
  175. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/backend_handle_dead.rs +0 -0
  176. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/backend_handle_probe.rs +0 -0
  177. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/backend_handle_recycled.rs +0 -0
  178. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/backend_registry.rs +0 -0
  179. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/backend_sdk.rs +0 -0
  180. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/backend_sdk_async.rs +0 -0
  181. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/broadcast_release_handles.rs +0 -0
  182. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/builders.rs +0 -0
  183. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/client.rs +0 -0
  184. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/conformance_kit.rs +0 -0
  185. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/connection.rs +0 -0
  186. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/contrib_templates.rs +0 -0
  187. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/docs_escape_hatch.rs +0 -0
  188. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/docs_index.rs +0 -0
  189. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/doctor.rs +0 -0
  190. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/fd_pressure.rs +0 -0
  191. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/framing.rs +0 -0
  192. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/golden_bytes.rs +0 -0
  193. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/handoff_ack_deadline.rs +0 -0
  194. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/handoff_adopted_backend.rs +0 -0
  195. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/handoff_adoption.rs +0 -0
  196. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/handoff_backend_lib.rs +0 -0
  197. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/handoff_capability.rs +0 -0
  198. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/handoff_cross_os_acceptance.rs +0 -0
  199. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/handoff_end_to_end_acceptance.rs +0 -0
  200. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/handoff_fallback_perm_denied.rs +0 -0
  201. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/handoff_latency.rs +0 -0
  202. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/handoff_latency_e2e.rs +0 -0
  203. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/handoff_orchestrate.rs +0 -0
  204. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/handoff_serve_e2e.rs +0 -0
  205. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/handoff_serve_latency.rs +0 -0
  206. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/handoff_token_mismatch.rs +0 -0
  207. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/handoff_transport.rs +0 -0
  208. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/handoff_under_load.rs +0 -0
  209. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/handoff_unix_e2e_orchestrate.rs +0 -0
  210. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/handoff_unix_orchestrate.rs +0 -0
  211. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/handoff_windows_duplicate_handle.rs +0 -0
  212. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/handoff_windows_orchestrate.rs +0 -0
  213. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/handoff_wire.rs +0 -0
  214. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/hello_concurrent.rs +0 -0
  215. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/hello_handler.rs +0 -0
  216. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/hello_rate_limit.rs +0 -0
  217. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/hello_router.rs +0 -0
  218. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/hello_service_unknown.rs +0 -0
  219. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/hello_skip.rs +0 -0
  220. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/hello_version_blocked.rs +0 -0
  221. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/idle_coord.rs +0 -0
  222. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/instance.rs +0 -0
  223. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/instance_isolation.rs +0 -0
  224. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/lifecycle_event_size.rs +0 -0
  225. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/manifest_atomic.rs +0 -0
  226. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/manifest_boot_id.rs +0 -0
  227. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/manifest_corruption.rs +0 -0
  228. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/manifest_roundtrip.rs +0 -0
  229. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/metrics_names_frozen.rs +0 -0
  230. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/names.rs +0 -0
  231. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/peer_creds_drop.rs +0 -0
  232. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/perf_guard.rs +0 -0
  233. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/process_tree_lifecycle.rs +0 -0
  234. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/proto_field_numbers.rs +0 -0
  235. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/proto_roundtrip.rs +0 -0
  236. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/recovery_one_retry.rs +0 -0
  237. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/serve.rs +0 -0
  238. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/service_def_loader.rs +0 -0
  239. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/servicedef_cli.rs +0 -0
  240. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/socket_common.rs +0 -0
  241. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/spawn_coordinator.rs +0 -0
  242. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/spawn_wait.rs +0 -0
  243. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/toy_three_party.rs +0 -0
  244. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/trace_propagation.rs +0 -0
  245. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/verify_pid/linux.rs +0 -0
  246. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/verify_pid/macos.rs +0 -0
  247. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/verify_pid/mod.rs +0 -0
  248. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/verify_pid/windows.rs +0 -0
  249. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/cleanup/cleanup_list.rs +0 -0
  250. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/cleanup/cleanup_prune_confirm.rs +0 -0
  251. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/cleanup/cleanup_prune_dryrun.rs +0 -0
  252. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/cleanup/cleanup_uninstall.rs +0 -0
  253. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/cleanup/cleanup_verify_artifacts.rs +0 -0
  254. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/cleanup/common.rs +0 -0
  255. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/cleanup/main.rs +0 -0
  256. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/containment_test.rs +0 -0
  257. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/daemon_autostart_test.rs +0 -0
  258. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/daemon_backlog_accumulation_test.rs +0 -0
  259. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/daemon_cross_process_pty_attach_test.rs +0 -0
  260. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/daemon_fast_ctrl_c_handoff_test.rs +0 -0
  261. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/daemon_integration/compiler_wrap_seam_test.rs +0 -0
  262. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/daemon_integration/env_replace_test.rs +0 -0
  263. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/daemon_integration/main.rs +0 -0
  264. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/daemon_integration/more_tests.rs +0 -0
  265. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/daemon_integration/stdout_seam_test.rs +0 -0
  266. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/daemon_non_tty_attach_test.rs +0 -0
  267. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/daemon_pipe_session_attach_test.rs +0 -0
  268. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/daemon_pty_session_attach_test.rs +0 -0
  269. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/daemon_resize_rpc_test.rs +0 -0
  270. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/daemon_runpm_service_stubs.rs +0 -0
  271. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/daemon_sessions_bulk_ops_test.rs +0 -0
  272. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/daemon_sessions_log_test.rs +0 -0
  273. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/daemon_tee_ring_test.rs +0 -0
  274. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/daemon_termination_outcome_test.rs +0 -0
  275. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/daemon_tree_kill_test.rs +0 -0
  276. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/daemon_tui_repaint_test.rs +0 -0
  277. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/fs_adversarial_test.rs +0 -0
  278. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/interactive_pty_session_test.rs +0 -0
  279. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/maintenance/main.rs +0 -0
  280. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/maintenance/release_handles_unix.rs +0 -0
  281. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/maintenance/release_handles_windows.rs +0 -0
  282. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/originator_test.rs +0 -0
  283. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/process_core_test.rs +0 -0
  284. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/pty_conhost_job_test.rs +0 -0
  285. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/pty_master_public_api_test.rs +0 -0
  286. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/security/cross_user_release_handles.rs +0 -0
  287. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/security/cve_dbus_2014_3639.rs +0 -0
  288. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/security/cve_dbus_2023_34969.rs +0 -0
  289. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/security/cve_sccache_2023_1521.rs +0 -0
  290. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/security/deferred_runtime_surfaces.rs +0 -0
  291. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/security/dependency_surface.rs +0 -0
  292. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/security/fuzz_campaign_signoff.rs +0 -0
  293. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/security/main.rs +0 -0
  294. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/security/manifest_tamper_detection.rs +0 -0
  295. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/security/no_network_dependencies.rs +0 -0
  296. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/security/pipe_name_validation.rs +0 -0
  297. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/security/pipe_squatting.rs +0 -0
  298. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/security/security_audit_workflow.rs +0 -0
  299. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/security/security_fuzz_workflow.rs +0 -0
  300. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/security/service_name_validation.rs +0 -0
  301. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/security/unsafe_inventory.rs +0 -0
  302. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/security/wanted_version_shell_injection.rs +0 -0
  303. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/security/wanted_version_traversal.rs +0 -0
  304. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/spawn_test.rs +0 -0
  305. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/terminal_graphics_capabilities_test.rs +0 -0
  306. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/Cargo.toml +0 -0
  307. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/containment.rs +0 -0
  308. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/daemon_client.rs +0 -0
  309. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/debug_traces.rs +0 -0
  310. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/helpers.rs +0 -0
  311. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/idle_detector.rs +0 -0
  312. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/lib.rs +0 -0
  313. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/metrics.rs +0 -0
  314. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/originator.rs +0 -0
  315. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/pid_tracking.rs +0 -0
  316. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/priority.rs +0 -0
  317. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/process.rs +0 -0
  318. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/process_tree.rs +0 -0
  319. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/pty_buffer.rs +0 -0
  320. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/pty_process.rs +0 -0
  321. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/public_symbols.rs +0 -0
  322. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/py_native_process.rs +0 -0
  323. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/registry.rs +0 -0
  324. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/signal_bool.rs +0 -0
  325. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/terminal_input.rs +0 -0
  326. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/tests/control_churn.rs +0 -0
  327. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/tests/expect_match.rs +0 -0
  328. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/tests/idle_detector.rs +0 -0
  329. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/tests/mod.rs +0 -0
  330. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/tests/parse_command.rs +0 -0
  331. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/tests/process_tree.rs +0 -0
  332. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/tests/pty_buffer.rs +0 -0
  333. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/tests/pty_process.rs +0 -0
  334. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/tests/registry.rs +0 -0
  335. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/tests/signal_bool.rs +0 -0
  336. {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/tests/terminal_input.rs +0 -0
  337. {running_process-4.3.0 → running_process-4.4.0}/crates/test-watchdog/Cargo.toml +0 -0
  338. {running_process-4.3.0 → running_process-4.4.0}/crates/test-watchdog/src/lib.rs +0 -0
  339. {running_process-4.3.0 → running_process-4.4.0}/crates/test-watchdog/tests/hang_dump.rs +0 -0
  340. {running_process-4.3.0 → running_process-4.4.0}/src/running_process/assets/example.txt +0 -0
  341. {running_process-4.3.0 → running_process-4.4.0}/src/running_process/cli.py +0 -0
  342. {running_process-4.3.0 → running_process-4.4.0}/src/running_process/command_render.py +0 -0
  343. {running_process-4.3.0 → running_process-4.4.0}/src/running_process/compat.py +0 -0
  344. {running_process-4.3.0 → running_process-4.4.0}/src/running_process/console_encoding.py +0 -0
  345. {running_process-4.3.0 → running_process-4.4.0}/src/running_process/daemon.py +0 -0
  346. {running_process-4.3.0 → running_process-4.4.0}/src/running_process/dashboard.py +0 -0
  347. {running_process-4.3.0 → running_process-4.4.0}/src/running_process/exit_status.py +0 -0
  348. {running_process-4.3.0 → running_process-4.4.0}/src/running_process/expect.py +0 -0
  349. {running_process-4.3.0 → running_process-4.4.0}/src/running_process/interrupt_handler.py +0 -0
  350. {running_process-4.3.0 → running_process-4.4.0}/src/running_process/launch.py +0 -0
  351. {running_process-4.3.0 → running_process-4.4.0}/src/running_process/line_iterator.py +0 -0
  352. {running_process-4.3.0 → running_process-4.4.0}/src/running_process/output_formatter.py +0 -0
  353. {running_process-4.3.0 → running_process-4.4.0}/src/running_process/priority.py +0 -0
  354. {running_process-4.3.0 → running_process-4.4.0}/src/running_process/process_utils.py +0 -0
  355. {running_process-4.3.0 → running_process-4.4.0}/src/running_process/processor_cli.py +0 -0
  356. {running_process-4.3.0 → running_process-4.4.0}/src/running_process/pty/__init__.py +0 -0
  357. {running_process-4.3.0 → running_process-4.4.0}/src/running_process/pty/_command.py +0 -0
  358. {running_process-4.3.0 → running_process-4.4.0}/src/running_process/pty/_console_io.py +0 -0
  359. {running_process-4.3.0 → running_process-4.4.0}/src/running_process/pty/_errors.py +0 -0
  360. {running_process-4.3.0 → running_process-4.4.0}/src/running_process/pty/_idle_helpers.py +0 -0
  361. {running_process-4.3.0 → running_process-4.4.0}/src/running_process/pty/_idle_state.py +0 -0
  362. {running_process-4.3.0 → running_process-4.4.0}/src/running_process/pty/_interactive.py +0 -0
  363. {running_process-4.3.0 → running_process-4.4.0}/src/running_process/pty/_process_helpers.py +0 -0
  364. {running_process-4.3.0 → running_process-4.4.0}/src/running_process/pty/_pseudo_terminal.py +0 -0
  365. {running_process-4.3.0 → running_process-4.4.0}/src/running_process/pty/_pty_expect.py +0 -0
  366. {running_process-4.3.0 → running_process-4.4.0}/src/running_process/pty/_pty_idle_waiter.py +0 -0
  367. {running_process-4.3.0 → running_process-4.4.0}/src/running_process/pty/_pty_input_relay.py +0 -0
  368. {running_process-4.3.0 → running_process-4.4.0}/src/running_process/pty/_pty_reader.py +0 -0
  369. {running_process-4.3.0 → running_process-4.4.0}/src/running_process/pty/_pty_wait_for.py +0 -0
  370. {running_process-4.3.0 → running_process-4.4.0}/src/running_process/pty/_terminal_strip.py +0 -0
  371. {running_process-4.3.0 → running_process-4.4.0}/src/running_process/pty/_types.py +0 -0
  372. {running_process-4.3.0 → running_process-4.4.0}/src/running_process/pty/_wait_input.py +0 -0
  373. {running_process-4.3.0 → running_process-4.4.0}/src/running_process/running_process/__init__.py +0 -0
  374. {running_process-4.3.0 → running_process-4.4.0}/src/running_process/running_process/_classmethod_api.py +0 -0
  375. {running_process-4.3.0 → running_process-4.4.0}/src/running_process/running_process/_core.py +0 -0
  376. {running_process-4.3.0 → running_process-4.4.0}/src/running_process/running_process/_helpers.py +0 -0
  377. {running_process-4.3.0 → running_process-4.4.0}/src/running_process/running_process/_iter.py +0 -0
  378. {running_process-4.3.0 → running_process-4.4.0}/src/running_process/running_process/_subprocess.py +0 -0
  379. {running_process-4.3.0 → running_process-4.4.0}/src/running_process/running_process/_types.py +0 -0
  380. {running_process-4.3.0 → running_process-4.4.0}/src/running_process/running_process/_wait_methods.py +0 -0
  381. {running_process-4.3.0 → running_process-4.4.0}/src/running_process/running_process_manager.py +0 -0
@@ -1085,7 +1085,7 @@ checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a"
1085
1085
 
1086
1086
  [[package]]
1087
1087
  name = "running-process"
1088
- version = "4.3.0"
1088
+ version = "4.4.0"
1089
1089
  dependencies = [
1090
1090
  "anyhow",
1091
1091
  "blake3",
@@ -1120,7 +1120,7 @@ dependencies = [
1120
1120
 
1121
1121
  [[package]]
1122
1122
  name = "running-process-py"
1123
- version = "4.3.0"
1123
+ version = "4.4.0"
1124
1124
  dependencies = [
1125
1125
  "interprocess",
1126
1126
  "libc",
@@ -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.3.0"
6
+ version = "4.4.0"
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.3.0
3
+ Version: 4.4.0
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
@@ -104,6 +104,103 @@ impl BrokerSession {
104
104
  pub fn into_client(self) -> FrameClient {
105
105
  self.client
106
106
  }
107
+
108
+ /// Consume the session and hand back the live negotiated socket as an
109
+ /// owned OS handle (#720).
110
+ ///
111
+ /// After adoption has driven the broker handshake to completion, a
112
+ /// consumer that wants to stop speaking the FrameV1 request/response wire
113
+ /// and run its own protocol over the same connection calls this to take
114
+ /// ownership of the raw socket. On Unix the result wraps an
115
+ /// `OwnedFd`; the Windows `OwnedHandle` path is deferred, so this returns
116
+ /// `IntoBackendIoError::WindowsUnsupported` there for now.
117
+ ///
118
+ /// Fails with [`IntoBackendIoError::BufferedResidual`] if the frame
119
+ /// reader has buffered response bytes the bare socket would not carry —
120
+ /// which never happens on a freshly adopted session that has issued no
121
+ /// [`request`](Self::request).
122
+ pub fn into_backend_io(self) -> Result<OwnedBackendIo, IntoBackendIoError> {
123
+ let buffered = self.client.buffered_len();
124
+ if buffered != 0 {
125
+ return Err(IntoBackendIoError::BufferedResidual { buffered });
126
+ }
127
+ OwnedBackendIo::from_local_socket_stream(self.client.into_stream())
128
+ }
129
+ }
130
+
131
+ /// A live negotiated backend socket handed back as an owned OS handle (#720).
132
+ ///
133
+ /// Produced by [`BrokerSession::into_backend_io`] /
134
+ /// `AsyncBrokerSession::into_backend_io`. On Unix it owns an `OwnedFd` the
135
+ /// consumer can wrap in its own transport (e.g.
136
+ /// `std::os::unix::net::UnixStream::from`); the Windows `OwnedHandle` path is
137
+ /// deferred (#720), so the type is never constructed on Windows.
138
+ #[derive(Debug)]
139
+ pub struct OwnedBackendIo {
140
+ // The Windows handle path is deferred (#720). The type still exists so the
141
+ // `into_backend_io` signature is platform-stable, but it carries no handle
142
+ // on Windows and is only ever returned as `Err(WindowsUnsupported)`.
143
+ #[cfg(unix)]
144
+ fd: std::os::fd::OwnedFd,
145
+ }
146
+
147
+ impl OwnedBackendIo {
148
+ #[cfg(unix)]
149
+ fn from_local_socket_stream(
150
+ stream: interprocess::local_socket::Stream,
151
+ ) -> Result<Self, IntoBackendIoError> {
152
+ match stream {
153
+ interprocess::local_socket::Stream::UdSocket(uds) => Ok(Self {
154
+ fd: std::os::fd::OwnedFd::from(uds),
155
+ }),
156
+ }
157
+ }
158
+
159
+ #[cfg(windows)]
160
+ fn from_local_socket_stream(
161
+ _stream: interprocess::local_socket::Stream,
162
+ ) -> Result<Self, IntoBackendIoError> {
163
+ Err(IntoBackendIoError::WindowsUnsupported)
164
+ }
165
+
166
+ /// Consume and return the raw owned file descriptor.
167
+ #[cfg(unix)]
168
+ pub fn into_owned_fd(self) -> std::os::fd::OwnedFd {
169
+ self.fd
170
+ }
171
+ }
172
+
173
+ #[cfg(unix)]
174
+ impl std::os::fd::AsFd for OwnedBackendIo {
175
+ fn as_fd(&self) -> std::os::fd::BorrowedFd<'_> {
176
+ self.fd.as_fd()
177
+ }
178
+ }
179
+
180
+ /// Errors from [`BrokerSession::into_backend_io`] /
181
+ /// [`AsyncBrokerSession::into_backend_io`].
182
+ #[derive(Debug, thiserror::Error)]
183
+ pub enum IntoBackendIoError {
184
+ /// The frame reader still holds buffered response bytes that the bare
185
+ /// socket would not carry, so the raw handle cannot be taken without
186
+ /// losing them.
187
+ #[error(
188
+ "frame client has {buffered} buffered response byte(s); cannot hand off the raw socket without losing them"
189
+ )]
190
+ BufferedResidual {
191
+ /// Number of bytes buffered by the frame reader.
192
+ buffered: usize,
193
+ },
194
+ /// The async frame client was poisoned by a prior request panic, so its
195
+ /// inner blocking client is gone.
196
+ #[cfg(feature = "client-async")]
197
+ #[error("async frame client was poisoned by a prior request panic")]
198
+ Poisoned,
199
+ /// `into_backend_io()` is not yet supported on Windows; the `OwnedHandle`
200
+ /// path is deferred (#720).
201
+ #[cfg(windows)]
202
+ #[error("into_backend_io() is not yet supported on Windows; the OwnedHandle path is deferred (#720)")]
203
+ WindowsUnsupported,
107
204
  }
108
205
 
109
206
  /// Errors from [`BrokerSession::adopt`] / [`AsyncBrokerSession::adopt`].
@@ -270,4 +367,24 @@ impl AsyncBrokerSession {
270
367
  pub fn into_client(self) -> crate::broker::backend_sdk::AsyncFrameClient {
271
368
  self.client
272
369
  }
370
+
371
+ /// Consume the session and hand back the live negotiated socket as an
372
+ /// owned OS handle (#720).
373
+ ///
374
+ /// Async twin of [`BrokerSession::into_backend_io`]. No `.await` is
375
+ /// needed: the inner blocking client already owns the connected socket, so
376
+ /// taking the raw handle out is a synchronous unwrap. Fails with
377
+ /// [`IntoBackendIoError::Poisoned`] if a prior [`request`](Self::request)
378
+ /// panicked inside `spawn_blocking` and left the client slot empty.
379
+ pub fn into_backend_io(self) -> Result<OwnedBackendIo, IntoBackendIoError> {
380
+ let client = self
381
+ .client
382
+ .into_blocking()
383
+ .ok_or(IntoBackendIoError::Poisoned)?;
384
+ let buffered = client.buffered_len();
385
+ if buffered != 0 {
386
+ return Err(IntoBackendIoError::BufferedResidual { buffered });
387
+ }
388
+ OwnedBackendIo::from_local_socket_stream(client.into_stream())
389
+ }
273
390
  }
@@ -108,6 +108,29 @@ impl FrameClient {
108
108
  pub fn next_request_id(&self) -> u64 {
109
109
  self.next_request_id
110
110
  }
111
+
112
+ /// Bytes the internal frame reader has buffered but not yet consumed.
113
+ ///
114
+ /// Zero on a client that has issued no [`Self::request`]. A consumer that
115
+ /// wants to take the raw socket back out via [`Self::into_stream`] checks
116
+ /// this first: nonzero means there is response data the bare socket would
117
+ /// not carry, so the take must be refused.
118
+ pub fn buffered_len(&self) -> usize {
119
+ self.stream.buffer().len()
120
+ }
121
+
122
+ /// Consume the client and return the underlying local-socket stream.
123
+ ///
124
+ /// Hands the negotiated socket back to a consumer that will speak its own
125
+ /// wire over it (see [`BrokerSession::into_backend_io`]). Any bytes still
126
+ /// buffered by the frame reader are dropped, so callers must verify
127
+ /// [`Self::buffered_len`] is zero before calling — which it always is on a
128
+ /// freshly adopted session that has issued no request.
129
+ ///
130
+ /// [`BrokerSession::into_backend_io`]: crate::broker::adopt::BrokerSession::into_backend_io
131
+ pub fn into_stream(self) -> interprocess::local_socket::Stream {
132
+ self.stream.into_inner()
133
+ }
111
134
  }
112
135
 
113
136
  /// Errors returned by [`FrameClient`].
@@ -167,6 +167,17 @@ impl AsyncFrameClient {
167
167
  pub fn next_request_id(&self) -> Option<u64> {
168
168
  self.inner.as_ref().map(FrameClient::next_request_id)
169
169
  }
170
+
171
+ /// Recover the owned blocking [`FrameClient`], or `None` if a prior
172
+ /// request panicked inside `spawn_blocking` and poisoned the slot.
173
+ ///
174
+ /// Used by [`AsyncBrokerSession::into_backend_io`] to take the
175
+ /// negotiated socket back out without crossing another async hop.
176
+ ///
177
+ /// [`AsyncBrokerSession::into_backend_io`]: crate::broker::adopt::AsyncBrokerSession::into_backend_io
178
+ pub fn into_blocking(self) -> Option<FrameClient> {
179
+ self.inner
180
+ }
170
181
  }
171
182
 
172
183
  fn join_error_to_client(join_err: tokio::task::JoinError) -> FrameClientError {
@@ -34,6 +34,6 @@ pub use framing::{
34
34
  };
35
35
  pub use registry::{
36
36
  ADMIN_PAYLOAD_PROTOCOL, BACKEND_HANDLE_PROBE_PAYLOAD_PROTOCOL, CONTROL_PAYLOAD_PROTOCOL,
37
- HANDOFF_PAYLOAD_PROTOCOL, PROTOCOL_VERSION, ZCCACHE_PAYLOAD_PROTOCOL,
37
+ FBUILD_PAYLOAD_PROTOCOL, HANDOFF_PAYLOAD_PROTOCOL, PROTOCOL_VERSION, ZCCACHE_PAYLOAD_PROTOCOL,
38
38
  };
39
39
  pub use validate::{validate_frame_envelope, FrameValidationError};
@@ -43,6 +43,7 @@
43
43
  //! |----------|------------------------------|------------------------------------------------------------------|
44
44
  //! | `0x7A63` | [`ZCCACHE_PAYLOAD_PROTOCOL`] | zccache (`"zc"` in ASCII; zccache FrameV1 request/response lane) |
45
45
  //! | `0x7C4C` | [`CLUD_PAYLOAD_PROTOCOL`] | clud (`0x7C4C` = `"|L"`; clud daemon Frame v1 request/response lane) |
46
+ //! | `0x7EB1` | [`FBUILD_PAYLOAD_PROTOCOL`] | fbuild (FastLED/fbuild daemon Frame v1 request/response lane) |
46
47
  //!
47
48
  //! Use [`crate::register_payload_protocol!`] in consumer crates to pin
48
49
  //! the chosen ID with compile-time range and collision checks.
@@ -112,6 +113,12 @@ pub const ZCCACHE_PAYLOAD_PROTOCOL: u32 = 0x7A63;
112
113
  /// authoritative registration lives here.
113
114
  pub const CLUD_PAYLOAD_PROTOCOL: u32 = 0x7C4C;
114
115
 
116
+ /// Registered consumer ID: fbuild's opaque Frame v1 request/response lane
117
+ /// (FastLED/fbuild daemon control plane; zackees/running-process#437). fbuild
118
+ /// pins this value on its side with [`crate::register_payload_protocol!`]; the
119
+ /// authoritative registration lives here.
120
+ pub const FBUILD_PAYLOAD_PROTOCOL: u32 = 0x7EB1;
121
+
115
122
  /// All first-party payload-protocol IDs, in registry-table order.
116
123
  ///
117
124
  /// Used by [`is_first_party`] and the consumer-side collision checks
@@ -239,7 +246,7 @@ mod tests {
239
246
  fn frozen_consumer_registry_values() {
240
247
  use super::{
241
248
  is_first_party, is_private_use_id, is_registered_consumer_id, CLUD_PAYLOAD_PROTOCOL,
242
- CONSUMER_PAYLOAD_PROTOCOL_MAX, CONSUMER_PAYLOAD_PROTOCOL_MIN,
249
+ CONSUMER_PAYLOAD_PROTOCOL_MAX, CONSUMER_PAYLOAD_PROTOCOL_MIN, FBUILD_PAYLOAD_PROTOCOL,
243
250
  PRIVATE_USE_PAYLOAD_PROTOCOL_MAX, PRIVATE_USE_PAYLOAD_PROTOCOL_MIN,
244
251
  ZCCACHE_PAYLOAD_PROTOCOL,
245
252
  };
@@ -250,7 +257,10 @@ mod tests {
250
257
  assert_eq!(PRIVATE_USE_PAYLOAD_PROTOCOL_MAX, 0xFFFF);
251
258
  assert_eq!(ZCCACHE_PAYLOAD_PROTOCOL, 0x7A63);
252
259
  assert_eq!(CLUD_PAYLOAD_PROTOCOL, 0x7C4C);
260
+ assert_eq!(FBUILD_PAYLOAD_PROTOCOL, 0x7EB1);
253
261
  assert_ne!(CLUD_PAYLOAD_PROTOCOL, ZCCACHE_PAYLOAD_PROTOCOL);
262
+ assert_ne!(FBUILD_PAYLOAD_PROTOCOL, ZCCACHE_PAYLOAD_PROTOCOL);
263
+ assert_ne!(FBUILD_PAYLOAD_PROTOCOL, CLUD_PAYLOAD_PROTOCOL);
254
264
 
255
265
  assert!(is_registered_consumer_id(ZCCACHE_PAYLOAD_PROTOCOL));
256
266
  assert!(!is_first_party(ZCCACHE_PAYLOAD_PROTOCOL));
@@ -260,6 +270,10 @@ mod tests {
260
270
  assert!(!is_first_party(CLUD_PAYLOAD_PROTOCOL));
261
271
  assert!(!is_private_use_id(CLUD_PAYLOAD_PROTOCOL));
262
272
 
273
+ assert!(is_registered_consumer_id(FBUILD_PAYLOAD_PROTOCOL));
274
+ assert!(!is_first_party(FBUILD_PAYLOAD_PROTOCOL));
275
+ assert!(!is_private_use_id(FBUILD_PAYLOAD_PROTOCOL));
276
+
263
277
  // First-party IDs must never drift into the consumer range.
264
278
  for id in super::FIRST_PARTY_PAYLOAD_PROTOCOLS {
265
279
  assert!(is_first_party(id));
@@ -0,0 +1,208 @@
1
+ //! End-to-end coverage for [`BrokerSession::into_backend_io`] (#720).
2
+ //!
3
+ //! A consumer adopts through the broker, then — instead of speaking the
4
+ //! FrameV1 request/response wire — takes ownership of the live negotiated
5
+ //! socket and runs its own raw protocol over it. On Unix the handed-back
6
+ //! [`OwnedFd`](std::os::fd::OwnedFd) is wrapped in a
7
+ //! [`std::os::unix::net::UnixStream`] and proven live with a raw echo
8
+ //! round-trip. On Windows the `OwnedHandle` path is deferred, so
9
+ //! `into_backend_io()` reports [`IntoBackendIoError::WindowsUnsupported`].
10
+
11
+ use std::io::{self, Read, Write};
12
+ use std::sync::mpsc;
13
+ use std::thread;
14
+
15
+ use interprocess::local_socket::traits::Listener as _;
16
+ use running_process::broker::adopt::BrokerSession;
17
+ #[cfg(all(unix, feature = "client-async"))]
18
+ use running_process::broker::adopt::{AsyncBrokerSession, OwnedConnectRequest};
19
+ use running_process::broker::client::{BackendConnectionRoute, ConnectBackendRequest};
20
+ use running_process::broker::protocol::{BrokerIsolation, ServiceDefinition};
21
+ use running_process::broker::server::{
22
+ handle_hello_connection, HelloHandler, PeerIdentity, RegisteredBackend,
23
+ };
24
+
25
+ use crate::socket_common::{
26
+ await_test_socket_ready, bind_ready_test_socket, cleanup_test_socket, unique_socket_name,
27
+ };
28
+
29
+ const IO_SERVICE: &str = "io-test";
30
+ const IO_VERSION: &str = "1.0.0";
31
+
32
+ fn io_service_definition() -> ServiceDefinition {
33
+ ServiceDefinition {
34
+ service_name: IO_SERVICE.into(),
35
+ binary_path: "/usr/local/bin/io-test".into(),
36
+ isolation: BrokerIsolation::SharedBroker as i32,
37
+ explicit_instance: String::new(),
38
+ per_version_binary_dir: String::new(),
39
+ min_version: "1.0.0".into(),
40
+ version_allow_list: vec![IO_VERSION.into()],
41
+ labels: Default::default(),
42
+ }
43
+ }
44
+
45
+ /// Broker that negotiates one Hello and points the client at `backend_socket`.
46
+ fn spawn_broker(
47
+ broker_socket: String,
48
+ backend_socket: String,
49
+ ) -> thread::JoinHandle<io::Result<()>> {
50
+ let display = broker_socket.clone();
51
+ let (ready_tx, ready_rx) = mpsc::channel();
52
+ let handle = thread::spawn(move || {
53
+ let listener = bind_ready_test_socket(&broker_socket, &ready_tx)?;
54
+ let handler = HelloHandler::new()
55
+ .with_backend(RegisteredBackend {
56
+ service_definition: io_service_definition(),
57
+ daemon_version: IO_VERSION.into(),
58
+ backend_pipe: backend_socket.clone(),
59
+ server_capabilities: 0x01,
60
+ })
61
+ .map_err(|err| io::Error::other(err.to_string()))?;
62
+ let mut stream = listener.accept()?;
63
+ let peer = PeerIdentity {
64
+ pid: std::process::id(),
65
+ uid_or_sid: "io-peer".into(),
66
+ };
67
+ handle_hello_connection(&mut stream, &handler, peer)
68
+ .map_err(|err| io::Error::other(err.to_string()))?;
69
+ cleanup_test_socket(&broker_socket);
70
+ Ok(())
71
+ });
72
+ await_test_socket_ready(&ready_rx, &display);
73
+ handle
74
+ }
75
+
76
+ /// Backend that accepts one connection and echoes raw bytes until EOF.
77
+ ///
78
+ /// Unlike the [`BackendEndpointMux`](running_process::broker::backend_sdk::BackendEndpointMux)
79
+ /// app daemons, this speaks no frame wire: it proves the socket handed back by
80
+ /// `into_backend_io()` is the live negotiated connection by mirroring whatever
81
+ /// the consumer writes over it directly.
82
+ fn spawn_raw_echo_backend(backend_socket: String) -> thread::JoinHandle<io::Result<()>> {
83
+ let display = backend_socket.clone();
84
+ let (ready_tx, ready_rx) = mpsc::channel();
85
+ let handle = thread::spawn(move || {
86
+ let listener = bind_ready_test_socket(&backend_socket, &ready_tx)?;
87
+ let mut stream = listener.accept()?;
88
+ let mut chunk = [0u8; 4096];
89
+ loop {
90
+ let read = stream.read(&mut chunk)?;
91
+ if read == 0 {
92
+ break;
93
+ }
94
+ stream.write_all(&chunk[..read])?;
95
+ stream.flush()?;
96
+ }
97
+ cleanup_test_socket(&backend_socket);
98
+ Ok(())
99
+ });
100
+ await_test_socket_ready(&ready_rx, &display);
101
+ handle
102
+ }
103
+
104
+ #[cfg(unix)]
105
+ #[test]
106
+ fn into_backend_io_hands_off_live_unix_socket() {
107
+ use std::os::unix::net::UnixStream;
108
+
109
+ let broker_socket = unique_socket_name("io-broker");
110
+ let backend_socket = unique_socket_name("io-backend");
111
+
112
+ let backend = spawn_raw_echo_backend(backend_socket.clone());
113
+ let broker = spawn_broker(broker_socket.clone(), backend_socket.clone());
114
+
115
+ let request = ConnectBackendRequest::new(&broker_socket, IO_SERVICE, IO_VERSION, IO_VERSION);
116
+ let session = BrokerSession::adopt(request).expect("broker session adopt");
117
+ assert_eq!(session.route(), BackendConnectionRoute::BrokerNegotiated);
118
+ assert_eq!(session.endpoint(), backend_socket);
119
+
120
+ let io = session.into_backend_io().expect("into_backend_io on unix");
121
+ let fd = io.into_owned_fd();
122
+ let mut raw = UnixStream::from(fd);
123
+
124
+ let proof = b"live-socket-proof";
125
+ raw.write_all(proof).expect("write over raw socket");
126
+ raw.flush().expect("flush");
127
+ let mut echoed = vec![0u8; proof.len()];
128
+ raw.read_exact(&mut echoed).expect("read raw echo");
129
+ assert_eq!(
130
+ &echoed, proof,
131
+ "raw socket must echo over the live connection"
132
+ );
133
+
134
+ drop(raw);
135
+ broker.join().unwrap().unwrap();
136
+ backend.join().unwrap().unwrap();
137
+ }
138
+
139
+ #[cfg(windows)]
140
+ #[test]
141
+ fn into_backend_io_is_unsupported_on_windows() {
142
+ use running_process::broker::adopt::IntoBackendIoError;
143
+
144
+ let broker_socket = unique_socket_name("io-broker-win");
145
+ let backend_socket = unique_socket_name("io-backend-win");
146
+
147
+ let backend = spawn_raw_echo_backend(backend_socket.clone());
148
+ let broker = spawn_broker(broker_socket.clone(), backend_socket.clone());
149
+
150
+ let request = ConnectBackendRequest::new(&broker_socket, IO_SERVICE, IO_VERSION, IO_VERSION);
151
+ let session = BrokerSession::adopt(request).expect("broker session adopt");
152
+ assert_eq!(session.route(), BackendConnectionRoute::BrokerNegotiated);
153
+
154
+ let err = session
155
+ .into_backend_io()
156
+ .expect_err("into_backend_io must be unsupported on Windows for now");
157
+ assert!(
158
+ matches!(err, IntoBackendIoError::WindowsUnsupported),
159
+ "expected WindowsUnsupported, got {err:?}"
160
+ );
161
+
162
+ broker.join().unwrap().unwrap();
163
+ backend.join().unwrap().unwrap();
164
+ }
165
+
166
+ #[cfg(all(unix, feature = "client-async"))]
167
+ #[test]
168
+ fn async_into_backend_io_hands_off_live_unix_socket() {
169
+ use std::os::unix::net::UnixStream;
170
+
171
+ let broker_socket = unique_socket_name("io-broker-async");
172
+ let backend_socket = unique_socket_name("io-backend-async");
173
+
174
+ let backend = spawn_raw_echo_backend(backend_socket.clone());
175
+ let broker = spawn_broker(broker_socket.clone(), backend_socket.clone());
176
+
177
+ let runtime = tokio::runtime::Builder::new_current_thread()
178
+ .enable_all()
179
+ .build()
180
+ .expect("tokio runtime");
181
+ let fd = runtime.block_on(async {
182
+ let request =
183
+ OwnedConnectRequest::new(broker_socket.clone(), IO_SERVICE, IO_VERSION, IO_VERSION);
184
+ let session = AsyncBrokerSession::adopt(request)
185
+ .await
186
+ .expect("async broker session adopt");
187
+ assert_eq!(session.route(), BackendConnectionRoute::BrokerNegotiated);
188
+ session
189
+ .into_backend_io()
190
+ .expect("async into_backend_io on unix")
191
+ .into_owned_fd()
192
+ });
193
+
194
+ let mut raw = UnixStream::from(fd);
195
+ let proof = b"async-live-socket-proof";
196
+ raw.write_all(proof).expect("write over raw socket");
197
+ raw.flush().expect("flush");
198
+ let mut echoed = vec![0u8; proof.len()];
199
+ raw.read_exact(&mut echoed).expect("read raw echo");
200
+ assert_eq!(
201
+ &echoed, proof,
202
+ "raw socket must echo over the live connection"
203
+ );
204
+
205
+ drop(raw);
206
+ broker.join().unwrap().unwrap();
207
+ backend.join().unwrap().unwrap();
208
+ }
@@ -64,6 +64,7 @@ mod hello_version_blocked;
64
64
  mod idle_coord;
65
65
  mod instance;
66
66
  mod instance_isolation;
67
+ mod into_backend_io;
67
68
  mod lifecycle_event_size;
68
69
  mod manifest_atomic;
69
70
  mod manifest_boot_id;
@@ -4,7 +4,7 @@ build-backend = "maturin"
4
4
 
5
5
  [project]
6
6
  name = "running_process"
7
- version = "4.3.0"
7
+ version = "4.4.0"
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.3.0"
3
+ __version__ = "4.4.0"
4
4
 
5
5
  from running_process._native import (
6
6
  ContainedProcessGroup,
File without changes