agent-pbx 2.3.0__tar.gz → 2.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 (221) hide show
  1. {agent_pbx-2.3.0/src/agent_pbx.egg-info → agent_pbx-2.4.0}/PKG-INFO +21 -6
  2. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/README.md +20 -5
  3. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/__init__.py +1 -1
  4. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/agent.py +7 -1
  5. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/api.py +470 -2
  6. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/cli.py +51 -0
  7. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/config.py +9 -0
  8. agent_pbx-2.4.0/src/agent_pbx/contracts.py +334 -0
  9. agent_pbx-2.4.0/src/agent_pbx/durable_helpers.py +941 -0
  10. agent_pbx-2.4.0/src/agent_pbx/dynamic_resources.py +913 -0
  11. agent_pbx-2.4.0/src/agent_pbx/evidence_export.py +909 -0
  12. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/git_broker.py +209 -2
  13. agent_pbx-2.4.0/src/agent_pbx/git_review.py +540 -0
  14. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/mcp_daemon.py +127 -1
  15. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/mcp_tools.py +24 -0
  16. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/operator.py +413 -16
  17. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/operator_actions.py +1 -1
  18. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/operator_authority.py +85 -2
  19. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/operator_broker.py +360 -1
  20. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/operator_delegation.py +193 -0
  21. agent_pbx-2.4.0/src/agent_pbx/operator_kb_sync.py +797 -0
  22. agent_pbx-2.4.0/src/agent_pbx/protected_provider.py +335 -0
  23. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/schemas.py +153 -0
  24. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/store.py +1407 -109
  25. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/tui.py +780 -63
  26. agent_pbx-2.4.0/src/agent_pbx/workerbee_development_resources.py +543 -0
  27. {agent_pbx-2.3.0 → agent_pbx-2.4.0/src/agent_pbx.egg-info}/PKG-INFO +21 -6
  28. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx.egg-info/SOURCES.txt +15 -0
  29. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_agent_instructions.py +2 -0
  30. agent_pbx-2.4.0/tests/test_contracts.py +140 -0
  31. agent_pbx-2.4.0/tests/test_durable_helpers.py +359 -0
  32. agent_pbx-2.4.0/tests/test_dynamic_resources.py +598 -0
  33. agent_pbx-2.4.0/tests/test_engineering_control_plane_integration.py +319 -0
  34. agent_pbx-2.4.0/tests/test_evidence_export.py +248 -0
  35. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_git_broker.py +46 -0
  36. agent_pbx-2.4.0/tests/test_git_review.py +191 -0
  37. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_mcp_daemon.py +143 -0
  38. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_migration.py +29 -0
  39. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_operator.py +64 -0
  40. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_operator_authority.py +157 -0
  41. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_operator_broker.py +460 -2
  42. agent_pbx-2.4.0/tests/test_operator_kb_sync.py +395 -0
  43. agent_pbx-2.4.0/tests/test_protected_provider.py +369 -0
  44. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_store.py +62 -2
  45. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_terminal_editor.py +6 -2
  46. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_tui.py +691 -9
  47. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_workerbee_controlled_run.py +51 -2
  48. agent_pbx-2.4.0/tests/test_workerbee_development_resources.py +445 -0
  49. agent_pbx-2.3.0/src/agent_pbx/contracts.py +0 -120
  50. agent_pbx-2.3.0/tests/test_contracts.py +0 -54
  51. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/LICENSE +0 -0
  52. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/pyproject.toml +0 -0
  53. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/setup.cfg +0 -0
  54. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/__main__.py +0 -0
  55. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/agent_adoption.py +0 -0
  56. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/auth.py +0 -0
  57. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/client.py +0 -0
  58. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/codex/__init__.py +0 -0
  59. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/codex/adapter.py +0 -0
  60. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/codex/capabilities.py +0 -0
  61. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/codex/event_bridge.py +0 -0
  62. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/codex/models.py +0 -0
  63. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/codex/profiles.py +0 -0
  64. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/codex/protocol.py +0 -0
  65. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/codex/runtime.py +0 -0
  66. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/codex/sessions.py +0 -0
  67. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/codex/skills.py +0 -0
  68. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/codex/state.py +0 -0
  69. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/codex_cli.py +0 -0
  70. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/codex_config.py +0 -0
  71. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/codex_launch.py +0 -0
  72. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/codex_sessions.py +0 -0
  73. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/codex_theme.py +0 -0
  74. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/compat.py +0 -0
  75. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/debug_smoke.py +0 -0
  76. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/demo/__init__.py +0 -0
  77. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/demo/capture.py +0 -0
  78. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/demo/contract.py +0 -0
  79. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/demo/fake_codex.py +0 -0
  80. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/demo/fake_github.py +0 -0
  81. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/demo/fake_joplin.py +0 -0
  82. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/demo/fake_workerbee.py +0 -0
  83. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/demo/fixtures.py +0 -0
  84. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/demo/policy.py +0 -0
  85. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/demo/session.py +0 -0
  86. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/demo/web.py +0 -0
  87. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/dev_harness.py +0 -0
  88. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/doctor.py +0 -0
  89. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/envfile.py +0 -0
  90. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/events.py +0 -0
  91. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/files.py +0 -0
  92. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/git_worktree.py +0 -0
  93. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/host_process_evidence.py +0 -0
  94. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/issues.py +0 -0
  95. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/joplin.py +0 -0
  96. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/lifecycle.py +0 -0
  97. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/managed_runtime.py +0 -0
  98. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/migration.py +0 -0
  99. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/pairing.py +0 -0
  100. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/paths.py +0 -0
  101. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/polling.py +0 -0
  102. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/project_spawn.py +0 -0
  103. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/pull_requests.py +0 -0
  104. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/remote.py +0 -0
  105. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/runtime_tmux.py +0 -0
  106. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/security.py +0 -0
  107. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/setup_assistant.py +0 -0
  108. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/sim_agent.py +0 -0
  109. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/sim_client.py +0 -0
  110. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/skill_packs/agent-pbx-base/SKILL.md +0 -0
  111. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/skill_packs/agent-role/SKILL.md +0 -0
  112. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/skill_packs/operator-role/SKILL.md +0 -0
  113. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/skill_packs/review-role/SKILL.md +0 -0
  114. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/skill_packs/roses-architect/SKILL.md +0 -0
  115. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/terminal/__init__.py +0 -0
  116. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/terminal/conformance.py +0 -0
  117. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/terminal/keys.py +0 -0
  118. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/terminal/pty.py +0 -0
  119. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/terminal/screen.py +0 -0
  120. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/terminal/widget.py +0 -0
  121. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/terminal_editor.py +0 -0
  122. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/tmux.py +0 -0
  123. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/tmux_binary.py +0 -0
  124. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/transcript.py +0 -0
  125. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/tui_cli.py +0 -0
  126. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/uat.py +0 -0
  127. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/ui/__init__.py +0 -0
  128. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/ui/actions.py +0 -0
  129. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/ui/async_jobs.py +0 -0
  130. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/ui/focus.py +0 -0
  131. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/ui/navigation.py +0 -0
  132. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/ui/palette_history.py +0 -0
  133. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/ui/panels/__init__.py +0 -0
  134. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/ui/panels/editor.py +0 -0
  135. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/ui/panels/joplin.py +0 -0
  136. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/ui/panels/operators.py +0 -0
  137. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/ui/runtime.py +0 -0
  138. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/ui/theme.py +0 -0
  139. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/wiki_publish.py +0 -0
  140. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/workerbee.py +0 -0
  141. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/workerbee_access.py +0 -0
  142. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/workerbee_controlled_run.py +0 -0
  143. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/workerbee_controlled_run_executor.py +0 -0
  144. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/workerbee_direct_bind.py +0 -0
  145. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/workerbee_gateway.py +0 -0
  146. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/workerbee_harness.py +0 -0
  147. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/workerbee_materializer.py +0 -0
  148. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/workerbee_mcp.py +0 -0
  149. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/workerbee_modes.py +0 -0
  150. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/workerbee_policy.py +0 -0
  151. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/workerbee_runtime.py +0 -0
  152. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/workerbee_snapshot_policy.py +0 -0
  153. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/workerbee_switcher.py +0 -0
  154. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx/workerbee_workspace.py +0 -0
  155. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx.egg-info/dependency_links.txt +0 -0
  156. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx.egg-info/entry_points.txt +0 -0
  157. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx.egg-info/requires.txt +0 -0
  158. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/src/agent_pbx.egg-info/top_level.txt +0 -0
  159. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_agent_adoption.py +0 -0
  160. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_auth_pairing.py +0 -0
  161. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_codex_adapter.py +0 -0
  162. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_codex_cli.py +0 -0
  163. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_codex_config.py +0 -0
  164. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_codex_event_bridge.py +0 -0
  165. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_codex_launch.py +0 -0
  166. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_codex_profiles.py +0 -0
  167. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_codex_sessions.py +0 -0
  168. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_codex_theme.py +0 -0
  169. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_compat.py +0 -0
  170. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_debug_smoke.py +0 -0
  171. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_demo_capture.py +0 -0
  172. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_demo_codex.py +0 -0
  173. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_dev_harness.py +0 -0
  174. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_docs.py +0 -0
  175. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_doctor.py +0 -0
  176. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_events.py +0 -0
  177. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_git_worktree.py +0 -0
  178. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_health.py +0 -0
  179. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_host_process_evidence.py +0 -0
  180. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_issues.py +0 -0
  181. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_joplin.py +0 -0
  182. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_lifecycle.py +0 -0
  183. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_managed_runtime.py +0 -0
  184. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_mcp_tools.py +0 -0
  185. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_navigation.py +0 -0
  186. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_operator_delegation.py +0 -0
  187. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_palette_history.py +0 -0
  188. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_polling.py +0 -0
  189. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_project_spawn.py +0 -0
  190. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_public_demo_fixtures.py +0 -0
  191. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_public_demo_policy.py +0 -0
  192. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_public_demo_session.py +0 -0
  193. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_public_demo_web.py +0 -0
  194. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_pull_requests.py +0 -0
  195. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_readme.py +0 -0
  196. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_release_packaging.py +0 -0
  197. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_release_validation.py +0 -0
  198. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_remote.py +0 -0
  199. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_runtime_tmux.py +0 -0
  200. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_runtime_ux.py +0 -0
  201. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_setup_assistant.py +0 -0
  202. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_terminal.py +0 -0
  203. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_tmux.py +0 -0
  204. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_tmux_binary.py +0 -0
  205. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_tui_cli.py +0 -0
  206. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_uat.py +0 -0
  207. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_ui_controllers.py +0 -0
  208. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_wiki_publish.py +0 -0
  209. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_workerbee.py +0 -0
  210. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_workerbee_access.py +0 -0
  211. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_workerbee_gateway.py +0 -0
  212. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_workerbee_harness.py +0 -0
  213. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_workerbee_materializer.py +0 -0
  214. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_workerbee_mcp.py +0 -0
  215. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_workerbee_modes.py +0 -0
  216. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_workerbee_policy.py +0 -0
  217. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_workerbee_runtime.py +0 -0
  218. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_workerbee_snapshot_policy.py +0 -0
  219. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_workerbee_switcher.py +0 -0
  220. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_workerbee_workspace.py +0 -0
  221. {agent_pbx-2.3.0 → agent_pbx-2.4.0}/tests/test_workflow.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-pbx
3
- Version: 2.3.0
3
+ Version: 2.4.0
4
4
  Summary: Runtime-grounded control plane for durable Codex Agent and Operator sessions.
5
5
  Author: Agent PBX contributors
6
6
  License-Expression: Apache-2.0
@@ -109,7 +109,8 @@ origin policy, and versioned product-site contract.
109
109
 
110
110
  See [the architecture overview](https://github.com/m4xx3d0ut/agent-pbx/blob/dev/docs/architecture.md),
111
111
  [the project wiki](https://github.com/m4xx3d0ut/agent-pbx/wiki),
112
- [the v2.3.0 release notes](https://github.com/m4xx3d0ut/agent-pbx/blob/dev/docs/releases/v2.3.0.md), and
112
+ [the stable v2.4.0 release notes](https://github.com/m4xx3d0ut/agent-pbx/blob/dev/docs/releases/v2.4.0.md),
113
+ [the v2.4 acceptance record](https://github.com/m4xx3d0ut/agent-pbx/blob/dev/docs/acceptance/v2.4-uat.md), and
113
114
  [the accepted architecture decisions](https://github.com/m4xx3d0ut/agent-pbx/blob/dev/docs/adr/README.md) for the complete
114
115
  control-plane and compatibility boundaries.
115
116
 
@@ -630,9 +631,14 @@ only true for a Codex-like target.
630
631
 
631
632
  A terminal handoff update creates one idempotent completion receipt for the
632
633
  exact source root Operator or source fork. The Operators pane keeps semantic
633
- `State` and `Flow` separate from tmux `Live`; pending results appear as
634
- `⇠ REVIEW` with an `RCPT` marker. The top banner reports `RECEIPTS N`, and F8
635
- opens the completion center after pending approvals and before guarded actions.
634
+ `State` and `Flow` separate from tmux `Live`: `State` is the projected PBX
635
+ workflow, `Flow` is its highest-priority durable route or action, `Camp` is the
636
+ active nonterminal campaign count, and `Live` is tmux/runtime liveness. Raw
637
+ Codex activity does not drive `State`, `Flow`, or `Camp`. Selecting an Operator
638
+ shows the projection reason, source, and durable subject identity in Latest
639
+ detail. Pending results appear as `⇠ REVIEW` with an `RCPT` marker. The top
640
+ banner reports `RECEIPTS N`, and F8 opens the completion center after pending
641
+ approvals and before guarded actions.
636
642
  Reviewing and acknowledging a receipt stops retry/attention state without
637
643
  changing the completed, failed, blocked, or canceled handoff. Nohup recipients
638
644
  receive an exact queued command. Report-mode terminal injection requires an
@@ -678,7 +684,16 @@ export AGENT_PBX_OPERATOR_BROKER_MAX_IN_FLIGHT="1"
678
684
  `root_operator` is intentionally a local administrator choice; it is not the
679
685
  committed default. Requests survive TUI replacement, use a bounded executor
680
686
  lease, recover commit evidence from durable action receipts, and fail closed on
681
- scope, workspace, session, pane, Git parent, or path drift.
687
+ scope, workspace, session, pane, Git parent, or path drift. In root-supervised
688
+ mode, F8 first persists a deterministic request and an
689
+ `awaiting_broker_approval` needs-input report. A succeeded executor result is
690
+ not campaign completion: the root must validate the exact terminal action
691
+ transaction with `pbx_operator_validate_broker_checkpoint`, then acknowledge
692
+ the resulting handoff completion receipt. Assignment and campaign completion
693
+ fail closed while any request, transaction, actionable handoff, or completion
694
+ receipt is outstanding. If recovery is needed after terminal history exists,
695
+ `pbx_operator_create_campaign_successor` creates one idempotent successor
696
+ without reopening or rewriting the predecessor.
682
697
 
683
698
  The committed default remains manual approval. On a trusted local workstation,
684
699
  the approval center's `Trust & approve` action can grant a one-hour,
@@ -71,7 +71,8 @@ origin policy, and versioned product-site contract.
71
71
 
72
72
  See [the architecture overview](https://github.com/m4xx3d0ut/agent-pbx/blob/dev/docs/architecture.md),
73
73
  [the project wiki](https://github.com/m4xx3d0ut/agent-pbx/wiki),
74
- [the v2.3.0 release notes](https://github.com/m4xx3d0ut/agent-pbx/blob/dev/docs/releases/v2.3.0.md), and
74
+ [the stable v2.4.0 release notes](https://github.com/m4xx3d0ut/agent-pbx/blob/dev/docs/releases/v2.4.0.md),
75
+ [the v2.4 acceptance record](https://github.com/m4xx3d0ut/agent-pbx/blob/dev/docs/acceptance/v2.4-uat.md), and
75
76
  [the accepted architecture decisions](https://github.com/m4xx3d0ut/agent-pbx/blob/dev/docs/adr/README.md) for the complete
76
77
  control-plane and compatibility boundaries.
77
78
 
@@ -592,9 +593,14 @@ only true for a Codex-like target.
592
593
 
593
594
  A terminal handoff update creates one idempotent completion receipt for the
594
595
  exact source root Operator or source fork. The Operators pane keeps semantic
595
- `State` and `Flow` separate from tmux `Live`; pending results appear as
596
- `⇠ REVIEW` with an `RCPT` marker. The top banner reports `RECEIPTS N`, and F8
597
- opens the completion center after pending approvals and before guarded actions.
596
+ `State` and `Flow` separate from tmux `Live`: `State` is the projected PBX
597
+ workflow, `Flow` is its highest-priority durable route or action, `Camp` is the
598
+ active nonterminal campaign count, and `Live` is tmux/runtime liveness. Raw
599
+ Codex activity does not drive `State`, `Flow`, or `Camp`. Selecting an Operator
600
+ shows the projection reason, source, and durable subject identity in Latest
601
+ detail. Pending results appear as `⇠ REVIEW` with an `RCPT` marker. The top
602
+ banner reports `RECEIPTS N`, and F8 opens the completion center after pending
603
+ approvals and before guarded actions.
598
604
  Reviewing and acknowledging a receipt stops retry/attention state without
599
605
  changing the completed, failed, blocked, or canceled handoff. Nohup recipients
600
606
  receive an exact queued command. Report-mode terminal injection requires an
@@ -640,7 +646,16 @@ export AGENT_PBX_OPERATOR_BROKER_MAX_IN_FLIGHT="1"
640
646
  `root_operator` is intentionally a local administrator choice; it is not the
641
647
  committed default. Requests survive TUI replacement, use a bounded executor
642
648
  lease, recover commit evidence from durable action receipts, and fail closed on
643
- scope, workspace, session, pane, Git parent, or path drift.
649
+ scope, workspace, session, pane, Git parent, or path drift. In root-supervised
650
+ mode, F8 first persists a deterministic request and an
651
+ `awaiting_broker_approval` needs-input report. A succeeded executor result is
652
+ not campaign completion: the root must validate the exact terminal action
653
+ transaction with `pbx_operator_validate_broker_checkpoint`, then acknowledge
654
+ the resulting handoff completion receipt. Assignment and campaign completion
655
+ fail closed while any request, transaction, actionable handoff, or completion
656
+ receipt is outstanding. If recovery is needed after terminal history exists,
657
+ `pbx_operator_create_campaign_successor` creates one idempotent successor
658
+ without reopening or rewriting the predecessor.
644
659
 
645
660
  The committed default remains manual approval. On a trusted local workstation,
646
661
  the approval center's `Trust & approve` action can grant a one-hour,
@@ -2,4 +2,4 @@
2
2
 
3
3
  __all__ = ["__version__"]
4
4
 
5
- __version__ = "2.3.0"
5
+ __version__ = "2.4.0"
@@ -182,7 +182,13 @@ handoff. The request carries exact paths, expected parent, commit subject,
182
182
  campaign, workspace-set, and authority digests. A local Agent PBX TUI executes
183
183
  the durable stop, exact commit, and same-session resume. Read the durable result
184
184
  with `pbx_operator_get_broker_checkpoint`, inspect its receipt summary, and
185
- perform the remaining root validation. Edit forks and review forks must not
185
+ validate the exact terminal action transaction with
186
+ `pbx_operator_validate_broker_checkpoint` before assignment or campaign
187
+ completion. The durable request and its `awaiting_broker_approval` needs-input
188
+ report are restart-idempotent. Outstanding handoffs, transactions, requests,
189
+ or unacknowledged completion receipts block completion. Use
190
+ `pbx_operator_create_campaign_successor` for new recovery work after a campaign
191
+ became terminal; terminal history is never reopened. Edit forks and review forks must not
186
192
  request, cancel, or impersonate this root workflow.
187
193
 
188
194
  Operator forks have roles. The default/edit fork may coordinate caller-directed