opencode-arch 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.
- opencode_arch/__init__.py +3 -0
- opencode_arch/artifacts/__init__.py +48 -0
- opencode_arch/artifacts/context.py +451 -0
- opencode_arch/artifacts/diagrams.py +451 -0
- opencode_arch/artifacts/selector.py +331 -0
- opencode_arch/artifacts/templates.py +444 -0
- opencode_arch/cli/__init__.py +1 -0
- opencode_arch/cli/bench.py +25 -0
- opencode_arch/cli/calibrate.py +208 -0
- opencode_arch/cli/confidence.py +66 -0
- opencode_arch/cli/docs.py +333 -0
- opencode_arch/cli/docs_validator.py +295 -0
- opencode_arch/cli/export_data.py +133 -0
- opencode_arch/cli/extract.py +93 -0
- opencode_arch/cli/gap_analyzer.py +107 -0
- opencode_arch/cli/generate.py +68 -0
- opencode_arch/cli/launch.py +264 -0
- opencode_arch/cli/main.py +360 -0
- opencode_arch/cli/metrics.py +186 -0
- opencode_arch/cli/prompts.py +20 -0
- opencode_arch/cli/regen_loop.py +1028 -0
- opencode_arch/context/__init__.py +29 -0
- opencode_arch/context/formatter.py +492 -0
- opencode_arch/context/pipeline_bridge.py +201 -0
- opencode_arch/extract/__init__.py +8 -0
- opencode_arch/extract/constraint_detector.py +398 -0
- opencode_arch/extract/from_artifacts.py +837 -0
- opencode_arch/extract/from_code.py +646 -0
- opencode_arch/extract/route_detector.py +400 -0
- opencode_arch/extract/table_parser.py +177 -0
- opencode_arch/learning/__init__.py +19 -0
- opencode_arch/learning/adapter.py +157 -0
- opencode_arch/learning/assessor.py +170 -0
- opencode_arch/learning/classifier.py +144 -0
- opencode_arch/learning/lessons.py +139 -0
- opencode_arch/learning/maintainer.py +281 -0
- opencode_arch/learning/patterns.py +51 -0
- opencode_arch/mcp/__init__.py +1 -0
- opencode_arch/mcp/__main__.py +8 -0
- opencode_arch/mcp/server.py +183 -0
- opencode_arch/mcp/tools/__init__.py +1 -0
- opencode_arch/mcp/tools/check.py +159 -0
- opencode_arch/mcp/tools/extract.py +107 -0
- opencode_arch/mcp/tools/feedback.py +65 -0
- opencode_arch/mcp/tools/generate.py +104 -0
- opencode_arch/mcp/tools/group.py +62 -0
- opencode_arch/mcp/tools/ingest.py +101 -0
- opencode_arch/mcp/tools/require.py +77 -0
- opencode_arch/mcp/tools/scan.py +53 -0
- opencode_arch/mcp/tools/slice.py +235 -0
- opencode_arch/mcp/tools/validate.py +59 -0
- opencode_arch/prompts/__init__.py +1 -0
- opencode_arch/prompts/regen.py +36 -0
- opencode_arch/runner/__init__.py +5 -0
- opencode_arch/runner/base.py +21 -0
- opencode_arch/runner/opencode.py +66 -0
- opencode_arch/telemetry/__init__.py +6 -0
- opencode_arch/telemetry/collector.py +40 -0
- opencode_arch/telemetry/recorder.py +12 -0
- opencode_arch/telemetry/store.py +537 -0
- opencode_arch-1.0.0.dist-info/METADATA +247 -0
- opencode_arch-1.0.0.dist-info/RECORD +65 -0
- opencode_arch-1.0.0.dist-info/WHEEL +4 -0
- opencode_arch-1.0.0.dist-info/entry_points.txt +2 -0
- opencode_arch-1.0.0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: opencode-arch
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: Architecture-aware development tools — extract, validate, and maintain architectural models with token-efficient AI integration
|
|
5
|
+
Project-URL: Homepage, https://github.com/opn-arch/opencode-arch
|
|
6
|
+
Project-URL: Repository, https://github.com/opn-arch/opencode-arch
|
|
7
|
+
Project-URL: Documentation, https://github.com/opn-arch/opencode-arch#readme
|
|
8
|
+
Project-URL: Bug Tracker, https://github.com/opn-arch/opencode-arch/issues
|
|
9
|
+
Author: Anomaly Contributors
|
|
10
|
+
License-Expression: MIT
|
|
11
|
+
License-File: LICENSE
|
|
12
|
+
Keywords: architecture,ast,code-analysis,llm,mcp,opencode,token-compression
|
|
13
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
19
|
+
Classifier: Topic :: Software Development :: Documentation
|
|
20
|
+
Classifier: Topic :: Software Development :: Quality Assurance
|
|
21
|
+
Requires-Python: >=3.11
|
|
22
|
+
Requires-Dist: architecture-model-standard>=1.0.0
|
|
23
|
+
Requires-Dist: pyyaml>=6.0
|
|
24
|
+
Provides-Extra: dev
|
|
25
|
+
Requires-Dist: pytest-asyncio>=0.21; extra == 'dev'
|
|
26
|
+
Requires-Dist: pytest-cov>=4.0; extra == 'dev'
|
|
27
|
+
Requires-Dist: pytest>=7.0; extra == 'dev'
|
|
28
|
+
Provides-Extra: mcp
|
|
29
|
+
Requires-Dist: mcp>=1.0; extra == 'mcp'
|
|
30
|
+
Description-Content-Type: text/markdown
|
|
31
|
+
|
|
32
|
+
# opencode-arch
|
|
33
|
+
|
|
34
|
+
**Architecture extraction and validation for Python codebases.**
|
|
35
|
+
|
|
36
|
+
Mechanically verify that your architecture model matches your code. Compress entire repositories into ~430 tokens for AI agents. Produce training data for LLM fine-tuning.
|
|
37
|
+
|
|
38
|
+

|
|
39
|
+

|
|
40
|
+

|
|
41
|
+

|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Why
|
|
46
|
+
|
|
47
|
+
| Problem | Solution |
|
|
48
|
+
|---------|----------|
|
|
49
|
+
| Architecture docs drift from code | Mechanical representativeness scoring — know exactly when your model is wrong |
|
|
50
|
+
| AI agents burn tokens reading every file | Token arbitrage — full repo AST compressed to ~430 tokens of dense context |
|
|
51
|
+
| No structured architecture data for training | Produces (code, model, metrics) triples ready for fine-tuning |
|
|
52
|
+
| Manual component boundary decisions | Auto-groups modules by import affinity, name prefix, and subdirectory |
|
|
53
|
+
|
|
54
|
+
## Features
|
|
55
|
+
|
|
56
|
+
- **Representativeness Scoring** — File coverage, relationship accuracy, boundary coherence, behavioral coverage. Four mechanical sub-scores that tell you if your model is accurate.
|
|
57
|
+
- **Token Arbitrage** — Compress a full repository's AST into a dense context string within any token budget. Agents reason about the whole codebase without reading every file.
|
|
58
|
+
- **Living Documentation** — Components, relationships, behaviors, and event chains extracted directly from code and stored as `.architecture-model.yaml`.
|
|
59
|
+
- **Training Data Export** — Structured triples in `.architecture/` for LLM fine-tuning pipelines.
|
|
60
|
+
|
|
61
|
+
## Installation
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
pip install opencode-arch
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
With MCP server support (for AI agent integration):
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
pip install opencode-arch[mcp]
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Requires Python 3.11+.
|
|
74
|
+
|
|
75
|
+
## Quick Start
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
# Launch interactive architecture-aware development
|
|
79
|
+
opencode-arch
|
|
80
|
+
|
|
81
|
+
# Or target a specific repo
|
|
82
|
+
opencode-arch /path/to/your/repo
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
This scans the codebase (<1s), loads/bootstraps the architecture model, injects compressed context into your session, and launches OpenCode with full architecture awareness.
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
# One-shot commands also available:
|
|
89
|
+
opencode-arch extract /path/to/repo # Extract architecture
|
|
90
|
+
opencode-arch export-data # Export training data
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
After extraction, your repo contains:
|
|
94
|
+
|
|
95
|
+
```
|
|
96
|
+
.architecture-model.yaml # Component model (YAML)
|
|
97
|
+
.architecture/
|
|
98
|
+
├── manifest.json # Full AST scan (modules, functions, imports)
|
|
99
|
+
└── metrics.json # Representativeness scores + telemetry
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## CLI
|
|
103
|
+
|
|
104
|
+
| Command | Purpose |
|
|
105
|
+
|---------|---------|
|
|
106
|
+
| `opencode-arch` | **Launch interactive session** (default — scans, injects context, opens OpenCode) |
|
|
107
|
+
| `opencode-arch extract <repo>` | Extract architecture model from a repository |
|
|
108
|
+
| `opencode-arch generate <repo>` | Generate code with test-guided verification |
|
|
109
|
+
| `opencode-arch bench <repo1> <repo2> ...` | Benchmark extraction across multiple repos |
|
|
110
|
+
| `opencode-arch metrics` | View extraction history and scores |
|
|
111
|
+
| `opencode-arch export-data` | Export training corpus (JSONL) |
|
|
112
|
+
|
|
113
|
+
Options for `extract`:
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
opencode-arch extract /path/to/repo \
|
|
117
|
+
--budget=4000 \ # Token budget for context compression
|
|
118
|
+
--focus=all \ # Focus: "all", F-block ID, layer name
|
|
119
|
+
--target-score=80 # Minimum validation score to accept
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## MCP Integration
|
|
123
|
+
|
|
124
|
+
Register as an MCP server for use with AI coding agents:
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
opencode mcp add
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### 9 Tools
|
|
131
|
+
|
|
132
|
+
| Tool | Purpose |
|
|
133
|
+
|------|---------|
|
|
134
|
+
| `architect_scan` | AST scanning — returns modules, functions, classes, imports |
|
|
135
|
+
| `architect_slice` | Token-compressed context (the core innovation) |
|
|
136
|
+
| `architect_validate` | Structural validation, returns score 0–100 |
|
|
137
|
+
| `architect_extract` | Store validated model + record telemetry |
|
|
138
|
+
| `architect_generate` | Run test suite against generated code |
|
|
139
|
+
| `architect_group` | Auto-group modules into logical components |
|
|
140
|
+
| `architect_check` | Verify representativeness (4 sub-scores) |
|
|
141
|
+
| `architect_require` | Capture functional requirements from conversation |
|
|
142
|
+
| `architect_feedback` | Record corrections, ratings, and training data |
|
|
143
|
+
|
|
144
|
+
### Typical Agent Workflow
|
|
145
|
+
|
|
146
|
+
```
|
|
147
|
+
scan → slice → (agent produces YAML) → validate → check → extract
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
The agent calls `scan` to understand the repo, `slice` to get compressed context, produces an architecture model, then `validate` + `check` gate quality before `extract` persists it.
|
|
151
|
+
|
|
152
|
+
## How It Works
|
|
153
|
+
|
|
154
|
+
```
|
|
155
|
+
┌─────────────────────────────────────────────────┐
|
|
156
|
+
│ AI Agent (frontier model) │
|
|
157
|
+
│ Receives ~430 tokens of compressed context │
|
|
158
|
+
│ Produces architecture YAML │
|
|
159
|
+
└────────────────────┬────────────────────────────┘
|
|
160
|
+
│ MCP Protocol
|
|
161
|
+
┌────────────────────▼────────────────────────────┐
|
|
162
|
+
│ opencode-arch (FastMCP server) │
|
|
163
|
+
│ scan → slice → validate → check → extract │
|
|
164
|
+
└────────────────────┬────────────────────────────┘
|
|
165
|
+
│
|
|
166
|
+
┌────────────────────▼────────────────────────────┐
|
|
167
|
+
│ architecture-model-standard (library) │
|
|
168
|
+
│ AST scanning │ YAML parsing │ Validation │
|
|
169
|
+
│ Context formatting │ Model slicing │
|
|
170
|
+
└─────────────────────────────────────────────────┘
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
**Key design decision:** The agent IS the oracle. Tools never call external models — they provide compressed context to the frontier model already in the conversation.
|
|
174
|
+
|
|
175
|
+
## Benchmarks
|
|
176
|
+
|
|
177
|
+
Achieved automatically with no human tuning:
|
|
178
|
+
|
|
179
|
+
| Repository | Modules | Components | Overall Score |
|
|
180
|
+
|------------|---------|------------|---------------|
|
|
181
|
+
| FastAPI | 25 | 9 | 98.1% |
|
|
182
|
+
| Pydantic | 69 | 40 | 98.0% |
|
|
183
|
+
| httpx | 23 | 10 | 96.0% |
|
|
184
|
+
| Requests | 19 | 9 | 94.2% |
|
|
185
|
+
| Flask | 6 | 6 | 100.0% |
|
|
186
|
+
| Celery | 161 | 23 | 84.0% |
|
|
187
|
+
|
|
188
|
+
Scores are composite representativeness: file coverage × relationship accuracy × boundary coherence × behavioral coverage.
|
|
189
|
+
|
|
190
|
+
## Training Data
|
|
191
|
+
|
|
192
|
+
Each extraction produces a structured triple:
|
|
193
|
+
|
|
194
|
+
```
|
|
195
|
+
(.architecture-model.yaml, manifest.json, metrics.json)
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
This enables:
|
|
199
|
+
- Fine-tuning models on architecture extraction tasks
|
|
200
|
+
- Evaluating model quality with mechanical ground truth
|
|
201
|
+
- Building datasets across many repositories with `bench`
|
|
202
|
+
|
|
203
|
+
Export with:
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
opencode-arch export-data --format=jsonl
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
## Architecture Model Schema
|
|
210
|
+
|
|
211
|
+
```yaml
|
|
212
|
+
meta:
|
|
213
|
+
project: my-project
|
|
214
|
+
schema_version: '1.3'
|
|
215
|
+
entities:
|
|
216
|
+
components:
|
|
217
|
+
- id: COMP-1
|
|
218
|
+
name: APILayer
|
|
219
|
+
status: ACTIVE
|
|
220
|
+
capabilities:
|
|
221
|
+
- id: CAP-F1
|
|
222
|
+
name: RequestHandling
|
|
223
|
+
status: ACTIVE
|
|
224
|
+
relationships:
|
|
225
|
+
- from: COMP-1
|
|
226
|
+
to: CAP-F1
|
|
227
|
+
type: realizes
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
Relationship types: `realizes`, `uses`, `constrains`, `contains`, `triggers`, `depends_on`, `implements`, `exposes`.
|
|
231
|
+
|
|
232
|
+
## Development
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
git clone https://github.com/anomalyco/opencode-arch
|
|
236
|
+
cd opencode-arch
|
|
237
|
+
pip install -e ".[dev]"
|
|
238
|
+
pytest tests/ -v # 278 tests, ~20s
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
## Contributing
|
|
242
|
+
|
|
243
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
|
|
244
|
+
|
|
245
|
+
## License
|
|
246
|
+
|
|
247
|
+
MIT
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
opencode_arch/__init__.py,sha256=rwL_T7LJN36rru7FDlZ5KhoKoMLrVPKbxk5yi4apas8,110
|
|
2
|
+
opencode_arch/artifacts/__init__.py,sha256=137hqiGyGgGPbe58U-PI_ttvkeBc4ro01NT2zDL2tE0,1443
|
|
3
|
+
opencode_arch/artifacts/context.py,sha256=NI69ZrvW2NWaAx_UU8faXb-ePgpSdT5ET4jLltZqBsQ,16517
|
|
4
|
+
opencode_arch/artifacts/diagrams.py,sha256=rdrDfrPpFrHQcsJf3JjhduuP26UTLMnRi2PqdT3KZCY,15973
|
|
5
|
+
opencode_arch/artifacts/selector.py,sha256=n40_n8_XrATI1RIBtrDYwEyWBqbdZ7xdcP76tVvDfWo,10246
|
|
6
|
+
opencode_arch/artifacts/templates.py,sha256=wEFuB3LhtLS4Jb6E3ZmogArzQ97sNeaXIzCP_LyyQLo,16462
|
|
7
|
+
opencode_arch/cli/__init__.py,sha256=CX2aEL7PXFBgMlUZ_7_3ij6C9PqhUxHT9-U0D4IGww8,29
|
|
8
|
+
opencode_arch/cli/bench.py,sha256=DUJ3-Ahopeppd6AsNE--neQFK64gbXwhKTh9KITbTHg,714
|
|
9
|
+
opencode_arch/cli/calibrate.py,sha256=-mGFKduDmUptmsBcx115vkfjKk96hpMDK9ctAZzHI_c,7848
|
|
10
|
+
opencode_arch/cli/confidence.py,sha256=wtPypVPtA1At184VxmJNMPj7qMzKGxLPL6G6iVGAtZI,2482
|
|
11
|
+
opencode_arch/cli/docs.py,sha256=gfUEpBY2JSaZBzc0Ef78oLpUb2p7d3R8FaThoH46qo4,10822
|
|
12
|
+
opencode_arch/cli/docs_validator.py,sha256=A_jrAdcEDUu2DUCfUkYp6Mwb-Lt4RpDmqULPrJQk0k0,10157
|
|
13
|
+
opencode_arch/cli/export_data.py,sha256=sVV50K0pKMzGFW8o4z_f2TnIpRncyPekXLXMqCcO6vY,4872
|
|
14
|
+
opencode_arch/cli/extract.py,sha256=6OKHUY5JM41oQbYbqJi89HrNKC_5xFy6SC2HSpSBjSY,2620
|
|
15
|
+
opencode_arch/cli/gap_analyzer.py,sha256=JQvvwDATJd4qgUILVXL3gUTvwDX_ULAC2A-IiWAzrww,4204
|
|
16
|
+
opencode_arch/cli/generate.py,sha256=cn5P-4ZWwiGDJoYdSjXgm6BHt14r24NJxnknsJdLXe8,2292
|
|
17
|
+
opencode_arch/cli/launch.py,sha256=7zQ-EVMTh3CRNZ0vUigqaUFnpQ7oy8wUMLcT0icipZ4,10019
|
|
18
|
+
opencode_arch/cli/main.py,sha256=xjcnptqaiMj9bj_nhvMb-LKf4wdie4HwQ8U-lsrxtA4,17168
|
|
19
|
+
opencode_arch/cli/metrics.py,sha256=5T_5sgCt-lk-ROGNxWUDLbNbEQCe1YhsiIUKzcGGd9A,6861
|
|
20
|
+
opencode_arch/cli/prompts.py,sha256=qzmuiaTjTdcAd-i3n6lcIbipCH0DGaB-FHPJMEIobQ8,672
|
|
21
|
+
opencode_arch/cli/regen_loop.py,sha256=ldxE8h055MChRv4wkEeBHPEf2M9GdaVkxYMUTdJZD3g,38060
|
|
22
|
+
opencode_arch/context/__init__.py,sha256=tXOcYETE5tcVFoj9m0MuagjzK60iksfXfHxQPG0f6z0,655
|
|
23
|
+
opencode_arch/context/formatter.py,sha256=yjlH4uLE7c7hMlhSPDNIMyJWcLrOdUBkgBcmv4b-6Io,17951
|
|
24
|
+
opencode_arch/context/pipeline_bridge.py,sha256=3RnJlRXHQTr-pp01RhtZ9DEoSqJhW5yEjSvGyfS75fs,6742
|
|
25
|
+
opencode_arch/extract/__init__.py,sha256=dLtkUn6fPcqxGBX9H660j7Bne8hcdt4xcDgxTPRAqBQ,226
|
|
26
|
+
opencode_arch/extract/constraint_detector.py,sha256=TJLGg1YhDCg140qnyrb3kYyYUYg_3aTaLBpuYMRgP8Y,12477
|
|
27
|
+
opencode_arch/extract/from_artifacts.py,sha256=E122lUj8aOC88TvTpvosnrAp8dLU-M1lNLfScvxpa54,27888
|
|
28
|
+
opencode_arch/extract/from_code.py,sha256=8Ch2POLeh85_w-HdBXYI8Dx5CAAhV_t0nwsw499CwzI,22027
|
|
29
|
+
opencode_arch/extract/route_detector.py,sha256=zobq8Q22-mj10o0MnxT3pkHs_D_c-C8SUZZCeJQWBi0,13454
|
|
30
|
+
opencode_arch/extract/table_parser.py,sha256=h8k4l2h0EnwrAghgCD5cHPxEV1koOT4WRnj5sawZcLo,5932
|
|
31
|
+
opencode_arch/learning/__init__.py,sha256=73VgSlFoKGjmWLlbORZ6eSsU85GsU4avUa0AaHG0jRE,688
|
|
32
|
+
opencode_arch/learning/adapter.py,sha256=kV-R8odtC20B0TPUtuqCRPpo4jUUx4EkLztMPvvf_RQ,6397
|
|
33
|
+
opencode_arch/learning/assessor.py,sha256=9WSF5k1hLiv4GJJ1jVEaCnLOabS1szBsNuDAyImrJ4M,5765
|
|
34
|
+
opencode_arch/learning/classifier.py,sha256=b3YZi_svO6_gQWGw7IsOqgmBtuWa-TcV02wcf2CMpIM,5795
|
|
35
|
+
opencode_arch/learning/lessons.py,sha256=xabq9MuvI03W5qVE-2h-LIWnCEMH7Vn70Kr-YIBXPgA,5335
|
|
36
|
+
opencode_arch/learning/maintainer.py,sha256=SYQjsv2cwfCoG-vNEeorIFiysblXnbu2QeaUoEgcn44,10402
|
|
37
|
+
opencode_arch/learning/patterns.py,sha256=lxE5Zyx99lSjXBxzaE8OSPWq9-dOBGzc45DN9WGrXQY,2480
|
|
38
|
+
opencode_arch/mcp/__init__.py,sha256=uVqMFWDM_XgiNGNpKVuwGV5DuWxBIRq68n_Mpk7bbm4,41
|
|
39
|
+
opencode_arch/mcp/__main__.py,sha256=kXtbEmog7XsEiNHTlFK9BSTHwL1n0d1Ge6i8gkLa_NE,252
|
|
40
|
+
opencode_arch/mcp/server.py,sha256=3z59-qZGVaZTxHZpEmHoxV4p30py6mmBTx2W-SEYV64,7369
|
|
41
|
+
opencode_arch/mcp/tools/__init__.py,sha256=fg4O3SwAivyWG4uxkVbD3mv89bnC9JXzmbiu_CFx18w,32
|
|
42
|
+
opencode_arch/mcp/tools/check.py,sha256=ECqVRThM1bjNXmMik0pRUM0Q-7iLMGz9IpX9oGcUsQk,6127
|
|
43
|
+
opencode_arch/mcp/tools/extract.py,sha256=-o5o6NQVXa3cwjX_-erxMUIgP3zXDUofaKNZVEmk6Mw,3673
|
|
44
|
+
opencode_arch/mcp/tools/feedback.py,sha256=9Z4n6IBHc2FZmxeUkhPQviN91potJytj8ZOQeqCqgqk,1969
|
|
45
|
+
opencode_arch/mcp/tools/generate.py,sha256=78l8a8UAtiAuzSg15IkLSom41WF5NeiepFTQ-7JL-M4,3373
|
|
46
|
+
opencode_arch/mcp/tools/group.py,sha256=8cxjD-vOB3m5zNp-vh4_iqUAgLF20PZtmYshS9V18-o,2102
|
|
47
|
+
opencode_arch/mcp/tools/ingest.py,sha256=t7rtri4v8la_ZsI2qZv4Z3BUf--Qebe5_SbVyQPJqDg,3554
|
|
48
|
+
opencode_arch/mcp/tools/require.py,sha256=s5FHe3sj5coVExbI4Ae_3lAbx_1XExozset-rWvjtGg,2163
|
|
49
|
+
opencode_arch/mcp/tools/scan.py,sha256=KQ9XI5s9gMqzExX5TcJMAqHwLFLXlbzhVjO6f7M4_OU,1794
|
|
50
|
+
opencode_arch/mcp/tools/slice.py,sha256=ai-hjJgnDSJQOz4kpMkNyZZ913onYTL5JhCPU75bQ70,9533
|
|
51
|
+
opencode_arch/mcp/tools/validate.py,sha256=mFYofkkXSrVo-o1M3DF2-OLFUtF3W2ybnIHn6Xi1O4I,1777
|
|
52
|
+
opencode_arch/prompts/__init__.py,sha256=4ZGaFaRVSvlngdrTzOVhZJyCok5nJ4PGj_frzWE4HOI,61
|
|
53
|
+
opencode_arch/prompts/regen.py,sha256=HRkNvLLwZ8h0CAvoKqSuS9uoWJeSOztBcgOgoOhdFK0,739
|
|
54
|
+
opencode_arch/runner/__init__.py,sha256=Nk9Y6VQftEfZwQ3draL-juC6wwHZvCOWhHDTIYZUBtQ,224
|
|
55
|
+
opencode_arch/runner/base.py,sha256=Vj7GY0j8x2XtedRWzcvePExkOpMOSQ50K6VXZ6JrT-A,479
|
|
56
|
+
opencode_arch/runner/opencode.py,sha256=6Uh5CMVUwZ4N_yiY8ZnJFXInJkpdy4fbdDhIBVSN_fU,2119
|
|
57
|
+
opencode_arch/telemetry/__init__.py,sha256=Skg6l-Vv01pldSlAs-vW34-UCeFUIGm8_W-5Zrhvsu0,239
|
|
58
|
+
opencode_arch/telemetry/collector.py,sha256=3168ChrW3_utUWq8l68XodENE90LuuiPOe4yqawmbyE,1372
|
|
59
|
+
opencode_arch/telemetry/recorder.py,sha256=HaqHbJOkIHDDhaeJhQAsWL7sheku2fuOIKTrIV63jdk,575
|
|
60
|
+
opencode_arch/telemetry/store.py,sha256=BTIHqSx01oXXQOJ8GCsuhiE-sA-B_ec8pzR0jwoxIXE,21432
|
|
61
|
+
opencode_arch-1.0.0.dist-info/METADATA,sha256=x5jH-2uQyG43dFaiK_NonR-5oGPepHfPPZdhh8KRuDA,9141
|
|
62
|
+
opencode_arch-1.0.0.dist-info/WHEEL,sha256=lCkmxWfQsSc9CfIClYeavTdQeEX2toPqufh9gI35EQA,87
|
|
63
|
+
opencode_arch-1.0.0.dist-info/entry_points.txt,sha256=x0z-EUD-pg4-UH0x8Ww_P-KIbJXHSaRvdlm15MYPRWU,62
|
|
64
|
+
opencode_arch-1.0.0.dist-info/licenses/LICENSE,sha256=ors_Qa2YCQ2Sc_Xlv0un1pw8FkxWv8nI61oO2CJorXQ,1077
|
|
65
|
+
opencode_arch-1.0.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Anomaly Contributors
|
|
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.
|