tweek 0.2.1__py3-none-any.whl → 0.3.1__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.
- tweek/__init__.py +1 -1
- tweek/audit.py +2 -2
- tweek/cli.py +698 -439
- tweek/cli_helpers.py +6 -6
- tweek/cli_model.py +7 -7
- tweek/config/__init__.py +8 -0
- tweek/config/manager.py +33 -1
- tweek/config/models.py +307 -0
- tweek/config/patterns.yaml +1 -1
- tweek/diagnostics.py +59 -7
- tweek/hooks/post_tool_use.py +1 -1
- tweek/hooks/pre_tool_use.py +3 -3
- tweek/licensing.py +1 -1
- tweek/mcp/approval_cli.py +4 -4
- tweek/sandbox/linux.py +5 -5
- tweek/skill_template/SKILL.md +2 -3
- tweek/skill_template/cli-reference.md +33 -18
- tweek/skill_template/scripts/check_installed.py +4 -4
- {tweek-0.2.1.dist-info → tweek-0.3.1.dist-info}/METADATA +22 -15
- {tweek-0.2.1.dist-info → tweek-0.3.1.dist-info}/RECORD +25 -23
- tweek-0.3.1.dist-info/licenses/NOTICE +199 -0
- {tweek-0.2.1.dist-info → tweek-0.3.1.dist-info}/WHEEL +0 -0
- {tweek-0.2.1.dist-info → tweek-0.3.1.dist-info}/entry_points.txt +0 -0
- {tweek-0.2.1.dist-info → tweek-0.3.1.dist-info}/licenses/LICENSE +0 -0
- {tweek-0.2.1.dist-info → tweek-0.3.1.dist-info}/top_level.txt +0 -0
tweek/sandbox/linux.py
CHANGED
|
@@ -237,13 +237,13 @@ def prompt_install_firejail(console) -> bool:
|
|
|
237
237
|
pkg_info = get_linux_package_manager()
|
|
238
238
|
|
|
239
239
|
if not pkg_info:
|
|
240
|
-
console.print("[
|
|
240
|
+
console.print("[white]Could not detect package manager.[/white]")
|
|
241
241
|
console.print("Install firejail manually: https://firejail.wordpress.com/download-2/")
|
|
242
242
|
return False
|
|
243
243
|
|
|
244
244
|
manager, command = pkg_info
|
|
245
|
-
console.print(f"[
|
|
246
|
-
console.print(f"[
|
|
245
|
+
console.print(f"[white]Detected package manager: {manager}[/white]")
|
|
246
|
+
console.print(f"[white]Command: {' '.join(command)}[/white]\n")
|
|
247
247
|
|
|
248
248
|
if Confirm.ask("Install firejail for full sandbox protection?", default=False):
|
|
249
249
|
try:
|
|
@@ -260,13 +260,13 @@ def prompt_install_firejail(console) -> bool:
|
|
|
260
260
|
|
|
261
261
|
except subprocess.CalledProcessError as e:
|
|
262
262
|
console.print(f"[red]Installation failed (exit code {e.returncode})[/red]")
|
|
263
|
-
console.print("[
|
|
263
|
+
console.print("[white]Try running the install command manually with sudo[/white]")
|
|
264
264
|
return False
|
|
265
265
|
except KeyboardInterrupt:
|
|
266
266
|
console.print("\n[yellow]Installation cancelled.[/yellow]")
|
|
267
267
|
return False
|
|
268
268
|
else:
|
|
269
|
-
console.print("[
|
|
269
|
+
console.print("[white]Skipping firejail. Sandbox layer will be disabled.[/white]")
|
|
270
270
|
return False
|
|
271
271
|
|
|
272
272
|
|
tweek/skill_template/SKILL.md
CHANGED
|
@@ -28,7 +28,7 @@ The script returns JSON with these fields:
|
|
|
28
28
|
| Field | Meaning |
|
|
29
29
|
|-------|---------|
|
|
30
30
|
| `status: "fully_operational"` | Tweek is installed and hooks are active. Proceed to help user with their question. |
|
|
31
|
-
| `status: "installed_no_hooks"` | Tweek is installed but hooks are not registered. Tell user to run `tweek
|
|
31
|
+
| `status: "installed_no_hooks"` | Tweek is installed but hooks are not registered. Tell user to run `tweek protect claude-code`. |
|
|
32
32
|
| `status: "hooks_only"` | Hooks reference tweek but the package is missing. Tell user to reinstall. |
|
|
33
33
|
| `status: "not_installed"` | Tweek is not present. Check `install_declined` before offering to install. |
|
|
34
34
|
| `install_declined: true` | User previously declined installation. **Do not offer to install again** unless the user explicitly asks. |
|
|
@@ -142,7 +142,6 @@ Trust mode is auto-detected from the terminal environment. It can be overridden
|
|
|
142
142
|
|
|
143
143
|
| Command | What It Does |
|
|
144
144
|
|---------|-------------|
|
|
145
|
-
| `tweek status` | Show installation status and active configuration |
|
|
146
145
|
| `tweek doctor` | Health check — verify all layers are active |
|
|
147
146
|
| `tweek doctor --verbose` | Detailed diagnostics with fix suggestions |
|
|
148
147
|
| `tweek logs show` | View recent security events |
|
|
@@ -185,7 +184,7 @@ For the full configuration format and examples, see `overrides-reference.md` in
|
|
|
185
184
|
| "Tweek isn't working" | Run `tweek doctor --verbose` and review the output. Common issues: hooks not registered, outdated patterns, missing dependencies. |
|
|
186
185
|
| "How do I update patterns?" | Run `tweek update` to fetch the latest pattern definitions. |
|
|
187
186
|
| "I want to pause tweek for this project" | Tell the user to run `tweek trust` in their terminal. This exempts the current project from screening. They can resume with `tweek untrust`. |
|
|
188
|
-
| "I want to disable tweek entirely" | Tell the user to run `tweek
|
|
187
|
+
| "I want to disable tweek entirely" | Tell the user to run `tweek unprotect claude-code` to remove hooks. Run `tweek protect claude-code` to re-enable later. |
|
|
189
188
|
| "What has tweek blocked recently?" | Run `tweek logs show` to see recent security events with details. |
|
|
190
189
|
|
|
191
190
|
---
|
|
@@ -6,12 +6,21 @@ Complete command reference for the `tweek` command-line tool.
|
|
|
6
6
|
|
|
7
7
|
## Installation & Setup
|
|
8
8
|
|
|
9
|
-
### `tweek
|
|
9
|
+
### `tweek protect`
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
Set up Tweek protection for AI tools. With no arguments, launches an interactive wizard.
|
|
12
12
|
|
|
13
13
|
```
|
|
14
|
-
tweek
|
|
14
|
+
tweek protect # Interactive wizard — detects and protects all tools
|
|
15
|
+
tweek protect --status # Show protection status for all tools
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
### `tweek protect claude-code`
|
|
19
|
+
|
|
20
|
+
Install Tweek hooks into Claude Code (replaces the former `tweek install` command).
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
tweek protect claude-code [OPTIONS]
|
|
15
24
|
```
|
|
16
25
|
|
|
17
26
|
| Option | Description |
|
|
@@ -25,15 +34,29 @@ tweek install [OPTIONS]
|
|
|
25
34
|
| `--skip-env-scan` | Skip scanning for credential files to migrate |
|
|
26
35
|
| `--backup / --no-backup` | Backup existing hooks before installation (default: backup) |
|
|
27
36
|
|
|
28
|
-
### `tweek
|
|
37
|
+
### `tweek protect claude-desktop`
|
|
38
|
+
|
|
39
|
+
Install Tweek as MCP server for Claude Desktop.
|
|
40
|
+
|
|
41
|
+
### `tweek protect chatgpt`
|
|
42
|
+
|
|
43
|
+
Install Tweek as MCP server for ChatGPT Desktop.
|
|
29
44
|
|
|
30
|
-
|
|
45
|
+
### `tweek protect gemini`
|
|
46
|
+
|
|
47
|
+
Install Tweek as MCP server for Gemini CLI.
|
|
48
|
+
|
|
49
|
+
### `tweek unprotect`
|
|
50
|
+
|
|
51
|
+
Remove Tweek protection from an AI tool (replaces the former `tweek uninstall` command).
|
|
31
52
|
|
|
32
53
|
```
|
|
33
|
-
tweek
|
|
54
|
+
tweek unprotect <tool> [--confirm]
|
|
55
|
+
tweek unprotect --all [--confirm]
|
|
34
56
|
```
|
|
35
57
|
|
|
36
|
-
By default removes from `./.claude/` (current project). Use `--global` to remove from `~/.claude
|
|
58
|
+
By default removes from `./.claude/` (current project). Use `--global` to remove from `~/.claude/` (for claude-code).
|
|
59
|
+
Use `--all` to remove Tweek from all tools at once.
|
|
37
60
|
|
|
38
61
|
---
|
|
39
62
|
|
|
@@ -82,14 +105,6 @@ tweek untrust /path/to/project # Untrust specific directory
|
|
|
82
105
|
|
|
83
106
|
## Diagnostics
|
|
84
107
|
|
|
85
|
-
### `tweek status`
|
|
86
|
-
|
|
87
|
-
Show installation status and active configuration.
|
|
88
|
-
|
|
89
|
-
```
|
|
90
|
-
tweek status
|
|
91
|
-
```
|
|
92
|
-
|
|
93
108
|
### `tweek doctor`
|
|
94
109
|
|
|
95
110
|
Run health checks on all screening layers.
|
|
@@ -313,12 +328,12 @@ tweek plugins search QUERY
|
|
|
313
328
|
|
|
314
329
|
## Proxy (API Interception)
|
|
315
330
|
|
|
316
|
-
### `tweek protect`
|
|
331
|
+
### `tweek protect openclaw`
|
|
317
332
|
|
|
318
|
-
Set up protection for
|
|
333
|
+
Set up proxy protection for OpenClaw.
|
|
319
334
|
|
|
320
335
|
```
|
|
321
|
-
tweek protect
|
|
336
|
+
tweek protect openclaw
|
|
322
337
|
```
|
|
323
338
|
|
|
324
339
|
### `tweek proxy start / stop`
|
|
@@ -144,18 +144,18 @@ def check_installation():
|
|
|
144
144
|
result["status"] = "fully_operational"
|
|
145
145
|
elif result["tweek_in_path"] and not result["hooks_registered"]:
|
|
146
146
|
result["status"] = "installed_no_hooks"
|
|
147
|
-
result["install_command"] = "tweek
|
|
147
|
+
result["install_command"] = "tweek protect claude-code"
|
|
148
148
|
elif not result["tweek_in_path"] and result["hooks_registered"]:
|
|
149
149
|
result["status"] = "hooks_only"
|
|
150
150
|
result["install_command"] = "pip install tweek"
|
|
151
151
|
else:
|
|
152
152
|
result["status"] = "not_installed"
|
|
153
153
|
if result["pipx_available"]:
|
|
154
|
-
result["install_command"] = "pipx install tweek && tweek
|
|
154
|
+
result["install_command"] = "pipx install tweek && tweek protect claude-code"
|
|
155
155
|
elif result["pip_available"]:
|
|
156
|
-
result["install_command"] = "pip install tweek && tweek
|
|
156
|
+
result["install_command"] = "pip install tweek && tweek protect claude-code"
|
|
157
157
|
else:
|
|
158
|
-
result["install_command"] = "python3 -m pip install tweek && tweek
|
|
158
|
+
result["install_command"] = "python3 -m pip install tweek && tweek protect claude-code"
|
|
159
159
|
|
|
160
160
|
return result
|
|
161
161
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tweek
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.1
|
|
4
4
|
Summary: Defense-in-depth security for AI coding assistants - protect credentials, code, and system from prompt injection attacks
|
|
5
5
|
Author: Tommy Mancino
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -21,7 +21,9 @@ Classifier: Topic :: Software Development :: Quality Assurance
|
|
|
21
21
|
Requires-Python: >=3.9
|
|
22
22
|
Description-Content-Type: text/markdown
|
|
23
23
|
License-File: LICENSE
|
|
24
|
+
License-File: NOTICE
|
|
24
25
|
Requires-Dist: click>=8.0
|
|
26
|
+
Requires-Dist: pydantic>=2.0
|
|
25
27
|
Requires-Dist: pyyaml>=6.0
|
|
26
28
|
Requires-Dist: rich>=13.0
|
|
27
29
|
Requires-Dist: keyring>=25.0
|
|
@@ -42,6 +44,8 @@ Requires-Dist: mitmproxy>=10.0; extra == "proxy"
|
|
|
42
44
|
Provides-Extra: dev
|
|
43
45
|
Requires-Dist: pytest>=7.0; extra == "dev"
|
|
44
46
|
Requires-Dist: pytest-cov>=4.0; extra == "dev"
|
|
47
|
+
Requires-Dist: pytest-xdist>=3.5.0; extra == "dev"
|
|
48
|
+
Requires-Dist: hypothesis>=6.98.0; extra == "dev"
|
|
45
49
|
Requires-Dist: black>=23.0; extra == "dev"
|
|
46
50
|
Requires-Dist: ruff>=0.1.0; extra == "dev"
|
|
47
51
|
Requires-Dist: twine>=4.0; extra == "dev"
|
|
@@ -105,11 +109,12 @@ pip install --user tweek
|
|
|
105
109
|
### Protect Your Tools
|
|
106
110
|
|
|
107
111
|
```bash
|
|
108
|
-
tweek
|
|
112
|
+
tweek protect # Interactive wizard — detects and protects all tools
|
|
113
|
+
tweek protect claude-code # Claude Code (CLI hooks)
|
|
109
114
|
tweek protect openclaw # OpenClaw (HTTP proxy)
|
|
110
|
-
tweek
|
|
111
|
-
tweek
|
|
112
|
-
tweek
|
|
115
|
+
tweek protect claude-desktop # Claude Desktop (MCP proxy)
|
|
116
|
+
tweek protect chatgpt # ChatGPT Desktop (MCP proxy)
|
|
117
|
+
tweek protect gemini # Gemini CLI (MCP proxy)
|
|
113
118
|
tweek proxy setup # Cursor, Windsurf, Continue.dev (HTTP proxy)
|
|
114
119
|
```
|
|
115
120
|
|
|
@@ -127,11 +132,11 @@ That's it. Tweek auto-detects your tools, applies all 259 attack patterns across
|
|
|
127
132
|
|
|
128
133
|
| Client | Integration | Setup |
|
|
129
134
|
|--------|------------|-------|
|
|
130
|
-
| **Claude Code** | CLI hooks (native) | `tweek
|
|
135
|
+
| **Claude Code** | CLI hooks (native) | `tweek protect claude-code` |
|
|
131
136
|
| **OpenClaw** | Proxy wrapping | `tweek protect openclaw` |
|
|
132
|
-
| **Claude Desktop** | MCP proxy | `tweek
|
|
133
|
-
| **ChatGPT Desktop** | MCP proxy | `tweek
|
|
134
|
-
| **Gemini CLI** | MCP proxy | `tweek
|
|
137
|
+
| **Claude Desktop** | MCP proxy | `tweek protect claude-desktop` |
|
|
138
|
+
| **ChatGPT Desktop** | MCP proxy | `tweek protect chatgpt` |
|
|
139
|
+
| **Gemini CLI** | MCP proxy | `tweek protect gemini` |
|
|
135
140
|
| **Cursor** | HTTP proxy | `tweek proxy setup` |
|
|
136
141
|
| **Windsurf** | HTTP proxy | `tweek proxy setup` |
|
|
137
142
|
| **Continue.dev** | HTTP proxy | `tweek proxy setup` |
|
|
@@ -161,7 +166,7 @@ Turn 3: cat ~/.ssh/id_rsa → BLOCKED: path_escalation anomaly
|
|
|
161
166
|
|
|
162
167
|
**Response injection** — Malicious instructions hidden in tool responses are caught at ingestion.
|
|
163
168
|
|
|
164
|
-
See the full [Attack Patterns Reference](docs/ATTACK_PATTERNS.md) for all 259 patterns across
|
|
169
|
+
See the full [Attack Patterns Reference](docs/ATTACK_PATTERNS.md) for all 259 patterns across 11 categories.
|
|
165
170
|
|
|
166
171
|
---
|
|
167
172
|
|
|
@@ -169,14 +174,16 @@ See the full [Attack Patterns Reference](docs/ATTACK_PATTERNS.md) for all 259 pa
|
|
|
169
174
|
|
|
170
175
|
Most security tools that use AI send your data to an API. Tweek doesn't.
|
|
171
176
|
|
|
172
|
-
Tweek
|
|
177
|
+
Tweek uses [ProtectAI's DeBERTa-v3-base Prompt Injection v2](https://huggingface.co/protectai/deberta-v3-base-prompt-injection-v2) classifier, fine-tuned from [Microsoft's DeBERTa-v3-base](https://huggingface.co/microsoft/deberta-v3-base), running entirely on your machine via [ONNX Runtime](https://onnxruntime.ai). No API keys. No cloud calls. No data leaves your computer.
|
|
173
178
|
|
|
174
179
|
| Property | Value |
|
|
175
180
|
|----------|-------|
|
|
176
|
-
| **Model** | DeBERTa-v3-base
|
|
177
|
-
| **
|
|
181
|
+
| **Model** | [ProtectAI DeBERTa-v3-base Prompt Injection v2](https://huggingface.co/protectai/deberta-v3-base-prompt-injection-v2) (Apache 2.0) |
|
|
182
|
+
| **Base Model** | [Microsoft DeBERTa-v3-base](https://huggingface.co/microsoft/deberta-v3-base) (MIT) |
|
|
183
|
+
| **Runtime** | ONNX Runtime (CPU-only, single thread) |
|
|
178
184
|
| **Privacy** | 100% on-device — zero network calls |
|
|
179
|
-
|
|
185
|
+
|
|
186
|
+
See [NOTICE](./NOTICE) for full third-party license texts and attribution.
|
|
180
187
|
|
|
181
188
|
The local model handles the gray-area attacks that pattern matching alone cannot catch — encoded instructions, novel injection techniques, social engineering disguised as legitimate content. High-confidence results are returned instantly. Uncertain results can optionally escalate to a cloud LLM for deeper analysis (you bring your own API key).
|
|
182
189
|
|
|
@@ -278,4 +285,4 @@ To report a security vulnerability, email security@gettweek.com.
|
|
|
278
285
|
|
|
279
286
|
## License
|
|
280
287
|
|
|
281
|
-
[Apache 2.0](LICENSE)
|
|
288
|
+
[Apache 2.0](LICENSE) | [Third-Party Notices](NOTICE)
|
|
@@ -1,23 +1,24 @@
|
|
|
1
|
-
tweek/__init__.py,sha256=
|
|
1
|
+
tweek/__init__.py,sha256=NppVIy7NWIJrgFbWfAVveJtg-UdwqA9ux98hciWBeLM,360
|
|
2
2
|
tweek/_keygen.py,sha256=UapwIKNSwaRWdqHoJoF3hmKuiux6aIiFGe8WVskTbI8,1286
|
|
3
|
-
tweek/audit.py,sha256=
|
|
4
|
-
tweek/cli.py,sha256=
|
|
5
|
-
tweek/cli_helpers.py,sha256=
|
|
6
|
-
tweek/cli_model.py,sha256=
|
|
7
|
-
tweek/diagnostics.py,sha256=
|
|
8
|
-
tweek/licensing.py,sha256=
|
|
9
|
-
tweek/config/__init__.py,sha256=
|
|
3
|
+
tweek/audit.py,sha256=OmCUagbx_fkCorcrZt2ebTtDm-rr4fRKkZpxZdvZens,8868
|
|
4
|
+
tweek/cli.py,sha256=Ad54k7bDws9Eg7z3oeEVR85Ni9DQz72JJVUFC1WV_zA,256803
|
|
5
|
+
tweek/cli_helpers.py,sha256=Q2NTOkyRTOIPNLMqY2jA5_tuzDPksAGwGXYPRK3bzoY,5538
|
|
6
|
+
tweek/cli_model.py,sha256=iMZStFqA0Nqyzm4rxSbhD4v-AqcO6h5NI72AR7cldoY,12853
|
|
7
|
+
tweek/diagnostics.py,sha256=KbtXQH8QrRBoyIFWumL6q9--aQQdR0tUo2GzjMhwpII,24601
|
|
8
|
+
tweek/licensing.py,sha256=wYN8wBYVCp1RbAi_sWeF7gKKBSU116ncX3tnZawYUpQ,11703
|
|
9
|
+
tweek/config/__init__.py,sha256=ENwimeLZd2gSJXpkASMY45hbMUDn2RwM-Zl_RMvpCbQ,772
|
|
10
10
|
tweek/config/allowed_dirs.yaml,sha256=dMF_DqKgQThzkdIEoXzDBfAjbopGrk0HTkiM7ENmBaU,788
|
|
11
11
|
tweek/config/families.yaml,sha256=jkNO0UsmX3MFlTKC9Or3p8_MlD3ZtHM0SrQIYFqx9i8,18212
|
|
12
|
-
tweek/config/manager.py,sha256=
|
|
13
|
-
tweek/config/
|
|
12
|
+
tweek/config/manager.py,sha256=Jk9l_UJM9e5_fxTvWFXrU0677u9HCttmunahp36woBE,40591
|
|
13
|
+
tweek/config/models.py,sha256=RbVjC2pxnkrBKanS6QGDrHwPVkmss5ouG_dqAHf_C3Q,10018
|
|
14
|
+
tweek/config/patterns.yaml,sha256=hu0lphSN0i_bY8kla65bTaBEQR8phhrb3BLC1KprMLw,85376
|
|
14
15
|
tweek/config/tiers.yaml,sha256=9hIXQ9izVKXd8ptoCsQiBo2r_XY8RvIk7VWrhWggkbc,10191
|
|
15
16
|
tweek/hooks/__init__.py,sha256=GcgDjPdhZayxmyZ4-GfBa-ISARNtt9087RsuprRq2-s,54
|
|
16
17
|
tweek/hooks/break_glass.py,sha256=GNMhCtLWPylNMlQ5QfsoUkEjgIT1Uk1Ik7HvRWeE5N8,4636
|
|
17
18
|
tweek/hooks/feedback.py,sha256=uuA4opHYyBHC5sElBz-fr2Je3cg2DAv-aRHvETZcag0,6555
|
|
18
19
|
tweek/hooks/overrides.py,sha256=1Yw_NPpZMvcFG_uyNY-ouBKSSomnxOptRedSjzkkhmE,18635
|
|
19
|
-
tweek/hooks/post_tool_use.py,sha256=
|
|
20
|
-
tweek/hooks/pre_tool_use.py,sha256=
|
|
20
|
+
tweek/hooks/post_tool_use.py,sha256=22ugZdlZn2Q0eUcUucelrF18N7mCgaC_agb7kZT51Ww,17195
|
|
21
|
+
tweek/hooks/pre_tool_use.py,sha256=70XbonRSGh8rYpDlI4R_Z5Ug2LwU4iLyLsS87I5xlqc,71743
|
|
21
22
|
tweek/integrations/__init__.py,sha256=sl7wFwbygmnruugX4bO2EUjoXxBlCpzTKbj-1zHuUPg,78
|
|
22
23
|
tweek/integrations/openclaw.py,sha256=jX99__ODGI7Cq6gclSTK2pI5lsI7UGh5_iCHmq1R8RY,13798
|
|
23
24
|
tweek/integrations/openclaw_server.py,sha256=Ah7wxsxKE2lQmIdlrFINvt5jW9U_bqqERfG3X2N5Aps,12533
|
|
@@ -27,7 +28,7 @@ tweek/logging/json_logger.py,sha256=zXOsFAufj3MF0TboM5zSS7V8uNBDJea7YkJHR-uQgBA,
|
|
|
27
28
|
tweek/logging/security_log.py,sha256=BwHDdrN0VCpqssStvsZdASFnyxVpANCq9xiSkFsEFFk,28486
|
|
28
29
|
tweek/mcp/__init__.py,sha256=AOFDrzDfjOvICMcN15Hz-iNCT0Kf6oyUBB-iNEW5Vr4,791
|
|
29
30
|
tweek/mcp/approval.py,sha256=WIFQi4ryXEFtgQyzQIshwgP5h_Th7Cxepx9NIhf2o_4,17885
|
|
30
|
-
tweek/mcp/approval_cli.py,sha256=
|
|
31
|
+
tweek/mcp/approval_cli.py,sha256=8WtmJF7KTLmdEF5wHqENaUJUzKEQej4CjRtFey4RcGg,11281
|
|
31
32
|
tweek/mcp/proxy.py,sha256=0p5OEaRsFuNRcGR3rnqprkPjTdSSYgrsU_XXQiFPS8c,24819
|
|
32
33
|
tweek/mcp/screening.py,sha256=ax5TK8ZSXb9uo5DFx3mxiYrBKjDBP0cTLNhA05TXb80,5421
|
|
33
34
|
tweek/mcp/server.py,sha256=3pF3piXUNtIf2-SUJPCjGZPD42esg2KFsVXpaBXrq3E,10901
|
|
@@ -83,7 +84,7 @@ tweek/sandbox/__init__.py,sha256=bT4ZAQkY2WOELdrRwf87hVdePXq6QPmvBgDs4WqDWgU,229
|
|
|
83
84
|
tweek/sandbox/docker_bridge.py,sha256=QD17ZuPVRgrbg0zFHdvji-VA11Jo5Td73_Kn6gbRaxc,5030
|
|
84
85
|
tweek/sandbox/executor.py,sha256=MLgMps4CNH_rtbbvseIKuuusMUznv6U7njPKwVCT-Bo,13186
|
|
85
86
|
tweek/sandbox/layers.py,sha256=Qd-kRfEKnBWax6n9h9COJeCTkvqnLAf157bHpGMfRYg,3263
|
|
86
|
-
tweek/sandbox/linux.py,sha256=
|
|
87
|
+
tweek/sandbox/linux.py,sha256=mKA3rI--TmJnVU6uE2kAxBAD8DGZjHUHlZ-sSLzuoWs,8706
|
|
87
88
|
tweek/sandbox/profile_generator.py,sha256=J-nNold-J1YxuSaX5BdQ_lcCC03ElwPJT7fJ4UciXfc,10957
|
|
88
89
|
tweek/sandbox/project.py,sha256=SqD4g4i1VqfWTdm--6gBzTC8AZCdHuyPLR37Y9jp30k,19575
|
|
89
90
|
tweek/sandbox/registry.py,sha256=ZZDQYeJMNAJ0FrFEayo1KyC5r3qXSBx6Tu-JcXIMjtI,5060
|
|
@@ -98,12 +99,12 @@ tweek/security/model_registry.py,sha256=XscpZcWaaJwHldX2T9C1T1zSvJ3lm0aSW4nIhwRp
|
|
|
98
99
|
tweek/security/rate_limiter.py,sha256=bY8VIkQ-wCbNOYTLwD4MsMBoHk59zPWeZCkuE8Zntm8,24185
|
|
99
100
|
tweek/security/secret_scanner.py,sha256=G-bbMwsAJD197BEOnZJdn_qphS4RNPK_wpLfkpiLuFU,18774
|
|
100
101
|
tweek/security/session_analyzer.py,sha256=-Ylp583VZ_YJRkN5JZrYpaK1sVbiM6KP7ZwLBzWpiCI,24260
|
|
101
|
-
tweek/skill_template/SKILL.md,sha256=
|
|
102
|
+
tweek/skill_template/SKILL.md,sha256=gBk_Ken77scVYeCs8imm1ASnNLDpBl-C0ufgWrrkQIA,10274
|
|
102
103
|
tweek/skill_template/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
103
|
-
tweek/skill_template/cli-reference.md,sha256=
|
|
104
|
+
tweek/skill_template/cli-reference.md,sha256=DdXIEfTPvYn6iybVwA-r3CKkV1Mlx5Ub_sJf_lJrV2k,6913
|
|
104
105
|
tweek/skill_template/overrides-reference.md,sha256=xlc07wXXsCOrx60wMD7LZ7fn5Z_dhLuj5Mgx04-xGQ0,4509
|
|
105
106
|
tweek/skill_template/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
106
|
-
tweek/skill_template/scripts/check_installed.py,sha256
|
|
107
|
+
tweek/skill_template/scripts/check_installed.py,sha256=-pMmfgBjdbwb5u2t9rJ0dMBz7MGYgiZM5db3tiNZgO4,5878
|
|
107
108
|
tweek/skills/__init__.py,sha256=DyTvK8n5Lb-idkJhXCVytpiZjNfWveCtNkSL6o8dxHM,1209
|
|
108
109
|
tweek/skills/config.py,sha256=I95wK9CBj_UiHwFuxfE8yRl7cmFiqdY0hXfF3BHP0X8,4782
|
|
109
110
|
tweek/skills/fingerprints.py,sha256=YjPsTxqotzGlyMIgfgewSoNDTLU8_-p9fY_a44LJTjU,6027
|
|
@@ -113,10 +114,11 @@ tweek/skills/scanner.py,sha256=PaeZNnwxLTGls2O3hQaDgBhGw9jVJThPjfKCY_05_nI,27574
|
|
|
113
114
|
tweek/vault/__init__.py,sha256=L408fjdRYL8-VqLEsyyHSO9PkBDhd_2mPIbrCu53YhM,980
|
|
114
115
|
tweek/vault/cross_platform.py,sha256=D4UvX_7OpSo8iRx5sc2OUUWQIk8JHhgeFBYk1MbyIj4,8251
|
|
115
116
|
tweek/vault/keychain.py,sha256=XL18-SUj7HwuqxLXZDViuCH81--KMu68jN9Szn1aeyw,10624
|
|
116
|
-
tweek-0.
|
|
117
|
+
tweek-0.3.1.dist-info/licenses/LICENSE,sha256=rjoDzr1vAf0bsqZglpIyekU5aewIkCk4jHZZDvVI2BE,15269
|
|
118
|
+
tweek-0.3.1.dist-info/licenses/NOTICE,sha256=taQokyDes5UTRNEC67G-13VmqvUyTOncrrT33pCcWL0,8729
|
|
117
119
|
tweek-openclaw-plugin/node_modules/flatted/python/flatted.py,sha256=UYburBDqkySaTfSpntPCUJRxiBGcplusJM7ECX8FEgA,3860
|
|
118
|
-
tweek-0.
|
|
119
|
-
tweek-0.
|
|
120
|
-
tweek-0.
|
|
121
|
-
tweek-0.
|
|
122
|
-
tweek-0.
|
|
120
|
+
tweek-0.3.1.dist-info/METADATA,sha256=iR7qpsuY7fLnF2DO8OWFrqUTE2vuDv3_VNMWddDIZMU,11939
|
|
121
|
+
tweek-0.3.1.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
122
|
+
tweek-0.3.1.dist-info/entry_points.txt,sha256=YXThD6UiF5XQXwqW33sphsvz-Bl4Zm6pm-xq-5wcCYE,1337
|
|
123
|
+
tweek-0.3.1.dist-info/top_level.txt,sha256=jtNcCxjoGXN8IBqEVL0F3LHDrZD_B0S-4XF9-Ur7Pbc,28
|
|
124
|
+
tweek-0.3.1.dist-info/RECORD,,
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
Tweek
|
|
2
|
+
Copyright 2025 Tommy Mancino / Tweek, LLC
|
|
3
|
+
|
|
4
|
+
This product includes software developed at Tweek, LLC.
|
|
5
|
+
|
|
6
|
+
=========================================================================
|
|
7
|
+
|
|
8
|
+
Third-Party Components
|
|
9
|
+
=========================================================================
|
|
10
|
+
|
|
11
|
+
This project uses the following third-party components. Their licenses
|
|
12
|
+
and copyright notices are reproduced below, as required by their
|
|
13
|
+
respective licenses.
|
|
14
|
+
|
|
15
|
+
-------------------------------------------------------------------------
|
|
16
|
+
ProtectAI DeBERTa-v3-base Prompt Injection v2
|
|
17
|
+
-------------------------------------------------------------------------
|
|
18
|
+
|
|
19
|
+
Source: https://huggingface.co/protectai/deberta-v3-base-prompt-injection-v2
|
|
20
|
+
License: Apache License 2.0
|
|
21
|
+
Copyright (c) 2024 Protect AI, Inc.
|
|
22
|
+
|
|
23
|
+
A fine-tuned DeBERTa-v3-base model for binary prompt injection
|
|
24
|
+
classification. Used by Tweek as an on-device classifier for detecting
|
|
25
|
+
prompt injection attacks. The model is downloaded at user request via
|
|
26
|
+
`tweek model download` and stored locally at ~/.tweek/models/.
|
|
27
|
+
|
|
28
|
+
Tweek does not modify or redistribute the model weights. The model is
|
|
29
|
+
downloaded directly from HuggingFace by the end user.
|
|
30
|
+
|
|
31
|
+
Citation:
|
|
32
|
+
@misc{deberta-v3-base-prompt-injection-v2,
|
|
33
|
+
author = {ProtectAI.com},
|
|
34
|
+
title = {Fine-Tuned DeBERTa-v3-base for Prompt Injection Detection},
|
|
35
|
+
year = {2024},
|
|
36
|
+
publisher = {HuggingFace},
|
|
37
|
+
url = {https://huggingface.co/protectai/deberta-v3-base-prompt-injection-v2},
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
41
|
+
you may not use this file except in compliance with the License.
|
|
42
|
+
You may obtain a copy of the License at
|
|
43
|
+
|
|
44
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
45
|
+
|
|
46
|
+
Unless required by applicable law or agreed to in writing, software
|
|
47
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
48
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
49
|
+
See the License for the specific language governing permissions and
|
|
50
|
+
limitations under the License.
|
|
51
|
+
|
|
52
|
+
-------------------------------------------------------------------------
|
|
53
|
+
Microsoft DeBERTa-v3-base (upstream base model)
|
|
54
|
+
-------------------------------------------------------------------------
|
|
55
|
+
|
|
56
|
+
Source: https://huggingface.co/microsoft/deberta-v3-base
|
|
57
|
+
License: MIT License
|
|
58
|
+
Copyright (c) Microsoft Corporation.
|
|
59
|
+
|
|
60
|
+
The ProtectAI prompt injection model above is fine-tuned from
|
|
61
|
+
Microsoft's DeBERTa-v3-base pre-trained language model.
|
|
62
|
+
|
|
63
|
+
Citation:
|
|
64
|
+
@misc{he2021debertav3,
|
|
65
|
+
title = {DeBERTaV3: Improving DeBERTa using ELECTRA-Style
|
|
66
|
+
Pre-Training with Gradient-Disentangled Embedding Sharing},
|
|
67
|
+
author = {Pengcheng He and Jianfeng Gao and Weizhu Chen},
|
|
68
|
+
year = {2021},
|
|
69
|
+
eprint = {2111.09543},
|
|
70
|
+
archivePrefix = {arXiv},
|
|
71
|
+
primaryClass = {cs.CL},
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
75
|
+
a copy of this software and associated documentation files (the
|
|
76
|
+
"Software"), to deal in the Software without restriction, including
|
|
77
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
78
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
79
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
80
|
+
the following conditions:
|
|
81
|
+
|
|
82
|
+
The above copyright notice and this permission notice shall be
|
|
83
|
+
included in all copies or substantial portions of the Software.
|
|
84
|
+
|
|
85
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
86
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
87
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
88
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
89
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
90
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
91
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
92
|
+
|
|
93
|
+
-------------------------------------------------------------------------
|
|
94
|
+
ONNX Runtime
|
|
95
|
+
-------------------------------------------------------------------------
|
|
96
|
+
|
|
97
|
+
Source: https://github.com/microsoft/onnxruntime
|
|
98
|
+
License: MIT License
|
|
99
|
+
Copyright (c) Microsoft Corporation.
|
|
100
|
+
|
|
101
|
+
Used as the inference engine for the local prompt injection classifier.
|
|
102
|
+
Installed as an optional dependency via `pip install tweek[local-models]`.
|
|
103
|
+
|
|
104
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
105
|
+
a copy of this software and associated documentation files (the
|
|
106
|
+
"Software"), to deal in the Software without restriction, including
|
|
107
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
108
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
109
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
110
|
+
the following conditions:
|
|
111
|
+
|
|
112
|
+
The above copyright notice and this permission notice shall be
|
|
113
|
+
included in all copies or substantial portions of the Software.
|
|
114
|
+
|
|
115
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
116
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
117
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
118
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
119
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
120
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
121
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
122
|
+
|
|
123
|
+
-------------------------------------------------------------------------
|
|
124
|
+
HuggingFace Tokenizers
|
|
125
|
+
-------------------------------------------------------------------------
|
|
126
|
+
|
|
127
|
+
Source: https://github.com/huggingface/tokenizers
|
|
128
|
+
License: Apache License 2.0
|
|
129
|
+
Copyright (c) 2019 HuggingFace Inc.
|
|
130
|
+
|
|
131
|
+
Used for tokenizing input text before feeding to the local ONNX model.
|
|
132
|
+
Installed as an optional dependency via `pip install tweek[local-models]`.
|
|
133
|
+
|
|
134
|
+
Licensed under the Apache License, Version 2.0.
|
|
135
|
+
|
|
136
|
+
-------------------------------------------------------------------------
|
|
137
|
+
NumPy
|
|
138
|
+
-------------------------------------------------------------------------
|
|
139
|
+
|
|
140
|
+
Source: https://github.com/numpy/numpy
|
|
141
|
+
License: BSD 3-Clause License
|
|
142
|
+
Copyright (c) 2005-2024, NumPy Developers.
|
|
143
|
+
|
|
144
|
+
Used for numerical operations in the local model inference pipeline
|
|
145
|
+
(softmax scoring, tensor manipulation). Installed as an optional
|
|
146
|
+
dependency via `pip install tweek[local-models]`.
|
|
147
|
+
|
|
148
|
+
Redistribution and use in source and binary forms, with or without
|
|
149
|
+
modification, are permitted provided that the following conditions are
|
|
150
|
+
met:
|
|
151
|
+
|
|
152
|
+
1. Redistributions of source code must retain the above copyright
|
|
153
|
+
notice, this list of conditions and the following disclaimer.
|
|
154
|
+
|
|
155
|
+
2. Redistributions in binary form must reproduce the above copyright
|
|
156
|
+
notice, this list of conditions and the following disclaimer in
|
|
157
|
+
the documentation and/or other materials provided with the
|
|
158
|
+
distribution.
|
|
159
|
+
|
|
160
|
+
3. Neither the name of the copyright holder nor the names of its
|
|
161
|
+
contributors may be used to endorse or promote products derived
|
|
162
|
+
from this software without specific prior written permission.
|
|
163
|
+
|
|
164
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
165
|
+
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
166
|
+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
167
|
+
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
168
|
+
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
169
|
+
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
170
|
+
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
171
|
+
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
172
|
+
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
173
|
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
174
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
175
|
+
|
|
176
|
+
=========================================================================
|
|
177
|
+
|
|
178
|
+
Runtime Dependencies
|
|
179
|
+
=========================================================================
|
|
180
|
+
|
|
181
|
+
The following packages are installed via pip as runtime dependencies.
|
|
182
|
+
They are NOT bundled or vendored — each carries its own license in its
|
|
183
|
+
distribution. Listed here for transparency.
|
|
184
|
+
|
|
185
|
+
click >=8.0 BSD-3-Clause Pallets Projects
|
|
186
|
+
pyyaml >=6.0 MIT Kirill Simonov / YAML community
|
|
187
|
+
rich >=13.0 MIT Will McGugan
|
|
188
|
+
keyring >=25.0 MIT Jason R. Coombs
|
|
189
|
+
|
|
190
|
+
Optional dependencies (installed only when the user requests them):
|
|
191
|
+
|
|
192
|
+
anthropic >=0.18.0 MIT Anthropic, PBC
|
|
193
|
+
openai >=1.0.0 MIT OpenAI
|
|
194
|
+
google-generativeai Apache-2.0 Google LLC
|
|
195
|
+
mcp >=1.0.0 MIT Anthropic, PBC
|
|
196
|
+
mitmproxy >=10.0 MIT mitmproxy contributors
|
|
197
|
+
secretstorage >=3.0 BSD-3-Clause Dmitry Shachnev
|
|
198
|
+
|
|
199
|
+
=========================================================================
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|