agentirc-cli 7.3.0__tar.gz → 7.4.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (398) hide show
  1. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/CHANGELOG.md +8 -0
  2. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/PKG-INFO +2 -1
  3. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/_config.culture.yml +3 -0
  4. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/_data/sites.yml +1 -0
  5. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/_includes/head_custom.html +1 -0
  6. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/cli/__init__.py +16 -3
  7. agentirc_cli-7.4.0/culture/cli/agex.py +101 -0
  8. agentirc_cli-7.4.0/culture/cli/introspect.py +166 -0
  9. agentirc_cli-7.4.0/docs/reference/cli/agex.md +103 -0
  10. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/reference/cli/index.md +10 -0
  11. agentirc_cli-7.4.0/docs/superpowers/plans/2026-04-22-agex-integration.md +999 -0
  12. agentirc_cli-7.4.0/docs/superpowers/specs/2026-04-22-agex-integration-design.md +258 -0
  13. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/pyproject.toml +2 -1
  14. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/sitemap-main.html +1 -0
  15. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/sitemap.html +1 -0
  16. agentirc_cli-7.4.0/tests/test_cli_agex.py +47 -0
  17. agentirc_cli-7.4.0/tests/test_cli_introspect.py +119 -0
  18. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/uv.lock +31 -1
  19. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/.claude/agents/doc-test-alignment.md +0 -0
  20. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/.claude/skills/pr-review/SKILL.md +0 -0
  21. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/.claude/skills/run-tests/SKILL.md +0 -0
  22. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/.claude/skills/run-tests/scripts/test.sh +0 -0
  23. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/.flake8 +0 -0
  24. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/.github/workflows/docs-check.yml +0 -0
  25. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/.github/workflows/publish.yml +0 -0
  26. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/.github/workflows/security-checks.yml +0 -0
  27. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/.github/workflows/tests.yml +0 -0
  28. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/.gitignore +0 -0
  29. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/.markdownlint-cli2.yaml +0 -0
  30. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/.pr_agent.toml +0 -0
  31. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/.pre-commit-config.yaml +0 -0
  32. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/.pylintrc +0 -0
  33. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/CLAUDE.md +0 -0
  34. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/Gemfile +0 -0
  35. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/Gemfile.lock +0 -0
  36. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/LICENSE +0 -0
  37. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/README.md +0 -0
  38. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/SECURITY.md +0 -0
  39. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/_config.base.yml +0 -0
  40. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/_sass/color_schemes/anthropic.scss +0 -0
  41. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/_sass/color_schemes/dark-terminal.scss +0 -0
  42. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/_sass/custom/custom.scss +0 -0
  43. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/assets/images/IMG_3183.png +0 -0
  44. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/assets/images/apple-touch-icon.png +0 -0
  45. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/assets/images/favicon-16x16.png +0 -0
  46. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/assets/images/favicon-32x32.png +0 -0
  47. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/assets/images/favicon.ico +0 -0
  48. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/assets/images/og-agentirc.png +0 -0
  49. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/assets/images/og-culture.png +0 -0
  50. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/__init__.py +0 -0
  51. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/__main__.py +0 -0
  52. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/agentirc/CLAUDE.md +0 -0
  53. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/agentirc/__init__.py +0 -0
  54. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/agentirc/__main__.py +0 -0
  55. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/agentirc/channel.py +0 -0
  56. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/agentirc/client.py +0 -0
  57. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/agentirc/config.py +0 -0
  58. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/agentirc/docs/agentirc-architecture.md +0 -0
  59. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/agentirc/docs/agentirc-features.md +0 -0
  60. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/agentirc/docs/agentirc-skill.md +0 -0
  61. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/agentirc/docs/agentirc.md +0 -0
  62. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/agentirc/events.py +0 -0
  63. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/agentirc/history_store.py +0 -0
  64. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/agentirc/ircd.py +0 -0
  65. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/agentirc/remote_client.py +0 -0
  66. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/agentirc/room_store.py +0 -0
  67. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/agentirc/rooms_util.py +0 -0
  68. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/agentirc/server_link.py +0 -0
  69. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/agentirc/skill.py +0 -0
  70. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/agentirc/skills/__init__.py +0 -0
  71. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/agentirc/skills/history.py +0 -0
  72. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/agentirc/skills/icon.py +0 -0
  73. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/agentirc/skills/rooms.py +0 -0
  74. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/agentirc/skills/threads.py +0 -0
  75. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/agentirc/thread_store.py +0 -0
  76. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/aio.py +0 -0
  77. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/bots/__init__.py +0 -0
  78. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/bots/bot.py +0 -0
  79. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/bots/bot_manager.py +0 -0
  80. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/bots/config.py +0 -0
  81. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/bots/filter_dsl.py +0 -0
  82. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/bots/http_listener.py +0 -0
  83. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/bots/system/__init__.py +0 -0
  84. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/bots/system/welcome/__init__.py +0 -0
  85. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/bots/system/welcome/bot.yaml +0 -0
  86. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/bots/system/welcome/handler.py +0 -0
  87. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/bots/template_engine.py +0 -0
  88. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/bots/virtual_client.py +0 -0
  89. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/cli/agent.py +0 -0
  90. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/cli/bot.py +0 -0
  91. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/cli/channel.py +0 -0
  92. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/cli/mesh.py +0 -0
  93. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/cli/server.py +0 -0
  94. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/cli/shared/__init__.py +0 -0
  95. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/cli/shared/constants.py +0 -0
  96. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/cli/shared/display.py +0 -0
  97. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/cli/shared/formatting.py +0 -0
  98. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/cli/shared/ipc.py +0 -0
  99. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/cli/shared/mesh.py +0 -0
  100. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/cli/shared/process.py +0 -0
  101. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/cli/skills.py +0 -0
  102. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/__init__.py +0 -0
  103. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/acp/__init__.py +0 -0
  104. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/acp/agent_runner.py +0 -0
  105. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/acp/config.py +0 -0
  106. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/acp/culture.yaml +0 -0
  107. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/acp/daemon.py +0 -0
  108. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/acp/ipc.py +0 -0
  109. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/acp/irc_transport.py +0 -0
  110. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/acp/message_buffer.py +0 -0
  111. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/acp/skill/SKILL.md +0 -0
  112. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/acp/skill/__init__.py +0 -0
  113. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/acp/skill/irc_client.py +0 -0
  114. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/acp/socket_server.py +0 -0
  115. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/acp/supervisor.py +0 -0
  116. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/acp/webhook.py +0 -0
  117. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/claude/__init__.py +0 -0
  118. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/claude/__main__.py +0 -0
  119. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/claude/agent_runner.py +0 -0
  120. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/claude/config.py +0 -0
  121. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/claude/culture.yaml +0 -0
  122. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/claude/daemon.py +0 -0
  123. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/claude/ipc.py +0 -0
  124. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/claude/irc_transport.py +0 -0
  125. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/claude/message_buffer.py +0 -0
  126. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/claude/skill/SKILL.md +0 -0
  127. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/claude/skill/__init__.py +0 -0
  128. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/claude/skill/irc_client.py +0 -0
  129. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/claude/socket_server.py +0 -0
  130. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/claude/supervisor.py +0 -0
  131. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/claude/webhook.py +0 -0
  132. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/codex/__init__.py +0 -0
  133. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/codex/agent_runner.py +0 -0
  134. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/codex/config.py +0 -0
  135. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/codex/culture.yaml +0 -0
  136. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/codex/daemon.py +0 -0
  137. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/codex/ipc.py +0 -0
  138. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/codex/irc_transport.py +0 -0
  139. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/codex/message_buffer.py +0 -0
  140. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/codex/skill/SKILL.md +0 -0
  141. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/codex/skill/__init__.py +0 -0
  142. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/codex/skill/irc_client.py +0 -0
  143. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/codex/socket_server.py +0 -0
  144. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/codex/supervisor.py +0 -0
  145. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/codex/webhook.py +0 -0
  146. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/copilot/__init__.py +0 -0
  147. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/copilot/agent_runner.py +0 -0
  148. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/copilot/config.py +0 -0
  149. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/copilot/culture.yaml +0 -0
  150. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/copilot/daemon.py +0 -0
  151. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/copilot/ipc.py +0 -0
  152. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/copilot/irc_transport.py +0 -0
  153. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/copilot/message_buffer.py +0 -0
  154. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/copilot/skill/SKILL.md +0 -0
  155. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/copilot/skill/__init__.py +0 -0
  156. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/copilot/skill/irc_client.py +0 -0
  157. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/copilot/socket_server.py +0 -0
  158. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/copilot/supervisor.py +0 -0
  159. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/clients/copilot/webhook.py +0 -0
  160. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/config.py +0 -0
  161. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/console/__init__.py +0 -0
  162. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/console/app.py +0 -0
  163. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/console/client.py +0 -0
  164. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/console/commands.py +0 -0
  165. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/console/status.py +0 -0
  166. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/console/widgets/__init__.py +0 -0
  167. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/console/widgets/chat.py +0 -0
  168. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/console/widgets/info_panel.py +0 -0
  169. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/console/widgets/sidebar.py +0 -0
  170. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/constants.py +0 -0
  171. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/credentials.py +0 -0
  172. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/formatting.py +0 -0
  173. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/learn_prompt.py +0 -0
  174. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/mesh_config.py +0 -0
  175. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/observer.py +0 -0
  176. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/overview/__init__.py +0 -0
  177. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/overview/collector.py +0 -0
  178. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/overview/model.py +0 -0
  179. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/overview/renderer_text.py +0 -0
  180. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/overview/renderer_web.py +0 -0
  181. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/overview/web/style.css +0 -0
  182. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/persistence.py +0 -0
  183. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/pidfile.py +0 -0
  184. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/protocol/__init__.py +0 -0
  185. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/protocol/commands.py +0 -0
  186. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/protocol/extensions/events.md +0 -0
  187. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/protocol/extensions/federation.md +0 -0
  188. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/protocol/extensions/history.md +0 -0
  189. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/protocol/extensions/icons.md +0 -0
  190. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/protocol/extensions/rooms.md +0 -0
  191. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/protocol/extensions/tags.md +0 -0
  192. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/protocol/extensions/threads.md +0 -0
  193. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/protocol/message.py +0 -0
  194. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/protocol/protocol-index.md +0 -0
  195. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/protocol/replies.py +0 -0
  196. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/culture/skills/culture/SKILL.md +0 -0
  197. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/README.md +0 -0
  198. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/agentirc/architecture-overview.md +0 -0
  199. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/agentirc/bots.md +0 -0
  200. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/agentirc/events.md +0 -0
  201. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/agentirc/index.md +0 -0
  202. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/agentirc/why-agentirc.md +0 -0
  203. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/culture/agent-lifecycle.md +0 -0
  204. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/culture/choose-a-harness.md +0 -0
  205. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/culture/features.md +0 -0
  206. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/culture/index.md +0 -0
  207. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/culture/mental-model.md +0 -0
  208. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/culture/operate.md +0 -0
  209. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/culture/patterns.md +0 -0
  210. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/culture/quickstart.md +0 -0
  211. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/culture/reflective-development.md +0 -0
  212. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/culture/vision-patterns-index.md +0 -0
  213. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/culture/vision.md +0 -0
  214. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/culture/what-is-culture.md +0 -0
  215. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/reference/architecture/agent-harness-spec.md +0 -0
  216. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/reference/architecture/index.md +0 -0
  217. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/reference/architecture/layers.md +0 -0
  218. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/reference/architecture/threads.md +0 -0
  219. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/reference/cli/commands.md +0 -0
  220. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/reference/console.md +0 -0
  221. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/reference/harnesses/acp.md +0 -0
  222. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/reference/harnesses/claude.md +0 -0
  223. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/reference/harnesses/codex.md +0 -0
  224. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/reference/harnesses/copilot.md +0 -0
  225. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/reference/harnesses/index.md +0 -0
  226. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/reference/index.md +0 -0
  227. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/reference/server/architecture.md +0 -0
  228. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/reference/server/config.md +0 -0
  229. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/reference/server/deployment.md +0 -0
  230. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/reference/server/index.md +0 -0
  231. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/reference/server/security.md +0 -0
  232. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/resources/github-copilot-sdk-instructions.md +0 -0
  233. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/resources/positioning.md +0 -0
  234. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/shared/concepts/federation.md +0 -0
  235. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/shared/concepts/harnesses.md +0 -0
  236. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/shared/concepts/humans-and-agents.md +0 -0
  237. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/shared/concepts/index.md +0 -0
  238. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/shared/concepts/persistence.md +0 -0
  239. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/shared/concepts/rooms.md +0 -0
  240. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/shared/demos/magic-demo.md +0 -0
  241. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/shared/guides/first-session.md +0 -0
  242. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/shared/guides/index.md +0 -0
  243. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/shared/guides/join-as-human.md +0 -0
  244. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/shared/guides/local-setup.md +0 -0
  245. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/shared/guides/multi-machine.md +0 -0
  246. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/shared/use-cases/01-pair-programming.md +0 -0
  247. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/shared/use-cases/02-code-review-ensemble.md +0 -0
  248. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/shared/use-cases/03-cross-server-delegation.md +0 -0
  249. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/shared/use-cases/04-knowledge-propagation.md +0 -0
  250. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/shared/use-cases/05-the-observer.md +0 -0
  251. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/shared/use-cases/06-cross-server-ops.md +0 -0
  252. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/shared/use-cases/07-supervisor-intervention.md +0 -0
  253. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/shared/use-cases/08-apps-as-agents.md +0 -0
  254. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/shared/use-cases/09-research-swarm.md +0 -0
  255. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/shared/use-cases/10-agent-lifecycle.md +0 -0
  256. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/shared/use-cases-index.md +0 -0
  257. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/superpowers/plans/2026-03-19-layer1-core-irc.md +0 -0
  258. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/superpowers/plans/2026-03-21-layer5-agent-harness.md +0 -0
  259. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/superpowers/plans/2026-03-30-overview.md +0 -0
  260. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/superpowers/plans/2026-03-30-rooms-management.md +0 -0
  261. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/superpowers/plans/2026-04-02-conversation-threads.md +0 -0
  262. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/superpowers/plans/2026-04-02-ops-tooling.md +0 -0
  263. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/superpowers/plans/2026-04-04-culture-rename.md +0 -0
  264. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/superpowers/plans/2026-04-05-docs-speak-culture.md +0 -0
  265. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/superpowers/plans/2026-04-06-console-chat.md +0 -0
  266. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/superpowers/plans/2026-04-09-decentralized-agent-config.md +0 -0
  267. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/superpowers/plans/2026-04-12-console-enhancements.md +0 -0
  268. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/superpowers/plans/2026-04-15-mesh-events.md +0 -0
  269. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/superpowers/plans/2026-04-18-culture-dev-positioning.md +0 -0
  270. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/superpowers/specs/2026-03-19-agentirc-design.md +0 -0
  271. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/superpowers/specs/2026-03-21-layer5-agent-harness-design.md +0 -0
  272. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/superpowers/specs/2026-03-30-overview-design.md +0 -0
  273. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/superpowers/specs/2026-03-30-rooms-management-design.md +0 -0
  274. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/superpowers/specs/2026-04-02-conversation-threads-design.md +0 -0
  275. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/superpowers/specs/2026-04-02-ops-tooling-design.md +0 -0
  276. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/superpowers/specs/2026-04-03-bots-webhooks-design.md +0 -0
  277. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/superpowers/specs/2026-04-04-culture-rename-design.md +0 -0
  278. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/superpowers/specs/2026-04-05-docs-speak-culture-design.md +0 -0
  279. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/superpowers/specs/2026-04-05-lifecycle-reframe-design.md +0 -0
  280. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/superpowers/specs/2026-04-06-cli-reorganization-design.md +0 -0
  281. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/superpowers/specs/2026-04-06-console-chat-design.md +0 -0
  282. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/superpowers/specs/2026-04-07-entity-archiving-design.md +0 -0
  283. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/superpowers/specs/2026-04-07-reflective-development-reframe-design.md +0 -0
  284. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/superpowers/specs/2026-04-08-reflective-development-deepening-design.md +0 -0
  285. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/superpowers/specs/2026-04-09-decentralized-agent-config-design.md +0 -0
  286. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/superpowers/specs/2026-04-12-console-enhancements-design.md +0 -0
  287. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/superpowers/specs/2026-04-15-mesh-events-design.md +0 -0
  288. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/superpowers/specs/2026-04-17-sites-repositioning-design.md +0 -0
  289. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/docs/superpowers/specs/2026-04-18-culture-dev-positioning-design.md +0 -0
  290. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/favicon.ico +0 -0
  291. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/packages/agent-harness/README.md +0 -0
  292. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/packages/agent-harness/config.py +0 -0
  293. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/packages/agent-harness/culture.yaml +0 -0
  294. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/packages/agent-harness/daemon.py +0 -0
  295. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/packages/agent-harness/ipc.py +0 -0
  296. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/packages/agent-harness/irc_transport.py +0 -0
  297. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/packages/agent-harness/message_buffer.py +0 -0
  298. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/packages/agent-harness/skill/SKILL.md +0 -0
  299. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/packages/agent-harness/skill/irc_client.py +0 -0
  300. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/packages/agent-harness/socket_server.py +0 -0
  301. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/packages/agent-harness/webhook.py +0 -0
  302. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/plugins/claude-code/.claude-plugin/plugin.json +0 -0
  303. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/plugins/claude-code/skills/culture/SKILL.md +0 -0
  304. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/plugins/claude-code/skills/irc/SKILL.md +0 -0
  305. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/plugins/codex/skills/culture-irc/SKILL.md +0 -0
  306. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/robots.txt +0 -0
  307. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/sitemap-agentirc.html +0 -0
  308. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/sonar-project.properties +0 -0
  309. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/__init__.py +0 -0
  310. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/conftest.py +0 -0
  311. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_acp_daemon.py +0 -0
  312. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_agent_runner.py +0 -0
  313. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_archive.py +0 -0
  314. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_bot.py +0 -0
  315. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_bot_config.py +0 -0
  316. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_bot_config_fires_event_toplevel.py +0 -0
  317. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_bot_manager.py +0 -0
  318. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_bots_integration.py +0 -0
  319. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_channel.py +0 -0
  320. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_channel_cli.py +0 -0
  321. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_codex_daemon.py +0 -0
  322. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_connection.py +0 -0
  323. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_console_chat_markdown.py +0 -0
  324. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_console_client.py +0 -0
  325. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_console_commands.py +0 -0
  326. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_console_connection.py +0 -0
  327. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_console_fixes_224_227.py +0 -0
  328. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_console_icons.py +0 -0
  329. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_console_integration.py +0 -0
  330. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_console_status.py +0 -0
  331. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_copilot_daemon.py +0 -0
  332. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_credentials.py +0 -0
  333. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_culture_config.py +0 -0
  334. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_daemon.py +0 -0
  335. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_daemon_config.py +0 -0
  336. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_daemon_ipc.py +0 -0
  337. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_discovery.py +0 -0
  338. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_display.py +0 -0
  339. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_events_basic.py +0 -0
  340. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_events_bot_chain.py +0 -0
  341. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_events_bot_trigger.py +0 -0
  342. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_events_cap_fallback.py +0 -0
  343. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_events_catalog.py +0 -0
  344. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_events_federation.py +0 -0
  345. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_events_history.py +0 -0
  346. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_events_lifecycle.py +0 -0
  347. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_events_reserved_nick.py +0 -0
  348. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_federation.py +0 -0
  349. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_filter_dsl.py +0 -0
  350. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_history.py +0 -0
  351. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_http_listener.py +0 -0
  352. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_integration_layer5.py +0 -0
  353. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_ipc.py +0 -0
  354. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_irc_transport.py +0 -0
  355. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_irc_transport_tags.py +0 -0
  356. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_learn_prompt.py +0 -0
  357. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_link_reconnect.py +0 -0
  358. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_manifest_config.py +0 -0
  359. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_mention_alias.py +0 -0
  360. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_mention_target_cleanup.py +0 -0
  361. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_mention_warning.py +0 -0
  362. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_mentions.py +0 -0
  363. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_mesh_config.py +0 -0
  364. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_mesh_readiness.py +0 -0
  365. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_message.py +0 -0
  366. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_message_buffer.py +0 -0
  367. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_message_tags.py +0 -0
  368. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_messaging.py +0 -0
  369. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_migrate_cli.py +0 -0
  370. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_modes.py +0 -0
  371. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_overview_cli.py +0 -0
  372. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_overview_collector.py +0 -0
  373. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_overview_model.py +0 -0
  374. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_overview_renderer.py +0 -0
  375. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_overview_web.py +0 -0
  376. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_persistence.py +0 -0
  377. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_persistence_timeout.py +0 -0
  378. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_pidfile.py +0 -0
  379. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_poll_loop.py +0 -0
  380. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_register_cli.py +0 -0
  381. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_room_persistence.py +0 -0
  382. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_rooms.py +0 -0
  383. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_rooms_federation.py +0 -0
  384. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_rooms_integration.py +0 -0
  385. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_server_icon_skill.py +0 -0
  386. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_setup_update_cli.py +0 -0
  387. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_skill_client.py +0 -0
  388. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_skill_docs.py +0 -0
  389. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_skills.py +0 -0
  390. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_socket_server.py +0 -0
  391. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_supervisor.py +0 -0
  392. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_template_engine.py +0 -0
  393. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_thread_buffer.py +0 -0
  394. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_threads.py +0 -0
  395. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_virtual_client.py +0 -0
  396. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_wait_for_port.py +0 -0
  397. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_webhook.py +0 -0
  398. {agentirc_cli-7.3.0 → agentirc_cli-7.4.0}/tests/test_welcome_bot.py +0 -0
@@ -4,6 +4,14 @@ 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
+ ## [7.4.0] - 2026-04-22
8
+
9
+ ### Added
10
+
11
+ - culture agex passthrough to the standalone agex CLI (new subcommand embedding agex via typer)
12
+ - Universal verbs culture explain, culture overview, culture learn at the CLI root, with a per-topic handler registry (culture/cli/introspect.py)
13
+ - agex-cli>=0.13,<1.0 as a library dependency
14
+
7
15
  ## [7.3.0] - 2026-04-21
8
16
 
9
17
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentirc-cli
3
- Version: 7.3.0
3
+ Version: 7.4.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
@@ -12,6 +12,7 @@ Classifier: License :: OSI Approved :: MIT License
12
12
  Classifier: Programming Language :: Python :: 3.12
13
13
  Classifier: Topic :: Communications :: Chat :: Internet Relay Chat
14
14
  Requires-Python: >=3.12
15
+ Requires-Dist: agex-cli<1.0,>=0.13
15
16
  Requires-Dist: aiohttp>=3.9
16
17
  Requires-Dist: anthropic>=0.40
17
18
  Requires-Dist: claude-agent-sdk>=0.1
@@ -36,6 +36,8 @@ aux_links:
36
36
  - "/agentirc/"
37
37
  "Agent Experience":
38
38
  - "https://culture.dev/agex/"
39
+ "Citation CLI":
40
+ - "/citation-cli/"
39
41
  "GitHub":
40
42
  - "https://github.com/OriNachum/culture"
41
43
 
@@ -45,4 +47,5 @@ footer_content: >-
45
47
  Culture — human-agent collaboration built around
46
48
  <a href="/agentirc/">AgentIRC</a>.
47
49
  Agent Experience via <a href="https://culture.dev/agex/">agex-cli</a>.
50
+ Code distribution via <a href="/citation-cli/">Citation CLI</a>.
48
51
  Source on <a href="https://github.com/OriNachum/culture">GitHub</a>.
@@ -1,3 +1,4 @@
1
1
  agentirc: https://culture.dev/agentirc/
2
2
  agex: https://culture.dev/agex/
3
+ citation_cli: https://culture.dev/citation-cli/
3
4
  culture: https://culture.dev
@@ -4,3 +4,4 @@
4
4
  <link rel="icon" type="image/png" sizes="16x16" href="{{ '/assets/images/favicon-16x16.png' | relative_url }}">
5
5
  <link rel="apple-touch-icon" sizes="180x180" href="{{ '/assets/images/apple-touch-icon.png' | relative_url }}">
6
6
  <link rel="related" href="{{ site.data.sites.agex }}" title="Agent Experience">
7
+ <link rel="related" href="{{ site.data.sites.citation_cli }}" title="Citation CLI">
@@ -7,6 +7,12 @@ Commands are organized into noun-based groups:
7
7
  culture channel {list,read,message,who}
8
8
  culture bot {create,start,stop,list,inspect,archive,unarchive}
9
9
  culture skills {install}
10
+ culture agex {...full passthrough to the standalone `agex` CLI...}
11
+
12
+ Universal verbs (available at the root):
13
+ culture explain [topic] full description of topic (default: culture)
14
+ culture overview [topic] shallow summary
15
+ culture learn [topic] agent-facing onboarding prompt
10
16
  """
11
17
 
12
18
  from __future__ import annotations
@@ -16,9 +22,16 @@ import logging
16
22
  import sys
17
23
 
18
24
  from culture import __version__
19
- from culture.cli import agent, bot, channel, mesh, server, skills
25
+ from culture.cli import agent, agex, bot, channel, introspect, mesh, server, skills
26
+
27
+ GROUPS = [agent, server, mesh, channel, bot, skills, agex, introspect]
28
+
20
29
 
21
- GROUPS = [agent, server, mesh, channel, bot, skills]
30
+ def _names_of(group) -> set[str]:
31
+ names = getattr(group, "NAMES", None)
32
+ if names is not None:
33
+ return set(names)
34
+ return {group.NAME}
22
35
 
23
36
 
24
37
  def _build_parser() -> argparse.ArgumentParser:
@@ -48,7 +61,7 @@ def main() -> None:
48
61
 
49
62
  try:
50
63
  for group in GROUPS:
51
- if args.command == group.NAME:
64
+ if args.command in _names_of(group):
52
65
  group.dispatch(args)
53
66
  return
54
67
  parser.print_help()
@@ -0,0 +1,101 @@
1
+ """`culture agex` — passthrough to the standalone agex CLI.
2
+
3
+ Also registers universal-verb handlers for the ``agex`` topic so
4
+ ``culture explain agex`` / ``culture overview agex`` / ``culture learn agex``
5
+ route through culture's universal-verb path.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ import argparse
11
+ import contextlib
12
+ import io
13
+ import sys
14
+
15
+ from culture.cli import introspect
16
+
17
+ NAME = "agex"
18
+
19
+
20
+ def _run_agex(argv: list[str]) -> None:
21
+ """Invoke agex's typer app in-process.
22
+
23
+ Uses standalone_mode=True (the typer default) so typer's own --help,
24
+ --version, and Exit handling work unchanged. Typer calls ``sys.exit``
25
+ when done, raising ``SystemExit``; this function lets that propagate
26
+ so the caller (the ``culture agex`` passthrough) exits with the code
27
+ the user expects. Callers that need to capture output and translate
28
+ the exit into a return value should use :func:`_capture_agex` instead.
29
+ """
30
+ try:
31
+ from agent_experience.cli import app
32
+ except ImportError as exc: # pragma: no cover — declared dep
33
+ print(f"agex-cli is not installed: {exc}", file=sys.stderr)
34
+ sys.exit(2)
35
+ app(args=argv)
36
+
37
+
38
+ def _capture_agex(argv: list[str]) -> tuple[str, int]:
39
+ """Run agex with stdout + stderr captured, translating SystemExit.
40
+
41
+ The universal-verb handlers need ``(output, exit_code)`` rather than a
42
+ process-level exit, so we deliberately catch ``SystemExit`` here and
43
+ translate it into a return value. The :func:`_run_agex` variant is for
44
+ the passthrough path where the exit must propagate.
45
+ """
46
+ buf = io.StringIO()
47
+ try:
48
+ with contextlib.redirect_stdout(buf), contextlib.redirect_stderr(buf):
49
+ _run_agex(argv)
50
+ except SystemExit as exc: # NOSONAR S5754 — see docstring
51
+ code = exc.code
52
+ if code is None:
53
+ return buf.getvalue(), 0
54
+ if isinstance(code, int):
55
+ return buf.getvalue(), code
56
+ return buf.getvalue() + str(code), 1
57
+ return buf.getvalue(), 0
58
+
59
+
60
+ # --- universal-verb topic handlers for ``agex`` ---------------------------
61
+
62
+
63
+ def _agex_explain(_topic: str | None) -> tuple[str, int]:
64
+ return _capture_agex(["explain", "agex"])
65
+
66
+
67
+ def _agex_overview(_topic: str | None) -> tuple[str, int]:
68
+ return _capture_agex(["overview", "--agent", "claude-code"])
69
+
70
+
71
+ def _agex_learn(_topic: str | None) -> tuple[str, int]:
72
+ return _capture_agex(["learn", "--agent", "claude-code"])
73
+
74
+
75
+ introspect.register_topic(
76
+ "agex",
77
+ explain=_agex_explain,
78
+ overview=_agex_overview,
79
+ learn=_agex_learn,
80
+ )
81
+
82
+
83
+ # --- CLI group protocol ---------------------------------------------------
84
+
85
+
86
+ def register(subparsers: "argparse._SubParsersAction") -> None:
87
+ # prefix_chars=chr(0) means the agex subparser has no recognized flag
88
+ # prefix character, so every token (including --help, --version) is
89
+ # treated as positional and captured in agex_args for typer to handle.
90
+ p = subparsers.add_parser(
91
+ NAME,
92
+ help="Run agex (agent-experience CLI) via passthrough",
93
+ add_help=False,
94
+ prefix_chars=chr(0),
95
+ )
96
+ p.add_argument("agex_args", nargs=argparse.REMAINDER, help="Arguments passed to agex")
97
+
98
+
99
+ def dispatch(args: argparse.Namespace) -> None:
100
+ rest = list(getattr(args, "agex_args", []) or [])
101
+ _run_agex(rest)
@@ -0,0 +1,166 @@
1
+ """Universal introspection verb dispatcher.
2
+
3
+ Registers three top-level verbs (``explain``, ``overview``, ``learn``)
4
+ on the culture CLI and dispatches each to a per-topic handler.
5
+
6
+ The module conforms to the extended culture CLI group protocol:
7
+ exports ``NAMES`` (frozenset) instead of the singular ``NAME``.
8
+ """
9
+
10
+ from __future__ import annotations
11
+
12
+ import argparse
13
+ import logging
14
+ from typing import Callable
15
+
16
+ _log = logging.getLogger(__name__)
17
+
18
+ Handler = Callable[[str | None], tuple[str, int]]
19
+
20
+ NAMES = frozenset({"explain", "overview", "learn"})
21
+
22
+ _explain: dict[str, Handler] = {}
23
+ _overview: dict[str, Handler] = {}
24
+ _learn: dict[str, Handler] = {}
25
+
26
+ _REGISTRIES: dict[str, dict[str, Handler]] = {
27
+ "explain": _explain,
28
+ "overview": _overview,
29
+ "learn": _learn,
30
+ }
31
+
32
+
33
+ def register_topic(
34
+ topic: str,
35
+ *,
36
+ explain: Handler | None = None,
37
+ overview: Handler | None = None,
38
+ learn: Handler | None = None,
39
+ ) -> None:
40
+ """Register handlers for a topic. Any verb may be omitted.
41
+
42
+ Re-registration is last-write-wins; a warning is logged when an existing
43
+ handler is overwritten so accidental double-registration is visible at
44
+ culture's default INFO log level.
45
+ """
46
+ for verb, handler, registry in (
47
+ ("explain", explain, _explain),
48
+ ("overview", overview, _overview),
49
+ ("learn", learn, _learn),
50
+ ):
51
+ if handler is None:
52
+ continue
53
+ if topic in registry:
54
+ _log.warning("overriding %s handler for topic %r", verb, topic)
55
+ registry[topic] = handler
56
+
57
+
58
+ def _clear_registry() -> None:
59
+ """Test-only: wipe all registries, then re-register the root handlers."""
60
+ _explain.clear()
61
+ _overview.clear()
62
+ _learn.clear()
63
+ _register_root()
64
+
65
+
66
+ def _resolve(verb: str, topic: str | None) -> tuple[str, int]:
67
+ registry = _REGISTRIES[verb]
68
+ effective = topic if topic is not None else "culture"
69
+ handler = registry.get(effective)
70
+ if handler is None:
71
+ available = sorted(registry.keys())
72
+ msg = (
73
+ f"unknown topic '{effective}' for {verb};"
74
+ f" available: {', '.join(available) or '(none)'}"
75
+ )
76
+ return msg, 1
77
+ return handler(topic)
78
+
79
+
80
+ def explain(topic: str | None) -> tuple[str, int]:
81
+ return _resolve("explain", topic)
82
+
83
+
84
+ def overview(topic: str | None) -> tuple[str, int]:
85
+ return _resolve("overview", topic)
86
+
87
+
88
+ def learn(topic: str | None) -> tuple[str, int]:
89
+ return _resolve("learn", topic)
90
+
91
+
92
+ _NAMESPACES = ("agex", "server", "agent", "mesh", "bot", "channel", "skills")
93
+
94
+
95
+ def _culture_explain(_topic: str | None) -> tuple[str, int]:
96
+ lines = [
97
+ "# Culture",
98
+ "",
99
+ "Culture is the framework of agreements that makes agent behavior",
100
+ "portable, inspectable, and effective. It hosts a mesh of IRC servers",
101
+ "where AI agents collaborate, share knowledge, and coordinate work.",
102
+ "",
103
+ "## Namespaces",
104
+ "",
105
+ ]
106
+ for ns in _NAMESPACES:
107
+ registered = any(ns in registry for registry in _REGISTRIES.values())
108
+ marker = "" if registered else " (coming soon)"
109
+ lines.append(f"- `culture {ns}`{marker}")
110
+ lines.append("")
111
+ lines.append("## Universal verbs")
112
+ lines.append("")
113
+ lines.append("- `culture explain [topic]` — deep description")
114
+ lines.append("- `culture overview [topic]` — shallow map")
115
+ lines.append("- `culture learn [topic]` — agent onboarding prompt")
116
+ return "\n".join(lines) + "\n", 0
117
+
118
+
119
+ def _culture_overview(_topic: str | None) -> tuple[str, int]:
120
+ return (
121
+ "Culture: agent IRC mesh. Namespaces: "
122
+ + ", ".join(_NAMESPACES)
123
+ + ". Universal verbs: explain, overview, learn.\n",
124
+ 0,
125
+ )
126
+
127
+
128
+ def _culture_learn(_topic: str | None) -> tuple[str, int]:
129
+ from culture.learn_prompt import generate_learn_prompt
130
+
131
+ return generate_learn_prompt(), 0
132
+
133
+
134
+ def _register_root() -> None:
135
+ register_topic(
136
+ "culture",
137
+ explain=_culture_explain,
138
+ overview=_culture_overview,
139
+ learn=_culture_learn,
140
+ )
141
+
142
+
143
+ _register_root()
144
+
145
+
146
+ # --- CLI group protocol ---------------------------------------------------
147
+
148
+
149
+ def register(subparsers: "argparse._SubParsersAction") -> None:
150
+ for verb in ("explain", "overview", "learn"):
151
+ p = subparsers.add_parser(verb, help=f"{verb.capitalize()} a topic (culture by default)")
152
+ p.add_argument("topic", nargs="?", default=None, help="Topic to inspect")
153
+
154
+
155
+ def dispatch(args: argparse.Namespace) -> None:
156
+ import sys
157
+
158
+ verb = args.command
159
+ topic = getattr(args, "topic", None)
160
+ stdout, code = _resolve(verb, topic)
161
+ if stdout:
162
+ stream = sys.stdout if code == 0 else sys.stderr
163
+ end = "" if stdout.endswith("\n") else "\n"
164
+ print(stdout, end=end, file=stream)
165
+ if code != 0:
166
+ sys.exit(code)
@@ -0,0 +1,103 @@
1
+ ---
2
+ title: "culture agex"
3
+ parent: "CLI"
4
+ grand_parent: "Reference"
5
+ nav_order: 10
6
+ sites: [agentirc, culture]
7
+ description: "Agex passthrough and universal introspection verbs."
8
+ permalink: /reference/cli/agex/
9
+ ---
10
+
11
+ # `culture agex` and universal verbs
12
+
13
+ Culture ships [agex](https://agex.culture.dev) as a first-class
14
+ citizen. Two affordances:
15
+
16
+ ## `culture agex <anything>`
17
+
18
+ A full passthrough to the standalone [`agex`](https://agex.culture.dev) CLI.
19
+ Everything after `culture agex` is forwarded verbatim to agex's typer app.
20
+ Exit codes propagate.
21
+
22
+ ```bash
23
+ culture agex --version
24
+ culture agex explain agex
25
+ culture agex overview --agent claude-code
26
+ culture agex learn --agent claude-code
27
+ ```
28
+
29
+ `culture agex --help` shows agex's help, not culture's.
30
+
31
+ ## Universal verbs: `explain` / `overview` / `learn`
32
+
33
+ Three verbs live at the root of the culture command tree. Each takes an
34
+ optional `topic`; when omitted, the topic defaults to `culture`.
35
+
36
+ | Verb | Meaning |
37
+ |------|---------|
38
+ | `explain X` | Full description of X and everything under X (deep) |
39
+ | `overview X` | Summary of X (shallow map view) |
40
+ | `learn X` | Agent-facing onboarding prompt for operating X |
41
+
42
+ ```bash
43
+ culture explain # describes culture + its namespaces
44
+ culture explain agex # routes to agex explain
45
+ culture overview # culture map
46
+ culture learn # agent onboarding prompt for culture
47
+ culture learn agex # agent onboarding for agex
48
+ ```
49
+
50
+ `learn` produces an agent-facing self-teaching prompt so an agent doesn't
51
+ have to re-explore a tool every time. This matches agex's `agex learn`
52
+ verb semantically.
53
+
54
+ ## Each namespace owns its own
55
+
56
+ Culture is pure plumbing: a tiny internal dispatcher
57
+ (`culture/cli/introspect.py`) maps topics to handlers. Each namespace that
58
+ wants to participate registers its own handlers on import. For `agex`,
59
+ the agex-cli library already implements the three verbs — culture just
60
+ routes. Native namespaces (`mesh`, `server`, `agent`, …) will add their
61
+ own handlers in a future release.
62
+
63
+ ## For namespace authors
64
+
65
+ A new namespace plugs into the universal verbs by calling
66
+ `introspect.register_topic(...)` at module import time:
67
+
68
+ ```python
69
+ # culture/cli/mycmd.py
70
+ from culture.cli import introspect
71
+
72
+
73
+ def _explain(_topic):
74
+ return "markdown describing mycmd ...\n", 0
75
+
76
+
77
+ def _overview(_topic):
78
+ return "one-line summary of mycmd\n", 0
79
+
80
+
81
+ def _learn(_topic):
82
+ return "agent onboarding prompt for mycmd\n", 0
83
+
84
+
85
+ introspect.register_topic(
86
+ "mycmd",
87
+ explain=_explain,
88
+ overview=_overview,
89
+ learn=_learn,
90
+ )
91
+ ```
92
+
93
+ Each handler has signature `Handler = Callable[[str | None], tuple[str, int]]` —
94
+ it receives the topic (may be `None`) and returns `(stdout, exit_code)`.
95
+
96
+ ### CLI group protocol: `NAME` vs `NAMES`
97
+
98
+ A normal group module (e.g. `server`, `agent`) exports a singular
99
+ `NAME: str` — the subcommand noun. A group that owns multiple top-level
100
+ verbs (e.g. `introspect`, which owns all three of `explain`/`overview`/
101
+ `learn`) exports a plural `NAMES: frozenset[str]` instead. The dispatch
102
+ loop in `culture/cli/__init__.py` honors both — `NAMES` takes priority
103
+ with `{NAME}` as the fallback — so most groups only need `NAME`.
@@ -391,3 +391,13 @@ culture bot unarchive spark-ori-ghci
391
391
 
392
392
  All commands use `~/.culture/server.yaml` by default. Override with `--config`.
393
393
  The legacy `~/.culture/agents.yaml` format is still supported; use `culture agent migrate` to convert.
394
+
395
+ ## Universal verbs
396
+
397
+ Available at the root of the command tree. See
398
+ [`culture agex`](./agex/) for detail.
399
+
400
+ - `culture explain [topic]` — deep description
401
+ - `culture overview [topic]` — shallow summary
402
+ - `culture learn [topic]` — agent onboarding prompt
403
+ - `culture agex <anything>` — passthrough to the agex CLI