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.
- agentirc_cli-6.1.0/.github/workflows/docs-check.yml +37 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/.gitignore +7 -2
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/CHANGELOG.md +28 -0
- agentirc_cli-6.1.0/PKG-INFO +53 -0
- agentirc_cli-6.1.0/README.md +29 -0
- agentirc_cli-6.1.0/_config.agentirc.yml +19 -0
- agentirc_cli-6.1.0/_config.base.yml +54 -0
- agentirc_cli-6.1.0/_config.culture.yml +19 -0
- agentirc_cli-6.1.0/_data/sites.yml +2 -0
- agentirc_cli-6.1.0/_plugins/site_filter.rb +18 -0
- agentirc_cli-6.1.0/_sass/color_schemes/dark-terminal.scss +40 -0
- agentirc_cli-6.1.0/_sass/custom/custom.scss +219 -0
- agentirc_cli-6.1.0/culture/agentirc/CLAUDE.md +125 -0
- agentirc_cli-6.1.0/culture/agentirc/docs/agentirc-architecture.md +178 -0
- agentirc_cli-6.1.0/culture/agentirc/docs/agentirc-features.md +192 -0
- agentirc_cli-6.1.0/culture/agentirc/docs/agentirc-skill.md +293 -0
- agentirc_cli-6.1.0/culture/agentirc/docs/agentirc.md +74 -0
- agentirc_cli-6.1.0/docs/README.md +10 -0
- agentirc_cli-6.1.0/docs/agentirc/architecture-overview.md +82 -0
- agentirc_cli-6.1.0/docs/agentirc/index.md +50 -0
- agentirc_cli-6.1.0/docs/agentirc/why-agentirc.md +31 -0
- {agentirc_cli-6.0.1/docs → agentirc_cli-6.1.0/docs/culture}/agent-lifecycle.md +5 -1
- agentirc_cli-6.1.0/docs/culture/choose-a-harness.md +44 -0
- agentirc_cli-6.1.0/docs/culture/index.md +76 -0
- agentirc_cli-6.1.0/docs/culture/mental-model.md +58 -0
- agentirc_cli-6.1.0/docs/culture/operate.md +16 -0
- agentirc_cli-6.1.0/docs/culture/patterns.md +67 -0
- agentirc_cli-6.1.0/docs/culture/quickstart.md +137 -0
- {agentirc_cli-6.0.1/docs → agentirc_cli-6.1.0/docs/culture}/reflective-development.md +5 -1
- agentirc_cli-6.1.0/docs/culture/vision-patterns-index.md +12 -0
- agentirc_cli-6.0.1/docs/what-is-culture.md → agentirc_cli-6.1.0/docs/culture/vision.md +5 -1
- agentirc_cli-6.1.0/docs/culture/why-culture.md +59 -0
- {agentirc_cli-6.0.1/docs → agentirc_cli-6.1.0/docs/reference}/architecture/agent-harness-spec.md +7 -3
- agentirc_cli-6.1.0/docs/reference/architecture/index.md +13 -0
- agentirc_cli-6.1.0/docs/reference/architecture/layers.md +350 -0
- {agentirc_cli-6.0.1/docs → agentirc_cli-6.1.0/docs/reference}/architecture/threads.md +7 -2
- agentirc_cli-6.0.1/docs/culture-cli.md → agentirc_cli-6.1.0/docs/reference/cli/commands.md +85 -3
- agentirc_cli-6.0.1/docs/operations/cli.md → agentirc_cli-6.1.0/docs/reference/cli/index.md +30 -72
- agentirc_cli-6.1.0/docs/reference/harnesses/acp.md +329 -0
- agentirc_cli-6.1.0/docs/reference/harnesses/claude.md +446 -0
- agentirc_cli-6.1.0/docs/reference/harnesses/codex.md +364 -0
- agentirc_cli-6.1.0/docs/reference/harnesses/copilot.md +352 -0
- agentirc_cli-6.1.0/docs/reference/harnesses/index.md +34 -0
- agentirc_cli-6.1.0/docs/reference/index.md +12 -0
- agentirc_cli-6.1.0/docs/reference/server/architecture.md +182 -0
- agentirc_cli-6.1.0/docs/reference/server/config.md +236 -0
- agentirc_cli-6.1.0/docs/reference/server/deployment.md +113 -0
- agentirc_cli-6.1.0/docs/reference/server/index.md +78 -0
- agentirc_cli-6.0.1/docs/operations/SECURITY.md → agentirc_cli-6.1.0/docs/reference/server/security.md +7 -3
- agentirc_cli-6.1.0/docs/shared/concepts/federation.md +71 -0
- agentirc_cli-6.1.0/docs/shared/concepts/harnesses.md +77 -0
- agentirc_cli-6.1.0/docs/shared/concepts/humans-and-agents.md +54 -0
- agentirc_cli-6.1.0/docs/shared/concepts/index.md +12 -0
- agentirc_cli-6.0.1/docs/persistent-history.md → agentirc_cli-6.1.0/docs/shared/concepts/persistence.md +9 -0
- {agentirc_cli-6.0.1/docs → agentirc_cli-6.1.0/docs/shared/concepts}/rooms.md +5 -1
- agentirc_cli-6.1.0/docs/shared/demos/magic-demo.md +87 -0
- agentirc_cli-6.1.0/docs/shared/guides/first-session.md +64 -0
- agentirc_cli-6.1.0/docs/shared/guides/index.md +12 -0
- agentirc_cli-6.1.0/docs/shared/guides/join-as-human.md +95 -0
- agentirc_cli-6.1.0/docs/shared/guides/local-setup.md +71 -0
- agentirc_cli-6.1.0/docs/shared/guides/multi-machine.md +85 -0
- {agentirc_cli-6.0.1/docs → agentirc_cli-6.1.0/docs/shared}/use-cases/01-pair-programming.md +3 -0
- {agentirc_cli-6.0.1/docs → agentirc_cli-6.1.0/docs/shared}/use-cases/02-code-review-ensemble.md +3 -0
- {agentirc_cli-6.0.1/docs → agentirc_cli-6.1.0/docs/shared}/use-cases/03-cross-server-delegation.md +3 -0
- {agentirc_cli-6.0.1/docs → agentirc_cli-6.1.0/docs/shared}/use-cases/04-knowledge-propagation.md +3 -0
- {agentirc_cli-6.0.1/docs → agentirc_cli-6.1.0/docs/shared}/use-cases/05-the-observer.md +3 -0
- {agentirc_cli-6.0.1/docs → agentirc_cli-6.1.0/docs/shared}/use-cases/06-cross-server-ops.md +3 -0
- {agentirc_cli-6.0.1/docs → agentirc_cli-6.1.0/docs/shared}/use-cases/07-supervisor-intervention.md +3 -0
- {agentirc_cli-6.0.1/docs → agentirc_cli-6.1.0/docs/shared}/use-cases/08-apps-as-agents.md +3 -0
- {agentirc_cli-6.0.1/docs → agentirc_cli-6.1.0/docs/shared}/use-cases/09-research-swarm.md +3 -0
- {agentirc_cli-6.0.1/docs → agentirc_cli-6.1.0/docs/shared}/use-cases/10-agent-lifecycle.md +3 -0
- {agentirc_cli-6.0.1/docs → agentirc_cli-6.1.0/docs/shared}/use-cases-index.md +4 -1
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/pyproject.toml +1 -1
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/uv.lock +1 -1
- agentirc_cli-6.0.1/.github/workflows/pages.yml +0 -53
- agentirc_cli-6.0.1/CNAME +0 -1
- agentirc_cli-6.0.1/PKG-INFO +0 -241
- agentirc_cli-6.0.1/README.md +0 -217
- agentirc_cli-6.0.1/_config.yml +0 -58
- agentirc_cli-6.0.1/_sass/custom/custom.scss +0 -16
- agentirc_cli-6.0.1/docs/agent-readiness.md +0 -102
- agentirc_cli-6.0.1/docs/agentic-self-learn.md +0 -110
- agentirc_cli-6.0.1/docs/agents/decentralized-config.md +0 -194
- agentirc_cli-6.0.1/docs/architecture/agent-client.md +0 -28
- agentirc_cli-6.0.1/docs/architecture/design.md +0 -9
- agentirc_cli-6.0.1/docs/architecture/harness-conformance.md +0 -84
- agentirc_cli-6.0.1/docs/architecture/index.md +0 -18
- agentirc_cli-6.0.1/docs/architecture/layer1-core-irc.md +0 -59
- agentirc_cli-6.0.1/docs/architecture/layer2-attention.md +0 -125
- agentirc_cli-6.0.1/docs/architecture/layer3-skills.md +0 -108
- agentirc_cli-6.0.1/docs/architecture/layer4-federation.md +0 -138
- agentirc_cli-6.0.1/docs/architecture/layer5-agent-harness.md +0 -94
- agentirc_cli-6.0.1/docs/architecture/server-architecture.md +0 -19
- agentirc_cli-6.0.1/docs/channel-polling.md +0 -51
- agentirc_cli-6.0.1/docs/clients/acp/overview.md +0 -165
- agentirc_cli-6.0.1/docs/clients/acp/system-prompt.md +0 -183
- agentirc_cli-6.0.1/docs/clients/claude/configuration.md +0 -176
- agentirc_cli-6.0.1/docs/clients/claude/context-management.md +0 -65
- agentirc_cli-6.0.1/docs/clients/claude/irc-tools.md +0 -187
- agentirc_cli-6.0.1/docs/clients/claude/overview.md +0 -102
- agentirc_cli-6.0.1/docs/clients/claude/setup.md +0 -190
- agentirc_cli-6.0.1/docs/clients/claude/supervisor.md +0 -104
- agentirc_cli-6.0.1/docs/clients/claude/webhooks.md +0 -91
- agentirc_cli-6.0.1/docs/clients/codex/configuration.md +0 -172
- agentirc_cli-6.0.1/docs/clients/codex/context-management.md +0 -66
- agentirc_cli-6.0.1/docs/clients/codex/irc-tools.md +0 -188
- agentirc_cli-6.0.1/docs/clients/codex/overview.md +0 -110
- agentirc_cli-6.0.1/docs/clients/codex/setup.md +0 -216
- agentirc_cli-6.0.1/docs/clients/codex/supervisor.md +0 -119
- agentirc_cli-6.0.1/docs/clients/codex/webhooks.md +0 -91
- agentirc_cli-6.0.1/docs/clients/copilot/configuration.md +0 -223
- agentirc_cli-6.0.1/docs/clients/copilot/context-management.md +0 -74
- agentirc_cli-6.0.1/docs/clients/copilot/irc-tools.md +0 -188
- agentirc_cli-6.0.1/docs/clients/copilot/overview.md +0 -135
- agentirc_cli-6.0.1/docs/clients/copilot/setup.md +0 -223
- agentirc_cli-6.0.1/docs/clients/copilot/supervisor.md +0 -118
- agentirc_cli-6.0.1/docs/clients/copilot/webhooks.md +0 -91
- agentirc_cli-6.0.1/docs/getting-started.md +0 -233
- agentirc_cli-6.0.1/docs/index.md +0 -132
- agentirc_cli-6.0.1/docs/manifest-migration.md +0 -74
- agentirc_cli-6.0.1/docs/operations/bots.md +0 -140
- agentirc_cli-6.0.1/docs/operations/ci.md +0 -42
- agentirc_cli-6.0.1/docs/operations/docs-site.md +0 -47
- agentirc_cli-6.0.1/docs/operations/index.md +0 -14
- agentirc_cli-6.0.1/docs/operations/ops-tooling.md +0 -291
- agentirc_cli-6.0.1/docs/operations/overview.md +0 -87
- agentirc_cli-6.0.1/docs/operations/publishing.md +0 -44
- agentirc_cli-6.0.1/docs/server-rename.md +0 -87
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/.claude/skills/pr-review/SKILL.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/.claude/skills/run-tests/SKILL.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/.claude/skills/run-tests/scripts/test.sh +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/.flake8 +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/.github/workflows/publish.yml +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/.github/workflows/security-checks.yml +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/.github/workflows/tests.yml +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/.markdownlint-cli2.yaml +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/.pr_agent.toml +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/.pre-commit-config.yaml +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/.pylintrc +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/CLAUDE.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/Gemfile +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/Gemfile.lock +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/LICENSE +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/SECURITY.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/_includes/head_custom.html +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/_sass/color_schemes/anthropic.scss +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/assets/images/apple-touch-icon.png +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/assets/images/favicon-16x16.png +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/assets/images/favicon-32x32.png +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/assets/images/favicon.ico +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/__init__.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/__main__.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/agentirc/__init__.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/agentirc/__main__.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/agentirc/channel.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/agentirc/client.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/agentirc/config.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/agentirc/history_store.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/agentirc/ircd.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/agentirc/remote_client.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/agentirc/room_store.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/agentirc/rooms_util.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/agentirc/server_link.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/agentirc/skill.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/agentirc/skills/__init__.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/agentirc/skills/history.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/agentirc/skills/icon.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/agentirc/skills/rooms.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/agentirc/skills/threads.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/agentirc/thread_store.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/aio.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/bots/__init__.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/bots/bot.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/bots/bot_manager.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/bots/config.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/bots/http_listener.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/bots/template_engine.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/bots/virtual_client.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/cli/__init__.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/cli/agent.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/cli/bot.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/cli/channel.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/cli/mesh.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/cli/server.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/cli/shared/__init__.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/cli/shared/constants.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/cli/shared/display.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/cli/shared/formatting.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/cli/shared/ipc.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/cli/shared/mesh.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/cli/shared/process.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/cli/skills.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/__init__.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/acp/__init__.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/acp/agent_runner.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/acp/config.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/acp/culture.yaml +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/acp/daemon.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/acp/ipc.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/acp/irc_transport.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/acp/message_buffer.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/acp/skill/SKILL.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/acp/skill/__init__.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/acp/skill/irc_client.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/acp/socket_server.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/acp/supervisor.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/acp/webhook.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/claude/__init__.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/claude/__main__.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/claude/agent_runner.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/claude/config.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/claude/culture.yaml +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/claude/daemon.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/claude/ipc.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/claude/irc_transport.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/claude/message_buffer.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/claude/skill/SKILL.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/claude/skill/__init__.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/claude/skill/irc_client.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/claude/socket_server.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/claude/supervisor.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/claude/webhook.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/codex/__init__.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/codex/agent_runner.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/codex/config.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/codex/culture.yaml +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/codex/daemon.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/codex/ipc.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/codex/irc_transport.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/codex/message_buffer.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/codex/skill/SKILL.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/codex/skill/__init__.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/codex/skill/irc_client.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/codex/socket_server.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/codex/supervisor.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/codex/webhook.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/copilot/__init__.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/copilot/agent_runner.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/copilot/config.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/copilot/culture.yaml +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/copilot/daemon.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/copilot/ipc.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/copilot/irc_transport.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/copilot/message_buffer.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/copilot/skill/SKILL.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/copilot/skill/__init__.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/copilot/skill/irc_client.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/copilot/socket_server.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/copilot/supervisor.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/clients/copilot/webhook.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/config.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/console/__init__.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/console/app.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/console/client.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/console/commands.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/console/widgets/__init__.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/console/widgets/chat.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/console/widgets/info_panel.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/console/widgets/sidebar.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/credentials.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/formatting.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/learn_prompt.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/mesh_config.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/observer.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/overview/__init__.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/overview/collector.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/overview/model.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/overview/renderer_text.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/overview/renderer_web.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/overview/web/style.css +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/persistence.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/pidfile.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/protocol/__init__.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/protocol/commands.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/protocol/extensions/federation.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/protocol/extensions/history.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/protocol/extensions/icons.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/protocol/extensions/rooms.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/protocol/extensions/tags.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/protocol/extensions/threads.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/protocol/message.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/protocol/protocol-index.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/protocol/replies.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/culture/skills/culture/SKILL.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/resources/github-copilot-sdk-instructions.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/plans/2026-03-19-layer1-core-irc.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/plans/2026-03-21-layer5-agent-harness.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/plans/2026-03-30-overview.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/plans/2026-03-30-rooms-management.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/plans/2026-04-02-conversation-threads.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/plans/2026-04-02-ops-tooling.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/plans/2026-04-04-culture-rename.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/plans/2026-04-05-docs-speak-culture.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/plans/2026-04-06-console-chat.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/plans/2026-04-09-decentralized-agent-config.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/specs/2026-03-19-agentirc-design.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/specs/2026-03-21-layer5-agent-harness-design.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/specs/2026-03-30-overview-design.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/specs/2026-03-30-rooms-management-design.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/specs/2026-04-02-conversation-threads-design.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/specs/2026-04-02-ops-tooling-design.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/specs/2026-04-03-bots-webhooks-design.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/specs/2026-04-04-culture-rename-design.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/specs/2026-04-05-docs-speak-culture-design.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/specs/2026-04-05-lifecycle-reframe-design.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/specs/2026-04-06-cli-reorganization-design.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/specs/2026-04-06-console-chat-design.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/specs/2026-04-07-entity-archiving-design.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/specs/2026-04-07-reflective-development-reframe-design.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/specs/2026-04-08-reflective-development-deepening-design.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/docs/superpowers/specs/2026-04-09-decentralized-agent-config-design.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/favicon.ico +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/packages/agent-harness/README.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/packages/agent-harness/config.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/packages/agent-harness/culture.yaml +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/packages/agent-harness/daemon.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/packages/agent-harness/ipc.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/packages/agent-harness/irc_transport.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/packages/agent-harness/message_buffer.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/packages/agent-harness/skill/SKILL.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/packages/agent-harness/skill/irc_client.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/packages/agent-harness/socket_server.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/packages/agent-harness/webhook.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/plugins/claude-code/.claude-plugin/plugin.json +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/plugins/claude-code/skills/culture/SKILL.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/plugins/claude-code/skills/irc/SKILL.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/plugins/codex/skills/culture-irc/SKILL.md +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/sonar-project.properties +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/__init__.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/conftest.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_acp_daemon.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_agent_runner.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_archive.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_bot.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_bot_config.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_bot_manager.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_bots_integration.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_channel.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_channel_cli.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_codex_daemon.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_connection.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_console_client.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_console_commands.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_console_connection.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_console_icons.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_console_integration.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_copilot_daemon.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_credentials.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_culture_config.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_daemon.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_daemon_config.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_daemon_ipc.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_discovery.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_display.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_federation.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_history.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_http_listener.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_integration_layer5.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_ipc.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_irc_transport.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_learn_prompt.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_link_reconnect.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_manifest_config.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_mention_alias.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_mention_target_cleanup.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_mention_warning.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_mentions.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_mesh_config.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_mesh_readiness.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_message.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_message_buffer.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_messaging.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_migrate_cli.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_modes.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_overview_cli.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_overview_collector.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_overview_model.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_overview_renderer.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_overview_web.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_persistence.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_pidfile.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_poll_loop.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_register_cli.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_room_persistence.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_rooms.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_rooms_federation.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_rooms_integration.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_server_icon_skill.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_setup_update_cli.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_skill_client.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_skill_docs.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_skills.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_socket_server.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_supervisor.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_template_engine.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_thread_buffer.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_threads.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_virtual_client.py +0 -0
- {agentirc_cli-6.0.1 → agentirc_cli-6.1.0}/tests/test_wait_for_port.py +0 -0
- {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,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
|