agent-forge-installer 0.1.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.
Files changed (34) hide show
  1. agent_forge_installer-0.1.0/PKG-INFO +305 -0
  2. agent_forge_installer-0.1.0/README.md +273 -0
  3. agent_forge_installer-0.1.0/pyproject.toml +54 -0
  4. agent_forge_installer-0.1.0/setup.cfg +4 -0
  5. agent_forge_installer-0.1.0/src/agent_forge_installer.egg-info/PKG-INFO +305 -0
  6. agent_forge_installer-0.1.0/src/agent_forge_installer.egg-info/SOURCES.txt +32 -0
  7. agent_forge_installer-0.1.0/src/agent_forge_installer.egg-info/dependency_links.txt +1 -0
  8. agent_forge_installer-0.1.0/src/agent_forge_installer.egg-info/entry_points.txt +2 -0
  9. agent_forge_installer-0.1.0/src/agent_forge_installer.egg-info/requires.txt +14 -0
  10. agent_forge_installer-0.1.0/src/agent_forge_installer.egg-info/top_level.txt +1 -0
  11. agent_forge_installer-0.1.0/src/agentforge/__init__.py +1 -0
  12. agent_forge_installer-0.1.0/src/agentforge/__main__.py +6 -0
  13. agent_forge_installer-0.1.0/src/agentforge/claude_runner.py +158 -0
  14. agent_forge_installer-0.1.0/src/agentforge/cli/__init__.py +266 -0
  15. agent_forge_installer-0.1.0/src/agentforge/cli/agent.py +202 -0
  16. agent_forge_installer-0.1.0/src/agentforge/cli/init.py +165 -0
  17. agent_forge_installer-0.1.0/src/agentforge/cli/service.py +144 -0
  18. agent_forge_installer-0.1.0/src/agentforge/cli/sync.py +168 -0
  19. agent_forge_installer-0.1.0/src/agentforge/cli/update.py +242 -0
  20. agent_forge_installer-0.1.0/src/agentforge/config.py +125 -0
  21. agent_forge_installer-0.1.0/src/agentforge/http_client.py +55 -0
  22. agent_forge_installer-0.1.0/src/agentforge/memory_manager.py +157 -0
  23. agent_forge_installer-0.1.0/src/agentforge/message_router.py +80 -0
  24. agent_forge_installer-0.1.0/src/agentforge/migrations/0001_version_tracking.py +25 -0
  25. agent_forge_installer-0.1.0/src/agentforge/migrations/__init__.py +157 -0
  26. agent_forge_installer-0.1.0/src/agentforge/telegram_adapter.py +727 -0
  27. agent_forge_installer-0.1.0/src/agentforge/updater.py +363 -0
  28. agent_forge_installer-0.1.0/src/agentforge/vault.py +440 -0
  29. agent_forge_installer-0.1.0/src/agentforge/voice.py +55 -0
  30. agent_forge_installer-0.1.0/tests/test_config.py +100 -0
  31. agent_forge_installer-0.1.0/tests/test_memory_manager.py +96 -0
  32. agent_forge_installer-0.1.0/tests/test_message_router.py +118 -0
  33. agent_forge_installer-0.1.0/tests/test_migrations.py +122 -0
  34. agent_forge_installer-0.1.0/tests/test_vault.py +162 -0
@@ -0,0 +1,305 @@
1
+ Metadata-Version: 2.4
2
+ Name: agent-forge-installer
3
+ Version: 0.1.0
4
+ Summary: AgentForge — multi-agent Telegram bot framework powered by Claude Code
5
+ Author: Martin Rancourt
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/Martin-Rancourt/agentforge
8
+ Project-URL: Repository, https://github.com/Martin-Rancourt/agentforge
9
+ Project-URL: Bug Tracker, https://github.com/Martin-Rancourt/agentforge/issues
10
+ Keywords: telegram,bot,ai,claude,multi-agent,framework
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.10
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Topic :: Communications :: Chat
19
+ Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
20
+ Requires-Python: >=3.10
21
+ Description-Content-Type: text/markdown
22
+ Provides-Extra: http
23
+ Requires-Dist: requests>=2.28; extra == "http"
24
+ Provides-Extra: voice
25
+ Requires-Dist: faster-whisper>=1.0; extra == "voice"
26
+ Provides-Extra: full
27
+ Requires-Dist: requests>=2.28; extra == "full"
28
+ Requires-Dist: faster-whisper>=1.0; extra == "full"
29
+ Provides-Extra: dev
30
+ Requires-Dist: pytest>=7; extra == "dev"
31
+ Requires-Dist: pytest-cov; extra == "dev"
32
+
33
+ # AgentForge
34
+
35
+ A reusable framework for building multi-agent Telegram bots powered by Claude AI.
36
+
37
+ **Zero dependencies** by default — runs on Python 3.10+ stdlib. Optional extras for voice transcription and faster HTTP.
38
+
39
+ ## Quick Start
40
+
41
+ ```bash
42
+ # Clone and install
43
+ git clone https://github.com/Martin-Rancourt/AgentForge.git
44
+ cd AgentForge
45
+ ./install.sh
46
+
47
+ # Configure
48
+ nano .env # Add your Telegram bot token
49
+ nano bot/config.json # Add your chat IDs
50
+
51
+ # Create agents
52
+ agentforge agent create assistant --model sonnet --thread-id 11
53
+ agentforge agent create researcher --model opus --thread-id 12
54
+
55
+ # Run
56
+ agentforge bot
57
+ ```
58
+
59
+ ## How It Works
60
+
61
+ AgentForge turns a **Telegram Supergroup with Forum Topics** into a multi-agent workspace. Each topic routes to a different Claude-powered agent with its own identity, model, and memory.
62
+
63
+ ```
64
+ Telegram Topic (thread_id: 12)
65
+ → telegram_adapter.py (long-polling)
66
+ → message_router.py (resolve agent config)
67
+ → claude_runner.py (invoke Claude CLI with agent's soul.md)
68
+ → Response sent back to Telegram
69
+ ```
70
+
71
+ ### Message Flow
72
+
73
+ 1. Bot polls Telegram for new messages
74
+ 2. `message_thread_id` determines which agent handles the message
75
+ 3. Conversation history is loaded from SQLite (configurable context window)
76
+ 4. Claude Code CLI is invoked with the agent's `soul.md` as system prompt
77
+ 5. Response is stored in SQLite and sent back to Telegram
78
+
79
+ ## Architecture
80
+
81
+ ```
82
+ agentforge/
83
+ ├── src/agentforge/
84
+ │ ├── telegram_adapter.py # Main bot — polling, routing, sending
85
+ │ ├── claude_runner.py # Claude Code CLI subprocess wrapper
86
+ │ ├── message_router.py # Thread → agent config resolution
87
+ │ ├── config.py # Typed config loader (dataclasses)
88
+ │ ├── memory_manager.py # SQLite + FTS5 conversation database
89
+ │ ├── vault.py # Structured memory store (per-agent)
90
+ │ ├── voice.py # Voice note transcription (optional)
91
+ │ ├── http_client.py # Dual-stack: requests or urllib
92
+ │ └── cli/ # CLI commands (bot, agent, memory, init, vault)
93
+ ├── scripts/ # Bash utilities
94
+ │ ├── telegram_send.sh # Send messages to topics (with dedup)
95
+ │ ├── heartbeat.sh # Proactive task runner (cron)
96
+ │ ├── healthcheck.sh # Daily system health check
97
+ │ ├── agent_task.sh # Cross-agent task delegation
98
+ │ ├── log_action.sh # Action logging (Google Sheets + local)
99
+ │ └── memory_consolidation.sh # Weekly memory merge
100
+ ├── tests/ # Pytest suite (49 tests)
101
+ ├── install.sh # One-liner bootstrap
102
+ └── pyproject.toml # Package metadata
103
+ ```
104
+
105
+ ## CLI Reference
106
+
107
+ ### `agentforge bot`
108
+
109
+ Start the Telegram bot.
110
+
111
+ ```bash
112
+ agentforge bot [--config path/to/config.json]
113
+ ```
114
+
115
+ ### `agentforge agent`
116
+
117
+ Manage agents declaratively.
118
+
119
+ ```bash
120
+ # Create — scaffolds soul.md, memory.md, daily/ directory
121
+ agentforge agent create <name> --model <model> --thread-id <id>
122
+
123
+ # List all configured agents
124
+ agentforge agent list
125
+
126
+ # Remove an agent (--keep-files to preserve files on disk)
127
+ agentforge agent remove <name> [--keep-files]
128
+ ```
129
+
130
+ **Models:** `sonnet` (fast, balanced), `opus` (strongest reasoning), `haiku` (fastest, cheapest)
131
+
132
+ ### `agentforge memory`
133
+
134
+ Query the conversation database.
135
+
136
+ ```bash
137
+ agentforge memory search "deployment error" # Full-text search (FTS5)
138
+ agentforge memory recent 50 # Last 50 messages
139
+ agentforge memory stats # Database statistics
140
+ ```
141
+
142
+ ### `agentforge vault`
143
+
144
+ Structured memory store — facts, preferences, and knowledge per agent.
145
+
146
+ ```bash
147
+ agentforge vault write --agent victor --category knowledge --title "API design" --content "..."
148
+ agentforge vault search "deployment"
149
+ agentforge vault list --agent archie
150
+ ```
151
+
152
+ ### `agentforge init`
153
+
154
+ Bootstrap a new instance from scratch.
155
+
156
+ ```bash
157
+ agentforge init [--dir /path/to/instance]
158
+ ```
159
+
160
+ Creates: `bot/`, `agents/`, `data/`, `logs/`, `memory/`, `skills/`, `config.json`, `.env`
161
+
162
+ ## Configuration
163
+
164
+ ### `bot/config.json`
165
+
166
+ ```jsonc
167
+ {
168
+ "telegram": {
169
+ "token_env_var": "AGENTFORGE_TELEGRAM_TOKEN", // env var name holding the token
170
+ "allowed_chat_ids": [123456789], // whitelist
171
+ "group_chat_id": -100123456789, // supergroup ID
172
+ "topics": { // named topic shortcuts
173
+ "general": 11,
174
+ "dev": 12
175
+ }
176
+ },
177
+ "claude": {
178
+ "model": "sonnet", // default model
179
+ "max_budget_usd": 1.0 // per-invocation spend cap
180
+ },
181
+ "memory": {
182
+ "context_messages": 10 // messages included as context
183
+ },
184
+ "threads": {
185
+ "11": { "name": "assistant", "model": "sonnet", "context_messages": 10 },
186
+ "12": { "name": "researcher", "model": "opus", "context_messages": 15 }
187
+ }
188
+ }
189
+ ```
190
+
191
+ ### `.env`
192
+
193
+ ```bash
194
+ AGENTFORGE_TELEGRAM_TOKEN=your_bot_token_here
195
+ AGENTFORGE_ROOT=/path/to/instance # defaults to /home/clawdia
196
+ ```
197
+
198
+ ## Multi-Agent System
199
+
200
+ Each agent gets its own identity via a `soul.md` file:
201
+
202
+ ```
203
+ agents/
204
+ ├── victor/
205
+ │ ├── soul.md # Personality, role, instructions
206
+ │ ├── memory.md # Long-term consolidated memory
207
+ │ └── daily/ # Daily learnings (YYYY-MM-DD.md)
208
+ ├── archie/
209
+ └── catherine/
210
+ ```
211
+
212
+ The `soul.md` is passed as `--system-prompt` to Claude, completely overriding the default identity. Agents can:
213
+
214
+ - Have different Claude models (opus for complex reasoning, haiku for quick tasks)
215
+ - Maintain separate conversation histories and context windows
216
+ - Store per-agent structured memory in the vault
217
+ - Delegate tasks to each other via `agent_task.sh`
218
+
219
+ ### Project Topics
220
+
221
+ Beyond agent topics, you can configure **project topics** where multiple agents collaborate:
222
+
223
+ ```json
224
+ "project_topics": {
225
+ "42": {
226
+ "label": "🏗 Dev",
227
+ "agents": ["victor", "archie"],
228
+ "default_agent": "victor"
229
+ }
230
+ }
231
+ ```
232
+
233
+ Use `@agentname` mentions to address a specific agent in a shared topic.
234
+
235
+ ## Scripts
236
+
237
+ | Script | Purpose | Trigger |
238
+ |--------|---------|---------|
239
+ | `telegram_send.sh` | Send messages to topics | Manual / cross-agent |
240
+ | `heartbeat.sh` | Run proactive tasks from `heartbeat.md` | Cron |
241
+ | `healthcheck.sh` | System health report | Cron (daily) |
242
+ | `agent_task.sh` | Delegate tasks between agents | Inter-agent |
243
+ | `log_action.sh` | Log external actions to Sheets + file | After side-effects |
244
+ | `memory_consolidation.sh` | Merge daily logs → `memory.md` | Cron (weekly) |
245
+
246
+ ### Dedup
247
+
248
+ `telegram_send.sh` has built-in deduplication: identical messages to the same topic within 60 seconds are silently dropped.
249
+
250
+ ## Memory System
251
+
252
+ AgentForge provides three layers of memory:
253
+
254
+ | Layer | Storage | Purpose |
255
+ |-------|---------|---------|
256
+ | **Conversations** | SQLite + FTS5 | Full message history, searchable |
257
+ | **Vault** | SQLite + FTS5 | Structured facts/preferences per agent |
258
+ | **Files** | Markdown | `soul.md` (identity), `memory.md` (long-term), `daily/` (learnings) |
259
+
260
+ The weekly `memory_consolidation.sh` script merges daily learnings into each agent's `memory.md`.
261
+
262
+ ## Dependencies
263
+
264
+ **Core:** Python 3.10+ stdlib only (no pip install required for basic operation)
265
+
266
+ **Optional extras:**
267
+
268
+ ```bash
269
+ pip install agentforge[full] # requests + faster-whisper
270
+ pip install agentforge[dev] # pytest + pytest-cov
271
+ ```
272
+
273
+ | Extra | Package | Purpose |
274
+ |-------|---------|---------|
275
+ | `full` | `requests>=2.28` | Faster HTTP client (falls back to urllib) |
276
+ | `full` | `faster-whisper>=1.0` | Voice note transcription |
277
+ | `dev` | `pytest>=7` | Test runner |
278
+ | `dev` | `pytest-cov` | Coverage reports |
279
+
280
+ ## External Requirements
281
+
282
+ - **Claude Code CLI** — must be installed at `$AGENTFORGE_ROOT/.local/bin/claude`
283
+ - **Telegram Bot** — create one via [@BotFather](https://t.me/BotFather), enable Forum Topics in your supergroup
284
+
285
+ ## Testing
286
+
287
+ ```bash
288
+ pip install -e ".[dev]"
289
+ pytest # Run all 49 tests
290
+ pytest --cov=agentforge # With coverage
291
+ ```
292
+
293
+ Tests cover: config validation, message routing, memory manager, vault operations.
294
+
295
+ ## Releases
296
+
297
+ This project uses [release-please](https://github.com/googleapis/release-please) for automated releases:
298
+
299
+ 1. Use **conventional commits** (`feat:`, `fix:`, `docs:`, `chore:`, etc.)
300
+ 2. Release-please accumulates changes and opens a **Release PR** with version bump + changelog
301
+ 3. Merge the Release PR → GitHub Release + git tag created automatically
302
+
303
+ ## License
304
+
305
+ MIT
@@ -0,0 +1,273 @@
1
+ # AgentForge
2
+
3
+ A reusable framework for building multi-agent Telegram bots powered by Claude AI.
4
+
5
+ **Zero dependencies** by default — runs on Python 3.10+ stdlib. Optional extras for voice transcription and faster HTTP.
6
+
7
+ ## Quick Start
8
+
9
+ ```bash
10
+ # Clone and install
11
+ git clone https://github.com/Martin-Rancourt/AgentForge.git
12
+ cd AgentForge
13
+ ./install.sh
14
+
15
+ # Configure
16
+ nano .env # Add your Telegram bot token
17
+ nano bot/config.json # Add your chat IDs
18
+
19
+ # Create agents
20
+ agentforge agent create assistant --model sonnet --thread-id 11
21
+ agentforge agent create researcher --model opus --thread-id 12
22
+
23
+ # Run
24
+ agentforge bot
25
+ ```
26
+
27
+ ## How It Works
28
+
29
+ AgentForge turns a **Telegram Supergroup with Forum Topics** into a multi-agent workspace. Each topic routes to a different Claude-powered agent with its own identity, model, and memory.
30
+
31
+ ```
32
+ Telegram Topic (thread_id: 12)
33
+ → telegram_adapter.py (long-polling)
34
+ → message_router.py (resolve agent config)
35
+ → claude_runner.py (invoke Claude CLI with agent's soul.md)
36
+ → Response sent back to Telegram
37
+ ```
38
+
39
+ ### Message Flow
40
+
41
+ 1. Bot polls Telegram for new messages
42
+ 2. `message_thread_id` determines which agent handles the message
43
+ 3. Conversation history is loaded from SQLite (configurable context window)
44
+ 4. Claude Code CLI is invoked with the agent's `soul.md` as system prompt
45
+ 5. Response is stored in SQLite and sent back to Telegram
46
+
47
+ ## Architecture
48
+
49
+ ```
50
+ agentforge/
51
+ ├── src/agentforge/
52
+ │ ├── telegram_adapter.py # Main bot — polling, routing, sending
53
+ │ ├── claude_runner.py # Claude Code CLI subprocess wrapper
54
+ │ ├── message_router.py # Thread → agent config resolution
55
+ │ ├── config.py # Typed config loader (dataclasses)
56
+ │ ├── memory_manager.py # SQLite + FTS5 conversation database
57
+ │ ├── vault.py # Structured memory store (per-agent)
58
+ │ ├── voice.py # Voice note transcription (optional)
59
+ │ ├── http_client.py # Dual-stack: requests or urllib
60
+ │ └── cli/ # CLI commands (bot, agent, memory, init, vault)
61
+ ├── scripts/ # Bash utilities
62
+ │ ├── telegram_send.sh # Send messages to topics (with dedup)
63
+ │ ├── heartbeat.sh # Proactive task runner (cron)
64
+ │ ├── healthcheck.sh # Daily system health check
65
+ │ ├── agent_task.sh # Cross-agent task delegation
66
+ │ ├── log_action.sh # Action logging (Google Sheets + local)
67
+ │ └── memory_consolidation.sh # Weekly memory merge
68
+ ├── tests/ # Pytest suite (49 tests)
69
+ ├── install.sh # One-liner bootstrap
70
+ └── pyproject.toml # Package metadata
71
+ ```
72
+
73
+ ## CLI Reference
74
+
75
+ ### `agentforge bot`
76
+
77
+ Start the Telegram bot.
78
+
79
+ ```bash
80
+ agentforge bot [--config path/to/config.json]
81
+ ```
82
+
83
+ ### `agentforge agent`
84
+
85
+ Manage agents declaratively.
86
+
87
+ ```bash
88
+ # Create — scaffolds soul.md, memory.md, daily/ directory
89
+ agentforge agent create <name> --model <model> --thread-id <id>
90
+
91
+ # List all configured agents
92
+ agentforge agent list
93
+
94
+ # Remove an agent (--keep-files to preserve files on disk)
95
+ agentforge agent remove <name> [--keep-files]
96
+ ```
97
+
98
+ **Models:** `sonnet` (fast, balanced), `opus` (strongest reasoning), `haiku` (fastest, cheapest)
99
+
100
+ ### `agentforge memory`
101
+
102
+ Query the conversation database.
103
+
104
+ ```bash
105
+ agentforge memory search "deployment error" # Full-text search (FTS5)
106
+ agentforge memory recent 50 # Last 50 messages
107
+ agentforge memory stats # Database statistics
108
+ ```
109
+
110
+ ### `agentforge vault`
111
+
112
+ Structured memory store — facts, preferences, and knowledge per agent.
113
+
114
+ ```bash
115
+ agentforge vault write --agent victor --category knowledge --title "API design" --content "..."
116
+ agentforge vault search "deployment"
117
+ agentforge vault list --agent archie
118
+ ```
119
+
120
+ ### `agentforge init`
121
+
122
+ Bootstrap a new instance from scratch.
123
+
124
+ ```bash
125
+ agentforge init [--dir /path/to/instance]
126
+ ```
127
+
128
+ Creates: `bot/`, `agents/`, `data/`, `logs/`, `memory/`, `skills/`, `config.json`, `.env`
129
+
130
+ ## Configuration
131
+
132
+ ### `bot/config.json`
133
+
134
+ ```jsonc
135
+ {
136
+ "telegram": {
137
+ "token_env_var": "AGENTFORGE_TELEGRAM_TOKEN", // env var name holding the token
138
+ "allowed_chat_ids": [123456789], // whitelist
139
+ "group_chat_id": -100123456789, // supergroup ID
140
+ "topics": { // named topic shortcuts
141
+ "general": 11,
142
+ "dev": 12
143
+ }
144
+ },
145
+ "claude": {
146
+ "model": "sonnet", // default model
147
+ "max_budget_usd": 1.0 // per-invocation spend cap
148
+ },
149
+ "memory": {
150
+ "context_messages": 10 // messages included as context
151
+ },
152
+ "threads": {
153
+ "11": { "name": "assistant", "model": "sonnet", "context_messages": 10 },
154
+ "12": { "name": "researcher", "model": "opus", "context_messages": 15 }
155
+ }
156
+ }
157
+ ```
158
+
159
+ ### `.env`
160
+
161
+ ```bash
162
+ AGENTFORGE_TELEGRAM_TOKEN=your_bot_token_here
163
+ AGENTFORGE_ROOT=/path/to/instance # defaults to /home/clawdia
164
+ ```
165
+
166
+ ## Multi-Agent System
167
+
168
+ Each agent gets its own identity via a `soul.md` file:
169
+
170
+ ```
171
+ agents/
172
+ ├── victor/
173
+ │ ├── soul.md # Personality, role, instructions
174
+ │ ├── memory.md # Long-term consolidated memory
175
+ │ └── daily/ # Daily learnings (YYYY-MM-DD.md)
176
+ ├── archie/
177
+ └── catherine/
178
+ ```
179
+
180
+ The `soul.md` is passed as `--system-prompt` to Claude, completely overriding the default identity. Agents can:
181
+
182
+ - Have different Claude models (opus for complex reasoning, haiku for quick tasks)
183
+ - Maintain separate conversation histories and context windows
184
+ - Store per-agent structured memory in the vault
185
+ - Delegate tasks to each other via `agent_task.sh`
186
+
187
+ ### Project Topics
188
+
189
+ Beyond agent topics, you can configure **project topics** where multiple agents collaborate:
190
+
191
+ ```json
192
+ "project_topics": {
193
+ "42": {
194
+ "label": "🏗 Dev",
195
+ "agents": ["victor", "archie"],
196
+ "default_agent": "victor"
197
+ }
198
+ }
199
+ ```
200
+
201
+ Use `@agentname` mentions to address a specific agent in a shared topic.
202
+
203
+ ## Scripts
204
+
205
+ | Script | Purpose | Trigger |
206
+ |--------|---------|---------|
207
+ | `telegram_send.sh` | Send messages to topics | Manual / cross-agent |
208
+ | `heartbeat.sh` | Run proactive tasks from `heartbeat.md` | Cron |
209
+ | `healthcheck.sh` | System health report | Cron (daily) |
210
+ | `agent_task.sh` | Delegate tasks between agents | Inter-agent |
211
+ | `log_action.sh` | Log external actions to Sheets + file | After side-effects |
212
+ | `memory_consolidation.sh` | Merge daily logs → `memory.md` | Cron (weekly) |
213
+
214
+ ### Dedup
215
+
216
+ `telegram_send.sh` has built-in deduplication: identical messages to the same topic within 60 seconds are silently dropped.
217
+
218
+ ## Memory System
219
+
220
+ AgentForge provides three layers of memory:
221
+
222
+ | Layer | Storage | Purpose |
223
+ |-------|---------|---------|
224
+ | **Conversations** | SQLite + FTS5 | Full message history, searchable |
225
+ | **Vault** | SQLite + FTS5 | Structured facts/preferences per agent |
226
+ | **Files** | Markdown | `soul.md` (identity), `memory.md` (long-term), `daily/` (learnings) |
227
+
228
+ The weekly `memory_consolidation.sh` script merges daily learnings into each agent's `memory.md`.
229
+
230
+ ## Dependencies
231
+
232
+ **Core:** Python 3.10+ stdlib only (no pip install required for basic operation)
233
+
234
+ **Optional extras:**
235
+
236
+ ```bash
237
+ pip install agentforge[full] # requests + faster-whisper
238
+ pip install agentforge[dev] # pytest + pytest-cov
239
+ ```
240
+
241
+ | Extra | Package | Purpose |
242
+ |-------|---------|---------|
243
+ | `full` | `requests>=2.28` | Faster HTTP client (falls back to urllib) |
244
+ | `full` | `faster-whisper>=1.0` | Voice note transcription |
245
+ | `dev` | `pytest>=7` | Test runner |
246
+ | `dev` | `pytest-cov` | Coverage reports |
247
+
248
+ ## External Requirements
249
+
250
+ - **Claude Code CLI** — must be installed at `$AGENTFORGE_ROOT/.local/bin/claude`
251
+ - **Telegram Bot** — create one via [@BotFather](https://t.me/BotFather), enable Forum Topics in your supergroup
252
+
253
+ ## Testing
254
+
255
+ ```bash
256
+ pip install -e ".[dev]"
257
+ pytest # Run all 49 tests
258
+ pytest --cov=agentforge # With coverage
259
+ ```
260
+
261
+ Tests cover: config validation, message routing, memory manager, vault operations.
262
+
263
+ ## Releases
264
+
265
+ This project uses [release-please](https://github.com/googleapis/release-please) for automated releases:
266
+
267
+ 1. Use **conventional commits** (`feat:`, `fix:`, `docs:`, `chore:`, etc.)
268
+ 2. Release-please accumulates changes and opens a **Release PR** with version bump + changelog
269
+ 3. Merge the Release PR → GitHub Release + git tag created automatically
270
+
271
+ ## License
272
+
273
+ MIT
@@ -0,0 +1,54 @@
1
+ [build-system]
2
+ requires = ["setuptools>=68", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "agent-forge-installer"
7
+ version = "0.1.0"
8
+ description = "AgentForge — multi-agent Telegram bot framework powered by Claude Code"
9
+ readme = "README.md"
10
+ requires-python = ">=3.10"
11
+ license = { text = "MIT" }
12
+ authors = [
13
+ { name = "Martin Rancourt" },
14
+ ]
15
+ keywords = ["telegram", "bot", "ai", "claude", "multi-agent", "framework"]
16
+ classifiers = [
17
+ "Development Status :: 3 - Alpha",
18
+ "Intended Audience :: Developers",
19
+ "License :: OSI Approved :: MIT License",
20
+ "Programming Language :: Python :: 3",
21
+ "Programming Language :: Python :: 3.10",
22
+ "Programming Language :: Python :: 3.11",
23
+ "Programming Language :: Python :: 3.12",
24
+ "Topic :: Communications :: Chat",
25
+ "Topic :: Software Development :: Libraries :: Application Frameworks",
26
+ ]
27
+ dependencies = []
28
+ # All core dependencies are Python stdlib (json, sqlite3, subprocess, threading, etc.)
29
+ # External dependencies are optional — see [project.optional-dependencies] below.
30
+
31
+ [project.urls]
32
+ Homepage = "https://github.com/Martin-Rancourt/agentforge"
33
+ Repository = "https://github.com/Martin-Rancourt/agentforge"
34
+ "Bug Tracker" = "https://github.com/Martin-Rancourt/agentforge/issues"
35
+
36
+ [project.optional-dependencies]
37
+ # Faster HTTP client (falls back to urllib.request if not installed)
38
+ http = ["requests>=2.28"]
39
+ # Voice note transcription support
40
+ voice = ["faster-whisper>=1.0"]
41
+ # Full install: all optional runtime deps
42
+ full = ["requests>=2.28", "faster-whisper>=1.0"]
43
+ # Dev/test tools
44
+ dev = ["pytest>=7", "pytest-cov"]
45
+
46
+ [project.scripts]
47
+ agentforge = "agentforge.cli:main"
48
+
49
+ [tool.setuptools.packages.find]
50
+ where = ["src"]
51
+
52
+ [tool.pytest.ini_options]
53
+ testpaths = ["tests"]
54
+ filterwarnings = ["error::DeprecationWarning"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+