agentirc-cli 7.2.3__tar.gz → 7.4.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- agentirc_cli-7.4.0/.github/workflows/docs-check.yml +22 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/.gitignore +0 -1
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/CHANGELOG.md +31 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/PKG-INFO +4 -3
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/README.md +2 -2
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/_config.base.yml +0 -1
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/_config.culture.yml +7 -4
- agentirc_cli-7.4.0/_data/sites.yml +4 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/_includes/head_custom.html +2 -7
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/cli/__init__.py +16 -3
- agentirc_cli-7.4.0/culture/cli/agex.py +101 -0
- agentirc_cli-7.4.0/culture/cli/introspect.py +166 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/agentirc/architecture-overview.md +3 -3
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/agentirc/bots.md +3 -2
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/agentirc/events.md +3 -2
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/agentirc/index.md +8 -7
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/agentirc/why-agentirc.md +3 -2
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/culture/features.md +4 -4
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/culture/index.md +1 -1
- agentirc_cli-7.4.0/docs/reference/cli/agex.md +103 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/reference/cli/index.md +10 -0
- agentirc_cli-7.4.0/docs/superpowers/plans/2026-04-22-agex-integration.md +999 -0
- agentirc_cli-7.4.0/docs/superpowers/specs/2026-04-22-agex-integration-design.md +258 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/pyproject.toml +2 -1
- agentirc_cli-7.2.3/sitemap-main.html → agentirc_cli-7.4.0/sitemap-agentirc.html +2 -2
- agentirc_cli-7.4.0/sitemap-main.html +19 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/sitemap.html +2 -5
- agentirc_cli-7.4.0/tests/test_cli_agex.py +47 -0
- agentirc_cli-7.4.0/tests/test_cli_introspect.py +119 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/uv.lock +31 -1
- agentirc_cli-7.2.3/.github/workflows/docs-check.yml +0 -37
- agentirc_cli-7.2.3/_config.agentirc.yml +0 -48
- agentirc_cli-7.2.3/_data/sites.yml +0 -3
- agentirc_cli-7.2.3/_plugins/site_filter.rb +0 -18
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/.claude/agents/doc-test-alignment.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/.claude/skills/pr-review/SKILL.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/.claude/skills/run-tests/SKILL.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/.claude/skills/run-tests/scripts/test.sh +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/.flake8 +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/.github/workflows/publish.yml +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/.github/workflows/security-checks.yml +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/.github/workflows/tests.yml +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/.markdownlint-cli2.yaml +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/.pr_agent.toml +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/.pre-commit-config.yaml +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/.pylintrc +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/CLAUDE.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/Gemfile +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/Gemfile.lock +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/LICENSE +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/SECURITY.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/_sass/color_schemes/anthropic.scss +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/_sass/color_schemes/dark-terminal.scss +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/_sass/custom/custom.scss +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/assets/images/IMG_3183.png +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/assets/images/apple-touch-icon.png +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/assets/images/favicon-16x16.png +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/assets/images/favicon-32x32.png +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/assets/images/favicon.ico +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/assets/images/og-agentirc.png +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/assets/images/og-culture.png +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/__init__.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/__main__.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/agentirc/CLAUDE.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/agentirc/__init__.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/agentirc/__main__.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/agentirc/channel.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/agentirc/client.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/agentirc/config.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/agentirc/docs/agentirc-architecture.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/agentirc/docs/agentirc-features.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/agentirc/docs/agentirc-skill.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/agentirc/docs/agentirc.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/agentirc/events.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/agentirc/history_store.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/agentirc/ircd.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/agentirc/remote_client.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/agentirc/room_store.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/agentirc/rooms_util.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/agentirc/server_link.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/agentirc/skill.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/agentirc/skills/__init__.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/agentirc/skills/history.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/agentirc/skills/icon.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/agentirc/skills/rooms.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/agentirc/skills/threads.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/agentirc/thread_store.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/aio.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/bots/__init__.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/bots/bot.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/bots/bot_manager.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/bots/config.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/bots/filter_dsl.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/bots/http_listener.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/bots/system/__init__.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/bots/system/welcome/__init__.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/bots/system/welcome/bot.yaml +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/bots/system/welcome/handler.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/bots/template_engine.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/bots/virtual_client.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/cli/agent.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/cli/bot.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/cli/channel.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/cli/mesh.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/cli/server.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/cli/shared/__init__.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/cli/shared/constants.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/cli/shared/display.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/cli/shared/formatting.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/cli/shared/ipc.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/cli/shared/mesh.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/cli/shared/process.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/cli/skills.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/__init__.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/acp/__init__.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/acp/agent_runner.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/acp/config.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/acp/culture.yaml +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/acp/daemon.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/acp/ipc.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/acp/irc_transport.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/acp/message_buffer.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/acp/skill/SKILL.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/acp/skill/__init__.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/acp/skill/irc_client.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/acp/socket_server.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/acp/supervisor.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/acp/webhook.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/claude/__init__.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/claude/__main__.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/claude/agent_runner.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/claude/config.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/claude/culture.yaml +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/claude/daemon.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/claude/ipc.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/claude/irc_transport.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/claude/message_buffer.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/claude/skill/SKILL.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/claude/skill/__init__.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/claude/skill/irc_client.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/claude/socket_server.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/claude/supervisor.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/claude/webhook.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/codex/__init__.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/codex/agent_runner.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/codex/config.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/codex/culture.yaml +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/codex/daemon.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/codex/ipc.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/codex/irc_transport.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/codex/message_buffer.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/codex/skill/SKILL.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/codex/skill/__init__.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/codex/skill/irc_client.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/codex/socket_server.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/codex/supervisor.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/codex/webhook.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/copilot/__init__.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/copilot/agent_runner.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/copilot/config.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/copilot/culture.yaml +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/copilot/daemon.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/copilot/ipc.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/copilot/irc_transport.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/copilot/message_buffer.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/copilot/skill/SKILL.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/copilot/skill/__init__.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/copilot/skill/irc_client.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/copilot/socket_server.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/copilot/supervisor.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/clients/copilot/webhook.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/config.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/console/__init__.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/console/app.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/console/client.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/console/commands.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/console/status.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/console/widgets/__init__.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/console/widgets/chat.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/console/widgets/info_panel.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/console/widgets/sidebar.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/constants.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/credentials.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/formatting.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/learn_prompt.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/mesh_config.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/observer.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/overview/__init__.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/overview/collector.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/overview/model.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/overview/renderer_text.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/overview/renderer_web.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/overview/web/style.css +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/persistence.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/pidfile.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/protocol/__init__.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/protocol/commands.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/protocol/extensions/events.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/protocol/extensions/federation.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/protocol/extensions/history.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/protocol/extensions/icons.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/protocol/extensions/rooms.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/protocol/extensions/tags.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/protocol/extensions/threads.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/protocol/message.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/protocol/protocol-index.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/protocol/replies.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/culture/skills/culture/SKILL.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/README.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/culture/agent-lifecycle.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/culture/choose-a-harness.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/culture/mental-model.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/culture/operate.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/culture/patterns.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/culture/quickstart.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/culture/reflective-development.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/culture/vision-patterns-index.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/culture/vision.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/culture/what-is-culture.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/reference/architecture/agent-harness-spec.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/reference/architecture/index.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/reference/architecture/layers.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/reference/architecture/threads.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/reference/cli/commands.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/reference/console.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/reference/harnesses/acp.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/reference/harnesses/claude.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/reference/harnesses/codex.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/reference/harnesses/copilot.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/reference/harnesses/index.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/reference/index.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/reference/server/architecture.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/reference/server/config.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/reference/server/deployment.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/reference/server/index.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/reference/server/security.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/resources/github-copilot-sdk-instructions.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/resources/positioning.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/shared/concepts/federation.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/shared/concepts/harnesses.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/shared/concepts/humans-and-agents.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/shared/concepts/index.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/shared/concepts/persistence.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/shared/concepts/rooms.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/shared/demos/magic-demo.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/shared/guides/first-session.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/shared/guides/index.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/shared/guides/join-as-human.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/shared/guides/local-setup.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/shared/guides/multi-machine.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/shared/use-cases/01-pair-programming.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/shared/use-cases/02-code-review-ensemble.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/shared/use-cases/03-cross-server-delegation.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/shared/use-cases/04-knowledge-propagation.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/shared/use-cases/05-the-observer.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/shared/use-cases/06-cross-server-ops.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/shared/use-cases/07-supervisor-intervention.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/shared/use-cases/08-apps-as-agents.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/shared/use-cases/09-research-swarm.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/shared/use-cases/10-agent-lifecycle.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/shared/use-cases-index.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/superpowers/plans/2026-03-19-layer1-core-irc.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/superpowers/plans/2026-03-21-layer5-agent-harness.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/superpowers/plans/2026-03-30-overview.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/superpowers/plans/2026-03-30-rooms-management.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/superpowers/plans/2026-04-02-conversation-threads.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/superpowers/plans/2026-04-02-ops-tooling.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/superpowers/plans/2026-04-04-culture-rename.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/superpowers/plans/2026-04-05-docs-speak-culture.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/superpowers/plans/2026-04-06-console-chat.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/superpowers/plans/2026-04-09-decentralized-agent-config.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/superpowers/plans/2026-04-12-console-enhancements.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/superpowers/plans/2026-04-15-mesh-events.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/superpowers/plans/2026-04-18-culture-dev-positioning.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/superpowers/specs/2026-03-19-agentirc-design.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/superpowers/specs/2026-03-21-layer5-agent-harness-design.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/superpowers/specs/2026-03-30-overview-design.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/superpowers/specs/2026-03-30-rooms-management-design.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/superpowers/specs/2026-04-02-conversation-threads-design.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/superpowers/specs/2026-04-02-ops-tooling-design.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/superpowers/specs/2026-04-03-bots-webhooks-design.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/superpowers/specs/2026-04-04-culture-rename-design.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/superpowers/specs/2026-04-05-docs-speak-culture-design.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/superpowers/specs/2026-04-05-lifecycle-reframe-design.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/superpowers/specs/2026-04-06-cli-reorganization-design.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/superpowers/specs/2026-04-06-console-chat-design.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/superpowers/specs/2026-04-07-entity-archiving-design.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/superpowers/specs/2026-04-07-reflective-development-reframe-design.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/superpowers/specs/2026-04-08-reflective-development-deepening-design.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/superpowers/specs/2026-04-09-decentralized-agent-config-design.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/superpowers/specs/2026-04-12-console-enhancements-design.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/superpowers/specs/2026-04-15-mesh-events-design.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/superpowers/specs/2026-04-17-sites-repositioning-design.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/docs/superpowers/specs/2026-04-18-culture-dev-positioning-design.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/favicon.ico +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/packages/agent-harness/README.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/packages/agent-harness/config.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/packages/agent-harness/culture.yaml +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/packages/agent-harness/daemon.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/packages/agent-harness/ipc.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/packages/agent-harness/irc_transport.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/packages/agent-harness/message_buffer.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/packages/agent-harness/skill/SKILL.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/packages/agent-harness/skill/irc_client.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/packages/agent-harness/socket_server.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/packages/agent-harness/webhook.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/plugins/claude-code/.claude-plugin/plugin.json +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/plugins/claude-code/skills/culture/SKILL.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/plugins/claude-code/skills/irc/SKILL.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/plugins/codex/skills/culture-irc/SKILL.md +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/robots.txt +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/sonar-project.properties +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/__init__.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/conftest.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_acp_daemon.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_agent_runner.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_archive.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_bot.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_bot_config.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_bot_config_fires_event_toplevel.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_bot_manager.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_bots_integration.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_channel.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_channel_cli.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_codex_daemon.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_connection.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_console_chat_markdown.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_console_client.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_console_commands.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_console_connection.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_console_fixes_224_227.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_console_icons.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_console_integration.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_console_status.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_copilot_daemon.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_credentials.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_culture_config.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_daemon.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_daemon_config.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_daemon_ipc.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_discovery.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_display.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_events_basic.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_events_bot_chain.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_events_bot_trigger.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_events_cap_fallback.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_events_catalog.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_events_federation.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_events_history.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_events_lifecycle.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_events_reserved_nick.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_federation.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_filter_dsl.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_history.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_http_listener.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_integration_layer5.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_ipc.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_irc_transport.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_irc_transport_tags.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_learn_prompt.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_link_reconnect.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_manifest_config.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_mention_alias.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_mention_target_cleanup.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_mention_warning.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_mentions.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_mesh_config.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_mesh_readiness.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_message.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_message_buffer.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_message_tags.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_messaging.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_migrate_cli.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_modes.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_overview_cli.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_overview_collector.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_overview_model.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_overview_renderer.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_overview_web.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_persistence.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_persistence_timeout.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_pidfile.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_poll_loop.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_register_cli.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_room_persistence.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_rooms.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_rooms_federation.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_rooms_integration.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_server_icon_skill.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_setup_update_cli.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_skill_client.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_skill_docs.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_skills.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_socket_server.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_supervisor.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_template_engine.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_thread_buffer.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_threads.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_virtual_client.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_wait_for_port.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_webhook.py +0 -0
- {agentirc_cli-7.2.3 → agentirc_cli-7.4.0}/tests/test_welcome_bot.py +0 -0
|
@@ -0,0 +1,22 @@
|
|
|
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 docs
|
|
20
|
+
run: bundle exec jekyll build --config _config.base.yml,_config.culture.yml -d _site_culture
|
|
21
|
+
env:
|
|
22
|
+
JEKYLL_ENV: production
|
|
@@ -4,6 +4,37 @@ All notable changes to this project will be documented in this file.
|
|
|
4
4
|
|
|
5
5
|
Format follows [Keep a Changelog](https://keepachangelog.com/).
|
|
6
6
|
|
|
7
|
+
## [7.4.0] - 2026-04-22
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- culture agex passthrough to the standalone agex CLI (new subcommand embedding agex via typer)
|
|
12
|
+
- Universal verbs culture explain, culture overview, culture learn at the CLI root, with a per-topic handler registry (culture/cli/introspect.py)
|
|
13
|
+
- agex-cli>=0.13,<1.0 as a library dependency
|
|
14
|
+
|
|
15
|
+
## [7.3.0] - 2026-04-21
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
|
|
19
|
+
- `sitemap-agentirc.html`: Liquid-templated sub-sitemap emitted at `/agentirc/sitemap.xml`, listing only pages under `/agentirc/*`. `sitemap.xml` index (from 7.2.3) extended to list it alongside `/sitemap-main.xml` and `/agex/sitemap.xml`.
|
|
20
|
+
- AgentIRC section in the main just-the-docs nav (`has_children: true`, `nav_order: 10`) grouping the four runtime pages.
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
|
|
24
|
+
- Fold AgentIRC into the main Culture Jekyll build under `/agentirc/*` permalinks. Retire `_config.agentirc.yml` and the separate `_site_agentirc/` target. Completes the one-origin consolidation plan: `culture.dev`, `culture.dev/agex/`, and `culture.dev/agentirc/` all live on a single origin now.
|
|
25
|
+
|
|
26
|
+
### Removed
|
|
27
|
+
|
|
28
|
+
- `_config.agentirc.yml` — no longer a separate Jekyll build target.
|
|
29
|
+
- `_plugins/site_filter.rb` — dropped the per-build `sites:` filter; single-build semantics make it a noop. Existing `sites:` front matter on docs is now harmless metadata.
|
|
30
|
+
- `.github/workflows/docs-check.yml`: second Jekyll build step and the `sites:` front-matter presence check — single build, no filter.
|
|
31
|
+
- `.gitignore` and `_config.base.yml`: `_site_agentirc/` entries.
|
|
32
|
+
- `rel=related` links to `site.data.sites.agentirc` in `_includes/head_custom.html` — same-origin now, no longer semantically meaningful; agex `rel=related` retained.
|
|
33
|
+
|
|
34
|
+
### Fixed
|
|
35
|
+
|
|
36
|
+
- `docs/culture/features.md` and `docs/culture/index.md`: eliminated double-slash bug from `{{ site.data.sites.agentirc }}` concatenations (the data value now ends in a trailing slash from culture 7.2.1) by switching those cross-references to same-origin `relative_url` links.
|
|
37
|
+
|
|
7
38
|
## [7.2.3] - 2026-04-21
|
|
8
39
|
|
|
9
40
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agentirc-cli
|
|
3
|
-
Version: 7.
|
|
3
|
+
Version: 7.4.0
|
|
4
4
|
Summary: Legacy alias for culture — install culture instead
|
|
5
5
|
Project-URL: Homepage, https://github.com/OriNachum/culture
|
|
6
6
|
Author: Ori Nachum
|
|
@@ -12,6 +12,7 @@ Classifier: License :: OSI Approved :: MIT License
|
|
|
12
12
|
Classifier: Programming Language :: Python :: 3.12
|
|
13
13
|
Classifier: Topic :: Communications :: Chat :: Internet Relay Chat
|
|
14
14
|
Requires-Python: >=3.12
|
|
15
|
+
Requires-Dist: agex-cli<1.0,>=0.13
|
|
15
16
|
Requires-Dist: aiohttp>=3.9
|
|
16
17
|
Requires-Dist: anthropic>=0.40
|
|
17
18
|
Requires-Dist: claude-agent-sdk>=0.1
|
|
@@ -33,7 +34,7 @@ The complete human-agent collaboration system built around AgentIRC.
|
|
|
33
34
|
|
|
34
35
|
- [Quickstart](https://culture.dev/quickstart/) — install and start in 5 minutes
|
|
35
36
|
- [Choose a Harness](https://culture.dev/choose-a-harness/) — Claude Code, Codex, Copilot, ACP
|
|
36
|
-
- [AgentIRC Architecture](https://
|
|
37
|
+
- [AgentIRC Architecture](https://culture.dev/agentirc/architecture-overview/) — the runtime layer
|
|
37
38
|
- [Vision & Patterns](https://culture.dev/vision/) — the broader model
|
|
38
39
|
|
|
39
40
|
## Install
|
|
@@ -46,7 +47,7 @@ culture server start
|
|
|
46
47
|
## Documentation
|
|
47
48
|
|
|
48
49
|
- **[culture.dev](https://culture.dev)** — the full solution: quickstart, harnesses, guides, vision
|
|
49
|
-
- **[
|
|
50
|
+
- **[culture.dev/agentirc](https://culture.dev/agentirc/)** — the runtime layer: architecture, protocol, federation
|
|
50
51
|
|
|
51
52
|
## License
|
|
52
53
|
|
|
@@ -9,7 +9,7 @@ The complete human-agent collaboration system built around AgentIRC.
|
|
|
9
9
|
|
|
10
10
|
- [Quickstart](https://culture.dev/quickstart/) — install and start in 5 minutes
|
|
11
11
|
- [Choose a Harness](https://culture.dev/choose-a-harness/) — Claude Code, Codex, Copilot, ACP
|
|
12
|
-
- [AgentIRC Architecture](https://
|
|
12
|
+
- [AgentIRC Architecture](https://culture.dev/agentirc/architecture-overview/) — the runtime layer
|
|
13
13
|
- [Vision & Patterns](https://culture.dev/vision/) — the broader model
|
|
14
14
|
|
|
15
15
|
## Install
|
|
@@ -22,7 +22,7 @@ culture server start
|
|
|
22
22
|
## Documentation
|
|
23
23
|
|
|
24
24
|
- **[culture.dev](https://culture.dev)** — the full solution: quickstart, harnesses, guides, vision
|
|
25
|
-
- **[
|
|
25
|
+
- **[culture.dev/agentirc](https://culture.dev/agentirc/)** — the runtime layer: architecture, protocol, federation
|
|
26
26
|
|
|
27
27
|
## License
|
|
28
28
|
|
|
@@ -33,9 +33,11 @@ defaults:
|
|
|
33
33
|
|
|
34
34
|
aux_links:
|
|
35
35
|
"AgentIRC":
|
|
36
|
-
- "
|
|
37
|
-
"
|
|
36
|
+
- "/agentirc/"
|
|
37
|
+
"Agent Experience":
|
|
38
38
|
- "https://culture.dev/agex/"
|
|
39
|
+
"Citation CLI":
|
|
40
|
+
- "/citation-cli/"
|
|
39
41
|
"GitHub":
|
|
40
42
|
- "https://github.com/OriNachum/culture"
|
|
41
43
|
|
|
@@ -43,6 +45,7 @@ aux_links_new_tab: false
|
|
|
43
45
|
|
|
44
46
|
footer_content: >-
|
|
45
47
|
Culture — human-agent collaboration built around
|
|
46
|
-
<a href="
|
|
47
|
-
Agent
|
|
48
|
+
<a href="/agentirc/">AgentIRC</a>.
|
|
49
|
+
Agent Experience via <a href="https://culture.dev/agex/">agex-cli</a>.
|
|
50
|
+
Code distribution via <a href="/citation-cli/">Citation CLI</a>.
|
|
48
51
|
Source on <a href="https://github.com/OriNachum/culture">GitHub</a>.
|
|
@@ -3,10 +3,5 @@
|
|
|
3
3
|
<link rel="icon" type="image/png" sizes="32x32" href="{{ '/assets/images/favicon-32x32.png' | relative_url }}">
|
|
4
4
|
<link rel="icon" type="image/png" sizes="16x16" href="{{ '/assets/images/favicon-16x16.png' | relative_url }}">
|
|
5
5
|
<link rel="apple-touch-icon" sizes="180x180" href="{{ '/assets/images/apple-touch-icon.png' | relative_url }}">
|
|
6
|
-
{
|
|
7
|
-
<link rel="related" href="{{ site.data.sites.
|
|
8
|
-
<link rel="related" href="{{ site.data.sites.agex }}" title="agex">
|
|
9
|
-
{% elsif site.build_site == "agentirc" %}
|
|
10
|
-
<link rel="related" href="{{ site.data.sites.culture }}" title="Culture">
|
|
11
|
-
<link rel="related" href="{{ site.data.sites.agex }}" title="agex">
|
|
12
|
-
{% endif %}
|
|
6
|
+
<link rel="related" href="{{ site.data.sites.agex }}" title="Agent Experience">
|
|
7
|
+
<link rel="related" href="{{ site.data.sites.citation_cli }}" title="Citation CLI">
|
|
@@ -7,6 +7,12 @@ Commands are organized into noun-based groups:
|
|
|
7
7
|
culture channel {list,read,message,who}
|
|
8
8
|
culture bot {create,start,stop,list,inspect,archive,unarchive}
|
|
9
9
|
culture skills {install}
|
|
10
|
+
culture agex {...full passthrough to the standalone `agex` CLI...}
|
|
11
|
+
|
|
12
|
+
Universal verbs (available at the root):
|
|
13
|
+
culture explain [topic] full description of topic (default: culture)
|
|
14
|
+
culture overview [topic] shallow summary
|
|
15
|
+
culture learn [topic] agent-facing onboarding prompt
|
|
10
16
|
"""
|
|
11
17
|
|
|
12
18
|
from __future__ import annotations
|
|
@@ -16,9 +22,16 @@ import logging
|
|
|
16
22
|
import sys
|
|
17
23
|
|
|
18
24
|
from culture import __version__
|
|
19
|
-
from culture.cli import agent, bot, channel, mesh, server, skills
|
|
25
|
+
from culture.cli import agent, agex, bot, channel, introspect, mesh, server, skills
|
|
26
|
+
|
|
27
|
+
GROUPS = [agent, server, mesh, channel, bot, skills, agex, introspect]
|
|
28
|
+
|
|
20
29
|
|
|
21
|
-
|
|
30
|
+
def _names_of(group) -> set[str]:
|
|
31
|
+
names = getattr(group, "NAMES", None)
|
|
32
|
+
if names is not None:
|
|
33
|
+
return set(names)
|
|
34
|
+
return {group.NAME}
|
|
22
35
|
|
|
23
36
|
|
|
24
37
|
def _build_parser() -> argparse.ArgumentParser:
|
|
@@ -48,7 +61,7 @@ def main() -> None:
|
|
|
48
61
|
|
|
49
62
|
try:
|
|
50
63
|
for group in GROUPS:
|
|
51
|
-
if args.command
|
|
64
|
+
if args.command in _names_of(group):
|
|
52
65
|
group.dispatch(args)
|
|
53
66
|
return
|
|
54
67
|
parser.print_help()
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"""`culture agex` — passthrough to the standalone agex CLI.
|
|
2
|
+
|
|
3
|
+
Also registers universal-verb handlers for the ``agex`` topic so
|
|
4
|
+
``culture explain agex`` / ``culture overview agex`` / ``culture learn agex``
|
|
5
|
+
route through culture's universal-verb path.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
import argparse
|
|
11
|
+
import contextlib
|
|
12
|
+
import io
|
|
13
|
+
import sys
|
|
14
|
+
|
|
15
|
+
from culture.cli import introspect
|
|
16
|
+
|
|
17
|
+
NAME = "agex"
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def _run_agex(argv: list[str]) -> None:
|
|
21
|
+
"""Invoke agex's typer app in-process.
|
|
22
|
+
|
|
23
|
+
Uses standalone_mode=True (the typer default) so typer's own --help,
|
|
24
|
+
--version, and Exit handling work unchanged. Typer calls ``sys.exit``
|
|
25
|
+
when done, raising ``SystemExit``; this function lets that propagate
|
|
26
|
+
so the caller (the ``culture agex`` passthrough) exits with the code
|
|
27
|
+
the user expects. Callers that need to capture output and translate
|
|
28
|
+
the exit into a return value should use :func:`_capture_agex` instead.
|
|
29
|
+
"""
|
|
30
|
+
try:
|
|
31
|
+
from agent_experience.cli import app
|
|
32
|
+
except ImportError as exc: # pragma: no cover — declared dep
|
|
33
|
+
print(f"agex-cli is not installed: {exc}", file=sys.stderr)
|
|
34
|
+
sys.exit(2)
|
|
35
|
+
app(args=argv)
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def _capture_agex(argv: list[str]) -> tuple[str, int]:
|
|
39
|
+
"""Run agex with stdout + stderr captured, translating SystemExit.
|
|
40
|
+
|
|
41
|
+
The universal-verb handlers need ``(output, exit_code)`` rather than a
|
|
42
|
+
process-level exit, so we deliberately catch ``SystemExit`` here and
|
|
43
|
+
translate it into a return value. The :func:`_run_agex` variant is for
|
|
44
|
+
the passthrough path where the exit must propagate.
|
|
45
|
+
"""
|
|
46
|
+
buf = io.StringIO()
|
|
47
|
+
try:
|
|
48
|
+
with contextlib.redirect_stdout(buf), contextlib.redirect_stderr(buf):
|
|
49
|
+
_run_agex(argv)
|
|
50
|
+
except SystemExit as exc: # NOSONAR S5754 — see docstring
|
|
51
|
+
code = exc.code
|
|
52
|
+
if code is None:
|
|
53
|
+
return buf.getvalue(), 0
|
|
54
|
+
if isinstance(code, int):
|
|
55
|
+
return buf.getvalue(), code
|
|
56
|
+
return buf.getvalue() + str(code), 1
|
|
57
|
+
return buf.getvalue(), 0
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
# --- universal-verb topic handlers for ``agex`` ---------------------------
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def _agex_explain(_topic: str | None) -> tuple[str, int]:
|
|
64
|
+
return _capture_agex(["explain", "agex"])
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def _agex_overview(_topic: str | None) -> tuple[str, int]:
|
|
68
|
+
return _capture_agex(["overview", "--agent", "claude-code"])
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def _agex_learn(_topic: str | None) -> tuple[str, int]:
|
|
72
|
+
return _capture_agex(["learn", "--agent", "claude-code"])
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
introspect.register_topic(
|
|
76
|
+
"agex",
|
|
77
|
+
explain=_agex_explain,
|
|
78
|
+
overview=_agex_overview,
|
|
79
|
+
learn=_agex_learn,
|
|
80
|
+
)
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
# --- CLI group protocol ---------------------------------------------------
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
def register(subparsers: "argparse._SubParsersAction") -> None:
|
|
87
|
+
# prefix_chars=chr(0) means the agex subparser has no recognized flag
|
|
88
|
+
# prefix character, so every token (including --help, --version) is
|
|
89
|
+
# treated as positional and captured in agex_args for typer to handle.
|
|
90
|
+
p = subparsers.add_parser(
|
|
91
|
+
NAME,
|
|
92
|
+
help="Run agex (agent-experience CLI) via passthrough",
|
|
93
|
+
add_help=False,
|
|
94
|
+
prefix_chars=chr(0),
|
|
95
|
+
)
|
|
96
|
+
p.add_argument("agex_args", nargs=argparse.REMAINDER, help="Arguments passed to agex")
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
def dispatch(args: argparse.Namespace) -> None:
|
|
100
|
+
rest = list(getattr(args, "agex_args", []) or [])
|
|
101
|
+
_run_agex(rest)
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
"""Universal introspection verb dispatcher.
|
|
2
|
+
|
|
3
|
+
Registers three top-level verbs (``explain``, ``overview``, ``learn``)
|
|
4
|
+
on the culture CLI and dispatches each to a per-topic handler.
|
|
5
|
+
|
|
6
|
+
The module conforms to the extended culture CLI group protocol:
|
|
7
|
+
exports ``NAMES`` (frozenset) instead of the singular ``NAME``.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from __future__ import annotations
|
|
11
|
+
|
|
12
|
+
import argparse
|
|
13
|
+
import logging
|
|
14
|
+
from typing import Callable
|
|
15
|
+
|
|
16
|
+
_log = logging.getLogger(__name__)
|
|
17
|
+
|
|
18
|
+
Handler = Callable[[str | None], tuple[str, int]]
|
|
19
|
+
|
|
20
|
+
NAMES = frozenset({"explain", "overview", "learn"})
|
|
21
|
+
|
|
22
|
+
_explain: dict[str, Handler] = {}
|
|
23
|
+
_overview: dict[str, Handler] = {}
|
|
24
|
+
_learn: dict[str, Handler] = {}
|
|
25
|
+
|
|
26
|
+
_REGISTRIES: dict[str, dict[str, Handler]] = {
|
|
27
|
+
"explain": _explain,
|
|
28
|
+
"overview": _overview,
|
|
29
|
+
"learn": _learn,
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def register_topic(
|
|
34
|
+
topic: str,
|
|
35
|
+
*,
|
|
36
|
+
explain: Handler | None = None,
|
|
37
|
+
overview: Handler | None = None,
|
|
38
|
+
learn: Handler | None = None,
|
|
39
|
+
) -> None:
|
|
40
|
+
"""Register handlers for a topic. Any verb may be omitted.
|
|
41
|
+
|
|
42
|
+
Re-registration is last-write-wins; a warning is logged when an existing
|
|
43
|
+
handler is overwritten so accidental double-registration is visible at
|
|
44
|
+
culture's default INFO log level.
|
|
45
|
+
"""
|
|
46
|
+
for verb, handler, registry in (
|
|
47
|
+
("explain", explain, _explain),
|
|
48
|
+
("overview", overview, _overview),
|
|
49
|
+
("learn", learn, _learn),
|
|
50
|
+
):
|
|
51
|
+
if handler is None:
|
|
52
|
+
continue
|
|
53
|
+
if topic in registry:
|
|
54
|
+
_log.warning("overriding %s handler for topic %r", verb, topic)
|
|
55
|
+
registry[topic] = handler
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def _clear_registry() -> None:
|
|
59
|
+
"""Test-only: wipe all registries, then re-register the root handlers."""
|
|
60
|
+
_explain.clear()
|
|
61
|
+
_overview.clear()
|
|
62
|
+
_learn.clear()
|
|
63
|
+
_register_root()
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def _resolve(verb: str, topic: str | None) -> tuple[str, int]:
|
|
67
|
+
registry = _REGISTRIES[verb]
|
|
68
|
+
effective = topic if topic is not None else "culture"
|
|
69
|
+
handler = registry.get(effective)
|
|
70
|
+
if handler is None:
|
|
71
|
+
available = sorted(registry.keys())
|
|
72
|
+
msg = (
|
|
73
|
+
f"unknown topic '{effective}' for {verb};"
|
|
74
|
+
f" available: {', '.join(available) or '(none)'}"
|
|
75
|
+
)
|
|
76
|
+
return msg, 1
|
|
77
|
+
return handler(topic)
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def explain(topic: str | None) -> tuple[str, int]:
|
|
81
|
+
return _resolve("explain", topic)
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
def overview(topic: str | None) -> tuple[str, int]:
|
|
85
|
+
return _resolve("overview", topic)
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
def learn(topic: str | None) -> tuple[str, int]:
|
|
89
|
+
return _resolve("learn", topic)
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
_NAMESPACES = ("agex", "server", "agent", "mesh", "bot", "channel", "skills")
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
def _culture_explain(_topic: str | None) -> tuple[str, int]:
|
|
96
|
+
lines = [
|
|
97
|
+
"# Culture",
|
|
98
|
+
"",
|
|
99
|
+
"Culture is the framework of agreements that makes agent behavior",
|
|
100
|
+
"portable, inspectable, and effective. It hosts a mesh of IRC servers",
|
|
101
|
+
"where AI agents collaborate, share knowledge, and coordinate work.",
|
|
102
|
+
"",
|
|
103
|
+
"## Namespaces",
|
|
104
|
+
"",
|
|
105
|
+
]
|
|
106
|
+
for ns in _NAMESPACES:
|
|
107
|
+
registered = any(ns in registry for registry in _REGISTRIES.values())
|
|
108
|
+
marker = "" if registered else " (coming soon)"
|
|
109
|
+
lines.append(f"- `culture {ns}`{marker}")
|
|
110
|
+
lines.append("")
|
|
111
|
+
lines.append("## Universal verbs")
|
|
112
|
+
lines.append("")
|
|
113
|
+
lines.append("- `culture explain [topic]` — deep description")
|
|
114
|
+
lines.append("- `culture overview [topic]` — shallow map")
|
|
115
|
+
lines.append("- `culture learn [topic]` — agent onboarding prompt")
|
|
116
|
+
return "\n".join(lines) + "\n", 0
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
def _culture_overview(_topic: str | None) -> tuple[str, int]:
|
|
120
|
+
return (
|
|
121
|
+
"Culture: agent IRC mesh. Namespaces: "
|
|
122
|
+
+ ", ".join(_NAMESPACES)
|
|
123
|
+
+ ". Universal verbs: explain, overview, learn.\n",
|
|
124
|
+
0,
|
|
125
|
+
)
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
def _culture_learn(_topic: str | None) -> tuple[str, int]:
|
|
129
|
+
from culture.learn_prompt import generate_learn_prompt
|
|
130
|
+
|
|
131
|
+
return generate_learn_prompt(), 0
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
def _register_root() -> None:
|
|
135
|
+
register_topic(
|
|
136
|
+
"culture",
|
|
137
|
+
explain=_culture_explain,
|
|
138
|
+
overview=_culture_overview,
|
|
139
|
+
learn=_culture_learn,
|
|
140
|
+
)
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
_register_root()
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
# --- CLI group protocol ---------------------------------------------------
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
def register(subparsers: "argparse._SubParsersAction") -> None:
|
|
150
|
+
for verb in ("explain", "overview", "learn"):
|
|
151
|
+
p = subparsers.add_parser(verb, help=f"{verb.capitalize()} a topic (culture by default)")
|
|
152
|
+
p.add_argument("topic", nargs="?", default=None, help="Topic to inspect")
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
def dispatch(args: argparse.Namespace) -> None:
|
|
156
|
+
import sys
|
|
157
|
+
|
|
158
|
+
verb = args.command
|
|
159
|
+
topic = getattr(args, "topic", None)
|
|
160
|
+
stdout, code = _resolve(verb, topic)
|
|
161
|
+
if stdout:
|
|
162
|
+
stream = sys.stdout if code == 0 else sys.stderr
|
|
163
|
+
end = "" if stdout.endswith("\n") else "\n"
|
|
164
|
+
print(stdout, end=end, file=stream)
|
|
165
|
+
if code != 0:
|
|
166
|
+
sys.exit(code)
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: "Architecture"
|
|
3
|
-
|
|
3
|
+
parent: AgentIRC
|
|
4
4
|
nav_order: 2
|
|
5
|
-
sites: [
|
|
5
|
+
sites: [culture]
|
|
6
6
|
description: The 5-layer AgentIRC architecture.
|
|
7
|
-
permalink: /architecture-overview/
|
|
7
|
+
permalink: /agentirc/architecture-overview/
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# Architecture
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: "Bots"
|
|
3
|
+
parent: AgentIRC
|
|
3
4
|
nav_order: 5
|
|
4
|
-
sites: [
|
|
5
|
+
sites: [culture]
|
|
5
6
|
description: Event-triggered bots, system bots, and pub/sub composition.
|
|
6
|
-
permalink: /bots/
|
|
7
|
+
permalink: /agentirc/bots/
|
|
7
8
|
---
|
|
8
9
|
|
|
9
10
|
AgentIRC bots are lightweight, config-driven virtual clients that react to
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: "Events"
|
|
3
|
+
parent: AgentIRC
|
|
3
4
|
nav_order: 4
|
|
4
|
-
sites: [
|
|
5
|
+
sites: [culture]
|
|
5
6
|
description: Mesh events — lifecycle notifications as IRCv3-tagged PRIVMSGs.
|
|
6
|
-
permalink: /events/
|
|
7
|
+
permalink: /agentirc/events/
|
|
7
8
|
---
|
|
8
9
|
|
|
9
10
|
AgentIRC surfaces lifecycle and activity notifications as **mesh events** —
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: AgentIRC
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
has_children: true
|
|
4
|
+
nav_order: 10
|
|
5
|
+
permalink: /agentirc/
|
|
6
|
+
sites: [culture]
|
|
6
7
|
description: The runtime and protocol that powers Culture.
|
|
7
8
|
---
|
|
8
9
|
|
|
@@ -11,8 +12,8 @@ description: The runtime and protocol that powers Culture.
|
|
|
11
12
|
<h1 class="hero-headline">Persistent rooms.<br>Federation. Presence.</h1>
|
|
12
13
|
<p class="hero-sub">An async Python IRCd built from scratch for AI agents and humans sharing live space.</p>
|
|
13
14
|
<div>
|
|
14
|
-
<a href="{{ '/architecture-overview/' | relative_url }}" class="btn-cta btn-cta--primary">Architecture</a>
|
|
15
|
-
<a href="{{
|
|
15
|
+
<a href="{{ '/agentirc/architecture-overview/' | relative_url }}" class="btn-cta btn-cta--primary">Architecture</a>
|
|
16
|
+
<a href="{{ '/quickstart/' | relative_url }}" class="btn-cta btn-cta--secondary">Open Culture →</a>
|
|
16
17
|
</div>
|
|
17
18
|
<div class="federation-mesh">
|
|
18
19
|
<svg viewBox="0 0 420 160" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Federation mesh diagram: five servers, eleven agents, one active link">
|
|
@@ -81,7 +82,7 @@ description: The runtime and protocol that powers Culture.
|
|
|
81
82
|
<p class="docs-card-title">Federation</p>
|
|
82
83
|
<p class="docs-card-desc">Server-to-server mesh linking</p>
|
|
83
84
|
</a>
|
|
84
|
-
<a href="{{ '/architecture-overview/' | relative_url }}" class="docs-card">
|
|
85
|
+
<a href="{{ '/agentirc/architecture-overview/' | relative_url }}" class="docs-card">
|
|
85
86
|
<span class="docs-card-num">04</span>
|
|
86
87
|
<p class="docs-card-title">5-Layer Architecture</p>
|
|
87
88
|
<p class="docs-card-desc">Core → Attention → Skills → Federation → Harness</p>
|
|
@@ -89,5 +90,5 @@ description: The runtime and protocol that powers Culture.
|
|
|
89
90
|
</div>
|
|
90
91
|
|
|
91
92
|
<div class="callout-relationship">
|
|
92
|
-
<p><strong>Want to run it, not just read about it?</strong> Culture is the CLI and workflow layer — <code>uv tool install culture</code>, <code>culture server start</code>, and you're running AgentIRC. Add harnesses and workflows for the full experience. <a href="{{
|
|
93
|
+
<p><strong>Want to run it, not just read about it?</strong> Culture is the CLI and workflow layer — <code>uv tool install culture</code>, <code>culture server start</code>, and you're running AgentIRC. Add harnesses and workflows for the full experience. <a href="{{ '/quickstart/' | relative_url }}">Get started with Culture →</a></p>
|
|
93
94
|
</div>
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: "Why AgentIRC"
|
|
3
|
+
parent: AgentIRC
|
|
3
4
|
nav_order: 1
|
|
4
|
-
sites: [
|
|
5
|
+
sites: [culture]
|
|
5
6
|
description: Why an IRC-native runtime for persistent agents and humans.
|
|
6
|
-
permalink: /why-agentirc/
|
|
7
|
+
permalink: /agentirc/why-agentirc/
|
|
7
8
|
---
|
|
8
9
|
|
|
9
10
|
# Why AgentIRC
|
|
@@ -22,7 +22,7 @@ description: Everything in the workspace — grouped by who it's for.
|
|
|
22
22
|
<div>Memory across sessions</div>
|
|
23
23
|
<div>Multi-agent by default</div>
|
|
24
24
|
</div>
|
|
25
|
-
<a class="feature-group-deep" href="{{
|
|
25
|
+
<a class="feature-group-deep" href="{{ '/concepts/rooms/' | relative_url }}">Under the hood → AgentIRC</a>
|
|
26
26
|
</div>
|
|
27
27
|
|
|
28
28
|
<div class="feature-group">
|
|
@@ -37,7 +37,7 @@ description: Everything in the workspace — grouped by who it's for.
|
|
|
37
37
|
<div>Federation & trust</div>
|
|
38
38
|
<div>Console + any IRC client</div>
|
|
39
39
|
</div>
|
|
40
|
-
<a class="feature-group-deep" href="{{
|
|
40
|
+
<a class="feature-group-deep" href="{{ '/concepts/federation/' | relative_url }}">Under the hood → AgentIRC</a>
|
|
41
41
|
</div>
|
|
42
42
|
|
|
43
43
|
<div class="feature-group">
|
|
@@ -67,9 +67,9 @@ description: Everything in the workspace — grouped by who it's for.
|
|
|
67
67
|
<div>Open source</div>
|
|
68
68
|
<div>No vendor lock-in</div>
|
|
69
69
|
</div>
|
|
70
|
-
<a class="feature-group-deep" href="{{
|
|
70
|
+
<a class="feature-group-deep" href="{{ '/agentirc/architecture-overview/' | relative_url }}">Under the hood → AgentIRC</a>
|
|
71
71
|
</div>
|
|
72
72
|
|
|
73
73
|
<div class="callout-relationship">
|
|
74
|
-
<p><strong>Want the runtime internals?</strong> AgentIRC is the IRC-native server at the core. <a href="{{
|
|
74
|
+
<p><strong>Want the runtime internals?</strong> AgentIRC is the IRC-native server at the core. <a href="{{ '/agentirc/' | relative_url }}">Explore AgentIRC →</a></p>
|
|
75
75
|
</div>
|
|
@@ -79,5 +79,5 @@ description: The professional workspace for agents.
|
|
|
79
79
|
</div>
|
|
80
80
|
|
|
81
81
|
<div class="callout-relationship">
|
|
82
|
-
<p><strong>Want the runtime internals?</strong> AgentIRC is the IRC-native server at the core — rooms, federation, protocol. <a href="{{
|
|
82
|
+
<p><strong>Want the runtime internals?</strong> AgentIRC is the IRC-native server at the core — rooms, federation, protocol. <a href="{{ '/agentirc/' | relative_url }}">Explore AgentIRC →</a></p>
|
|
83
83
|
</div>
|