agentirc-cli 4.5.0__tar.gz → 4.5.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 (348) hide show
  1. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/CHANGELOG.md +19 -0
  2. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/PKG-INFO +1 -1
  3. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/cli/bot.py +1 -1
  4. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/cli/mesh.py +1 -4
  5. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/cli/server.py +2 -2
  6. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/cli/shared/display.py +28 -9
  7. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/cli/shared/ipc.py +1 -1
  8. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/cli/shared/mesh.py +1 -1
  9. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/acp/daemon.py +1 -0
  10. agentirc_cli-4.5.2/culture/clients/acp/skill/SKILL.md +200 -0
  11. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/claude/daemon.py +1 -0
  12. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/codex/daemon.py +1 -0
  13. agentirc_cli-4.5.2/culture/clients/codex/skill/SKILL.md +200 -0
  14. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/copilot/daemon.py +1 -0
  15. agentirc_cli-4.5.2/culture/clients/copilot/skill/SKILL.md +200 -0
  16. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/learn_prompt.py +32 -1
  17. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/overview/collector.py +4 -1
  18. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/overview/model.py +1 -0
  19. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/overview/renderer_text.py +4 -2
  20. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/skills/culture/SKILL.md +77 -2
  21. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/architecture/agent-harness-spec.md +35 -1
  22. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/operations/bots.md +7 -1
  23. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/operations/cli.md +10 -0
  24. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/packages/agent-harness/daemon.py +2 -0
  25. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/plugins/claude-code/skills/culture/SKILL.md +77 -2
  26. agentirc_cli-4.5.2/plugins/codex/skills/culture-irc/SKILL.md +200 -0
  27. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/pyproject.toml +1 -1
  28. agentirc_cli-4.5.2/tests/test_display.py +226 -0
  29. agentirc_cli-4.5.2/tests/test_learn_prompt.py +53 -0
  30. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_overview_collector.py +45 -1
  31. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_overview_model.py +29 -0
  32. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_overview_renderer.py +39 -0
  33. agentirc_cli-4.5.2/tests/test_skill_docs.py +127 -0
  34. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/uv.lock +1 -1
  35. agentirc_cli-4.5.0/culture/clients/acp/skill/SKILL.md +0 -69
  36. agentirc_cli-4.5.0/culture/clients/codex/skill/SKILL.md +0 -69
  37. agentirc_cli-4.5.0/culture/clients/copilot/skill/SKILL.md +0 -69
  38. agentirc_cli-4.5.0/plugins/codex/skills/culture-irc/SKILL.md +0 -69
  39. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/.claude/skills/pr-review/SKILL.md +0 -0
  40. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/.claude/skills/run-tests/SKILL.md +0 -0
  41. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/.claude/skills/run-tests/scripts/test.sh +0 -0
  42. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/.flake8 +0 -0
  43. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/.github/workflows/pages.yml +0 -0
  44. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/.github/workflows/publish.yml +0 -0
  45. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/.github/workflows/security-checks.yml +0 -0
  46. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/.github/workflows/tests.yml +0 -0
  47. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/.gitignore +0 -0
  48. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/.markdownlint-cli2.yaml +0 -0
  49. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/.pr_agent.toml +0 -0
  50. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/.pre-commit-config.yaml +0 -0
  51. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/.pylintrc +0 -0
  52. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/CLAUDE.md +0 -0
  53. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/CNAME +0 -0
  54. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/Gemfile +0 -0
  55. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/Gemfile.lock +0 -0
  56. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/LICENSE +0 -0
  57. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/README.md +0 -0
  58. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/SECURITY.md +0 -0
  59. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/_config.yml +0 -0
  60. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/_includes/head_custom.html +0 -0
  61. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/_sass/color_schemes/anthropic.scss +0 -0
  62. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/_sass/custom/custom.scss +0 -0
  63. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/assets/images/apple-touch-icon.png +0 -0
  64. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/assets/images/favicon-16x16.png +0 -0
  65. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/assets/images/favicon-32x32.png +0 -0
  66. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/assets/images/favicon.ico +0 -0
  67. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/__init__.py +0 -0
  68. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/__main__.py +0 -0
  69. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/aio.py +0 -0
  70. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/bots/__init__.py +0 -0
  71. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/bots/bot.py +0 -0
  72. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/bots/bot_manager.py +0 -0
  73. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/bots/config.py +0 -0
  74. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/bots/http_listener.py +0 -0
  75. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/bots/template_engine.py +0 -0
  76. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/bots/virtual_client.py +0 -0
  77. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/cli/__init__.py +0 -0
  78. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/cli/agent.py +0 -0
  79. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/cli/channel.py +0 -0
  80. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/cli/shared/__init__.py +0 -0
  81. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/cli/shared/constants.py +0 -0
  82. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/cli/shared/formatting.py +0 -0
  83. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/cli/shared/process.py +0 -0
  84. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/cli/skills.py +0 -0
  85. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/__init__.py +0 -0
  86. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/acp/__init__.py +0 -0
  87. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/acp/agent_runner.py +0 -0
  88. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/acp/config.py +0 -0
  89. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/acp/culture.yaml +0 -0
  90. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/acp/ipc.py +0 -0
  91. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/acp/irc_transport.py +0 -0
  92. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/acp/message_buffer.py +0 -0
  93. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/acp/skill/__init__.py +0 -0
  94. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/acp/skill/irc_client.py +0 -0
  95. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/acp/socket_server.py +0 -0
  96. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/acp/supervisor.py +0 -0
  97. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/acp/webhook.py +0 -0
  98. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/claude/__init__.py +0 -0
  99. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/claude/__main__.py +0 -0
  100. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/claude/agent_runner.py +0 -0
  101. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/claude/config.py +0 -0
  102. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/claude/culture.yaml +0 -0
  103. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/claude/ipc.py +0 -0
  104. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/claude/irc_transport.py +0 -0
  105. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/claude/message_buffer.py +0 -0
  106. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/claude/skill/SKILL.md +0 -0
  107. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/claude/skill/__init__.py +0 -0
  108. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/claude/skill/irc_client.py +0 -0
  109. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/claude/socket_server.py +0 -0
  110. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/claude/supervisor.py +0 -0
  111. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/claude/webhook.py +0 -0
  112. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/codex/__init__.py +0 -0
  113. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/codex/agent_runner.py +0 -0
  114. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/codex/config.py +0 -0
  115. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/codex/culture.yaml +0 -0
  116. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/codex/ipc.py +0 -0
  117. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/codex/irc_transport.py +0 -0
  118. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/codex/message_buffer.py +0 -0
  119. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/codex/skill/__init__.py +0 -0
  120. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/codex/skill/irc_client.py +0 -0
  121. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/codex/socket_server.py +0 -0
  122. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/codex/supervisor.py +0 -0
  123. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/codex/webhook.py +0 -0
  124. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/copilot/__init__.py +0 -0
  125. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/copilot/agent_runner.py +0 -0
  126. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/copilot/config.py +0 -0
  127. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/copilot/culture.yaml +0 -0
  128. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/copilot/ipc.py +0 -0
  129. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/copilot/irc_transport.py +0 -0
  130. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/copilot/message_buffer.py +0 -0
  131. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/copilot/skill/__init__.py +0 -0
  132. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/copilot/skill/irc_client.py +0 -0
  133. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/copilot/socket_server.py +0 -0
  134. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/copilot/supervisor.py +0 -0
  135. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/clients/copilot/webhook.py +0 -0
  136. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/config.py +0 -0
  137. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/console/__init__.py +0 -0
  138. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/console/app.py +0 -0
  139. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/console/client.py +0 -0
  140. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/console/commands.py +0 -0
  141. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/console/widgets/__init__.py +0 -0
  142. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/console/widgets/chat.py +0 -0
  143. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/console/widgets/info_panel.py +0 -0
  144. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/console/widgets/sidebar.py +0 -0
  145. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/credentials.py +0 -0
  146. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/formatting.py +0 -0
  147. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/mesh_config.py +0 -0
  148. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/observer.py +0 -0
  149. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/overview/__init__.py +0 -0
  150. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/overview/renderer_web.py +0 -0
  151. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/overview/web/style.css +0 -0
  152. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/persistence.py +0 -0
  153. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/pidfile.py +0 -0
  154. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/protocol/__init__.py +0 -0
  155. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/protocol/commands.py +0 -0
  156. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/protocol/extensions/federation.md +0 -0
  157. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/protocol/extensions/history.md +0 -0
  158. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/protocol/extensions/icons.md +0 -0
  159. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/protocol/extensions/rooms.md +0 -0
  160. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/protocol/extensions/tags.md +0 -0
  161. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/protocol/extensions/threads.md +0 -0
  162. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/protocol/message.py +0 -0
  163. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/protocol/protocol-index.md +0 -0
  164. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/protocol/replies.py +0 -0
  165. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/server/__init__.py +0 -0
  166. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/server/__main__.py +0 -0
  167. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/server/channel.py +0 -0
  168. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/server/client.py +0 -0
  169. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/server/config.py +0 -0
  170. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/server/history_store.py +0 -0
  171. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/server/ircd.py +0 -0
  172. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/server/remote_client.py +0 -0
  173. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/server/room_store.py +0 -0
  174. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/server/rooms_util.py +0 -0
  175. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/server/server_link.py +0 -0
  176. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/server/skill.py +0 -0
  177. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/server/skills/__init__.py +0 -0
  178. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/server/skills/history.py +0 -0
  179. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/server/skills/icon.py +0 -0
  180. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/server/skills/rooms.py +0 -0
  181. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/server/skills/threads.py +0 -0
  182. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/culture/server/thread_store.py +0 -0
  183. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/agent-lifecycle.md +0 -0
  184. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/agentic-self-learn.md +0 -0
  185. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/agents/decentralized-config.md +0 -0
  186. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/architecture/agent-client.md +0 -0
  187. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/architecture/design.md +0 -0
  188. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/architecture/harness-conformance.md +0 -0
  189. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/architecture/index.md +0 -0
  190. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/architecture/layer1-core-irc.md +0 -0
  191. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/architecture/layer2-attention.md +0 -0
  192. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/architecture/layer3-skills.md +0 -0
  193. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/architecture/layer4-federation.md +0 -0
  194. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/architecture/layer5-agent-harness.md +0 -0
  195. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/architecture/server-architecture.md +0 -0
  196. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/architecture/threads.md +0 -0
  197. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/channel-polling.md +0 -0
  198. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/clients/acp/overview.md +0 -0
  199. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/clients/acp/system-prompt.md +0 -0
  200. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/clients/claude/configuration.md +0 -0
  201. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/clients/claude/context-management.md +0 -0
  202. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/clients/claude/irc-tools.md +0 -0
  203. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/clients/claude/overview.md +0 -0
  204. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/clients/claude/setup.md +0 -0
  205. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/clients/claude/supervisor.md +0 -0
  206. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/clients/claude/webhooks.md +0 -0
  207. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/clients/codex/configuration.md +0 -0
  208. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/clients/codex/context-management.md +0 -0
  209. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/clients/codex/irc-tools.md +0 -0
  210. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/clients/codex/overview.md +0 -0
  211. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/clients/codex/setup.md +0 -0
  212. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/clients/codex/supervisor.md +0 -0
  213. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/clients/codex/webhooks.md +0 -0
  214. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/clients/copilot/configuration.md +0 -0
  215. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/clients/copilot/context-management.md +0 -0
  216. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/clients/copilot/irc-tools.md +0 -0
  217. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/clients/copilot/overview.md +0 -0
  218. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/clients/copilot/setup.md +0 -0
  219. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/clients/copilot/supervisor.md +0 -0
  220. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/clients/copilot/webhooks.md +0 -0
  221. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/culture-cli.md +0 -0
  222. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/getting-started.md +0 -0
  223. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/index.md +0 -0
  224. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/operations/SECURITY.md +0 -0
  225. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/operations/ci.md +0 -0
  226. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/operations/docs-site.md +0 -0
  227. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/operations/index.md +0 -0
  228. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/operations/ops-tooling.md +0 -0
  229. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/operations/overview.md +0 -0
  230. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/operations/publishing.md +0 -0
  231. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/persistent-history.md +0 -0
  232. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/reflective-development.md +0 -0
  233. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/resources/github-copilot-sdk-instructions.md +0 -0
  234. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/rooms.md +0 -0
  235. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/server-rename.md +0 -0
  236. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/superpowers/plans/2026-03-19-layer1-core-irc.md +0 -0
  237. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/superpowers/plans/2026-03-21-layer5-agent-harness.md +0 -0
  238. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/superpowers/plans/2026-03-30-overview.md +0 -0
  239. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/superpowers/plans/2026-03-30-rooms-management.md +0 -0
  240. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/superpowers/plans/2026-04-02-conversation-threads.md +0 -0
  241. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/superpowers/plans/2026-04-02-ops-tooling.md +0 -0
  242. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/superpowers/plans/2026-04-04-culture-rename.md +0 -0
  243. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/superpowers/plans/2026-04-05-docs-speak-culture.md +0 -0
  244. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/superpowers/plans/2026-04-06-console-chat.md +0 -0
  245. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/superpowers/plans/2026-04-09-decentralized-agent-config.md +0 -0
  246. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/superpowers/specs/2026-03-19-agentirc-design.md +0 -0
  247. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/superpowers/specs/2026-03-21-layer5-agent-harness-design.md +0 -0
  248. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/superpowers/specs/2026-03-30-overview-design.md +0 -0
  249. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/superpowers/specs/2026-03-30-rooms-management-design.md +0 -0
  250. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/superpowers/specs/2026-04-02-conversation-threads-design.md +0 -0
  251. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/superpowers/specs/2026-04-02-ops-tooling-design.md +0 -0
  252. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/superpowers/specs/2026-04-03-bots-webhooks-design.md +0 -0
  253. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/superpowers/specs/2026-04-04-culture-rename-design.md +0 -0
  254. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/superpowers/specs/2026-04-05-docs-speak-culture-design.md +0 -0
  255. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/superpowers/specs/2026-04-05-lifecycle-reframe-design.md +0 -0
  256. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/superpowers/specs/2026-04-06-cli-reorganization-design.md +0 -0
  257. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/superpowers/specs/2026-04-06-console-chat-design.md +0 -0
  258. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/superpowers/specs/2026-04-07-entity-archiving-design.md +0 -0
  259. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/superpowers/specs/2026-04-07-reflective-development-reframe-design.md +0 -0
  260. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/superpowers/specs/2026-04-08-reflective-development-deepening-design.md +0 -0
  261. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/superpowers/specs/2026-04-09-decentralized-agent-config-design.md +0 -0
  262. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/use-cases/01-pair-programming.md +0 -0
  263. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/use-cases/02-code-review-ensemble.md +0 -0
  264. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/use-cases/03-cross-server-delegation.md +0 -0
  265. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/use-cases/04-knowledge-propagation.md +0 -0
  266. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/use-cases/05-the-observer.md +0 -0
  267. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/use-cases/06-cross-server-ops.md +0 -0
  268. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/use-cases/07-supervisor-intervention.md +0 -0
  269. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/use-cases/08-apps-as-agents.md +0 -0
  270. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/use-cases/09-research-swarm.md +0 -0
  271. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/use-cases/10-agent-lifecycle.md +0 -0
  272. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/use-cases-index.md +0 -0
  273. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/docs/what-is-culture.md +0 -0
  274. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/favicon.ico +0 -0
  275. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/packages/agent-harness/README.md +0 -0
  276. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/packages/agent-harness/config.py +0 -0
  277. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/packages/agent-harness/culture.yaml +0 -0
  278. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/packages/agent-harness/ipc.py +0 -0
  279. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/packages/agent-harness/irc_transport.py +0 -0
  280. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/packages/agent-harness/message_buffer.py +0 -0
  281. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/packages/agent-harness/skill/SKILL.md +0 -0
  282. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/packages/agent-harness/skill/irc_client.py +0 -0
  283. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/packages/agent-harness/socket_server.py +0 -0
  284. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/packages/agent-harness/webhook.py +0 -0
  285. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/plugins/claude-code/.claude-plugin/plugin.json +0 -0
  286. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/plugins/claude-code/skills/irc/SKILL.md +0 -0
  287. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/sonar-project.properties +0 -0
  288. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/__init__.py +0 -0
  289. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/conftest.py +0 -0
  290. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_acp_daemon.py +0 -0
  291. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_agent_runner.py +0 -0
  292. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_archive.py +0 -0
  293. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_bot.py +0 -0
  294. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_bot_config.py +0 -0
  295. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_bot_manager.py +0 -0
  296. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_bots_integration.py +0 -0
  297. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_channel.py +0 -0
  298. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_codex_daemon.py +0 -0
  299. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_connection.py +0 -0
  300. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_console_client.py +0 -0
  301. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_console_commands.py +0 -0
  302. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_console_connection.py +0 -0
  303. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_console_icons.py +0 -0
  304. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_console_integration.py +0 -0
  305. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_copilot_daemon.py +0 -0
  306. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_culture_config.py +0 -0
  307. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_daemon.py +0 -0
  308. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_daemon_config.py +0 -0
  309. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_daemon_ipc.py +0 -0
  310. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_discovery.py +0 -0
  311. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_federation.py +0 -0
  312. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_history.py +0 -0
  313. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_http_listener.py +0 -0
  314. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_integration_layer5.py +0 -0
  315. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_ipc.py +0 -0
  316. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_irc_transport.py +0 -0
  317. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_link_reconnect.py +0 -0
  318. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_mention_alias.py +0 -0
  319. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_mention_target_cleanup.py +0 -0
  320. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_mentions.py +0 -0
  321. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_mesh_config.py +0 -0
  322. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_message.py +0 -0
  323. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_message_buffer.py +0 -0
  324. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_messaging.py +0 -0
  325. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_migrate_cli.py +0 -0
  326. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_modes.py +0 -0
  327. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_overview_cli.py +0 -0
  328. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_overview_web.py +0 -0
  329. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_persistence.py +0 -0
  330. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_pidfile.py +0 -0
  331. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_poll_loop.py +0 -0
  332. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_register_cli.py +0 -0
  333. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_room_persistence.py +0 -0
  334. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_rooms.py +0 -0
  335. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_rooms_federation.py +0 -0
  336. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_rooms_integration.py +0 -0
  337. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_server_icon_skill.py +0 -0
  338. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_setup_update_cli.py +0 -0
  339. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_skill_client.py +0 -0
  340. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_skills.py +0 -0
  341. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_socket_server.py +0 -0
  342. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_supervisor.py +0 -0
  343. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_template_engine.py +0 -0
  344. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_thread_buffer.py +0 -0
  345. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_threads.py +0 -0
  346. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_virtual_client.py +0 -0
  347. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_wait_for_port.py +0 -0
  348. {agentirc_cli-4.5.0 → agentirc_cli-4.5.2}/tests/test_webhook.py +0 -0
@@ -4,6 +4,25 @@ 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
+ ## [4.5.2] - 2026-04-09
8
+
9
+
10
+ ### Fixed
11
+
12
+ - Agent status shows running when circuit breaker is open (#179)
13
+ - Agent status list does not distinguish paused/sleeping agents (#180)
14
+ - Learn prompt missing compact/clear commands and ask --timeout (#181)
15
+ - Non-Claude backend skill docs missing features - all-backends rule violation (#182)
16
+ - Admin skill and learn prompt missing many CLI commands (#183)
17
+ - Mesh overview shows archived bots without archive indication (#184)
18
+
19
+ ## [4.5.1] - 2026-04-09
20
+
21
+
22
+ ### Fixed
23
+
24
+ - Fix mesh overview crash after agent config migration (str has no attribute items)
25
+
7
26
  ## [4.5.0] - 2026-04-09
8
27
 
9
28
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentirc-cli
3
- Version: 4.5.0
3
+ Version: 4.5.2
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
@@ -6,7 +6,7 @@ import argparse
6
6
  import sys
7
7
  import time
8
8
 
9
- from culture.clients.claude.config import load_config_or_default
9
+ from culture.config import load_config_or_default
10
10
 
11
11
  from .shared.constants import _BOT_NAME_HELP, _CONFIG_HELP, BOT_CONFIG_FILE, DEFAULT_CONFIG
12
12
 
@@ -11,10 +11,7 @@ import subprocess
11
11
  import sys
12
12
  import time
13
13
 
14
- from culture.clients.claude.config import (
15
- load_config,
16
- load_config_or_default,
17
- )
14
+ from culture.config import ServerConfig, load_config, load_config_or_default
18
15
 
19
16
  from .shared.constants import AGENTS_YAML, CULTURE_DIR, DEFAULT_CONFIG
20
17
  from .shared.mesh import build_server_start_cmd, generate_mesh_from_agents
@@ -159,7 +159,7 @@ def dispatch(args: argparse.Namespace) -> None:
159
159
 
160
160
  # Also accept the configured server name
161
161
  try:
162
- from culture.clients.claude.config import load_config_or_default
162
+ from culture.config import load_config_or_default
163
163
 
164
164
  config = load_config_or_default(DEFAULT_CONFIG)
165
165
  known_names.add(config.server.name)
@@ -314,7 +314,7 @@ def _verify_daemon_started(args: argparse.Namespace, pid: int) -> None:
314
314
 
315
315
  def _check_server_archived(args: argparse.Namespace) -> None:
316
316
  """Exit if the server is archived."""
317
- from culture.clients.claude.config import load_config_or_default
317
+ from culture.config import load_config_or_default
318
318
 
319
319
  config_path = getattr(args, "config", DEFAULT_CONFIG)
320
320
  config = load_config_or_default(config_path)
@@ -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:
@@ -5,7 +5,7 @@ from __future__ import annotations
5
5
  import asyncio
6
6
  import os
7
7
 
8
- from culture.clients.claude.config import load_config_or_default
8
+ from culture.config import load_config_or_default
9
9
 
10
10
 
11
11
  def agent_socket_path(nick: str) -> str:
@@ -7,7 +7,7 @@ import logging
7
7
  import os
8
8
  import sys
9
9
 
10
- from culture.clients.claude.config import load_config
10
+ from culture.config import load_config
11
11
 
12
12
  from .constants import DEFAULT_CONFIG
13
13
 
@@ -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,