agentirc-cli 3.1.0__tar.gz → 3.1.1__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-3.1.0 → agentirc_cli-3.1.1}/CHANGELOG.md +7 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/PKG-INFO +1 -1
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/cli.py +22 -5
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/mesh_config.py +35 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/operations/ops-tooling.md +10 -6
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/pyproject.toml +1 -1
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_mesh_config.py +57 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/uv.lock +1 -1
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/.claude/skills/pr-review/SKILL.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/.claude/skills/run-tests/SKILL.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/.claude/skills/run-tests/scripts/test.sh +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/.flake8 +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/.github/workflows/pages.yml +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/.github/workflows/publish.yml +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/.github/workflows/security-checks.yml +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/.github/workflows/tests.yml +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/.gitignore +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/.markdownlint-cli2.yaml +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/.pr_agent.toml +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/.pre-commit-config.yaml +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/.pylintrc +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/CLAUDE.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/CNAME +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/Gemfile +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/Gemfile.lock +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/LICENSE +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/README.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/SECURITY.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/_config.yml +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/_sass/color_schemes/anthropic.scss +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/_sass/custom/custom.scss +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/__init__.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/__main__.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/bots/__init__.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/bots/bot.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/bots/bot_manager.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/bots/config.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/bots/http_listener.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/bots/template_engine.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/bots/virtual_client.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/__init__.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/acp/__init__.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/acp/agent_runner.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/acp/config.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/acp/daemon.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/acp/ipc.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/acp/irc_transport.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/acp/message_buffer.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/acp/skill/SKILL.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/acp/skill/__init__.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/acp/skill/irc_client.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/acp/socket_server.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/acp/supervisor.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/acp/webhook.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/claude/__init__.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/claude/__main__.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/claude/agent_runner.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/claude/config.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/claude/daemon.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/claude/ipc.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/claude/irc_transport.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/claude/message_buffer.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/claude/skill/SKILL.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/claude/skill/__init__.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/claude/skill/irc_client.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/claude/socket_server.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/claude/supervisor.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/claude/webhook.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/codex/__init__.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/codex/agent_runner.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/codex/config.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/codex/daemon.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/codex/ipc.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/codex/irc_transport.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/codex/message_buffer.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/codex/skill/SKILL.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/codex/skill/__init__.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/codex/skill/irc_client.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/codex/socket_server.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/codex/supervisor.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/codex/webhook.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/copilot/__init__.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/copilot/agent_runner.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/copilot/config.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/copilot/daemon.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/copilot/ipc.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/copilot/irc_transport.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/copilot/message_buffer.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/copilot/skill/SKILL.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/copilot/skill/__init__.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/copilot/skill/irc_client.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/copilot/socket_server.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/copilot/supervisor.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/clients/copilot/webhook.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/console/__init__.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/console/app.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/console/client.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/console/commands.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/console/widgets/__init__.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/console/widgets/chat.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/console/widgets/info_panel.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/console/widgets/sidebar.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/credentials.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/learn_prompt.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/observer.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/overview/__init__.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/overview/collector.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/overview/model.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/overview/renderer_text.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/overview/renderer_web.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/overview/web/style.css +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/persistence.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/pidfile.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/protocol/__init__.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/protocol/commands.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/protocol/extensions/federation.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/protocol/extensions/history.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/protocol/extensions/icons.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/protocol/extensions/rooms.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/protocol/extensions/tags.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/protocol/extensions/threads.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/protocol/message.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/protocol/protocol-index.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/protocol/replies.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/server/__init__.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/server/__main__.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/server/channel.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/server/client.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/server/config.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/server/ircd.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/server/remote_client.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/server/room_store.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/server/rooms_util.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/server/server_link.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/server/skill.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/server/skills/__init__.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/server/skills/history.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/server/skills/icon.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/server/skills/rooms.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/server/skills/threads.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/server/thread_store.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/culture/skills/culture/SKILL.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/agent-lifecycle.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/agentic-self-learn.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/architecture/agent-client.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/architecture/agent-harness-spec.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/architecture/design.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/architecture/harness-conformance.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/architecture/index.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/architecture/layer1-core-irc.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/architecture/layer2-attention.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/architecture/layer3-skills.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/architecture/layer4-federation.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/architecture/layer5-agent-harness.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/architecture/server-architecture.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/architecture/threads.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/clients/acp/overview.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/clients/claude/configuration.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/clients/claude/context-management.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/clients/claude/irc-tools.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/clients/claude/overview.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/clients/claude/setup.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/clients/claude/supervisor.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/clients/claude/webhooks.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/clients/codex/configuration.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/clients/codex/context-management.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/clients/codex/irc-tools.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/clients/codex/overview.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/clients/codex/setup.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/clients/codex/supervisor.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/clients/codex/webhooks.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/clients/copilot/configuration.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/clients/copilot/context-management.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/clients/copilot/irc-tools.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/clients/copilot/overview.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/clients/copilot/setup.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/clients/copilot/supervisor.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/clients/copilot/webhooks.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/culture-cli.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/getting-started.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/index.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/operations/SECURITY.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/operations/bots.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/operations/ci.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/operations/cli.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/operations/docs-site.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/operations/index.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/operations/overview.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/operations/publishing.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/resources/github-copilot-sdk-instructions.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/rooms.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/server-rename.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/superpowers/plans/2026-03-19-layer1-core-irc.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/superpowers/plans/2026-03-21-layer5-agent-harness.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/superpowers/plans/2026-03-30-overview.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/superpowers/plans/2026-03-30-rooms-management.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/superpowers/plans/2026-04-02-conversation-threads.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/superpowers/plans/2026-04-02-ops-tooling.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/superpowers/plans/2026-04-04-culture-rename.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/superpowers/plans/2026-04-05-docs-speak-culture.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/superpowers/plans/2026-04-06-console-chat.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/superpowers/specs/2026-03-19-agentirc-design.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/superpowers/specs/2026-03-21-layer5-agent-harness-design.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/superpowers/specs/2026-03-30-overview-design.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/superpowers/specs/2026-03-30-rooms-management-design.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/superpowers/specs/2026-04-02-conversation-threads-design.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/superpowers/specs/2026-04-02-ops-tooling-design.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/superpowers/specs/2026-04-03-bots-webhooks-design.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/superpowers/specs/2026-04-04-culture-rename-design.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/superpowers/specs/2026-04-05-docs-speak-culture-design.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/superpowers/specs/2026-04-05-lifecycle-reframe-design.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/superpowers/specs/2026-04-06-console-chat-design.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/use-cases/01-pair-programming.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/use-cases/02-code-review-ensemble.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/use-cases/03-cross-server-delegation.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/use-cases/04-knowledge-propagation.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/use-cases/05-the-observer.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/use-cases/06-cross-server-ops.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/use-cases/07-supervisor-intervention.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/use-cases/08-apps-as-agents.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/use-cases/09-research-swarm.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/use-cases/10-agent-lifecycle.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/use-cases-index.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/docs/what-is-culture.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/packages/agent-harness/README.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/packages/agent-harness/config.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/packages/agent-harness/daemon.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/packages/agent-harness/ipc.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/packages/agent-harness/irc_transport.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/packages/agent-harness/message_buffer.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/packages/agent-harness/skill/SKILL.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/packages/agent-harness/skill/irc_client.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/packages/agent-harness/socket_server.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/packages/agent-harness/webhook.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/plugins/claude-code/.claude-plugin/plugin.json +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/plugins/claude-code/skills/culture/SKILL.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/plugins/claude-code/skills/irc/SKILL.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/plugins/codex/skills/culture-irc/SKILL.md +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/sonar-project.properties +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/__init__.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/conftest.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_acp_daemon.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_agent_runner.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_bot.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_bot_config.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_bot_manager.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_bots_integration.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_channel.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_codex_daemon.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_connection.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_console_client.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_console_commands.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_console_connection.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_console_icons.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_console_integration.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_copilot_daemon.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_daemon.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_daemon_config.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_daemon_ipc.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_discovery.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_federation.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_history.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_http_listener.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_integration_layer5.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_ipc.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_irc_transport.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_link_reconnect.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_mentions.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_message.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_message_buffer.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_messaging.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_modes.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_overview_cli.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_overview_collector.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_overview_model.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_overview_renderer.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_overview_web.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_persistence.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_pidfile.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_room_persistence.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_rooms.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_rooms_federation.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_rooms_integration.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_server_icon_skill.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_setup_update_cli.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_skill_client.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_skills.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_socket_server.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_supervisor.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_template_engine.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_thread_buffer.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_threads.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_virtual_client.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_wait_for_port.py +0 -0
- {agentirc_cli-3.1.0 → agentirc_cli-3.1.1}/tests/test_webhook.py +0 -0
|
@@ -4,6 +4,13 @@ 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
|
+
## [3.1.1] - 2026-04-06
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- culture update and setup auto-generate mesh.yaml from agents.yaml when mesh.yaml is missing
|
|
13
|
+
|
|
7
14
|
## [3.1.0] - 2026-04-06
|
|
8
15
|
|
|
9
16
|
|
|
@@ -1899,6 +1899,22 @@ def _resolve_links_from_mesh(mesh_config_path: str) -> list:
|
|
|
1899
1899
|
# -----------------------------------------------------------------------
|
|
1900
1900
|
|
|
1901
1901
|
|
|
1902
|
+
def _generate_mesh_from_agents(mesh_config_path: str):
|
|
1903
|
+
"""Fall back to generating mesh.yaml from agents.yaml when mesh.yaml is missing."""
|
|
1904
|
+
from culture.mesh_config import from_daemon_config, save_mesh_config
|
|
1905
|
+
|
|
1906
|
+
if not os.path.isfile(DEFAULT_CONFIG):
|
|
1907
|
+
print(f"Mesh config not found: {mesh_config_path}", file=sys.stderr)
|
|
1908
|
+
print(f"Agent config not found either: {DEFAULT_CONFIG}", file=sys.stderr)
|
|
1909
|
+
return None
|
|
1910
|
+
|
|
1911
|
+
daemon_config = load_config(DEFAULT_CONFIG)
|
|
1912
|
+
mesh = from_daemon_config(daemon_config)
|
|
1913
|
+
save_mesh_config(mesh, mesh_config_path)
|
|
1914
|
+
print(f"No mesh.yaml found — generated from {DEFAULT_CONFIG}")
|
|
1915
|
+
return mesh
|
|
1916
|
+
|
|
1917
|
+
|
|
1902
1918
|
def _build_server_start_cmd(mesh, culture_bin: str, mesh_config_path: str) -> list[str]:
|
|
1903
1919
|
"""Build the server start command with --foreground and --mesh-config.
|
|
1904
1920
|
|
|
@@ -2014,9 +2030,9 @@ def _cmd_setup(args: argparse.Namespace) -> None:
|
|
|
2014
2030
|
try:
|
|
2015
2031
|
mesh = load_mesh_config(args.config)
|
|
2016
2032
|
except FileNotFoundError:
|
|
2017
|
-
|
|
2018
|
-
|
|
2019
|
-
|
|
2033
|
+
mesh = _generate_mesh_from_agents(args.config)
|
|
2034
|
+
if mesh is None:
|
|
2035
|
+
sys.exit(1)
|
|
2020
2036
|
|
|
2021
2037
|
server_name = mesh.server.name
|
|
2022
2038
|
|
|
@@ -2239,8 +2255,9 @@ def _cmd_update(args: argparse.Namespace) -> None:
|
|
|
2239
2255
|
try:
|
|
2240
2256
|
mesh = load_mesh_config(args.config)
|
|
2241
2257
|
except FileNotFoundError:
|
|
2242
|
-
|
|
2243
|
-
|
|
2258
|
+
mesh = _generate_mesh_from_agents(args.config)
|
|
2259
|
+
if mesh is None:
|
|
2260
|
+
sys.exit(1)
|
|
2244
2261
|
|
|
2245
2262
|
server_name = mesh.server.name
|
|
2246
2263
|
|
|
@@ -6,9 +6,13 @@ import os
|
|
|
6
6
|
import tempfile
|
|
7
7
|
from dataclasses import asdict, dataclass, field
|
|
8
8
|
from pathlib import Path
|
|
9
|
+
from typing import TYPE_CHECKING
|
|
9
10
|
|
|
10
11
|
import yaml
|
|
11
12
|
|
|
13
|
+
if TYPE_CHECKING:
|
|
14
|
+
from culture.clients.claude.config import DaemonConfig
|
|
15
|
+
|
|
12
16
|
|
|
13
17
|
@dataclass
|
|
14
18
|
class MeshLinkConfig:
|
|
@@ -73,6 +77,37 @@ def load_mesh_config(path: str | Path = DEFAULT_MESH_PATH) -> MeshConfig:
|
|
|
73
77
|
return MeshConfig(server=server, agents=agents)
|
|
74
78
|
|
|
75
79
|
|
|
80
|
+
def from_daemon_config(daemon_config: DaemonConfig) -> MeshConfig:
|
|
81
|
+
"""Derive a MeshConfig from an existing DaemonConfig (agents.yaml).
|
|
82
|
+
|
|
83
|
+
Useful when mesh.yaml doesn't exist but the user has a running mesh
|
|
84
|
+
started manually via ``culture server start`` + ``culture start``.
|
|
85
|
+
|
|
86
|
+
Note: DaemonConfig.server.host is the *connection* target (often localhost),
|
|
87
|
+
while MeshServerConfig.host is the *listen* address. We use the default
|
|
88
|
+
0.0.0.0 for the listen address to preserve external accessibility.
|
|
89
|
+
"""
|
|
90
|
+
server = MeshServerConfig(
|
|
91
|
+
name=daemon_config.server.name,
|
|
92
|
+
port=daemon_config.server.port,
|
|
93
|
+
)
|
|
94
|
+
server_prefix = f"{daemon_config.server.name}-"
|
|
95
|
+
agents = []
|
|
96
|
+
for a in daemon_config.agents:
|
|
97
|
+
nick = a.nick
|
|
98
|
+
if nick.startswith(server_prefix):
|
|
99
|
+
nick = nick[len(server_prefix) :]
|
|
100
|
+
agents.append(
|
|
101
|
+
MeshAgentConfig(
|
|
102
|
+
nick=nick,
|
|
103
|
+
type=a.agent,
|
|
104
|
+
workdir=a.directory,
|
|
105
|
+
channels=list(a.channels),
|
|
106
|
+
)
|
|
107
|
+
)
|
|
108
|
+
return MeshConfig(server=server, agents=agents)
|
|
109
|
+
|
|
110
|
+
|
|
76
111
|
def save_mesh_config(config: MeshConfig, path: str | Path = DEFAULT_MESH_PATH) -> None:
|
|
77
112
|
"""Serialize mesh config to YAML and write atomically."""
|
|
78
113
|
path = Path(path)
|
|
@@ -96,7 +96,9 @@ culture setup --uninstall # remove all services and stop processes
|
|
|
96
96
|
|
|
97
97
|
### What setup does
|
|
98
98
|
|
|
99
|
-
1. Loads `mesh.yaml`.
|
|
99
|
+
1. Loads `mesh.yaml`. If the file is missing but `~/.culture/agents.yaml`
|
|
100
|
+
exists, auto-generates `mesh.yaml` from it (listen host defaults to
|
|
101
|
+
`0.0.0.0`, no federation links).
|
|
100
102
|
2. For each peer link, checks the OS credential store. If no credential is
|
|
101
103
|
found, prompts interactively and stores the password in the OS keyring
|
|
102
104
|
(never written to files).
|
|
@@ -147,11 +149,13 @@ culture update --config /path/mesh.yaml
|
|
|
147
149
|
|
|
148
150
|
### What update does
|
|
149
151
|
|
|
150
|
-
1.
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
152
|
+
1. Loads `mesh.yaml`. If the file is missing but `~/.culture/agents.yaml`
|
|
153
|
+
exists, auto-generates `mesh.yaml` from it (same fallback as `setup`).
|
|
154
|
+
2. Upgrades `culture` via `uv tool upgrade` (falls back to `pip install --upgrade`).
|
|
155
|
+
3. Re-execs itself with `--skip-upgrade` so the restart runs with the new binary.
|
|
156
|
+
4. Stops all agents, then stops the server.
|
|
157
|
+
5. Regenerates auto-start service entries (picks up any config changes).
|
|
158
|
+
6. Starts the server, waits for it to accept connections, then starts all agents.
|
|
155
159
|
|
|
156
160
|
The `--dry-run` output shows every step without touching running services:
|
|
157
161
|
|
|
@@ -3,11 +3,13 @@
|
|
|
3
3
|
|
|
4
4
|
import pytest
|
|
5
5
|
|
|
6
|
+
from culture.clients.claude.config import AgentConfig, DaemonConfig, ServerConnConfig
|
|
6
7
|
from culture.mesh_config import (
|
|
7
8
|
MeshAgentConfig,
|
|
8
9
|
MeshConfig,
|
|
9
10
|
MeshLinkConfig,
|
|
10
11
|
MeshServerConfig,
|
|
12
|
+
from_daemon_config,
|
|
11
13
|
load_mesh_config,
|
|
12
14
|
save_mesh_config,
|
|
13
15
|
)
|
|
@@ -96,3 +98,58 @@ def test_mesh_config_file_not_found():
|
|
|
96
98
|
"""Loading a missing file raises FileNotFoundError."""
|
|
97
99
|
with pytest.raises(FileNotFoundError):
|
|
98
100
|
load_mesh_config("/nonexistent/mesh.yaml")
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
def test_from_daemon_config_strips_prefix():
|
|
104
|
+
"""from_daemon_config strips server prefix from agent nicks."""
|
|
105
|
+
daemon = DaemonConfig(
|
|
106
|
+
server=ServerConnConfig(name="spark", host="localhost", port=6667),
|
|
107
|
+
agents=[
|
|
108
|
+
AgentConfig(
|
|
109
|
+
nick="spark-claude",
|
|
110
|
+
agent="claude",
|
|
111
|
+
directory="/home/user/proj",
|
|
112
|
+
channels=["#general", "#dev"],
|
|
113
|
+
),
|
|
114
|
+
AgentConfig(
|
|
115
|
+
nick="spark-codex",
|
|
116
|
+
agent="codex",
|
|
117
|
+
directory="/home/user/other",
|
|
118
|
+
channels=["#general"],
|
|
119
|
+
),
|
|
120
|
+
],
|
|
121
|
+
)
|
|
122
|
+
mesh = from_daemon_config(daemon)
|
|
123
|
+
|
|
124
|
+
assert mesh.server.name == "spark"
|
|
125
|
+
assert mesh.server.host == "0.0.0.0" # listen address, not connection target
|
|
126
|
+
assert mesh.server.port == 6667
|
|
127
|
+
assert mesh.server.links == []
|
|
128
|
+
assert len(mesh.agents) == 2
|
|
129
|
+
assert mesh.agents[0].nick == "claude"
|
|
130
|
+
assert mesh.agents[0].type == "claude"
|
|
131
|
+
assert mesh.agents[0].workdir == "/home/user/proj"
|
|
132
|
+
assert mesh.agents[0].channels == ["#general", "#dev"]
|
|
133
|
+
assert mesh.agents[1].nick == "codex"
|
|
134
|
+
assert mesh.agents[1].type == "codex"
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
def test_from_daemon_config_unprefixed_nick():
|
|
138
|
+
"""from_daemon_config handles nicks without server prefix."""
|
|
139
|
+
daemon = DaemonConfig(
|
|
140
|
+
server=ServerConnConfig(name="spark"),
|
|
141
|
+
agents=[AgentConfig(nick="standalone", agent="claude", directory=".")],
|
|
142
|
+
)
|
|
143
|
+
mesh = from_daemon_config(daemon)
|
|
144
|
+
assert mesh.agents[0].nick == "standalone"
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
def test_from_daemon_config_empty_agents():
|
|
148
|
+
"""from_daemon_config works with no agents."""
|
|
149
|
+
daemon = DaemonConfig(
|
|
150
|
+
server=ServerConnConfig(name="test", port=7000),
|
|
151
|
+
)
|
|
152
|
+
mesh = from_daemon_config(daemon)
|
|
153
|
+
assert mesh.server.name == "test"
|
|
154
|
+
assert mesh.server.port == 7000
|
|
155
|
+
assert mesh.agents == []
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|