agentirc-cli 7.3.0__tar.gz → 8.0.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.3.0 → agentirc_cli-8.0.0}/CHANGELOG.md +19 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/PKG-INFO +9 -3
- agentirc_cli-8.0.0/README.md +34 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/_config.culture.yml +9 -4
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/_data/sites.yml +1 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/_includes/head_custom.html +1 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/cli/__init__.py +16 -3
- agentirc_cli-8.0.0/culture/cli/devex.py +111 -0
- agentirc_cli-8.0.0/culture/cli/introspect.py +189 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/culture/features.md +15 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/culture/index.md +6 -2
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/culture/mental-model.md +15 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/culture/vision.md +23 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/culture/what-is-culture.md +28 -7
- agentirc_cli-8.0.0/docs/reference/cli/devex.md +130 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/reference/cli/index.md +20 -1
- agentirc_cli-8.0.0/docs/superpowers/plans/2026-04-22-agex-integration.md +999 -0
- agentirc_cli-8.0.0/docs/superpowers/specs/2026-04-22-agex-integration-design.md +258 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/pyproject.toml +2 -1
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/sitemap-main.html +1 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/sitemap.html +1 -0
- agentirc_cli-8.0.0/tests/test_cli_devex.py +53 -0
- agentirc_cli-8.0.0/tests/test_cli_introspect.py +155 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/uv.lock +31 -1
- agentirc_cli-7.3.0/README.md +0 -29
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/.claude/agents/doc-test-alignment.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/.claude/skills/pr-review/SKILL.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/.claude/skills/run-tests/SKILL.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/.claude/skills/run-tests/scripts/test.sh +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/.flake8 +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/.github/workflows/docs-check.yml +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/.github/workflows/publish.yml +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/.github/workflows/security-checks.yml +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/.github/workflows/tests.yml +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/.gitignore +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/.markdownlint-cli2.yaml +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/.pr_agent.toml +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/.pre-commit-config.yaml +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/.pylintrc +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/CLAUDE.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/Gemfile +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/Gemfile.lock +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/LICENSE +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/SECURITY.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/_config.base.yml +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/_sass/color_schemes/anthropic.scss +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/_sass/color_schemes/dark-terminal.scss +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/_sass/custom/custom.scss +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/assets/images/IMG_3183.png +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/assets/images/apple-touch-icon.png +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/assets/images/favicon-16x16.png +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/assets/images/favicon-32x32.png +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/assets/images/favicon.ico +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/assets/images/og-agentirc.png +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/assets/images/og-culture.png +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/__init__.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/__main__.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/agentirc/CLAUDE.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/agentirc/__init__.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/agentirc/__main__.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/agentirc/channel.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/agentirc/client.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/agentirc/config.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/agentirc/docs/agentirc-architecture.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/agentirc/docs/agentirc-features.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/agentirc/docs/agentirc-skill.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/agentirc/docs/agentirc.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/agentirc/events.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/agentirc/history_store.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/agentirc/ircd.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/agentirc/remote_client.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/agentirc/room_store.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/agentirc/rooms_util.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/agentirc/server_link.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/agentirc/skill.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/agentirc/skills/__init__.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/agentirc/skills/history.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/agentirc/skills/icon.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/agentirc/skills/rooms.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/agentirc/skills/threads.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/agentirc/thread_store.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/aio.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/bots/__init__.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/bots/bot.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/bots/bot_manager.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/bots/config.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/bots/filter_dsl.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/bots/http_listener.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/bots/system/__init__.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/bots/system/welcome/__init__.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/bots/system/welcome/bot.yaml +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/bots/system/welcome/handler.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/bots/template_engine.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/bots/virtual_client.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/cli/agent.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/cli/bot.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/cli/channel.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/cli/mesh.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/cli/server.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/cli/shared/__init__.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/cli/shared/constants.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/cli/shared/display.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/cli/shared/formatting.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/cli/shared/ipc.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/cli/shared/mesh.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/cli/shared/process.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/cli/skills.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/__init__.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/acp/__init__.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/acp/agent_runner.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/acp/config.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/acp/culture.yaml +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/acp/daemon.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/acp/ipc.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/acp/irc_transport.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/acp/message_buffer.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/acp/skill/SKILL.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/acp/skill/__init__.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/acp/skill/irc_client.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/acp/socket_server.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/acp/supervisor.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/acp/webhook.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/claude/__init__.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/claude/__main__.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/claude/agent_runner.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/claude/config.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/claude/culture.yaml +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/claude/daemon.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/claude/ipc.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/claude/irc_transport.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/claude/message_buffer.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/claude/skill/SKILL.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/claude/skill/__init__.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/claude/skill/irc_client.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/claude/socket_server.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/claude/supervisor.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/claude/webhook.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/codex/__init__.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/codex/agent_runner.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/codex/config.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/codex/culture.yaml +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/codex/daemon.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/codex/ipc.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/codex/irc_transport.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/codex/message_buffer.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/codex/skill/SKILL.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/codex/skill/__init__.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/codex/skill/irc_client.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/codex/socket_server.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/codex/supervisor.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/codex/webhook.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/copilot/__init__.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/copilot/agent_runner.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/copilot/config.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/copilot/culture.yaml +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/copilot/daemon.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/copilot/ipc.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/copilot/irc_transport.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/copilot/message_buffer.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/copilot/skill/SKILL.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/copilot/skill/__init__.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/copilot/skill/irc_client.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/copilot/socket_server.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/copilot/supervisor.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/clients/copilot/webhook.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/config.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/console/__init__.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/console/app.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/console/client.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/console/commands.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/console/status.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/console/widgets/__init__.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/console/widgets/chat.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/console/widgets/info_panel.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/console/widgets/sidebar.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/constants.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/credentials.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/formatting.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/learn_prompt.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/mesh_config.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/observer.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/overview/__init__.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/overview/collector.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/overview/model.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/overview/renderer_text.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/overview/renderer_web.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/overview/web/style.css +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/persistence.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/pidfile.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/protocol/__init__.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/protocol/commands.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/protocol/extensions/events.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/protocol/extensions/federation.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/protocol/extensions/history.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/protocol/extensions/icons.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/protocol/extensions/rooms.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/protocol/extensions/tags.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/protocol/extensions/threads.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/protocol/message.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/protocol/protocol-index.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/protocol/replies.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/culture/skills/culture/SKILL.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/README.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/agentirc/architecture-overview.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/agentirc/bots.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/agentirc/events.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/agentirc/index.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/agentirc/why-agentirc.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/culture/agent-lifecycle.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/culture/choose-a-harness.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/culture/operate.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/culture/patterns.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/culture/quickstart.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/culture/reflective-development.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/culture/vision-patterns-index.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/reference/architecture/agent-harness-spec.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/reference/architecture/index.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/reference/architecture/layers.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/reference/architecture/threads.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/reference/cli/commands.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/reference/console.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/reference/harnesses/acp.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/reference/harnesses/claude.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/reference/harnesses/codex.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/reference/harnesses/copilot.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/reference/harnesses/index.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/reference/index.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/reference/server/architecture.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/reference/server/config.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/reference/server/deployment.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/reference/server/index.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/reference/server/security.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/resources/github-copilot-sdk-instructions.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/resources/positioning.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/shared/concepts/federation.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/shared/concepts/harnesses.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/shared/concepts/humans-and-agents.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/shared/concepts/index.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/shared/concepts/persistence.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/shared/concepts/rooms.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/shared/demos/magic-demo.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/shared/guides/first-session.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/shared/guides/index.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/shared/guides/join-as-human.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/shared/guides/local-setup.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/shared/guides/multi-machine.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/shared/use-cases/01-pair-programming.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/shared/use-cases/02-code-review-ensemble.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/shared/use-cases/03-cross-server-delegation.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/shared/use-cases/04-knowledge-propagation.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/shared/use-cases/05-the-observer.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/shared/use-cases/06-cross-server-ops.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/shared/use-cases/07-supervisor-intervention.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/shared/use-cases/08-apps-as-agents.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/shared/use-cases/09-research-swarm.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/shared/use-cases/10-agent-lifecycle.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/shared/use-cases-index.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/superpowers/plans/2026-03-19-layer1-core-irc.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/superpowers/plans/2026-03-21-layer5-agent-harness.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/superpowers/plans/2026-03-30-overview.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/superpowers/plans/2026-03-30-rooms-management.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/superpowers/plans/2026-04-02-conversation-threads.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/superpowers/plans/2026-04-02-ops-tooling.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/superpowers/plans/2026-04-04-culture-rename.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/superpowers/plans/2026-04-05-docs-speak-culture.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/superpowers/plans/2026-04-06-console-chat.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/superpowers/plans/2026-04-09-decentralized-agent-config.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/superpowers/plans/2026-04-12-console-enhancements.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/superpowers/plans/2026-04-15-mesh-events.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/superpowers/plans/2026-04-18-culture-dev-positioning.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/superpowers/specs/2026-03-19-agentirc-design.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/superpowers/specs/2026-03-21-layer5-agent-harness-design.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/superpowers/specs/2026-03-30-overview-design.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/superpowers/specs/2026-03-30-rooms-management-design.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/superpowers/specs/2026-04-02-conversation-threads-design.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/superpowers/specs/2026-04-02-ops-tooling-design.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/superpowers/specs/2026-04-03-bots-webhooks-design.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/superpowers/specs/2026-04-04-culture-rename-design.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/superpowers/specs/2026-04-05-docs-speak-culture-design.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/superpowers/specs/2026-04-05-lifecycle-reframe-design.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/superpowers/specs/2026-04-06-cli-reorganization-design.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/superpowers/specs/2026-04-06-console-chat-design.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/superpowers/specs/2026-04-07-entity-archiving-design.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/superpowers/specs/2026-04-07-reflective-development-reframe-design.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/superpowers/specs/2026-04-08-reflective-development-deepening-design.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/superpowers/specs/2026-04-09-decentralized-agent-config-design.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/superpowers/specs/2026-04-12-console-enhancements-design.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/superpowers/specs/2026-04-15-mesh-events-design.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/superpowers/specs/2026-04-17-sites-repositioning-design.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/docs/superpowers/specs/2026-04-18-culture-dev-positioning-design.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/favicon.ico +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/packages/agent-harness/README.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/packages/agent-harness/config.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/packages/agent-harness/culture.yaml +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/packages/agent-harness/daemon.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/packages/agent-harness/ipc.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/packages/agent-harness/irc_transport.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/packages/agent-harness/message_buffer.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/packages/agent-harness/skill/SKILL.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/packages/agent-harness/skill/irc_client.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/packages/agent-harness/socket_server.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/packages/agent-harness/webhook.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/plugins/claude-code/.claude-plugin/plugin.json +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/plugins/claude-code/skills/culture/SKILL.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/plugins/claude-code/skills/irc/SKILL.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/plugins/codex/skills/culture-irc/SKILL.md +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/robots.txt +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/sitemap-agentirc.html +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/sonar-project.properties +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/__init__.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/conftest.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_acp_daemon.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_agent_runner.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_archive.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_bot.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_bot_config.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_bot_config_fires_event_toplevel.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_bot_manager.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_bots_integration.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_channel.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_channel_cli.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_codex_daemon.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_connection.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_console_chat_markdown.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_console_client.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_console_commands.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_console_connection.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_console_fixes_224_227.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_console_icons.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_console_integration.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_console_status.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_copilot_daemon.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_credentials.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_culture_config.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_daemon.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_daemon_config.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_daemon_ipc.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_discovery.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_display.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_events_basic.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_events_bot_chain.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_events_bot_trigger.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_events_cap_fallback.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_events_catalog.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_events_federation.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_events_history.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_events_lifecycle.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_events_reserved_nick.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_federation.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_filter_dsl.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_history.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_http_listener.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_integration_layer5.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_ipc.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_irc_transport.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_irc_transport_tags.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_learn_prompt.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_link_reconnect.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_manifest_config.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_mention_alias.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_mention_target_cleanup.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_mention_warning.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_mentions.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_mesh_config.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_mesh_readiness.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_message.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_message_buffer.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_message_tags.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_messaging.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_migrate_cli.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_modes.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_overview_cli.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_overview_collector.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_overview_model.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_overview_renderer.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_overview_web.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_persistence.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_persistence_timeout.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_pidfile.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_poll_loop.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_register_cli.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_room_persistence.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_rooms.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_rooms_federation.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_rooms_integration.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_server_icon_skill.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_setup_update_cli.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_skill_client.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_skill_docs.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_skills.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_socket_server.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_supervisor.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_template_engine.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_thread_buffer.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_threads.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_virtual_client.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_wait_for_port.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_webhook.py +0 -0
- {agentirc_cli-7.3.0 → agentirc_cli-8.0.0}/tests/test_welcome_bot.py +0 -0
|
@@ -4,6 +4,25 @@ All notable changes to this project will be documented in this file.
|
|
|
4
4
|
|
|
5
5
|
Format follows [Keep a Changelog](https://keepachangelog.com/).
|
|
6
6
|
|
|
7
|
+
## [8.0.0] - 2026-04-22
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- `culture afi`, `culture identity`, and `culture secret` surfaced as (coming soon) namespaces in `culture explain` output. `culture identity` will wrap a future standalone `zehut-cli`; `culture secret` will wrap `shushu-cli`; `culture afi` shares its name with the standalone `afi-cli`.
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
|
|
15
|
+
- BREAKING: Renamed `culture agex` to `culture devex` (developer experience) — more familiar terminology and visually distinct from `culture agent`. The upstream `agex-cli` / `agent_experience` library is unchanged; only culture's public command name differs.
|
|
16
|
+
- Positioning docs, README, and site chrome refreshed to reflect the new identity: culture is the framework of agreements that makes agent behavior portable, inspectable, and effective, surfacing explain/overview/learn at every CLI level.
|
|
17
|
+
|
|
18
|
+
## [7.4.0] - 2026-04-22
|
|
19
|
+
|
|
20
|
+
### Added
|
|
21
|
+
|
|
22
|
+
- culture agex passthrough to the standalone agex CLI (new subcommand embedding agex via typer)
|
|
23
|
+
- Universal verbs culture explain, culture overview, culture learn at the CLI root, with a per-topic handler registry (culture/cli/introspect.py)
|
|
24
|
+
- agex-cli>=0.13,<1.0 as a library dependency
|
|
25
|
+
|
|
7
26
|
## [7.3.0] - 2026-04-21
|
|
8
27
|
|
|
9
28
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agentirc-cli
|
|
3
|
-
Version:
|
|
3
|
+
Version: 8.0.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
|
|
@@ -24,18 +25,23 @@ Description-Content-Type: text/markdown
|
|
|
24
25
|
|
|
25
26
|
# Culture
|
|
26
27
|
|
|
27
|
-
The
|
|
28
|
+
The framework of agreements that makes agent behavior portable, inspectable, and effective.
|
|
28
29
|
|
|
29
30
|
**AgentIRC** is the IRC-native runtime for persistent AI agents and humans in shared live rooms.
|
|
30
|
-
**Culture** is the full solution — CLI, harnesses, console, workflows, and multi-machine mesh.
|
|
31
|
+
**Culture** is the full solution — CLI with universal introspection verbs (`explain` / `overview` / `learn` at every level), harnesses, console, workflows, and multi-machine mesh. It ships `culture devex` today (powered by the standalone `agex-cli`) and will add `culture afi`, `culture identity`, and `culture secret` next.
|
|
31
32
|
|
|
32
33
|
## Start here
|
|
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
|
|
37
|
+
- [`culture devex` and universal verbs](https://culture.dev/reference/cli/devex/) — the inspectable CLI
|
|
36
38
|
- [AgentIRC Architecture](https://culture.dev/agentirc/architecture-overview/) — the runtime layer
|
|
37
39
|
- [Vision & Patterns](https://culture.dev/vision/) — the broader model
|
|
38
40
|
|
|
41
|
+
## What's next
|
|
42
|
+
|
|
43
|
+
`culture afi` (Agent First Interface), `culture identity` (mesh identity / key management, wrapping the standalone `zehut-cli`), and `culture secret` (credential management, wrapping `shushu-cli`) are on the way. Run `culture explain` for the always-current registry of what's ready vs. coming soon.
|
|
44
|
+
|
|
39
45
|
## Install
|
|
40
46
|
|
|
41
47
|
```bash
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Culture
|
|
2
|
+
|
|
3
|
+
The framework of agreements that makes agent behavior portable, inspectable, and effective.
|
|
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 with universal introspection verbs (`explain` / `overview` / `learn` at every level), harnesses, console, workflows, and multi-machine mesh. It ships `culture devex` today (powered by the standalone `agex-cli`) and will add `culture afi`, `culture identity`, and `culture secret` next.
|
|
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
|
+
- [`culture devex` and universal verbs](https://culture.dev/reference/cli/devex/) — the inspectable CLI
|
|
13
|
+
- [AgentIRC Architecture](https://culture.dev/agentirc/architecture-overview/) — the runtime layer
|
|
14
|
+
- [Vision & Patterns](https://culture.dev/vision/) — the broader model
|
|
15
|
+
|
|
16
|
+
## What's next
|
|
17
|
+
|
|
18
|
+
`culture afi` (Agent First Interface), `culture identity` (mesh identity / key management, wrapping the standalone `zehut-cli`), and `culture secret` (credential management, wrapping `shushu-cli`) are on the way. Run `culture explain` for the always-current registry of what's ready vs. coming soon.
|
|
19
|
+
|
|
20
|
+
## Install
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
uv tool install culture
|
|
24
|
+
culture server start
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Documentation
|
|
28
|
+
|
|
29
|
+
- **[culture.dev](https://culture.dev)** — the full solution: quickstart, harnesses, guides, vision
|
|
30
|
+
- **[culture.dev/agentirc](https://culture.dev/agentirc/)** — the runtime layer: architecture, protocol, federation
|
|
31
|
+
|
|
32
|
+
## License
|
|
33
|
+
|
|
34
|
+
[MIT](LICENSE)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
title: Culture
|
|
2
2
|
description: >-
|
|
3
|
-
The professional workspace for agents.
|
|
3
|
+
The framework of agreements that makes agent behavior portable, inspectable, and effective — a professional workspace for agents with a CLI that explains itself.
|
|
4
4
|
url: "https://culture.dev"
|
|
5
5
|
baseurl: ""
|
|
6
6
|
build_site: culture
|
|
@@ -12,7 +12,7 @@ twitter:
|
|
|
12
12
|
social:
|
|
13
13
|
name: Culture
|
|
14
14
|
links:
|
|
15
|
-
- https://github.com/
|
|
15
|
+
- https://github.com/agentculture/culture
|
|
16
16
|
|
|
17
17
|
author:
|
|
18
18
|
name: Ori Nachum
|
|
@@ -36,13 +36,18 @@ aux_links:
|
|
|
36
36
|
- "/agentirc/"
|
|
37
37
|
"Agent Experience":
|
|
38
38
|
- "https://culture.dev/agex/"
|
|
39
|
+
"Citation CLI":
|
|
40
|
+
- "/citation-cli/"
|
|
39
41
|
"GitHub":
|
|
40
|
-
- "https://github.com/
|
|
42
|
+
- "https://github.com/agentculture/culture"
|
|
41
43
|
|
|
42
44
|
aux_links_new_tab: false
|
|
43
45
|
|
|
44
46
|
footer_content: >-
|
|
45
47
|
Culture — human-agent collaboration built around
|
|
46
48
|
<a href="/agentirc/">AgentIRC</a>.
|
|
49
|
+
Inspectable CLI via <a href="/reference/cli/devex/">culture devex</a>
|
|
50
|
+
(explain / overview / learn at every level).
|
|
47
51
|
Agent Experience via <a href="https://culture.dev/agex/">agex-cli</a>.
|
|
48
|
-
|
|
52
|
+
Code distribution via <a href="/citation-cli/">Citation CLI</a>.
|
|
53
|
+
Source on <a href="https://github.com/agentculture/culture">GitHub</a>.
|
|
@@ -4,3 +4,4 @@
|
|
|
4
4
|
<link rel="icon" type="image/png" sizes="16x16" href="{{ '/assets/images/favicon-16x16.png' | relative_url }}">
|
|
5
5
|
<link rel="apple-touch-icon" sizes="180x180" href="{{ '/assets/images/apple-touch-icon.png' | relative_url }}">
|
|
6
6
|
<link rel="related" href="{{ site.data.sites.agex }}" title="Agent Experience">
|
|
7
|
+
<link rel="related" href="{{ site.data.sites.citation_cli }}" title="Citation CLI">
|
|
@@ -7,6 +7,12 @@ Commands are organized into noun-based groups:
|
|
|
7
7
|
culture channel {list,read,message,who}
|
|
8
8
|
culture bot {create,start,stop,list,inspect,archive,unarchive}
|
|
9
9
|
culture skills {install}
|
|
10
|
+
culture devex {...developer-experience passthrough (powered by 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, bot, channel, devex, introspect, mesh, server, skills
|
|
26
|
+
|
|
27
|
+
GROUPS = [agent, server, mesh, channel, bot, skills, devex, 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,111 @@
|
|
|
1
|
+
"""`culture devex` — passthrough to the standalone agex CLI.
|
|
2
|
+
|
|
3
|
+
Also registers universal-verb handlers for the ``devex`` topic so
|
|
4
|
+
``culture explain devex`` / ``culture overview devex`` /
|
|
5
|
+
``culture learn devex`` route through culture's universal-verb path.
|
|
6
|
+
|
|
7
|
+
Under the hood, ``devex`` is powered by the standalone ``agex-cli``
|
|
8
|
+
(``agent_experience`` package). The command name differs for
|
|
9
|
+
familiarity with the developer-experience vocabulary; the underlying
|
|
10
|
+
tool is the same.
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
from __future__ import annotations
|
|
14
|
+
|
|
15
|
+
import argparse
|
|
16
|
+
import contextlib
|
|
17
|
+
import io
|
|
18
|
+
import sys
|
|
19
|
+
|
|
20
|
+
from culture.cli import introspect
|
|
21
|
+
|
|
22
|
+
NAME = "devex"
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def _run_devex(argv: list[str]) -> None:
|
|
26
|
+
"""Invoke the underlying agex typer app in-process.
|
|
27
|
+
|
|
28
|
+
Uses standalone_mode=True (the typer default) so typer's own --help,
|
|
29
|
+
--version, and Exit handling work unchanged. Typer calls ``sys.exit``
|
|
30
|
+
when done, raising ``SystemExit``; this function lets that propagate
|
|
31
|
+
so the caller (the ``culture devex`` passthrough) exits with the code
|
|
32
|
+
the user expects. Callers that need to capture output and translate
|
|
33
|
+
the exit into a return value should use :func:`_capture_devex` instead.
|
|
34
|
+
"""
|
|
35
|
+
try:
|
|
36
|
+
from agent_experience.cli import app
|
|
37
|
+
except ImportError as exc: # pragma: no cover — declared dep
|
|
38
|
+
print(f"agex-cli is not installed: {exc}", file=sys.stderr)
|
|
39
|
+
sys.exit(2)
|
|
40
|
+
app(args=argv)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def _capture_devex(argv: list[str]) -> tuple[str, int]:
|
|
44
|
+
"""Run devex with stdout + stderr captured, translating SystemExit.
|
|
45
|
+
|
|
46
|
+
The universal-verb handlers need ``(output, exit_code)`` rather than a
|
|
47
|
+
process-level exit, so we deliberately catch ``SystemExit`` here and
|
|
48
|
+
translate it into a return value. The :func:`_run_devex` variant is for
|
|
49
|
+
the passthrough path where the exit must propagate.
|
|
50
|
+
"""
|
|
51
|
+
buf = io.StringIO()
|
|
52
|
+
try:
|
|
53
|
+
with contextlib.redirect_stdout(buf), contextlib.redirect_stderr(buf):
|
|
54
|
+
_run_devex(argv)
|
|
55
|
+
except SystemExit as exc: # NOSONAR S5754 — see docstring
|
|
56
|
+
# typer calls sys.exit() on completion even for success, so this
|
|
57
|
+
# is the normal exit path; the trailing `return ... 0` only runs
|
|
58
|
+
# if _run_devex somehow returns without raising (defensive).
|
|
59
|
+
code = exc.code
|
|
60
|
+
if code is None:
|
|
61
|
+
return buf.getvalue(), 0
|
|
62
|
+
if isinstance(code, int):
|
|
63
|
+
return buf.getvalue(), code
|
|
64
|
+
return buf.getvalue() + str(code), 1
|
|
65
|
+
return buf.getvalue(), 0
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
# --- universal-verb topic handlers for ``devex`` ---------------------------
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def _devex_explain(_topic: str | None) -> tuple[str, int]:
|
|
72
|
+
# The underlying agex library refers to itself as "agex"; that's what
|
|
73
|
+
# we pass to its own explain verb. The culture-facing name is devex.
|
|
74
|
+
return _capture_devex(["explain", "agex"])
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def _devex_overview(_topic: str | None) -> tuple[str, int]:
|
|
78
|
+
return _capture_devex(["overview", "--agent", "claude-code"])
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
def _devex_learn(_topic: str | None) -> tuple[str, int]:
|
|
82
|
+
return _capture_devex(["learn", "--agent", "claude-code"])
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
introspect.register_topic(
|
|
86
|
+
"devex",
|
|
87
|
+
explain=_devex_explain,
|
|
88
|
+
overview=_devex_overview,
|
|
89
|
+
learn=_devex_learn,
|
|
90
|
+
)
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
# --- CLI group protocol ---------------------------------------------------
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def register(subparsers: "argparse._SubParsersAction") -> None:
|
|
97
|
+
# prefix_chars=chr(0) means the devex subparser has no recognized flag
|
|
98
|
+
# prefix character, so every token (including --help, --version) is
|
|
99
|
+
# treated as positional and captured in devex_args for typer to handle.
|
|
100
|
+
p = subparsers.add_parser(
|
|
101
|
+
NAME,
|
|
102
|
+
help="Run the agex developer-experience CLI via passthrough",
|
|
103
|
+
add_help=False,
|
|
104
|
+
prefix_chars=chr(0),
|
|
105
|
+
)
|
|
106
|
+
p.add_argument("devex_args", nargs=argparse.REMAINDER, help="Arguments passed to agex")
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
def dispatch(args: argparse.Namespace) -> None:
|
|
110
|
+
rest = list(getattr(args, "devex_args", []) or [])
|
|
111
|
+
_run_devex(rest)
|
|
@@ -0,0 +1,189 @@
|
|
|
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
|
+
# Known-but-unregistered namespaces are advertised via _NAMESPACES
|
|
72
|
+
# in `culture explain` output with "(coming soon)". Surface that
|
|
73
|
+
# same framing on a direct `culture <verb> <ns>` call instead of
|
|
74
|
+
# failing as if the topic were unknown. Exit 0 because this is a
|
|
75
|
+
# known future state, not a user error.
|
|
76
|
+
if effective in _NAMESPACES:
|
|
77
|
+
return (
|
|
78
|
+
f"`culture {effective}` — coming soon. "
|
|
79
|
+
f"Not yet implemented. Run `culture explain` to see the "
|
|
80
|
+
f"current registry of namespaces.\n",
|
|
81
|
+
0,
|
|
82
|
+
)
|
|
83
|
+
available = sorted(registry.keys())
|
|
84
|
+
msg = (
|
|
85
|
+
f"unknown topic '{effective}' for {verb};"
|
|
86
|
+
f" available: {', '.join(available) or '(none)'}"
|
|
87
|
+
)
|
|
88
|
+
return msg, 1
|
|
89
|
+
return handler(topic)
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
def explain(topic: str | None) -> tuple[str, int]:
|
|
93
|
+
return _resolve("explain", topic)
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def overview(topic: str | None) -> tuple[str, int]:
|
|
97
|
+
return _resolve("overview", topic)
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
def learn(topic: str | None) -> tuple[str, int]:
|
|
101
|
+
return _resolve("learn", topic)
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
_NAMESPACES = (
|
|
105
|
+
"agent",
|
|
106
|
+
"server",
|
|
107
|
+
"mesh",
|
|
108
|
+
"channel",
|
|
109
|
+
"bot",
|
|
110
|
+
"skills",
|
|
111
|
+
"devex",
|
|
112
|
+
"afi",
|
|
113
|
+
"identity",
|
|
114
|
+
"secret",
|
|
115
|
+
)
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
def _culture_explain(_topic: str | None) -> tuple[str, int]:
|
|
119
|
+
lines = [
|
|
120
|
+
"# Culture",
|
|
121
|
+
"",
|
|
122
|
+
"Culture is the framework of agreements that makes agent behavior",
|
|
123
|
+
"portable, inspectable, and effective. It hosts a mesh of IRC servers",
|
|
124
|
+
"where AI agents collaborate, share knowledge, and coordinate work.",
|
|
125
|
+
"",
|
|
126
|
+
"## Namespaces",
|
|
127
|
+
"",
|
|
128
|
+
]
|
|
129
|
+
for ns in _NAMESPACES:
|
|
130
|
+
registered = any(ns in registry for registry in _REGISTRIES.values())
|
|
131
|
+
marker = "" if registered else " (coming soon)"
|
|
132
|
+
lines.append(f"- `culture {ns}`{marker}")
|
|
133
|
+
lines.append("")
|
|
134
|
+
lines.append("## Universal verbs")
|
|
135
|
+
lines.append("")
|
|
136
|
+
lines.append("- `culture explain [topic]` — deep description")
|
|
137
|
+
lines.append("- `culture overview [topic]` — shallow map")
|
|
138
|
+
lines.append("- `culture learn [topic]` — agent onboarding prompt")
|
|
139
|
+
return "\n".join(lines) + "\n", 0
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
def _culture_overview(_topic: str | None) -> tuple[str, int]:
|
|
143
|
+
return (
|
|
144
|
+
"Culture: agent IRC mesh. Namespaces: "
|
|
145
|
+
+ ", ".join(_NAMESPACES)
|
|
146
|
+
+ ". Universal verbs: explain, overview, learn.\n",
|
|
147
|
+
0,
|
|
148
|
+
)
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
def _culture_learn(_topic: str | None) -> tuple[str, int]:
|
|
152
|
+
from culture.learn_prompt import generate_learn_prompt
|
|
153
|
+
|
|
154
|
+
return generate_learn_prompt(), 0
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
def _register_root() -> None:
|
|
158
|
+
register_topic(
|
|
159
|
+
"culture",
|
|
160
|
+
explain=_culture_explain,
|
|
161
|
+
overview=_culture_overview,
|
|
162
|
+
learn=_culture_learn,
|
|
163
|
+
)
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
_register_root()
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
# --- CLI group protocol ---------------------------------------------------
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
def register(subparsers: "argparse._SubParsersAction") -> None:
|
|
173
|
+
for verb in ("explain", "overview", "learn"):
|
|
174
|
+
p = subparsers.add_parser(verb, help=f"{verb.capitalize()} a topic (culture by default)")
|
|
175
|
+
p.add_argument("topic", nargs="?", default=None, help="Topic to inspect")
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
def dispatch(args: argparse.Namespace) -> None:
|
|
179
|
+
import sys
|
|
180
|
+
|
|
181
|
+
verb = args.command
|
|
182
|
+
topic = getattr(args, "topic", None)
|
|
183
|
+
stdout, code = _resolve(verb, topic)
|
|
184
|
+
if stdout:
|
|
185
|
+
stream = sys.stdout if code == 0 else sys.stderr
|
|
186
|
+
end = "" if stdout.endswith("\n") else "\n"
|
|
187
|
+
print(stdout, end=end, file=stream)
|
|
188
|
+
if code != 0:
|
|
189
|
+
sys.exit(code)
|
|
@@ -70,6 +70,21 @@ description: Everything in the workspace — grouped by who it's for.
|
|
|
70
70
|
<a class="feature-group-deep" href="{{ '/agentirc/architecture-overview/' | relative_url }}">Under the hood → AgentIRC</a>
|
|
71
71
|
</div>
|
|
72
72
|
|
|
73
|
+
<div class="feature-group">
|
|
74
|
+
<div class="feature-group-head">
|
|
75
|
+
<span class="feature-group-kicker">05</span>
|
|
76
|
+
<span class="feature-group-title">Introspection & experience</span>
|
|
77
|
+
</div>
|
|
78
|
+
<p class="feature-group-desc">The CLI explains itself. Each namespace owns its own docs.</p>
|
|
79
|
+
<div class="feature-group-items">
|
|
80
|
+
<div>culture explain / overview / learn</div>
|
|
81
|
+
<div>culture devex (powered by agex-cli)</div>
|
|
82
|
+
<div>culture afi (coming soon)</div>
|
|
83
|
+
<div>culture identity / secret (coming soon)</div>
|
|
84
|
+
</div>
|
|
85
|
+
<a class="feature-group-deep" href="{{ '/reference/cli/devex/' | relative_url }}">Read the contract →</a>
|
|
86
|
+
</div>
|
|
87
|
+
|
|
73
88
|
<div class="callout-relationship">
|
|
74
89
|
<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
90
|
</div>
|
|
@@ -9,7 +9,7 @@ description: The professional workspace for agents.
|
|
|
9
9
|
<div class="hero">
|
|
10
10
|
<p class="hero-label">The professional workspace for agents</p>
|
|
11
11
|
<h1 class="hero-headline">Where your agents actually work.</h1>
|
|
12
|
-
<p class="hero-sub">Persistent rooms. Real colleagues.
|
|
12
|
+
<p class="hero-sub">Persistent rooms. Real colleagues. A CLI that explains itself. Multi-machine mesh.</p>
|
|
13
13
|
<div>
|
|
14
14
|
<a href="{{ '/quickstart/' | relative_url }}" class="btn-cta btn-cta--primary">Quickstart</a>
|
|
15
15
|
<a href="{{ '/features/' | relative_url }}" class="btn-cta btn-cta--secondary">See the workspace</a>
|
|
@@ -28,7 +28,7 @@ description: The professional workspace for agents.
|
|
|
28
28
|
<div class="stack-row">
|
|
29
29
|
<span class="stack-row-label">You</span>
|
|
30
30
|
<div class="stack-row-content">
|
|
31
|
-
<strong>Culture CLI</strong> <span class="text-muted">uv tool install culture</span>
|
|
31
|
+
<strong>Culture CLI</strong> <span class="text-muted">uv tool install culture · explain · overview · learn at every level</span>
|
|
32
32
|
</div>
|
|
33
33
|
</div>
|
|
34
34
|
<div class="stack-row">
|
|
@@ -76,6 +76,10 @@ description: The professional workspace for agents.
|
|
|
76
76
|
<p class="docs-card-title">Join as a Human</p>
|
|
77
77
|
<p class="docs-card-desc">Console or any IRC client</p>
|
|
78
78
|
</a>
|
|
79
|
+
<a href="{{ '/reference/cli/devex/' | relative_url }}" class="docs-card">
|
|
80
|
+
<p class="docs-card-title">Inspectable CLI</p>
|
|
81
|
+
<p class="docs-card-desc">culture explain · overview · learn · devex</p>
|
|
82
|
+
</a>
|
|
79
83
|
</div>
|
|
80
84
|
|
|
81
85
|
<div class="callout-relationship">
|
|
@@ -49,6 +49,21 @@ This is the Reflective Development paradigm: the system is self-improving becaus
|
|
|
49
49
|
the participants — both human and AI — have access to the same context and the
|
|
50
50
|
same tools.
|
|
51
51
|
|
|
52
|
+
Reflection is also built into the CLI itself through three **universal verbs**
|
|
53
|
+
available at every level of the command tree:
|
|
54
|
+
|
|
55
|
+
- `explain X` — deep description of X and everything under X.
|
|
56
|
+
- `overview X` — shallow map of X.
|
|
57
|
+
- `learn X` — agent-facing onboarding prompt for operating X, so an agent
|
|
58
|
+
doesn't have to re-explore X every time it connects.
|
|
59
|
+
|
|
60
|
+
Each namespace owns its own handlers — `culture` is pure plumbing. An agent
|
|
61
|
+
can run `culture explain`, `culture explain devex`, `culture overview mesh`,
|
|
62
|
+
or `culture learn agent` and get progressively-scoped self-description
|
|
63
|
+
without leaving the shell. See the
|
|
64
|
+
[`culture devex` reference]({{ '/reference/cli/devex/' | relative_url }})
|
|
65
|
+
for the contract and the current registry of topics.
|
|
66
|
+
|
|
52
67
|
## Organization
|
|
53
68
|
|
|
54
69
|
Multiple Culture instances link together through federation. Each instance is
|
|
@@ -60,3 +60,26 @@ read and write plain text, which is what language models are built to do.
|
|
|
60
60
|
The protocol handles presence, channels, messaging, and federation.
|
|
61
61
|
Culture extends it with attention routing, skills, and agent lifecycle
|
|
62
62
|
management — but the foundation is standard IRC.
|
|
63
|
+
|
|
64
|
+
## Upcoming
|
|
65
|
+
|
|
66
|
+
Culture is the framework of agreements that makes agent behavior portable,
|
|
67
|
+
inspectable, and effective. Beyond the workspace runtime and the
|
|
68
|
+
[`culture devex`]({{ '/reference/cli/devex/' | relative_url }}) namespace
|
|
69
|
+
(powered by the standalone `agex-cli`) that already ship, three more
|
|
70
|
+
first-class namespaces are next:
|
|
71
|
+
|
|
72
|
+
- **`culture afi`** — Agent First Interface. Standards and scaffolding
|
|
73
|
+
for tools whose primary consumer is an AI agent (CLI / MCP / HTTP).
|
|
74
|
+
Wraps the standalone `afi-cli`.
|
|
75
|
+
- **`culture identity`** — Identity management across the mesh. Wraps a
|
|
76
|
+
standalone `zehut-cli` (Hebrew: "identity"). The command you'll reach
|
|
77
|
+
for to name agents, issue keys, and federate trust between servers.
|
|
78
|
+
- **`culture secret`** — Secret management. Wraps a standalone
|
|
79
|
+
`shushu-cli`. Handles credentials and sensitive config for agents and
|
|
80
|
+
harnesses.
|
|
81
|
+
|
|
82
|
+
Culture uses English for its first-class nouns; the standalone CLIs keep
|
|
83
|
+
their brand names. You don't have to remember which is which —
|
|
84
|
+
`culture explain` is the always-current source of truth and lists each
|
|
85
|
+
namespace's current state (registered vs. coming soon) at runtime.
|
|
@@ -3,7 +3,7 @@ title: "What is Culture?"
|
|
|
3
3
|
parent: "Vision & Patterns"
|
|
4
4
|
nav_order: 1
|
|
5
5
|
sites: [culture]
|
|
6
|
-
description: Culture is a professional workspace for specialized agents.
|
|
6
|
+
description: Culture is the framework that makes agent behavior portable, inspectable, and effective — a professional workspace for specialized agents.
|
|
7
7
|
permalink: /what-is-culture/
|
|
8
8
|
redirect_from:
|
|
9
9
|
- /why-culture/
|
|
@@ -11,12 +11,14 @@ redirect_from:
|
|
|
11
11
|
|
|
12
12
|
# What is Culture?
|
|
13
13
|
|
|
14
|
-
Culture is
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
14
|
+
Culture is the framework of agreements that makes agent behavior portable,
|
|
15
|
+
inspectable, and effective. Concretely, it provides two things: a shared
|
|
16
|
+
professional workspace for specialized agents (rooms, presence, roles,
|
|
17
|
+
coordination, and history via AgentIRC), and a CLI whose every level
|
|
18
|
+
explains itself so agents can operate the system without re-discovering it
|
|
19
|
+
each session. Harnesses are optional connectors: they let an agent stay
|
|
20
|
+
present in the culture without being pushed to read every message, so
|
|
21
|
+
participating in the workspace doesn't mean drowning in it.
|
|
20
22
|
|
|
21
23
|
## A professional workspace for specialized agents
|
|
22
24
|
|
|
@@ -47,6 +49,24 @@ Teachability is real and important — but it is not what sets Culture apart.
|
|
|
47
49
|
What sets Culture apart is the shared professional workspace of specialized
|
|
48
50
|
agents.
|
|
49
51
|
|
|
52
|
+
## Inspectable from any level
|
|
53
|
+
|
|
54
|
+
Culture ships three **universal verbs** — `explain`, `overview`, and
|
|
55
|
+
`learn` — available at every level of the CLI command tree, each scoped
|
|
56
|
+
to that node and its descendants:
|
|
57
|
+
|
|
58
|
+
- `culture explain [topic]` — full description (deep).
|
|
59
|
+
- `culture overview [topic]` — shallow map.
|
|
60
|
+
- `culture learn [topic]` — agent-facing onboarding prompt so an agent
|
|
61
|
+
can operate the topic without re-exploring it each session.
|
|
62
|
+
|
|
63
|
+
Each namespace owns its own handlers — culture is pure plumbing. Today
|
|
64
|
+
the [`culture devex`]({{ '/reference/cli/devex/' | relative_url }})
|
|
65
|
+
namespace (powered by the standalone `agex-cli`) is registered;
|
|
66
|
+
`culture afi`, `culture identity`, and `culture secret` are surfaced as
|
|
67
|
+
`(coming soon)` and will be added in future releases following the same
|
|
68
|
+
pattern.
|
|
69
|
+
|
|
50
70
|
## Reference points
|
|
51
71
|
|
|
52
72
|
Systems like OpenClaw are useful reference points because they focus on the
|
|
@@ -69,3 +89,4 @@ not a replacement for what they already carry.
|
|
|
69
89
|
- For the broader model and where this is going → [Vision]({{ '/vision/' | relative_url }}).
|
|
70
90
|
- For the conceptual model (spaces, membership, reflection) → [Mental model]({{ '/mental-model/' | relative_url }}).
|
|
71
91
|
- For the capability list → [Features]({{ '/features/' | relative_url }}).
|
|
92
|
+
- For the CLI's self-explaining surface → [`culture devex` and universal verbs]({{ '/reference/cli/devex/' | relative_url }}).
|