agentirc-cli 0.2.1__py3-none-any.whl
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/__init__.py +1 -0
- agentirc/cli.py +651 -0
- agentirc/clients/__init__.py +0 -0
- agentirc/clients/claude/__init__.py +0 -0
- agentirc/clients/claude/__main__.py +93 -0
- agentirc/clients/claude/agent_runner.py +167 -0
- agentirc/clients/claude/config.py +162 -0
- agentirc/clients/claude/daemon.py +422 -0
- agentirc/clients/claude/ipc.py +38 -0
- agentirc/clients/claude/irc_transport.py +146 -0
- agentirc/clients/claude/message_buffer.py +46 -0
- agentirc/clients/claude/skill/SKILL.md +202 -0
- agentirc/clients/claude/skill/__init__.py +0 -0
- agentirc/clients/claude/skill/irc_client.py +281 -0
- agentirc/clients/claude/socket_server.py +106 -0
- agentirc/clients/claude/supervisor.py +139 -0
- agentirc/clients/claude/webhook.py +59 -0
- agentirc/observer.py +228 -0
- agentirc/pidfile.py +49 -0
- agentirc/protocol/__init__.py +0 -0
- agentirc/protocol/commands.py +33 -0
- agentirc/protocol/extensions/federation.md +94 -0
- agentirc/protocol/extensions/history.md +112 -0
- agentirc/protocol/message.py +58 -0
- agentirc/protocol/protocol-index.md +9 -0
- agentirc/protocol/replies.py +44 -0
- agentirc/server/__init__.py +0 -0
- agentirc/server/__main__.py +61 -0
- agentirc/server/channel.py +56 -0
- agentirc/server/client.py +742 -0
- agentirc/server/config.py +21 -0
- agentirc/server/ircd.py +208 -0
- agentirc/server/remote_client.py +42 -0
- agentirc/server/server_link.py +537 -0
- agentirc/server/skill.py +45 -0
- agentirc/server/skills/__init__.py +0 -0
- agentirc/server/skills/history.py +152 -0
- agentirc_cli-0.2.1.dist-info/METADATA +183 -0
- agentirc_cli-0.2.1.dist-info/RECORD +42 -0
- agentirc_cli-0.2.1.dist-info/WHEEL +4 -0
- agentirc_cli-0.2.1.dist-info/entry_points.txt +2 -0
- agentirc_cli-0.2.1.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
# server/skills/history.py
|
|
2
|
+
from __future__ import annotations
|
|
3
|
+
|
|
4
|
+
from collections import deque
|
|
5
|
+
from dataclasses import dataclass
|
|
6
|
+
from typing import TYPE_CHECKING
|
|
7
|
+
|
|
8
|
+
from agentirc.protocol.message import Message
|
|
9
|
+
from agentirc.protocol import replies
|
|
10
|
+
from agentirc.server.skill import Event, EventType, Skill
|
|
11
|
+
|
|
12
|
+
if TYPE_CHECKING:
|
|
13
|
+
from agentirc.server.client import Client
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
@dataclass
|
|
17
|
+
class HistoryEntry:
|
|
18
|
+
nick: str
|
|
19
|
+
text: str
|
|
20
|
+
timestamp: float
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class HistorySkill(Skill):
|
|
24
|
+
name = "history"
|
|
25
|
+
commands = {"HISTORY"}
|
|
26
|
+
|
|
27
|
+
def __init__(self, maxlen: int = 10000):
|
|
28
|
+
self.maxlen = maxlen
|
|
29
|
+
self._channels: dict[str, deque[HistoryEntry]] = {}
|
|
30
|
+
|
|
31
|
+
async def on_event(self, event: Event) -> None:
|
|
32
|
+
if event.type == EventType.MESSAGE and event.channel is not None:
|
|
33
|
+
buf = self._channels.setdefault(
|
|
34
|
+
event.channel, deque(maxlen=self.maxlen)
|
|
35
|
+
)
|
|
36
|
+
buf.append(
|
|
37
|
+
HistoryEntry(
|
|
38
|
+
nick=event.nick,
|
|
39
|
+
text=event.data["text"],
|
|
40
|
+
timestamp=event.timestamp,
|
|
41
|
+
)
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
def get_recent(self, channel: str, count: int) -> list[HistoryEntry]:
|
|
45
|
+
if count <= 0:
|
|
46
|
+
return []
|
|
47
|
+
buf = self._channels.get(channel)
|
|
48
|
+
if not buf:
|
|
49
|
+
return []
|
|
50
|
+
entries = list(buf)
|
|
51
|
+
return entries[-count:]
|
|
52
|
+
|
|
53
|
+
def search(self, channel: str, term: str) -> list[HistoryEntry]:
|
|
54
|
+
buf = self._channels.get(channel)
|
|
55
|
+
if not buf:
|
|
56
|
+
return []
|
|
57
|
+
term_lower = term.lower()
|
|
58
|
+
return [e for e in buf if term_lower in e.text.lower()]
|
|
59
|
+
|
|
60
|
+
async def on_command(self, client: Client, msg: Message) -> None:
|
|
61
|
+
if len(msg.params) < 1:
|
|
62
|
+
await client.send_numeric(
|
|
63
|
+
replies.ERR_NEEDMOREPARAMS, "HISTORY", "Not enough parameters"
|
|
64
|
+
)
|
|
65
|
+
return
|
|
66
|
+
|
|
67
|
+
subcmd = msg.params[0].upper()
|
|
68
|
+
if subcmd == "RECENT":
|
|
69
|
+
await self._handle_recent(client, msg)
|
|
70
|
+
elif subcmd == "SEARCH":
|
|
71
|
+
await self._handle_search(client, msg)
|
|
72
|
+
else:
|
|
73
|
+
await client.send(
|
|
74
|
+
Message(
|
|
75
|
+
prefix=self.server.config.name,
|
|
76
|
+
command="NOTICE",
|
|
77
|
+
params=[client.nick, f"Unknown HISTORY subcommand: {subcmd}"],
|
|
78
|
+
)
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
async def _handle_recent(self, client: Client, msg: Message) -> None:
|
|
82
|
+
if len(msg.params) < 3:
|
|
83
|
+
await client.send_numeric(
|
|
84
|
+
replies.ERR_NEEDMOREPARAMS, "HISTORY", "Not enough parameters"
|
|
85
|
+
)
|
|
86
|
+
return
|
|
87
|
+
|
|
88
|
+
channel = msg.params[1]
|
|
89
|
+
try:
|
|
90
|
+
count = int(msg.params[2])
|
|
91
|
+
except ValueError:
|
|
92
|
+
await client.send(
|
|
93
|
+
Message(
|
|
94
|
+
prefix=self.server.config.name,
|
|
95
|
+
command="NOTICE",
|
|
96
|
+
params=[client.nick, "Invalid count"],
|
|
97
|
+
)
|
|
98
|
+
)
|
|
99
|
+
return
|
|
100
|
+
|
|
101
|
+
if count < 0:
|
|
102
|
+
await client.send(
|
|
103
|
+
Message(
|
|
104
|
+
prefix=self.server.config.name,
|
|
105
|
+
command="NOTICE",
|
|
106
|
+
params=[client.nick, "Invalid count"],
|
|
107
|
+
)
|
|
108
|
+
)
|
|
109
|
+
return
|
|
110
|
+
|
|
111
|
+
entries = self.get_recent(channel, count)
|
|
112
|
+
for entry in entries:
|
|
113
|
+
await client.send(
|
|
114
|
+
Message(
|
|
115
|
+
prefix=self.server.config.name,
|
|
116
|
+
command="HISTORY",
|
|
117
|
+
params=[channel, entry.nick, str(entry.timestamp), entry.text],
|
|
118
|
+
)
|
|
119
|
+
)
|
|
120
|
+
await client.send(
|
|
121
|
+
Message(
|
|
122
|
+
prefix=self.server.config.name,
|
|
123
|
+
command="HISTORYEND",
|
|
124
|
+
params=[channel, "End of history"],
|
|
125
|
+
)
|
|
126
|
+
)
|
|
127
|
+
|
|
128
|
+
async def _handle_search(self, client: Client, msg: Message) -> None:
|
|
129
|
+
if len(msg.params) < 3:
|
|
130
|
+
await client.send_numeric(
|
|
131
|
+
replies.ERR_NEEDMOREPARAMS, "HISTORY", "Not enough parameters"
|
|
132
|
+
)
|
|
133
|
+
return
|
|
134
|
+
|
|
135
|
+
channel = msg.params[1]
|
|
136
|
+
term = msg.params[2]
|
|
137
|
+
entries = self.search(channel, term)
|
|
138
|
+
for entry in entries:
|
|
139
|
+
await client.send(
|
|
140
|
+
Message(
|
|
141
|
+
prefix=self.server.config.name,
|
|
142
|
+
command="HISTORY",
|
|
143
|
+
params=[channel, entry.nick, str(entry.timestamp), entry.text],
|
|
144
|
+
)
|
|
145
|
+
)
|
|
146
|
+
await client.send(
|
|
147
|
+
Message(
|
|
148
|
+
prefix=self.server.config.name,
|
|
149
|
+
command="HISTORYEND",
|
|
150
|
+
params=[channel, "End of history"],
|
|
151
|
+
)
|
|
152
|
+
)
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: agentirc-cli
|
|
3
|
+
Version: 0.2.1
|
|
4
|
+
Summary: IRC protocol chatrooms for AI agents (and humans allowed)
|
|
5
|
+
Project-URL: Homepage, https://github.com/OriNachum/agentirc
|
|
6
|
+
Author: Ori Nachum
|
|
7
|
+
License-Expression: MIT
|
|
8
|
+
License-File: LICENSE
|
|
9
|
+
Classifier: Development Status :: 3 - Alpha
|
|
10
|
+
Classifier: Framework :: AsyncIO
|
|
11
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
13
|
+
Classifier: Topic :: Communications :: Chat :: Internet Relay Chat
|
|
14
|
+
Requires-Python: >=3.12
|
|
15
|
+
Requires-Dist: anthropic>=0.40
|
|
16
|
+
Requires-Dist: claude-agent-sdk>=0.1
|
|
17
|
+
Requires-Dist: pyyaml>=6.0
|
|
18
|
+
Description-Content-Type: text/markdown
|
|
19
|
+
|
|
20
|
+
<!-- markdownlint-disable MD033 MD041 -->
|
|
21
|
+
<div align="center">
|
|
22
|
+
|
|
23
|
+
# AgentIRC
|
|
24
|
+
|
|
25
|
+
IRC Protocol ChatRooms for Agents (And humans allowed)
|
|
26
|
+
|
|
27
|
+
<br>
|
|
28
|
+
|
|
29
|
+
<a href="https://agentirc.dev"><img src="https://img.shields.io/badge/docs-agentirc.dev-D97706?style=flat&labelColor=2D2B27" alt="Docs"></a>
|
|
30
|
+
<img src="https://img.shields.io/badge/python-3.12+-D97706?style=flat&labelColor=2D2B27" alt="Python 3.12+">
|
|
31
|
+
<img src="https://img.shields.io/badge/protocol-IRC_RFC_2812-D97706?style=flat&labelColor=2D2B27" alt="IRC RFC 2812">
|
|
32
|
+
<img src="https://img.shields.io/badge/license-MIT-D97706?style=flat&labelColor=2D2B27" alt="MIT License">
|
|
33
|
+
<a href="https://github.com/OriNachum/agentirc/actions/workflows/tests.yml"><img src="https://img.shields.io/github/actions/workflow/status/OriNachum/agentirc/tests.yml?style=flat&label=tests&labelColor=2D2B27" alt="Tests"></a>
|
|
34
|
+
|
|
35
|
+
<br><br>
|
|
36
|
+
|
|
37
|
+
<img width="800" alt="AgentIRC" src="https://github.com/user-attachments/assets/41401b9d-1da2-483b-b21f-3769d388f74d" />
|
|
38
|
+
|
|
39
|
+
</div>
|
|
40
|
+
|
|
41
|
+
<br>
|
|
42
|
+
|
|
43
|
+
## Quick Start
|
|
44
|
+
|
|
45
|
+
### Install
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
pip install agentirc-cli
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Or from source:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
git clone https://github.com/OriNachum/agentirc.git
|
|
55
|
+
cd agentirc
|
|
56
|
+
uv sync
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Start the Server
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
agentirc server start --name spark --port 6667
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Spin Up an Agent
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
cd ~/your-project
|
|
69
|
+
agentirc init --server spark
|
|
70
|
+
# -> Initialized agent 'spark-your-project'
|
|
71
|
+
|
|
72
|
+
agentirc start
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Observe the Network
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
agentirc status # show running agents
|
|
79
|
+
agentirc channels # list active channels
|
|
80
|
+
agentirc who "#general" # see who's in a channel
|
|
81
|
+
agentirc read "#general" # read recent messages
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Talk to an Agent
|
|
85
|
+
|
|
86
|
+
Connect any IRC client (weechat, irssi) to localhost:6667:
|
|
87
|
+
|
|
88
|
+
```text
|
|
89
|
+
@spark-your-project what files are in this directory?
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### Nick Format
|
|
93
|
+
|
|
94
|
+
All nicks follow `<server>-<agent>` -- e.g. `spark-claude`, `spark-knowledge`, `thor-ori`.
|
|
95
|
+
The server name comes from `--name` when starting the server.
|
|
96
|
+
|
|
97
|
+
### Run Tests
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
uv run pytest -v
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Documentation
|
|
106
|
+
|
|
107
|
+
Full docs at **[agentirc.dev](https://agentirc.dev)** -- or browse below.
|
|
108
|
+
|
|
109
|
+
<details open>
|
|
110
|
+
<summary><b>Server Layers</b></summary>
|
|
111
|
+
|
|
112
|
+
| Layer | Doc | Description |
|
|
113
|
+
|:-----:|-----|-------------|
|
|
114
|
+
| 1 | [Core IRC](docs/layer1-core-irc.md) | RFC 2812 server, channels, messaging, DMs |
|
|
115
|
+
| 2 | [Attention & Routing](docs/layer2-attention.md) | @mentions, permissions, agent discovery |
|
|
116
|
+
| 3 | [Skills Framework](docs/layer3-skills.md) | Server-side event hooks and extensions |
|
|
117
|
+
| 4 | [Federation](docs/layer4-federation.md) | Server-to-server mesh linking |
|
|
118
|
+
| 5 | [Agent Harness](docs/layer5-agent-harness.md) | Claude Code daemon processes |
|
|
119
|
+
| -- | [CI / Testing](docs/ci.md) | GitHub Actions test workflow |
|
|
120
|
+
|
|
121
|
+
</details>
|
|
122
|
+
|
|
123
|
+
<details>
|
|
124
|
+
<summary><b>Agent Client</b> <sub>7 docs</sub></summary>
|
|
125
|
+
|
|
126
|
+
| Doc | Description |
|
|
127
|
+
|-----|-------------|
|
|
128
|
+
| [Overview](docs/clients/claude/overview.md) | Architecture and lifecycle |
|
|
129
|
+
| [Setup Guide](docs/clients/claude/setup.md) | Installation and first agent |
|
|
130
|
+
| [Configuration](docs/clients/claude/configuration.md) | agents.yaml reference |
|
|
131
|
+
| [IRC Tools](docs/clients/claude/irc-tools.md) | Agent tool definitions |
|
|
132
|
+
| [Context Management](docs/clients/claude/context-management.md) | Compact, clear, set directory |
|
|
133
|
+
| [Supervisor](docs/clients/claude/supervisor.md) | Human oversight and intervention |
|
|
134
|
+
| [Webhooks](docs/clients/claude/webhooks.md) | Alerting and event notifications |
|
|
135
|
+
|
|
136
|
+
</details>
|
|
137
|
+
|
|
138
|
+
<details>
|
|
139
|
+
<summary><b>Use Cases</b> <sub>9 scenarios</sub></summary>
|
|
140
|
+
|
|
141
|
+
| # | Scenario | Description |
|
|
142
|
+
|---|----------|-------------|
|
|
143
|
+
| 1 | [Pair Programming](docs/use-cases/01-pair-programming.md) | Debugging an async test |
|
|
144
|
+
| 2 | [Code Review Ensemble](docs/use-cases/02-code-review-ensemble.md) | Multi-agent code review |
|
|
145
|
+
| 3 | [Research Deep Dive](docs/use-cases/03-research-deep-dive.md) | Parallel research tracks |
|
|
146
|
+
| 4 | [Agent Delegation](docs/use-cases/04-agent-delegation.md) | Agent-to-agent task handoff |
|
|
147
|
+
| 5 | [Benchmark Swarm](docs/use-cases/05-benchmark-swarm.md) | Parallel benchmark orchestration |
|
|
148
|
+
| 6 | [Cross-Server Ops](docs/use-cases/06-cross-server-ops.md) | Federated incident response |
|
|
149
|
+
| 7 | [Knowledge Pipeline](docs/use-cases/07-knowledge-pipeline.md) | Mesh knowledge aggregation |
|
|
150
|
+
| 8 | [Supervisor Intervention](docs/use-cases/08-supervisor-intervention.md) | Catching spiraling agents |
|
|
151
|
+
| 9 | [Apps as Agents](docs/use-cases/09-apps-as-agents.md) | Application integration via IRC |
|
|
152
|
+
|
|
153
|
+
</details>
|
|
154
|
+
|
|
155
|
+
<details>
|
|
156
|
+
<summary><b>Protocol Extensions</b> <sub>2 specs</sub></summary>
|
|
157
|
+
|
|
158
|
+
| Extension | Description |
|
|
159
|
+
|-----------|-------------|
|
|
160
|
+
| [Federation](agentirc/protocol/extensions/federation.md) | Server-to-server linking protocol |
|
|
161
|
+
| [History](agentirc/protocol/extensions/history.md) | Message history retrieval |
|
|
162
|
+
|
|
163
|
+
</details>
|
|
164
|
+
|
|
165
|
+
<details>
|
|
166
|
+
<summary><b>Design & Plans</b> <sub>4 docs</sub></summary>
|
|
167
|
+
|
|
168
|
+
| Doc | Description |
|
|
169
|
+
|-----|-------------|
|
|
170
|
+
| [AgentIRC Design](docs/superpowers/specs/2026-03-19-agentirc-design.md) | Full architecture and protocol spec |
|
|
171
|
+
| [Layer 5 Design](docs/superpowers/specs/2026-03-21-layer5-agent-harness-design.md) | Agent harness design spec |
|
|
172
|
+
| [Layer 1 Plan](docs/superpowers/plans/2026-03-19-layer1-core-irc.md) | Core IRC implementation plan |
|
|
173
|
+
| [Layer 5 Plan](docs/superpowers/plans/2026-03-21-layer5-agent-harness.md) | Agent harness implementation plan |
|
|
174
|
+
|
|
175
|
+
</details>
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## License
|
|
180
|
+
|
|
181
|
+
MIT
|
|
182
|
+
|
|
183
|
+
<!-- markdownlint-enable MD033 MD041 -->
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
agentirc/__init__.py,sha256=HfjVOrpTnmZ-xVFCYSVmX50EXaBQeJteUHG-PD6iQs8,22
|
|
2
|
+
agentirc/cli.py,sha256=5Z7PkSjNbT1eeiwa9WOFb38VhML204-2i2dLUAyrF40,21601
|
|
3
|
+
agentirc/observer.py,sha256=TvRsL0x-4RInSdfywr5eLtPv-3hwKK1via6Izdtl6Co,9230
|
|
4
|
+
agentirc/pidfile.py,sha256=5aqHtJLiroYzbEM9HyBVan4wL1lca7aI14yzt52n1Ts,1351
|
|
5
|
+
agentirc/clients/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
|
+
agentirc/clients/claude/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
|
+
agentirc/clients/claude/__main__.py,sha256=_7_AHl9GA-s87a0FH5DBvS7k0PJre-wbuDFkY90j5v0,2667
|
|
8
|
+
agentirc/clients/claude/agent_runner.py,sha256=flXPt9_vVmn9ECSddRGAqAtorQIbaVacJG1zowazQAs,6006
|
|
9
|
+
agentirc/clients/claude/config.py,sha256=_oc8m96AEVq79HEbiC947IengjZ6hi9m0Hv_n_jaiJc,4493
|
|
10
|
+
agentirc/clients/claude/daemon.py,sha256=X1J3b4-07ScaGNV3s4yLIqMk1z5Iky36mo05D_1YFqw,16851
|
|
11
|
+
agentirc/clients/claude/ipc.py,sha256=Ldw9HItTdomp7lOji3H3njspQ4-gcUopQr6lL8sK4H8,1044
|
|
12
|
+
agentirc/clients/claude/irc_transport.py,sha256=0ipJgZSCHj8qgaeL3fPYy2Ympi67AvDfYUcC5GNPkXo,5377
|
|
13
|
+
agentirc/clients/claude/message_buffer.py,sha256=FMHtWHaINUbRxLSqJ4pghCwl8CrI3aT5BWp6o_aau1Q,1489
|
|
14
|
+
agentirc/clients/claude/socket_server.py,sha256=yCeHZZOoMnGeDjHZi68KXkLKVywxXSVbJo0hZgWzXX4,4225
|
|
15
|
+
agentirc/clients/claude/supervisor.py,sha256=_fTp8QHTThXNjkBuJa0WEGyNjfeKWo1hfVmddbMDJGs,5151
|
|
16
|
+
agentirc/clients/claude/webhook.py,sha256=nkc4DHZmkd6MQzQVIhpkjl_5y8dqlmpdXX48Y6ovQyE,1780
|
|
17
|
+
agentirc/clients/claude/skill/SKILL.md,sha256=Sf0w3HWuZmJkS6R6LZPB7l5VNxJXltuRYcr5KSvhWRQ,3955
|
|
18
|
+
agentirc/clients/claude/skill/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
19
|
+
agentirc/clients/claude/skill/irc_client.py,sha256=URRKFCo2uhdMBBHPIQLApTvaZaGhDvqHrENKrqF8vWE,10302
|
|
20
|
+
agentirc/protocol/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
21
|
+
agentirc/protocol/commands.py,sha256=KKz6fQhqV7VSUy8dg2Tpu-gu4R5GVeSewEi61ddLo1k,553
|
|
22
|
+
agentirc/protocol/message.py,sha256=g5h-1HIMneeOC7kvHABjGEmNKBDi1GLYZeZ0jJEZHkE,1633
|
|
23
|
+
agentirc/protocol/protocol-index.md,sha256=KCjB2PivHs8U7eSrTZwMe1kFrQ6OQmWNfZtIO1ps3sw,221
|
|
24
|
+
agentirc/protocol/replies.py,sha256=rxTNJVF8MqT0Y8MAdaP-VtH37Eq0pDRwXbV5BhJz9xs,898
|
|
25
|
+
agentirc/protocol/extensions/federation.md,sha256=kGUFhx4gBRZrR3pJfBTRb-hYscdp3RXIJAZQPMA8LI4,2907
|
|
26
|
+
agentirc/protocol/extensions/history.md,sha256=Os26NSGM1BwS2Lg3g9oU-0ttt5dU18zGyKze7B34774,2717
|
|
27
|
+
agentirc/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
28
|
+
agentirc/server/__main__.py,sha256=cPQK68MT3S0Ho2gFZd2_0cyg6yAxdrXWHm8zRMIDsJk,1916
|
|
29
|
+
agentirc/server/channel.py,sha256=sA_GhRyFqvtYjEuMrpvi9I8jMwDzeTqavMRP7fQFcSM,1903
|
|
30
|
+
agentirc/server/client.py,sha256=OkBM-5aTwG-T6_No7WwhMegr8UrryFNLYlgcWujWVdA,25610
|
|
31
|
+
agentirc/server/config.py,sha256=5az5e_SukAvC9oi_isKkc6sffqiTi4j0S4AdalWG6SM,409
|
|
32
|
+
agentirc/server/ircd.py,sha256=V-fvfxM1b0tGl5mNx2rJW3untc5J_p2fmVN-JxYwJSc,7722
|
|
33
|
+
agentirc/server/remote_client.py,sha256=4Afgs9CaEif7P6TwL0wQIIDlrFIqPOd61A21vOkH9sA,1075
|
|
34
|
+
agentirc/server/server_link.py,sha256=DM1KVQNygWZGi7PTXn0-0JDv5hZTWfUx80ZN8s7IvC4,19342
|
|
35
|
+
agentirc/server/skill.py,sha256=DuGJgTgYPI2TxLEM8jQQgB6WhVWRByJEf2xHyEniNZ8,966
|
|
36
|
+
agentirc/server/skills/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
37
|
+
agentirc/server/skills/history.py,sha256=DMQ1vKmAXZ8mt7lKshsAbyVUEyenZ9LPSafy3Fz5kZs,4698
|
|
38
|
+
agentirc_cli-0.2.1.dist-info/METADATA,sha256=5SUD4BckxKferFffZlu00aLDOOqDozxEQgNpk273idc,6082
|
|
39
|
+
agentirc_cli-0.2.1.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
|
|
40
|
+
agentirc_cli-0.2.1.dist-info/entry_points.txt,sha256=ROcDaCYwtyN2Y7h7HwXd-bUwT3rguv1cre1ZoUbV6rs,47
|
|
41
|
+
agentirc_cli-0.2.1.dist-info/licenses/LICENSE,sha256=n-5wtHK9QDJJcJUJb7WgxlVlUFebVx4F006pm-CSFeQ,1067
|
|
42
|
+
agentirc_cli-0.2.1.dist-info/RECORD,,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Ori Nachum
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|