oacp-cli 0.3.0__tar.gz → 0.3.2__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 (187) hide show
  1. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/CHANGELOG.md +30 -1
  2. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/CONTRIBUTING.md +1 -0
  3. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/PKG-INFO +113 -8
  4. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/QUICKSTART.md +54 -16
  5. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/README.md +112 -7
  6. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/SPEC.md +61 -5
  7. oacp_cli-0.3.2/docs/from-claude-p.md +151 -0
  8. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/docs/guides/runtime_capability_matrix.md +1 -1
  9. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/docs/guides/setup.md +7 -1
  10. oacp_cli-0.3.2/docs/img/oacp-cli-demo.png +0 -0
  11. oacp_cli-0.3.2/docs/img/oacp-filesystem-tree.png +0 -0
  12. oacp_cli-0.3.2/docs/img/oacp-fleet-thread.png +0 -0
  13. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/docs/protocol/agent_safety_defaults.md +18 -1
  14. oacp_cli-0.3.2/docs/protocol/autonomy.md +319 -0
  15. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/docs/protocol/credential_scoping.md +1 -1
  16. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/docs/protocol/cross_runtime_sync.md +1 -1
  17. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/docs/protocol/dispatch_states.yaml +20 -0
  18. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/docs/protocol/inbox_outbox.md +47 -3
  19. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/docs/protocol/review_loop.md +1 -1
  20. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/docs/protocol/runtime_capabilities.md +19 -19
  21. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/docs/protocol/session_init.md +1 -1
  22. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/docs/protocol/skills_manifest.yaml +2 -2
  23. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/pyproject.toml +3 -1
  24. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/scripts/_oacp_constants.py +2 -2
  25. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/scripts/add_agent.py +12 -1
  26. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/scripts/agent_profile.py +1 -1
  27. oacp_cli-0.3.2/scripts/autonomy_gate.py +691 -0
  28. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/scripts/init_project_workspace.py +11 -3
  29. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/scripts/oacp_doctor.py +202 -0
  30. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/scripts/send_inbox_message.py +18 -1
  31. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/scripts/setup_runtime.py +63 -5
  32. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/scripts/update_workspace.sh +79 -3
  33. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/scripts/validate_message.py +12 -0
  34. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/templates/agent_card.template.yaml +1 -1
  35. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/templates/agent_profile.template.yaml +1 -1
  36. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/templates/agent_status.template.yaml +1 -1
  37. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/templates/guardrails/secrets_rules.template.md +1 -1
  38. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/templates/inbox_message.template.yaml +11 -0
  39. oacp_cli-0.3.2/templates/receiver_config.template.yaml +19 -0
  40. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/templates/roles/role_baseline.template.md +1 -1
  41. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/templates/runtime_capabilities.yaml +7 -0
  42. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/templates/skills_manifest.template.yaml +3 -3
  43. oacp_cli-0.3.2/tests/conformance/autonomy/README.md +31 -0
  44. oacp_cli-0.3.2/tests/conformance/autonomy/actuals/checkpoint_breach.yaml +6 -0
  45. oacp_cli-0.3.2/tests/conformance/autonomy/actuals/continuation_drift.yaml +6 -0
  46. oacp_cli-0.3.2/tests/conformance/autonomy/actuals/continuation_within.yaml +6 -0
  47. oacp_cli-0.3.2/tests/conformance/autonomy/actuals/top_level_side_effect_keys.yaml +5 -0
  48. oacp_cli-0.3.2/tests/conformance/autonomy/configs/always_pause.yaml +15 -0
  49. oacp_cli-0.3.2/tests/conformance/autonomy/configs/auto_review_continuation_enabled.yaml +15 -0
  50. oacp_cli-0.3.2/tests/conformance/autonomy/configs/auto_review_standard.yaml +15 -0
  51. oacp_cli-0.3.2/tests/conformance/autonomy/configs/auto_review_tight.yaml +15 -0
  52. oacp_cli-0.3.2/tests/conformance/autonomy/configs/malformed_config.yaml +7 -0
  53. oacp_cli-0.3.2/tests/conformance/autonomy/expected/always_pause_task.yaml +8 -0
  54. oacp_cli-0.3.2/tests/conformance/autonomy/expected/ambiguous_scope_pauses.yaml +9 -0
  55. oacp_cli-0.3.2/tests/conformance/autonomy/expected/brainstorm_destructive_pauses.yaml +9 -0
  56. oacp_cli-0.3.2/tests/conformance/autonomy/expected/brainstorm_side_effect_verbs_auto_accepts.yaml +18 -0
  57. oacp_cli-0.3.2/tests/conformance/autonomy/expected/brainstorm_without_profile_auto_accepts.yaml +14 -0
  58. oacp_cli-0.3.2/tests/conformance/autonomy/expected/checkpoint_breach_pauses.yaml +16 -0
  59. oacp_cli-0.3.2/tests/conformance/autonomy/expected/clean_auto_review_task.yaml +15 -0
  60. oacp_cli-0.3.2/tests/conformance/autonomy/expected/continuation_grant_destructive_pauses.yaml +9 -0
  61. oacp_cli-0.3.2/tests/conformance/autonomy/expected/continuation_grant_disabled_pauses.yaml +14 -0
  62. oacp_cli-0.3.2/tests/conformance/autonomy/expected/continuation_grant_drift_pauses.yaml +18 -0
  63. oacp_cli-0.3.2/tests/conformance/autonomy/expected/continuation_grant_enabled_auto_accepts.yaml +26 -0
  64. oacp_cli-0.3.2/tests/conformance/autonomy/expected/continuation_grant_external_uncovered_pauses.yaml +10 -0
  65. oacp_cli-0.3.2/tests/conformance/autonomy/expected/hard_stop_dangerously_skip_permissions_pauses.yaml +9 -0
  66. oacp_cli-0.3.2/tests/conformance/autonomy/expected/hard_stop_external_side_effects_pauses.yaml +9 -0
  67. oacp_cli-0.3.2/tests/conformance/autonomy/expected/hard_stop_force_pauses.yaml +9 -0
  68. oacp_cli-0.3.2/tests/conformance/autonomy/expected/hard_stop_no_verify_pauses.yaml +9 -0
  69. oacp_cli-0.3.2/tests/conformance/autonomy/expected/hard_stop_no_verify_upper_pauses.yaml +9 -0
  70. oacp_cli-0.3.2/tests/conformance/autonomy/expected/hard_stop_rm_rf_pauses.yaml +9 -0
  71. oacp_cli-0.3.2/tests/conformance/autonomy/expected/hard_stop_sensitive_scope_pauses.yaml +9 -0
  72. oacp_cli-0.3.2/tests/conformance/autonomy/expected/malformed_config_pauses.yaml +8 -0
  73. oacp_cli-0.3.2/tests/conformance/autonomy/expected/missing_task_profile_pauses.yaml +8 -0
  74. oacp_cli-0.3.2/tests/conformance/autonomy/expected/path_like_deploy_auto_accepts.yaml +15 -0
  75. oacp_cli-0.3.2/tests/conformance/autonomy/expected/risk_obvious_no_profile_pauses.yaml +8 -0
  76. oacp_cli-0.3.2/tests/conformance/autonomy/expected/side_effect_booleans_pause.yaml +11 -0
  77. oacp_cli-0.3.2/tests/conformance/autonomy/expected/threshold_breach_pauses.yaml +9 -0
  78. oacp_cli-0.3.2/tests/conformance/autonomy/expected/tight_threshold_pauses.yaml +8 -0
  79. oacp_cli-0.3.2/tests/conformance/autonomy/expected/top_level_side_effect_actuals_ignored.yaml +27 -0
  80. oacp_cli-0.3.2/tests/conformance/autonomy/expected/unparsable_task_profile_pauses.yaml +8 -0
  81. oacp_cli-0.3.2/tests/conformance/autonomy/messages/ambiguous_scope.yaml +20 -0
  82. oacp_cli-0.3.2/tests/conformance/autonomy/messages/brainstorm_destructive.yaml +9 -0
  83. oacp_cli-0.3.2/tests/conformance/autonomy/messages/brainstorm_side_effect_verbs.yaml +10 -0
  84. oacp_cli-0.3.2/tests/conformance/autonomy/messages/brainstorm_without_profile.yaml +9 -0
  85. oacp_cli-0.3.2/tests/conformance/autonomy/messages/clean_task.yaml +21 -0
  86. oacp_cli-0.3.2/tests/conformance/autonomy/messages/continuation_grant.yaml +33 -0
  87. oacp_cli-0.3.2/tests/conformance/autonomy/messages/continuation_grant_destructive.yaml +33 -0
  88. oacp_cli-0.3.2/tests/conformance/autonomy/messages/continuation_grant_external_uncovered.yaml +33 -0
  89. oacp_cli-0.3.2/tests/conformance/autonomy/messages/hard_stop_dangerously_skip_permissions.yaml +20 -0
  90. oacp_cli-0.3.2/tests/conformance/autonomy/messages/hard_stop_external_side_effects.yaml +21 -0
  91. oacp_cli-0.3.2/tests/conformance/autonomy/messages/hard_stop_force.yaml +20 -0
  92. oacp_cli-0.3.2/tests/conformance/autonomy/messages/hard_stop_no_verify.yaml +20 -0
  93. oacp_cli-0.3.2/tests/conformance/autonomy/messages/hard_stop_no_verify_upper.yaml +20 -0
  94. oacp_cli-0.3.2/tests/conformance/autonomy/messages/hard_stop_rm_rf.yaml +20 -0
  95. oacp_cli-0.3.2/tests/conformance/autonomy/messages/hard_stop_sensitive_scope.yaml +20 -0
  96. oacp_cli-0.3.2/tests/conformance/autonomy/messages/missing_task_profile.yaml +10 -0
  97. oacp_cli-0.3.2/tests/conformance/autonomy/messages/path_like_deploy.yaml +20 -0
  98. oacp_cli-0.3.2/tests/conformance/autonomy/messages/risk_obvious_no_profile.yaml +9 -0
  99. oacp_cli-0.3.2/tests/conformance/autonomy/messages/side_effect_booleans.yaml +24 -0
  100. oacp_cli-0.3.2/tests/conformance/autonomy/messages/threshold_breach.yaml +20 -0
  101. oacp_cli-0.3.2/tests/conformance/autonomy/messages/unparsable_task_profile.yaml +12 -0
  102. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/tests/test_add_agent.py +27 -6
  103. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/tests/test_agent_profile.py +1 -1
  104. oacp_cli-0.3.2/tests/test_autonomy_conformance_fixtures.py +66 -0
  105. oacp_cli-0.3.2/tests/test_autonomy_gate.py +83 -0
  106. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/tests/test_init_project_workspace.py +35 -2
  107. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/tests/test_oacp_doctor.py +124 -2
  108. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/tests/test_send_inbox_message.py +66 -0
  109. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/tests/test_session_lifecycle_hooks.py +24 -0
  110. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/tests/test_setup_runtime.py +92 -0
  111. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/tests/test_update_workspace.py +45 -0
  112. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/tests/test_validate_agent_card.py +1 -1
  113. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/tests/test_validate_message.py +17 -0
  114. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/.github/workflows/ci.yml +0 -0
  115. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/.github/workflows/release.yml +0 -0
  116. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/.gitignore +0 -0
  117. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/LICENSE +0 -0
  118. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/Makefile +0 -0
  119. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/SECURITY.md +0 -0
  120. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/docs/guides/adoption.md +0 -0
  121. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/docs/guides/doctor.md +0 -0
  122. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/docs/guides/prompt_caching.md +0 -0
  123. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/docs/guides/unified_skill_spec.md +0 -0
  124. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/docs/guides/versioning.md +0 -0
  125. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/docs/protocol/agent_profiles.md +0 -0
  126. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/docs/protocol/mcp_integration.md +0 -0
  127. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/docs/protocol/multi_agent_shared_workspace.md +0 -0
  128. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/docs/protocol/org_memory.md +0 -0
  129. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/docs/protocol/packet_states.yaml +0 -0
  130. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/docs/protocol/task_negotiation.md +0 -0
  131. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/examples/quickstart/README.md +0 -0
  132. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/mcp_servers/oacp_coordinator.py +0 -0
  133. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/oacp/__init__.py +0 -0
  134. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/oacp/cli.py +0 -0
  135. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/scripts/_oacp_env.py +0 -0
  136. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/scripts/check_quality_gate.py +0 -0
  137. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/scripts/codex_session_init.py +0 -0
  138. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/scripts/create_handoff_packet.py +0 -0
  139. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/scripts/handoff_schema.py +0 -0
  140. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/scripts/init_org_memory.py +0 -0
  141. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/scripts/init_packet.sh +0 -0
  142. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/scripts/init_project_workspace.sh +0 -0
  143. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/scripts/memory_archive_common.py +0 -0
  144. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/scripts/memory_cli.py +0 -0
  145. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/scripts/memory_sync.py +0 -0
  146. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/scripts/normalize_findings.py +0 -0
  147. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/scripts/oacp_inbox.py +0 -0
  148. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/scripts/oacp_watch.py +0 -0
  149. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/scripts/preflight.py +0 -0
  150. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/scripts/promote_to_archive.py +0 -0
  151. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/scripts/restore_from_archive.py +0 -0
  152. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/scripts/session_lifecycle_hooks.py +0 -0
  153. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/scripts/validate_agent_card.py +0 -0
  154. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/scripts/write_event.py +0 -0
  155. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/templates/checkpoint.template.md +0 -0
  156. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/templates/claude/agents/role_agent.template.md +0 -0
  157. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/templates/claude/rules/guardrail.template.md +0 -0
  158. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/templates/findings_packet.template.yaml +0 -0
  159. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/templates/github_actions_quality_gate.yaml +0 -0
  160. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/templates/guardrails/coding_standards.template.md +0 -0
  161. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/templates/guardrails/safe_commands.template.md +0 -0
  162. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/templates/handoff_packet.template.yaml +0 -0
  163. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/templates/manual_validation.template.md +0 -0
  164. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/templates/merge_decision.template.md +0 -0
  165. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/templates/org-memory/decisions.md +0 -0
  166. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/templates/org-memory/events/.gitkeep +0 -0
  167. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/templates/org-memory/events/20260317-170120-example-api-convention.md +0 -0
  168. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/templates/org-memory/recent.md +0 -0
  169. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/templates/org-memory/rules.md +0 -0
  170. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/templates/review_packet.template.md +0 -0
  171. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/templates/roles/role_definition.template.yaml +0 -0
  172. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/templates/test_packet.template.md +0 -0
  173. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/tests/test_codex_session_init.py +0 -0
  174. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/tests/test_create_handoff_packet.py +0 -0
  175. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/tests/test_github_workflows.py +0 -0
  176. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/tests/test_handoff_schema.py +0 -0
  177. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/tests/test_memory_archive.py +0 -0
  178. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/tests/test_oacp_cli.py +0 -0
  179. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/tests/test_oacp_constants.py +0 -0
  180. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/tests/test_oacp_coordinator.py +0 -0
  181. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/tests/test_oacp_env.py +0 -0
  182. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/tests/test_oacp_inbox.py +0 -0
  183. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/tests/test_oacp_watch.py +0 -0
  184. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/tests/test_preflight.py +0 -0
  185. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/tests/test_review_loop.py +0 -0
  186. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/tests/test_workspace_discovery.py +0 -0
  187. {oacp_cli-0.3.0 → oacp_cli-0.3.2}/tests/test_write_event.py +0 -0
@@ -5,7 +5,34 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
- ## [Unreleased]
8
+ ## [0.3.2] - 2026-05-26
9
+
10
+ ### Added
11
+
12
+ - Receiver autonomy scope-envelope evaluator with side-effect booleans,
13
+ threshold-checkpoint instrumentation, taxonomy pinning, and default-off
14
+ continuation grants.
15
+ - `cursor` runtime support for agent profiles, agent cards, status validation, sender inference via `OACP_RUNTIME=cursor`, `oacp add-agent --runtime cursor`, and `oacp setup cursor`.
16
+ - `oacp setup cursor --project <project>` now provisions the project-side Cursor agent directory and writes a repo-local `.cursor/rules/oacp.todo.mdc` placeholder while Cursor-owned rules and memory hooks remain deferred.
17
+
18
+ ### Changed
19
+
20
+ - `oacp init` now defaults to `claude,codex,cursor`; Gemini remains supported through `--agents` and `oacp setup gemini`.
21
+ - Receiver autonomy docs and templates now use the current
22
+ `agents/<receiver>/config.yaml` schema.
23
+ - Docs: added an asynchronous `claude -p` on-ramp guide and refreshed the
24
+ quickstart for the current CLI surface.
25
+
26
+ ## [0.3.1] - 2026-05-12
27
+
28
+ ### Added
29
+
30
+ - `auto_review` autonomy mode — an opt-in receiver-side autonomy profile that classifies inbound messages into auto-accept, pause, or hard-stop bands using clean / ambiguous / hard-stop trigger predicates. Configured via `receiver_config.autonomy_mode: auto_review` with `auto_review_profile` selecting `standard` or `tight`. Off by default; existing receivers continue to behave as `always_pause` unless they opt in. Ships with a conformance fixture suite under `tests/conformance/autonomy/` covering clean tasks, ambiguous scope, hard-stop triggers, and malformed config handling.
31
+
32
+ ### Changed
33
+
34
+ - README: refreshed with a hero image and three screenshots illustrating inbox flow, doctor output, and the multi-agent workspace layout. Hub README copy, install path, and command table aligned with the current CLI surface.
35
+ - Docs: link to companion oacp-skills repo from the README and onboarding pages so readers can find the skill library that pairs with the protocol.
9
36
 
10
37
  ## [0.3.0] - 2026-04-29
11
38
 
@@ -131,6 +158,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
131
158
  - Checkout step in github-release workflow job (#19)
132
159
  - Pre-release audit fixes: SHA-pinned actions, dangling doc refs (#15, #16)
133
160
 
161
+ [0.3.2]: https://github.com/kiloloop/oacp/compare/v0.3.1...v0.3.2
162
+ [0.3.1]: https://github.com/kiloloop/oacp/compare/v0.3.0...v0.3.1
134
163
  [0.3.0]: https://github.com/kiloloop/oacp/compare/v0.2.3...v0.3.0
135
164
  [0.2.3]: https://github.com/kiloloop/oacp/compare/v0.2.2...v0.2.3
136
165
  [0.2.2]: https://github.com/kiloloop/oacp/compare/v0.2.1...v0.2.2
@@ -73,6 +73,7 @@ make preflight ARGS="--full"
73
73
  - Packet naming follows `<YYYYMMDD>_<topic>_<owner>_r<round>`.
74
74
  - Scripts use `python3` and avoid external dependencies beyond the standard library (exception: `pyyaml`).
75
75
  - Shell scripts use POSIX-compatible constructs where possible; bash-specific features require bash 3.2+.
76
+ - README images should stay under ~500KB each. Use `docs/img/` for all README assets.
76
77
 
77
78
  ## Commit Messages
78
79
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: oacp-cli
3
- Version: 0.3.0
3
+ Version: 0.3.2
4
4
  Summary: Open Agent Coordination Protocol CLI for file-based multi-agent workflows
5
5
  Project-URL: Homepage, https://github.com/kiloloop/oacp
6
6
  Project-URL: Repository, https://github.com/kiloloop/oacp
@@ -24,30 +24,115 @@ Requires-Python: >=3.9
24
24
  Requires-Dist: pyyaml>=6.0
25
25
  Description-Content-Type: text/markdown
26
26
 
27
- # OACP — Open Agent Coordination Protocol
27
+ # OACP
28
28
 
29
29
  [![PyPI](https://img.shields.io/pypi/v/oacp-cli)](https://pypi.org/project/oacp-cli/)
30
30
  [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](LICENSE)
31
31
  [![Claude Code](https://img.shields.io/badge/Runtime-Claude_Code-6B4FBB.svg)](https://claude.ai/code)
32
32
  [![Codex](https://img.shields.io/badge/Runtime-Codex-74AA9C.svg)](https://openai.com/index/codex/)
33
+ [![Cursor](https://img.shields.io/badge/Runtime-Cursor-222222.svg)](https://cursor.com/)
33
34
  [![PRs Welcome](https://img.shields.io/badge/PRs-Welcome-brightgreen)](https://github.com/kiloloop/oacp/pulls)
34
35
 
35
- > **[Try the quickstart →](examples/quickstart/)** — send your first message to an AI agent in 5 minutes.
36
+ > Coordinate agents *without* the chaos.
36
37
 
37
- **Coordinate agents without the chaos.**
38
+ A file-based protocol for multi-agent AI workflows. Two pillars — cross-agent communication and persistent shared memory. Across runtimes, projects, and machines. No daemons. No central server. Just files.
38
39
 
39
- A file-based protocol for multi-agent engineering workflows. OACP defines the message formats, review processes, and safety rules that let AI agents on different runtimes collaborate through a shared filesystem. Not a framework or SDK — just conventions, YAML schemas, and scripts that any runtime can implement.
40
+ [Read the spec →](SPEC.md)
41
+
42
+ ```bash
43
+ $ uv tool install oacp-cli
44
+ ```
45
+
46
+ ## See it in action
47
+
48
+ <p align="center">
49
+ <img src="docs/img/oacp-cli-demo.png" alt="oacp send + watch terminal demo" width="584" />
50
+ </p>
51
+
52
+ The CLI ships structured tasks between agents and lets you watch the conversation in real time.
53
+
54
+ ## Live agent fleet
55
+
56
+ <p align="center">
57
+ <img src="docs/img/oacp-fleet-thread.png" alt="claude / codex / gemini fleet with PR #42 review thread" width="650" />
58
+ </p>
59
+
60
+ Every multi-agent thread is a sequence of typed messages — `review_request`, `review_feedback`, `review_addressed`, `review_lgtm` — with explicit quality gates.
61
+
62
+ <details>
63
+ <summary>Text version (terminal browsing / grep / a11y)</summary>
64
+
65
+ ```
66
+ PROJECT · my-app ● live
67
+
68
+ C claude code drafting PR #42
69
+ X codex cli reviewing
70
+ G gemini api idle
71
+
72
+ claude → review_request "auth refactor" [codex]
73
+ codex → review_feedback 2 minor, 0 blocking [claude]
74
+ claude → review_addressed [codex]
75
+ codex → review_lgtm [merge]
76
+
77
+ thread #42 · 4 msgs · 8m quality gate ✓
78
+ ```
79
+
80
+ </details>
81
+
82
+ ## Filesystem as protocol
83
+
84
+ <p align="center">
85
+ <img src="docs/img/oacp-filesystem-tree.png" alt="$OACP_HOME directory tree with inbox/outbox/memory/artifacts" width="526" />
86
+ </p>
87
+
88
+ Everything is plain files in `$OACP_HOME`. Agents have `inbox/`, `outbox/`, `dead_letter/`. Projects have shared `memory/` (durable) and per-thread `artifacts/`, `checkpoints/`, `packets/`. Org-wide knowledge lives in `$OACP_HOME/org-memory/`.
89
+
90
+ <details>
91
+ <summary>Text version (terminal browsing / grep / a11y)</summary>
92
+
93
+ ```
94
+ $OACP_HOME/projects/my-app/ ● writing
95
+
96
+ agents/
97
+ claude/
98
+ inbox/ 3 msgs [in]
99
+ outbox/ 12 sent [out]
100
+ dead_letter/ empty [dl]
101
+ codex/
102
+ inbox/ +1 new [in]
103
+
104
+ memory/ shared durable
105
+ project_facts.md 2.4 kb [md]
106
+ decision_log.md edited 3s ago [md]
107
+ open_threads.md 1.1 kb [md]
108
+ known_debt.md 812 b [md]
109
+
110
+ artifacts/ build · research
111
+ checkpoints/ progress
112
+ packets/ review findings
113
+ workspace.json metadata [json]
114
+
115
+ $OACP_HOME/org-memory/ org-wide
116
+ recent.md auto-loaded [⌘]
117
+ rules.md 12 rules [⌘]
118
+ decisions.md org decisions [⌘]
119
+ ```
120
+
121
+ </details>
40
122
 
41
123
  ## Quick Start
42
124
 
43
125
  ```bash
44
- pip install oacp-cli
126
+ uv tool install oacp-cli
45
127
  oacp init my-project --agents alice,bob
46
128
  oacp send my-project --from alice --to bob --type task_request \
47
129
  --subject "Implement feature X" --body "Details here..."
48
130
  ```
49
131
 
50
- When running inside a configured agent runtime, `--from` can be omitted — OACP infers the sender from `OACP_AGENT`, `AGENT_NAME`, or the agent card. See [QUICKSTART.md](QUICKSTART.md) for a full walkthrough.
132
+ By default, `oacp init my-project` creates `claude`, `codex`, and `cursor`
133
+ agents. Pass `--agents` to include Gemini or custom agent names.
134
+
135
+ When running inside a configured agent runtime, `--from` can be omitted — OACP infers the sender from `OACP_AGENT`, `AGENT_NAME`, or the agent card. See [QUICKSTART.md](QUICKSTART.md) for a full walkthrough. Or try the [5-minute quickstart →](examples/quickstart/) to send your first message to a real AI agent.
51
136
 
52
137
  ### What you get
53
138
 
@@ -59,6 +144,14 @@ When running inside a configured agent runtime, `--from` can be omitted — OACP
59
144
  - **Agent safety defaults** — baseline rules for git, credentials, and scope discipline
60
145
  - **Runtime-agnostic** — works with any runtime that reads/writes files
61
146
 
147
+ ## Coming from `claude -p`?
148
+
149
+ `claude -p` runs an agent synchronously and headless — your script blocks while it works, and as of June 15 programmatic usage draws from a separate metered credit.
150
+
151
+ OACP routes the same work to a **standing interactive Claude Code session** instead: `oacp send` queues the task, the session picks it up and runs it async, you're not blocked — and because it's a real interactive session, it stays on your subscription.
152
+
153
+ **[From `claude -p` to an interactive Claude Code session →](docs/from-claude-p.md)** — paste-into-your-agent setup, the honest tradeoffs, and where it fits.
154
+
62
155
  ## Try It Now
63
156
 
64
157
  After installing, run `oacp doctor` to verify your environment is wired up:
@@ -67,6 +160,18 @@ After installing, run `oacp doctor` to verify your environment is wired up:
67
160
  oacp doctor
68
161
  ```
69
162
 
163
+ ## Agent Skills
164
+
165
+ OACP has companion agent skills that teach Claude, Codex, and other
166
+ runtimes how to use the CLI and protocol in real workflows.
167
+
168
+ Install or browse them here:
169
+
170
+ - https://github.com/kiloloop/oacp-skills
171
+
172
+ The core `oacp-cli` package remains the protocol/tooling kernel,
173
+ while `oacp-skills` contains runtime guidance and workflows.
174
+
70
175
  ## Why OACP?
71
176
 
72
177
  When multiple AI agents work on the same codebase, they need a way to:
@@ -148,7 +253,7 @@ uv tool install .
148
253
  |---------|-------------|
149
254
  | `oacp init` | Create a project workspace under `$OACP_HOME/projects/` |
150
255
  | `oacp add-agent` | Add an agent to an existing project workspace |
151
- | `oacp setup` | Generate runtime-specific config files (Claude, Codex, etc.) |
256
+ | `oacp setup` | Generate runtime-specific config files (Claude, Codex, Cursor, Gemini) |
152
257
  | `oacp send` | Send a protocol-compliant inbox message (`--from` auto-inferred) |
153
258
  | `oacp inbox` | List pending messages across agents (table or `--json`) |
154
259
  | `oacp watch` | Emit inbox delta events for one agent across selected projects |
@@ -34,10 +34,10 @@ pipx install oacp-cli
34
34
  Every project gets its own workspace with agent inboxes, shared memory, and packet directories.
35
35
 
36
36
  ```bash
37
- oacp init my-first-project --agents claude,codex,gemini --repo /path/to/repo
37
+ oacp init my-first-project --agents claude,codex,cursor --repo /path/to/repo
38
38
  ```
39
39
 
40
- Or with defaults (agents: claude, codex, gemini):
40
+ Or with defaults (agents: claude, codex, cursor):
41
41
 
42
42
  ```bash
43
43
  oacp init my-first-project
@@ -54,7 +54,7 @@ $OACP_HOME/projects/my-first-project/
54
54
  │ ├── codex/
55
55
  │ │ ├── inbox/
56
56
  │ │ └── outbox/
57
- │ └── gemini/
57
+ │ └── cursor/
58
58
  │ ├── inbox/
59
59
  │ └── outbox/
60
60
  ├── memory/
@@ -72,24 +72,37 @@ $OACP_HOME/projects/my-first-project/
72
72
 
73
73
  ## 4. Connect Your Runtime
74
74
 
75
- Tell your agent runtime where the OACP workspace lives.
75
+ Run the runtime setup command from the repo you want the agent to work in:
76
76
 
77
- **Claude Code** — add the OACP workspace path to your project's `CLAUDE.md`:
77
+ ```bash
78
+ cd /path/to/repo
79
+ oacp setup <runtime> --project my-first-project
80
+ ```
81
+
82
+ For Claude Code:
78
83
 
79
- ```markdown
80
- ## OACP
81
- OACP workspace: $OACP_HOME/projects/my-first-project/
82
- Check inbox: ls $OACP_HOME/projects/my-first-project/agents/claude/inbox/
84
+ ```bash
85
+ oacp setup claude --project my-first-project
83
86
  ```
84
87
 
85
- **Codex** — add the workspace path to your repo's `AGENTS.md`:
88
+ This creates or updates:
89
+
90
+ - `.claude/agents/my-first-project.md`
91
+ - `.claude/skills/`
92
+ - `.claude/hooks/oacp-memory-pull.sh`
93
+ - `.claude/hooks/oacp-memory-push.sh`
94
+ - `.claude/settings.json`
86
95
 
87
- ```markdown
88
- ## OACP
89
- OACP workspace: $OACP_HOME/projects/my-first-project/
96
+ For other supported runtimes, use the same shape:
97
+
98
+ ```bash
99
+ oacp setup codex --project my-first-project
100
+ oacp setup cursor --project my-first-project
101
+ oacp setup gemini --project my-first-project
90
102
  ```
91
103
 
92
- **Other runtimes** — point your agent's system prompt at the workspace path and instruct it to read the standard `memory/` files at session start.
104
+ Cursor support is scaffold-only until Cursor-owned rules land. Cursor sessions
105
+ must set `OACP_RUNTIME=cursor` or pass `--from` explicitly when sending messages.
93
106
 
94
107
  For full runtime setup (role templates, guardrails, skills), see [docs/guides/setup.md](docs/guides/setup.md).
95
108
 
@@ -112,6 +125,12 @@ This writes a YAML file to `agents/codex/inbox/` and a copy to `agents/claude/ou
112
125
 
113
126
  See what's waiting for an agent:
114
127
 
128
+ ```bash
129
+ oacp inbox my-first-project --agent codex
130
+ ```
131
+
132
+ Or inspect the inbox directory directly:
133
+
115
134
  ```bash
116
135
  ls "$OACP_HOME/projects/my-first-project/agents/codex/inbox/"
117
136
  ```
@@ -136,6 +155,17 @@ body: |
136
155
  Add POST /login with JWT auth. See docs/api-spec.md for details.
137
156
  ```
138
157
 
158
+ To watch for new messages from a standing runtime or Monitor, use `oacp watch`.
159
+ A single `oacp watch` run scans once and exits, so keep re-running it when you
160
+ want a persistent worker:
161
+
162
+ ```bash
163
+ while true; do
164
+ oacp watch --project my-first-project --agent codex || true
165
+ sleep 120
166
+ done
167
+ ```
168
+
139
169
  ## 7. Reply
140
170
 
141
171
  Send a response back:
@@ -146,7 +176,7 @@ oacp send my-first-project \
146
176
  --type notification \
147
177
  --subject "Re: Implement login endpoint" \
148
178
  --body "Accepted. Starting implementation on branch codex/login-endpoint." \
149
- --parent-message-id "msg-20260311T120000Z-claude-a1b2"
179
+ --in-reply-to "msg-20260311T120000Z-claude-a1b2"
150
180
  ```
151
181
 
152
182
  ## 8. Validate Messages
@@ -160,13 +190,21 @@ oacp validate \
160
190
 
161
191
  ## 9. Run Health Checks
162
192
 
163
- Verify your environment and workspace are set up correctly:
193
+ Verify your environment first:
164
194
 
165
195
  ```bash
166
196
  oacp doctor
197
+ ```
198
+
199
+ Then check the workspace you just created:
200
+
201
+ ```bash
167
202
  oacp doctor --project my-first-project
168
203
  ```
169
204
 
205
+ Plain `oacp doctor` checks global environment health. The `--project` form also
206
+ checks the project workspace, inboxes, schemas, and agent status files.
207
+
170
208
  ## What's Next?
171
209
 
172
210
  - **Review loop** — Set up structured code review between agents. See [docs/protocol/review_loop.md](docs/protocol/review_loop.md).
@@ -1,27 +1,112 @@
1
- # OACP — Open Agent Coordination Protocol
1
+ # OACP
2
2
 
3
3
  [![PyPI](https://img.shields.io/pypi/v/oacp-cli)](https://pypi.org/project/oacp-cli/)
4
4
  [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](LICENSE)
5
5
  [![Claude Code](https://img.shields.io/badge/Runtime-Claude_Code-6B4FBB.svg)](https://claude.ai/code)
6
6
  [![Codex](https://img.shields.io/badge/Runtime-Codex-74AA9C.svg)](https://openai.com/index/codex/)
7
+ [![Cursor](https://img.shields.io/badge/Runtime-Cursor-222222.svg)](https://cursor.com/)
7
8
  [![PRs Welcome](https://img.shields.io/badge/PRs-Welcome-brightgreen)](https://github.com/kiloloop/oacp/pulls)
8
9
 
9
- > **[Try the quickstart →](examples/quickstart/)** — send your first message to an AI agent in 5 minutes.
10
+ > Coordinate agents *without* the chaos.
10
11
 
11
- **Coordinate agents without the chaos.**
12
+ A file-based protocol for multi-agent AI workflows. Two pillars — cross-agent communication and persistent shared memory. Across runtimes, projects, and machines. No daemons. No central server. Just files.
12
13
 
13
- A file-based protocol for multi-agent engineering workflows. OACP defines the message formats, review processes, and safety rules that let AI agents on different runtimes collaborate through a shared filesystem. Not a framework or SDK — just conventions, YAML schemas, and scripts that any runtime can implement.
14
+ [Read the spec →](SPEC.md)
15
+
16
+ ```bash
17
+ $ uv tool install oacp-cli
18
+ ```
19
+
20
+ ## See it in action
21
+
22
+ <p align="center">
23
+ <img src="docs/img/oacp-cli-demo.png" alt="oacp send + watch terminal demo" width="584" />
24
+ </p>
25
+
26
+ The CLI ships structured tasks between agents and lets you watch the conversation in real time.
27
+
28
+ ## Live agent fleet
29
+
30
+ <p align="center">
31
+ <img src="docs/img/oacp-fleet-thread.png" alt="claude / codex / gemini fleet with PR #42 review thread" width="650" />
32
+ </p>
33
+
34
+ Every multi-agent thread is a sequence of typed messages — `review_request`, `review_feedback`, `review_addressed`, `review_lgtm` — with explicit quality gates.
35
+
36
+ <details>
37
+ <summary>Text version (terminal browsing / grep / a11y)</summary>
38
+
39
+ ```
40
+ PROJECT · my-app ● live
41
+
42
+ C claude code drafting PR #42
43
+ X codex cli reviewing
44
+ G gemini api idle
45
+
46
+ claude → review_request "auth refactor" [codex]
47
+ codex → review_feedback 2 minor, 0 blocking [claude]
48
+ claude → review_addressed [codex]
49
+ codex → review_lgtm [merge]
50
+
51
+ thread #42 · 4 msgs · 8m quality gate ✓
52
+ ```
53
+
54
+ </details>
55
+
56
+ ## Filesystem as protocol
57
+
58
+ <p align="center">
59
+ <img src="docs/img/oacp-filesystem-tree.png" alt="$OACP_HOME directory tree with inbox/outbox/memory/artifacts" width="526" />
60
+ </p>
61
+
62
+ Everything is plain files in `$OACP_HOME`. Agents have `inbox/`, `outbox/`, `dead_letter/`. Projects have shared `memory/` (durable) and per-thread `artifacts/`, `checkpoints/`, `packets/`. Org-wide knowledge lives in `$OACP_HOME/org-memory/`.
63
+
64
+ <details>
65
+ <summary>Text version (terminal browsing / grep / a11y)</summary>
66
+
67
+ ```
68
+ $OACP_HOME/projects/my-app/ ● writing
69
+
70
+ agents/
71
+ claude/
72
+ inbox/ 3 msgs [in]
73
+ outbox/ 12 sent [out]
74
+ dead_letter/ empty [dl]
75
+ codex/
76
+ inbox/ +1 new [in]
77
+
78
+ memory/ shared durable
79
+ project_facts.md 2.4 kb [md]
80
+ decision_log.md edited 3s ago [md]
81
+ open_threads.md 1.1 kb [md]
82
+ known_debt.md 812 b [md]
83
+
84
+ artifacts/ build · research
85
+ checkpoints/ progress
86
+ packets/ review findings
87
+ workspace.json metadata [json]
88
+
89
+ $OACP_HOME/org-memory/ org-wide
90
+ recent.md auto-loaded [⌘]
91
+ rules.md 12 rules [⌘]
92
+ decisions.md org decisions [⌘]
93
+ ```
94
+
95
+ </details>
14
96
 
15
97
  ## Quick Start
16
98
 
17
99
  ```bash
18
- pip install oacp-cli
100
+ uv tool install oacp-cli
19
101
  oacp init my-project --agents alice,bob
20
102
  oacp send my-project --from alice --to bob --type task_request \
21
103
  --subject "Implement feature X" --body "Details here..."
22
104
  ```
23
105
 
24
- When running inside a configured agent runtime, `--from` can be omitted — OACP infers the sender from `OACP_AGENT`, `AGENT_NAME`, or the agent card. See [QUICKSTART.md](QUICKSTART.md) for a full walkthrough.
106
+ By default, `oacp init my-project` creates `claude`, `codex`, and `cursor`
107
+ agents. Pass `--agents` to include Gemini or custom agent names.
108
+
109
+ When running inside a configured agent runtime, `--from` can be omitted — OACP infers the sender from `OACP_AGENT`, `AGENT_NAME`, or the agent card. See [QUICKSTART.md](QUICKSTART.md) for a full walkthrough. Or try the [5-minute quickstart →](examples/quickstart/) to send your first message to a real AI agent.
25
110
 
26
111
  ### What you get
27
112
 
@@ -33,6 +118,14 @@ When running inside a configured agent runtime, `--from` can be omitted — OACP
33
118
  - **Agent safety defaults** — baseline rules for git, credentials, and scope discipline
34
119
  - **Runtime-agnostic** — works with any runtime that reads/writes files
35
120
 
121
+ ## Coming from `claude -p`?
122
+
123
+ `claude -p` runs an agent synchronously and headless — your script blocks while it works, and as of June 15 programmatic usage draws from a separate metered credit.
124
+
125
+ OACP routes the same work to a **standing interactive Claude Code session** instead: `oacp send` queues the task, the session picks it up and runs it async, you're not blocked — and because it's a real interactive session, it stays on your subscription.
126
+
127
+ **[From `claude -p` to an interactive Claude Code session →](docs/from-claude-p.md)** — paste-into-your-agent setup, the honest tradeoffs, and where it fits.
128
+
36
129
  ## Try It Now
37
130
 
38
131
  After installing, run `oacp doctor` to verify your environment is wired up:
@@ -41,6 +134,18 @@ After installing, run `oacp doctor` to verify your environment is wired up:
41
134
  oacp doctor
42
135
  ```
43
136
 
137
+ ## Agent Skills
138
+
139
+ OACP has companion agent skills that teach Claude, Codex, and other
140
+ runtimes how to use the CLI and protocol in real workflows.
141
+
142
+ Install or browse them here:
143
+
144
+ - https://github.com/kiloloop/oacp-skills
145
+
146
+ The core `oacp-cli` package remains the protocol/tooling kernel,
147
+ while `oacp-skills` contains runtime guidance and workflows.
148
+
44
149
  ## Why OACP?
45
150
 
46
151
  When multiple AI agents work on the same codebase, they need a way to:
@@ -122,7 +227,7 @@ uv tool install .
122
227
  |---------|-------------|
123
228
  | `oacp init` | Create a project workspace under `$OACP_HOME/projects/` |
124
229
  | `oacp add-agent` | Add an agent to an existing project workspace |
125
- | `oacp setup` | Generate runtime-specific config files (Claude, Codex, etc.) |
230
+ | `oacp setup` | Generate runtime-specific config files (Claude, Codex, Cursor, Gemini) |
126
231
  | `oacp send` | Send a protocol-compliant inbox message (`--from` auto-inferred) |
127
232
  | `oacp inbox` | List pending messages across agents (table or `--json`) |
128
233
  | `oacp watch` | Emit inbox delta events for one agent across selected projects |
@@ -3,7 +3,7 @@
3
3
  **Version**: 0.2.0
4
4
  **License**: Apache-2.0
5
5
 
6
- This document is the protocol specification for OACP (Open Agent Coordination Protocol) — a file-based coordination layer for multi-agent engineering workflows. It defines the message formats, state machines, review processes, and safety rules that enable agents on different runtimes (Claude, Codex, Gemini, or any future runtime) to collaborate asynchronously through a shared filesystem.
6
+ This document is the protocol specification for OACP (Open Agent Coordination Protocol) — a file-based coordination layer for multi-agent engineering workflows. It defines the message formats, state machines, review processes, and safety rules that enable agents on different runtimes (Claude, Codex, Cursor, Gemini, or any future runtime) to collaborate asynchronously through a shared filesystem.
7
7
 
8
8
  OACP is not a framework or SDK. It is a set of conventions, YAML schemas, and shell scripts that any agent runtime can implement.
9
9
 
@@ -47,7 +47,7 @@ $OACP_HOME/
47
47
  │ │ ├── inbox/
48
48
  │ │ ├── outbox/
49
49
  │ │ └── ...
50
- │ └── gemini/
50
+ │ └── cursor/
51
51
  │ └── ...
52
52
  ├── memory/ # Shared durable memory
53
53
  │ ├── project_facts.md
@@ -79,7 +79,15 @@ Messages are YAML files. Filename convention: `<timestamp>_<from>_<type>.yaml`
79
79
  | `subject` | string | Subject line |
80
80
  | `body` | string | Message content (multi-line markdown) |
81
81
 
82
- **Optional fields:** `expires_at`, `channel`, `related_packet`, `related_pr`, `conversation_id`, `parent_message_id`, `context_keys`
82
+ **Optional fields:** `expires_at`, `channel`, `autonomy_hint`, `related_packet`, `related_pr`, `conversation_id`, `parent_message_id`, `context_keys`
83
+
84
+ `autonomy_hint` is an advisory sender hint, such as `auto_proceed`. Receivers
85
+ remain authoritative: local autonomy config, message content, safety defaults,
86
+ and runtime/tool permissions determine whether a message can be accepted without
87
+ interactive human confirmation.
88
+
89
+ Receiver autonomy is defined by `agents/<receiver>/config.yaml` and the
90
+ scope-envelope contract in [`docs/protocol/autonomy.md`](docs/protocol/autonomy.md).
83
91
 
84
92
  ### Message Types
85
93
 
@@ -164,7 +172,7 @@ received → accepted → working → pr_opened → in_review → done
164
172
 
165
173
  ### Key Transitions
166
174
 
167
- - **`received` → `accepted`**: Agent reads and accepts the task. Ack recommended for P0/P1.
175
+ - **`received` → `accepted`**: Agent reads and accepts the task. Ack recommended for P0/P1. When accepted by autonomy policy, this transition is preserved and records `accepted_by`, `human_confirmed`, `autonomy_mode`, `policy_ref`, `policy_hash`, and `reason_codes`.
168
176
  - **`working` → `pr_opened`**: Agent opens a PR. **Notification required** with `WIP:` subject prefix.
169
177
  - **`pr_opened` → `in_review`**: Agent requests cross-agent review via `review_request`.
170
178
  - **`in_review` → `done`**: PR merged after review approval. Guard: `pr_merged AND review_approved`.
@@ -202,6 +210,29 @@ The dispatcher (e.g., an orchestrator agent) tracks dispatches from its perspect
202
210
  - **Non-PR tasks**: done = deliverable provided or question answered
203
211
  - Final notification must include `merge_sha` (PR tasks) or `results_summary` (non-PR tasks)
204
212
 
213
+ ### Acceptance Metadata
214
+
215
+ Receivers must not collapse `received → accepted`, even when a task is
216
+ auto-accepted. Transition metadata records who or what accepted the task:
217
+
218
+ ```yaml
219
+ transition: received_to_accepted
220
+ accepted_by: autonomy_policy # human | autonomy_policy | --autonomous-flag
221
+ human_confirmed: false
222
+ autonomy_mode: auto_review
223
+ policy_ref: agents/codex/config.yaml
224
+ policy_hash: sha256:...
225
+ reason_codes:
226
+ - task_profile_present
227
+ - risk_threshold_passed
228
+ ```
229
+
230
+ Autonomy audit results use a stable terminal-state taxonomy
231
+ (`done`, `paused`, `blocked`, `superseded`, `error`) plus
232
+ `completion_kind` for detailed outcomes. Post-acceptance scope drift is recorded
233
+ through the threshold checkpoint described in
234
+ [`docs/protocol/autonomy.md`](docs/protocol/autonomy.md).
235
+
205
236
  ### Brainstorm Lifecycle
206
237
 
207
238
  Brainstorm messages follow a simpler lifecycle: `received` → `researching` → `report_delivered`. No PR, no review loop. The dispatcher sees: `Sent` → `In progress` → `Responded`.
@@ -400,7 +431,30 @@ Credential scoping: [`docs/protocol/credential_scoping.md`](docs/protocol/creden
400
431
 
401
432
  ### Baseline Rules
402
433
 
403
- These defaults apply to all agents (Claude, Codex, Gemini) unless a project-level config explicitly overrides a specific rule. Safety defaults can only be made **stricter** by project rules, never relaxed.
434
+ These defaults apply to all agents (Claude, Codex, Cursor, Gemini) unless a project-level config explicitly overrides a specific rule. Safety defaults can only be made **stricter** by project rules, never relaxed.
435
+
436
+ Autonomy introduces a separate receiver acceptance policy layer; it does not
437
+ relax the safety floor. OACP distinguishes three layers:
438
+
439
+ 1. **Safety defaults** — non-negotiable baseline constraints, such as no
440
+ unapproved push/deploy/merge/publish, no destructive commands, no secrets,
441
+ and disciplined staging. Projects may make these stricter, never looser.
442
+ 2. **Receiver acceptance policy** — configurable rules for whether a receiver
443
+ may move a message from `received` to `accepted` without interactive human
444
+ confirmation. This is governed by `agents/<receiver>/config.yaml` and
445
+ [`docs/protocol/autonomy.md`](docs/protocol/autonomy.md).
446
+ 3. **Runtime/tool safety** — runtime-specific permission gates that still apply
447
+ after acceptance, such as editor edit approval, shell sandboxing, or Codex
448
+ approval modes. OACP acceptance never grants runtime tool permissions.
449
+
450
+ Regardless of autonomy mode, receivers must pause on destructive command tokens
451
+ (`rm -rf`, `--force`, `--no-verify`, `--dangerously-skip-permissions`) and on
452
+ actual requests for external side effects or sensitive scope: push, deploy,
453
+ merge, publish, credential rotation, dependency install, auth/config/secrets,
454
+ public repos, pricing/commercial content, or memory SSOT. Profileless message
455
+ types that are explicitly allowed for auto-review may log incidental
456
+ side-effect verb mentions as notes instead of hard stops, but destructive tokens
457
+ and real side-effect requests still pause.
404
458
 
405
459
  #### Git Safety
406
460
 
@@ -596,6 +650,7 @@ Scripts marked **CLI** are exposed as `oacp` subcommands. Scripts marked **scrip
596
650
  | `init_org_memory.py` | Scaffold org-level memory directory | CLI: `oacp org-memory` |
597
651
  | `write_event.py` | Write timestamped events to org-memory | CLI: `oacp write-event` |
598
652
  | `oacp_doctor.py` | Environment and workspace health check (flutter-doctor-style) | CLI: `oacp doctor` |
653
+ | `autonomy_gate.py` | Evaluates receiver autonomy scope-envelope decisions and checkpoint drift | script-only |
599
654
  | `validate_message.py` | Validates inbox/outbox message YAML | CLI: `oacp validate` |
600
655
  | `session_lifecycle_hooks.py` | Session init and close hooks (`init_session`, `close_session`) | CLI-wrapped |
601
656
  | `codex_session_init.py` | Codex startup protocol loader | CLI-wrapped |
@@ -677,6 +732,7 @@ scripts/init_packet.sh <project> <packet_id> # (no CLI wrapper yet)
677
732
  | Shared workspace | [`docs/protocol/multi_agent_shared_workspace.md`](docs/protocol/multi_agent_shared_workspace.md) |
678
733
  | Cross-runtime sync | [`docs/protocol/cross_runtime_sync.md`](docs/protocol/cross_runtime_sync.md) |
679
734
  | Session init | [`docs/protocol/session_init.md`](docs/protocol/session_init.md) |
735
+ | Receiver autonomy | [`docs/protocol/autonomy.md`](docs/protocol/autonomy.md) |
680
736
  | Safety defaults | [`docs/protocol/agent_safety_defaults.md`](docs/protocol/agent_safety_defaults.md) |
681
737
  | Credential scoping | [`docs/protocol/credential_scoping.md`](docs/protocol/credential_scoping.md) |
682
738
  | Runtime capabilities | [`docs/protocol/runtime_capabilities.md`](docs/protocol/runtime_capabilities.md) |