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.
- agentx_kit-0.5.1/.agentx/llm_cache.sqlite +0 -0
- agentx_kit-0.5.1/.claude-plugin/marketplace.json +15 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/PKG-INFO +85 -1
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/README.md +84 -0
- agentx_kit-0.5.1/examples/README.md +28 -0
- agentx_kit-0.5.1/examples/demo_local.sh +42 -0
- agentx_kit-0.5.1/examples/demo_mcp.py +78 -0
- agentx_kit-0.5.1/integrations/claude-plugin/.claude-plugin/plugin.json +9 -0
- agentx_kit-0.5.1/integrations/claude-plugin/.mcp.json +8 -0
- agentx_kit-0.5.1/integrations/claude-plugin/README.md +29 -0
- agentx_kit-0.5.1/integrations/claude-plugin/commands/new-agent.md +14 -0
- agentx_kit-0.5.1/integrations/vscode/.vscodeignore +4 -0
- agentx_kit-0.5.1/integrations/vscode/README.md +34 -0
- agentx_kit-0.5.1/integrations/vscode/extension.js +87 -0
- agentx_kit-0.5.1/integrations/vscode/package.json +34 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/pyproject.toml +1 -1
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/__init__.py +7 -1
- agentx_kit-0.5.1/src/agentx/cache.py +166 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/cli.py +32 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/connector/build.py +2 -1
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/connector/recommend.py +4 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/dashboard/app.py +15 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/generator.py +1 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/spec.py +2 -1
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/pkg/main.py.j2 +8 -0
- agentx_kit-0.5.1/tests/test_cache.py +60 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/.github/workflows/publish.yml +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/.gitignore +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/DESIGN.md +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/LICENSE +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/RESEARCH.md +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/config.py +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/connector/__init__.py +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/connector/server.py +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/dashboard/__init__.py +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/frameworks/__init__.py +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/frameworks/crewai_agent.py +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/frameworks/langchain_agent.py +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/guardrails.py +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/insights/__init__.py +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/insights/analyze.py +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/insights/log.py +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/insights/optimize.py +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/insights/tokens.py +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/memory/__init__.py +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/memory/store.py +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/observability.py +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/prompts/__init__.py +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/prompts/templates.py +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/providers/__init__.py +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/providers/base.py +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/providers/factory.py +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/providers/registry.py +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/rag/__init__.py +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/rag/pipeline.py +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/reliability.py +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/__init__.py +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/prompts_store.py +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/Dockerfile.j2 +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/README.md.j2 +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/ci.yml.j2 +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/docker-compose.yml.j2 +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/dockerignore.j2 +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/env.example.j2 +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/evals/dataset.json.j2 +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/evals/run_evals.py.j2 +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/gitignore.j2 +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/mcp_servers.json.j2 +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/pkg/__init__.py.j2 +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/pkg/agents.py.j2 +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/pkg/config.py.j2 +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/pkg/guardrails.py.j2 +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/pkg/memory.py.j2 +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/pkg/observability.py.j2 +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/pkg/prompts.py.j2 +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/pkg/rag.py.j2 +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/pkg/server.py.j2 +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/pkg/tools.py.j2 +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/pyproject.toml.j2 +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/templates/skills_seed.json.j2 +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/scaffold/wizard.py +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/skills/__init__.py +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/skills/registry.py +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/structured.py +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/tools/__init__.py +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/tools/builtin.py +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/src/agentx/tools/mcp.py +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/tests/test_connector.py +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/tests/test_enterprise.py +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/tests/test_insights.py +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/tests/test_prompts.py +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/tests/test_providers.py +0 -0
- {agentx_kit-0.4.0 → agentx_kit-0.5.1}/tests/test_scaffold.py +0 -0
|
Binary file
|
|
@@ -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.
|
|
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,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,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
|
+
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.
|
|
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
|
]
|