oacp-cli 0.2.1__tar.gz → 0.2.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 (118) hide show
  1. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/CHANGELOG.md +11 -0
  2. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/PKG-INFO +5 -1
  3. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/README.md +4 -0
  4. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/docs/guides/runtime_capability_matrix.md +31 -32
  5. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/docs/protocol/dispatch_states.yaml +1 -1
  6. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/oacp/cli.py +3 -0
  7. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/pyproject.toml +2 -1
  8. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/scripts/codex_session_init.py +2 -2
  9. oacp_cli-0.2.2/scripts/oacp_watch.py +403 -0
  10. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/tests/test_oacp_cli.py +13 -0
  11. oacp_cli-0.2.2/tests/test_oacp_watch.py +345 -0
  12. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/.github/workflows/ci.yml +0 -0
  13. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/.github/workflows/release.yml +0 -0
  14. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/.gitignore +0 -0
  15. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/CONTRIBUTING.md +0 -0
  16. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/LICENSE +0 -0
  17. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/Makefile +0 -0
  18. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/QUICKSTART.md +0 -0
  19. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/SECURITY.md +0 -0
  20. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/SPEC.md +0 -0
  21. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/docs/guides/adoption.md +0 -0
  22. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/docs/guides/doctor.md +0 -0
  23. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/docs/guides/prompt_caching.md +0 -0
  24. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/docs/guides/setup.md +0 -0
  25. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/docs/guides/unified_skill_spec.md +0 -0
  26. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/docs/guides/versioning.md +0 -0
  27. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/docs/protocol/agent_profiles.md +0 -0
  28. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/docs/protocol/agent_safety_defaults.md +0 -0
  29. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/docs/protocol/credential_scoping.md +0 -0
  30. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/docs/protocol/cross_runtime_sync.md +0 -0
  31. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/docs/protocol/inbox_outbox.md +0 -0
  32. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/docs/protocol/mcp_integration.md +0 -0
  33. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/docs/protocol/multi_agent_shared_workspace.md +0 -0
  34. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/docs/protocol/org_memory.md +0 -0
  35. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/docs/protocol/packet_states.yaml +0 -0
  36. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/docs/protocol/review_loop.md +0 -0
  37. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/docs/protocol/runtime_capabilities.md +0 -0
  38. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/docs/protocol/session_init.md +0 -0
  39. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/docs/protocol/skills_manifest.yaml +0 -0
  40. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/docs/protocol/task_negotiation.md +0 -0
  41. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/examples/quickstart/README.md +0 -0
  42. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/mcp_servers/oacp_coordinator.py +0 -0
  43. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/oacp/__init__.py +0 -0
  44. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/scripts/_oacp_constants.py +0 -0
  45. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/scripts/_oacp_env.py +0 -0
  46. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/scripts/add_agent.py +0 -0
  47. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/scripts/agent_profile.py +0 -0
  48. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/scripts/check_quality_gate.py +0 -0
  49. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/scripts/create_handoff_packet.py +0 -0
  50. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/scripts/handoff_schema.py +0 -0
  51. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/scripts/init_org_memory.py +0 -0
  52. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/scripts/init_packet.sh +0 -0
  53. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/scripts/init_project_workspace.py +0 -0
  54. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/scripts/init_project_workspace.sh +0 -0
  55. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/scripts/memory_archive_common.py +0 -0
  56. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/scripts/memory_cli.py +0 -0
  57. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/scripts/normalize_findings.py +0 -0
  58. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/scripts/oacp_doctor.py +0 -0
  59. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/scripts/oacp_inbox.py +0 -0
  60. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/scripts/preflight.py +0 -0
  61. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/scripts/promote_to_archive.py +0 -0
  62. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/scripts/restore_from_archive.py +0 -0
  63. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/scripts/send_inbox_message.py +0 -0
  64. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/scripts/session_lifecycle_hooks.py +0 -0
  65. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/scripts/setup_runtime.py +0 -0
  66. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/scripts/update_workspace.sh +0 -0
  67. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/scripts/validate_agent_card.py +0 -0
  68. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/scripts/validate_message.py +0 -0
  69. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/scripts/write_event.py +0 -0
  70. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/templates/agent_card.template.yaml +0 -0
  71. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/templates/agent_profile.template.yaml +0 -0
  72. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/templates/agent_status.template.yaml +0 -0
  73. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/templates/checkpoint.template.md +0 -0
  74. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/templates/claude/agents/role_agent.template.md +0 -0
  75. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/templates/claude/rules/guardrail.template.md +0 -0
  76. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/templates/findings_packet.template.yaml +0 -0
  77. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/templates/github_actions_quality_gate.yaml +0 -0
  78. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/templates/guardrails/coding_standards.template.md +0 -0
  79. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/templates/guardrails/safe_commands.template.md +0 -0
  80. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/templates/guardrails/secrets_rules.template.md +0 -0
  81. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/templates/handoff_packet.template.yaml +0 -0
  82. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/templates/inbox_message.template.yaml +0 -0
  83. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/templates/manual_validation.template.md +0 -0
  84. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/templates/merge_decision.template.md +0 -0
  85. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/templates/org-memory/decisions.md +0 -0
  86. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/templates/org-memory/events/.gitkeep +0 -0
  87. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/templates/org-memory/events/20260317-170120-example-api-convention.md +0 -0
  88. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/templates/org-memory/recent.md +0 -0
  89. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/templates/org-memory/rules.md +0 -0
  90. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/templates/review_packet.template.md +0 -0
  91. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/templates/roles/role_baseline.template.md +0 -0
  92. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/templates/roles/role_definition.template.yaml +0 -0
  93. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/templates/runtime_capabilities.yaml +0 -0
  94. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/templates/skills_manifest.template.yaml +0 -0
  95. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/templates/test_packet.template.md +0 -0
  96. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/tests/test_add_agent.py +0 -0
  97. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/tests/test_agent_profile.py +0 -0
  98. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/tests/test_codex_session_init.py +0 -0
  99. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/tests/test_create_handoff_packet.py +0 -0
  100. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/tests/test_github_workflows.py +0 -0
  101. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/tests/test_handoff_schema.py +0 -0
  102. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/tests/test_init_project_workspace.py +0 -0
  103. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/tests/test_memory_archive.py +0 -0
  104. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/tests/test_oacp_constants.py +0 -0
  105. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/tests/test_oacp_coordinator.py +0 -0
  106. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/tests/test_oacp_doctor.py +0 -0
  107. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/tests/test_oacp_env.py +0 -0
  108. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/tests/test_oacp_inbox.py +0 -0
  109. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/tests/test_preflight.py +0 -0
  110. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/tests/test_review_loop.py +0 -0
  111. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/tests/test_send_inbox_message.py +0 -0
  112. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/tests/test_session_lifecycle_hooks.py +0 -0
  113. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/tests/test_setup_runtime.py +0 -0
  114. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/tests/test_update_workspace.py +0 -0
  115. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/tests/test_validate_agent_card.py +0 -0
  116. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/tests/test_validate_message.py +0 -0
  117. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/tests/test_workspace_discovery.py +0 -0
  118. {oacp_cli-0.2.1 → oacp_cli-0.2.2}/tests/test_write_event.py +0 -0
@@ -5,6 +5,16 @@ 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
+ ## [0.2.2] - 2026-04-17
9
+
10
+ ### Added
11
+
12
+ - `oacp watch` — monitor-friendly inbox/outbox watcher with structured output and partial-progress preservation on errors
13
+
14
+ ### Changed
15
+
16
+ - Docs: refreshed cross-runtime capability matrix and public-skill parity framing
17
+
8
18
  ## [0.2.1] - 2026-03-22
9
19
 
10
20
  ### Fixed
@@ -100,6 +110,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
100
110
  - Checkout step in github-release workflow job (#19)
101
111
  - Pre-release audit fixes: SHA-pinned actions, dangling doc refs (#15, #16)
102
112
 
113
+ [0.2.2]: https://github.com/kiloloop/oacp/compare/v0.2.1...v0.2.2
103
114
  [0.2.1]: https://github.com/kiloloop/oacp/compare/v0.2.0...v0.2.1
104
115
  [0.2.0]: https://github.com/kiloloop/oacp/compare/v0.1.9...v0.2.0
105
116
  [0.1.9]: https://github.com/kiloloop/oacp/compare/v0.1.2...v0.1.9
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: oacp-cli
3
- Version: 0.2.1
3
+ Version: 0.2.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
@@ -54,6 +54,7 @@ When running inside a configured agent runtime, `--from` can be omitted — OACP
54
54
  - **Inbox/outbox messaging** — async YAML messages with threading, broadcast, and expiry
55
55
  - **Structured review loop** — severity-graded findings, quality gates, multi-round review
56
56
  - **Inbox CLI** — `oacp inbox` lists pending messages across agents with table or `--json` output
57
+ - **Watch CLI** — `oacp watch` emits inbox delta events for Claude Monitor or shell loops
57
58
  - **Durable shared memory** — project facts, decisions, and known debt with active/archive split
58
59
  - **Agent safety defaults** — baseline rules for git, credentials, and scope discipline
59
60
  - **Runtime-agnostic** — works with any runtime that reads/writes files
@@ -150,6 +151,7 @@ uv tool install .
150
151
  | `oacp setup` | Generate runtime-specific config files (Claude, Codex, etc.) |
151
152
  | `oacp send` | Send a protocol-compliant inbox message (`--from` auto-inferred) |
152
153
  | `oacp inbox` | List pending messages across agents (table or `--json`) |
154
+ | `oacp watch` | Emit inbox delta events for one agent across selected projects |
153
155
  | `oacp memory` | Archive or restore project memory files |
154
156
  | `oacp agent` | Manage global agent profiles (`init`, `show`, `list`) |
155
157
  | `oacp org-memory` | Initialize org-level memory at `$OACP_HOME/org-memory/` |
@@ -163,6 +165,8 @@ uv tool install .
163
165
 
164
166
  **`oacp send`**: `--in-reply-to`, `--expires`, `--body-file`, `--channel`, `--dry-run`, `--json`, `--quiet`
165
167
 
168
+ **`oacp watch`**: `--agent`, repeatable `--project`, `--all-projects`, `--json`
169
+
166
170
  **`oacp doctor`**: `--fix` (auto-fix safe issues), `--json`, `-o/--output`
167
171
 
168
172
  **`oacp memory`**: `oacp memory archive <project> <file>`, `oacp memory restore <project> <file>`
@@ -28,6 +28,7 @@ When running inside a configured agent runtime, `--from` can be omitted — OACP
28
28
  - **Inbox/outbox messaging** — async YAML messages with threading, broadcast, and expiry
29
29
  - **Structured review loop** — severity-graded findings, quality gates, multi-round review
30
30
  - **Inbox CLI** — `oacp inbox` lists pending messages across agents with table or `--json` output
31
+ - **Watch CLI** — `oacp watch` emits inbox delta events for Claude Monitor or shell loops
31
32
  - **Durable shared memory** — project facts, decisions, and known debt with active/archive split
32
33
  - **Agent safety defaults** — baseline rules for git, credentials, and scope discipline
33
34
  - **Runtime-agnostic** — works with any runtime that reads/writes files
@@ -124,6 +125,7 @@ uv tool install .
124
125
  | `oacp setup` | Generate runtime-specific config files (Claude, Codex, etc.) |
125
126
  | `oacp send` | Send a protocol-compliant inbox message (`--from` auto-inferred) |
126
127
  | `oacp inbox` | List pending messages across agents (table or `--json`) |
128
+ | `oacp watch` | Emit inbox delta events for one agent across selected projects |
127
129
  | `oacp memory` | Archive or restore project memory files |
128
130
  | `oacp agent` | Manage global agent profiles (`init`, `show`, `list`) |
129
131
  | `oacp org-memory` | Initialize org-level memory at `$OACP_HOME/org-memory/` |
@@ -137,6 +139,8 @@ uv tool install .
137
139
 
138
140
  **`oacp send`**: `--in-reply-to`, `--expires`, `--body-file`, `--channel`, `--dry-run`, `--json`, `--quiet`
139
141
 
142
+ **`oacp watch`**: `--agent`, repeatable `--project`, `--all-projects`, `--json`
143
+
140
144
  **`oacp doctor`**: `--fix` (auto-fix safe issues), `--json`, `-o/--output`
141
145
 
142
146
  **`oacp memory`**: `oacp memory archive <project> <file>`, `oacp memory restore <project> <file>`
@@ -1,8 +1,10 @@
1
1
  # Cross-Runtime Parity Matrix
2
2
 
3
- **Date**: 2026-03-16
3
+ **Date**: 2026-04-17
4
4
 
5
- This is a capability comparison across 3 agent runtimes (Claude Code, Codex, Gemini), compiled from each runtime's self-report. Use this as a reference when deciding which agent to assign for a given task.
5
+ This is a capability comparison across 3 agent runtimes (Claude Code, Codex, Gemini), compiled from each runtime's self-report and current runtime changelogs. Use this as a reference when deciding which agent to assign for a given task.
6
+
7
+ Codex was last checked against the official Codex changelog entries for app update `26.415` (2026-04-16) and `Codex CLI 0.121.0` (2026-04-15).
6
8
 
7
9
  ---
8
10
 
@@ -13,15 +15,15 @@ This is a capability comparison across 3 agent runtimes (Claude Code, Codex, Gem
13
15
  | Spawn background tasks | Yes — Task tool + Bash `run_in_background` | Yes — shell background processes | Yes — `run_command` async mode |
14
16
  | Spawn subagents | Yes — typed agents (Explore, Plan, general-purpose, code-reviewer, etc.) | Yes — native `spawn_agent` lifecycle with `default`, `explorer`, and `worker` agents | Partial — `browser_subagent` only |
15
17
  | Parallel agent teams | Yes — TeamCreate, task lists, SendMessage, broadcast | Partial — parallel spawned agents are supported, but there is no team/task-list primitive | No — parallel tool calls but no independent agent instances |
16
- | MCP tools | Yes — extensible via MCP servers | Partial — APIs available, no servers configured | Yes — MCP server support |
18
+ | MCP tools | Yes — extensible via MCP servers | Yes — MCP/plugin support depends on configured servers and marketplaces | Yes — MCP server support |
17
19
  | Web search | Yes — native WebSearch tool | Yes — web search/fetch tools | Yes — native `search_web` tool |
18
- | Browser interaction | Partial — WebFetch (read-only, HTML→markdown) | Partial — web fetch/open/click flow, not full automation | Yes — full browser control (click, type, navigate, screenshot, video) |
20
+ | Browser interaction | Partial — WebFetch (read-only, HTML→markdown) | Partial — web tools plus early in-app browser for local/public pages without sign-in | Yes — full browser control (click, type, navigate, screenshot, video) |
19
21
  | File system access | Sandboxed — configurable read/write allowlists | Policy-dependent per session | Full — unrestricted |
20
22
  | Git operations | Yes — via Bash (may need sandbox configuration) | Yes — native | Yes — via shell |
21
23
  | GitHub CLI (gh) | Yes — via Bash (may need sandbox configuration) | Yes — authenticated | Yes — native |
22
- | Session memory | Strong — auto-loaded MEMORY.md + optional MCP memory | Partial — conversation context + manual file-based memory; no built-in persistent memory layer | Partial — Knowledge Items (not directly writable), conversation logs |
24
+ | Session memory | Strong — auto-loaded MEMORY.md + optional MCP memory | Partial — app memories where available plus OACP file memory; app memories are not protocol SSOT | Partial — Knowledge Items (not directly writable), conversation logs |
23
25
  | Interactive mode | Yes — CLI chat with permissions, plan mode | Yes — desktop app | Yes — chat with task UI, artifacts |
24
- | Context window | ~200k (auto-compaction extends indefinitely) | Not directly exposed; practically finite | ~1M tokens |
26
+ | Context window | ~1M with Opus 4.7 (auto-compaction extends indefinitely) | Not directly exposed; practically finite | ~1M tokens |
25
27
  | Cost model | Token-based, visible in statusline | Not surfaced in runtime | Token-based |
26
28
  | Sandbox restrictions | Yes — configurable allowlists | Session-dependent | None — full system access |
27
29
 
@@ -42,27 +44,23 @@ This is a capability comparison across 3 agent runtimes (Claude Code, Codex, Gem
42
44
  | Code outline navigation | Gemini | `view_file_outline`, `view_code_item` for structured exploration |
43
45
  | PTY / terminal stdin | Codex, Gemini | Codex: native PTY; Gemini: `send_command_input` (Claude lacks stdin support) |
44
46
  | `apply_patch` editing | Codex | Grammar-based file edits |
45
- | Automation scheduling | Codex | Desktop app can schedule tasks (with user request) |
47
+ | App-level computer use | Codex | macOS app, simulator, and GUI-only workflows; unavailable in EEA, UK, and Switzerland at launch |
48
+ | App-level artifact review | Codex | Sidebar preview for generated PDFs, spreadsheets, documents, and presentations |
49
+ | App-level PR review | Codex | PR sidebar can inspect changed files, review comments, and follow-up fixes |
46
50
 
47
51
  ---
48
52
 
49
- ## 3. Installed Skills/Workflows Comparison
50
-
51
- | Skill | Claude | Codex | Gemini |
52
- | ---------------------- | ------- | -------- | -------------------- |
53
- | `review-loop-reviewer` | Working | Working | Working |
54
- | `review-loop-author` | Working | Untested | Working |
55
- | `check-inbox` | Working | Working | Working (convention) |
56
- | `debrief` | Working | Working | Working |
57
- | `sync` | Working | Untested | N/A |
58
- | `blitz` | Working | N/A | N/A |
59
- | `team-stats` | Working | N/A | N/A |
60
- | `worktree-workflow` | Working | N/A | N/A |
61
- | `send-message` | Working | N/A | N/A |
62
- | `claude-mem` skills | Working | N/A | N/A |
63
- | `gh-address-comments` | N/A | Untested | N/A |
64
- | `lint-and-validate` | N/A | Untested | N/A |
65
- | `beads` | N/A | Untested | N/A |
53
+ ## 3. Public OACP Skills Coverage
54
+
55
+ Scope: skills shipped in [`kiloloop/oacp-skills`](https://github.com/kiloloop/oacp-skills). Private/local skills (debrief, sync, blitz, team-stats, worktree-workflow, send-message, etc.) are intentionally not tracked here — this table is meant as a cross-runtime parity signal for distributable skills only.
56
+
57
+ | Skill | Claude | Codex | Gemini |
58
+ | ---------------------- | ------- | -------- | ------------ |
59
+ | `check-inbox` | Working | Working | Not packaged |
60
+ | `doctor` | Working | Working | Not packaged |
61
+ | `review-loop-reviewer` | Working | Working | Not packaged |
62
+ | `review-loop-author` | Working | Working | Not packaged |
63
+ | `self-improve` | Working | Working | Not packaged |
66
64
 
67
65
  ---
68
66
 
@@ -70,8 +68,8 @@ This is a capability comparison across 3 agent runtimes (Claude Code, Codex, Gem
70
68
 
71
69
  | Dimension | Claude | Codex | Gemini |
72
70
  | --------------- | ---------------------------------------------------------------------- | ----------------------------------------------------------------------- | -------------------------------------------------------------------- |
73
- | Best at | Orchestration, multi-agent teams, persistent memory, plan-then-execute | Terminal-native execution, fast iterative patching, protocol discipline | Web research, browser automation, visual verification, large context |
74
- | Ideal task type | Team coordination, complex multi-file refactors, long-running sessions | Shell-heavy workflows, targeted file edits, deterministic scripts | External research, UI testing, document review, MCP integrations |
71
+ | Best at | Orchestration, multi-agent teams, persistent memory, plan-then-execute | Terminal-native execution, fast iterative patching, app-assisted PR/artifact review, protocol discipline | Web research, browser automation, visual verification, large context |
72
+ | Ideal task type | Team coordination, complex multi-file refactors, long-running sessions | Shell-heavy workflows, targeted file edits, deterministic scripts, PR follow-up, artifact review | External research, UI testing, document review, MCP integrations |
75
73
  | Cost profile | Flexible (haiku subagents for cheap tasks, opus for complex) | Not directly visible | Token-based, web search has additional costs |
76
74
 
77
75
  ---
@@ -81,9 +79,9 @@ This is a capability comparison across 3 agent runtimes (Claude Code, Codex, Gem
81
79
  | Limitation | Claude | Codex | Gemini |
82
80
  | ----------------------------- | ----------------------------- | -------------------------------------------------------------- | ---------------------- |
83
81
  | No subagents | — | Yes | Partial (browser only) |
84
- | No browser automation | Yes (read-only) | Partial | — |
82
+ | No browser automation | Yes (read-only) | Partial (in-app browser is not full automation and excludes sign-in flows) | — |
85
83
  | No image generation | Yes | Yes | — |
86
- | No persistent writable memory | — | Partial (no built-in persistent memory, file-based workaround) | Yes |
84
+ | No persistent writable memory | — | Partial (app memories are not a replacement for OACP durable memory) | Yes |
87
85
  | Sandbox friction | Yes (configurable) | Session-dependent | — |
88
86
  | No team primitive | — | Yes | Yes |
89
87
  | Context limits | Auto-compaction mitigates | Yes (no compaction) | Large but finite |
@@ -101,9 +99,9 @@ These are the highest-impact gaps where one runtime's limitation blocks effectiv
101
99
  | No team orchestration | Codex, Gemini | Cannot run parallel agent teams | Agent cards — let runtimes discover and delegate to capable peers |
102
100
  | Memory asymmetry | Codex (partial), Gemini (KIs only) | Cross-session context degrades without MEMORY.md equivalent | Standardize memory protocol; each runtime implements its own persistence layer |
103
101
  | Sandbox blocks git/gh | Claude | Every git/gh call needs sandbox configuration | Configure sandbox allowlists or disable sandbox for specific commands |
104
- | No browser for Claude/Codex | Claude, Codex | Cannot visually verify UIs or do browser-based testing | Delegate browser tasks to Gemini; or add MCP browser server |
102
+ | Full browser automation gap | Claude, Codex | Claude is read-only; Codex has early browser review but not full automation or sign-in flows | Delegate full browser tasks to Gemini; use Codex in-app browser for local/public page review |
105
103
  | Reviewer cost | All (especially Claude) | High cost for single PR review with polling pattern | Stateless reviewer rounds — one round per invocation |
106
- | Skill parity | Codex, Gemini | Many skills are Claude-only (blitz, team-stats, worktree-workflow) | Unified skill spec + install guide per runtime |
104
+ | Public skill coverage | Gemini | `kiloloop/oacp-skills` ships `claude/` and `codex/` variants for all 5 public skills; no `gemini/` variants — Gemini users must rely on convention-based adoption | Add `gemini/` variants to each public skill, or document the convention-based pattern as a first-class install path |
107
105
 
108
106
  ---
109
107
 
@@ -113,15 +111,16 @@ These are the highest-impact gaps where one runtime's limitation blocks effectiv
113
111
  | ---------------------------- | -------------------------------- | ------------------------------------------ | --------------------------------------------- |
114
112
  | Max parallel tool calls | ~10+ | Yes (parallel independent calls) | ~10 (practical) |
115
113
  | Hooks system | Yes (pre/post tool call hooks) | No | No |
114
+ | Automation scheduling | Yes (`CronCreate`, `ScheduleWakeup`, `/loop`, `/schedule` skills) | Yes (desktop app thread automations wake a thread on a schedule, with user request) | No |
116
115
  | Notebook editing | Yes (NotebookEdit tool) | No | No |
117
116
  | PDF reading | Yes (max 20 pages/request) | No native tool | Via `read_url_content` |
118
117
  | Image reading (multimodal) | Yes | Yes (desktop app local image/view support) | Yes |
119
- | Artifact system | No | No | Yes (task.md, implementation plans) |
118
+ | Artifact system | No | Yes (sidebar preview for generated files) | Yes (task.md, implementation plans) |
120
119
  | Video recording | No | No | Yes (WebP via browser) |
121
120
  | Multi-file editing primitive | Edit tool (one file at a time) | `apply_patch` (one file) | `multi_replace_file_content` (non-contiguous) |
122
121
  | Workflow file format | SKILL.md with YAML frontmatter | SKILL.md with YAML frontmatter | Markdown with YAML frontmatter |
123
122
  | Policy visibility at runtime | Partial (sandbox config visible) | Yes (session policy in system context) | Yes (`SafeToAutoRun` flags) |
124
- | Long-running shell sessions | Bash tool (no stdin) | Yes (PTY + stdin) | Yes (`send_command_input`) |
123
+ | Long-running shell sessions | Bash tool (no stdin) | Yes (PTY + stdin; multiple terminals in app) | Yes (`send_command_input`) |
125
124
 
126
125
  ---
127
126
 
@@ -206,7 +206,7 @@ agent_transitions:
206
206
  dispatcher_states:
207
207
  sent:
208
208
  description: "Dispatch message written to agent inbox"
209
- trigger: "send_inbox_message.py completes"
209
+ trigger: "`oacp send` completes"
210
210
 
211
211
  ackd:
212
212
  description: "Agent acknowledged receipt"
@@ -23,6 +23,7 @@ Commands:
23
23
  add-agent Add an agent to an existing project workspace
24
24
  agent Manage global agent profiles (init, show, list)
25
25
  inbox List pending inbox messages
26
+ watch Emit inbox delta events for Monitor-friendly polling
26
27
  memory Archive or restore project memory files
27
28
  setup Generate runtime-specific config files in a repo
28
29
  send Send a protocol-compliant inbox message
@@ -36,6 +37,7 @@ Examples:
36
37
  oacp init my-project --agents claude,codex
37
38
  oacp add-agent my-project alice --runtime claude
38
39
  oacp inbox my-project --agent claude
40
+ oacp watch --agent claude --project my-project --json
39
41
  oacp memory archive my-project research_notes.md
40
42
  oacp setup claude --project my-project
41
43
  oacp send my-project --to iris --type notification --subject "Done" --body "Completed"
@@ -50,6 +52,7 @@ SCRIPT_NAMES = {
50
52
  "add-agent": "add_agent.py",
51
53
  "agent": "agent_profile.py",
52
54
  "inbox": "oacp_inbox.py",
55
+ "watch": "oacp_watch.py",
53
56
  "memory": "memory_cli.py",
54
57
  "setup": "setup_runtime.py",
55
58
  "send": "send_inbox_message.py",
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "oacp-cli"
7
- version = "0.2.1"
7
+ version = "0.2.2"
8
8
  description = "Open Agent Coordination Protocol CLI for file-based multi-agent workflows"
9
9
  readme = "README.md"
10
10
  license = "Apache-2.0"
@@ -61,6 +61,7 @@ packages = ["oacp"]
61
61
  "scripts/add_agent.py" = "oacp/_scripts/add_agent.py"
62
62
  "scripts/agent_profile.py" = "oacp/_scripts/agent_profile.py"
63
63
  "scripts/oacp_inbox.py" = "oacp/_scripts/oacp_inbox.py"
64
+ "scripts/oacp_watch.py" = "oacp/_scripts/oacp_watch.py"
64
65
  "scripts/memory_cli.py" = "oacp/_scripts/memory_cli.py"
65
66
  "scripts/memory_archive_common.py" = "oacp/_scripts/memory_archive_common.py"
66
67
  "scripts/promote_to_archive.py" = "oacp/_scripts/promote_to_archive.py"
@@ -91,9 +91,9 @@ def _project_name_from_workspace_marker(cwd: Path, name: str) -> Optional[str]:
91
91
 
92
92
  def _detect_project_name(cwd: Path) -> Optional[str]:
93
93
  for resolver in (
94
- lambda: _project_name_from_agent_hub(cwd),
95
94
  lambda: _project_name_from_workspace_marker(cwd, "workspace.json"),
96
95
  lambda: _project_name_from_workspace_marker(cwd, ".oacp"),
96
+ lambda: _project_name_from_agent_hub(cwd),
97
97
  ):
98
98
  project = resolver()
99
99
  if project:
@@ -285,7 +285,7 @@ def run_session_init(
285
285
  for name in MEMORY_FILES:
286
286
  memory_results[name] = {"path": "", "state": "skipped", "bytes": 0}
287
287
  status_result = {"path": "", "state": "no-project"}
288
- warnings.append("no project detected from .agent-hub, workspace.json, .oacp, and --project not provided")
288
+ warnings.append("no project detected from workspace.json, .oacp, .agent-hub, and --project not provided")
289
289
 
290
290
  for name in PROTOCOL_FILES:
291
291
  state = protocol_results[name]["state"]