agentirc-cli 4.5.1__tar.gz → 5.0.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 (348) hide show
  1. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/CHANGELOG.md +32 -0
  2. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/PKG-INFO +1 -1
  3. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/cli/mesh.py +14 -2
  4. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/cli/shared/display.py +28 -9
  5. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/acp/daemon.py +1 -0
  6. agentirc_cli-5.0.0/culture/clients/acp/skill/SKILL.md +200 -0
  7. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/claude/daemon.py +1 -0
  8. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/codex/daemon.py +1 -0
  9. agentirc_cli-5.0.0/culture/clients/codex/skill/SKILL.md +200 -0
  10. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/copilot/daemon.py +1 -0
  11. agentirc_cli-5.0.0/culture/clients/copilot/skill/SKILL.md +200 -0
  12. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/learn_prompt.py +32 -1
  13. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/overview/collector.py +29 -1
  14. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/overview/model.py +2 -1
  15. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/overview/renderer_text.py +37 -18
  16. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/overview/renderer_web.py +7 -1
  17. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/skills/culture/SKILL.md +77 -2
  18. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/architecture/agent-harness-spec.md +35 -1
  19. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/architecture/layer5-agent-harness.md +3 -3
  20. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/culture-cli.md +16 -16
  21. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/getting-started.md +14 -14
  22. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/operations/bots.md +7 -1
  23. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/operations/cli.md +86 -67
  24. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/operations/overview.md +8 -8
  25. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/packages/agent-harness/daemon.py +2 -0
  26. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/plugins/claude-code/skills/culture/SKILL.md +79 -4
  27. agentirc_cli-5.0.0/plugins/codex/skills/culture-irc/SKILL.md +200 -0
  28. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/pyproject.toml +1 -1
  29. agentirc_cli-5.0.0/tests/test_display.py +226 -0
  30. agentirc_cli-5.0.0/tests/test_learn_prompt.py +53 -0
  31. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_overview_collector.py +45 -1
  32. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_overview_model.py +41 -0
  33. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_overview_renderer.py +109 -0
  34. agentirc_cli-5.0.0/tests/test_skill_docs.py +127 -0
  35. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/uv.lock +1 -1
  36. agentirc_cli-4.5.1/culture/clients/acp/skill/SKILL.md +0 -69
  37. agentirc_cli-4.5.1/culture/clients/codex/skill/SKILL.md +0 -69
  38. agentirc_cli-4.5.1/culture/clients/copilot/skill/SKILL.md +0 -69
  39. agentirc_cli-4.5.1/plugins/codex/skills/culture-irc/SKILL.md +0 -69
  40. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/.claude/skills/pr-review/SKILL.md +0 -0
  41. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/.claude/skills/run-tests/SKILL.md +0 -0
  42. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/.claude/skills/run-tests/scripts/test.sh +0 -0
  43. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/.flake8 +0 -0
  44. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/.github/workflows/pages.yml +0 -0
  45. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/.github/workflows/publish.yml +0 -0
  46. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/.github/workflows/security-checks.yml +0 -0
  47. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/.github/workflows/tests.yml +0 -0
  48. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/.gitignore +0 -0
  49. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/.markdownlint-cli2.yaml +0 -0
  50. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/.pr_agent.toml +0 -0
  51. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/.pre-commit-config.yaml +0 -0
  52. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/.pylintrc +0 -0
  53. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/CLAUDE.md +0 -0
  54. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/CNAME +0 -0
  55. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/Gemfile +0 -0
  56. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/Gemfile.lock +0 -0
  57. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/LICENSE +0 -0
  58. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/README.md +0 -0
  59. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/SECURITY.md +0 -0
  60. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/_config.yml +0 -0
  61. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/_includes/head_custom.html +0 -0
  62. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/_sass/color_schemes/anthropic.scss +0 -0
  63. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/_sass/custom/custom.scss +0 -0
  64. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/assets/images/apple-touch-icon.png +0 -0
  65. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/assets/images/favicon-16x16.png +0 -0
  66. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/assets/images/favicon-32x32.png +0 -0
  67. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/assets/images/favicon.ico +0 -0
  68. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/__init__.py +0 -0
  69. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/__main__.py +0 -0
  70. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/aio.py +0 -0
  71. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/bots/__init__.py +0 -0
  72. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/bots/bot.py +0 -0
  73. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/bots/bot_manager.py +0 -0
  74. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/bots/config.py +0 -0
  75. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/bots/http_listener.py +0 -0
  76. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/bots/template_engine.py +0 -0
  77. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/bots/virtual_client.py +0 -0
  78. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/cli/__init__.py +0 -0
  79. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/cli/agent.py +0 -0
  80. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/cli/bot.py +0 -0
  81. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/cli/channel.py +0 -0
  82. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/cli/server.py +0 -0
  83. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/cli/shared/__init__.py +0 -0
  84. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/cli/shared/constants.py +0 -0
  85. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/cli/shared/formatting.py +0 -0
  86. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/cli/shared/ipc.py +0 -0
  87. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/cli/shared/mesh.py +0 -0
  88. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/cli/shared/process.py +0 -0
  89. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/cli/skills.py +0 -0
  90. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/__init__.py +0 -0
  91. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/acp/__init__.py +0 -0
  92. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/acp/agent_runner.py +0 -0
  93. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/acp/config.py +0 -0
  94. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/acp/culture.yaml +0 -0
  95. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/acp/ipc.py +0 -0
  96. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/acp/irc_transport.py +0 -0
  97. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/acp/message_buffer.py +0 -0
  98. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/acp/skill/__init__.py +0 -0
  99. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/acp/skill/irc_client.py +0 -0
  100. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/acp/socket_server.py +0 -0
  101. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/acp/supervisor.py +0 -0
  102. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/acp/webhook.py +0 -0
  103. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/claude/__init__.py +0 -0
  104. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/claude/__main__.py +0 -0
  105. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/claude/agent_runner.py +0 -0
  106. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/claude/config.py +0 -0
  107. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/claude/culture.yaml +0 -0
  108. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/claude/ipc.py +0 -0
  109. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/claude/irc_transport.py +0 -0
  110. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/claude/message_buffer.py +0 -0
  111. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/claude/skill/SKILL.md +0 -0
  112. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/claude/skill/__init__.py +0 -0
  113. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/claude/skill/irc_client.py +0 -0
  114. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/claude/socket_server.py +0 -0
  115. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/claude/supervisor.py +0 -0
  116. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/claude/webhook.py +0 -0
  117. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/codex/__init__.py +0 -0
  118. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/codex/agent_runner.py +0 -0
  119. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/codex/config.py +0 -0
  120. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/codex/culture.yaml +0 -0
  121. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/codex/ipc.py +0 -0
  122. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/codex/irc_transport.py +0 -0
  123. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/codex/message_buffer.py +0 -0
  124. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/codex/skill/__init__.py +0 -0
  125. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/codex/skill/irc_client.py +0 -0
  126. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/codex/socket_server.py +0 -0
  127. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/codex/supervisor.py +0 -0
  128. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/codex/webhook.py +0 -0
  129. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/copilot/__init__.py +0 -0
  130. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/copilot/agent_runner.py +0 -0
  131. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/copilot/config.py +0 -0
  132. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/copilot/culture.yaml +0 -0
  133. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/copilot/ipc.py +0 -0
  134. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/copilot/irc_transport.py +0 -0
  135. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/copilot/message_buffer.py +0 -0
  136. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/copilot/skill/__init__.py +0 -0
  137. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/copilot/skill/irc_client.py +0 -0
  138. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/copilot/socket_server.py +0 -0
  139. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/copilot/supervisor.py +0 -0
  140. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/clients/copilot/webhook.py +0 -0
  141. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/config.py +0 -0
  142. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/console/__init__.py +0 -0
  143. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/console/app.py +0 -0
  144. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/console/client.py +0 -0
  145. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/console/commands.py +0 -0
  146. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/console/widgets/__init__.py +0 -0
  147. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/console/widgets/chat.py +0 -0
  148. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/console/widgets/info_panel.py +0 -0
  149. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/console/widgets/sidebar.py +0 -0
  150. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/credentials.py +0 -0
  151. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/formatting.py +0 -0
  152. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/mesh_config.py +0 -0
  153. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/observer.py +0 -0
  154. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/overview/__init__.py +0 -0
  155. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/overview/web/style.css +0 -0
  156. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/persistence.py +0 -0
  157. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/pidfile.py +0 -0
  158. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/protocol/__init__.py +0 -0
  159. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/protocol/commands.py +0 -0
  160. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/protocol/extensions/federation.md +0 -0
  161. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/protocol/extensions/history.md +0 -0
  162. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/protocol/extensions/icons.md +0 -0
  163. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/protocol/extensions/rooms.md +0 -0
  164. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/protocol/extensions/tags.md +0 -0
  165. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/protocol/extensions/threads.md +0 -0
  166. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/protocol/message.py +0 -0
  167. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/protocol/protocol-index.md +0 -0
  168. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/protocol/replies.py +0 -0
  169. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/server/__init__.py +0 -0
  170. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/server/__main__.py +0 -0
  171. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/server/channel.py +0 -0
  172. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/server/client.py +0 -0
  173. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/server/config.py +0 -0
  174. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/server/history_store.py +0 -0
  175. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/server/ircd.py +0 -0
  176. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/server/remote_client.py +0 -0
  177. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/server/room_store.py +0 -0
  178. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/server/rooms_util.py +0 -0
  179. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/server/server_link.py +0 -0
  180. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/server/skill.py +0 -0
  181. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/server/skills/__init__.py +0 -0
  182. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/server/skills/history.py +0 -0
  183. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/server/skills/icon.py +0 -0
  184. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/server/skills/rooms.py +0 -0
  185. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/server/skills/threads.py +0 -0
  186. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/culture/server/thread_store.py +0 -0
  187. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/agent-lifecycle.md +0 -0
  188. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/agentic-self-learn.md +0 -0
  189. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/agents/decentralized-config.md +0 -0
  190. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/architecture/agent-client.md +0 -0
  191. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/architecture/design.md +0 -0
  192. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/architecture/harness-conformance.md +0 -0
  193. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/architecture/index.md +0 -0
  194. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/architecture/layer1-core-irc.md +0 -0
  195. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/architecture/layer2-attention.md +0 -0
  196. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/architecture/layer3-skills.md +0 -0
  197. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/architecture/layer4-federation.md +0 -0
  198. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/architecture/server-architecture.md +0 -0
  199. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/architecture/threads.md +0 -0
  200. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/channel-polling.md +0 -0
  201. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/clients/acp/overview.md +0 -0
  202. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/clients/acp/system-prompt.md +0 -0
  203. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/clients/claude/configuration.md +0 -0
  204. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/clients/claude/context-management.md +0 -0
  205. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/clients/claude/irc-tools.md +0 -0
  206. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/clients/claude/overview.md +0 -0
  207. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/clients/claude/setup.md +0 -0
  208. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/clients/claude/supervisor.md +0 -0
  209. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/clients/claude/webhooks.md +0 -0
  210. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/clients/codex/configuration.md +0 -0
  211. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/clients/codex/context-management.md +0 -0
  212. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/clients/codex/irc-tools.md +0 -0
  213. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/clients/codex/overview.md +0 -0
  214. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/clients/codex/setup.md +0 -0
  215. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/clients/codex/supervisor.md +0 -0
  216. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/clients/codex/webhooks.md +0 -0
  217. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/clients/copilot/configuration.md +0 -0
  218. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/clients/copilot/context-management.md +0 -0
  219. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/clients/copilot/irc-tools.md +0 -0
  220. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/clients/copilot/overview.md +0 -0
  221. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/clients/copilot/setup.md +0 -0
  222. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/clients/copilot/supervisor.md +0 -0
  223. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/clients/copilot/webhooks.md +0 -0
  224. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/index.md +0 -0
  225. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/operations/SECURITY.md +0 -0
  226. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/operations/ci.md +0 -0
  227. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/operations/docs-site.md +0 -0
  228. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/operations/index.md +0 -0
  229. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/operations/ops-tooling.md +0 -0
  230. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/operations/publishing.md +0 -0
  231. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/persistent-history.md +0 -0
  232. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/reflective-development.md +0 -0
  233. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/resources/github-copilot-sdk-instructions.md +0 -0
  234. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/rooms.md +0 -0
  235. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/server-rename.md +0 -0
  236. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/superpowers/plans/2026-03-19-layer1-core-irc.md +0 -0
  237. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/superpowers/plans/2026-03-21-layer5-agent-harness.md +0 -0
  238. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/superpowers/plans/2026-03-30-overview.md +0 -0
  239. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/superpowers/plans/2026-03-30-rooms-management.md +0 -0
  240. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/superpowers/plans/2026-04-02-conversation-threads.md +0 -0
  241. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/superpowers/plans/2026-04-02-ops-tooling.md +0 -0
  242. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/superpowers/plans/2026-04-04-culture-rename.md +0 -0
  243. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/superpowers/plans/2026-04-05-docs-speak-culture.md +0 -0
  244. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/superpowers/plans/2026-04-06-console-chat.md +0 -0
  245. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/superpowers/plans/2026-04-09-decentralized-agent-config.md +0 -0
  246. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/superpowers/specs/2026-03-19-agentirc-design.md +0 -0
  247. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/superpowers/specs/2026-03-21-layer5-agent-harness-design.md +0 -0
  248. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/superpowers/specs/2026-03-30-overview-design.md +0 -0
  249. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/superpowers/specs/2026-03-30-rooms-management-design.md +0 -0
  250. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/superpowers/specs/2026-04-02-conversation-threads-design.md +0 -0
  251. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/superpowers/specs/2026-04-02-ops-tooling-design.md +0 -0
  252. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/superpowers/specs/2026-04-03-bots-webhooks-design.md +0 -0
  253. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/superpowers/specs/2026-04-04-culture-rename-design.md +0 -0
  254. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/superpowers/specs/2026-04-05-docs-speak-culture-design.md +0 -0
  255. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/superpowers/specs/2026-04-05-lifecycle-reframe-design.md +0 -0
  256. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/superpowers/specs/2026-04-06-cli-reorganization-design.md +0 -0
  257. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/superpowers/specs/2026-04-06-console-chat-design.md +0 -0
  258. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/superpowers/specs/2026-04-07-entity-archiving-design.md +0 -0
  259. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/superpowers/specs/2026-04-07-reflective-development-reframe-design.md +0 -0
  260. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/superpowers/specs/2026-04-08-reflective-development-deepening-design.md +0 -0
  261. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/superpowers/specs/2026-04-09-decentralized-agent-config-design.md +0 -0
  262. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/use-cases/01-pair-programming.md +0 -0
  263. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/use-cases/02-code-review-ensemble.md +0 -0
  264. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/use-cases/03-cross-server-delegation.md +0 -0
  265. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/use-cases/04-knowledge-propagation.md +0 -0
  266. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/use-cases/05-the-observer.md +0 -0
  267. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/use-cases/06-cross-server-ops.md +0 -0
  268. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/use-cases/07-supervisor-intervention.md +0 -0
  269. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/use-cases/08-apps-as-agents.md +0 -0
  270. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/use-cases/09-research-swarm.md +0 -0
  271. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/use-cases/10-agent-lifecycle.md +0 -0
  272. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/use-cases-index.md +0 -0
  273. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/docs/what-is-culture.md +0 -0
  274. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/favicon.ico +0 -0
  275. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/packages/agent-harness/README.md +0 -0
  276. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/packages/agent-harness/config.py +0 -0
  277. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/packages/agent-harness/culture.yaml +0 -0
  278. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/packages/agent-harness/ipc.py +0 -0
  279. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/packages/agent-harness/irc_transport.py +0 -0
  280. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/packages/agent-harness/message_buffer.py +0 -0
  281. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/packages/agent-harness/skill/SKILL.md +0 -0
  282. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/packages/agent-harness/skill/irc_client.py +0 -0
  283. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/packages/agent-harness/socket_server.py +0 -0
  284. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/packages/agent-harness/webhook.py +0 -0
  285. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/plugins/claude-code/.claude-plugin/plugin.json +0 -0
  286. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/plugins/claude-code/skills/irc/SKILL.md +0 -0
  287. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/sonar-project.properties +0 -0
  288. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/__init__.py +0 -0
  289. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/conftest.py +0 -0
  290. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_acp_daemon.py +0 -0
  291. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_agent_runner.py +0 -0
  292. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_archive.py +0 -0
  293. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_bot.py +0 -0
  294. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_bot_config.py +0 -0
  295. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_bot_manager.py +0 -0
  296. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_bots_integration.py +0 -0
  297. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_channel.py +0 -0
  298. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_codex_daemon.py +0 -0
  299. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_connection.py +0 -0
  300. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_console_client.py +0 -0
  301. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_console_commands.py +0 -0
  302. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_console_connection.py +0 -0
  303. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_console_icons.py +0 -0
  304. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_console_integration.py +0 -0
  305. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_copilot_daemon.py +0 -0
  306. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_culture_config.py +0 -0
  307. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_daemon.py +0 -0
  308. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_daemon_config.py +0 -0
  309. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_daemon_ipc.py +0 -0
  310. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_discovery.py +0 -0
  311. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_federation.py +0 -0
  312. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_history.py +0 -0
  313. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_http_listener.py +0 -0
  314. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_integration_layer5.py +0 -0
  315. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_ipc.py +0 -0
  316. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_irc_transport.py +0 -0
  317. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_link_reconnect.py +0 -0
  318. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_mention_alias.py +0 -0
  319. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_mention_target_cleanup.py +0 -0
  320. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_mentions.py +0 -0
  321. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_mesh_config.py +0 -0
  322. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_message.py +0 -0
  323. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_message_buffer.py +0 -0
  324. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_messaging.py +0 -0
  325. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_migrate_cli.py +0 -0
  326. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_modes.py +0 -0
  327. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_overview_cli.py +0 -0
  328. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_overview_web.py +0 -0
  329. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_persistence.py +0 -0
  330. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_pidfile.py +0 -0
  331. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_poll_loop.py +0 -0
  332. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_register_cli.py +0 -0
  333. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_room_persistence.py +0 -0
  334. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_rooms.py +0 -0
  335. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_rooms_federation.py +0 -0
  336. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_rooms_integration.py +0 -0
  337. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_server_icon_skill.py +0 -0
  338. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_setup_update_cli.py +0 -0
  339. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_skill_client.py +0 -0
  340. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_skills.py +0 -0
  341. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_socket_server.py +0 -0
  342. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_supervisor.py +0 -0
  343. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_template_engine.py +0 -0
  344. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_thread_buffer.py +0 -0
  345. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_threads.py +0 -0
  346. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_virtual_client.py +0 -0
  347. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_wait_for_port.py +0 -0
  348. {agentirc_cli-4.5.1 → agentirc_cli-5.0.0}/tests/test_webhook.py +0 -0
@@ -4,6 +4,38 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  Format follows [Keep a Changelog](https://keepachangelog.com/).
6
6
 
7
+ ## [5.0.0] - 2026-04-09
8
+
9
+
10
+ ### Added
11
+
12
+ - Mesh overview shows stopped/registered agents from server.yaml manifest (#178)
13
+
14
+
15
+ ### Changed
16
+
17
+ - CLI docs use correct noun-group syntax (culture agent create, culture channel read, etc.) (#186)
18
+ - Replaced non-existent culture send with culture channel message / culture agent message (#187)
19
+ - All doc references updated from agents.yaml to server.yaml (#188)
20
+ - Documented --mesh-config, --webhook-port, --data-dir server start flags (#189)
21
+
22
+
23
+ ### Fixed
24
+
25
+ - Mesh overview now includes agents that are registered but not running
26
+
27
+ ## [4.5.2] - 2026-04-09
28
+
29
+
30
+ ### Fixed
31
+
32
+ - Agent status now reports the circuit-open state correctly instead of showing running (#179)
33
+ - Agent status list now distinguishes paused and sleeping agents correctly (#180)
34
+ - Learn prompt now includes compact/clear commands and ask --timeout (#181)
35
+ - Non-Claude backend skill docs now include the required features and comply with the all-backends rule (#182)
36
+ - Admin skill and learn prompt now include the missing CLI commands (#183)
37
+ - Mesh overview now indicates when bots are archived (#184)
38
+
7
39
  ## [4.5.1] - 2026-04-09
8
40
 
9
41
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentirc-cli
3
- Version: 4.5.1
3
+ Version: 5.0.0
4
4
  Summary: Legacy alias for culture — install culture instead
5
5
  Project-URL: Homepage, https://github.com/OriNachum/culture
6
6
  Author: Ori Nachum
@@ -120,7 +120,13 @@ def dispatch(args: argparse.Namespace) -> None:
120
120
  # -----------------------------------------------------------------------
121
121
 
122
122
 
123
- def _collect_mesh_data(host: str, port: int, server_name: str, message_limit: int):
123
+ def _collect_mesh_data(
124
+ host: str,
125
+ port: int,
126
+ server_name: str,
127
+ message_limit: int,
128
+ manifest_agents: list | None = None,
129
+ ):
124
130
  """Collect mesh state, exiting with an error message on connection failure."""
125
131
  from culture.overview.collector import collect_mesh_state
126
132
 
@@ -131,6 +137,7 @@ def _collect_mesh_data(host: str, port: int, server_name: str, message_limit: in
131
137
  port=port,
132
138
  server_name=server_name,
133
139
  message_limit=message_limit,
140
+ manifest_agents=manifest_agents,
134
141
  )
135
142
  )
136
143
  except ConnectionRefusedError:
@@ -169,11 +176,16 @@ def _cmd_overview(args: argparse.Namespace) -> None:
169
176
  agent_filter=args.agent,
170
177
  message_limit=message_limit,
171
178
  refresh_interval=refresh_interval,
179
+ manifest_agents=config.agents,
172
180
  )
173
181
  return
174
182
 
175
183
  mesh = _collect_mesh_data(
176
- config.server.host, config.server.port, config.server.name, message_limit
184
+ config.server.host,
185
+ config.server.port,
186
+ config.server.name,
187
+ message_limit,
188
+ manifest_agents=config.agents,
177
189
  )
178
190
  output = render_text(
179
191
  mesh,
@@ -33,20 +33,31 @@ def print_agent_detail(agent, config_path: str, args: argparse.Namespace) -> Non
33
33
  """Print detailed status for a single agent, including live IPC activity query."""
34
34
  status, pid = agent_process_status(agent)
35
35
  print(agent.nick)
36
- print(f" Status: {status}")
37
- print(f" PID: {pid or '-'}")
38
36
 
39
37
  if status == "running":
40
38
  query = getattr(args, "full", False)
41
39
  resp = asyncio.run(ipc_request(agent_socket_path(agent.nick), "status", query=query))
42
40
  if resp and resp.get("ok"):
43
41
  data = resp.get("data", {})
42
+ if data.get("circuit_open"):
43
+ status = "circuit-open"
44
+ elif data.get("paused"):
45
+ status = "paused"
46
+ print(f" Status: {status}")
47
+ print(f" PID: {pid or '-'}")
44
48
  print(f" Activity: {data.get('description', 'nothing')}")
45
49
  print(f" Turns: {data.get('turn_count', 0)}")
46
50
  print(f" Paused: {'yes' if data.get('paused') else 'no'}")
51
+ print(
52
+ f" Circuit: {'OPEN (not restarting)' if data.get('circuit_open') else 'closed'}"
53
+ )
47
54
  else:
55
+ print(f" Status: {status}")
56
+ print(f" PID: {pid or '-'}")
48
57
  print(" Activity: unknown (daemon may need restart)")
49
58
  else:
59
+ print(f" Status: {status}")
60
+ print(f" PID: {pid or '-'}")
50
61
  print(" Activity: -")
51
62
 
52
63
  channels = agent.channels if isinstance(agent.channels, list) else []
@@ -68,12 +79,12 @@ def _format_agent_status(base_status: str, archived: bool, show_archived_marker:
68
79
  return base_status
69
80
 
70
81
 
71
- def _fetch_agent_activity(agent) -> str:
72
- """Fetch activity description from a running agent via IPC."""
82
+ def _fetch_ipc_data(agent) -> dict | None:
83
+ """Fetch full IPC status data from a running agent."""
73
84
  resp = asyncio.run(ipc_request(agent_socket_path(agent.nick), "status"))
74
85
  if resp and resp.get("ok"):
75
- return resp.get("data", {}).get("description", "nothing")
76
- return "-"
86
+ return resp.get("data", {})
87
+ return None
77
88
 
78
89
 
79
90
  def print_agents_overview(
@@ -89,12 +100,20 @@ def print_agents_overview(
89
100
 
90
101
  for agent in agents:
91
102
  base_status, pid = agent_process_status(agent)
103
+ activity = "-"
104
+ # Enrich status from IPC for running agents
105
+ if base_status == "running":
106
+ ipc_data = _fetch_ipc_data(agent)
107
+ if ipc_data:
108
+ if ipc_data.get("circuit_open"):
109
+ base_status = "circuit-open"
110
+ elif ipc_data.get("paused"):
111
+ base_status = "paused"
112
+ if show_activity:
113
+ activity = ipc_data.get("description", "nothing")
92
114
  status = _format_agent_status(
93
115
  base_status, getattr(agent, "archived", False), show_archived_marker
94
116
  )
95
- activity = (
96
- _fetch_agent_activity(agent) if show_activity and base_status == "running" else "-"
97
- )
98
117
  if show_activity:
99
118
  print(f"{agent.nick:<30} {status:<12} {str(pid or '-'):<10} {activity}")
100
119
  else:
@@ -700,6 +700,7 @@ class ACPDaemon:
700
700
  data={
701
701
  "running": running,
702
702
  "paused": self._paused,
703
+ "circuit_open": self._circuit_open,
703
704
  "turn_count": turn_count,
704
705
  "last_activation": self._last_activation,
705
706
  "activity": activity,
@@ -0,0 +1,200 @@
1
+ ---
2
+ name: culture-irc
3
+ description: >
4
+ Communicate over IRC on the Culture network. Use when the user asks to
5
+ read messages, send messages, check who's online, join/part channels, or
6
+ interact with other agents on the IRC mesh.
7
+ ---
8
+
9
+ # IRC Skill for Culture
10
+
11
+ This skill lets you communicate over IRC through the culture daemon.
12
+ The daemon runs as a background process and maintains a persistent IRC connection.
13
+
14
+ ## Setup
15
+
16
+ Set the `CULTURE_NICK` environment variable to your agent's nick (e.g. `spark-cline`).
17
+ The skill resolves the socket path automatically:
18
+
19
+ ```text
20
+ $XDG_RUNTIME_DIR/culture-<nick>.sock (falls back to /tmp/culture-<nick>.sock)
21
+ ```
22
+
23
+ ## Invocation
24
+
25
+ ```bash
26
+ python3 -m culture.clients.acp.skill.irc_client <subcommand> [args...]
27
+ ```
28
+
29
+ All commands print a JSON result to stdout. Whispers from the daemon are printed
30
+ to stderr as `[whisper:<type>] <message>`.
31
+
32
+ ---
33
+
34
+ ## Commands
35
+
36
+ ### send — post a message to a channel
37
+
38
+ ```bash
39
+ python3 -m culture.clients.acp.skill.irc_client send <channel> <message>
40
+ ```
41
+
42
+ Example:
43
+
44
+ ```bash
45
+ python3 -m culture.clients.acp.skill.irc_client send "#general" "hello from ACP"
46
+ ```
47
+
48
+ Output:
49
+
50
+ ```json
51
+ {"type": "response", "id": "...", "ok": true}
52
+ ```
53
+
54
+ ---
55
+
56
+ ### read — read recent messages from a channel
57
+
58
+ ```bash
59
+ python3 -m culture.clients.acp.skill.irc_client read <channel> [limit]
60
+ ```
61
+
62
+ `limit` defaults to 50. Example:
63
+
64
+ ```bash
65
+ python3 -m culture.clients.acp.skill.irc_client read "#general" 20
66
+ ```
67
+
68
+ Output:
69
+
70
+ ```json
71
+ {
72
+ "type": "response",
73
+ "id": "...",
74
+ "ok": true,
75
+ "data": {
76
+ "messages": [
77
+ {"nick": "ori", "text": "hello", "timestamp": 1742000000.0}
78
+ ]
79
+ }
80
+ }
81
+ ```
82
+
83
+ ---
84
+
85
+ ### ask — send a question and trigger a webhook alert
86
+
87
+ ```bash
88
+ python3 -m culture.clients.acp.skill.irc_client ask <channel> [--timeout N] <question>
89
+ ```
90
+
91
+ `--timeout` is in seconds (default 30). Example:
92
+
93
+ ```bash
94
+ python3 -m culture.clients.acp.skill.irc_client ask "#general" --timeout 60 "What is the status of the deploy?"
95
+ ```
96
+
97
+ ---
98
+
99
+ ### join — join a channel
100
+
101
+ ```bash
102
+ python3 -m culture.clients.acp.skill.irc_client join <channel>
103
+ ```
104
+
105
+ ---
106
+
107
+ ### part — leave a channel
108
+
109
+ ```bash
110
+ python3 -m culture.clients.acp.skill.irc_client part <channel>
111
+ ```
112
+
113
+ ---
114
+
115
+ ### channels — list joined channels
116
+
117
+ ```bash
118
+ python3 -m culture.clients.acp.skill.irc_client channels
119
+ ```
120
+
121
+ Output:
122
+
123
+ ```json
124
+ {
125
+ "type": "response",
126
+ "id": "...",
127
+ "ok": true,
128
+ "data": {"channels": ["#general", "#ops"]}
129
+ }
130
+ ```
131
+
132
+ ---
133
+
134
+ ### who — send a WHO query
135
+
136
+ ```bash
137
+ python3 -m culture.clients.acp.skill.irc_client who <target>
138
+ ```
139
+
140
+ `target` can be a channel or a nick.
141
+
142
+ ---
143
+
144
+ ### compact — compact the agent's context window
145
+
146
+ ```bash
147
+ python3 -m culture.clients.acp.skill.irc_client compact
148
+ ```
149
+
150
+ Sends `/compact` to the agent session via the daemon's prompt queue.
151
+
152
+ ---
153
+
154
+ ### clear — clear the agent's context window
155
+
156
+ ```bash
157
+ python3 -m culture.clients.acp.skill.irc_client clear
158
+ ```
159
+
160
+ Sends `/clear` to the agent session via the daemon's prompt queue.
161
+
162
+ ---
163
+
164
+ ## Whispers
165
+
166
+ The daemon may send unsolicited **whisper** messages to guide the agent.
167
+ These arrive on stderr as:
168
+
169
+ ```text
170
+ [whisper:CORRECTION] Stop retrying — the issue is upstream.
171
+ [whisper:REMINDER] You have been working for 30 minutes.
172
+ ```
173
+
174
+ Always read stderr after calling this skill.
175
+
176
+ ## Python API
177
+
178
+ For use from Python (e.g. tests or other scripts):
179
+
180
+ ```python
181
+ from culture.clients.acp.skill.irc_client import SkillClient
182
+
183
+ client = SkillClient("/tmp/culture-spark-cline.sock")
184
+ await client.connect()
185
+
186
+ result = await client.irc_send("#general", "hello")
187
+ result = await client.irc_read("#general", limit=20)
188
+ result = await client.irc_ask("#general", "what is happening?", timeout=30)
189
+ result = await client.irc_join("#ops")
190
+ result = await client.irc_part("#ops")
191
+ result = await client.irc_channels()
192
+ result = await client.irc_who("#general")
193
+ result = await client.compact()
194
+ result = await client.clear()
195
+
196
+ # Collect whispers queued during the session
197
+ whispers = client.drain_whispers()
198
+
199
+ await client.close()
200
+ ```
@@ -593,6 +593,7 @@ class AgentDaemon:
593
593
  data={
594
594
  "running": running,
595
595
  "paused": self._paused,
596
+ "circuit_open": self._circuit_open,
596
597
  "turn_count": turn_count,
597
598
  "last_activation": self._last_activation,
598
599
  "activity": activity,
@@ -660,6 +660,7 @@ class CodexDaemon:
660
660
  data={
661
661
  "running": running,
662
662
  "paused": self._paused,
663
+ "circuit_open": self._circuit_open,
663
664
  "turn_count": turn_count,
664
665
  "last_activation": self._last_activation,
665
666
  "activity": activity,
@@ -0,0 +1,200 @@
1
+ ---
2
+ name: culture-irc
3
+ description: >
4
+ Communicate over IRC on the Culture network. Use when the user asks to
5
+ read messages, send messages, check who's online, join/part channels, or
6
+ interact with other agents on the IRC mesh.
7
+ ---
8
+
9
+ # IRC Skill for Culture
10
+
11
+ This skill lets you communicate over IRC through the culture daemon.
12
+ The daemon runs as a background process and maintains a persistent IRC connection.
13
+
14
+ ## Setup
15
+
16
+ Set the `CULTURE_NICK` environment variable to your agent's nick (e.g. `spark-codex`).
17
+ The skill resolves the socket path automatically:
18
+
19
+ ```text
20
+ $XDG_RUNTIME_DIR/culture-<nick>.sock (falls back to /tmp/culture-<nick>.sock)
21
+ ```
22
+
23
+ ## Invocation
24
+
25
+ ```bash
26
+ python3 -m culture.clients.codex.skill.irc_client <subcommand> [args...]
27
+ ```
28
+
29
+ All commands print a JSON result to stdout. Whispers from the daemon are printed
30
+ to stderr as `[whisper:<type>] <message>`.
31
+
32
+ ---
33
+
34
+ ## Commands
35
+
36
+ ### send — post a message to a channel
37
+
38
+ ```bash
39
+ python3 -m culture.clients.codex.skill.irc_client send <channel> <message>
40
+ ```
41
+
42
+ Example:
43
+
44
+ ```bash
45
+ python3 -m culture.clients.codex.skill.irc_client send "#general" "hello from Codex"
46
+ ```
47
+
48
+ Output:
49
+
50
+ ```json
51
+ {"type": "response", "id": "...", "ok": true}
52
+ ```
53
+
54
+ ---
55
+
56
+ ### read — read recent messages from a channel
57
+
58
+ ```bash
59
+ python3 -m culture.clients.codex.skill.irc_client read <channel> [limit]
60
+ ```
61
+
62
+ `limit` defaults to 50. Example:
63
+
64
+ ```bash
65
+ python3 -m culture.clients.codex.skill.irc_client read "#general" 20
66
+ ```
67
+
68
+ Output:
69
+
70
+ ```json
71
+ {
72
+ "type": "response",
73
+ "id": "...",
74
+ "ok": true,
75
+ "data": {
76
+ "messages": [
77
+ {"nick": "ori", "text": "hello", "timestamp": 1742000000.0}
78
+ ]
79
+ }
80
+ }
81
+ ```
82
+
83
+ ---
84
+
85
+ ### ask — send a question and trigger a webhook alert
86
+
87
+ ```bash
88
+ python3 -m culture.clients.codex.skill.irc_client ask <channel> [--timeout N] <question>
89
+ ```
90
+
91
+ `--timeout` is in seconds (default 30). Example:
92
+
93
+ ```bash
94
+ python3 -m culture.clients.codex.skill.irc_client ask "#general" --timeout 60 "What is the status of the deploy?"
95
+ ```
96
+
97
+ ---
98
+
99
+ ### join — join a channel
100
+
101
+ ```bash
102
+ python3 -m culture.clients.codex.skill.irc_client join <channel>
103
+ ```
104
+
105
+ ---
106
+
107
+ ### part — leave a channel
108
+
109
+ ```bash
110
+ python3 -m culture.clients.codex.skill.irc_client part <channel>
111
+ ```
112
+
113
+ ---
114
+
115
+ ### channels — list joined channels
116
+
117
+ ```bash
118
+ python3 -m culture.clients.codex.skill.irc_client channels
119
+ ```
120
+
121
+ Output:
122
+
123
+ ```json
124
+ {
125
+ "type": "response",
126
+ "id": "...",
127
+ "ok": true,
128
+ "data": {"channels": ["#general", "#ops"]}
129
+ }
130
+ ```
131
+
132
+ ---
133
+
134
+ ### who — send a WHO query
135
+
136
+ ```bash
137
+ python3 -m culture.clients.codex.skill.irc_client who <target>
138
+ ```
139
+
140
+ `target` can be a channel or a nick.
141
+
142
+ ---
143
+
144
+ ### compact — compact the agent's context window
145
+
146
+ ```bash
147
+ python3 -m culture.clients.codex.skill.irc_client compact
148
+ ```
149
+
150
+ Sends `/compact` to the agent session via the daemon's prompt queue.
151
+
152
+ ---
153
+
154
+ ### clear — clear the agent's context window
155
+
156
+ ```bash
157
+ python3 -m culture.clients.codex.skill.irc_client clear
158
+ ```
159
+
160
+ Sends `/clear` to the agent session via the daemon's prompt queue.
161
+
162
+ ---
163
+
164
+ ## Whispers
165
+
166
+ The daemon may send unsolicited **whisper** messages to guide the agent.
167
+ These arrive on stderr as:
168
+
169
+ ```text
170
+ [whisper:CORRECTION] Stop retrying — the issue is upstream.
171
+ [whisper:REMINDER] You have been working for 30 minutes.
172
+ ```
173
+
174
+ Always read stderr after calling this skill.
175
+
176
+ ## Python API
177
+
178
+ For use from Python (e.g. tests or other scripts):
179
+
180
+ ```python
181
+ from culture.clients.codex.skill.irc_client import SkillClient
182
+
183
+ client = SkillClient("/tmp/culture-spark-codex.sock")
184
+ await client.connect()
185
+
186
+ result = await client.irc_send("#general", "hello")
187
+ result = await client.irc_read("#general", limit=20)
188
+ result = await client.irc_ask("#general", "what is happening?", timeout=30)
189
+ result = await client.irc_join("#ops")
190
+ result = await client.irc_part("#ops")
191
+ result = await client.irc_channels()
192
+ result = await client.irc_who("#general")
193
+ result = await client.compact()
194
+ result = await client.clear()
195
+
196
+ # Collect whispers queued during the session
197
+ whispers = client.drain_whispers()
198
+
199
+ await client.close()
200
+ ```
@@ -667,6 +667,7 @@ class CopilotDaemon:
667
667
  data={
668
668
  "running": running,
669
669
  "paused": self._paused,
670
+ "circuit_open": self._circuit_open,
670
671
  "turn_count": turn_count,
671
672
  "last_activation": self._last_activation,
672
673
  "activity": activity,