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/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("[dim]Could not detect package manager.[/dim]")
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"[dim]Detected package manager: {manager}[/dim]")
246
- console.print(f"[dim]Command: {' '.join(command)}[/dim]\n")
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("[dim]Try running the install command manually with sudo[/dim]")
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("[dim]Skipping firejail. Sandbox layer will be disabled.[/dim]")
269
+ console.print("[white]Skipping firejail. Sandbox layer will be disabled.[/white]")
270
270
  return False
271
271
 
272
272
 
@@ -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 install`. |
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 uninstall` to remove hooks. Run `tweek install` to re-enable later. |
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 install`
9
+ ### `tweek protect`
10
10
 
11
- Install Tweek hooks into the AI assistant's configuration.
11
+ Set up Tweek protection for AI tools. With no arguments, launches an interactive wizard.
12
12
 
13
13
  ```
14
- tweek install [OPTIONS]
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 uninstall`
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
- Remove Tweek hooks from configuration.
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 uninstall [--global] [--confirm]
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 an AI gateway.
333
+ Set up proxy protection for OpenClaw.
319
334
 
320
335
  ```
321
- tweek protect [openclaw|claude]
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 install"
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 install"
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 install"
156
+ result["install_command"] = "pip install tweek && tweek protect claude-code"
157
157
  else:
158
- result["install_command"] = "python3 -m pip install tweek && tweek install"
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.2.1
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 install # Claude Code (CLI hooks)
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 mcp install claude-desktop # Claude Desktop (MCP proxy)
111
- tweek mcp install chatgpt-desktop # ChatGPT Desktop (MCP proxy)
112
- tweek mcp install gemini # Gemini CLI (MCP proxy)
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 install` |
135
+ | **Claude Code** | CLI hooks (native) | `tweek protect claude-code` |
131
136
  | **OpenClaw** | Proxy wrapping | `tweek protect openclaw` |
132
- | **Claude Desktop** | MCP proxy | `tweek mcp install claude-desktop` |
133
- | **ChatGPT Desktop** | MCP proxy | `tweek mcp install chatgpt-desktop` |
134
- | **Gemini CLI** | MCP proxy | `tweek mcp install gemini` |
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 22 categories.
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 ships with a **custom-trained prompt injection classifier** ([DeBERTa-v3-base](https://huggingface.co/protectai/deberta-v3-base-prompt-injection-v2)) that runs entirely on your machine via ONNX Runtime. No API keys. No cloud calls. No data leaves your computer.
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, fine-tuned for prompt injection |
177
- | **Runtime** | ONNX (CPU-only, single thread) |
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
- | **License** | Apache 2.0 |
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=mZ5RaMD3SVWt8mcinSq8KlCaNLoVqgVu-9cewcMVlt0,360
1
+ tweek/__init__.py,sha256=NppVIy7NWIJrgFbWfAVveJtg-UdwqA9ux98hciWBeLM,360
2
2
  tweek/_keygen.py,sha256=UapwIKNSwaRWdqHoJoF3hmKuiux6aIiFGe8WVskTbI8,1286
3
- tweek/audit.py,sha256=Bp4RETwdiHpT2EEi45atZa0LlJUOtALhrc3UT8MHvF8,8868
4
- tweek/cli.py,sha256=J7L0xhfZ1DmzrVGwvEBTCRLYd5w5UakSGWH9DikOOSg,245768
5
- tweek/cli_helpers.py,sha256=adczf-8oHsc-TDdfJqPQoG4IgWEfJmRORm2NmVWaCOw,5494
6
- tweek/cli_model.py,sha256=QO6Q3iy0d-hsMLdgWwDiigqN0rjep4Ufa73VCZjVguc,12825
7
- tweek/diagnostics.py,sha256=eOiI6MlfqimzUeG7Uvwhcnen_FlINejfawLun5DY59o,22472
8
- tweek/licensing.py,sha256=4Pt34t8Y60jaLMBYLjnmLs_0o_LUahOhGflhXeZtuPU,11703
9
- tweek/config/__init__.py,sha256=C_kQm0LqYdM67E9wNi6bsX2V7xz7GY4HiICb_XlrX8A,362
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=Cg6gG9c4zZpDTxy8WZ_T-diPBzV8DL2Hny-Yu9DBV6I,39335
13
- tweek/config/patterns.yaml,sha256=8ow--0qdPJNjIY94j-vDEcrHt-TYgf9uuPCiqSMCIEQ,85376
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=DiAnWOBd9t4vpMz1JsgUjYzToU6i-igesP2Vk83AAAc,17195
20
- tweek/hooks/pre_tool_use.py,sha256=Y4uIz-vB_39KHgL54HBOUCmX01Ze-8F-2vZIwK4655c,71688
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=yXIDh75lci3DWyJtZG3izryIoO4jSXGDuaJRch3K1rg,11265
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=rF-w4q6uSt3rBoUnw0UXS1lFBdjooqV9YWVwQBaeTzM,8686
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=dLMlJOdUrzJ8hz2R3bcFEjtxCT0xIKMZnX2UQFZDwTs,10309
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=I9Uj_RgRINW2uYguj4dQ3uGmxzxm83zPQt20XkqlawA,6277
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=tYXZn49EThoQTexD0ehBue5T2qFQEXot2rJqw3T9p0s,5830
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.2.1.dist-info/licenses/LICENSE,sha256=rjoDzr1vAf0bsqZglpIyekU5aewIkCk4jHZZDvVI2BE,15269
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.2.1.dist-info/METADATA,sha256=7ahRw8rb7M0OV4xVZpI_5e1MMrk2KZGont3GRymkhmw,11318
119
- tweek-0.2.1.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
120
- tweek-0.2.1.dist-info/entry_points.txt,sha256=YXThD6UiF5XQXwqW33sphsvz-Bl4Zm6pm-xq-5wcCYE,1337
121
- tweek-0.2.1.dist-info/top_level.txt,sha256=jtNcCxjoGXN8IBqEVL0F3LHDrZD_B0S-4XF9-Ur7Pbc,28
122
- tweek-0.2.1.dist-info/RECORD,,
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