a4e 0.1.7__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 (75) hide show
  1. a4e-0.1.7/LICENSE +21 -0
  2. a4e-0.1.7/PKG-INFO +427 -0
  3. a4e-0.1.7/README.md +390 -0
  4. a4e-0.1.7/a4e/__init__.py +0 -0
  5. a4e-0.1.7/a4e/cli.py +47 -0
  6. a4e-0.1.7/a4e/cli_commands/__init__.py +5 -0
  7. a4e-0.1.7/a4e/cli_commands/add.py +372 -0
  8. a4e-0.1.7/a4e/cli_commands/deploy.py +146 -0
  9. a4e-0.1.7/a4e/cli_commands/dev.py +157 -0
  10. a4e-0.1.7/a4e/cli_commands/info.py +203 -0
  11. a4e-0.1.7/a4e/cli_commands/init.py +211 -0
  12. a4e-0.1.7/a4e/cli_commands/list.py +224 -0
  13. a4e-0.1.7/a4e/cli_commands/mcp.py +504 -0
  14. a4e-0.1.7/a4e/cli_commands/remove.py +194 -0
  15. a4e-0.1.7/a4e/cli_commands/update.py +282 -0
  16. a4e-0.1.7/a4e/cli_commands/validate.py +114 -0
  17. a4e-0.1.7/a4e/core.py +109 -0
  18. a4e-0.1.7/a4e/dev_runner.py +425 -0
  19. a4e-0.1.7/a4e/server.py +86 -0
  20. a4e-0.1.7/a4e/templates/agent.md.j2 +168 -0
  21. a4e-0.1.7/a4e/templates/agent.py.j2 +15 -0
  22. a4e-0.1.7/a4e/templates/agents.md.j2 +99 -0
  23. a4e-0.1.7/a4e/templates/metadata.json.j2 +20 -0
  24. a4e-0.1.7/a4e/templates/prompt.md.j2 +20 -0
  25. a4e-0.1.7/a4e/templates/prompts/agent.md.j2 +206 -0
  26. a4e-0.1.7/a4e/templates/skills/agents.md.j2 +110 -0
  27. a4e-0.1.7/a4e/templates/skills/skill.md.j2 +120 -0
  28. a4e-0.1.7/a4e/templates/support_module.py.j2 +84 -0
  29. a4e-0.1.7/a4e/templates/tool.py.j2 +60 -0
  30. a4e-0.1.7/a4e/templates/tools/agent.md.j2 +192 -0
  31. a4e-0.1.7/a4e/templates/view.tsx.j2 +67 -0
  32. a4e-0.1.7/a4e/templates/views/agent.md.j2 +219 -0
  33. a4e-0.1.7/a4e/tools/__init__.py +70 -0
  34. a4e-0.1.7/a4e/tools/agent_tools/__init__.py +12 -0
  35. a4e-0.1.7/a4e/tools/agent_tools/add_support_module.py +95 -0
  36. a4e-0.1.7/a4e/tools/agent_tools/add_tool.py +115 -0
  37. a4e-0.1.7/a4e/tools/agent_tools/list_tools.py +28 -0
  38. a4e-0.1.7/a4e/tools/agent_tools/remove_tool.py +69 -0
  39. a4e-0.1.7/a4e/tools/agent_tools/update_tool.py +123 -0
  40. a4e-0.1.7/a4e/tools/deploy/__init__.py +8 -0
  41. a4e-0.1.7/a4e/tools/deploy/deploy.py +59 -0
  42. a4e-0.1.7/a4e/tools/dev/__init__.py +10 -0
  43. a4e-0.1.7/a4e/tools/dev/check_environment.py +91 -0
  44. a4e-0.1.7/a4e/tools/dev/dev_start.py +30 -0
  45. a4e-0.1.7/a4e/tools/dev/dev_stop.py +26 -0
  46. a4e-0.1.7/a4e/tools/project/__init__.py +10 -0
  47. a4e-0.1.7/a4e/tools/project/get_agent_info.py +66 -0
  48. a4e-0.1.7/a4e/tools/project/get_instructions.py +216 -0
  49. a4e-0.1.7/a4e/tools/project/initialize_project.py +246 -0
  50. a4e-0.1.7/a4e/tools/schemas/__init__.py +8 -0
  51. a4e-0.1.7/a4e/tools/schemas/generate_schemas.py +286 -0
  52. a4e-0.1.7/a4e/tools/skills/__init__.py +12 -0
  53. a4e-0.1.7/a4e/tools/skills/add_skill.py +105 -0
  54. a4e-0.1.7/a4e/tools/skills/helpers.py +137 -0
  55. a4e-0.1.7/a4e/tools/skills/list_skills.py +54 -0
  56. a4e-0.1.7/a4e/tools/skills/remove_skill.py +74 -0
  57. a4e-0.1.7/a4e/tools/skills/update_skill.py +150 -0
  58. a4e-0.1.7/a4e/tools/validation/__init__.py +8 -0
  59. a4e-0.1.7/a4e/tools/validation/validate.py +389 -0
  60. a4e-0.1.7/a4e/tools/views/__init__.py +12 -0
  61. a4e-0.1.7/a4e/tools/views/add_view.py +40 -0
  62. a4e-0.1.7/a4e/tools/views/helpers.py +94 -0
  63. a4e-0.1.7/a4e/tools/views/list_views.py +27 -0
  64. a4e-0.1.7/a4e/tools/views/remove_view.py +73 -0
  65. a4e-0.1.7/a4e/tools/views/update_view.py +124 -0
  66. a4e-0.1.7/a4e/utils/dev_manager.py +289 -0
  67. a4e-0.1.7/a4e/utils/schema_generator.py +255 -0
  68. a4e-0.1.7/a4e.egg-info/PKG-INFO +427 -0
  69. a4e-0.1.7/a4e.egg-info/SOURCES.txt +73 -0
  70. a4e-0.1.7/a4e.egg-info/dependency_links.txt +1 -0
  71. a4e-0.1.7/a4e.egg-info/entry_points.txt +2 -0
  72. a4e-0.1.7/a4e.egg-info/requires.txt +10 -0
  73. a4e-0.1.7/a4e.egg-info/top_level.txt +1 -0
  74. a4e-0.1.7/pyproject.toml +70 -0
  75. a4e-0.1.7/setup.cfg +4 -0
a4e-0.1.7/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 A4E Team
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.
a4e-0.1.7/PKG-INFO ADDED
@@ -0,0 +1,427 @@
1
+ Metadata-Version: 2.4
2
+ Name: a4e
3
+ Version: 0.1.7
4
+ Summary: A comprehensive MCP server toolkit for building, managing, and running AI agents compatible with the A4E ecosystem.
5
+ Author-email: Angel Castiblanco <angel.castiblanco@simetrik.com>, Michael Guerrero <michael.guerrero@simetrik.com>, Jonathan Batista <jonathan.batista@simetrik.com>
6
+ Maintainer-email: Simetrik <angel.castiblanco@simetrik.com>
7
+ License-Expression: MIT
8
+ Project-URL: Homepage, https://github.com/simetrik-inc-public/a4e-mcp-server
9
+ Project-URL: Documentation, https://github.com/simetrik-inc-public/a4e-mcp-server#readme
10
+ Project-URL: Repository, https://github.com/simetrik-inc-public/a4e-mcp-server
11
+ Project-URL: Issues, https://github.com/simetrik-inc-public/a4e-mcp-server/issues
12
+ Keywords: mcp,ai,agents,llm,model-context-protocol,a4e,cursor,claude,simetrik
13
+ Classifier: Development Status :: 4 - Beta
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: Operating System :: OS Independent
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.10
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: 3.13
21
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
22
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
23
+ Requires-Python: >=3.10
24
+ Description-Content-Type: text/markdown
25
+ License-File: LICENSE
26
+ Requires-Dist: jinja2>=3.1.6
27
+ Requires-Dist: mcp[cli]>=1.22.0
28
+ Requires-Dist: pydantic>=2.12.4
29
+ Requires-Dist: pyngrok>=7.5.0
30
+ Requires-Dist: pyperclip>=1.11.0
31
+ Requires-Dist: pyyaml>=6.0.3
32
+ Requires-Dist: rich>=13.0.0
33
+ Requires-Dist: sse-starlette>=3.0.3
34
+ Requires-Dist: typer>=0.20.0
35
+ Requires-Dist: watchdog>=6.0.0
36
+ Dynamic: license-file
37
+
38
+ # A4E
39
+
40
+ [![PyPI version](https://badge.fury.io/py/a4e.svg)](https://badge.fury.io/py/a4e)
41
+ [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
42
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
43
+
44
+ **A4E** is a CLI toolkit for building conversational AI agents. It includes:
45
+
46
+ - **CLI commands** for creating and managing agents (`a4e init`, `a4e add tool`, etc.)
47
+ - **MCP server** for IDE integration (Cursor, Claude Code, Antigravity)
48
+ - **Dev server** with hot-reload and ngrok tunneling
49
+
50
+ ## Requirements
51
+
52
+ ### Python 3.10+
53
+
54
+ ```bash
55
+ # Check your version
56
+ python --version
57
+
58
+ # Install Python 3.10+ if needed
59
+ # macOS (with Homebrew)
60
+ brew install python@3.10
61
+
62
+ # Ubuntu/Debian
63
+ sudo apt update && sudo apt install python3.10
64
+
65
+ # Windows (download from python.org)
66
+ # https://www.python.org/downloads/
67
+ ```
68
+
69
+ > **Note:** If you try to install with an older Python version, pip will show:
70
+ > `ERROR: Package 'a4e' requires a different Python: X.Y.Z not in '>=3.10'`
71
+
72
+ ### ngrok (for dev server)
73
+
74
+ The development server uses ngrok to create public tunnels for testing.
75
+
76
+ 1. **Create account:** https://ngrok.com/signup
77
+ 2. **Get your authtoken:** https://dashboard.ngrok.com/get-started/your-authtoken
78
+ 3. **Configure ngrok:**
79
+
80
+ ```bash
81
+ # Option A: Install ngrok CLI and configure
82
+ brew install ngrok/ngrok/ngrok # macOS
83
+ # or download from https://ngrok.com/download
84
+
85
+ ngrok config add-authtoken YOUR_TOKEN_HERE
86
+
87
+ # Option B: Set environment variable
88
+ export NGROK_AUTHTOKEN=YOUR_TOKEN_HERE
89
+ ```
90
+
91
+ ## Installation
92
+
93
+ ```bash
94
+ pip install a4e
95
+ ```
96
+
97
+ Verify installation:
98
+
99
+ ```bash
100
+ a4e --version
101
+ ```
102
+
103
+ ## Quick Start
104
+
105
+ ### Option 1: Use with AI Assistant (MCP)
106
+
107
+ Configure A4E for your IDE:
108
+
109
+ ```bash
110
+ # For Cursor
111
+ a4e mcp setup cursor
112
+
113
+ # For Claude Code
114
+ a4e mcp setup claude-code
115
+
116
+ # For Antigravity
117
+ a4e mcp setup antigravity
118
+ ```
119
+
120
+ **Restart your IDE**, then ask your AI assistant:
121
+
122
+ > "Create an agent called nutrition-coach that helps users track meals and calculate calories"
123
+
124
+ ### Option 2: Use CLI directly
125
+
126
+ ```bash
127
+ # Create a new agent
128
+ a4e init
129
+
130
+ # Add components
131
+ a4e add tool calculate_bmi
132
+ a4e add view bmi_result
133
+ a4e add skill show_bmi
134
+
135
+ # Validate
136
+ a4e validate
137
+
138
+ # Start dev server
139
+ a4e dev start
140
+
141
+ # Deploy
142
+ a4e deploy
143
+ ```
144
+
145
+ ## CLI Commands
146
+
147
+ | Command | Arguments | Description |
148
+ | ------------------ | --------------------------------------- | ----------------------------------------- |
149
+ | `a4e init` | `--name`, `--template` | Initialize new agent (interactive wizard) |
150
+ | `a4e add tool` | `<name>` `string` | Add a Python tool |
151
+ | `a4e add view` | `<name>` `string` | Add a React view |
152
+ | `a4e add skill` | `<name>` `string` | Add a skill (connects tools → views) |
153
+ | `a4e list` | `tools` \| `views` \| `skills` \| `all` | List components |
154
+ | `a4e remove tool` | `<name>` `string` | Remove a tool |
155
+ | `a4e remove view` | `<name>` `string` | Remove a view |
156
+ | `a4e remove skill` | `<name>` `string` | Remove a skill |
157
+ | `a4e update tool` | `<name>` `string` | Update a tool |
158
+ | `a4e update view` | `<name>` `string` | Update a view |
159
+ | `a4e update skill` | `<name>` `string` | Update a skill |
160
+ | `a4e validate` | `--strict`, `--agent` | Validate agent structure |
161
+ | `a4e deploy` | `--skip-validation` | Deploy to A4E Cloud |
162
+ | `a4e dev start` | `--port` `int`, `--auth-token` `string` | Start dev server with ngrok |
163
+ | `a4e info` | `--json` | Show agent information |
164
+
165
+ ### Init Options
166
+
167
+ | Option | Type | Values | Description |
168
+ | ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------- |
169
+ | `--name`, `-n` | `string` | `my-agent` | Agent ID (lowercase, hyphens) |
170
+ | `--display-name`, `-d` | `string` | `"My Agent"` | Human-readable name |
171
+ | `--description` | `string` | `"Agent description"` | Short description |
172
+ | `--category`, `-c` | `enum` | `Concierge`, `E-commerce`, `Fitness & Health`, `Education`, `Entertainment`, `Productivity`, `Finance`, `Customer Support`, `General` | Agent category |
173
+ | `--template`, `-t` | `enum` | `basic`, `with-tools`, `with-views`, `full` | Project template |
174
+ | `--yes`, `-y` | `flag` | — | Skip interactive prompts |
175
+
176
+ ### MCP Commands
177
+
178
+ | Command | Arguments | Values | Description |
179
+ | ---------------- | --------- | --------------------------------------- | ---------------------- |
180
+ | `a4e mcp setup` | `<ide>` | `cursor`, `claude-code`, `antigravity` | Configure MCP for IDE |
181
+ | `a4e mcp show` | `<ide>` | `cursor`, `claude-code`, `antigravity` | Show current config |
182
+ | `a4e mcp remove` | `<ide>` | `cursor`, `claude-code`, `antigravity` | Remove A4E from config |
183
+ | `a4e mcp test` | — | — | Test MCP server |
184
+ | `a4e mcp path` | `<ide>` | `cursor`, `claude-code`, `antigravity` | Show config file path |
185
+ | `a4e mcp list` | — | — | List supported IDEs |
186
+
187
+ ### MCP Setup Options
188
+
189
+ | Option | Type | Description |
190
+ | ----------------- | ------ | -------------------------------- |
191
+ | `--dry-run`, `-n` | `flag` | Preview changes without applying |
192
+ | `--force`, `-f` | `flag` | Overwrite existing A4E config |
193
+
194
+ ## Agent Structure
195
+
196
+ When you create an agent, A4E generates:
197
+
198
+ ```
199
+ my-agent/
200
+ ├── agent.py # Agent configuration
201
+ ├── metadata.json # Agent metadata
202
+ ├── AGENTS.md # Documentation for AI assistants
203
+ ├── prompts/
204
+ │ └── agent.md # System prompt / personality
205
+ ├── tools/
206
+ │ ├── my_tool.py # Python functions
207
+ │ └── schemas.json # Auto-generated schemas
208
+ ├── views/
209
+ │ ├── my_view/
210
+ │ │ └── view.tsx # React components
211
+ │ └── schemas.json # Auto-generated schemas
212
+ └── skills/
213
+ ├── my_skill/
214
+ │ └── SKILL.md # Skill documentation
215
+ └── schemas.json # Auto-generated schemas
216
+ ```
217
+
218
+ ## Concepts
219
+
220
+ ### Tools
221
+
222
+ Python functions that give your agent capabilities:
223
+
224
+ ```python
225
+ from typing import Dict, Any
226
+
227
+ def calculate_bmi(params: Dict[str, Any]) -> Dict[str, Any]:
228
+ """Calculate BMI from height and weight."""
229
+ height = params.get("height_m")
230
+ weight = params.get("weight_kg")
231
+ bmi = weight / (height ** 2)
232
+ return {"bmi": round(bmi, 1), "status": "success"}
233
+ ```
234
+
235
+ ### Views
236
+
237
+ React components for rich UI responses:
238
+
239
+ ```tsx
240
+ interface BMIResultProps {
241
+ bmi: number;
242
+ category: string;
243
+ }
244
+
245
+ export default function BMIResult({ bmi, category }: BMIResultProps) {
246
+ return (
247
+ <div className="p-4">
248
+ <h2>Your BMI: {bmi}</h2>
249
+ <p>Category: {category}</p>
250
+ </div>
251
+ );
252
+ }
253
+ ```
254
+
255
+ ### Skills
256
+
257
+ Connect user intents to tools and views:
258
+
259
+ ```json
260
+ {
261
+ "id": "show_bmi",
262
+ "name": "Calculate BMI",
263
+ "intent_triggers": ["calculate my bmi", "what's my bmi"],
264
+ "internal_tools": ["calculate_bmi"],
265
+ "output": {
266
+ "view": "bmi_result"
267
+ }
268
+ }
269
+ ```
270
+
271
+ ## MCP Configuration
272
+
273
+ ### Automatic Setup (Recommended)
274
+
275
+ ```bash
276
+ a4e mcp setup cursor
277
+ ```
278
+
279
+ This:
280
+
281
+ 1. Creates a backup of your existing config
282
+ 2. Adds A4E to your MCP servers
283
+ 3. Uses the correct Python path automatically
284
+
285
+ ### Manual Setup
286
+
287
+ <details>
288
+ <summary>Cursor (~/.cursor/mcp.json)</summary>
289
+
290
+ ```json
291
+ {
292
+ "mcpServers": {
293
+ "a4e": {
294
+ "command": "/path/to/python",
295
+ "args": ["-m", "a4e.server"],
296
+ "env": {
297
+ "A4E_WORKSPACE": "${workspaceFolder}"
298
+ }
299
+ }
300
+ }
301
+ }
302
+ ```
303
+
304
+ Find your Python path with: `which python` or `a4e mcp test`
305
+
306
+ </details>
307
+
308
+ <details>
309
+ <summary>Claude Code (~/.claude.json)</summary>
310
+
311
+ ```json
312
+ {
313
+ "mcpServers": {
314
+ "a4e": {
315
+ "command": "/path/to/python",
316
+ "args": ["-m", "a4e.server"]
317
+ }
318
+ }
319
+ }
320
+ ```
321
+
322
+ </details>
323
+
324
+ <details>
325
+ <summary>Antigravity (~/.gemini/antigravity/mcp_config.json)</summary>
326
+
327
+ ```json
328
+ {
329
+ "mcpServers": {
330
+ "a4e": {
331
+ "command": "/path/to/python",
332
+ "args": ["-m", "a4e.server"]
333
+ }
334
+ }
335
+ }
336
+ ```
337
+
338
+ </details>
339
+
340
+ ## Troubleshooting
341
+
342
+ ### "a4e: command not found"
343
+
344
+ Ensure pip scripts are in your PATH:
345
+
346
+ ```bash
347
+ # Find where pip installs scripts
348
+ python -m site --user-base
349
+
350
+ # Add to PATH (add to ~/.bashrc or ~/.zshrc)
351
+ export PATH="$HOME/.local/bin:$PATH"
352
+
353
+ # Or install with pipx for automatic PATH management
354
+ pipx install a4e
355
+ ```
356
+
357
+ ### MCP not connecting in IDE
358
+
359
+ ```bash
360
+ # 1. Test the MCP server
361
+ a4e mcp test
362
+
363
+ # 2. Check your config
364
+ a4e mcp show cursor
365
+
366
+ # 3. Verify Python path is correct
367
+ which python
368
+
369
+ # 4. Restart your IDE after config changes
370
+ ```
371
+
372
+ ### ngrok errors in dev server
373
+
374
+ ```bash
375
+ # Check if ngrok is configured
376
+ ngrok config check
377
+
378
+ # Add your authtoken
379
+ ngrok config add-authtoken YOUR_TOKEN
380
+
381
+ # Or pass it directly
382
+ a4e dev start --auth-token YOUR_TOKEN
383
+ ```
384
+
385
+ ### Port 5000 already in use
386
+
387
+ ```bash
388
+ # Find what's using the port
389
+ lsof -i :5000
390
+
391
+ # Kill it
392
+ kill -9 <PID>
393
+
394
+ # Or use a different port
395
+ a4e dev start --port 5001
396
+ ```
397
+
398
+ ### MCP config backup
399
+
400
+ When running `a4e mcp setup`, a backup is automatically created at:
401
+
402
+ - Cursor: `~/.cursor/mcp.json.backup`
403
+ - Claude Code: `~/.claude.json.backup`
404
+ - Antigravity: `~/.gemini/antigravity/mcp_config.json.backup`
405
+
406
+ To restore:
407
+
408
+ ```bash
409
+ cp ~/.cursor/mcp.json.backup ~/.cursor/mcp.json
410
+ ```
411
+
412
+ ## Documentation
413
+
414
+ - [CLI Reference](CLI.md) - Full command documentation
415
+ - [Getting Started](docs/GETTING_STARTED.md) - Step-by-step tutorial
416
+ - [Examples](docs/EXAMPLES.md) - Sample agents
417
+ - [View System](docs/VIEW_SYSTEM.md) - How views work
418
+
419
+ ## License
420
+
421
+ MIT License - see [LICENSE](LICENSE) for details.
422
+
423
+ ## Links
424
+
425
+ - [PyPI](https://pypi.org/project/a4e/)
426
+ - [GitHub](https://github.com/simetrik-inc-public/a4e-mcp-server)
427
+ - [Issues](https://github.com/simetrik-inc-public/a4e-mcp-server/issues)