@treza/cli 1.1.0 → 1.2.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.
Files changed (51) hide show
  1. package/README.md +19 -0
  2. package/dist/commands/kyc.js +39 -0
  3. package/dist/commands/kyc.js.map +1 -1
  4. package/dist/commands/pii.d.ts +3 -0
  5. package/dist/commands/pii.d.ts.map +1 -0
  6. package/dist/commands/pii.js +172 -0
  7. package/dist/commands/pii.js.map +1 -0
  8. package/dist/commands/redact/index.d.ts +3 -0
  9. package/dist/commands/redact/index.d.ts.map +1 -0
  10. package/dist/commands/redact/index.js +10 -0
  11. package/dist/commands/redact/index.js.map +1 -0
  12. package/dist/commands/redact/log.d.ts +3 -0
  13. package/dist/commands/redact/log.d.ts.map +1 -0
  14. package/dist/commands/redact/log.js +48 -0
  15. package/dist/commands/redact/log.js.map +1 -0
  16. package/dist/commands/redact/proxy.d.ts +3 -0
  17. package/dist/commands/redact/proxy.d.ts.map +1 -0
  18. package/dist/commands/redact/proxy.js +269 -0
  19. package/dist/commands/redact/proxy.js.map +1 -0
  20. package/dist/commands/redact/run.d.ts +3 -0
  21. package/dist/commands/redact/run.d.ts.map +1 -0
  22. package/dist/commands/redact/run.js +115 -0
  23. package/dist/commands/redact/run.js.map +1 -0
  24. package/dist/commands/redact/trial.d.ts +3 -0
  25. package/dist/commands/redact/trial.d.ts.map +1 -0
  26. package/dist/commands/redact/trial.js +33 -0
  27. package/dist/commands/redact/trial.js.map +1 -0
  28. package/dist/index.js +6 -0
  29. package/dist/index.js.map +1 -1
  30. package/dist/utils/api.d.ts +36 -0
  31. package/dist/utils/api.d.ts.map +1 -1
  32. package/dist/utils/api.js +41 -0
  33. package/dist/utils/api.js.map +1 -1
  34. package/dist/utils/config.d.ts +6 -0
  35. package/dist/utils/config.d.ts.map +1 -1
  36. package/dist/utils/config.js +15 -0
  37. package/dist/utils/config.js.map +1 -1
  38. package/dist/utils/redact-api.d.ts +124 -0
  39. package/dist/utils/redact-api.d.ts.map +1 -0
  40. package/dist/utils/redact-api.js +231 -0
  41. package/dist/utils/redact-api.js.map +1 -0
  42. package/dist/utils/redact-config.d.ts +22 -0
  43. package/dist/utils/redact-config.d.ts.map +1 -0
  44. package/dist/utils/redact-config.js +27 -0
  45. package/dist/utils/redact-config.js.map +1 -0
  46. package/dist/utils/redact-local.d.ts +3 -0
  47. package/dist/utils/redact-local.d.ts.map +1 -0
  48. package/dist/utils/redact-local.js +160 -0
  49. package/dist/utils/redact-local.js.map +1 -0
  50. package/dist/utils/redact-manifest.json +44 -0
  51. package/package.json +3 -2
@@ -0,0 +1,269 @@
1
+ import { Command } from 'commander';
2
+ import * as http from 'http';
3
+ import chalk from 'chalk';
4
+ import { chatCompletionProxy, chatCompletionProxyStream, StreamRehydrator, fetchAttestation, RedactApiError, MissingCredentialsError, } from '../../utils/redact-api.js';
5
+ const DEFAULT_PORT = 8717;
6
+ function applyRehydration(value, map) {
7
+ if (typeof value === 'string') {
8
+ let out = value;
9
+ for (const [placeholder, original] of Object.entries(map)) {
10
+ out = out.split(placeholder).join(original);
11
+ }
12
+ return out;
13
+ }
14
+ if (Array.isArray(value)) {
15
+ return value.map((v) => applyRehydration(v, map));
16
+ }
17
+ if (value && typeof value === 'object') {
18
+ const result = {};
19
+ for (const [k, v] of Object.entries(value)) {
20
+ result[k] = applyRehydration(v, map);
21
+ }
22
+ return result;
23
+ }
24
+ return value;
25
+ }
26
+ async function readRequestBody(req) {
27
+ const chunks = [];
28
+ for await (const chunk of req) {
29
+ chunks.push(typeof chunk === 'string' ? Buffer.from(chunk) : chunk);
30
+ }
31
+ return Buffer.concat(chunks).toString('utf8');
32
+ }
33
+ function send(res, status, body) {
34
+ res.statusCode = status;
35
+ res.setHeader('Content-Type', 'application/json');
36
+ res.end(typeof body === 'string' ? body : JSON.stringify(body));
37
+ }
38
+ /**
39
+ * Pipe an upstream SSE chat-completion stream to the local client.
40
+ *
41
+ * Without `--rehydrate` the raw bytes are forwarded untouched (the privacy
42
+ * default — placeholders stay in the output). With `--rehydrate` we decode the
43
+ * SSE, swap placeholders back to originals across chunk boundaries via
44
+ * {@link StreamRehydrator}, and re-emit valid SSE.
45
+ */
46
+ async function streamChatCompletion(res, upstream, rehydrate) {
47
+ // Upstream returned a non-SSE body (e.g. a JSON error) despite stream:true —
48
+ // forward it verbatim as a normal response.
49
+ if (!upstream.stream) {
50
+ if (upstream.requestId)
51
+ res.setHeader('x-treza-request-id', upstream.requestId);
52
+ res.setHeader('x-treza-mode', 'tee');
53
+ send(res, upstream.status, upstream.body ?? { error: 'empty upstream response' });
54
+ return;
55
+ }
56
+ res.statusCode = upstream.status;
57
+ res.setHeader('Content-Type', 'text/event-stream; charset=utf-8');
58
+ res.setHeader('Cache-Control', 'no-cache, no-transform');
59
+ res.setHeader('Connection', 'keep-alive');
60
+ if (upstream.requestId)
61
+ res.setHeader('x-treza-request-id', upstream.requestId);
62
+ res.setHeader('x-treza-mode', 'tee');
63
+ const reader = upstream.stream.getReader();
64
+ res.on('close', () => { void reader.cancel().catch(() => { }); });
65
+ const map = rehydrate ? upstream.rehydrationMap : undefined;
66
+ // Fast path: nothing to rehydrate — forward the SSE bytes unchanged.
67
+ if (!map || Object.keys(map).length === 0) {
68
+ for (;;) {
69
+ const { value, done } = await reader.read();
70
+ if (done)
71
+ break;
72
+ res.write(Buffer.from(value));
73
+ }
74
+ res.end();
75
+ return;
76
+ }
77
+ // Rehydrating path: one rehydrator per choice index so split placeholders are
78
+ // resolved against accumulated text, never an individual delta.
79
+ const decoder = new TextDecoder();
80
+ const rehydrators = new Map();
81
+ const rehydratorFor = (i) => {
82
+ let r = rehydrators.get(i);
83
+ if (!r) {
84
+ r = new StreamRehydrator(map);
85
+ rehydrators.set(i, r);
86
+ }
87
+ return r;
88
+ };
89
+ const handleLine = (line) => {
90
+ if (!line.startsWith('data:')) {
91
+ // Event separators (blank lines) and comments pass through untouched.
92
+ res.write(line + '\n');
93
+ return;
94
+ }
95
+ const payload = line.slice(5).trim();
96
+ if (payload === '[DONE]') {
97
+ // Drain any held-back tail (safety net — finish chunks already flush).
98
+ for (const [i, r] of rehydrators) {
99
+ const tail = r.flush();
100
+ if (tail) {
101
+ res.write(`data: ${JSON.stringify({ choices: [{ index: i, delta: { content: tail } }] })}\n\n`);
102
+ }
103
+ }
104
+ res.write('data: [DONE]\n');
105
+ return;
106
+ }
107
+ let chunk;
108
+ try {
109
+ chunk = JSON.parse(payload);
110
+ }
111
+ catch {
112
+ res.write(line + '\n');
113
+ return;
114
+ }
115
+ for (const choice of chunk.choices ?? []) {
116
+ const r = rehydratorFor(typeof choice.index === 'number' ? choice.index : 0);
117
+ const delta = choice.delta;
118
+ const hadContent = delta != null && typeof delta.content === 'string';
119
+ let piece = hadContent ? r.push(delta.content) : '';
120
+ if (choice.finish_reason != null)
121
+ piece += r.flush();
122
+ if (delta != null && (hadContent || piece))
123
+ delta.content = piece;
124
+ }
125
+ res.write(`data: ${JSON.stringify(chunk)}\n`);
126
+ };
127
+ let buf = '';
128
+ for (;;) {
129
+ const { value, done } = await reader.read();
130
+ if (done)
131
+ break;
132
+ buf += decoder.decode(value, { stream: true });
133
+ let nl;
134
+ while ((nl = buf.indexOf('\n')) !== -1) {
135
+ handleLine(buf.slice(0, nl));
136
+ buf = buf.slice(nl + 1);
137
+ }
138
+ }
139
+ if (buf)
140
+ handleLine(buf);
141
+ res.end();
142
+ }
143
+ export const proxyCommand = new Command('proxy')
144
+ .description('Run a local OpenAI-compatible endpoint that redacts in-flight via the TEE')
145
+ .option('-p, --port <n>', 'Local port to listen on', String(DEFAULT_PORT))
146
+ .option('--model-key <key>', 'Caller OpenAI key for the upstream call (defaults to OPENAI_API_KEY)')
147
+ .option('--rehydrate', 'Substitute placeholders back to originals in responses (client-side only)', false)
148
+ .option('--api-key <key>', 'Override configured Treza API key')
149
+ .action(async (options) => {
150
+ const modelKey = options.modelKey || process.env.OPENAI_API_KEY;
151
+ if (!modelKey) {
152
+ console.error(chalk.red('Missing upstream model key. Set OPENAI_API_KEY in your environment or pass --model-key.'));
153
+ process.exit(1);
154
+ }
155
+ const port = options.port ? parseInt(options.port, 10) : DEFAULT_PORT;
156
+ if (!Number.isFinite(port) || port <= 0) {
157
+ console.error(chalk.red(`Invalid --port value: ${options.port}`));
158
+ process.exit(1);
159
+ }
160
+ let attest;
161
+ try {
162
+ attest = await fetchAttestation({ apiKey: options.apiKey });
163
+ }
164
+ catch (err) {
165
+ if (err instanceof MissingCredentialsError) {
166
+ console.error(chalk.red(err.message));
167
+ process.exit(1);
168
+ }
169
+ console.error(chalk.red(`Failed to fetch attestation: ${err.message}`));
170
+ if (err instanceof RedactApiError && err.statusCode === 403) {
171
+ console.error(chalk.yellow('Your API key is missing redact permissions. Contact your Treza account team.'));
172
+ }
173
+ process.exit(1);
174
+ }
175
+ const server = http.createServer(async (req, res) => {
176
+ const startedAt = Date.now();
177
+ const url = req.url || '/';
178
+ if (req.method === 'GET' && (url === '/' || url === '/v1/health' || url === '/healthz')) {
179
+ send(res, 200, { ok: true, mode: 'tee', attestation: attest });
180
+ return;
181
+ }
182
+ if (req.method !== 'POST' || !url.startsWith('/v1/chat/completions')) {
183
+ send(res, 404, { error: 'Not found. Try POST /v1/chat/completions' });
184
+ return;
185
+ }
186
+ const rawBody = await readRequestBody(req);
187
+ let body;
188
+ try {
189
+ body = rawBody ? JSON.parse(rawBody) : {};
190
+ }
191
+ catch {
192
+ send(res, 400, { error: 'Invalid JSON in request body' });
193
+ return;
194
+ }
195
+ const wantsStream = body.stream === true;
196
+ try {
197
+ if (wantsStream) {
198
+ const upstream = await chatCompletionProxyStream(body, modelKey, {
199
+ rehydrate: options.rehydrate,
200
+ apiKey: options.apiKey,
201
+ });
202
+ await streamChatCompletion(res, upstream, !!options.rehydrate);
203
+ const ms = Date.now() - startedAt;
204
+ console.log(chalk.gray(`[${new Date().toISOString()}] POST /v1/chat/completions (stream) → ${upstream.status} (${ms}ms)`));
205
+ return;
206
+ }
207
+ const upstream = await chatCompletionProxy(body, modelKey, {
208
+ rehydrate: options.rehydrate,
209
+ apiKey: options.apiKey,
210
+ });
211
+ let payload = upstream.body;
212
+ if (options.rehydrate && upstream.rehydrationMap) {
213
+ payload = applyRehydration(payload, upstream.rehydrationMap);
214
+ }
215
+ if (upstream.requestId)
216
+ res.setHeader('x-treza-request-id', upstream.requestId);
217
+ res.setHeader('x-treza-mode', 'tee');
218
+ send(res, upstream.status, payload);
219
+ const ms = Date.now() - startedAt;
220
+ console.log(chalk.gray(`[${new Date().toISOString()}] POST /v1/chat/completions → ${upstream.status} (${ms}ms)`));
221
+ }
222
+ catch (err) {
223
+ const status = err instanceof RedactApiError ? err.statusCode || 502 : 502;
224
+ const message = err instanceof Error
225
+ ? err.message
226
+ : 'Redaction upstream failed; payload was NOT forwarded to the model provider.';
227
+ // If a stream was already in flight the headers (and some bytes) are
228
+ // gone — just close the connection. Redaction itself happens before the
229
+ // first byte, so a mid-stream failure never leaks un-redacted data.
230
+ if (res.headersSent) {
231
+ res.end();
232
+ }
233
+ else {
234
+ send(res, status, {
235
+ error: 'redaction_failed',
236
+ message,
237
+ note: 'No data was forwarded upstream. The proxy fails closed when the TEE step errors.',
238
+ });
239
+ }
240
+ console.error(chalk.red(`[${new Date().toISOString()}] redaction failed: ${message}`));
241
+ }
242
+ });
243
+ server.listen(port, () => {
244
+ const base = `http://localhost:${port}/v1`;
245
+ console.log('');
246
+ console.log(chalk.bold('Treza redaction proxy running.'));
247
+ console.log(chalk.gray(` Base URL: ${base}`));
248
+ console.log(chalk.gray(` Upstream: api.openai.com`));
249
+ console.log(chalk.gray(` TEE: attested (enclave ${attest?.enclaveId || 'unknown'}, ${attest?.region || 'unknown'})`));
250
+ if (options.rehydrate) {
251
+ console.log(chalk.yellow(' Rehydrate: ON (placeholders replaced client-side in responses)'));
252
+ }
253
+ console.log(chalk.gray(' Streaming: supported (stream:true) — buffered and SSE both proxied'));
254
+ console.log('');
255
+ console.log(chalk.bold('Point your client here:'));
256
+ console.log(chalk.cyan(` openai.base_url = "${base}"`));
257
+ console.log('');
258
+ console.log(chalk.gray('Logging redactions to: treza redact log'));
259
+ console.log('');
260
+ });
261
+ const shutdown = () => {
262
+ console.log('\n' + chalk.gray('Shutting down proxy…'));
263
+ server.close(() => process.exit(0));
264
+ setTimeout(() => process.exit(0), 2000).unref();
265
+ };
266
+ process.on('SIGINT', shutdown);
267
+ process.on('SIGTERM', shutdown);
268
+ });
269
+ //# sourceMappingURL=proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../../src/commands/redact/proxy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const runCommand: Command;
3
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/commands/redact/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6CpC,eAAO,MAAM,UAAU,SAmFnB,CAAC"}
@@ -0,0 +1,115 @@
1
+ import { Command } from 'commander';
2
+ import * as fs from 'fs';
3
+ import chalk from 'chalk';
4
+ import { redactText, RedactApiError, MissingCredentialsError, } from '../../utils/redact-api.js';
5
+ async function readStdin() {
6
+ if (process.stdin.isTTY)
7
+ return '';
8
+ const chunks = [];
9
+ for await (const chunk of process.stdin) {
10
+ chunks.push(typeof chunk === 'string' ? Buffer.from(chunk) : chunk);
11
+ }
12
+ return Buffer.concat(chunks).toString('utf8');
13
+ }
14
+ function formatMap(result) {
15
+ const lines = [`Redacted ${result.entities.length} entities:`];
16
+ for (const e of result.entities) {
17
+ const pad = e.placeholder.padEnd(12);
18
+ lines.push(` ${pad} chars ${e.start}-${e.end}`);
19
+ }
20
+ return lines.join('\n');
21
+ }
22
+ function modeBanner(mode, attest) {
23
+ if (mode === 'tee') {
24
+ const id = attest?.enclaveId || 'unknown';
25
+ const region = attest?.region || 'unknown';
26
+ return chalk.gray(`Mode: tee (attested, enclave ${id}, region ${region})`);
27
+ }
28
+ return chalk.yellow('Mode: local (NOT ATTESTED, no audit log)');
29
+ }
30
+ export const runCommand = new Command('run')
31
+ .description('Redact PII/PHI from a file or stdin')
32
+ .argument('[file]', 'File to redact (omit to read from stdin)')
33
+ .option('--show-map', 'Also print the entity map (to stderr unless --json)', false)
34
+ .option('--json', 'Emit { redacted, entities } as a single JSON object on stdout', false)
35
+ .option('--out <file>', 'Write redacted text to a file instead of stdout')
36
+ .option('--api-key <key>', 'Override configured API key (TEE mode only)')
37
+ .option('--local', 'Run redaction in-process (NOT ATTESTED, no audit log)', false)
38
+ .action(async (file, options) => {
39
+ let input;
40
+ try {
41
+ if (file) {
42
+ input = fs.readFileSync(file, 'utf8');
43
+ }
44
+ else {
45
+ input = await readStdin();
46
+ }
47
+ }
48
+ catch (err) {
49
+ console.error(chalk.red(`Error reading input: ${err.message}`));
50
+ process.exit(1);
51
+ }
52
+ if (!input || !input.trim()) {
53
+ console.error(chalk.red('No input provided. Pipe text via stdin or pass a file path.'));
54
+ process.exit(1);
55
+ }
56
+ let result;
57
+ let bannerAttest;
58
+ try {
59
+ if (options.local) {
60
+ const { redactTextLocal } = await import('../../utils/redact-local.js');
61
+ result = await redactTextLocal(input);
62
+ }
63
+ else {
64
+ result = await redactText(input, { apiKey: options.apiKey });
65
+ bannerAttest = result.attestation
66
+ ? { enclaveId: result.attestation.enclaveId, region: result.attestation.region }
67
+ : undefined;
68
+ }
69
+ }
70
+ catch (err) {
71
+ if (err instanceof MissingCredentialsError) {
72
+ console.error(chalk.red(err.message));
73
+ process.exit(1);
74
+ }
75
+ if (err instanceof RedactApiError) {
76
+ console.error(chalk.red(`Redaction failed: ${err.message}`));
77
+ if (err.statusCode === 401) {
78
+ console.error(chalk.yellow('Your API key may be invalid or your wallet header may not match the key owner.'));
79
+ }
80
+ else if (err.statusCode === 403) {
81
+ console.error(chalk.yellow('Your API key is missing redact:run permission. Contact your Treza account team.'));
82
+ }
83
+ process.exit(1);
84
+ }
85
+ console.error(chalk.red(`Redaction failed: ${err.message}`));
86
+ console.error(chalk.gray('Re-run with `--local` to use the on-device engine (NOT ATTESTED).'));
87
+ process.exit(1);
88
+ }
89
+ if (options.json) {
90
+ const payload = {
91
+ redacted: result.redacted,
92
+ entities: result.entities,
93
+ mode: options.local ? 'local' : 'tee',
94
+ attestation: result.attestation,
95
+ modelVersion: result.modelVersion,
96
+ recognizerVersion: result.recognizerVersion,
97
+ };
98
+ process.stdout.write(JSON.stringify(payload, null, 2) + '\n');
99
+ return;
100
+ }
101
+ if (options.out) {
102
+ fs.writeFileSync(options.out, result.redacted, 'utf8');
103
+ console.error(chalk.green(`Wrote redacted output to ${options.out}`));
104
+ }
105
+ else {
106
+ process.stdout.write(result.redacted);
107
+ if (!result.redacted.endsWith('\n'))
108
+ process.stdout.write('\n');
109
+ }
110
+ if (options.showMap) {
111
+ process.stderr.write('\n' + modeBanner(options.local ? 'local' : 'tee', bannerAttest) + '\n');
112
+ process.stderr.write(formatMap(result) + '\n');
113
+ }
114
+ });
115
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/commands/redact/run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const trialCommand: Command;
3
+ //# sourceMappingURL=trial.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trial.d.ts","sourceRoot":"","sources":["../../../src/commands/redact/trial.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,eAAO,MAAM,YAAY,SAwBrB,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { Command } from 'commander';
2
+ import ora from 'ora';
3
+ import chalk from 'chalk';
4
+ import { claimTrialKey, RedactApiError } from '../../utils/redact-api.js';
5
+ import { getRedactApiUrl, saveRedactApiKey } from '../../utils/redact-config.js';
6
+ import * as output from '../../utils/output.js';
7
+ export const trialCommand = new Command('trial')
8
+ .description('Get a free, rate-limited redaction API key (no signup)')
9
+ .action(async () => {
10
+ const apiUrl = getRedactApiUrl();
11
+ const spinner = ora('Requesting trial key…').start();
12
+ try {
13
+ const res = await claimTrialKey(apiUrl);
14
+ saveRedactApiKey(res.apiKey);
15
+ spinner.succeed('Trial key issued');
16
+ console.log('');
17
+ output.keyValue('Key', '••••••••' + res.apiKey.slice(-6));
18
+ output.keyValue('Tier', res.tier);
19
+ output.keyValue('Daily quota', String(res.quotaPerDay));
20
+ output.keyValue('Resets at', res.resetsAt);
21
+ console.log('');
22
+ console.log(chalk.gray('Saved to CLI config. Try it:'));
23
+ console.log(chalk.cyan(' echo "Patient John Doe, SSN 123-45-6789" | treza redact run --show-map'));
24
+ }
25
+ catch (err) {
26
+ spinner.fail(err instanceof Error ? err.message : String(err));
27
+ if (err instanceof RedactApiError && err.statusCode === 429) {
28
+ console.log(chalk.yellow('\nTrial key rate limit reached. Try again later or contact sales for an upgrade.'));
29
+ }
30
+ process.exit(1);
31
+ }
32
+ });
33
+ //# sourceMappingURL=trial.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trial.js","sourceRoot":"","sources":["../../../src/commands/redact/trial.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACjF,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAC;AAEhD,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;KAC7C,WAAW,CAAC,wDAAwD,CAAC;KACrE,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,MAAM,OAAO,GAAG,GAAG,CAAC,uBAAuB,CAAC,CAAC,KAAK,EAAE,CAAC;IACrD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC;QACxC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC7B,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;QACxD,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC,CAAC;IACtG,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/D,IAAI,GAAG,YAAY,cAAc,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;YAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,kFAAkF,CAAC,CAAC,CAAC;QAChH,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
package/dist/index.js CHANGED
@@ -6,6 +6,8 @@ import { enclaveCommand } from './commands/enclave.js';
6
6
  import { kycCommand } from './commands/kyc.js';
7
7
  import { providerCommand } from './commands/provider.js';
8
8
  import { taskCommand } from './commands/task.js';
9
+ import { piiCommand } from './commands/pii.js';
10
+ import { redactCommand } from './commands/redact/index.js';
9
11
  import { getConfig } from './utils/config.js';
10
12
  const VERSION = '1.0.0';
11
13
  const program = new Command();
@@ -36,6 +38,8 @@ program.addCommand(enclaveCommand);
36
38
  program.addCommand(kycCommand);
37
39
  program.addCommand(providerCommand);
38
40
  program.addCommand(taskCommand);
41
+ program.addCommand(piiCommand);
42
+ program.addCommand(redactCommand);
39
43
  // Custom help
40
44
  program.on('--help', () => {
41
45
  console.log('');
@@ -44,6 +48,8 @@ program.on('--help', () => {
44
48
  console.log(' $ treza enclave list # List your enclaves');
45
49
  console.log(' $ treza enclave create --name "Bot" # Create an enclave');
46
50
  console.log(' $ treza kyc verify <proof-id> # Verify a KYC proof');
51
+ console.log(' $ echo "..." | treza redact run --show-map # Redact PII');
52
+ console.log(' $ treza redact proxy # Local PII-redacting OpenAI proxy');
47
53
  console.log('');
48
54
  console.log('Documentation:');
49
55
  console.log(` ${chalk.cyan('https://docs.treza.xyz/cli')}`);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,MAAM,OAAO,GAAG,OAAO,CAAC;AAExB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,mBAAmB;AACnB,MAAM,MAAM,GAAG;EACb,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,4CAA4C,CAAC;EAClE,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,uBAAuB,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC;EACxI,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC;EAC9G,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,4CAA4C,CAAC;CACnE,CAAC;AAEF,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,+CAA+C,CAAC;KAC5D,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,wBAAwB,CAAC;KAC3D,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,EAAE;IACjC,uDAAuD;IACvD,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxC,IAAI,WAAW,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7D,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,gDAAgD,CAAC,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,eAAe;AACf,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAEhC,cAAc;AACd,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;IACxB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzB,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;IACxE,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;IAC5E,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,EAAE,CAAC,CAAC;AAC/D,CAAC,CAAC,CAAC;AAEH,yBAAyB;AACzB,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;IAC9B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpB,OAAO,CAAC,UAAU,EAAE,CAAC;AACvB,CAAC;KAAM,CAAC;IACN,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -121,5 +121,41 @@ export declare function createTask(data: {
121
121
  export declare function deleteTask(id: string): Promise<{
122
122
  message: string;
123
123
  }>;
124
+ export declare function piiIngest(body: Record<string, unknown>): Promise<unknown>;
125
+ export declare function piiRetrieve(body: Record<string, unknown>): Promise<unknown>;
126
+ export declare function piiDelete(piiId: string): Promise<unknown>;
127
+ export declare function piiConsentGrant(body: Record<string, unknown>): Promise<unknown>;
128
+ export declare function piiConsentRevoke(consentId: string): Promise<unknown>;
129
+ export interface PiiAuditEvent {
130
+ eventId: string;
131
+ workflowId: string;
132
+ workflowRunId: string;
133
+ stepId: string;
134
+ stepName: string;
135
+ piiFieldsPresent: string[];
136
+ piiFieldsAllowed: string[];
137
+ piiFieldsStripped: string[];
138
+ hadViolation: boolean;
139
+ timestamp: string;
140
+ account?: string;
141
+ walletAddress?: string;
142
+ }
143
+ export interface PiiAuditResponse {
144
+ summary: {
145
+ total: number;
146
+ violations: number;
147
+ workflows: string[];
148
+ };
149
+ events: PiiAuditEvent[];
150
+ }
151
+ export declare function piiAudit(params: {
152
+ wallet?: string;
153
+ workflowId?: string;
154
+ violations?: boolean;
155
+ startDate?: string;
156
+ limit?: string;
157
+ }): Promise<PiiAuditResponse>;
158
+ /** KYC → PII bridge (verified proof in DynamoDB + encrypted PII row). */
159
+ export declare function kycPiiBridge(body: Record<string, unknown>): Promise<unknown>;
124
160
  export {};
125
161
  //# sourceMappingURL=api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/utils/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/utils/api.ts"],"names":[],"mappings":"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"}
package/dist/utils/api.js CHANGED
@@ -18,12 +18,16 @@ export async function apiRequest(endpoint, options = {}) {
18
18
  const searchParams = new URLSearchParams(options.params);
19
19
  url += `?${searchParams.toString()}`;
20
20
  }
21
+ const walletAddress = getWalletAddress();
21
22
  const headers = {
22
23
  'Content-Type': 'application/json',
23
24
  };
24
25
  if (apiKey) {
25
26
  headers['Authorization'] = `Bearer ${apiKey}`;
26
27
  }
28
+ if (walletAddress) {
29
+ headers['x-treza-wallet'] = walletAddress;
30
+ }
27
31
  const response = await fetch(url, {
28
32
  method: options.method || 'GET',
29
33
  headers,
@@ -101,4 +105,41 @@ export async function deleteTask(id) {
101
105
  params: { id, wallet },
102
106
  });
103
107
  }
108
+ // PII / TEE API
109
+ export async function piiIngest(body) {
110
+ return apiRequest('/api/pii/ingest', { method: 'POST', body });
111
+ }
112
+ export async function piiRetrieve(body) {
113
+ return apiRequest('/api/pii/retrieve', { method: 'POST', body });
114
+ }
115
+ export async function piiDelete(piiId) {
116
+ return apiRequest('/api/pii/delete', { method: 'POST', body: { piiId } });
117
+ }
118
+ export async function piiConsentGrant(body) {
119
+ return apiRequest('/api/pii/consent', { method: 'POST', body });
120
+ }
121
+ export async function piiConsentRevoke(consentId) {
122
+ return apiRequest('/api/pii/consent', {
123
+ method: 'POST',
124
+ body: { revoke: true, consentId },
125
+ });
126
+ }
127
+ export async function piiAudit(params) {
128
+ // `account` is the canonical tenant param (legacy `walletAddress` still
129
+ // accepted server-side). Reads require an API key with the pii:audit scope
130
+ // whose account matches the x-treza-wallet header sent by apiRequest().
131
+ const account = params.wallet || getWalletAddress();
132
+ const q = { account, limit: params.limit || '100' };
133
+ if (params.workflowId)
134
+ q.workflowId = params.workflowId;
135
+ if (params.violations)
136
+ q.violations = 'true';
137
+ if (params.startDate)
138
+ q.startDate = params.startDate;
139
+ return apiRequest('/api/pii/audit', { params: q });
140
+ }
141
+ /** KYC → PII bridge (verified proof in DynamoDB + encrypted PII row). */
142
+ export async function kycPiiBridge(body) {
143
+ return apiRequest('/api/kyc/pii-bridge', { method: 'POST', body });
144
+ }
104
145
  //# sourceMappingURL=api.js.map