claude-toolstack-cli 1.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- claude_toolstack_cli-1.0.0.dist-info/METADATA +354 -0
- claude_toolstack_cli-1.0.0.dist-info/RECORD +48 -0
- claude_toolstack_cli-1.0.0.dist-info/WHEEL +5 -0
- claude_toolstack_cli-1.0.0.dist-info/entry_points.txt +2 -0
- claude_toolstack_cli-1.0.0.dist-info/licenses/LICENSE +21 -0
- claude_toolstack_cli-1.0.0.dist-info/top_level.txt +1 -0
- cts/__init__.py +3 -0
- cts/__main__.py +5 -0
- cts/autopilot.py +633 -0
- cts/bundle.py +958 -0
- cts/cli.py +2858 -0
- cts/confidence.py +218 -0
- cts/config.py +19 -0
- cts/corpus/__init__.py +139 -0
- cts/corpus/apply.py +305 -0
- cts/corpus/archive.py +309 -0
- cts/corpus/baseline.py +294 -0
- cts/corpus/evaluate.py +409 -0
- cts/corpus/experiment_eval.py +585 -0
- cts/corpus/experiment_schema.py +380 -0
- cts/corpus/extract.py +353 -0
- cts/corpus/load.py +44 -0
- cts/corpus/model.py +114 -0
- cts/corpus/patch.py +467 -0
- cts/corpus/registry.py +420 -0
- cts/corpus/report.py +745 -0
- cts/corpus/scan.py +87 -0
- cts/corpus/store.py +63 -0
- cts/corpus/trends.py +478 -0
- cts/corpus/tuning_schema.py +313 -0
- cts/corpus/variants.py +335 -0
- cts/ctags.py +133 -0
- cts/diff_context.py +92 -0
- cts/errors.py +109 -0
- cts/http.py +89 -0
- cts/ranking.py +466 -0
- cts/render.py +388 -0
- cts/schema.py +96 -0
- cts/semantic/__init__.py +47 -0
- cts/semantic/candidates.py +150 -0
- cts/semantic/chunker.py +184 -0
- cts/semantic/config.py +120 -0
- cts/semantic/embedder.py +151 -0
- cts/semantic/indexer.py +159 -0
- cts/semantic/search.py +252 -0
- cts/semantic/store.py +330 -0
- cts/sidecar.py +431 -0
- cts/structural.py +305 -0
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: claude-toolstack-cli
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: CLI client for Claude Toolstack gateway
|
|
5
|
+
License-Expression: MIT
|
|
6
|
+
Requires-Python: >=3.10
|
|
7
|
+
Description-Content-Type: text/markdown
|
|
8
|
+
License-File: LICENSE
|
|
9
|
+
Provides-Extra: semantic
|
|
10
|
+
Requires-Dist: numpy>=1.24; extra == "semantic"
|
|
11
|
+
Requires-Dist: sentence-transformers>=2.2; extra == "semantic"
|
|
12
|
+
Dynamic: license-file
|
|
13
|
+
|
|
14
|
+
<p align="center">
|
|
15
|
+
<a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a>
|
|
16
|
+
</p>
|
|
17
|
+
|
|
18
|
+
<p align="center">
|
|
19
|
+
<img src="https://raw.githubusercontent.com/mcp-tool-shop-org/brand/main/logos/claude-toolstack/readme.png" width="400" alt="Claude ToolStack">
|
|
20
|
+
</p>
|
|
21
|
+
|
|
22
|
+
<p align="center">
|
|
23
|
+
Docker + Claude Code workstation config for 64-GB Linux hosts.<br>
|
|
24
|
+
cgroup v2 slices • Compose tool farm • FastAPI gateway • no thrash.
|
|
25
|
+
</p>
|
|
26
|
+
|
|
27
|
+
<p align="center">
|
|
28
|
+
<a href="https://pypi.org/project/claude-toolstack-cli/"><img src="https://img.shields.io/pypi/v/claude-toolstack-cli" alt="PyPI"></a>
|
|
29
|
+
<a href="https://github.com/mcp-tool-shop-org/claude-toolstack/actions/workflows/ci.yml"><img src="https://github.com/mcp-tool-shop-org/claude-toolstack/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
|
|
30
|
+
<a href="https://codecov.io/gh/mcp-tool-shop-org/claude-toolstack"><img src="https://codecov.io/gh/mcp-tool-shop-org/claude-toolstack/graph/badge.svg" alt="Coverage"></a>
|
|
31
|
+
<a href="https://github.com/mcp-tool-shop-org/claude-toolstack/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT License"></a>
|
|
32
|
+
<a href="https://mcp-tool-shop-org.github.io/claude-toolstack/"><img src="https://img.shields.io/badge/Landing_Page-live-blue" alt="Landing Page"></a>
|
|
33
|
+
</p>
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## What This Is
|
|
38
|
+
|
|
39
|
+
A ready-to-deploy stack that keeps Claude Code productive on large, multi-language repositories without thrashing a 64-GB Linux workstation.
|
|
40
|
+
|
|
41
|
+
**Core idea:** don't load the repo into Claude. Keep durable indexes near the code in resource-governed containers. Stream only the smallest necessary evidence back to Claude through a thin HTTP gateway.
|
|
42
|
+
|
|
43
|
+
## Architecture
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
64-GB Linux host (Ubuntu 22.04 / Fedora 38)
|
|
47
|
+
├── systemd slices (cgroup v2 governance)
|
|
48
|
+
│ ├── claude-gw.slice — gateway + socket proxy
|
|
49
|
+
│ ├── claude-index.slice — indexing + search
|
|
50
|
+
│ ├── claude-lsp.slice — language servers
|
|
51
|
+
│ ├── claude-build.slice — build/test runners
|
|
52
|
+
│ └── claude-vector.slice — vector DB (optional)
|
|
53
|
+
├── Docker Compose stack
|
|
54
|
+
│ ├── gateway — FastAPI, 6 endpoints, 127.0.0.1:8088
|
|
55
|
+
│ ├── dockerproxy — socket proxy (exec-only model)
|
|
56
|
+
│ ├── toolstack — cts CLI inside the stack (cli profile)
|
|
57
|
+
│ ├── ctags — universal-ctags indexer
|
|
58
|
+
│ └── build — generic build runner
|
|
59
|
+
└── Claude Code / Claude Desktop
|
|
60
|
+
└── calls gateway → gets bounded evidence
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Quick Start
|
|
64
|
+
|
|
65
|
+
### 1. Bootstrap the host
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
sudo ./scripts/bootstrap.sh
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
This installs:
|
|
72
|
+
- zram swap (Ubuntu) or verifies swap-on-zram (Fedora)
|
|
73
|
+
- Sysctl tuning (swappiness, inotify watches)
|
|
74
|
+
- systemd slices with MemoryHigh/Max governance
|
|
75
|
+
- Docker daemon config (local log driver)
|
|
76
|
+
- claude-toolstack.service (boot management)
|
|
77
|
+
|
|
78
|
+
### 2. Configure
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
cp .env.example .env
|
|
82
|
+
# Edit .env: set API_KEY, ALLOWED_REPOS, etc.
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### 3. Clone repos
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
# Repos go under /workspace/repos/<org>/<repo>
|
|
89
|
+
git clone https://github.com/myorg/myrepo /workspace/repos/myorg/myrepo
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### 4. Start the stack
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
docker compose up -d --build
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### 5. Verify
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
./scripts/smoke-test.sh "$API_KEY" myorg/myrepo
|
|
102
|
+
./scripts/health.sh
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
## Gateway API
|
|
106
|
+
|
|
107
|
+
All endpoints require `x-api-key` header. Gateway binds to `127.0.0.1:8088` only.
|
|
108
|
+
|
|
109
|
+
| Method | Endpoint | Purpose |
|
|
110
|
+
|--------|----------|---------|
|
|
111
|
+
| `GET` | `/v1/status` | Health + config |
|
|
112
|
+
| `POST` | `/v1/search/rg` | Ripgrep with guardrails |
|
|
113
|
+
| `POST` | `/v1/file/slice` | Fetch file range (max 800 lines) |
|
|
114
|
+
| `POST` | `/v1/index/ctags` | Build ctags index (async) |
|
|
115
|
+
| `POST` | `/v1/symbol/ctags` | Query symbol definitions |
|
|
116
|
+
| `POST` | `/v1/run/job` | Run allowlisted test/build/lint |
|
|
117
|
+
| `GET` | `/v1/metrics` | Prometheus-format counters |
|
|
118
|
+
|
|
119
|
+
All responses include `X-Request-ID` for end-to-end correlation. Clients can send their own via the `X-Request-ID` header.
|
|
120
|
+
|
|
121
|
+
## CLI (`cts`)
|
|
122
|
+
|
|
123
|
+
A zero-dependency Python CLI that wraps all gateway endpoints.
|
|
124
|
+
|
|
125
|
+
### Install
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
pip install -e .
|
|
129
|
+
# or: pipx install -e .
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Configure
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
export CLAUDE_TOOLSTACK_API_KEY=<your-key>
|
|
136
|
+
export CLAUDE_TOOLSTACK_URL=http://127.0.0.1:8088 # default
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Usage
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
# Gateway health
|
|
143
|
+
cts status
|
|
144
|
+
|
|
145
|
+
# Search (text output)
|
|
146
|
+
cts search "PaymentService" --repo myorg/myrepo --max 50
|
|
147
|
+
|
|
148
|
+
# Search (evidence bundle for Claude — auto-fetches context slices)
|
|
149
|
+
cts search "PaymentService" --repo myorg/myrepo --format claude
|
|
150
|
+
|
|
151
|
+
# File slice
|
|
152
|
+
cts slice --repo myorg/myrepo src/main.ts:120-180
|
|
153
|
+
|
|
154
|
+
# Symbol lookup
|
|
155
|
+
cts symbol PaymentService --repo myorg/myrepo
|
|
156
|
+
|
|
157
|
+
# Run tests
|
|
158
|
+
cts job test --repo myorg/myrepo --preset node
|
|
159
|
+
|
|
160
|
+
# Stack diagnostics
|
|
161
|
+
cts doctor
|
|
162
|
+
cts doctor --format json
|
|
163
|
+
|
|
164
|
+
# Performance knobs
|
|
165
|
+
cts perf
|
|
166
|
+
cts perf --format json
|
|
167
|
+
|
|
168
|
+
# Semantic search (default-on when store exists)
|
|
169
|
+
cts semantic index --repo myorg/myrepo --root /workspace/repos/myorg/myrepo
|
|
170
|
+
cts semantic search "what does auth do?" --repo myorg/myrepo
|
|
171
|
+
|
|
172
|
+
# All commands support: --format json|text|claude --request-id <id> --debug
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
### Evidence Bundles v2 (`--format claude`)
|
|
176
|
+
|
|
177
|
+
The `--claude` output mode produces compact, paste-ready evidence packs with structured v2 headers. Four bundle modes are available:
|
|
178
|
+
|
|
179
|
+
| Mode | Flag | What it does |
|
|
180
|
+
|------|------|-------------|
|
|
181
|
+
| `default` | `--bundle default` | Search + ranked matches + context slices |
|
|
182
|
+
| `error` | `--bundle error` | Stack-trace-aware: extracts files from trace, boosts in ranking |
|
|
183
|
+
| `symbol` | `--bundle symbol` | Definitions + call sites from search |
|
|
184
|
+
| `change` | `--bundle change` | Git diff + hunk context slices |
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
# Default bundle (search + slices)
|
|
188
|
+
cts search "PaymentService" --repo myorg/myrepo --format claude
|
|
189
|
+
|
|
190
|
+
# Error bundle (pass stack trace for trace-aware ranking)
|
|
191
|
+
cts search "ConnectionError" --repo myorg/myrepo --format claude \
|
|
192
|
+
--bundle error --error-text "$(cat /tmp/traceback.txt)"
|
|
193
|
+
|
|
194
|
+
# Symbol bundle (definitions + call sites)
|
|
195
|
+
cts symbol PaymentService --repo myorg/myrepo --format claude --bundle symbol
|
|
196
|
+
|
|
197
|
+
# Path preferences (boost src, demote vendor)
|
|
198
|
+
cts search "handler" --repo myorg/myrepo --format claude \
|
|
199
|
+
--prefer-paths src,core --avoid-paths vendor,test
|
|
200
|
+
|
|
201
|
+
# Git recency scoring (requires local repo access)
|
|
202
|
+
cts search "handler" --repo myorg/myrepo --format claude \
|
|
203
|
+
--repo-root /workspace/repos/myorg/myrepo
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
Tuning: `--evidence-files 5` (files to slice), `--context 30` (lines around hit).
|
|
207
|
+
|
|
208
|
+
### curl examples
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
# Search
|
|
212
|
+
curl -sS -H "x-api-key: $KEY" -H "content-type: application/json" \
|
|
213
|
+
-d '{"repo":"myorg/myrepo","query":"PaymentService","max_matches":50}' \
|
|
214
|
+
http://127.0.0.1:8088/v1/search/rg | jq
|
|
215
|
+
|
|
216
|
+
# File slice
|
|
217
|
+
curl -sS -H "x-api-key: $KEY" -H "content-type: application/json" \
|
|
218
|
+
-d '{"repo":"myorg/myrepo","path":"src/main.ts","start":120,"end":160}' \
|
|
219
|
+
http://127.0.0.1:8088/v1/file/slice | jq
|
|
220
|
+
|
|
221
|
+
# Run tests
|
|
222
|
+
curl -sS -H "x-api-key: $KEY" -H "content-type: application/json" \
|
|
223
|
+
-d '{"repo":"myorg/myrepo","job":"test","preset":"node"}' \
|
|
224
|
+
http://127.0.0.1:8088/v1/run/job | jq
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
## Resource Governance
|
|
228
|
+
|
|
229
|
+
systemd slices enforce MemoryHigh (throttle) and MemoryMax (hard cap) per service group:
|
|
230
|
+
|
|
231
|
+
| Slice | MemoryHigh | MemoryMax | Purpose |
|
|
232
|
+
|-------|-----------|-----------|---------|
|
|
233
|
+
| `claude-gw` | 2 GB | 4 GB | Gateway + socket proxy |
|
|
234
|
+
| `claude-index` | 6 GB | 10 GB | Indexers, search |
|
|
235
|
+
| `claude-lsp` | 8 GB | 16 GB | Language servers |
|
|
236
|
+
| `claude-build` | 10 GB | 18 GB | Build/test runners |
|
|
237
|
+
| `claude-vector` | 8 GB | 16 GB | Vector DB (optional) |
|
|
238
|
+
|
|
239
|
+
These are medium-repo defaults. Edit the slice files in `systemd/` for your workload.
|
|
240
|
+
|
|
241
|
+
OS + headroom: 10-14 GB always reserved for filesystem cache, desktop, SSH.
|
|
242
|
+
|
|
243
|
+
## Security
|
|
244
|
+
|
|
245
|
+
### Threat Model
|
|
246
|
+
|
|
247
|
+
**What we protect against:**
|
|
248
|
+
- Gateway abuse (unauthorized access, resource exhaustion)
|
|
249
|
+
- Path traversal (escaping repo root via `../` or symlinks)
|
|
250
|
+
- Docker socket escalation (raw socket = root-equivalent)
|
|
251
|
+
- Output flooding (unbounded search/build results consuming memory)
|
|
252
|
+
|
|
253
|
+
**Security layers:**
|
|
254
|
+
|
|
255
|
+
| Layer | Mechanism |
|
|
256
|
+
|-------|-----------|
|
|
257
|
+
| Auth | API key (`x-api-key` header), configurable |
|
|
258
|
+
| Network | Gateway binds `127.0.0.1` only |
|
|
259
|
+
| Docker | Socket proxy (Tecnativa), only `CONTAINERS+EXEC` |
|
|
260
|
+
| Repos | Allowlist/denylist with glob support |
|
|
261
|
+
| Paths | `realpath` jail, null byte rejection |
|
|
262
|
+
| Commands | Preset allowlist only, no arbitrary exec |
|
|
263
|
+
| Output | 512 KB cap, line truncation |
|
|
264
|
+
| Rate limit | Token bucket per key+ip |
|
|
265
|
+
| Audit | JSONL log, key hashed, rotated |
|
|
266
|
+
| Containers | Named allowlist, no wildcards |
|
|
267
|
+
| Resources | cgroup v2 slices, per-container mem/cpu limits |
|
|
268
|
+
|
|
269
|
+
### What the gateway cannot do
|
|
270
|
+
|
|
271
|
+
- Execute arbitrary commands (preset allowlist only)
|
|
272
|
+
- Access repos outside `/workspace/repos` (path jail)
|
|
273
|
+
- Touch Docker images, volumes, networks, or system (proxy blocks)
|
|
274
|
+
- Return unbounded output (512 KB hard cap)
|
|
275
|
+
- Accept connections from non-localhost (bind address)
|
|
276
|
+
- Collect or send telemetry — **no telemetry, no phone-home, no analytics**
|
|
277
|
+
|
|
278
|
+
## Directory Structure
|
|
279
|
+
|
|
280
|
+
```
|
|
281
|
+
claude-toolstack/
|
|
282
|
+
├── compose.yaml # Docker Compose stack (exec-only model)
|
|
283
|
+
├── .env.example # Configuration template
|
|
284
|
+
├── pyproject.toml # CLI packaging (cts)
|
|
285
|
+
├── repos.yaml # Declarative repo registry
|
|
286
|
+
├── cts/ # CLI client (zero deps for core)
|
|
287
|
+
│ ├── cli.py # argparse commands (doctor, perf, search, ...)
|
|
288
|
+
│ ├── errors.py # Structured error shape (CtsError)
|
|
289
|
+
│ ├── http.py # gateway HTTP client
|
|
290
|
+
│ ├── render.py # json/text/claude renderers (v1+v2)
|
|
291
|
+
│ ├── bundle.py # v2 bundle orchestrator (4 modes)
|
|
292
|
+
│ ├── ranking.py # path scoring, trace extraction, recency
|
|
293
|
+
│ ├── config.py # env + defaults
|
|
294
|
+
│ └── semantic/ # Embedding-based search (optional dep)
|
|
295
|
+
│ ├── store.py # SQLite vector store
|
|
296
|
+
│ ├── search.py # cosine similarity + narrowing
|
|
297
|
+
│ ├── candidates.py # candidate selection strategies
|
|
298
|
+
│ └── config.py # semantic knobs
|
|
299
|
+
├── tests/ # 890+ unit tests (pytest)
|
|
300
|
+
├── gateway/
|
|
301
|
+
│ ├── main.py # FastAPI gateway
|
|
302
|
+
│ ├── Dockerfile # python:3.12-slim + ripgrep + tini
|
|
303
|
+
│ └── requirements.txt # 6 dependencies
|
|
304
|
+
├── nginx/
|
|
305
|
+
│ └── gateway.conf # Reverse proxy (optional)
|
|
306
|
+
├── systemd/
|
|
307
|
+
│ ├── claude-gw.slice # gateway + dockerproxy (2G/4G)
|
|
308
|
+
│ ├── claude-index.slice # indexers + search (6G/10G)
|
|
309
|
+
│ ├── claude-lsp.slice # language servers (8G/16G)
|
|
310
|
+
│ ├── claude-build.slice # build/test runners (10G/18G)
|
|
311
|
+
│ ├── claude-vector.slice
|
|
312
|
+
│ ├── claude-toolstack.service
|
|
313
|
+
│ └── ... # zram, sysctl, daemon.json
|
|
314
|
+
├── scripts/
|
|
315
|
+
│ ├── bootstrap.sh # Host setup (run once)
|
|
316
|
+
│ ├── verify.sh # All quality gates in one command
|
|
317
|
+
│ ├── cts-docker # Run cts inside Docker stack
|
|
318
|
+
│ ├── smoke-test.sh # Validation suite
|
|
319
|
+
│ └── ... # health, add-repo, policy-lint, triage
|
|
320
|
+
└── docs/
|
|
321
|
+
└── tuning.md # Slice tuning guide
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
## Claude Code Integration
|
|
325
|
+
|
|
326
|
+
### Local Linux
|
|
327
|
+
|
|
328
|
+
Claude Code runs directly on the host. Configure gateway as an MCP server or call it via HTTP from task scripts.
|
|
329
|
+
|
|
330
|
+
### Remote (macOS/Windows)
|
|
331
|
+
|
|
332
|
+
Use Claude Desktop's Code tab with an SSH environment pointing to your Linux host. The tool farm runs on the host; the GUI stays on your laptop.
|
|
333
|
+
|
|
334
|
+
## Tuning
|
|
335
|
+
|
|
336
|
+
See [docs/tuning.md](docs/tuning.md) for:
|
|
337
|
+
- Slice sizing by repo size (small/medium/large)
|
|
338
|
+
- PSI monitoring and thrash detection
|
|
339
|
+
- Adding language servers (clangd, rust-analyzer, tsserver)
|
|
340
|
+
- Vector store options (SQLite+FAISS, Weaviate, Milvus)
|
|
341
|
+
- Job preset customization
|
|
342
|
+
|
|
343
|
+
## No-Thrash Validation
|
|
344
|
+
|
|
345
|
+
After deployment, confirm:
|
|
346
|
+
|
|
347
|
+
1. **PSI full near zero**: `watch -n 1 'cat /proc/pressure/memory'`
|
|
348
|
+
2. **Containers hit MemoryHigh before Max**: check slice status
|
|
349
|
+
3. **SSH stays responsive**: during indexing and builds
|
|
350
|
+
4. **Containment works**: shrink one service's limit, run heavy task, confirm only that container dies
|
|
351
|
+
|
|
352
|
+
---
|
|
353
|
+
|
|
354
|
+
Built by <a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a>
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
claude_toolstack_cli-1.0.0.dist-info/licenses/LICENSE,sha256=Nn5RQeT1iE5XkcQCHzOp-qlYhApd7PROGyc6h6rRxFk,1070
|
|
2
|
+
cts/__init__.py,sha256=GCqJ3UPKTraIwSad0uav4IoxKVC_vFLurNhJlpzZPDA,66
|
|
3
|
+
cts/__main__.py,sha256=HZ4lHY34h9rwTwkiLtHEE9p_uT1uywdCM1jPO3jHWeg,68
|
|
4
|
+
cts/autopilot.py,sha256=1_7HOEqGR_NzZwvKwzx0TQuZ1R6Ye3iRTl6-oXIVX1E,22426
|
|
5
|
+
cts/bundle.py,sha256=FuUCO2kQVkVxl3X7ma-cp23s3jLFHn4v5e6aPts0x_Q,30046
|
|
6
|
+
cts/cli.py,sha256=-ohmSIqujgzWL8ak59Pvp6E8QMLytmDa4OuPzqsGiek,85664
|
|
7
|
+
cts/confidence.py,sha256=GoIc04Mu5GTwAOdEPMnOwQyis_ej6L-inYrugxNzp3U,6896
|
|
8
|
+
cts/config.py,sha256=C9t4unA50ngSb_5efFLbU4N9-caJtMsFl4lUJw0aTQs,458
|
|
9
|
+
cts/ctags.py,sha256=hywk74AwBPckMLpIOb1qJtAEqrs26yEhhpBmWs1PNJU,3727
|
|
10
|
+
cts/diff_context.py,sha256=h4XRVPQcd1Grn7lNbwrBQDhM8TO_sy0eGMq0JQPAqro,2857
|
|
11
|
+
cts/errors.py,sha256=qKcQ53sUITV6wJp7PfX8GRErin8A4JFnjU_jetSREuk,3360
|
|
12
|
+
cts/http.py,sha256=XWYx2vox1KffMa43khVNVxFhy9PuMjf28cJNwKjBzvc,2635
|
|
13
|
+
cts/ranking.py,sha256=cKQNsiK7LiDO3fFUNZslQfH6sJBQLJ4PgNPdkSJBSHY,15116
|
|
14
|
+
cts/render.py,sha256=bU9fRG8Hy36WO7vW7IYz8MITOkuy6ImMm-fDUD1Z3To,12856
|
|
15
|
+
cts/schema.py,sha256=MLEwy3zawxB-d5Eb3iwfZXxeIgxBEg1c6y75RDL7KJQ,3026
|
|
16
|
+
cts/sidecar.py,sha256=qn05Ohqnm2AZdOv7eRscJba6Yi5a_Pf2nSOH7-xfO9I,13215
|
|
17
|
+
cts/structural.py,sha256=8ar0YAEEBguHV0mDkGFkFBbNu7bYBXNJtjDeXNqQ0cM,9323
|
|
18
|
+
cts/corpus/__init__.py,sha256=uHjXBLLQythYL4ecjL-nJ0FRvcYjYKMaTnyHI-e1dH4,3396
|
|
19
|
+
cts/corpus/apply.py,sha256=XpO-1vV-tRntDR4Ofdw38XhJqlJvqKu32EBnZIiaW1E,8300
|
|
20
|
+
cts/corpus/archive.py,sha256=yorK9Fz5Lz8GSeXthpMFPOb_GqGYI4WlJl4LZQQgH2Q,10243
|
|
21
|
+
cts/corpus/baseline.py,sha256=UfYTSFRG7yn1p2Z8jmZxubwpJ0Jk14NlprBDfqmSfbU,9300
|
|
22
|
+
cts/corpus/evaluate.py,sha256=T9mRRFhc2uUQQIpa_AUjS-TWGEn3osaE3xXxkTxW30g,12448
|
|
23
|
+
cts/corpus/experiment_eval.py,sha256=kIqfbObPjnTmajZDbaq3ANsUNdP0r5-31KR46wduvOI,19114
|
|
24
|
+
cts/corpus/experiment_schema.py,sha256=CyENfPY1CnOGYsxaDEYQfu-RBjDXZRl9oR_G9K0b8nY,11563
|
|
25
|
+
cts/corpus/extract.py,sha256=vICtB005ujhEAujQay1nKqJu7S5mXy04o2lCjzIba7k,11782
|
|
26
|
+
cts/corpus/load.py,sha256=PA61299IHPCnaMZetbcQRW6X76fyrStZc2ZmycAWUy0,1275
|
|
27
|
+
cts/corpus/model.py,sha256=TKxvy08ha2Rf9WoK7k8GQ3GgHdmWLslQs1aeZ7arQIk,4056
|
|
28
|
+
cts/corpus/patch.py,sha256=7ko-dF66yc67AqSHSOOHacKlcoR9QPI_fli1eSgjZEo,14629
|
|
29
|
+
cts/corpus/registry.py,sha256=PcER8wQNMEvJz7VzFK7sqrH1-6ZMq3bIHhryXp7N_TM,12934
|
|
30
|
+
cts/corpus/report.py,sha256=AkQwjV4kWncnIG53M0uDIomqD-T2Vf4CwfLfp6XfKck,25264
|
|
31
|
+
cts/corpus/scan.py,sha256=2P3Jkyip9NyDepjbwFdZhtDcVLUppBHcq3HVGQFKemg,2180
|
|
32
|
+
cts/corpus/store.py,sha256=IMA8M4Ubxzi7gAwG5zAAThG3z5PF6HZpUmkmtvEtB9U,1628
|
|
33
|
+
cts/corpus/trends.py,sha256=uE1G3AyqYW-YQfpy7pC0YdXvcVZ-_jkM3IWk4oUPAYU,15167
|
|
34
|
+
cts/corpus/tuning_schema.py,sha256=JBpQvAYTxjbd_mIcjDl0EZ-SLo3Cvj4tjP2myzOmN3E,11424
|
|
35
|
+
cts/corpus/variants.py,sha256=4zLLvPg-B0nsGON0yQquQnkC4xT4pki32MH_8BM0SDs,10978
|
|
36
|
+
cts/semantic/__init__.py,sha256=4emR8Nbtaftkxh1766h7CcDF2d1xq_owsOGPJE-BOhg,1192
|
|
37
|
+
cts/semantic/candidates.py,sha256=rJPvz2_WeGOW6Cxc0AkHyz93PPVOlWG0YRq_3ADLw3w,4669
|
|
38
|
+
cts/semantic/chunker.py,sha256=zzD4oDhruP5NWYdL6OmCLygMAKMiZ7vZ1eJxOxEpWJ8,4916
|
|
39
|
+
cts/semantic/config.py,sha256=lq-7DqCNkD6iGyceLdlQ5nGqveFVaSmUfdHmtISc6Hw,3787
|
|
40
|
+
cts/semantic/embedder.py,sha256=OMMzYNpp1gc0MKGDknEbFFTE4p7pSdvjaYAp2WbjSUU,4244
|
|
41
|
+
cts/semantic/indexer.py,sha256=xC6Ikb4kqNCSby2KWHmnQtfdnTkd9LrzGuINag-oMtY,4851
|
|
42
|
+
cts/semantic/search.py,sha256=x8aNTazqTdb4U_MRgQc3Z44KF1BDqbBoIdtfUPiJeOc,7292
|
|
43
|
+
cts/semantic/store.py,sha256=vUmwNQYO8XUomMFjmDZ_gAPjibMGlsGQJPLvoDf62PY,11447
|
|
44
|
+
claude_toolstack_cli-1.0.0.dist-info/METADATA,sha256=KW3l8EhygkOmLqOxI-P80Se4o2-7bfVQtbllBNSQ3TQ,12982
|
|
45
|
+
claude_toolstack_cli-1.0.0.dist-info/WHEEL,sha256=YCfwYGOYMi5Jhw2fU4yNgwErybb2IX5PEwBKV4ZbdBo,91
|
|
46
|
+
claude_toolstack_cli-1.0.0.dist-info/entry_points.txt,sha256=YxPfSezwExk8iQSvoVlxnvx1t-_ii0qebTLGN5Lproo,37
|
|
47
|
+
claude_toolstack_cli-1.0.0.dist-info/top_level.txt,sha256=6--EY7lQD9tGcXclwS9ak-nTbzpVqTfhpSBBjCudeIk,4
|
|
48
|
+
claude_toolstack_cli-1.0.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 mcp-tool-shop
|
|
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.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
cts
|
cts/__init__.py
ADDED