veil-proxy 0.2.0__tar.gz → 0.2.1__tar.gz
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.
- {veil_proxy-0.2.0 → veil_proxy-0.2.1}/PKG-INFO +1 -1
- {veil_proxy-0.2.0 → veil_proxy-0.2.1}/pyproject.toml +3 -2
- {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/proxy.py +12 -1
- {veil_proxy-0.2.0 → veil_proxy-0.2.1}/README.md +0 -0
- {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/__init__.py +0 -0
- {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/adopt.py +0 -0
- {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/anthropic.py +0 -0
- {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/cli.py +0 -0
- {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/cloud.py +0 -0
- {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/crypto.py +0 -0
- {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/data/README.md +0 -0
- {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/data/pg_anonymizer_identifier.csv +0 -0
- {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/data/words.txt.gz +0 -0
- {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/decode.py +0 -0
- {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/detect.py +0 -0
- {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/display.py +0 -0
- {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/engine.py +0 -0
- {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/guard.py +0 -0
- {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/hookclient.py +0 -0
- {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/hooks.py +0 -0
- {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/keys.py +0 -0
- {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/match.py +0 -0
- {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/ner.py +0 -0
- {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/openai.py +0 -0
- {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/quasi.py +0 -0
- {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/reseed.py +0 -0
- {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/responses.py +0 -0
- {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/rotate.py +0 -0
- {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/shell.py +0 -0
- {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/sources/__init__.py +0 -0
- {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/sources/core.py +0 -0
- {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/sources/elastic.py +0 -0
- {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/sources/files.py +0 -0
- {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/sources/kv.py +0 -0
- {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/sources/mongo.py +0 -0
- {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/sources/mssql.py +0 -0
- {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/sources/schema.py +0 -0
- {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/sources/sql.py +0 -0
- {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/state.py +0 -0
- {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/stream.py +0 -0
- {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/team.py +0 -0
- {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/tokens.py +0 -0
- {veil_proxy-0.2.0 → veil_proxy-0.2.1}/veil/vault.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: veil-proxy
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.1
|
|
4
4
|
Summary: Privacy middleware for AI coding agents: the model sees consistent pseudonyms, your machine keeps the real values
|
|
5
5
|
Keywords: privacy,pii,llm,proxy,pseudonymization,claude-code,coding-agent
|
|
6
6
|
Requires-Python: >=3.11
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "veil-proxy"
|
|
3
|
-
version = "0.2.
|
|
3
|
+
version = "0.2.1"
|
|
4
4
|
description = "Privacy middleware for AI coding agents: the model sees consistent pseudonyms, your machine keeps the real values"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.11"
|
|
@@ -58,7 +58,8 @@ veil-proxy = { workspace = true }
|
|
|
58
58
|
name = "veil"
|
|
59
59
|
|
|
60
60
|
[tool.pytest.ini_options]
|
|
61
|
-
pythonpath = ["."]
|
|
61
|
+
pythonpath = ["."]
|
|
62
|
+
faulthandler_timeout = 120 # a hung test dumps every thread's stack (CI diagnosis) # makes veil_dev importable for the test suite
|
|
62
63
|
|
|
63
64
|
[build-system]
|
|
64
65
|
# Pure-Python backend: building the sdist needs no compiler (Homebrew builds from source).
|
|
@@ -12,6 +12,7 @@ claude.ai logins); only hop-by-hop and encoding headers are dropped.
|
|
|
12
12
|
from __future__ import annotations
|
|
13
13
|
|
|
14
14
|
import json
|
|
15
|
+
import socketserver
|
|
15
16
|
import os
|
|
16
17
|
import sys
|
|
17
18
|
import threading
|
|
@@ -34,6 +35,16 @@ from .responses import (ResponsesStreamRewriter, is_responses_path, redact_respo
|
|
|
34
35
|
HOP = {"host", "content-length", "connection", "accept-encoding", "transfer-encoding", "keep-alive"}
|
|
35
36
|
|
|
36
37
|
|
|
38
|
+
class LocalHTTPServer(ThreadingHTTPServer):
|
|
39
|
+
"""ThreadingHTTPServer without the reverse-DNS lookup in server_bind():
|
|
40
|
+
http.server calls socket.getfqdn(host), which can stall for 30 s+ on macOS
|
|
41
|
+
(mDNS). veil binds loopback only, so the name is just the address."""
|
|
42
|
+
|
|
43
|
+
def server_bind(self):
|
|
44
|
+
socketserver.TCPServer.server_bind(self)
|
|
45
|
+
self.server_name, self.server_port = self.server_address[:2]
|
|
46
|
+
|
|
47
|
+
|
|
37
48
|
def _strings(node):
|
|
38
49
|
if isinstance(node, str):
|
|
39
50
|
yield node
|
|
@@ -406,7 +417,7 @@ def serve(veil: Veil, policy: Policy, port: int = 8787, upstream: str = "https:/
|
|
|
406
417
|
anthropic_aws_upstream: str | None = None):
|
|
407
418
|
client = httpx.Client(timeout=httpx.Timeout(600, connect=10))
|
|
408
419
|
observer = capture_observer(capture) if capture else None
|
|
409
|
-
server =
|
|
420
|
+
server = LocalHTTPServer(("127.0.0.1", port), make_handler(veil, policy, upstream, client,
|
|
410
421
|
observer=observer,
|
|
411
422
|
openai_upstream=openai_upstream,
|
|
412
423
|
bedrock_upstream=bedrock_upstream,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|