agentirc-cli 6.0.1__tar.gz → 6.1.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 (400) hide show
  1. agentirc_cli-6.1.0/.github/workflows/docs-check.yml +37 -0
  2. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/.gitignore +7 -2
  3. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/CHANGELOG.md +28 -0
  4. agentirc_cli-6.1.0/PKG-INFO +53 -0
  5. agentirc_cli-6.1.0/README.md +29 -0
  6. agentirc_cli-6.1.0/_config.agentirc.yml +19 -0
  7. agentirc_cli-6.1.0/_config.base.yml +54 -0
  8. agentirc_cli-6.1.0/_config.culture.yml +19 -0
  9. agentirc_cli-6.1.0/_data/sites.yml +2 -0
  10. agentirc_cli-6.1.0/_plugins/site_filter.rb +18 -0
  11. agentirc_cli-6.1.0/_sass/color_schemes/dark-terminal.scss +40 -0
  12. agentirc_cli-6.1.0/_sass/custom/custom.scss +219 -0
  13. agentirc_cli-6.1.0/culture/agentirc/CLAUDE.md +125 -0
  14. agentirc_cli-6.1.0/culture/agentirc/docs/agentirc-architecture.md +178 -0
  15. agentirc_cli-6.1.0/culture/agentirc/docs/agentirc-features.md +192 -0
  16. agentirc_cli-6.1.0/culture/agentirc/docs/agentirc-skill.md +293 -0
  17. agentirc_cli-6.1.0/culture/agentirc/docs/agentirc.md +74 -0
  18. agentirc_cli-6.1.0/docs/README.md +10 -0
  19. agentirc_cli-6.1.0/docs/agentirc/architecture-overview.md +82 -0
  20. agentirc_cli-6.1.0/docs/agentirc/index.md +50 -0
  21. agentirc_cli-6.1.0/docs/agentirc/why-agentirc.md +31 -0
  22. {agentirc_cli-6.0.1/docs → agentirc_cli-6.1.0/docs/culture}/agent-lifecycle.md +5 -1
  23. agentirc_cli-6.1.0/docs/culture/choose-a-harness.md +44 -0
  24. agentirc_cli-6.1.0/docs/culture/index.md +76 -0
  25. agentirc_cli-6.1.0/docs/culture/mental-model.md +58 -0
  26. agentirc_cli-6.1.0/docs/culture/operate.md +16 -0
  27. agentirc_cli-6.1.0/docs/culture/patterns.md +67 -0
  28. agentirc_cli-6.1.0/docs/culture/quickstart.md +137 -0
  29. {agentirc_cli-6.0.1/docs → agentirc_cli-6.1.0/docs/culture}/reflective-development.md +5 -1
  30. agentirc_cli-6.1.0/docs/culture/vision-patterns-index.md +12 -0
  31. agentirc_cli-6.0.1/docs/what-is-culture.md → agentirc_cli-6.1.0/docs/culture/vision.md +5 -1
  32. agentirc_cli-6.1.0/docs/culture/why-culture.md +59 -0
  33. {agentirc_cli-6.0.1/docs → agentirc_cli-6.1.0/docs/reference}/architecture/agent-harness-spec.md +7 -3
  34. agentirc_cli-6.1.0/docs/reference/architecture/index.md +13 -0
  35. agentirc_cli-6.1.0/docs/reference/architecture/layers.md +350 -0
  36. {agentirc_cli-6.0.1/docs → agentirc_cli-6.1.0/docs/reference}/architecture/threads.md +7 -2
  37. agentirc_cli-6.0.1/docs/culture-cli.md → agentirc_cli-6.1.0/docs/reference/cli/commands.md +85 -3
  38. agentirc_cli-6.0.1/docs/operations/cli.md → agentirc_cli-6.1.0/docs/reference/cli/index.md +30 -72
  39. agentirc_cli-6.1.0/docs/reference/harnesses/acp.md +329 -0
  40. agentirc_cli-6.1.0/docs/reference/harnesses/claude.md +446 -0
  41. agentirc_cli-6.1.0/docs/reference/harnesses/codex.md +364 -0
  42. agentirc_cli-6.1.0/docs/reference/harnesses/copilot.md +352 -0
  43. agentirc_cli-6.1.0/docs/reference/harnesses/index.md +34 -0
  44. agentirc_cli-6.1.0/docs/reference/index.md +12 -0
  45. agentirc_cli-6.1.0/docs/reference/server/architecture.md +182 -0
  46. agentirc_cli-6.1.0/docs/reference/server/config.md +236 -0
  47. agentirc_cli-6.1.0/docs/reference/server/deployment.md +113 -0
  48. agentirc_cli-6.1.0/docs/reference/server/index.md +78 -0
  49. agentirc_cli-6.0.1/docs/operations/SECURITY.md → agentirc_cli-6.1.0/docs/reference/server/security.md +7 -3
  50. agentirc_cli-6.1.0/docs/shared/concepts/federation.md +71 -0
  51. agentirc_cli-6.1.0/docs/shared/concepts/harnesses.md +77 -0
  52. agentirc_cli-6.1.0/docs/shared/concepts/humans-and-agents.md +54 -0
  53. agentirc_cli-6.1.0/docs/shared/concepts/index.md +12 -0
  54. agentirc_cli-6.0.1/docs/persistent-history.md → agentirc_cli-6.1.0/docs/shared/concepts/persistence.md +9 -0
  55. {agentirc_cli-6.0.1/docs → agentirc_cli-6.1.0/docs/shared/concepts}/rooms.md +5 -1
  56. agentirc_cli-6.1.0/docs/shared/demos/magic-demo.md +87 -0
  57. agentirc_cli-6.1.0/docs/shared/guides/first-session.md +64 -0
  58. agentirc_cli-6.1.0/docs/shared/guides/index.md +12 -0
  59. agentirc_cli-6.1.0/docs/shared/guides/join-as-human.md +95 -0
  60. agentirc_cli-6.1.0/docs/shared/guides/local-setup.md +71 -0
  61. agentirc_cli-6.1.0/docs/shared/guides/multi-machine.md +85 -0
  62. {agentirc_cli-6.0.1/docs → agentirc_cli-6.1.0/docs/shared}/use-cases/01-pair-programming.md +3 -0
  63. {agentirc_cli-6.0.1/docs → agentirc_cli-6.1.0/docs/shared}/use-cases/02-code-review-ensemble.md +3 -0
  64. {agentirc_cli-6.0.1/docs → agentirc_cli-6.1.0/docs/shared}/use-cases/03-cross-server-delegation.md +3 -0
  65. {agentirc_cli-6.0.1/docs → agentirc_cli-6.1.0/docs/shared}/use-cases/04-knowledge-propagation.md +3 -0
  66. {agentirc_cli-6.0.1/docs → agentirc_cli-6.1.0/docs/shared}/use-cases/05-the-observer.md +3 -0
  67. {agentirc_cli-6.0.1/docs → agentirc_cli-6.1.0/docs/shared}/use-cases/06-cross-server-ops.md +3 -0
  68. {agentirc_cli-6.0.1/docs → agentirc_cli-6.1.0/docs/shared}/use-cases/07-supervisor-intervention.md +3 -0
  69. {agentirc_cli-6.0.1/docs → agentirc_cli-6.1.0/docs/shared}/use-cases/08-apps-as-agents.md +3 -0
  70. {agentirc_cli-6.0.1/docs → agentirc_cli-6.1.0/docs/shared}/use-cases/09-research-swarm.md +3 -0
  71. {agentirc_cli-6.0.1/docs → agentirc_cli-6.1.0/docs/shared}/use-cases/10-agent-lifecycle.md +3 -0
  72. {agentirc_cli-6.0.1/docs → agentirc_cli-6.1.0/docs/shared}/use-cases-index.md +4 -1
  73. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/pyproject.toml +1 -1
  74. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/uv.lock +1 -1
  75. agentirc_cli-6.0.1/.github/workflows/pages.yml +0 -53
  76. agentirc_cli-6.0.1/CNAME +0 -1
  77. agentirc_cli-6.0.1/PKG-INFO +0 -241
  78. agentirc_cli-6.0.1/README.md +0 -217
  79. agentirc_cli-6.0.1/_config.yml +0 -58
  80. agentirc_cli-6.0.1/_sass/custom/custom.scss +0 -16
  81. agentirc_cli-6.0.1/docs/agent-readiness.md +0 -102
  82. agentirc_cli-6.0.1/docs/agentic-self-learn.md +0 -110
  83. agentirc_cli-6.0.1/docs/agents/decentralized-config.md +0 -194
  84. agentirc_cli-6.0.1/docs/architecture/agent-client.md +0 -28
  85. agentirc_cli-6.0.1/docs/architecture/design.md +0 -9
  86. agentirc_cli-6.0.1/docs/architecture/harness-conformance.md +0 -84
  87. agentirc_cli-6.0.1/docs/architecture/index.md +0 -18
  88. agentirc_cli-6.0.1/docs/architecture/layer1-core-irc.md +0 -59
  89. agentirc_cli-6.0.1/docs/architecture/layer2-attention.md +0 -125
  90. agentirc_cli-6.0.1/docs/architecture/layer3-skills.md +0 -108
  91. agentirc_cli-6.0.1/docs/architecture/layer4-federation.md +0 -138
  92. agentirc_cli-6.0.1/docs/architecture/layer5-agent-harness.md +0 -94
  93. agentirc_cli-6.0.1/docs/architecture/server-architecture.md +0 -19
  94. agentirc_cli-6.0.1/docs/channel-polling.md +0 -51
  95. agentirc_cli-6.0.1/docs/clients/acp/overview.md +0 -165
  96. agentirc_cli-6.0.1/docs/clients/acp/system-prompt.md +0 -183
  97. agentirc_cli-6.0.1/docs/clients/claude/configuration.md +0 -176
  98. agentirc_cli-6.0.1/docs/clients/claude/context-management.md +0 -65
  99. agentirc_cli-6.0.1/docs/clients/claude/irc-tools.md +0 -187
  100. agentirc_cli-6.0.1/docs/clients/claude/overview.md +0 -102
  101. agentirc_cli-6.0.1/docs/clients/claude/setup.md +0 -190
  102. agentirc_cli-6.0.1/docs/clients/claude/supervisor.md +0 -104
  103. agentirc_cli-6.0.1/docs/clients/claude/webhooks.md +0 -91
  104. agentirc_cli-6.0.1/docs/clients/codex/configuration.md +0 -172
  105. agentirc_cli-6.0.1/docs/clients/codex/context-management.md +0 -66
  106. agentirc_cli-6.0.1/docs/clients/codex/irc-tools.md +0 -188
  107. agentirc_cli-6.0.1/docs/clients/codex/overview.md +0 -110
  108. agentirc_cli-6.0.1/docs/clients/codex/setup.md +0 -216
  109. agentirc_cli-6.0.1/docs/clients/codex/supervisor.md +0 -119
  110. agentirc_cli-6.0.1/docs/clients/codex/webhooks.md +0 -91
  111. agentirc_cli-6.0.1/docs/clients/copilot/configuration.md +0 -223
  112. agentirc_cli-6.0.1/docs/clients/copilot/context-management.md +0 -74
  113. agentirc_cli-6.0.1/docs/clients/copilot/irc-tools.md +0 -188
  114. agentirc_cli-6.0.1/docs/clients/copilot/overview.md +0 -135
  115. agentirc_cli-6.0.1/docs/clients/copilot/setup.md +0 -223
  116. agentirc_cli-6.0.1/docs/clients/copilot/supervisor.md +0 -118
  117. agentirc_cli-6.0.1/docs/clients/copilot/webhooks.md +0 -91
  118. agentirc_cli-6.0.1/docs/getting-started.md +0 -233
  119. agentirc_cli-6.0.1/docs/index.md +0 -132
  120. agentirc_cli-6.0.1/docs/manifest-migration.md +0 -74
  121. agentirc_cli-6.0.1/docs/operations/bots.md +0 -140
  122. agentirc_cli-6.0.1/docs/operations/ci.md +0 -42
  123. agentirc_cli-6.0.1/docs/operations/docs-site.md +0 -47
  124. agentirc_cli-6.0.1/docs/operations/index.md +0 -14
  125. agentirc_cli-6.0.1/docs/operations/ops-tooling.md +0 -291
  126. agentirc_cli-6.0.1/docs/operations/overview.md +0 -87
  127. agentirc_cli-6.0.1/docs/operations/publishing.md +0 -44
  128. agentirc_cli-6.0.1/docs/server-rename.md +0 -87
  129. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/.claude/skills/pr-review/SKILL.md +0 -0
  130. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/.claude/skills/run-tests/SKILL.md +0 -0
  131. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/.claude/skills/run-tests/scripts/test.sh +0 -0
  132. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/.flake8 +0 -0
  133. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/.github/workflows/publish.yml +0 -0
  134. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/.github/workflows/security-checks.yml +0 -0
  135. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/.github/workflows/tests.yml +0 -0
  136. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/.markdownlint-cli2.yaml +0 -0
  137. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/.pr_agent.toml +0 -0
  138. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/.pre-commit-config.yaml +0 -0
  139. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/.pylintrc +0 -0
  140. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/CLAUDE.md +0 -0
  141. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/Gemfile +0 -0
  142. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/Gemfile.lock +0 -0
  143. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/LICENSE +0 -0
  144. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/SECURITY.md +0 -0
  145. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/_includes/head_custom.html +0 -0
  146. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/_sass/color_schemes/anthropic.scss +0 -0
  147. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/assets/images/apple-touch-icon.png +0 -0
  148. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/assets/images/favicon-16x16.png +0 -0
  149. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/assets/images/favicon-32x32.png +0 -0
  150. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/assets/images/favicon.ico +0 -0
  151. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/__init__.py +0 -0
  152. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/__main__.py +0 -0
  153. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/agentirc/__init__.py +0 -0
  154. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/agentirc/__main__.py +0 -0
  155. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/agentirc/channel.py +0 -0
  156. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/agentirc/client.py +0 -0
  157. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/agentirc/config.py +0 -0
  158. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/agentirc/history_store.py +0 -0
  159. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/agentirc/ircd.py +0 -0
  160. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/agentirc/remote_client.py +0 -0
  161. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/agentirc/room_store.py +0 -0
  162. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/agentirc/rooms_util.py +0 -0
  163. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/agentirc/server_link.py +0 -0
  164. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/agentirc/skill.py +0 -0
  165. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/agentirc/skills/__init__.py +0 -0
  166. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/agentirc/skills/history.py +0 -0
  167. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/agentirc/skills/icon.py +0 -0
  168. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/agentirc/skills/rooms.py +0 -0
  169. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/agentirc/skills/threads.py +0 -0
  170. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/agentirc/thread_store.py +0 -0
  171. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/aio.py +0 -0
  172. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/bots/__init__.py +0 -0
  173. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/bots/bot.py +0 -0
  174. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/bots/bot_manager.py +0 -0
  175. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/bots/config.py +0 -0
  176. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/bots/http_listener.py +0 -0
  177. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/bots/template_engine.py +0 -0
  178. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/bots/virtual_client.py +0 -0
  179. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/cli/__init__.py +0 -0
  180. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/cli/agent.py +0 -0
  181. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/cli/bot.py +0 -0
  182. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/cli/channel.py +0 -0
  183. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/cli/mesh.py +0 -0
  184. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/cli/server.py +0 -0
  185. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/cli/shared/__init__.py +0 -0
  186. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/cli/shared/constants.py +0 -0
  187. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/cli/shared/display.py +0 -0
  188. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/cli/shared/formatting.py +0 -0
  189. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/cli/shared/ipc.py +0 -0
  190. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/cli/shared/mesh.py +0 -0
  191. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/cli/shared/process.py +0 -0
  192. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/cli/skills.py +0 -0
  193. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/__init__.py +0 -0
  194. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/acp/__init__.py +0 -0
  195. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/acp/agent_runner.py +0 -0
  196. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/acp/config.py +0 -0
  197. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/acp/culture.yaml +0 -0
  198. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/acp/daemon.py +0 -0
  199. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/acp/ipc.py +0 -0
  200. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/acp/irc_transport.py +0 -0
  201. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/acp/message_buffer.py +0 -0
  202. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/acp/skill/SKILL.md +0 -0
  203. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/acp/skill/__init__.py +0 -0
  204. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/acp/skill/irc_client.py +0 -0
  205. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/acp/socket_server.py +0 -0
  206. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/acp/supervisor.py +0 -0
  207. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/acp/webhook.py +0 -0
  208. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/claude/__init__.py +0 -0
  209. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/claude/__main__.py +0 -0
  210. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/claude/agent_runner.py +0 -0
  211. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/claude/config.py +0 -0
  212. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/claude/culture.yaml +0 -0
  213. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/claude/daemon.py +0 -0
  214. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/claude/ipc.py +0 -0
  215. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/claude/irc_transport.py +0 -0
  216. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/claude/message_buffer.py +0 -0
  217. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/claude/skill/SKILL.md +0 -0
  218. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/claude/skill/__init__.py +0 -0
  219. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/claude/skill/irc_client.py +0 -0
  220. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/claude/socket_server.py +0 -0
  221. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/claude/supervisor.py +0 -0
  222. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/claude/webhook.py +0 -0
  223. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/codex/__init__.py +0 -0
  224. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/codex/agent_runner.py +0 -0
  225. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/codex/config.py +0 -0
  226. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/codex/culture.yaml +0 -0
  227. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/codex/daemon.py +0 -0
  228. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/codex/ipc.py +0 -0
  229. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/codex/irc_transport.py +0 -0
  230. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/codex/message_buffer.py +0 -0
  231. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/codex/skill/SKILL.md +0 -0
  232. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/codex/skill/__init__.py +0 -0
  233. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/codex/skill/irc_client.py +0 -0
  234. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/codex/socket_server.py +0 -0
  235. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/codex/supervisor.py +0 -0
  236. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/codex/webhook.py +0 -0
  237. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/copilot/__init__.py +0 -0
  238. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/copilot/agent_runner.py +0 -0
  239. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/copilot/config.py +0 -0
  240. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/copilot/culture.yaml +0 -0
  241. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/copilot/daemon.py +0 -0
  242. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/copilot/ipc.py +0 -0
  243. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/copilot/irc_transport.py +0 -0
  244. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/copilot/message_buffer.py +0 -0
  245. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/copilot/skill/SKILL.md +0 -0
  246. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/copilot/skill/__init__.py +0 -0
  247. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/copilot/skill/irc_client.py +0 -0
  248. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/copilot/socket_server.py +0 -0
  249. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/copilot/supervisor.py +0 -0
  250. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/copilot/webhook.py +0 -0
  251. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/config.py +0 -0
  252. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/console/__init__.py +0 -0
  253. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/console/app.py +0 -0
  254. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/console/client.py +0 -0
  255. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/console/commands.py +0 -0
  256. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/console/widgets/__init__.py +0 -0
  257. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/console/widgets/chat.py +0 -0
  258. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/console/widgets/info_panel.py +0 -0
  259. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/console/widgets/sidebar.py +0 -0
  260. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/credentials.py +0 -0
  261. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/formatting.py +0 -0
  262. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/learn_prompt.py +0 -0
  263. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/mesh_config.py +0 -0
  264. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/observer.py +0 -0
  265. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/overview/__init__.py +0 -0
  266. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/overview/collector.py +0 -0
  267. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/overview/model.py +0 -0
  268. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/overview/renderer_text.py +0 -0
  269. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/overview/renderer_web.py +0 -0
  270. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/overview/web/style.css +0 -0
  271. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/persistence.py +0 -0
  272. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/pidfile.py +0 -0
  273. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/protocol/__init__.py +0 -0
  274. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/protocol/commands.py +0 -0
  275. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/protocol/extensions/federation.md +0 -0
  276. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/protocol/extensions/history.md +0 -0
  277. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/protocol/extensions/icons.md +0 -0
  278. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/protocol/extensions/rooms.md +0 -0
  279. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/protocol/extensions/tags.md +0 -0
  280. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/protocol/extensions/threads.md +0 -0
  281. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/protocol/message.py +0 -0
  282. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/protocol/protocol-index.md +0 -0
  283. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/protocol/replies.py +0 -0
  284. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/skills/culture/SKILL.md +0 -0
  285. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/resources/github-copilot-sdk-instructions.md +0 -0
  286. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/plans/2026-03-19-layer1-core-irc.md +0 -0
  287. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/plans/2026-03-21-layer5-agent-harness.md +0 -0
  288. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/plans/2026-03-30-overview.md +0 -0
  289. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/plans/2026-03-30-rooms-management.md +0 -0
  290. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/plans/2026-04-02-conversation-threads.md +0 -0
  291. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/plans/2026-04-02-ops-tooling.md +0 -0
  292. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/plans/2026-04-04-culture-rename.md +0 -0
  293. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/plans/2026-04-05-docs-speak-culture.md +0 -0
  294. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/plans/2026-04-06-console-chat.md +0 -0
  295. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/plans/2026-04-09-decentralized-agent-config.md +0 -0
  296. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/specs/2026-03-19-agentirc-design.md +0 -0
  297. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/specs/2026-03-21-layer5-agent-harness-design.md +0 -0
  298. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/specs/2026-03-30-overview-design.md +0 -0
  299. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/specs/2026-03-30-rooms-management-design.md +0 -0
  300. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/specs/2026-04-02-conversation-threads-design.md +0 -0
  301. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/specs/2026-04-02-ops-tooling-design.md +0 -0
  302. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/specs/2026-04-03-bots-webhooks-design.md +0 -0
  303. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/specs/2026-04-04-culture-rename-design.md +0 -0
  304. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/specs/2026-04-05-docs-speak-culture-design.md +0 -0
  305. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/specs/2026-04-05-lifecycle-reframe-design.md +0 -0
  306. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/specs/2026-04-06-cli-reorganization-design.md +0 -0
  307. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/specs/2026-04-06-console-chat-design.md +0 -0
  308. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/specs/2026-04-07-entity-archiving-design.md +0 -0
  309. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/specs/2026-04-07-reflective-development-reframe-design.md +0 -0
  310. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/specs/2026-04-08-reflective-development-deepening-design.md +0 -0
  311. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/specs/2026-04-09-decentralized-agent-config-design.md +0 -0
  312. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/favicon.ico +0 -0
  313. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/packages/agent-harness/README.md +0 -0
  314. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/packages/agent-harness/config.py +0 -0
  315. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/packages/agent-harness/culture.yaml +0 -0
  316. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/packages/agent-harness/daemon.py +0 -0
  317. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/packages/agent-harness/ipc.py +0 -0
  318. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/packages/agent-harness/irc_transport.py +0 -0
  319. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/packages/agent-harness/message_buffer.py +0 -0
  320. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/packages/agent-harness/skill/SKILL.md +0 -0
  321. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/packages/agent-harness/skill/irc_client.py +0 -0
  322. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/packages/agent-harness/socket_server.py +0 -0
  323. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/packages/agent-harness/webhook.py +0 -0
  324. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/plugins/claude-code/.claude-plugin/plugin.json +0 -0
  325. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/plugins/claude-code/skills/culture/SKILL.md +0 -0
  326. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/plugins/claude-code/skills/irc/SKILL.md +0 -0
  327. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/plugins/codex/skills/culture-irc/SKILL.md +0 -0
  328. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/sonar-project.properties +0 -0
  329. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/__init__.py +0 -0
  330. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/conftest.py +0 -0
  331. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_acp_daemon.py +0 -0
  332. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_agent_runner.py +0 -0
  333. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_archive.py +0 -0
  334. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_bot.py +0 -0
  335. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_bot_config.py +0 -0
  336. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_bot_manager.py +0 -0
  337. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_bots_integration.py +0 -0
  338. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_channel.py +0 -0
  339. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_channel_cli.py +0 -0
  340. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_codex_daemon.py +0 -0
  341. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_connection.py +0 -0
  342. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_console_client.py +0 -0
  343. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_console_commands.py +0 -0
  344. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_console_connection.py +0 -0
  345. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_console_icons.py +0 -0
  346. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_console_integration.py +0 -0
  347. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_copilot_daemon.py +0 -0
  348. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_credentials.py +0 -0
  349. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_culture_config.py +0 -0
  350. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_daemon.py +0 -0
  351. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_daemon_config.py +0 -0
  352. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_daemon_ipc.py +0 -0
  353. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_discovery.py +0 -0
  354. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_display.py +0 -0
  355. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_federation.py +0 -0
  356. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_history.py +0 -0
  357. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_http_listener.py +0 -0
  358. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_integration_layer5.py +0 -0
  359. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_ipc.py +0 -0
  360. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_irc_transport.py +0 -0
  361. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_learn_prompt.py +0 -0
  362. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_link_reconnect.py +0 -0
  363. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_manifest_config.py +0 -0
  364. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_mention_alias.py +0 -0
  365. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_mention_target_cleanup.py +0 -0
  366. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_mention_warning.py +0 -0
  367. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_mentions.py +0 -0
  368. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_mesh_config.py +0 -0
  369. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_mesh_readiness.py +0 -0
  370. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_message.py +0 -0
  371. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_message_buffer.py +0 -0
  372. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_messaging.py +0 -0
  373. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_migrate_cli.py +0 -0
  374. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_modes.py +0 -0
  375. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_overview_cli.py +0 -0
  376. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_overview_collector.py +0 -0
  377. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_overview_model.py +0 -0
  378. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_overview_renderer.py +0 -0
  379. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_overview_web.py +0 -0
  380. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_persistence.py +0 -0
  381. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_pidfile.py +0 -0
  382. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_poll_loop.py +0 -0
  383. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_register_cli.py +0 -0
  384. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_room_persistence.py +0 -0
  385. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_rooms.py +0 -0
  386. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_rooms_federation.py +0 -0
  387. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_rooms_integration.py +0 -0
  388. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_server_icon_skill.py +0 -0
  389. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_setup_update_cli.py +0 -0
  390. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_skill_client.py +0 -0
  391. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_skill_docs.py +0 -0
  392. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_skills.py +0 -0
  393. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_socket_server.py +0 -0
  394. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_supervisor.py +0 -0
  395. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_template_engine.py +0 -0
  396. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_thread_buffer.py +0 -0
  397. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_threads.py +0 -0
  398. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_virtual_client.py +0 -0
  399. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_wait_for_port.py +0 -0
  400. {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_webhook.py +0 -0
@@ -0,0 +1,37 @@
1
+ name: Docs Check
2
+
3
+ on:
4
+ pull_request:
5
+ push:
6
+ branches: [main]
7
+
8
+ jobs:
9
+ build-docs:
10
+ runs-on: ubuntu-latest
11
+ steps:
12
+ - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
13
+
14
+ - uses: ruby/setup-ruby@e65c17d16e57e481586a6a5a0282698790062f92 # v1
15
+ with:
16
+ ruby-version: '3.3'
17
+ bundler-cache: true
18
+
19
+ - name: Build AgentIRC docs
20
+ run: bundle exec jekyll build --config _config.base.yml,_config.agentirc.yml -d _site_agentirc
21
+ env:
22
+ JEKYLL_ENV: production
23
+
24
+ - name: Build Culture docs
25
+ run: bundle exec jekyll build --config _config.base.yml,_config.culture.yml -d _site_culture
26
+ env:
27
+ JEKYLL_ENV: production
28
+
29
+ - name: Verify sites tag on all doc files
30
+ run: |
31
+ MISSING=$(grep -rL "^sites:" docs/ --include="*.md" | grep -v superpowers | grep -v resources | grep -v README || true)
32
+ if [ -n "$MISSING" ]; then
33
+ echo "ERROR: The following doc files are missing a 'sites:' front matter tag:"
34
+ echo "$MISSING"
35
+ exit 1
36
+ fi
37
+ echo "All doc files have sites: tags."
@@ -182,9 +182,9 @@ cython_debug/
182
182
  .abstra/
183
183
 
184
184
  # Visual Studio Code
185
- # Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
185
+ # Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
186
186
  # that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
187
- # and can be added to the global gitignore or merged into this file. However, if you prefer,
187
+ # and can be added to the global gitignore or merged into this file. However, if you prefer,
188
188
  # you could uncomment the following to ignore the entire vscode folder
189
189
  # .vscode/
190
190
 
@@ -215,3 +215,8 @@ safety-results.json
215
215
  # Superpowers & worktrees
216
216
  .superpowers/
217
217
  .worktrees/
218
+
219
+ # Generated Jekyll output (never commit)
220
+ _site/
221
+ _site_agentirc/
222
+ _site_culture/
@@ -4,6 +4,34 @@ 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
+ ## [6.1.0] - 2026-04-10
8
+
9
+
10
+ ### Added
11
+
12
+ - Two-site docs architecture: agentirc.dev (runtime layer) and culture.dev (full solution)
13
+ - Dark terminal theme (visual-anchor palette) replacing warm cream Anthropic theme
14
+ - Site filter Jekyll plugin for per-page content selection via sites: front matter
15
+ - 4-bucket content model: agentirc/, culture/, shared/, reference/
16
+ - Custom SCSS components: hero sections, docs grids, stack diagrams, harness chips, CTA buttons
17
+ - Cross-site linking via _data/sites.yml
18
+ - docs-check CI workflow validating both site builds
19
+
20
+
21
+ ### Changed
22
+
23
+ - Consolidated 23 per-backend harness docs into 4 single-page references
24
+ - Restructured 92 docs files into 4 content buckets with sites: front matter tags
25
+ - Replaced GitHub Pages deployment with Cloudflare Pages dual-site build
26
+ - Rewrote README.md for dual-site structure
27
+
28
+ ## [6.0.2] - 2026-04-10
29
+
30
+
31
+ ### Changed
32
+
33
+ - AgentIRC local docs with Jekyll pipeline copy step
34
+
7
35
  ## [6.0.1] - 2026-04-10
8
36
 
9
37
 
@@ -0,0 +1,53 @@
1
+ Metadata-Version: 2.4
2
+ Name: agentirc-cli
3
+ Version: 6.1.0
4
+ Summary: Legacy alias for culture — install culture instead
5
+ Project-URL: Homepage, https://github.com/OriNachum/culture
6
+ Author: Ori Nachum
7
+ License-Expression: MIT
8
+ License-File: LICENSE
9
+ Classifier: Development Status :: 3 - Alpha
10
+ Classifier: Framework :: AsyncIO
11
+ Classifier: License :: OSI Approved :: MIT License
12
+ Classifier: Programming Language :: Python :: 3.12
13
+ Classifier: Topic :: Communications :: Chat :: Internet Relay Chat
14
+ Requires-Python: >=3.12
15
+ Requires-Dist: aiohttp>=3.9
16
+ Requires-Dist: anthropic>=0.40
17
+ Requires-Dist: claude-agent-sdk>=0.1
18
+ Requires-Dist: mistune>=3.0
19
+ Requires-Dist: pyyaml>=6.0
20
+ Requires-Dist: textual>=1.0
21
+ Provides-Extra: copilot
22
+ Requires-Dist: github-copilot-sdk; extra == 'copilot'
23
+ Description-Content-Type: text/markdown
24
+
25
+ # Culture
26
+
27
+ The complete human-agent collaboration system built around AgentIRC.
28
+
29
+ **AgentIRC** is the IRC-native runtime for persistent AI agents and humans in shared live rooms.
30
+ **Culture** is the full solution — CLI, harnesses, workflows, and multi-machine mesh.
31
+
32
+ ## Start here
33
+
34
+ - [Quickstart](https://culture.dev/quickstart/) — install and start in 5 minutes
35
+ - [Choose a Harness](https://culture.dev/choose-a-harness/) — Claude Code, Codex, Copilot, ACP
36
+ - [AgentIRC Architecture](https://agentirc.dev/architecture/) — the runtime layer
37
+ - [Vision & Patterns](https://culture.dev/vision/) — the broader model
38
+
39
+ ## Install
40
+
41
+ ```bash
42
+ uv tool install culture
43
+ culture server start
44
+ ```
45
+
46
+ ## Documentation
47
+
48
+ - **[culture.dev](https://culture.dev)** — the full solution: quickstart, harnesses, guides, vision
49
+ - **[agentirc.dev](https://agentirc.dev)** — the runtime layer: architecture, protocol, federation
50
+
51
+ ## License
52
+
53
+ [MIT](LICENSE)
@@ -0,0 +1,29 @@
1
+ # Culture
2
+
3
+ The complete human-agent collaboration system built around AgentIRC.
4
+
5
+ **AgentIRC** is the IRC-native runtime for persistent AI agents and humans in shared live rooms.
6
+ **Culture** is the full solution — CLI, harnesses, workflows, and multi-machine mesh.
7
+
8
+ ## Start here
9
+
10
+ - [Quickstart](https://culture.dev/quickstart/) — install and start in 5 minutes
11
+ - [Choose a Harness](https://culture.dev/choose-a-harness/) — Claude Code, Codex, Copilot, ACP
12
+ - [AgentIRC Architecture](https://agentirc.dev/architecture/) — the runtime layer
13
+ - [Vision & Patterns](https://culture.dev/vision/) — the broader model
14
+
15
+ ## Install
16
+
17
+ ```bash
18
+ uv tool install culture
19
+ culture server start
20
+ ```
21
+
22
+ ## Documentation
23
+
24
+ - **[culture.dev](https://culture.dev)** — the full solution: quickstart, harnesses, guides, vision
25
+ - **[agentirc.dev](https://agentirc.dev)** — the runtime layer: architecture, protocol, federation
26
+
27
+ ## License
28
+
29
+ [MIT](LICENSE)
@@ -0,0 +1,19 @@
1
+ title: AgentIRC
2
+ description: >-
3
+ The IRC-native runtime for persistent AI agents and humans in shared live rooms.
4
+ url: "https://agentirc.dev"
5
+ baseurl: ""
6
+ build_site: agentirc
7
+
8
+ aux_links:
9
+ "Culture":
10
+ - "https://culture.dev"
11
+ "GitHub":
12
+ - "https://github.com/OriNachum/culture"
13
+
14
+ aux_links_new_tab: true
15
+
16
+ footer_content: >-
17
+ AgentIRC — the runtime layer at the heart of
18
+ <a href="https://culture.dev">Culture</a>.
19
+ Source on <a href="https://github.com/OriNachum/culture">GitHub</a>.
@@ -0,0 +1,54 @@
1
+ title: ""
2
+ description: ""
3
+ baseurl: ""
4
+ url: ""
5
+
6
+ theme: just-the-docs
7
+ color_scheme: dark-terminal
8
+
9
+ search_enabled: true
10
+ search:
11
+ button: true
12
+
13
+ plugins:
14
+ - jekyll-seo-tag
15
+ - jekyll-relative-links
16
+ - jekyll-sitemap
17
+
18
+ relative_links:
19
+ enabled: true
20
+ collections: false
21
+
22
+ defaults:
23
+ - scope:
24
+ path: ""
25
+ values:
26
+ layout: "default"
27
+
28
+ exclude:
29
+ - README.md
30
+ - CLAUDE.md
31
+ - LICENSE
32
+ - Gemfile
33
+ - Gemfile.lock
34
+ - .gitignore
35
+ - .github/
36
+ - .claude/
37
+ - .superpowers/
38
+ - culture/
39
+ - server/
40
+ - clients/
41
+ - protocol/
42
+ - tests/
43
+ - pyproject.toml
44
+ - uv.lock
45
+ - __pycache__/
46
+ - packages/
47
+ - scripts/
48
+ - plugins/
49
+ - _site/
50
+ - _site_agentirc/
51
+ - _site_culture/
52
+ - docs/superpowers/
53
+ - docs/resources/
54
+ - culture.yaml
@@ -0,0 +1,19 @@
1
+ title: Culture
2
+ description: >-
3
+ The complete human-agent collaboration system built around AgentIRC.
4
+ url: "https://culture.dev"
5
+ baseurl: ""
6
+ build_site: culture
7
+
8
+ aux_links:
9
+ "AgentIRC":
10
+ - "https://agentirc.dev"
11
+ "GitHub":
12
+ - "https://github.com/OriNachum/culture"
13
+
14
+ aux_links_new_tab: true
15
+
16
+ footer_content: >-
17
+ Culture — human-agent collaboration built around
18
+ <a href="https://agentirc.dev">AgentIRC</a>.
19
+ Source on <a href="https://github.com/OriNachum/culture">GitHub</a>.
@@ -0,0 +1,2 @@
1
+ agentirc: https://agentirc.dev
2
+ culture: https://culture.dev
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Site Filter Plugin
4
+ #
5
+ # Drops pages whose `sites` front matter array does not include
6
+ # the current build_site (set in _config.agentirc.yml or _config.culture.yml).
7
+ # Pages without a `sites` key are excluded from all builds (fail-safe).
8
+
9
+ Jekyll::Hooks.register :pages, :post_init do |page|
10
+ site = page.site
11
+ build_site = site.config["build_site"]
12
+ next unless build_site
13
+
14
+ page_sites = page.data["sites"]
15
+ unless page_sites.is_a?(Array) && page_sites.include?(build_site)
16
+ page.data["published"] = false
17
+ end
18
+ end
@@ -0,0 +1,40 @@
1
+ // Dark Terminal Theme for just-the-docs
2
+ // Dark, technical, calm — premium control plane aesthetic
3
+ // Based on visual-anchor.md design system
4
+
5
+ // Page background
6
+ $body-background-color: #0B0F12;
7
+
8
+ // Sidebar
9
+ $sidebar-color: #11161B;
10
+
11
+ // Text colors
12
+ $body-text-color: #F3F5F7;
13
+ $body-heading-color: #F3F5F7;
14
+
15
+ // Links / accent
16
+ $link-color: #41D67A;
17
+
18
+ // Code
19
+ $code-background-color: #11161B;
20
+
21
+ // Borders
22
+ $border-color: #1A222B;
23
+
24
+ // Search
25
+ $search-background-color: #11161B;
26
+ $search-result-preview-color: #C7D0D9;
27
+
28
+ // Secondary text / buttons
29
+ $base-button-color: #8A97A3;
30
+
31
+ // Navigation
32
+ $nav-child-link-color: #C7D0D9;
33
+ $sidebar-active-text-color: #41D67A;
34
+
35
+ // Feedback / buttons
36
+ $btn-primary-color: #41D67A;
37
+
38
+ // Table
39
+ $table-background-color: #11161B;
40
+ $feedback-color: #C7D0D9;
@@ -0,0 +1,219 @@
1
+ // Override just-the-docs sidebar expansion formula at lg breakpoint.
2
+ // The default formula absorbs leftover viewport space into the sidebar,
3
+ // making it ~400-450px on laptops. This caps it at the base $nav-width.
4
+ // Mobile dropdown behavior (below md breakpoint) is unaffected.
5
+
6
+ .side-bar {
7
+ @media (min-width: 66.5rem) {
8
+ width: $nav-width;
9
+ }
10
+ }
11
+
12
+ .side-bar + .main {
13
+ @media (min-width: 66.5rem) {
14
+ margin-left: $nav-width;
15
+ }
16
+ }
17
+
18
+ // ─── Custom dark-terminal components ───
19
+
20
+ // Secondary and muted text
21
+ .text-secondary { color: #C7D0D9; }
22
+ .text-muted { color: #8A97A3; }
23
+ .text-accent { color: #41D67A; }
24
+
25
+ // Hero section
26
+ .hero {
27
+ text-align: center;
28
+ padding: 3rem 1.5rem 2rem;
29
+
30
+ .hero-label {
31
+ color: #41D67A;
32
+ font-size: 0.7rem;
33
+ text-transform: uppercase;
34
+ letter-spacing: 0.1em;
35
+ margin-bottom: 0.75rem;
36
+ }
37
+
38
+ .hero-headline {
39
+ color: #F3F5F7;
40
+ font-size: 1.5rem;
41
+ line-height: 1.4;
42
+ margin-bottom: 0.5rem;
43
+ }
44
+
45
+ .hero-sub {
46
+ color: #8A97A3;
47
+ font-size: 0.875rem;
48
+ line-height: 1.5;
49
+ margin-bottom: 1.5rem;
50
+ }
51
+ }
52
+
53
+ // CTA buttons
54
+ .btn-cta {
55
+ display: inline-block;
56
+ padding: 0.5rem 1rem;
57
+ border-radius: 6px;
58
+ font-size: 0.8125rem;
59
+ font-weight: 600;
60
+ text-decoration: none;
61
+
62
+ &--primary {
63
+ background: #41D67A;
64
+ color: #0B0F12;
65
+ &:hover { background: #7CFF9E; color: #0B0F12; }
66
+ }
67
+
68
+ &--secondary {
69
+ border: 1px solid #1A222B;
70
+ color: #C7D0D9;
71
+ &:hover { border-color: #41D67A; color: #41D67A; }
72
+ }
73
+ }
74
+
75
+ // Docs grid (2-column card grid)
76
+ .docs-grid {
77
+ display: grid;
78
+ grid-template-columns: 1fr 1fr;
79
+ gap: 0.75rem;
80
+ margin: 1.5rem 0;
81
+
82
+ @media (max-width: 40rem) {
83
+ grid-template-columns: 1fr;
84
+ }
85
+ }
86
+
87
+ .docs-card {
88
+ background: #11161B;
89
+ border: 1px solid #1A222B;
90
+ border-radius: 6px;
91
+ padding: 0.875rem;
92
+ text-decoration: none;
93
+
94
+ &:hover { border-color: #41D67A; }
95
+
96
+ .docs-card-num {
97
+ color: #41D67A;
98
+ font-size: 0.75rem;
99
+ font-weight: 600;
100
+ }
101
+
102
+ .docs-card-title {
103
+ color: #F3F5F7;
104
+ font-size: 0.8125rem;
105
+ font-weight: 500;
106
+ margin: 0.25rem 0 0.125rem;
107
+ }
108
+
109
+ .docs-card-desc {
110
+ color: #8A97A3;
111
+ font-size: 0.6875rem;
112
+ margin: 0;
113
+ }
114
+ }
115
+
116
+ // Stack diagram (layered component)
117
+ .stack-diagram {
118
+ background: #11161B;
119
+ border: 1px solid #1A222B;
120
+ border-radius: 8px;
121
+ padding: 1.25rem;
122
+ margin: 1.5rem 0;
123
+
124
+ .stack-label {
125
+ color: #8A97A3;
126
+ font-size: 0.6875rem;
127
+ text-transform: uppercase;
128
+ letter-spacing: 0.06em;
129
+ margin-bottom: 0.875rem;
130
+ }
131
+
132
+ .stack-row {
133
+ display: flex;
134
+ align-items: center;
135
+ gap: 0.625rem;
136
+ margin-bottom: 0.375rem;
137
+ }
138
+
139
+ .stack-row-label {
140
+ color: #8A97A3;
141
+ font-size: 0.6875rem;
142
+ width: 4.5rem;
143
+ text-align: right;
144
+ flex-shrink: 0;
145
+ }
146
+
147
+ .stack-row-content {
148
+ flex: 1;
149
+ background: #0B0F12;
150
+ border: 1px solid #1A222B;
151
+ border-radius: 4px;
152
+ padding: 0.5rem 0.75rem;
153
+ color: #C7D0D9;
154
+ font-size: 0.75rem;
155
+
156
+ &--highlight {
157
+ border-color: #41D67A;
158
+ .stack-row-name { color: #41D67A; font-weight: 600; }
159
+ }
160
+ }
161
+ }
162
+
163
+ // Harness chips
164
+ .harness-chips {
165
+ display: flex;
166
+ flex-wrap: wrap;
167
+ gap: 0.375rem;
168
+ }
169
+
170
+ .harness-chip {
171
+ background: #11161B;
172
+ border: 1px solid #1A222B;
173
+ border-radius: 4px;
174
+ padding: 0.25rem 0.625rem;
175
+ font-size: 0.6875rem;
176
+ color: #F3F5F7;
177
+
178
+ &--secondary { color: #C7D0D9; }
179
+ &--muted { color: #8A97A3; }
180
+ }
181
+
182
+ // Relationship callout
183
+ .callout-relationship {
184
+ background: #11161B;
185
+ border-left: 3px solid #41D67A;
186
+ border-radius: 0 6px 6px 0;
187
+ padding: 0.875rem 1rem;
188
+ margin: 1.5rem 0;
189
+
190
+ p {
191
+ color: #C7D0D9;
192
+ font-size: 0.8125rem;
193
+ line-height: 1.5;
194
+ margin: 0;
195
+ }
196
+
197
+ strong { color: #F3F5F7; }
198
+ a { color: #41D67A; }
199
+ }
200
+
201
+ // Surface card (generic dark card)
202
+ .surface-card {
203
+ background: #11161B;
204
+ border: 1px solid #1A222B;
205
+ border-radius: 8px;
206
+ padding: 1.25rem;
207
+ margin: 1rem 0;
208
+ }
209
+
210
+ // GIF placeholder / media container
211
+ .hero-media {
212
+ background: #11161B;
213
+ border: 1px solid #1A222B;
214
+ border-radius: 8px;
215
+ margin: 0 0 1.5rem;
216
+ overflow: hidden;
217
+
218
+ img { width: 100%; display: block; }
219
+ }
@@ -0,0 +1,125 @@
1
+ # CLAUDE.md
2
+
3
+ This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
+
5
+ ## What This Is
6
+
7
+ AgentIRC is a custom async Python IRCd (IRC server) built from scratch for AI agent collaboration. It is **not** a wrapper around existing IRC servers. ~4,300 lines of pure async Python (asyncio). Located at `culture/agentirc/` within the culture project.
8
+
9
+ ## Running
10
+
11
+ ```bash
12
+ # Start the server directly
13
+ python -m culture.agentirc --name spark --host 0.0.0.0 --port 6667
14
+
15
+ # With peer linking
16
+ python -m culture.agentirc --name spark --port 6667 \
17
+ --link thor:192.168.1.10:6667:secretpass \
18
+ --link orin:192.168.1.11:6667:secretpass:restricted
19
+
20
+ # Via the culture CLI (typical usage)
21
+ culture server start --name spark
22
+ ```
23
+
24
+ ## Testing
25
+
26
+ Always use `/run-tests` from the parent culture project. Tests are in `tests/` at the repo root, not inside agentirc.
27
+
28
+ Key test files for agentirc:
29
+
30
+ - `test_connection.py`, `test_channel.py`, `test_messaging.py` — core IRC
31
+ - `test_skills.py` — skill lifecycle, event dispatch, command routing
32
+ - `test_rooms.py`, `test_rooms_integration.py`, `test_room_persistence.py` — managed rooms
33
+ - `test_threads.py`, `test_thread_buffer.py` — thread system
34
+ - `test_federation.py`, `test_rooms_federation.py` — S2S linking
35
+ - `test_link_reconnect.py` — link failover and recovery
36
+ - `test_mentions.py`, `test_mention_alias.py` — @-mention parsing
37
+ - `test_history.py`, `test_persistence.py` — storage layer
38
+
39
+ Tests use real TCP connections, no mocks. The `conftest.py` provides:
40
+
41
+ - `server` — an IRCd on a random port
42
+ - `make_client(nick, user)` — connects a raw TCP test client
43
+ - `linked_servers` — two federated IRCd instances with completed handshake
44
+ - `make_client_a` / `make_client_b` — clients for each linked server
45
+
46
+ All nicks in tests must use `testserv-<name>` format (matching the test server name). For linked server tests, use `alpha-<name>` and `beta-<name>`.
47
+
48
+ ## Architecture
49
+
50
+ ### Core Loop
51
+
52
+ `ircd.py` is the orchestrator. On startup: bind TCP listener, load default skills (history, icon, rooms, threads), restore persistent rooms from disk, start webhook HTTP listener.
53
+
54
+ Each incoming TCP connection is dispatched based on the first message: `PASS` → server-to-server link (`server_link.py`), otherwise → client connection (`client.py`).
55
+
56
+ ### Three Client Types
57
+
58
+ 1. **Client** (`client.py`) — local TCP connection, handles all IRC commands
59
+ 2. **RemoteClient** (`remote_client.py`) — ghost representing a user on a peer server. **`send()` is a no-op**; message relay happens at the `ServerLink` level
60
+ 3. **VirtualClient** — bots loaded via `culture.bots.BotManager`
61
+
62
+ All three share the same nick lookup namespace (`ircd.clients` + `ircd.remote_clients`), so WHOIS/WHO/NAMES work transparently.
63
+
64
+ ### Event System
65
+
66
+ Events flow through a sequenced log (`ircd._event_log`, capped at 10,000 entries). Each event gets a monotonically increasing `_seq`. Skills receive events via `on_event()`. Server links relay events to peers via a dispatch table (`_RELAY_DISPATCH` in `server_link.py`).
67
+
68
+ The `_origin` key in event data marks events received from a peer — prevents re-relay loops and excludes them from backfill replay.
69
+
70
+ ### Federation (server_link.py)
71
+
72
+ The most complex file (886 lines). Key concepts:
73
+
74
+ - **Handshake**: PASS + SERVER (order-flexible, both required)
75
+ - **Trust levels**: `"full"` (relay everything) or `"restricted"` (only channels in `shared_with`)
76
+ - **S2S commands**: All prefixed with `S` (SNICK, SJOIN, SMSG, STOPIC, SROOMMETA, etc.)
77
+ - **Backfill**: On reconnect, peer requests `BACKFILL <name> <last_seq>`, server replays locally-originated events since that seq
78
+ - **Channel filtering**: `+R` mode = never federate; `+S <server>` = relay only to listed peers
79
+
80
+ ### Skills (skill.py + skills/)
81
+
82
+ Server-level extensions — not bots, no nicks, invisible to clients. Four default skills loaded at startup:
83
+
84
+ | Skill | File | Commands | Storage |
85
+ |-------|------|----------|---------|
86
+ | HistorySkill | `skills/history.py` | HISTORY RECENT, HISTORY SEARCH | SQLite (`history.db`) |
87
+ | RoomsSkill | `skills/rooms.py` | ROOMCREATE, ROOMMETA, TAGS, ROOMINVITE, ROOMKICK, ROOMARCHIVE | JSON (`rooms/`) |
88
+ | ThreadsSkill | `skills/threads.py` | THREAD CREATE/REPLY, THREADS, THREADCLOSE [PROMOTE] | JSON (`threads/`) |
89
+ | IconSkill | `skills/icon.py` | ICON | In-memory only |
90
+
91
+ To add a skill: subclass `Skill`, set `name` and `commands`, implement `on_event()` and/or `on_command()`. Skills are registered at startup only — no hot-reload.
92
+
93
+ ### Managed Rooms vs Plain Channels
94
+
95
+ Plain channels (created by JOIN) are ephemeral — deleted when empty. Managed rooms (created by ROOMCREATE) have a `room_id`, are persistent by default, support metadata (purpose, instructions, tags, agent_limit), and survive being empty.
96
+
97
+ Tag-based auto-invitation: when room tags or agent tags change, the server automatically sends ROOMINVITE to matching agents. Tags fire **only on change** — setting the same tags twice won't re-invite.
98
+
99
+ ### Thread Promotion
100
+
101
+ `THREADCLOSE PROMOTE` converts a thread into a breakout channel. It auto-joins participants, replays thread history as NOTICEs, and archives the original thread. The breakout is a **plain channel** (not a managed room), so it will disappear if emptied.
102
+
103
+ ## Non-Obvious Behaviors
104
+
105
+ - **Nick format enforced**: All nicks must be `<servername>-<agent>`. Rejected otherwise.
106
+ - **Auto-op**: First joiner gets op if no ops exist, but only among **local** members (RemoteClients never auto-promoted).
107
+ - **Buffer cap**: Client read buffer limited to 8192 bytes; oldest data discarded on overflow.
108
+ - **Room ID format**: `"R" + base36(timestamp_ms + counter)` — generation uses a threading lock in `rooms_util.py`.
109
+ - **Mention parsing**: `@<nick>` in PRIVMSG/NOTICE triggers server-side notification to the mentioned user (if in same channel).
110
+ - **Empty room notice**: When a persistent managed room empties, the owner gets a NOTICE suggesting archival.
111
+
112
+ ## Documentation
113
+
114
+ AgentIRC has its own `docs/` folder. These pages are the source of truth
115
+ for the AgentIRC section on culture.dev. CI copies them to `docs/agentirc/`
116
+ before the Jekyll build. Add or edit pages here — they use standard Just
117
+ The Docs front matter with `parent: AgentIRC`.
118
+
119
+ ## Key Dependencies
120
+
121
+ - `culture.protocol.message` / `culture.protocol.replies` — shared IRC message parsing and numeric replies
122
+ - `culture.aio.maybe_await` — utility for async/sync interop
123
+ - `culture.bots` — BotManager, VirtualClient, webhook HTTP listener
124
+ - `aiohttp` — webhook listener
125
+ - `sqlite3` (stdlib) — history persistence