agentirc-cli 0.2.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.
Files changed (113) hide show
  1. agentirc_cli-0.2.1/.github/workflows/pages.yml +52 -0
  2. agentirc_cli-0.2.1/.github/workflows/publish.yml +93 -0
  3. agentirc_cli-0.2.1/.github/workflows/tests.yml +22 -0
  4. agentirc_cli-0.2.1/.gitignore +207 -0
  5. agentirc_cli-0.2.1/.markdownlint-cli2.yaml +14 -0
  6. agentirc_cli-0.2.1/.pr_agent.toml +9 -0
  7. agentirc_cli-0.2.1/CHANGELOG.md +65 -0
  8. agentirc_cli-0.2.1/CLAUDE.md +39 -0
  9. agentirc_cli-0.2.1/CNAME +1 -0
  10. agentirc_cli-0.2.1/Gemfile +6 -0
  11. agentirc_cli-0.2.1/Gemfile.lock +250 -0
  12. agentirc_cli-0.2.1/LICENSE +21 -0
  13. agentirc_cli-0.2.1/PKG-INFO +183 -0
  14. agentirc_cli-0.2.1/README.md +164 -0
  15. agentirc_cli-0.2.1/_config.yml +56 -0
  16. agentirc_cli-0.2.1/_sass/color_schemes/anthropic.scss +34 -0
  17. agentirc_cli-0.2.1/_sass/custom/custom.scss +16 -0
  18. agentirc_cli-0.2.1/agentirc/__init__.py +1 -0
  19. agentirc_cli-0.2.1/agentirc/cli.py +651 -0
  20. agentirc_cli-0.2.1/agentirc/clients/__init__.py +0 -0
  21. agentirc_cli-0.2.1/agentirc/clients/claude/__init__.py +0 -0
  22. agentirc_cli-0.2.1/agentirc/clients/claude/__main__.py +93 -0
  23. agentirc_cli-0.2.1/agentirc/clients/claude/agent_runner.py +167 -0
  24. agentirc_cli-0.2.1/agentirc/clients/claude/config.py +162 -0
  25. agentirc_cli-0.2.1/agentirc/clients/claude/daemon.py +422 -0
  26. agentirc_cli-0.2.1/agentirc/clients/claude/ipc.py +38 -0
  27. agentirc_cli-0.2.1/agentirc/clients/claude/irc_transport.py +146 -0
  28. agentirc_cli-0.2.1/agentirc/clients/claude/message_buffer.py +46 -0
  29. agentirc_cli-0.2.1/agentirc/clients/claude/skill/SKILL.md +202 -0
  30. agentirc_cli-0.2.1/agentirc/clients/claude/skill/__init__.py +0 -0
  31. agentirc_cli-0.2.1/agentirc/clients/claude/skill/irc_client.py +281 -0
  32. agentirc_cli-0.2.1/agentirc/clients/claude/socket_server.py +106 -0
  33. agentirc_cli-0.2.1/agentirc/clients/claude/supervisor.py +139 -0
  34. agentirc_cli-0.2.1/agentirc/clients/claude/webhook.py +59 -0
  35. agentirc_cli-0.2.1/agentirc/observer.py +228 -0
  36. agentirc_cli-0.2.1/agentirc/pidfile.py +49 -0
  37. agentirc_cli-0.2.1/agentirc/protocol/__init__.py +0 -0
  38. agentirc_cli-0.2.1/agentirc/protocol/commands.py +33 -0
  39. agentirc_cli-0.2.1/agentirc/protocol/extensions/federation.md +94 -0
  40. agentirc_cli-0.2.1/agentirc/protocol/extensions/history.md +112 -0
  41. agentirc_cli-0.2.1/agentirc/protocol/message.py +58 -0
  42. agentirc_cli-0.2.1/agentirc/protocol/protocol-index.md +9 -0
  43. agentirc_cli-0.2.1/agentirc/protocol/replies.py +44 -0
  44. agentirc_cli-0.2.1/agentirc/server/__init__.py +0 -0
  45. agentirc_cli-0.2.1/agentirc/server/__main__.py +61 -0
  46. agentirc_cli-0.2.1/agentirc/server/channel.py +56 -0
  47. agentirc_cli-0.2.1/agentirc/server/client.py +742 -0
  48. agentirc_cli-0.2.1/agentirc/server/config.py +21 -0
  49. agentirc_cli-0.2.1/agentirc/server/ircd.py +208 -0
  50. agentirc_cli-0.2.1/agentirc/server/remote_client.py +42 -0
  51. agentirc_cli-0.2.1/agentirc/server/server_link.py +537 -0
  52. agentirc_cli-0.2.1/agentirc/server/skill.py +45 -0
  53. agentirc_cli-0.2.1/agentirc/server/skills/__init__.py +0 -0
  54. agentirc_cli-0.2.1/agentirc/server/skills/history.py +152 -0
  55. agentirc_cli-0.2.1/docs/agent-client.md +11 -0
  56. agentirc_cli-0.2.1/docs/ci.md +42 -0
  57. agentirc_cli-0.2.1/docs/cli.md +135 -0
  58. agentirc_cli-0.2.1/docs/clients/claude/configuration.md +162 -0
  59. agentirc_cli-0.2.1/docs/clients/claude/context-management.md +94 -0
  60. agentirc_cli-0.2.1/docs/clients/claude/irc-tools.md +207 -0
  61. agentirc_cli-0.2.1/docs/clients/claude/overview.md +103 -0
  62. agentirc_cli-0.2.1/docs/clients/claude/setup.md +190 -0
  63. agentirc_cli-0.2.1/docs/clients/claude/supervisor.md +104 -0
  64. agentirc_cli-0.2.1/docs/clients/claude/webhooks.md +91 -0
  65. agentirc_cli-0.2.1/docs/design.md +9 -0
  66. agentirc_cli-0.2.1/docs/docs-site.md +47 -0
  67. agentirc_cli-0.2.1/docs/layer1-core-irc.md +59 -0
  68. agentirc_cli-0.2.1/docs/layer2-attention.md +125 -0
  69. agentirc_cli-0.2.1/docs/layer3-skills.md +108 -0
  70. agentirc_cli-0.2.1/docs/layer4-federation.md +102 -0
  71. agentirc_cli-0.2.1/docs/layer5-agent-harness.md +96 -0
  72. agentirc_cli-0.2.1/docs/publishing.md +39 -0
  73. agentirc_cli-0.2.1/docs/server-architecture.md +17 -0
  74. agentirc_cli-0.2.1/docs/superpowers/plans/2026-03-19-layer1-core-irc.md +1653 -0
  75. agentirc_cli-0.2.1/docs/superpowers/plans/2026-03-21-layer5-agent-harness.md +3120 -0
  76. agentirc_cli-0.2.1/docs/superpowers/specs/2026-03-19-agentirc-design.md +403 -0
  77. agentirc_cli-0.2.1/docs/superpowers/specs/2026-03-21-layer5-agent-harness-design.md +484 -0
  78. agentirc_cli-0.2.1/docs/use-cases/01-pair-programming.md +132 -0
  79. agentirc_cli-0.2.1/docs/use-cases/02-code-review-ensemble.md +121 -0
  80. agentirc_cli-0.2.1/docs/use-cases/03-research-deep-dive.md +156 -0
  81. agentirc_cli-0.2.1/docs/use-cases/04-agent-delegation.md +104 -0
  82. agentirc_cli-0.2.1/docs/use-cases/05-benchmark-swarm.md +146 -0
  83. agentirc_cli-0.2.1/docs/use-cases/06-cross-server-ops.md +144 -0
  84. agentirc_cli-0.2.1/docs/use-cases/07-knowledge-pipeline.md +164 -0
  85. agentirc_cli-0.2.1/docs/use-cases/08-supervisor-intervention.md +193 -0
  86. agentirc_cli-0.2.1/docs/use-cases/09-apps-as-agents.md +137 -0
  87. agentirc_cli-0.2.1/docs/use-cases-index.md +9 -0
  88. agentirc_cli-0.2.1/index.md +76 -0
  89. agentirc_cli-0.2.1/pyproject.toml +39 -0
  90. agentirc_cli-0.2.1/tests/__init__.py +0 -0
  91. agentirc_cli-0.2.1/tests/conftest.py +179 -0
  92. agentirc_cli-0.2.1/tests/test_agent_runner.py +191 -0
  93. agentirc_cli-0.2.1/tests/test_channel.py +131 -0
  94. agentirc_cli-0.2.1/tests/test_connection.py +135 -0
  95. agentirc_cli-0.2.1/tests/test_daemon.py +89 -0
  96. agentirc_cli-0.2.1/tests/test_daemon_config.py +343 -0
  97. agentirc_cli-0.2.1/tests/test_discovery.py +169 -0
  98. agentirc_cli-0.2.1/tests/test_federation.py +860 -0
  99. agentirc_cli-0.2.1/tests/test_history.py +375 -0
  100. agentirc_cli-0.2.1/tests/test_integration_layer5.py +105 -0
  101. agentirc_cli-0.2.1/tests/test_ipc.py +56 -0
  102. agentirc_cli-0.2.1/tests/test_irc_transport.py +91 -0
  103. agentirc_cli-0.2.1/tests/test_mentions.py +159 -0
  104. agentirc_cli-0.2.1/tests/test_message.py +79 -0
  105. agentirc_cli-0.2.1/tests/test_message_buffer.py +70 -0
  106. agentirc_cli-0.2.1/tests/test_messaging.py +103 -0
  107. agentirc_cli-0.2.1/tests/test_modes.py +327 -0
  108. agentirc_cli-0.2.1/tests/test_skill_client.py +87 -0
  109. agentirc_cli-0.2.1/tests/test_skills.py +208 -0
  110. agentirc_cli-0.2.1/tests/test_socket_server.py +68 -0
  111. agentirc_cli-0.2.1/tests/test_supervisor.py +222 -0
  112. agentirc_cli-0.2.1/tests/test_webhook.py +75 -0
  113. agentirc_cli-0.2.1/uv.lock +864 -0
@@ -0,0 +1,52 @@
1
+ name: Deploy Jekyll to GitHub Pages
2
+
3
+ on:
4
+ push:
5
+ branches: ["main"]
6
+ workflow_dispatch:
7
+
8
+ permissions:
9
+ contents: read
10
+ pages: write
11
+ id-token: write
12
+
13
+ concurrency:
14
+ group: "pages"
15
+ cancel-in-progress: false
16
+
17
+ jobs:
18
+ build:
19
+ runs-on: ubuntu-latest
20
+ steps:
21
+ - name: Checkout
22
+ uses: actions/checkout@v4
23
+
24
+ - name: Setup Ruby
25
+ uses: ruby/setup-ruby@v1
26
+ with:
27
+ ruby-version: '3.3'
28
+ bundler-cache: true
29
+
30
+ - name: Setup Pages
31
+ uses: actions/configure-pages@v5
32
+
33
+ - name: Build with Jekyll
34
+ run: bundle exec jekyll build
35
+ env:
36
+ JEKYLL_ENV: production
37
+
38
+ - name: Upload artifact
39
+ uses: actions/upload-pages-artifact@v3
40
+ with:
41
+ path: _site
42
+
43
+ deploy:
44
+ environment:
45
+ name: github-pages
46
+ url: ${{ steps.deployment.outputs.page_url }}
47
+ runs-on: ubuntu-latest
48
+ needs: build
49
+ steps:
50
+ - name: Deploy to GitHub Pages
51
+ id: deployment
52
+ uses: actions/deploy-pages@v4
@@ -0,0 +1,93 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ paths:
7
+ - "pyproject.toml"
8
+ - "agentirc/**"
9
+ pull_request:
10
+ branches: [main]
11
+ paths:
12
+ - "pyproject.toml"
13
+ - "agentirc/**"
14
+
15
+ permissions:
16
+ contents: read
17
+
18
+ jobs:
19
+ test:
20
+ runs-on: ubuntu-latest
21
+ steps:
22
+ - uses: actions/checkout@v4
23
+
24
+ - uses: astral-sh/setup-uv@v4
25
+
26
+ - run: uv python install 3.12
27
+
28
+ - run: uv sync
29
+
30
+ - run: uv run pytest -v
31
+
32
+ test-publish:
33
+ if: github.event_name == 'pull_request'
34
+ needs: test
35
+ runs-on: ubuntu-latest
36
+ environment: testpypi
37
+ permissions:
38
+ contents: read
39
+ id-token: write
40
+ steps:
41
+ - uses: actions/checkout@v4
42
+
43
+ - uses: astral-sh/setup-uv@v4
44
+
45
+ - run: uv python install 3.12
46
+
47
+ - run: uv sync
48
+
49
+ - name: Set dev version
50
+ run: |
51
+ BASE=$(python -c "import tomllib; print(tomllib.load(open('pyproject.toml','rb'))['project']['version'])")
52
+ DEV_VERSION="${BASE}.dev${{ github.run_number }}"
53
+ sed -i "s/^version = .*/version = \"${DEV_VERSION}\"/" pyproject.toml
54
+ echo "DEV_VERSION=${DEV_VERSION}" >> "$GITHUB_ENV"
55
+ echo "Publishing ${DEV_VERSION} to TestPyPI"
56
+
57
+ - name: Build and publish agentirc-cli to TestPyPI
58
+ run: |
59
+ uv build
60
+ uv publish --publish-url https://test.pypi.org/legacy/ --trusted-publishing always
61
+
62
+ - name: Build and publish agentirc to TestPyPI
63
+ run: |
64
+ sed -i 's/^name = "agentirc-cli"/name = "agentirc"/' pyproject.toml
65
+ rm -rf dist
66
+ uv build
67
+ uv publish --publish-url https://test.pypi.org/legacy/ --trusted-publishing always
68
+
69
+ - name: Print install commands
70
+ run: |
71
+ echo "::notice::Test with: pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ agentirc-cli==${DEV_VERSION}"
72
+ echo "::notice::Or: pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ agentirc==${DEV_VERSION}"
73
+
74
+ publish:
75
+ if: github.event_name == 'push'
76
+ needs: test
77
+ runs-on: ubuntu-latest
78
+ environment: pypi
79
+ permissions:
80
+ contents: read
81
+ id-token: write
82
+ steps:
83
+ - uses: actions/checkout@v4
84
+
85
+ - uses: astral-sh/setup-uv@v4
86
+
87
+ - run: uv python install 3.12
88
+
89
+ - run: uv sync
90
+
91
+ - run: uv build
92
+
93
+ - run: uv publish --trusted-publishing always
@@ -0,0 +1,22 @@
1
+ name: Tests
2
+
3
+ on:
4
+ pull_request:
5
+ branches: [main]
6
+
7
+ permissions:
8
+ contents: read
9
+
10
+ jobs:
11
+ test:
12
+ runs-on: ubuntu-latest
13
+ steps:
14
+ - uses: actions/checkout@v4
15
+
16
+ - uses: astral-sh/setup-uv@v4
17
+
18
+ - run: uv python install 3.12
19
+
20
+ - run: uv sync
21
+
22
+ - run: uv run pytest -v
@@ -0,0 +1,207 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[codz]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ share/python-wheels/
24
+ *.egg-info/
25
+ .installed.cfg
26
+ *.egg
27
+ MANIFEST
28
+
29
+ # PyInstaller
30
+ # Usually these files are written by a python script from a template
31
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
32
+ *.manifest
33
+ *.spec
34
+
35
+ # Installer logs
36
+ pip-log.txt
37
+ pip-delete-this-directory.txt
38
+
39
+ # Unit test / coverage reports
40
+ htmlcov/
41
+ .tox/
42
+ .nox/
43
+ .coverage
44
+ .coverage.*
45
+ .cache
46
+ nosetests.xml
47
+ coverage.xml
48
+ *.cover
49
+ *.py.cover
50
+ .hypothesis/
51
+ .pytest_cache/
52
+ cover/
53
+
54
+ # Translations
55
+ *.mo
56
+ *.pot
57
+
58
+ # Django stuff:
59
+ *.log
60
+ local_settings.py
61
+ db.sqlite3
62
+ db.sqlite3-journal
63
+
64
+ # Flask stuff:
65
+ instance/
66
+ .webassets-cache
67
+
68
+ # Scrapy stuff:
69
+ .scrapy
70
+
71
+ # Sphinx documentation
72
+ docs/_build/
73
+
74
+ # PyBuilder
75
+ .pybuilder/
76
+ target/
77
+
78
+ # Jupyter Notebook
79
+ .ipynb_checkpoints
80
+
81
+ # IPython
82
+ profile_default/
83
+ ipython_config.py
84
+
85
+ # pyenv
86
+ # For a library or package, you might want to ignore these files since the code is
87
+ # intended to run in multiple environments; otherwise, check them in:
88
+ # .python-version
89
+
90
+ # pipenv
91
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
92
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
93
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
94
+ # install all needed dependencies.
95
+ #Pipfile.lock
96
+
97
+ # UV
98
+ # Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
99
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
100
+ # commonly ignored for libraries.
101
+ #uv.lock
102
+
103
+ # poetry
104
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
105
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
106
+ # commonly ignored for libraries.
107
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
108
+ #poetry.lock
109
+ #poetry.toml
110
+
111
+ # pdm
112
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
113
+ # pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python.
114
+ # https://pdm-project.org/en/latest/usage/project/#working-with-version-control
115
+ #pdm.lock
116
+ #pdm.toml
117
+ .pdm-python
118
+ .pdm-build/
119
+
120
+ # pixi
121
+ # Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control.
122
+ #pixi.lock
123
+ # Pixi creates a virtual environment in the .pixi directory, just like venv module creates one
124
+ # in the .venv directory. It is recommended not to include this directory in version control.
125
+ .pixi
126
+
127
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
128
+ __pypackages__/
129
+
130
+ # Celery stuff
131
+ celerybeat-schedule
132
+ celerybeat.pid
133
+
134
+ # SageMath parsed files
135
+ *.sage.py
136
+
137
+ # Environments
138
+ .env
139
+ .envrc
140
+ .venv
141
+ env/
142
+ venv/
143
+ ENV/
144
+ env.bak/
145
+ venv.bak/
146
+
147
+ # Spyder project settings
148
+ .spyderproject
149
+ .spyproject
150
+
151
+ # Rope project settings
152
+ .ropeproject
153
+
154
+ # mkdocs documentation
155
+ /site
156
+
157
+ # mypy
158
+ .mypy_cache/
159
+ .dmypy.json
160
+ dmypy.json
161
+
162
+ # Pyre type checker
163
+ .pyre/
164
+
165
+ # pytype static type analyzer
166
+ .pytype/
167
+
168
+ # Cython debug symbols
169
+ cython_debug/
170
+
171
+ # PyCharm
172
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
173
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
174
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
175
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
176
+ #.idea/
177
+
178
+ # Abstra
179
+ # Abstra is an AI-powered process automation framework.
180
+ # Ignore directories containing user credentials, local state, and settings.
181
+ # Learn more at https://abstra.io/docs
182
+ .abstra/
183
+
184
+ # Visual Studio Code
185
+ # Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
186
+ # that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
187
+ # and can be added to the global gitignore or merged into this file. However, if you prefer,
188
+ # you could uncomment the following to ignore the entire vscode folder
189
+ # .vscode/
190
+
191
+ # Ruff stuff:
192
+ .ruff_cache/
193
+
194
+ # PyPI configuration file
195
+ .pypirc
196
+
197
+ # Cursor
198
+ # Cursor is an AI-powered code editor. `.cursorignore` specifies files/directories to
199
+ # exclude from AI features like autocomplete and code analysis. Recommended for sensitive data
200
+ # refer to https://docs.cursor.com/context/ignore-files
201
+ .cursorignore
202
+ .cursorindexingignore
203
+
204
+ # Marimo
205
+ marimo/_static/
206
+ marimo/_lsp/
207
+ __marimo__/
@@ -0,0 +1,14 @@
1
+ # Global markdownlint-cli2 configuration
2
+ # Per-project .markdownlint-cli2.yaml overrides these defaults
3
+
4
+ config:
5
+ default: true
6
+ # MD013: Line length — disabled globally (too noisy for content-heavy repos)
7
+ MD013: false
8
+ # MD060: Table pipe spacing — disabled (stylistic preference)
9
+ MD060: false
10
+
11
+ # Ignore patterns
12
+ ignores:
13
+ - "node_modules/**"
14
+ - ".local/**"
@@ -0,0 +1,9 @@
1
+ [pr_reviewer]
2
+ extra_instructions = """
3
+ - The `packages/` directory is ONLY for the "assimilai" pattern (internal packages copied into other projects). Top-level directories like `server/`, `protocol/`, and `clients/` are standalone application packages — they belong at the top level, NOT under `packages/`.
4
+ - The "no mocks for the server" testing rule applies to IRC server tests only. Client libraries (like SkillClient) may use mock/stub servers in unit tests. Integration tests in `test_integration_layer5.py` exercise the real server stack.
5
+ - Nick format validation (`<server>-<agent>`) is enforced by the IRC server at connection time. Config loading is a data layer and should not duplicate server-side validation.
6
+ - Features explicitly marked as TODO or listed in the spec's "Deferred Features" section are known limitations, not bugs.
7
+ - The `clients/` directory contains agent client harnesses (daemons). It is NOT an internal package for assimilation.
8
+ """
9
+ num_max_findings = 5
@@ -0,0 +1,65 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ Format follows [Keep a Changelog](https://keepachangelog.com/).
6
+
7
+ ## [0.2.1] - 2026-03-22
8
+
9
+
10
+ ### Added
11
+
12
+ - OIDC trusted publishing for PyPI and TestPyPI
13
+ - Dual package publish (agentirc + agentirc-cli) to TestPyPI
14
+ - CHANGELOG.md with Keep a Changelog format
15
+
16
+
17
+ ### Changed
18
+
19
+ - Publish workflow uses id-token instead of API token secrets
20
+
21
+ ## [0.2.0] - 2026-03-22
22
+
23
+ ### Added
24
+
25
+ - Unified `agentirc` CLI: server start/stop/status, init, start/stop/status, read/who/channels
26
+ - `agentirc init` derives agent nick from current directory name
27
+ - IRC observer for ephemeral read-only connections (read, who, channels)
28
+ - PID file management for server and agent lifecycle
29
+ - Graceful agent shutdown via IPC socket
30
+ - `--link` flag on `agentirc server start` for federation
31
+ - `_handle_list` in server (LIST command, RPL_LIST 322 + RPL_LISTEND 323)
32
+ - `server.name` config field for nick prefix
33
+ - Config helpers: `save_config`, `load_config_or_default`, `add_agent_to_config`, `sanitize_agent_name`
34
+ - CLI reference documentation (`docs/cli.md`)
35
+ - PyPI publishing workflow with TestPyPI pre-deploy
36
+ - Publishing guide (`docs/publishing.md`)
37
+
38
+ ### Changed
39
+
40
+ - Restructured all code under `agentirc/` namespace to avoid site-packages collisions
41
+ - Package name `agentirc-cli` on PyPI (`agentirc` was taken)
42
+ - README rewritten around `pip install agentirc-cli` workflow
43
+ - All imports updated from `protocol.*`, `server.*`, `clients.*` to `agentirc.*`
44
+ - Updated all documentation with new import paths and CLI commands
45
+
46
+ ### Fixed
47
+
48
+ - WHO reply param index (params[5] not params[4]) for correct nick extraction
49
+ - Removed broken `WHO *` for channel listing, replaced with LIST
50
+ - Removed dead `"x in dir()"` guards in observer timeout handlers
51
+ - Removed forced `#` prefix on WHO target — nick lookups now work
52
+ - Fixed `agentirc-cli-cli` typo in publishing docs
53
+
54
+ ## [0.1.0] - 2026-03-21
55
+
56
+ ### Added
57
+
58
+ - Initial release
59
+ - Async Python IRCd (Layers 1-4: Core IRC, Attention/Routing, Skills, Federation)
60
+ - Claude Agent SDK client harness (Layer 5)
61
+ - Agent daemon with IRC transport, message buffering, supervisor
62
+ - IRC skill tools for agent actions via Unix socket IPC
63
+ - Webhook alerting system
64
+ - 197 tests with real TCP connections (no mocks)
65
+ - GitHub Pages documentation site
@@ -0,0 +1,39 @@
1
+ # CLAUDE.md
2
+
3
+ This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
+
5
+ ## Project Overview
6
+
7
+ **agentirc** — A mesh of IRC servers where AI agents collaborate, share knowledge, and coordinate work. Humans participate as first-class citizens. Custom async Python IRCd built from scratch, with Claude Agent SDK client harnesses.
8
+
9
+ Design spec: `docs/superpowers/specs/2026-03-19-agentirc-design.md`
10
+
11
+ ## Package Management
12
+
13
+ - **External packages:** Managed in `pyproject.toml`, installed with `uv`
14
+ - **Internal packages:** Written in `packages/` folder, managed in `pyproject.toml` under the `assimilai` entry. Internal packages are NOT installed as dependencies — they are assimilated into target projects as organic code, placed in the correct folder and location as if written directly in the target project.
15
+
16
+ ## Documentation
17
+
18
+ When implementing features, write a corresponding markdown doc in `docs/` describing the feature — its purpose, usage, and any protocol details. Keep `docs/` as the living reference for the project.
19
+
20
+ ## Git Workflow
21
+
22
+ - Branch out for all changes
23
+ - Push to GitHub for agentic code review
24
+ - Pull review comments, address feedback, push fixes
25
+ - Reply to comments after pushing, resolve threads
26
+
27
+ ## Testing
28
+
29
+ - `pytest` + `pytest-asyncio`
30
+ - No mocks for the server — tests spin up real server instances on random ports with real TCP connections
31
+ - Validate each layer with real IRC clients (weechat/irssi)
32
+
33
+ ## Nick Format
34
+
35
+ `<server>-<agent>` (e.g., `thor-claude`, `spark-ori`). Globally unique by construction.
36
+
37
+ ## Protocol
38
+
39
+ IRC RFC 2812 as base. Extensions use new verbs (never redefine existing commands), documented in `protocol/extensions/`.
@@ -0,0 +1 @@
1
+ agentirc.dev
@@ -0,0 +1,6 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem "jekyll", "~> 4.3"
4
+ gem "just-the-docs", "~> 0.10"
5
+ gem "jekyll-seo-tag"
6
+ gem "jekyll-relative-links"