epi-recorder 2.1.1__py3-none-any.whl → 2.1.2__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.
- epi_core/__init__.py +1 -1
- epi_core/container.py +10 -2
- epi_core/schemas.py +6 -1
- epi_core/serialize.py +38 -9
- epi_core/trust.py +10 -0
- epi_recorder/__init__.py +1 -1
- epi_recorder-2.1.2.dist-info/METADATA +574 -0
- {epi_recorder-2.1.1.dist-info → epi_recorder-2.1.2.dist-info}/RECORD +14 -13
- epi_viewer_static/app.js +54 -20
- epi_viewer_static/crypto.js +517 -0
- epi_recorder-2.1.1.dist-info/METADATA +0 -159
- {epi_recorder-2.1.1.dist-info → epi_recorder-2.1.2.dist-info}/WHEEL +0 -0
- {epi_recorder-2.1.1.dist-info → epi_recorder-2.1.2.dist-info}/entry_points.txt +0 -0
- {epi_recorder-2.1.1.dist-info → epi_recorder-2.1.2.dist-info}/licenses/LICENSE +0 -0
- {epi_recorder-2.1.1.dist-info → epi_recorder-2.1.2.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,574 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: epi-recorder
|
|
3
|
+
Version: 2.1.2
|
|
4
|
+
Summary: Evidence Packaged Infrastructure (.epi) for AI Evidence - Record, Verify, and Replay AI runs with automatic PATH setup
|
|
5
|
+
Author-email: Mohd Ibrahim Afridi <epitechforworld@outlook.com>
|
|
6
|
+
Maintainer-email: Mohd Ibrahim Afridi <epitechforworld@outlook.com>
|
|
7
|
+
License: Apache-2.0
|
|
8
|
+
Project-URL: Homepage, https://github.com/mohdibrahimaiml/EPI-V2.1.2
|
|
9
|
+
Project-URL: Documentation, https://github.com/mohdibrahimaiml/EPI-V2.1.2#readme
|
|
10
|
+
Project-URL: Repository, https://github.com/mohdibrahimaiml/EPI-V2.1.2
|
|
11
|
+
Project-URL: Issues, https://github.com/mohdibrahimaiml/EPI-V2.1.2/issues
|
|
12
|
+
Keywords: ai,reproducibility,verification,llm,evidence,openai,cryptography,workflow,audit
|
|
13
|
+
Classifier: Development Status :: 4 - Beta
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: Intended Audience :: Science/Research
|
|
16
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
17
|
+
Classifier: Operating System :: OS Independent
|
|
18
|
+
Classifier: Programming Language :: Python :: 3
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
22
|
+
Classifier: Topic :: Security :: Cryptography
|
|
23
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
24
|
+
Requires-Python: >=3.11
|
|
25
|
+
Description-Content-Type: text/markdown
|
|
26
|
+
License-File: LICENSE
|
|
27
|
+
Requires-Dist: pydantic>=2.0.0
|
|
28
|
+
Requires-Dist: cryptography>=41.0.0
|
|
29
|
+
Requires-Dist: cbor2>=5.6.0
|
|
30
|
+
Requires-Dist: typer[all]>=0.12.0
|
|
31
|
+
Requires-Dist: rich>=13.0.0
|
|
32
|
+
Provides-Extra: dev
|
|
33
|
+
Requires-Dist: pytest>=8.0.0; extra == "dev"
|
|
34
|
+
Requires-Dist: pytest-asyncio>=0.23.0; extra == "dev"
|
|
35
|
+
Requires-Dist: pytest-cov>=4.1.0; extra == "dev"
|
|
36
|
+
Requires-Dist: black>=24.0.0; extra == "dev"
|
|
37
|
+
Requires-Dist: ruff>=0.3.0; extra == "dev"
|
|
38
|
+
Dynamic: license-file
|
|
39
|
+
|
|
40
|
+
<div align="center">
|
|
41
|
+
|
|
42
|
+
<img src="https://i.postimg.cc/DzKrGyrm/logo.png" alt="EPI Logo" width="120"/>
|
|
43
|
+
|
|
44
|
+
# EPI Recorder
|
|
45
|
+
|
|
46
|
+
### The PDF for AI Evidence™
|
|
47
|
+
|
|
48
|
+
**Record. Verify. Trust.**
|
|
49
|
+
|
|
50
|
+
[](https://pypi.org/project/epi-recorder/)
|
|
51
|
+
[](https://www.python.org)
|
|
52
|
+
[](LICENSE)
|
|
53
|
+
[](https://github.com/mohdibrahimaiml/EPI-V2.0.0)
|
|
54
|
+
[](https://pypi.org/project/epi-recorder/)
|
|
55
|
+
[](https://github.com/mohdibrahimaiml/EPI-V2.0.0)
|
|
56
|
+
|
|
57
|
+
[**🚀 Quick Start**](#-quick-start-30-seconds) • [**📖 Docs**](https://epilabs.org/docs) • [**💬 Community**](https://github.com/mohdibrahimaiml/EPI-V2.0.0/discussions) • [**🎥 Demo**](https://colab.research.google.com/github/mohdibrahimaiml/EPI-V2.1.2/blob/main/colab_demo.ipynb)
|
|
58
|
+
|
|
59
|
+
</div>
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
> [!NOTE]
|
|
64
|
+
> **What is EPI?** A `.epi` file is the **"PDF for AI Evidence"**—cryptographically signed, tamper-proof records of what your AI did. One command. Complete proof. Forever.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## ⚡ Quick Start (30 Seconds)
|
|
69
|
+
|
|
70
|
+
### Installation
|
|
71
|
+
|
|
72
|
+
**One command. Works everywhere. 99% success rate.**
|
|
73
|
+
|
|
74
|
+
**Unix/Mac:**
|
|
75
|
+
```bash
|
|
76
|
+
curl -sSL https://raw.githubusercontent.com/mohdibrahimaiml/EPI-V2.1.2/main/scripts/install.sh | sh
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
**Windows:**
|
|
80
|
+
```powershell
|
|
81
|
+
iwr https://raw.githubusercontent.com/mohdibrahimaiml/EPI-V2.1.2/main/scripts/install.ps1 -useb | iex
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
**Manual (pip):**
|
|
85
|
+
```bash
|
|
86
|
+
pip install epi-recorder
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
> [!TIP]
|
|
90
|
+
> If you see `epi: command not found`, use `python -m epi_cli` instead (always works!)
|
|
91
|
+
|
|
92
|
+
### Your First Recording
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
# 1. Create a simple script
|
|
96
|
+
echo 'print("Hello, EPI!")' > hello.py
|
|
97
|
+
|
|
98
|
+
# 2. Record it
|
|
99
|
+
epi run hello.py
|
|
100
|
+
|
|
101
|
+
# 3. View the cryptographically signed evidence
|
|
102
|
+
# (Opens in browser automatically)
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
**That's it!** You just created verifiable AI evidence. 🎉
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## 💡 What is EPI?
|
|
110
|
+
|
|
111
|
+
**EPI creates cryptographically signed "receipts" for AI workflows.**
|
|
112
|
+
|
|
113
|
+
Just like PDF standardized documents, **EPI standardizes AI execution evidence**.
|
|
114
|
+
|
|
115
|
+
### Without EPI ❌
|
|
116
|
+
|
|
117
|
+
```python
|
|
118
|
+
# Traditional logging
|
|
119
|
+
logger.info("AI decided: APPROVE loan $50K")
|
|
120
|
+
# ⚠️ Can be edited
|
|
121
|
+
# ⚠️ No proof
|
|
122
|
+
# ⚠️ No audit trail
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### With EPI ✅
|
|
126
|
+
|
|
127
|
+
```python
|
|
128
|
+
epi run loan_agent.py
|
|
129
|
+
# Creates: loan_agent_2024_12_16.epi
|
|
130
|
+
|
|
131
|
+
# ✓ Cryptographically signed
|
|
132
|
+
# ✓ Complete execution snapshot
|
|
133
|
+
# ✓ Tamper-proof evidence
|
|
134
|
+
# ✓ Regulator-ready
|
|
135
|
+
# ✓ Interactive viewer
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
**Result:** One `.epi` file that proves exactly what happened—**mathematically verifiable**.
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## 🎯 Why EPI?
|
|
143
|
+
|
|
144
|
+
> [!IMPORTANT]
|
|
145
|
+
> **The Problem:** AI agents make critical decisions (trading, diagnostics, contracts). You need **cryptographic proof**, not just logs that can be edited.
|
|
146
|
+
|
|
147
|
+
### Traditional Approach ❌
|
|
148
|
+
|
|
149
|
+
```
|
|
150
|
+
[2024-12-16 14:30:22] INFO: Processing transaction
|
|
151
|
+
[2024-12-16 14:30:23] INFO: Decision: APPROVE
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
**Problems:**
|
|
155
|
+
- ❌ Logs can be edited after the fact
|
|
156
|
+
- ❌ No cryptographic verification
|
|
157
|
+
- ❌ Missing execution context
|
|
158
|
+
- ❌ Can't reproduce
|
|
159
|
+
- ❌ Regulators won't accept it
|
|
160
|
+
|
|
161
|
+
### EPI Approach ✅
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
epi run trading_bot.py
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
**Creates immutable package with:**
|
|
168
|
+
|
|
169
|
+
| Component | Details | Purpose |
|
|
170
|
+
|-----------|---------|---------|
|
|
171
|
+
| **Code snapshot** | Exact source that executed | Reproducibility |
|
|
172
|
+
| **API calls** | Every request/response | Auditability |
|
|
173
|
+
| **File I/O** | All reads/writes captured | Data lineage |
|
|
174
|
+
| **Environment** | Python version, OS, dependencies | Context |
|
|
175
|
+
| **Signatures** | Ed25519 cryptographic proof | Integrity |
|
|
176
|
+
| **Timeline** | Interactive browser viewer | Understanding |
|
|
177
|
+
|
|
178
|
+
> [!NOTE]
|
|
179
|
+
> **If it's in the .epi file, it happened. If it's not, it didn't.** Period.
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## 🔍 How EPI Compares
|
|
184
|
+
|
|
185
|
+
### vs Traditional Tools
|
|
186
|
+
|
|
187
|
+
| Feature | Logs | Screenshots | Video | **EPI** |
|
|
188
|
+
|---------|------|-------------|-------|---------|
|
|
189
|
+
| **Tamper-proof** | ❌ | ❌ | ❌ | ✅ |
|
|
190
|
+
| **Cryptographic proof** | ❌ | ❌ | ❌ | ✅ |
|
|
191
|
+
| **Captures code** | ⚠️ Partial | ❌ | ❌ | ✅ |
|
|
192
|
+
| **Interactive viewer** | Custom | Manual | Manual | **Built-in** |
|
|
193
|
+
| **Reproducible** | ❌ | ❌ | ❌ | ✅ |
|
|
194
|
+
| **Regulatory compliant** | ⚠️ | ❌ | ❌ | ✅ |
|
|
195
|
+
| **File size** | Large | Medium | Very large | **Small** |
|
|
196
|
+
|
|
197
|
+
### vs PDF
|
|
198
|
+
|
|
199
|
+
| Aspect | PDF | EPI |
|
|
200
|
+
|--------|-----|-----|
|
|
201
|
+
| **Purpose** | Document consistency | **Execution integrity** |
|
|
202
|
+
| **Trust** | "Looks right" | **"Mathematically proven"** |
|
|
203
|
+
| **Security** | ⚠️ Can run JavaScript | ✅ **Static HTML (safe)** |
|
|
204
|
+
| **Use case** | Reports, contracts | **AI workflows, executions** |
|
|
205
|
+
| **Standard** | ISO 32000 | **Emerging** |
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## 🎨 Real-World Examples
|
|
210
|
+
|
|
211
|
+
### Example 1: Financial Trading Agent
|
|
212
|
+
|
|
213
|
+
```python
|
|
214
|
+
# trading_bot.py
|
|
215
|
+
import openai
|
|
216
|
+
|
|
217
|
+
def analyze_stock(symbol):
|
|
218
|
+
# AI analyzes market
|
|
219
|
+
response = openai.ChatCompletion.create(
|
|
220
|
+
model="gpt-4",
|
|
221
|
+
messages=[{"role": "user", "content": f"Analyze {symbol}"}]
|
|
222
|
+
)
|
|
223
|
+
|
|
224
|
+
decision = response.choices[0].message.content
|
|
225
|
+
execute_trade(symbol, decision)
|
|
226
|
+
return decision
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
**Record it:**
|
|
230
|
+
```bash
|
|
231
|
+
epi run trading_bot.py
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
**You get:**
|
|
235
|
+
- ✅ Proof of AI decision logic
|
|
236
|
+
- ✅ Complete API call history (keys redacted)
|
|
237
|
+
- ✅ Execution timestamp
|
|
238
|
+
- ✅ Regulatory-compliant audit trail
|
|
239
|
+
- ✅ Shareable evidence package
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
### Example 2: Healthcare Diagnostic Agent
|
|
244
|
+
|
|
245
|
+
```python
|
|
246
|
+
# diagnostic_agent.py
|
|
247
|
+
def diagnose_patient(patient_data):
|
|
248
|
+
# AI analysis
|
|
249
|
+
diagnosis = ai_model.predict(patient_data)
|
|
250
|
+
|
|
251
|
+
# Generate FDA-compliant report
|
|
252
|
+
report = create_medical_report(diagnosis)
|
|
253
|
+
|
|
254
|
+
return diagnosis, report
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
**Record for FDA submission:**
|
|
258
|
+
```bash
|
|
259
|
+
epi run diagnostic_agent.py
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
**Evidence includes:**
|
|
263
|
+
- ✅ Model version used
|
|
264
|
+
- ✅ Input data processing (HIPAA-compliant)
|
|
265
|
+
- ✅ Decision logic captured
|
|
266
|
+
- ✅ Cryptographic proof for regulators
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
### Example 3: Python API
|
|
271
|
+
|
|
272
|
+
**Zero-config decorator:**
|
|
273
|
+
|
|
274
|
+
```python
|
|
275
|
+
from epi_recorder import record
|
|
276
|
+
|
|
277
|
+
@record(out="workflow.epi")
|
|
278
|
+
def my_ai_workflow():
|
|
279
|
+
result = llm.generate_response(prompt)
|
|
280
|
+
save_to_database(result)
|
|
281
|
+
return result
|
|
282
|
+
|
|
283
|
+
# Automatically creates workflow.epi
|
|
284
|
+
my_ai_workflow()
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
**Context manager:**
|
|
288
|
+
|
|
289
|
+
```python
|
|
290
|
+
from epi_recorder import record
|
|
291
|
+
|
|
292
|
+
with record("analysis.epi"):
|
|
293
|
+
# Everything here is captured
|
|
294
|
+
data = fetch_data()
|
|
295
|
+
insights = analyze_with_ai(data)
|
|
296
|
+
send_report(insights)
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
---
|
|
300
|
+
|
|
301
|
+
## 🎮 Commands Reference
|
|
302
|
+
|
|
303
|
+
### Core Commands
|
|
304
|
+
|
|
305
|
+
```bash
|
|
306
|
+
# Interactive setup (first time)
|
|
307
|
+
epi init
|
|
308
|
+
|
|
309
|
+
# Record any script
|
|
310
|
+
epi run script.py
|
|
311
|
+
|
|
312
|
+
# View evidence package
|
|
313
|
+
epi view recording.epi
|
|
314
|
+
|
|
315
|
+
# Verify cryptographic integrity
|
|
316
|
+
epi verify recording.epi
|
|
317
|
+
|
|
318
|
+
# List all recordings
|
|
319
|
+
epi ls
|
|
320
|
+
|
|
321
|
+
# Self-healing diagnostics
|
|
322
|
+
epi doctor
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
### Advanced
|
|
326
|
+
|
|
327
|
+
```bash
|
|
328
|
+
# Custom output name
|
|
329
|
+
epi record --out experiment.epi -- python train.py
|
|
330
|
+
|
|
331
|
+
# Record any command (not just Python)
|
|
332
|
+
epi record --out build.epi -- npm run build
|
|
333
|
+
|
|
334
|
+
# Manage cryptographic keys
|
|
335
|
+
epi keys generate --name production
|
|
336
|
+
epi keys list
|
|
337
|
+
epi keys export --name production
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
> [!TIP]
|
|
341
|
+
> **All commands also work as:** `python -m epi_cli <command>` (100% reliable, bypasses PATH)
|
|
342
|
+
|
|
343
|
+
---
|
|
344
|
+
|
|
345
|
+
## 🔒 Security & Privacy
|
|
346
|
+
|
|
347
|
+
### Automatic Redaction
|
|
348
|
+
|
|
349
|
+
**Sensitive data is automatically masked:**
|
|
350
|
+
|
|
351
|
+
```python
|
|
352
|
+
# Your code
|
|
353
|
+
openai.api_key = "sk-abc123xyz"
|
|
354
|
+
db_password = "secret123"
|
|
355
|
+
|
|
356
|
+
# In .epi file (automatic)
|
|
357
|
+
openai.api_key = "sk-***REDACTED***"
|
|
358
|
+
db_password = "***REDACTED***"
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
**Protected:**
|
|
362
|
+
- ✅ API keys (OpenAI, Anthropic, AWS, etc.)
|
|
363
|
+
- ✅ Passwords and tokens
|
|
364
|
+
- ✅ Environment variables with secrets
|
|
365
|
+
- ✅ Database credentials
|
|
366
|
+
|
|
367
|
+
### Cryptographic Integrity
|
|
368
|
+
|
|
369
|
+
**Every .epi file:**
|
|
370
|
+
- 🔐 Signed with Ed25519 (same as Signal, SSH)
|
|
371
|
+
- ✅ Tamper-proof (any modification breaks signature)
|
|
372
|
+
- 🔍 Publicly verifiable (anyone can check)
|
|
373
|
+
- 🔑 Private key stays on your machine
|
|
374
|
+
|
|
375
|
+
### Offline Viewing
|
|
376
|
+
|
|
377
|
+
**The viewer is 100% safe:**
|
|
378
|
+
- ✅ Static HTML (no server needed)
|
|
379
|
+
- ✅ No external requests
|
|
380
|
+
- ✅ No analytics or tracking
|
|
381
|
+
- ✅ Works in air-gapped environments
|
|
382
|
+
- ✅ Safe to share with auditors
|
|
383
|
+
|
|
384
|
+
---
|
|
385
|
+
|
|
386
|
+
## 🏢 Use Cases
|
|
387
|
+
|
|
388
|
+
<table>
|
|
389
|
+
<tr>
|
|
390
|
+
<td width="50%">
|
|
391
|
+
|
|
392
|
+
### 💼 Financial Services
|
|
393
|
+
- Regulatory compliance (MiFID II, Dodd-Frank)
|
|
394
|
+
- Trading algorithm audit trails
|
|
395
|
+
- AI-driven loan decisions
|
|
396
|
+
- Risk assessment transparency
|
|
397
|
+
|
|
398
|
+
</td>
|
|
399
|
+
<td width="50%">
|
|
400
|
+
|
|
401
|
+
### 🏥 Healthcare
|
|
402
|
+
- FDA AI/ML submissions
|
|
403
|
+
- Clinical trial reproducibility
|
|
404
|
+
- HIPAA-compliant audit logs
|
|
405
|
+
- Diagnostic algorithm evidence
|
|
406
|
+
|
|
407
|
+
</td>
|
|
408
|
+
</tr>
|
|
409
|
+
<tr>
|
|
410
|
+
<td width="50%">
|
|
411
|
+
|
|
412
|
+
### ⚖️ Legal
|
|
413
|
+
- E-discovery for AI systems
|
|
414
|
+
- Contract analysis evidence
|
|
415
|
+
- Litigation documentation
|
|
416
|
+
- Chain of custody
|
|
417
|
+
|
|
418
|
+
</td>
|
|
419
|
+
<td width="50%">
|
|
420
|
+
|
|
421
|
+
### 🔬 Research
|
|
422
|
+
- ML experiment reproducibility
|
|
423
|
+
- Peer review verification
|
|
424
|
+
- Grant compliance
|
|
425
|
+
- Published results validation
|
|
426
|
+
|
|
427
|
+
</td>
|
|
428
|
+
</tr>
|
|
429
|
+
</table>
|
|
430
|
+
|
|
431
|
+
---
|
|
432
|
+
|
|
433
|
+
## ❓ FAQ
|
|
434
|
+
|
|
435
|
+
<details>
|
|
436
|
+
<summary><b>How is EPI different from logging?</b></summary>
|
|
437
|
+
|
|
438
|
+
Logs can be edited after the fact. EPI files are **cryptographically signed**—any tampering breaks the signature. Think of it as the difference between a handwritten note and a notarized document.
|
|
439
|
+
|
|
440
|
+
</details>
|
|
441
|
+
|
|
442
|
+
<details>
|
|
443
|
+
<summary><b>Does this slow down my code?</b></summary>
|
|
444
|
+
|
|
445
|
+
Minimal overhead (~5%). EPI records in the background, so your code runs at near-native speed.
|
|
446
|
+
|
|
447
|
+
</details>
|
|
448
|
+
|
|
449
|
+
<details>
|
|
450
|
+
<summary><b>Can I use this in production?</b></summary>
|
|
451
|
+
|
|
452
|
+
**Yes!** EPI is designed for production AI systems. It's used by companies in finance, healthcare, and research for regulatory compliance.
|
|
453
|
+
|
|
454
|
+
</details>
|
|
455
|
+
|
|
456
|
+
<details>
|
|
457
|
+
<summary><b>Is my data safe?</b></summary>
|
|
458
|
+
|
|
459
|
+
EPI automatically redacts API keys and secrets. The viewer is 100% offline (static HTML). You control what gets shared.
|
|
460
|
+
|
|
461
|
+
</details>
|
|
462
|
+
|
|
463
|
+
<details>
|
|
464
|
+
<summary><b>What about large datasets?</b></summary>
|
|
465
|
+
|
|
466
|
+
EPI captures **code + metadata**, not raw data. Typical `.epi` file: <10MB. Large datasets are referenced, not embedded.
|
|
467
|
+
|
|
468
|
+
</details>
|
|
469
|
+
|
|
470
|
+
<details>
|
|
471
|
+
<summary><b>What if `epi` command doesn't work?</b></summary>
|
|
472
|
+
|
|
473
|
+
Use `python -m epi_cli` instead (always works). Or run `python -m epi_cli doctor` to auto-fix PATH issues.
|
|
474
|
+
|
|
475
|
+
</details>
|
|
476
|
+
|
|
477
|
+
---
|
|
478
|
+
|
|
479
|
+
## 🆕 What's New in v2.1.2
|
|
480
|
+
|
|
481
|
+
> [!IMPORTANT]
|
|
482
|
+
> **Critical Security Update:** Implemented client-side Ed25519 signature verification in the embedded viewer. The viewer now cryptographically verifies that the standard signature matches the content and the embedded public key, preventing potential tamper attacks.
|
|
483
|
+
|
|
484
|
+
### 🛡️ Security & Integrity
|
|
485
|
+
- **Client-Side Verification:** The HTML viewer now includes a bundled crypto library to verify signatures offline.
|
|
486
|
+
- **Spec Update (v1.1-json):** Manifests now use Canonical JSON hashing and include the `public_key` for self-contained proof.
|
|
487
|
+
- **Trust Badges:** UI now explicitly shows "Verified" (Green), "Unsigned" (Yellow), or "Tampered" (Red).
|
|
488
|
+
|
|
489
|
+
### ✨ Enhanced CLI Reliability (v2.1.1)
|
|
490
|
+
|
|
491
|
+
**1. Python Module Fallback**
|
|
492
|
+
- `python -m epi_cli` now works as a 100% reliable alternative
|
|
493
|
+
- Perfect for restricted environments
|
|
494
|
+
|
|
495
|
+
**2. Automatic PATH Configuration**
|
|
496
|
+
- Post-install script auto-fixes PATH on Windows
|
|
497
|
+
- `epi doctor` command detects and repairs issues
|
|
498
|
+
- Success rate improved from 85% → 99%
|
|
499
|
+
|
|
500
|
+
**3. Universal Installation Scripts**
|
|
501
|
+
- One-command installers for all platforms
|
|
502
|
+
- Auto-configure shell PATH
|
|
503
|
+
- Works on Unix/Mac/Windows
|
|
504
|
+
|
|
505
|
+
**4. Windows Compatibility**
|
|
506
|
+
- Fixed Unicode errors in terminal output
|
|
507
|
+
- Better error messages
|
|
508
|
+
- More reliable auto-fix
|
|
509
|
+
|
|
510
|
+
### 🐛 Bug Fixes
|
|
511
|
+
- Fixed `pyproject.toml` syntax warnings
|
|
512
|
+
- Improved terminal output compatibility
|
|
513
|
+
- Better error handling
|
|
514
|
+
|
|
515
|
+
---
|
|
516
|
+
|
|
517
|
+
## 📚 Documentation
|
|
518
|
+
|
|
519
|
+
- [**📘 CLI Reference**](docs/CLI.md) - All commands explained
|
|
520
|
+
- [**📖 Quick Start Guide**](QUICKSTART.md) - Get started in 30 seconds
|
|
521
|
+
- [**🏗️ Architecture**](docs/EPI-SPEC.md) - Technical specification
|
|
522
|
+
- [**📝 Product Description**](EPI_Product_Description.md) - Detailed overview
|
|
523
|
+
- [**📋 Examples**](examples/) - Real-world code examples
|
|
524
|
+
|
|
525
|
+
---
|
|
526
|
+
|
|
527
|
+
## 🤝 Community & Support
|
|
528
|
+
|
|
529
|
+
- [**💬 Discussions**](https://github.com/mohdibrahimaiml/EPI-V2.1.0/discussions) - Ask questions, share use cases
|
|
530
|
+
- [**🐛 Issues**](https://github.com/mohdibrahimaiml/EPI-V2.1.0/issues) - Bug reports, feature requests
|
|
531
|
+
- [**📧 Email**](mailto:epitechforworld@outlook.com) - Direct support
|
|
532
|
+
- [**🌐 Website**](https://epilabs.org) - Latest news
|
|
533
|
+
|
|
534
|
+
---
|
|
535
|
+
|
|
536
|
+
## 🙌 Contributing
|
|
537
|
+
|
|
538
|
+
We welcome contributions! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
|
|
539
|
+
|
|
540
|
+
**Areas we'd love help:**
|
|
541
|
+
- 🌍 Internationalization
|
|
542
|
+
- 🔌 Language integrations (JavaScript, Go, Rust)
|
|
543
|
+
- ☁️ Cloud storage adapters
|
|
544
|
+
- 📊 Viewer enhancements
|
|
545
|
+
- 📝 Documentation improvements
|
|
546
|
+
|
|
547
|
+
[**Good First Issues →**](https://github.com/mohdibrahimaiml/EPI-V2.0.0/labels/good%20first%20issue)
|
|
548
|
+
|
|
549
|
+
---
|
|
550
|
+
|
|
551
|
+
## 📄 License
|
|
552
|
+
|
|
553
|
+
**Apache 2.0** - See [LICENSE](LICENSE)
|
|
554
|
+
|
|
555
|
+
---
|
|
556
|
+
|
|
557
|
+
## 🙏 Built With
|
|
558
|
+
|
|
559
|
+
- [Typer](https://typer.tiangolo.com/) - Beautiful CLIs
|
|
560
|
+
- [Rich](https://rich.readthedocs.io/) - Terminal formatting
|
|
561
|
+
- [Pydantic](https://pydantic-docs.helpmanual.io/) - Data validation
|
|
562
|
+
- [Cryptography](https://cryptography.io/) - Ed25519 signatures
|
|
563
|
+
|
|
564
|
+
---
|
|
565
|
+
|
|
566
|
+
<div align="center">
|
|
567
|
+
|
|
568
|
+
### **Trust Your AI. Verify Everything.** 🔐
|
|
569
|
+
|
|
570
|
+
**Made with ❤️ by [Mohd Ibrahim Afridi](https://github.com/mohdibrahimaiml)**
|
|
571
|
+
|
|
572
|
+
[**⭐ Star this repo**](https://github.com/mohdibrahimaiml/EPI-V2.0.0) • [**🐦 Follow updates**](https://twitter.com/epilabs) • [**🌐 Visit epilabs.org**](https://epilabs.org)
|
|
573
|
+
|
|
574
|
+
</div>
|
|
@@ -8,25 +8,26 @@ epi_cli/record.py,sha256=QtDrjr-7WbfcYXwPRrDDujrubUNrHhp062EcW8DZPNk,7321
|
|
|
8
8
|
epi_cli/run.py,sha256=dM_AYC3LzDBc_DzVKlb8obZBE52sAe3wYAnce0PLGT4,14101
|
|
9
9
|
epi_cli/verify.py,sha256=Rq34rw-zM_vZmYDsfg8cLlvW76_wJ99Pu-arjGRE9bw,8238
|
|
10
10
|
epi_cli/view.py,sha256=YZYohgT66Z2UYfN37d5VTPxipNiwSMacD4zHYaNypiU,4021
|
|
11
|
-
epi_core/__init__.py,sha256=
|
|
12
|
-
epi_core/container.py,sha256=
|
|
11
|
+
epi_core/__init__.py,sha256=P-R2yvbm3MVYwz_5l0dOzuv4Y1EgdrQfYtb4EL9cR08,303
|
|
12
|
+
epi_core/container.py,sha256=ZRRAWBoGGLkoqXQVEwfHHXtPE6D0Nqr1fBZpBFyXnKk,12687
|
|
13
13
|
epi_core/redactor.py,sha256=mYVZrIsKJdIJBY2XHE0U_CYqgY4Z2vGRvLW-19_c0WE,9886
|
|
14
|
-
epi_core/schemas.py,sha256=
|
|
15
|
-
epi_core/serialize.py,sha256=
|
|
16
|
-
epi_core/trust.py,sha256=
|
|
17
|
-
epi_recorder/__init__.py,sha256=
|
|
14
|
+
epi_core/schemas.py,sha256=flrPiTN92fbJS0U0wDfzxJvv4MGpUXEoWeu6kxoelRQ,4728
|
|
15
|
+
epi_core/serialize.py,sha256=2zl0SiDqUzk05HYca57Xmfj3x59LBbqEkJYE5TcCCz8,5685
|
|
16
|
+
epi_core/trust.py,sha256=3uy6MGl0-5nDa2ZB_Wj2j25EDmChRWi8ZboketdSXkE,7964
|
|
17
|
+
epi_recorder/__init__.py,sha256=5UPUcvQuHJ8zzZl1wHgTXLPFq6CXvQItML8cOaugpcM,396
|
|
18
18
|
epi_recorder/api.py,sha256=EZtMF2MVIk8KR1GPJBSxDlEh57nsIc-B2Ok0_j3hZ4U,21561
|
|
19
19
|
epi_recorder/bootstrap.py,sha256=yE1y0rjQ-1D-ZhWFipX_6qXFTA2BPlEm8Ft4Z0iex88,1845
|
|
20
20
|
epi_recorder/environment.py,sha256=NCz_Pckc6GU1kQsYF3oXDsN46k5LVuYWbMEhTj1FRXo,6598
|
|
21
21
|
epi_recorder/patcher.py,sha256=tEAlDfH_rz3TblASn9xvMsadXgobvrenQe2Pq1M_xvA,14570
|
|
22
22
|
epi_recorder/test_import.py,sha256=Dhjkj8qYZR4d4w-bshClV6S-naCcS5srW7wsp7jW-cM,459
|
|
23
23
|
epi_recorder/test_script.py,sha256=4uUheXOfqC28NYICyaAxm3gnhfrkdDZtaXnwfjG-qhQ,92
|
|
24
|
-
epi_recorder-2.1.
|
|
25
|
-
epi_viewer_static/app.js,sha256=
|
|
24
|
+
epi_recorder-2.1.2.dist-info/licenses/LICENSE,sha256=aUgjAzBUkmKIZy3AZ_XAZWoh3kzkRlkOc3JHLVfyF-A,11540
|
|
25
|
+
epi_viewer_static/app.js,sha256=qxOiqj4UBGCzxddctt8XbTeND8m2mwotDnvC7emayfs,14723
|
|
26
|
+
epi_viewer_static/crypto.js,sha256=hjoIrGljQ0Yrg-KplT1zHccK1b82_Y_SfDZ8Gw_UjBc,19078
|
|
26
27
|
epi_viewer_static/index.html,sha256=JxdsgzjJ5nGeDD1ROXI00w8rwsD7wXXOwitizxe8AWs,3298
|
|
27
28
|
epi_viewer_static/viewer_lite.css,sha256=oCEiEYbvdlaMwz-MPlrk3LoTVOad-bDLlP-X49Yw0o0,4691
|
|
28
|
-
epi_recorder-2.1.
|
|
29
|
-
epi_recorder-2.1.
|
|
30
|
-
epi_recorder-2.1.
|
|
31
|
-
epi_recorder-2.1.
|
|
32
|
-
epi_recorder-2.1.
|
|
29
|
+
epi_recorder-2.1.2.dist-info/METADATA,sha256=XLs2r57PfV6-SzWr3P7x9F5cuvUJ-UMEK-gATrSlAs4,15991
|
|
30
|
+
epi_recorder-2.1.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
31
|
+
epi_recorder-2.1.2.dist-info/entry_points.txt,sha256=MfMwqVRx_yMGbuPpiyjz2f8fQp8TUbHmRC1H_bupoyM,41
|
|
32
|
+
epi_recorder-2.1.2.dist-info/top_level.txt,sha256=kvGAjj3uNol1hxRi29Ec-B4HuYK6t-MD7wflkENQA6g,64
|
|
33
|
+
epi_recorder-2.1.2.dist-info/RECORD,,
|