agentx-kit 0.4.0__tar.gz → 0.5.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 (93) hide show
  1. agentx_kit-0.5.1/.agentx/llm_cache.sqlite +0 -0
  2. agentx_kit-0.5.1/.claude-plugin/marketplace.json +15 -0
  3. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/PKG-INFO +85 -1
  4. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/README.md +84 -0
  5. agentx_kit-0.5.1/examples/README.md +28 -0
  6. agentx_kit-0.5.1/examples/demo_local.sh +42 -0
  7. agentx_kit-0.5.1/examples/demo_mcp.py +78 -0
  8. agentx_kit-0.5.1/integrations/claude-plugin/.claude-plugin/plugin.json +9 -0
  9. agentx_kit-0.5.1/integrations/claude-plugin/.mcp.json +8 -0
  10. agentx_kit-0.5.1/integrations/claude-plugin/README.md +29 -0
  11. agentx_kit-0.5.1/integrations/claude-plugin/commands/new-agent.md +14 -0
  12. agentx_kit-0.5.1/integrations/vscode/.vscodeignore +4 -0
  13. agentx_kit-0.5.1/integrations/vscode/README.md +34 -0
  14. agentx_kit-0.5.1/integrations/vscode/extension.js +87 -0
  15. agentx_kit-0.5.1/integrations/vscode/package.json +34 -0
  16. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/pyproject.toml +1 -1
  17. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/__init__.py +7 -1
  18. agentx_kit-0.5.1/src/agentx/cache.py +166 -0
  19. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/cli.py +32 -0
  20. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/connector/build.py +2 -1
  21. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/connector/recommend.py +4 -0
  22. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/dashboard/app.py +15 -0
  23. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/generator.py +1 -0
  24. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/spec.py +2 -1
  25. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/pkg/main.py.j2 +8 -0
  26. agentx_kit-0.5.1/tests/test_cache.py +60 -0
  27. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/.github/workflows/publish.yml +0 -0
  28. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/.gitignore +0 -0
  29. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/DESIGN.md +0 -0
  30. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/LICENSE +0 -0
  31. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/RESEARCH.md +0 -0
  32. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/config.py +0 -0
  33. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/connector/__init__.py +0 -0
  34. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/connector/server.py +0 -0
  35. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/dashboard/__init__.py +0 -0
  36. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/frameworks/__init__.py +0 -0
  37. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/frameworks/crewai_agent.py +0 -0
  38. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/frameworks/langchain_agent.py +0 -0
  39. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/guardrails.py +0 -0
  40. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/insights/__init__.py +0 -0
  41. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/insights/analyze.py +0 -0
  42. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/insights/log.py +0 -0
  43. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/insights/optimize.py +0 -0
  44. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/insights/tokens.py +0 -0
  45. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/memory/__init__.py +0 -0
  46. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/memory/store.py +0 -0
  47. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/observability.py +0 -0
  48. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/prompts/__init__.py +0 -0
  49. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/prompts/templates.py +0 -0
  50. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/providers/__init__.py +0 -0
  51. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/providers/base.py +0 -0
  52. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/providers/factory.py +0 -0
  53. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/providers/registry.py +0 -0
  54. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/rag/__init__.py +0 -0
  55. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/rag/pipeline.py +0 -0
  56. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/reliability.py +0 -0
  57. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/__init__.py +0 -0
  58. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/prompts_store.py +0 -0
  59. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/Dockerfile.j2 +0 -0
  60. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/README.md.j2 +0 -0
  61. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/ci.yml.j2 +0 -0
  62. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/docker-compose.yml.j2 +0 -0
  63. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/dockerignore.j2 +0 -0
  64. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/env.example.j2 +0 -0
  65. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/evals/dataset.json.j2 +0 -0
  66. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/evals/run_evals.py.j2 +0 -0
  67. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/gitignore.j2 +0 -0
  68. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/mcp_servers.json.j2 +0 -0
  69. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/pkg/__init__.py.j2 +0 -0
  70. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/pkg/agents.py.j2 +0 -0
  71. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/pkg/config.py.j2 +0 -0
  72. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/pkg/guardrails.py.j2 +0 -0
  73. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/pkg/memory.py.j2 +0 -0
  74. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/pkg/observability.py.j2 +0 -0
  75. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/pkg/prompts.py.j2 +0 -0
  76. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/pkg/rag.py.j2 +0 -0
  77. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/pkg/server.py.j2 +0 -0
  78. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/pkg/tools.py.j2 +0 -0
  79. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/pyproject.toml.j2 +0 -0
  80. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/skills_seed.json.j2 +0 -0
  81. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/wizard.py +0 -0
  82. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/skills/__init__.py +0 -0
  83. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/skills/registry.py +0 -0
  84. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/structured.py +0 -0
  85. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/tools/__init__.py +0 -0
  86. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/tools/builtin.py +0 -0
  87. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/tools/mcp.py +0 -0
  88. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/tests/test_connector.py +0 -0
  89. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/tests/test_enterprise.py +0 -0
  90. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/tests/test_insights.py +0 -0
  91. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/tests/test_prompts.py +0 -0
  92. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/tests/test_providers.py +0 -0
  93. {agentx_kit-0.4.0 → agentx_kit-0.5.1}/tests/test_scaffold.py +0 -0
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "agentx-kit",
3
+ "owner": { "name": "AgentX", "url": "https://github.com/muhammadyahiya/agentx-kit" },
4
+ "metadata": {
5
+ "description": "AgentX-Kit — scaffold agent projects from a prompt, in Claude Code.",
6
+ "version": "0.1.0"
7
+ },
8
+ "plugins": [
9
+ {
10
+ "name": "agentx-kit",
11
+ "source": "./integrations/claude-plugin",
12
+ "description": "Scaffold complete LangChain/CrewAI agent projects from a single problem statement via AgentX-Kit's MCP tools."
13
+ }
14
+ ]
15
+ }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentx-kit
3
- Version: 0.4.0
3
+ Version: 0.5.1
4
4
  Summary: An open-source, provider-agnostic agentic framework + interactive project scaffolder for LangChain and CrewAI. Pick your LLM provider, agents, RAG, memory, MCP tools and skills — generate a ready-to-run uv project.
5
5
  Project-URL: Homepage, https://github.com/muhammadyahiya/agentx-kit
6
6
  Project-URL: Repository, https://github.com/muhammadyahiya/agentx-kit
@@ -123,6 +123,53 @@ agentx new # interactive wizard → scaffolds a uv project
123
123
  > The PyPI distribution is **`agentx-kit`**; the import name and CLI are **`agentx`**
124
124
  > (`pip install agentx-kit` → `import agentx` / `agentx --help`).
125
125
 
126
+ ## 🚀 60-second walkthrough
127
+ ```bash
128
+ # 1. Install
129
+ pip install "agentx-kit[all]"
130
+
131
+ # 2. See what you can target
132
+ agentx providers # 9 LLM providers + the env vars each needs
133
+
134
+ # 3. Scaffold a complete project from one line (no keys needed to generate)
135
+ agentx new --yes --name my-bot \
136
+ --provider openai \
137
+ --prompt "You are a support agent that answers from our docs."
138
+
139
+ # 4. Run it
140
+ cd my-bot && cp .env.example .env # add your API key
141
+ uv sync && uv run my-bot
142
+
143
+ # 5. Tune prompts live (tokens, cost, quality, optimize) — optional UI
144
+ pip install "agentx-kit[dashboard]" && agentx dashboard
145
+
146
+ # 6. Use it from Claude / Copilot / Codex
147
+ claude mcp add agentx-kit -- agentx mcp
148
+ ```
149
+ Prefer guided? Just run `agentx new` (interactive wizard) or
150
+ `agentx new --enterprise` for the full production stack
151
+ (tracing, guardrails, FastAPI, Docker, CI, evals, caching).
152
+
153
+ ### 🧭 Command cheat-sheet
154
+ | Command | What it does |
155
+ |---|---|
156
+ | `agentx new` | Interactive wizard → scaffold a uv project |
157
+ | `agentx new --yes [opts]` | Non-interactive scaffold (`--enterprise` for the full pack) |
158
+ | `agentx providers` | List LLM providers + required env vars |
159
+ | `agentx prompt list/set/add/remove` | Manage an existing project's prompts (`-d` opens the dashboard) |
160
+ | `agentx dashboard` | Prompt observability + optimization UI (`[dashboard]` extra) |
161
+ | `agentx cache stats / clear` | Inspect/clear the LLM response cache |
162
+ | `agentx mcp` | Run as an MCP server for Claude/Copilot/Codex |
163
+ | `agentx mcp --print-config` | Print the client config for those tools |
164
+ | `agentx version` | Show the installed version |
165
+
166
+ ### ▶️ Try the demos (no API keys needed)
167
+ ```bash
168
+ bash examples/demo_local.sh # verify local setup end-to-end
169
+ python examples/demo_mcp.py # test the Claude/Copilot MCP path (real handshake)
170
+ ```
171
+ See [`examples/`](examples/) for details.
172
+
126
173
  ## 📦 Installation
127
174
 
128
175
  ### From PyPI (recommended)
@@ -291,6 +338,43 @@ The assistant calls AgentX-Kit's tools and you get a complete, runnable project:
291
338
 
292
339
  So from one sentence the assistant produces a pre-wired project (prompts already seeded from your use case), ready to `uv sync && uv run`.
293
340
 
341
+ ## 🧩 Editor & assistant integrations
342
+ The same connector powers ready-made integrations (see [`integrations/`](integrations/)):
343
+
344
+ - **VS Code extension** ([`integrations/vscode`](integrations/vscode)) — commands for
345
+ *New Agent Project*, *Open Prompt Dashboard*, *Add Prompt*, *Cache Stats*, and
346
+ *Register MCP Server for Copilot* (writes `.vscode/mcp.json`). Build with `vsce package`.
347
+ - **GitHub Copilot** (agent mode) — add the MCP server via `.vscode/mcp.json`:
348
+ ```jsonc
349
+ { "servers": { "agentx-kit": { "command": "agentx", "args": ["mcp"] } } }
350
+ ```
351
+ (the VS Code command above writes this for you), then ask Copilot to build an agent.
352
+ - **Claude Code plugin** ([`integrations/claude-plugin`](integrations/claude-plugin)):
353
+ ```text
354
+ /plugin marketplace add muhammadyahiya/agentx-kit
355
+ /plugin install agentx-kit@agentx-kit
356
+ /agentx-kit:new-agent a support agent that answers from our docs and serves an API
357
+ ```
358
+ - **Claude Desktop / Codex** — add the connector config from `agentx mcp --print-config`.
359
+
360
+ ## 💾 Response caching (cost & latency saver)
361
+ Caching is the top 2026 token-optimization lever. Turn on a **global LLM response
362
+ cache** and every provider call is served from a local store on repeat — no code changes:
363
+
364
+ ```python
365
+ from agentx import enable_caching, cache_stats
366
+ enable_caching() # all get_chat_model(...) calls are cached
367
+ ...
368
+ print(cache_stats()) # {'hit_rate': 0.6, 'tokens_saved': 12000, 'est_usd_saved': 0.024, ...}
369
+ ```
370
+ ```bash
371
+ agentx cache stats # hit rate + estimated tokens/$ saved
372
+ agentx cache clear
373
+ ```
374
+ Generated projects can enable it automatically (it's part of `--enterprise`), and the
375
+ **dashboard's Trends tab shows live hit-rate and $ saved**. TTL-capable, SQLite-backed
376
+ at `.agentx/llm_cache.sqlite`.
377
+
294
378
  ## 🏢 Enterprise pack
295
379
  Generate a production-shaped project with one flag — informed by a survey of
296
380
  CrewAI/LangGraph/create-llama/AgentStack/agno/pydantic-ai (see [RESEARCH.md](RESEARCH.md)):
@@ -19,6 +19,53 @@ agentx new # interactive wizard → scaffolds a uv project
19
19
  > The PyPI distribution is **`agentx-kit`**; the import name and CLI are **`agentx`**
20
20
  > (`pip install agentx-kit` → `import agentx` / `agentx --help`).
21
21
 
22
+ ## 🚀 60-second walkthrough
23
+ ```bash
24
+ # 1. Install
25
+ pip install "agentx-kit[all]"
26
+
27
+ # 2. See what you can target
28
+ agentx providers # 9 LLM providers + the env vars each needs
29
+
30
+ # 3. Scaffold a complete project from one line (no keys needed to generate)
31
+ agentx new --yes --name my-bot \
32
+ --provider openai \
33
+ --prompt "You are a support agent that answers from our docs."
34
+
35
+ # 4. Run it
36
+ cd my-bot && cp .env.example .env # add your API key
37
+ uv sync && uv run my-bot
38
+
39
+ # 5. Tune prompts live (tokens, cost, quality, optimize) — optional UI
40
+ pip install "agentx-kit[dashboard]" && agentx dashboard
41
+
42
+ # 6. Use it from Claude / Copilot / Codex
43
+ claude mcp add agentx-kit -- agentx mcp
44
+ ```
45
+ Prefer guided? Just run `agentx new` (interactive wizard) or
46
+ `agentx new --enterprise` for the full production stack
47
+ (tracing, guardrails, FastAPI, Docker, CI, evals, caching).
48
+
49
+ ### 🧭 Command cheat-sheet
50
+ | Command | What it does |
51
+ |---|---|
52
+ | `agentx new` | Interactive wizard → scaffold a uv project |
53
+ | `agentx new --yes [opts]` | Non-interactive scaffold (`--enterprise` for the full pack) |
54
+ | `agentx providers` | List LLM providers + required env vars |
55
+ | `agentx prompt list/set/add/remove` | Manage an existing project's prompts (`-d` opens the dashboard) |
56
+ | `agentx dashboard` | Prompt observability + optimization UI (`[dashboard]` extra) |
57
+ | `agentx cache stats / clear` | Inspect/clear the LLM response cache |
58
+ | `agentx mcp` | Run as an MCP server for Claude/Copilot/Codex |
59
+ | `agentx mcp --print-config` | Print the client config for those tools |
60
+ | `agentx version` | Show the installed version |
61
+
62
+ ### ▶️ Try the demos (no API keys needed)
63
+ ```bash
64
+ bash examples/demo_local.sh # verify local setup end-to-end
65
+ python examples/demo_mcp.py # test the Claude/Copilot MCP path (real handshake)
66
+ ```
67
+ See [`examples/`](examples/) for details.
68
+
22
69
  ## 📦 Installation
23
70
 
24
71
  ### From PyPI (recommended)
@@ -187,6 +234,43 @@ The assistant calls AgentX-Kit's tools and you get a complete, runnable project:
187
234
 
188
235
  So from one sentence the assistant produces a pre-wired project (prompts already seeded from your use case), ready to `uv sync && uv run`.
189
236
 
237
+ ## 🧩 Editor & assistant integrations
238
+ The same connector powers ready-made integrations (see [`integrations/`](integrations/)):
239
+
240
+ - **VS Code extension** ([`integrations/vscode`](integrations/vscode)) — commands for
241
+ *New Agent Project*, *Open Prompt Dashboard*, *Add Prompt*, *Cache Stats*, and
242
+ *Register MCP Server for Copilot* (writes `.vscode/mcp.json`). Build with `vsce package`.
243
+ - **GitHub Copilot** (agent mode) — add the MCP server via `.vscode/mcp.json`:
244
+ ```jsonc
245
+ { "servers": { "agentx-kit": { "command": "agentx", "args": ["mcp"] } } }
246
+ ```
247
+ (the VS Code command above writes this for you), then ask Copilot to build an agent.
248
+ - **Claude Code plugin** ([`integrations/claude-plugin`](integrations/claude-plugin)):
249
+ ```text
250
+ /plugin marketplace add muhammadyahiya/agentx-kit
251
+ /plugin install agentx-kit@agentx-kit
252
+ /agentx-kit:new-agent a support agent that answers from our docs and serves an API
253
+ ```
254
+ - **Claude Desktop / Codex** — add the connector config from `agentx mcp --print-config`.
255
+
256
+ ## 💾 Response caching (cost & latency saver)
257
+ Caching is the top 2026 token-optimization lever. Turn on a **global LLM response
258
+ cache** and every provider call is served from a local store on repeat — no code changes:
259
+
260
+ ```python
261
+ from agentx import enable_caching, cache_stats
262
+ enable_caching() # all get_chat_model(...) calls are cached
263
+ ...
264
+ print(cache_stats()) # {'hit_rate': 0.6, 'tokens_saved': 12000, 'est_usd_saved': 0.024, ...}
265
+ ```
266
+ ```bash
267
+ agentx cache stats # hit rate + estimated tokens/$ saved
268
+ agentx cache clear
269
+ ```
270
+ Generated projects can enable it automatically (it's part of `--enterprise`), and the
271
+ **dashboard's Trends tab shows live hit-rate and $ saved**. TTL-capable, SQLite-backed
272
+ at `.agentx/llm_cache.sqlite`.
273
+
190
274
  ## 🏢 Enterprise pack
191
275
  Generate a production-shaped project with one flag — informed by a survey of
192
276
  CrewAI/LangGraph/create-llama/AgentStack/agno/pydantic-ai (see [RESEARCH.md](RESEARCH.md)):
@@ -0,0 +1,28 @@
1
+ # AgentX-Kit demos
2
+
3
+ Two runnable demos to confirm your setup — **no API keys required** (scaffolding
4
+ and insights are offline; LLM calls are optional).
5
+
6
+ ## 1. Local setup test
7
+ Verifies the install, lists providers, scaffolds a demo project, and exercises
8
+ prompt insights + the response cache.
9
+
10
+ ```bash
11
+ pip install "agentx-kit[all]"
12
+ bash examples/demo_local.sh
13
+ ```
14
+
15
+ ## 2. MCP connector test (the Claude / Copilot / Codex path)
16
+ Spawns `agentx mcp` over stdio, does a real MCP handshake, lists the tools, and
17
+ scaffolds a complete project from a one-line problem statement — exactly what an
18
+ assistant does when connected.
19
+
20
+ ```bash
21
+ pip install "agentx-kit[connector]"
22
+ python examples/demo_mcp.py
23
+ ```
24
+
25
+ Then wire it into Claude for real:
26
+ ```bash
27
+ claude mcp add agentx-kit -- agentx mcp
28
+ ```
@@ -0,0 +1,42 @@
1
+ #!/usr/bin/env bash
2
+ # AgentX-Kit — local setup smoke test. No API keys required.
3
+ # Verifies the install, lists providers, scaffolds a demo project, and exercises
4
+ # the prompt-insights + cache so you know everything works end-to-end.
5
+ #
6
+ # bash examples/demo_local.sh
7
+ set -euo pipefail
8
+
9
+ # Resolve the CLI: prefer `agentx` on PATH, else `python -m agentx.cli`.
10
+ if command -v agentx >/dev/null 2>&1; then
11
+ AGENTX="agentx"
12
+ else
13
+ AGENTX="python -m agentx.cli"
14
+ fi
15
+ echo "▶ using: $AGENTX"
16
+
17
+ echo; echo "==> 1) version"
18
+ $AGENTX version
19
+
20
+ echo; echo "==> 2) providers (no keys needed to list)"
21
+ $AGENTX providers
22
+
23
+ WORK="$(mktemp -d)"; trap 'echo; echo "demo project left at: $WORK"' EXIT
24
+ echo; echo "==> 3) scaffold a demo project (local Ollama provider, no key)"
25
+ ( cd "$WORK" && $AGENTX new --yes --name demo-agent --provider ollama \
26
+ --prompt "You are a helpful onboarding assistant." --no-venv )
27
+ echo "files:"
28
+ find "$WORK/demo-agent" -maxdepth 3 -type f | sed "s|$WORK/||" | sort
29
+
30
+ echo; echo "==> 4) prompt insights (offline)"
31
+ python - <<'PY'
32
+ from agentx import analyze_prompt, count_tokens
33
+ a = analyze_prompt("You are a support agent. Goal: answer in JSON. Do not invent policy.", "gpt-4o-mini")
34
+ print(f" quality={a.quality_score}/100 tokens={a.tokens} suggestions={len(a.suggestions)}")
35
+ PY
36
+
37
+ echo; echo "==> 5) response cache stats"
38
+ $AGENTX cache stats || true
39
+
40
+ echo; echo "✅ Local setup looks good."
41
+ echo "Next: cd $WORK/demo-agent && uv sync && uv run demo-agent"
42
+ echo " $AGENTX dashboard # prompt observability UI (needs [dashboard] extra)"
@@ -0,0 +1,78 @@
1
+ #!/usr/bin/env python
2
+ """AgentX-Kit — MCP connector demo (the same path Claude / Copilot / Codex use).
3
+
4
+ Spawns `agentx mcp` over stdio, performs a real MCP handshake, lists tools, and
5
+ calls them to scaffold a complete project from a one-line problem statement —
6
+ exactly what an MCP client (Claude) does. No API keys required (scaffolding is
7
+ template generation).
8
+
9
+ pip install "agentx-kit[connector]"
10
+ python examples/demo_mcp.py
11
+ """
12
+ from __future__ import annotations
13
+
14
+ import asyncio
15
+ import json
16
+ import sys
17
+ import tempfile
18
+
19
+
20
+ def _extract(result) -> dict:
21
+ """Pull a dict out of an MCP CallToolResult (structured or text content)."""
22
+ structured = getattr(result, "structuredContent", None)
23
+ if isinstance(structured, dict):
24
+ return structured.get("result", structured)
25
+ for block in getattr(result, "content", []) or []:
26
+ text = getattr(block, "text", None)
27
+ if text:
28
+ try:
29
+ return json.loads(text)
30
+ except json.JSONDecodeError:
31
+ return {"text": text}
32
+ return {}
33
+
34
+
35
+ async def main() -> int:
36
+ try:
37
+ from mcp import ClientSession, StdioServerParameters
38
+ from mcp.client.stdio import stdio_client
39
+ except ImportError:
40
+ print("Install the connector extra first: pip install 'agentx-kit[connector]'")
41
+ return 1
42
+
43
+ # Launch the same server Claude would (use this interpreter for portability).
44
+ params = StdioServerParameters(command=sys.executable, args=["-m", "agentx.cli", "mcp"])
45
+
46
+ print("▶ connecting to `agentx mcp` over stdio …")
47
+ async with stdio_client(params) as (read, write):
48
+ async with ClientSession(read, write) as session:
49
+ await session.initialize()
50
+
51
+ tools = await session.list_tools()
52
+ print("✓ connected. tools:", [t.name for t in tools.tools])
53
+
54
+ problem = "Build a customer-support agent that answers from our product docs and serves a REST API."
55
+ print(f"\n▶ recommend_project('{problem[:50]}…')")
56
+ rec = _extract(await session.call_tool("recommend_project", {"problem_statement": problem}))
57
+ print(f" framework={rec.get('framework')} features={rec.get('features')}")
58
+
59
+ out_dir = tempfile.mkdtemp(prefix="agentx-mcp-demo-")
60
+ print("\n▶ create_agent_project(…)")
61
+ res = _extract(await session.call_tool(
62
+ "create_agent_project",
63
+ {"problem_statement": problem, "output_dir": out_dir + "/support-bot"},
64
+ ))
65
+ if not res.get("ok"):
66
+ print(" ✗ failed:", res.get("error"))
67
+ return 1
68
+ print(f" ✓ generated {len(res['file_tree'])} files at {res['target_dir']}")
69
+ print(" features:", res["features"])
70
+ print(" run:", res["next_steps"][-1])
71
+
72
+ print("\n✅ MCP connector works — Claude/Copilot/Codex can drive this exact flow.")
73
+ print(" Add it to Claude: claude mcp add agentx-kit -- agentx mcp")
74
+ return 0
75
+
76
+
77
+ if __name__ == "__main__":
78
+ raise SystemExit(asyncio.run(main()))
@@ -0,0 +1,9 @@
1
+ {
2
+ "name": "agentx-kit",
3
+ "version": "0.1.0",
4
+ "description": "Scaffold complete provider-agnostic LangChain/CrewAI agent projects from a single problem statement, via AgentX-Kit's MCP tools.",
5
+ "author": { "name": "AgentX" },
6
+ "homepage": "https://github.com/muhammadyahiya/agentx-kit",
7
+ "license": "MIT",
8
+ "keywords": ["agents", "scaffold", "langchain", "crewai", "mcp"]
9
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "mcpServers": {
3
+ "agentx-kit": {
4
+ "command": "agentx",
5
+ "args": ["mcp"]
6
+ }
7
+ }
8
+ }
@@ -0,0 +1,29 @@
1
+ # AgentX-Kit — Claude Code plugin
2
+
3
+ Bundles AgentX-Kit's MCP server + a `/agentx-kit:new-agent` slash command so you
4
+ can scaffold a complete agent project from a single problem statement inside
5
+ Claude Code.
6
+
7
+ ## Prerequisite
8
+ ```bash
9
+ pip install "agentx-kit[connector]" # provides `agentx mcp`
10
+ ```
11
+
12
+ ## Install (from this repo's marketplace)
13
+ ```text
14
+ /plugin marketplace add muhammadyahiya/agentx-kit
15
+ /plugin install agentx-kit@agentx-kit
16
+ ```
17
+ Then use it:
18
+ ```text
19
+ /agentx-kit:new-agent a customer-support agent that answers from our docs and serves an API
20
+ ```
21
+
22
+ ## Or just add the MCP server (no plugin)
23
+ ```bash
24
+ claude mcp add agentx-kit -- agentx mcp
25
+ ```
26
+
27
+ The plugin ships:
28
+ - `.mcp.json` — registers the `agentx-kit` MCP server (`agentx mcp`).
29
+ - `commands/new-agent.md` — the `/agentx-kit:new-agent` workflow.
@@ -0,0 +1,14 @@
1
+ ---
2
+ description: Scaffold a complete AgentX-Kit agent project from a problem statement
3
+ argument-hint: <describe the agent / use case you want to build>
4
+ ---
5
+ Build a complete, runnable agent project for this request using the AgentX-Kit MCP tools:
6
+
7
+ **$ARGUMENTS**
8
+
9
+ Steps:
10
+ 1. Call `recommend_project` with the problem statement and briefly show the recommended stack (framework, provider, agents, features) + rationale.
11
+ 2. Ask the user to confirm or adjust (provider/framework/enterprise), then call `create_agent_project` with the problem statement and any overrides.
12
+ 3. Report the target directory, the generated file tree, and the exact run steps it returns. Offer to open key files (main.py, agents.py, prompts.json).
13
+
14
+ Keep it concise; the tools do the heavy lifting.
@@ -0,0 +1,4 @@
1
+ .vscode/**
2
+ **/*.map
3
+ .gitignore
4
+ node_modules/**
@@ -0,0 +1,34 @@
1
+ # AgentX-Kit — VS Code extension
2
+
3
+ Scaffold agent projects, open the prompt dashboard, and wire AgentX-Kit into
4
+ **GitHub Copilot** (agent mode) — without leaving VS Code.
5
+
6
+ ## Prerequisite
7
+ ```bash
8
+ pip install "agentx-kit[all]" # provides the `agentx` CLI the extension calls
9
+ ```
10
+
11
+ ## Commands (⇧⌘P)
12
+ - **AgentX: New Agent Project** — name + use case → `agentx new`
13
+ - **AgentX: Open Prompt Dashboard** — `agentx dashboard`
14
+ - **AgentX: Add Agent Prompt** — `agentx prompt set … -d`
15
+ - **AgentX: Show Response-Cache Stats** — `agentx cache stats`
16
+ - **AgentX: Register MCP Server for Copilot** — writes `.vscode/mcp.json` so Copilot
17
+ agent mode can call AgentX-Kit's tools (e.g. *"build a support agent over our docs"*).
18
+
19
+ Set a custom CLI path with the `agentx.command` setting.
20
+
21
+ ## Build / install locally
22
+ ```bash
23
+ npm install -g @vscode/vsce
24
+ cd integrations/vscode
25
+ vsce package # -> agentx-kit-0.1.0.vsix
26
+ code --install-extension agentx-kit-0.1.0.vsix
27
+ ```
28
+
29
+ ## Publish (needs a Marketplace publisher + PAT)
30
+ ```bash
31
+ vsce login <publisher>
32
+ vsce publish
33
+ ```
34
+ See https://code.visualstudio.com/api/working-with-extensions/publishing-extension.
@@ -0,0 +1,87 @@
1
+ // AgentX-Kit VS Code extension.
2
+ // Thin wrapper over the `agentx` CLI + MCP registration for Copilot/agent mode.
3
+ // Pure JS (no build step). Requires `pip install agentx-kit` on PATH.
4
+ const vscode = require("vscode");
5
+ const fs = require("fs");
6
+ const path = require("path");
7
+
8
+ function cli() {
9
+ return vscode.workspace.getConfiguration("agentx").get("command", "agentx");
10
+ }
11
+
12
+ function runInTerminal(name, commandLine) {
13
+ const term = vscode.window.createTerminal({ name });
14
+ term.show();
15
+ term.sendText(commandLine);
16
+ }
17
+
18
+ function workspaceRoot() {
19
+ const folders = vscode.workspace.workspaceFolders;
20
+ return folders && folders.length ? folders[0].uri.fsPath : process.cwd();
21
+ }
22
+
23
+ async function newProject() {
24
+ const name = await vscode.window.showInputBox({
25
+ prompt: "Project name", value: "my-agent",
26
+ });
27
+ if (!name) return;
28
+ const problem = await vscode.window.showInputBox({
29
+ prompt: "Describe the use case (optional — seeds the agent's prompt)", value: "",
30
+ });
31
+ const enterprise = await vscode.window.showQuickPick(["No", "Yes (tracing, guardrails, FastAPI, Docker, CI, evals, cache)"], {
32
+ placeHolder: "Enterprise pack?",
33
+ });
34
+ let cmd = `${cli()} new --yes --name ${JSON.stringify(name)}`;
35
+ if (problem) cmd += ` --prompt ${JSON.stringify(problem)}`;
36
+ if (enterprise && enterprise.startsWith("Yes")) cmd += " --enterprise";
37
+ runInTerminal("AgentX: new", cmd);
38
+ }
39
+
40
+ function dashboard() {
41
+ runInTerminal("AgentX: dashboard", `${cli()} dashboard`);
42
+ }
43
+
44
+ async function addPrompt() {
45
+ const agent = await vscode.window.showInputBox({ prompt: "Agent name", value: "assistant" });
46
+ if (!agent) return;
47
+ const text = await vscode.window.showInputBox({ prompt: "System prompt" });
48
+ if (text === undefined) return;
49
+ runInTerminal("AgentX: prompt", `${cli()} prompt set ${JSON.stringify(agent)} --text ${JSON.stringify(text)} -d`);
50
+ }
51
+
52
+ function cacheStats() {
53
+ runInTerminal("AgentX: cache", `${cli()} cache stats`);
54
+ }
55
+
56
+ // Write .vscode/mcp.json so GitHub Copilot (agent mode) / VS Code can use AgentX-Kit's MCP server.
57
+ async function registerMcp() {
58
+ const root = workspaceRoot();
59
+ const dir = path.join(root, ".vscode");
60
+ const file = path.join(dir, "mcp.json");
61
+ let config = { servers: {} };
62
+ try {
63
+ if (fs.existsSync(file)) config = JSON.parse(fs.readFileSync(file, "utf8"));
64
+ } catch (e) { /* start fresh on parse error */ }
65
+ config.servers = config.servers || {};
66
+ config.servers["agentx-kit"] = { command: cli(), args: ["mcp"] };
67
+ fs.mkdirSync(dir, { recursive: true });
68
+ fs.writeFileSync(file, JSON.stringify(config, null, 2));
69
+ vscode.window.showInformationMessage(
70
+ "AgentX-Kit MCP server registered in .vscode/mcp.json. Open Copilot Chat (Agent mode) and ask it to build an agent from a problem statement."
71
+ );
72
+ const doc = await vscode.workspace.openTextDocument(file);
73
+ vscode.window.showTextDocument(doc);
74
+ }
75
+
76
+ function activate(context) {
77
+ const reg = (id, fn) => context.subscriptions.push(vscode.commands.registerCommand(id, fn));
78
+ reg("agentx.newProject", newProject);
79
+ reg("agentx.dashboard", dashboard);
80
+ reg("agentx.addPrompt", addPrompt);
81
+ reg("agentx.cacheStats", cacheStats);
82
+ reg("agentx.registerMcp", registerMcp);
83
+ }
84
+
85
+ function deactivate() {}
86
+
87
+ module.exports = { activate, deactivate };
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": "agentx-kit",
3
+ "displayName": "AgentX-Kit",
4
+ "description": "Scaffold provider-agnostic LangChain/CrewAI agent projects, open the prompt dashboard, and wire AgentX-Kit into Copilot — from VS Code.",
5
+ "version": "0.1.0",
6
+ "publisher": "agentx",
7
+ "engines": { "vscode": "^1.85.0" },
8
+ "categories": ["Machine Learning", "Snippets", "Other"],
9
+ "keywords": ["ai", "agents", "llm", "langchain", "crewai", "mcp", "scaffold", "copilot"],
10
+ "icon": "icon.png",
11
+ "repository": { "type": "git", "url": "https://github.com/muhammadyahiya/agentx-kit" },
12
+ "license": "MIT",
13
+ "main": "./extension.js",
14
+ "activationEvents": [],
15
+ "contributes": {
16
+ "commands": [
17
+ { "command": "agentx.newProject", "title": "AgentX: New Agent Project" },
18
+ { "command": "agentx.dashboard", "title": "AgentX: Open Prompt Dashboard" },
19
+ { "command": "agentx.addPrompt", "title": "AgentX: Add Agent Prompt" },
20
+ { "command": "agentx.cacheStats", "title": "AgentX: Show Response-Cache Stats" },
21
+ { "command": "agentx.registerMcp", "title": "AgentX: Register MCP Server for Copilot" }
22
+ ],
23
+ "configuration": {
24
+ "title": "AgentX-Kit",
25
+ "properties": {
26
+ "agentx.command": {
27
+ "type": "string",
28
+ "default": "agentx",
29
+ "description": "Path to the agentx CLI (from `pip install agentx-kit`)."
30
+ }
31
+ }
32
+ }
33
+ }
34
+ }
@@ -1,7 +1,7 @@
1
1
  [project]
2
2
  # PyPI distribution name (import name + CLI stay `agentx`; `agentx` was taken).
3
3
  name = "agentx-kit"
4
- version = "0.4.0"
4
+ version = "0.5.1"
5
5
  description = "An open-source, provider-agnostic agentic framework + interactive project scaffolder for LangChain and CrewAI. Pick your LLM provider, agents, RAG, memory, MCP tools and skills — generate a ready-to-run uv project."
6
6
  readme = "README.md"
7
7
  requires-python = ">=3.10,<3.14"
@@ -16,7 +16,7 @@ is enough to get started.
16
16
  """
17
17
  from __future__ import annotations
18
18
 
19
- __version__ = "0.4.0"
19
+ __version__ = "0.5.1"
20
20
 
21
21
  from .providers import ( # noqa: E402
22
22
  ProviderSpec,
@@ -39,6 +39,7 @@ from .insights import ( # noqa: E402
39
39
  estimate_cost,
40
40
  optimize_prompt,
41
41
  )
42
+ from .cache import cache_stats, clear_cache, disable_caching, enable_caching # noqa: E402
42
43
 
43
44
  __all__ = [
44
45
  "__version__",
@@ -63,4 +64,9 @@ __all__ = [
63
64
  "optimize_prompt",
64
65
  "count_tokens",
65
66
  "estimate_cost",
67
+ # response caching
68
+ "enable_caching",
69
+ "disable_caching",
70
+ "cache_stats",
71
+ "clear_cache",
66
72
  ]