rehydra 0.6.5 → 0.8.0
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.
- package/README.md +40 -3
- package/dist/cli/commands/proxy.d.ts +3 -0
- package/dist/cli/commands/proxy.d.ts.map +1 -0
- package/dist/cli/commands/proxy.js +257 -0
- package/dist/cli/commands/proxy.js.map +1 -0
- package/dist/cli/main.d.ts +3 -0
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +29 -5
- package/dist/cli/main.js.map +1 -1
- package/dist/opencode-plugin/plugin.d.ts.map +1 -1
- package/dist/opencode-plugin/plugin.js +2 -4
- package/dist/opencode-plugin/plugin.js.map +1 -1
- package/dist/proxy/index.d.ts +3 -2
- package/dist/proxy/index.d.ts.map +1 -1
- package/dist/proxy/index.js +2 -1
- package/dist/proxy/index.js.map +1 -1
- package/dist/proxy/providers/anthropic.d.ts +6 -1
- package/dist/proxy/providers/anthropic.d.ts.map +1 -1
- package/dist/proxy/providers/anthropic.js +91 -0
- package/dist/proxy/providers/anthropic.js.map +1 -1
- package/dist/proxy/providers/index.d.ts +1 -1
- package/dist/proxy/providers/index.d.ts.map +1 -1
- package/dist/proxy/providers/index.js.map +1 -1
- package/dist/proxy/providers/openai.d.ts +6 -1
- package/dist/proxy/providers/openai.d.ts.map +1 -1
- package/dist/proxy/providers/openai.js +53 -0
- package/dist/proxy/providers/openai.js.map +1 -1
- package/dist/proxy/providers/types.d.ts +53 -0
- package/dist/proxy/providers/types.d.ts.map +1 -1
- package/dist/proxy/proxy-server.d.ts +9 -1
- package/dist/proxy/proxy-server.d.ts.map +1 -1
- package/dist/proxy/proxy-server.js +2 -2
- package/dist/proxy/proxy-server.js.map +1 -1
- package/dist/proxy/rehydra-fetch.d.ts.map +1 -1
- package/dist/proxy/rehydra-fetch.js +163 -4
- package/dist/proxy/rehydra-fetch.js.map +1 -1
- package/dist/proxy/rehydra-proxy.d.ts.map +1 -1
- package/dist/proxy/rehydra-proxy.js +22 -0
- package/dist/proxy/rehydra-proxy.js.map +1 -1
- package/dist/proxy/system-instruction.d.ts +10 -0
- package/dist/proxy/system-instruction.d.ts.map +1 -0
- package/dist/proxy/system-instruction.js +19 -0
- package/dist/proxy/system-instruction.js.map +1 -0
- package/dist/proxy/types.d.ts +48 -0
- package/dist/proxy/types.d.ts.map +1 -1
- package/dist/storage/session-base.d.ts +2 -0
- package/dist/storage/session-base.d.ts.map +1 -1
- package/dist/storage/session-base.js +10 -0
- package/dist/storage/session-base.js.map +1 -1
- package/dist/storage/types.d.ts +37 -0
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/utils/json-walk.d.ts +21 -0
- package/dist/utils/json-walk.d.ts.map +1 -0
- package/dist/utils/json-walk.js +44 -0
- package/dist/utils/json-walk.js.map +1 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -29,6 +29,33 @@
|
|
|
29
29
|
|
|
30
30
|
## Quick Start
|
|
31
31
|
|
|
32
|
+
### Proxy — protect your AI coding tools
|
|
33
|
+
|
|
34
|
+
Run a local proxy that anonymizes PII before it reaches the LLM and rehydrates responses. Works with Claude Code, Cursor, and any OpenAI/Anthropic-compatible client.
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
npx @rehydra/cli proxy claude --api-key sk-ant-...
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
rehydra proxy
|
|
42
|
+
|
|
43
|
+
Provider anthropic (https://api.anthropic.com)
|
|
44
|
+
Listening http://127.0.0.1:8787
|
|
45
|
+
NER quantized
|
|
46
|
+
|
|
47
|
+
Configure your tools:
|
|
48
|
+
|
|
49
|
+
Claude Code
|
|
50
|
+
ANTHROPIC_BASE_URL=http://127.0.0.1:8787 claude
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Names, emails, phone numbers, and other PII are replaced with placeholders in transit. Tool results (file reads, bash output) are anonymized. Tool call arguments (file writes, bash commands) are rehydrated. The LLM never sees real PII.
|
|
54
|
+
|
|
55
|
+
> **Note:** The proxy requires an [Anthropic API key](https://console.anthropic.com/settings/keys). Claude Max/Pro subscriptions use OAuth which `api.anthropic.com` does not support through proxies.
|
|
56
|
+
|
|
57
|
+
### Library — embed PII anonymization in your app
|
|
58
|
+
|
|
32
59
|
```typescript
|
|
33
60
|
import { anonymize } from 'rehydra';
|
|
34
61
|
|
|
@@ -40,10 +67,22 @@ const { anonymizedText } = await anonymize(
|
|
|
40
67
|
|
|
41
68
|
Works in **Node.js**, **Bun**, and **browsers**. No data leaves your machine.
|
|
42
69
|
|
|
70
|
+
### OpenCode plugin — scrub secrets from your coding agent
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
npm install @rehydra/opencode
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
```json
|
|
77
|
+
{ "plugin": ["@rehydra/opencode"] }
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Intercepts the conversation between [OpenCode](https://github.com/sst/opencode) and the LLM. Secrets from `.env` files are replaced with placeholders before they leave your machine and restored before tools execute.
|
|
81
|
+
|
|
43
82
|
## Features
|
|
44
83
|
|
|
45
84
|
- **Regex + NER detection** — emails, phones, IBANs, credit cards, names, orgs, locations, and more
|
|
46
|
-
- **LLM Proxy** — drop-in `fetch` wrapper
|
|
85
|
+
- **LLM Proxy** — CLI proxy or drop-in `fetch` wrapper for OpenAI, Anthropic, and compatible APIs
|
|
47
86
|
- **Streaming** — Transform stream with low-latency mode for real-time LLM token streams
|
|
48
87
|
- **Sessions** — consistent PII IDs across multi-message conversations with persistent storage
|
|
49
88
|
- **Encryption** — AES-256-GCM via Web Crypto API
|
|
@@ -54,8 +93,6 @@ Works in **Node.js**, **Bun**, and **browsers**. No data leaves your machine.
|
|
|
54
93
|
```typescript
|
|
55
94
|
import {
|
|
56
95
|
createAnonymizer,
|
|
57
|
-
decryptPIIMap,
|
|
58
|
-
rehydrate,
|
|
59
96
|
InMemoryKeyProvider,
|
|
60
97
|
SQLitePIIStorageProvider,
|
|
61
98
|
} from 'rehydra';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/proxy.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA2DhD,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,CAAC,CAuLjB"}
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
import { createServer } from "node:http";
|
|
2
|
+
import { PIIType, mergePolicy, generateKey, uint8ArrayToBase64, ConfigKeyProvider, InMemoryPIIStorageProvider, isModelDownloaded, downloadModel, } from "../../index.js";
|
|
3
|
+
import { SECRET_PII_TYPES } from "../../types/pii-types.js";
|
|
4
|
+
import { createRehydraProxy, incomingMessageToRequest, writeResponse, } from "../../proxy/index.js";
|
|
5
|
+
import { CLIError } from "../utils/errors.js";
|
|
6
|
+
import { bold, dim, cyan, green, yellow } from "../utils/color.js";
|
|
7
|
+
import { formatProgress, writeProgress, clearProgress } from "../utils/progress.js";
|
|
8
|
+
const PROVIDER_UPSTREAMS = {
|
|
9
|
+
openai: "https://api.openai.com",
|
|
10
|
+
anthropic: "https://api.anthropic.com",
|
|
11
|
+
claude: "https://api.anthropic.com",
|
|
12
|
+
};
|
|
13
|
+
const PROVIDER_CANONICAL = {
|
|
14
|
+
openai: "openai",
|
|
15
|
+
anthropic: "anthropic",
|
|
16
|
+
claude: "anthropic",
|
|
17
|
+
};
|
|
18
|
+
function getConnectionHints(provider, baseUrl, hasApiKey) {
|
|
19
|
+
const lines = [];
|
|
20
|
+
if (provider === "anthropic") {
|
|
21
|
+
if (hasApiKey) {
|
|
22
|
+
lines.push(` ${bold("Claude Code")}`, ` ANTHROPIC_BASE_URL=${baseUrl} claude`);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
lines.push(` ${bold("Claude Code")} ${dim("(requires --api-key)")}`, ` ANTHROPIC_BASE_URL=${baseUrl} claude`);
|
|
26
|
+
}
|
|
27
|
+
lines.push("", ` ${bold("Cursor")}`, ` Settings ${dim("→")} Models ${dim("→")} Anthropic ${dim("→")} Override Base URL`, ` ${dim(baseUrl)}`);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
lines.push(` ${bold("Environment variable")}`, ` export OPENAI_BASE_URL=${baseUrl}/v1`, "", ` ${bold("Cursor")}`, ` Settings ${dim("→")} Models ${dim("→")} OpenAI ${dim("→")} Override Base URL`, ` ${dim(baseUrl + "/v1")}`, "", ` ${bold("OpenAI SDK")}`, ` ${dim(`new OpenAI({ baseURL: "${baseUrl}/v1" })`)}`);
|
|
31
|
+
}
|
|
32
|
+
return lines.join("\n");
|
|
33
|
+
}
|
|
34
|
+
export async function proxyCommand(provider, options) {
|
|
35
|
+
if (provider === undefined) {
|
|
36
|
+
throw new CLIError("Missing provider argument.\n\n" +
|
|
37
|
+
"Usage: rehydra proxy <provider>\n\n" +
|
|
38
|
+
"Providers:\n" +
|
|
39
|
+
" openai OpenAI API\n" +
|
|
40
|
+
" anthropic Anthropic API\n" +
|
|
41
|
+
" claude Alias for anthropic");
|
|
42
|
+
}
|
|
43
|
+
const providerLower = provider.toLowerCase();
|
|
44
|
+
const canonical = PROVIDER_CANONICAL[providerLower];
|
|
45
|
+
if (canonical === undefined) {
|
|
46
|
+
throw new CLIError(`Unknown provider: ${provider}\nSupported: openai, anthropic, claude`);
|
|
47
|
+
}
|
|
48
|
+
const upstream = options.upstream ?? PROVIDER_UPSTREAMS[providerLower];
|
|
49
|
+
const port = parseInt(options.port ?? "8787", 10);
|
|
50
|
+
const host = "127.0.0.1";
|
|
51
|
+
if (isNaN(port) || port < 1 || port > 65535) {
|
|
52
|
+
throw new CLIError(`Invalid port: ${options.port}`);
|
|
53
|
+
}
|
|
54
|
+
// Key setup
|
|
55
|
+
const envKey = process.env["REHYDRA_KEY"];
|
|
56
|
+
const flagKey = options.key;
|
|
57
|
+
const externalKey = flagKey ?? envKey;
|
|
58
|
+
let keyProvider;
|
|
59
|
+
if (externalKey !== undefined) {
|
|
60
|
+
keyProvider = new ConfigKeyProvider(externalKey);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
const keyBytes = generateKey();
|
|
64
|
+
keyProvider = new ConfigKeyProvider(uint8ArrayToBase64(keyBytes));
|
|
65
|
+
}
|
|
66
|
+
const storage = new InMemoryPIIStorageProvider();
|
|
67
|
+
const nerMode = validateNerMode(options.ner);
|
|
68
|
+
// Policy
|
|
69
|
+
let policy;
|
|
70
|
+
if (options.types !== undefined) {
|
|
71
|
+
const enabledTypes = parseTypes(options.types);
|
|
72
|
+
const policyPartial = { enabledTypes };
|
|
73
|
+
if (options.secrets) {
|
|
74
|
+
const regexEnabledTypes = new Set(enabledTypes);
|
|
75
|
+
for (const t of SECRET_PII_TYPES) {
|
|
76
|
+
enabledTypes.add(t);
|
|
77
|
+
regexEnabledTypes.add(t);
|
|
78
|
+
}
|
|
79
|
+
policyPartial.regexEnabledTypes = regexEnabledTypes;
|
|
80
|
+
}
|
|
81
|
+
policy = mergePolicy(policyPartial);
|
|
82
|
+
}
|
|
83
|
+
// LLM API key — from --api-key flag or LLM_API_KEY env var
|
|
84
|
+
const llmApiKey = options["api-key"] ?? process.env["LLM_API_KEY"];
|
|
85
|
+
// Build shared proxy config (without NER initially)
|
|
86
|
+
const baseProxyConfig = {
|
|
87
|
+
upstream,
|
|
88
|
+
provider: canonical,
|
|
89
|
+
keyProvider,
|
|
90
|
+
piiStorageProvider: storage,
|
|
91
|
+
anonymizer: {
|
|
92
|
+
...(options.secrets ? { secrets: { enabled: true } } : {}),
|
|
93
|
+
},
|
|
94
|
+
policy,
|
|
95
|
+
locale: options.locale,
|
|
96
|
+
apiKey: llmApiKey,
|
|
97
|
+
};
|
|
98
|
+
// Start with regex-only proxy (instant startup)
|
|
99
|
+
let handler = createRehydraProxy(baseProxyConfig);
|
|
100
|
+
// Create HTTP server with swappable handler
|
|
101
|
+
const server = createServer((req, res) => {
|
|
102
|
+
void (async () => {
|
|
103
|
+
try {
|
|
104
|
+
const webRequest = incomingMessageToRequest(req, host, port);
|
|
105
|
+
const webResponse = await handler(webRequest);
|
|
106
|
+
await writeResponse(res, webResponse);
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
res.writeHead(502, { "Content-Type": "application/json" });
|
|
110
|
+
res.end(JSON.stringify({
|
|
111
|
+
error: "proxy_error",
|
|
112
|
+
message: error instanceof Error ? error.message : "Unknown proxy error",
|
|
113
|
+
}));
|
|
114
|
+
}
|
|
115
|
+
})();
|
|
116
|
+
});
|
|
117
|
+
await new Promise((resolve, reject) => {
|
|
118
|
+
server.on("error", reject);
|
|
119
|
+
server.listen(port, host, () => {
|
|
120
|
+
resolve();
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
// Print startup banner
|
|
124
|
+
const baseUrl = `http://${host}:${port}`;
|
|
125
|
+
const nerEnabled = nerMode !== "disabled";
|
|
126
|
+
let linesAfterNer = 0;
|
|
127
|
+
if (!options.quiet) {
|
|
128
|
+
const nerLine = ` NER ${nerEnabled ? yellow("loading...") : dim("disabled")}`;
|
|
129
|
+
const bannerBottom = [
|
|
130
|
+
...(llmApiKey !== undefined ? [` API key ${green("configured")}`] : []),
|
|
131
|
+
...(options.secrets ? [` Secrets ${green("enabled")}`] : []),
|
|
132
|
+
"",
|
|
133
|
+
` ${bold("Configure your tools:")}`,
|
|
134
|
+
"",
|
|
135
|
+
getConnectionHints(canonical, baseUrl, llmApiKey !== undefined),
|
|
136
|
+
"",
|
|
137
|
+
` ${dim("Ctrl+C to stop")}`,
|
|
138
|
+
"",
|
|
139
|
+
];
|
|
140
|
+
const banner = [
|
|
141
|
+
"",
|
|
142
|
+
` ${bold("rehydra proxy")}`,
|
|
143
|
+
"",
|
|
144
|
+
` Provider ${cyan(canonical)} ${dim(`(${upstream})`)}`,
|
|
145
|
+
` Listening ${green(baseUrl)}`,
|
|
146
|
+
nerLine,
|
|
147
|
+
...bannerBottom,
|
|
148
|
+
].join("\n");
|
|
149
|
+
process.stderr.write(banner);
|
|
150
|
+
// Count lines after NER line for in-place cursor update
|
|
151
|
+
linesAfterNer = bannerBottom.join("\n").split("\n").length;
|
|
152
|
+
}
|
|
153
|
+
// Helper to update the NER status line in-place
|
|
154
|
+
const updateNerLine = (text) => {
|
|
155
|
+
if (options.quiet)
|
|
156
|
+
return;
|
|
157
|
+
if (process.stderr.isTTY && linesAfterNer > 0) {
|
|
158
|
+
process.stderr.write(`\x1b[${linesAfterNer}A\x1b[2K\r${text}\x1b[${linesAfterNer}B\r`);
|
|
159
|
+
}
|
|
160
|
+
};
|
|
161
|
+
// Background: download and warm up NER model, then swap handler
|
|
162
|
+
if (nerEnabled) {
|
|
163
|
+
void loadNerAndSwap(nerMode, options, baseProxyConfig).then((nerProxy) => {
|
|
164
|
+
if (nerProxy !== null) {
|
|
165
|
+
handler = nerProxy;
|
|
166
|
+
updateNerLine(` NER ${green(nerMode)}`);
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
updateNerLine(` NER ${yellow("failed")} ${dim("(regex-only)")}`);
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
// Wait for shutdown signal
|
|
174
|
+
await new Promise((resolve) => {
|
|
175
|
+
const shutdown = () => {
|
|
176
|
+
if (!options.quiet) {
|
|
177
|
+
process.stderr.write(dim("\nShutting down...\n"));
|
|
178
|
+
}
|
|
179
|
+
resolve();
|
|
180
|
+
};
|
|
181
|
+
process.on("SIGINT", shutdown);
|
|
182
|
+
process.on("SIGTERM", shutdown);
|
|
183
|
+
});
|
|
184
|
+
await new Promise((resolve, reject) => {
|
|
185
|
+
server.close((err) => {
|
|
186
|
+
if (err !== undefined)
|
|
187
|
+
reject(err);
|
|
188
|
+
else
|
|
189
|
+
resolve();
|
|
190
|
+
});
|
|
191
|
+
});
|
|
192
|
+
return 0;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Downloads the NER model (if needed), creates a NER-enabled proxy, and returns it.
|
|
196
|
+
* Returns null on failure (proxy continues with regex-only).
|
|
197
|
+
*/
|
|
198
|
+
async function loadNerAndSwap(nerMode, options, baseConfig) {
|
|
199
|
+
const modelMode = nerMode === "standard" ? "standard" : "quantized";
|
|
200
|
+
try {
|
|
201
|
+
// Download model if not cached
|
|
202
|
+
const alreadyDownloaded = await isModelDownloaded(modelMode);
|
|
203
|
+
if (!alreadyDownloaded) {
|
|
204
|
+
if (!options.quiet) {
|
|
205
|
+
process.stderr.write(` ${dim(`Downloading NER model (${modelMode})...`)}\n`);
|
|
206
|
+
}
|
|
207
|
+
const onProgress = (progress) => {
|
|
208
|
+
if (!options.quiet) {
|
|
209
|
+
writeProgress(formatProgress(progress.file, progress.percent));
|
|
210
|
+
}
|
|
211
|
+
};
|
|
212
|
+
await downloadModel(modelMode, onProgress);
|
|
213
|
+
clearProgress();
|
|
214
|
+
}
|
|
215
|
+
// Create NER-enabled proxy
|
|
216
|
+
const nerProxy = createRehydraProxy({
|
|
217
|
+
...baseConfig,
|
|
218
|
+
anonymizer: {
|
|
219
|
+
...baseConfig.anonymizer,
|
|
220
|
+
ner: {
|
|
221
|
+
mode: nerMode,
|
|
222
|
+
autoDownload: false, // already downloaded
|
|
223
|
+
},
|
|
224
|
+
},
|
|
225
|
+
});
|
|
226
|
+
return nerProxy;
|
|
227
|
+
}
|
|
228
|
+
catch {
|
|
229
|
+
return null;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
// --- helpers ---
|
|
233
|
+
function validateNerMode(mode) {
|
|
234
|
+
const valid = ["disabled", "quantized", "standard"];
|
|
235
|
+
if (!valid.includes(mode)) {
|
|
236
|
+
throw new CLIError(`Invalid NER mode: ${mode}\nValid modes: ${valid.join(", ")}`);
|
|
237
|
+
}
|
|
238
|
+
return mode;
|
|
239
|
+
}
|
|
240
|
+
function parseTypes(typesStr) {
|
|
241
|
+
const allValues = new Set(Object.values(PIIType));
|
|
242
|
+
const types = new Set();
|
|
243
|
+
for (const raw of typesStr.split(",")) {
|
|
244
|
+
const t = raw.trim().toUpperCase();
|
|
245
|
+
if (t === "")
|
|
246
|
+
continue;
|
|
247
|
+
if (!allValues.has(t)) {
|
|
248
|
+
throw new CLIError(`Unknown PII type: ${raw.trim()}\nValid types: ${[...allValues].join(", ")}`);
|
|
249
|
+
}
|
|
250
|
+
types.add(t);
|
|
251
|
+
}
|
|
252
|
+
if (types.size === 0) {
|
|
253
|
+
throw new CLIError("--types must specify at least one PII type");
|
|
254
|
+
}
|
|
255
|
+
return types;
|
|
256
|
+
}
|
|
257
|
+
//# sourceMappingURL=proxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../../src/cli/commands/proxy.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/main.d.ts
CHANGED
|
@@ -11,6 +11,9 @@ export interface ParsedOptions {
|
|
|
11
11
|
"env-file"?: string;
|
|
12
12
|
verbose: boolean;
|
|
13
13
|
quiet: boolean;
|
|
14
|
+
port?: string;
|
|
15
|
+
upstream?: string;
|
|
16
|
+
"api-key"?: string;
|
|
14
17
|
}
|
|
15
18
|
export declare function run(argv?: string[]): Promise<number>;
|
|
16
19
|
//# sourceMappingURL=main.d.ts.map
|
package/dist/cli/main.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA6DD,wBAAsB,GAAG,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,OAAO,CAAC,MAAM,CAAC,CAsGjF"}
|
package/dist/cli/main.js
CHANGED
|
@@ -5,6 +5,7 @@ import { anonymizeCommand } from "./commands/anonymize.js";
|
|
|
5
5
|
import { rehydrateCommand } from "./commands/rehydrate.js";
|
|
6
6
|
import { inspectCommand } from "./commands/inspect.js";
|
|
7
7
|
import { setupNerCommand } from "./commands/setup-ner.js";
|
|
8
|
+
import { proxyCommand } from "./commands/proxy.js";
|
|
8
9
|
const require = createRequire(import.meta.url);
|
|
9
10
|
const pkg = require("../../package.json");
|
|
10
11
|
const HELP_TEXT = `
|
|
@@ -14,10 +15,11 @@ ${bold("USAGE")}
|
|
|
14
15
|
rehydra <command> [file] [options]
|
|
15
16
|
|
|
16
17
|
${bold("COMMANDS")}
|
|
17
|
-
anonymize <file>
|
|
18
|
-
rehydrate <file>
|
|
19
|
-
inspect <file>
|
|
20
|
-
|
|
18
|
+
anonymize <file> Anonymize a file or stdin
|
|
19
|
+
rehydrate <file> Rehydrate a previously anonymized file
|
|
20
|
+
inspect <file> Show detected PII without anonymizing (dry run)
|
|
21
|
+
proxy <provider> Start a PII-filtering proxy for LLM APIs
|
|
22
|
+
setup-ner Download and set up NER model
|
|
21
23
|
|
|
22
24
|
${bold("OPTIONS")}
|
|
23
25
|
-o, --output <file> Output file (default: stdout)
|
|
@@ -30,6 +32,9 @@ ${bold("OPTIONS")}
|
|
|
30
32
|
--locale <locale> Locale hint for detection (e.g., de-DE)
|
|
31
33
|
--secrets Enable secrets/credentials detection
|
|
32
34
|
--env-file <file> .env file path for literal value redaction
|
|
35
|
+
-p, --port <port> Proxy port (default: 8787)
|
|
36
|
+
--upstream <url> Custom upstream URL (overrides provider default)
|
|
37
|
+
--api-key <key> LLM API key (or set LLM_API_KEY env var)
|
|
33
38
|
--no-color Disable colored output
|
|
34
39
|
--verbose Show detection details
|
|
35
40
|
-q, --quiet Suppress non-essential output
|
|
@@ -52,6 +57,10 @@ ${bold("EXAMPLES")}
|
|
|
52
57
|
${dim("# Inspect detected PII")}
|
|
53
58
|
rehydra inspect input.txt
|
|
54
59
|
|
|
60
|
+
${dim("# Start a proxy for Claude Code")}
|
|
61
|
+
rehydra proxy claude
|
|
62
|
+
${dim("# then: export ANTHROPIC_BASE_URL=http://127.0.0.1:8787")}
|
|
63
|
+
|
|
55
64
|
${bold("EXIT CODES")}
|
|
56
65
|
0 Success
|
|
57
66
|
1 Error
|
|
@@ -66,7 +75,7 @@ export async function run(argv = process.argv.slice(2)) {
|
|
|
66
75
|
options: {
|
|
67
76
|
output: { type: "string", short: "o" },
|
|
68
77
|
format: { type: "string", short: "f", default: "text" },
|
|
69
|
-
ner: { type: "string"
|
|
78
|
+
ner: { type: "string" },
|
|
70
79
|
"pii-map": { type: "string", default: ".rehydra-pii-map.json" },
|
|
71
80
|
key: { type: "string" },
|
|
72
81
|
types: { type: "string" },
|
|
@@ -74,6 +83,9 @@ export async function run(argv = process.argv.slice(2)) {
|
|
|
74
83
|
locale: { type: "string" },
|
|
75
84
|
secrets: { type: "boolean", default: false },
|
|
76
85
|
"env-file": { type: "string" },
|
|
86
|
+
port: { type: "string", short: "p" },
|
|
87
|
+
upstream: { type: "string" },
|
|
88
|
+
"api-key": { type: "string" },
|
|
77
89
|
"no-color": { type: "boolean", default: false },
|
|
78
90
|
verbose: { type: "boolean", default: false },
|
|
79
91
|
quiet: { type: "boolean", short: "q", default: false },
|
|
@@ -122,6 +134,9 @@ export async function run(argv = process.argv.slice(2)) {
|
|
|
122
134
|
"env-file": values["env-file"],
|
|
123
135
|
verbose: values["verbose"] === true,
|
|
124
136
|
quiet: values["quiet"] === true,
|
|
137
|
+
port: values["port"],
|
|
138
|
+
upstream: values["upstream"],
|
|
139
|
+
"api-key": values["api-key"],
|
|
125
140
|
};
|
|
126
141
|
switch (command) {
|
|
127
142
|
case "anonymize":
|
|
@@ -130,6 +145,15 @@ export async function run(argv = process.argv.slice(2)) {
|
|
|
130
145
|
return rehydrateCommand(filePath, options);
|
|
131
146
|
case "inspect":
|
|
132
147
|
return inspectCommand(filePath, options);
|
|
148
|
+
case "proxy": {
|
|
149
|
+
// Default to NER quantized for proxy (override global default of "disabled")
|
|
150
|
+
// unless the user explicitly passed --ner
|
|
151
|
+
const explicitNer = values["ner"];
|
|
152
|
+
if (explicitNer === undefined) {
|
|
153
|
+
options.ner = "quantized";
|
|
154
|
+
}
|
|
155
|
+
return proxyCommand(filePath, options);
|
|
156
|
+
}
|
|
133
157
|
case "setup-ner":
|
|
134
158
|
return setupNerCommand(options);
|
|
135
159
|
default:
|
package/dist/cli/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/opencode-plugin/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAQH,OAAO,KAAK,EAAe,oBAAoB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/opencode-plugin/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAQH,OAAO,KAAK,EAAe,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAKpE;;;GAGG;AACH,UAAU,WAAW;IACnB,MAAM,EAAE,cAAc,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,UAAU,cAAc;IACtB,GAAG,EAAE;QACH,GAAG,CAAC,KAAK,EAAE;YACT,IAAI,EAAE;gBACJ,OAAO,EAAE,MAAM,CAAC;gBAChB,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;gBAC3C,OAAO,EAAE,MAAM,CAAC;gBAChB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;aACjC,CAAC;SACH,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;KACtB,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,KAAK,MAAM,GAAG,CAAC,KAAK,EAAE,WAAW,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;AAErD,UAAU,KAAK;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAmCD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,MAAM,CA8O1E;;AAED,wBAAqC"}
|
|
@@ -15,10 +15,8 @@ import { AnonymizerSessionImpl } from "../storage/session-base.js";
|
|
|
15
15
|
import { InMemoryPIIStorageProvider } from "../storage/in-memory.js";
|
|
16
16
|
import { InMemoryKeyProvider } from "../crypto/index.js";
|
|
17
17
|
import { createDefaultPolicy, SECRET_PII_TYPES } from "../types/index.js";
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
IMPORTANT: Treat these placeholders exactly like real values. Do NOT try to resolve, decode, remove, or work around them. Use them as-is in commands, code, and tool calls. The rehydration layer handles the rest.
|
|
21
|
-
</rehydra>`;
|
|
18
|
+
import { DEFAULT_PII_SYSTEM_INSTRUCTION } from "../proxy/system-instruction.js";
|
|
19
|
+
const REHYDRA_INSTRUCTION = `<rehydra>\n${DEFAULT_PII_SYSTEM_INSTRUCTION}\n</rehydra>`;
|
|
22
20
|
/**
|
|
23
21
|
* Recursively rehydrate all string values containing PII tags.
|
|
24
22
|
* Returns a new value (for strings/arrays) or the same object mutated in-place
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/opencode-plugin/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAW,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/opencode-plugin/plugin.ts"],"names":[],"mappings":"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"}
|
package/dist/proxy/index.d.ts
CHANGED
|
@@ -5,8 +5,9 @@
|
|
|
5
5
|
export { createRehydraFetch } from "./rehydra-fetch.js";
|
|
6
6
|
export { createRehydraProxy } from "./rehydra-proxy.js";
|
|
7
7
|
export { wrapLLMClient } from "./wrap-client.js";
|
|
8
|
-
export { createRehydraProxyServer, type RehydraProxyServerConfig, type RehydraProxyServer, } from "./proxy-server.js";
|
|
8
|
+
export { createRehydraProxyServer, incomingMessageToRequest, writeResponse, type RehydraProxyServerConfig, type RehydraProxyServer, } from "./proxy-server.js";
|
|
9
9
|
export { SSEParser, isSSEDone, serializeSSEEvent, type SSEEvent } from "./sse-parser.js";
|
|
10
10
|
export { detectProvider, OpenAIProvider, AnthropicProvider, type LLMContentProvider, } from "./providers/index.js";
|
|
11
|
-
export type { RehydraFetchConfig, RehydraProxyConfig } from "./types.js";
|
|
11
|
+
export type { RehydraFetchConfig, RehydraProxyConfig, OnToolCallFn } from "./types.js";
|
|
12
|
+
export { DEFAULT_PII_SYSTEM_INSTRUCTION } from "./system-instruction.js";
|
|
12
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/proxy/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EACL,wBAAwB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,GACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,iBAAiB,EAAE,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACzF,OAAO,EACL,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,KAAK,kBAAkB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/proxy/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,aAAa,EACb,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,GACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,iBAAiB,EAAE,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACzF,OAAO,EACL,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,KAAK,kBAAkB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACvF,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC"}
|
package/dist/proxy/index.js
CHANGED
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
export { createRehydraFetch } from "./rehydra-fetch.js";
|
|
6
6
|
export { createRehydraProxy } from "./rehydra-proxy.js";
|
|
7
7
|
export { wrapLLMClient } from "./wrap-client.js";
|
|
8
|
-
export { createRehydraProxyServer, } from "./proxy-server.js";
|
|
8
|
+
export { createRehydraProxyServer, incomingMessageToRequest, writeResponse, } from "./proxy-server.js";
|
|
9
9
|
export { SSEParser, isSSEDone, serializeSSEEvent } from "./sse-parser.js";
|
|
10
10
|
export { detectProvider, OpenAIProvider, AnthropicProvider, } from "./providers/index.js";
|
|
11
|
+
export { DEFAULT_PII_SYSTEM_INSTRUCTION } from "./system-instruction.js";
|
|
11
12
|
//# sourceMappingURL=index.js.map
|
package/dist/proxy/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/proxy/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EACL,wBAAwB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/proxy/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,aAAa,GAGd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,iBAAiB,EAAiB,MAAM,iBAAiB,CAAC;AACzF,OAAO,EACL,cAAc,EACd,cAAc,EACd,iBAAiB,GAElB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Anthropic Content Provider
|
|
3
3
|
* Handles Anthropic Messages API format.
|
|
4
4
|
*/
|
|
5
|
-
import type { LLMContentProvider, ToolCallDelta } from "./types.js";
|
|
5
|
+
import type { LLMContentProvider, ToolCallDelta, ToolCallInfo, ToolResultMessage } from "./types.js";
|
|
6
6
|
export declare class AnthropicProvider implements LLMContentProvider {
|
|
7
7
|
readonly name = "anthropic";
|
|
8
8
|
matchesRequest(url: string, headers: Headers): boolean;
|
|
@@ -18,5 +18,10 @@ export declare class AnthropicProvider implements LLMContentProvider {
|
|
|
18
18
|
extractSSEToolCallDeltas(data: unknown): ToolCallDelta[] | null;
|
|
19
19
|
rebuildSSEToolCallDeltas(data: unknown, rehydratedArgs: Map<number, string>): unknown;
|
|
20
20
|
extractSSEToolCallStop(data: unknown): number | null;
|
|
21
|
+
hasResponseToolCalls(body: unknown): boolean;
|
|
22
|
+
extractResponseToolCallInfo(body: unknown): ToolCallInfo[];
|
|
23
|
+
extractMessages(body: unknown): unknown[];
|
|
24
|
+
buildToolLoopBody(originalBody: unknown, currentMessages: unknown[], assistantResponse: unknown, toolResults: ToolResultMessage[]): unknown;
|
|
25
|
+
injectSystemInstruction(body: unknown, instruction: string): unknown;
|
|
21
26
|
}
|
|
22
27
|
//# sourceMappingURL=anthropic.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../src/proxy/providers/anthropic.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../src/proxy/providers/anthropic.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,kBAAkB,EAClB,aAAa,EACb,YAAY,EACZ,iBAAiB,EAClB,MAAM,YAAY,CAAC;AA4CpB,qBAAa,iBAAkB,YAAW,kBAAkB;IAC1D,QAAQ,CAAC,IAAI,eAAe;IAE5B,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO;IAOtD,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,EAAE;IA2C3C,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,OAAO;IAwCrE,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,EAAE;IAa5C,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,OAAO;IAatE,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI;IAQ7C,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO;IAQ/D,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO;IAK1C,wBAAwB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,EAAE;IAajD,wBAAwB,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,OAAO;IAyB1E,wBAAwB,CAAC,IAAI,EAAE,OAAO,GAAG,aAAa,EAAE,GAAG,IAAI;IAc/D,wBAAwB,CACtB,IAAI,EAAE,OAAO,EACb,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAClC,OAAO;IAcV,sBAAsB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI;IAapD,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO;IAM5C,2BAA2B,CAAC,IAAI,EAAE,OAAO,GAAG,YAAY,EAAE;IAe1D,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,EAAE;IAKzC,iBAAiB,CACf,YAAY,EAAE,OAAO,EACrB,eAAe,EAAE,OAAO,EAAE,EAC1B,iBAAiB,EAAE,OAAO,EAC1B,WAAW,EAAE,iBAAiB,EAAE,GAC/B,OAAO;IAuBV,uBAAuB,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO;CAerE"}
|