@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.
- package/README.md +19 -0
- package/dist/commands/kyc.js +39 -0
- package/dist/commands/kyc.js.map +1 -1
- package/dist/commands/pii.d.ts +3 -0
- package/dist/commands/pii.d.ts.map +1 -0
- package/dist/commands/pii.js +172 -0
- package/dist/commands/pii.js.map +1 -0
- package/dist/commands/redact/index.d.ts +3 -0
- package/dist/commands/redact/index.d.ts.map +1 -0
- package/dist/commands/redact/index.js +10 -0
- package/dist/commands/redact/index.js.map +1 -0
- package/dist/commands/redact/log.d.ts +3 -0
- package/dist/commands/redact/log.d.ts.map +1 -0
- package/dist/commands/redact/log.js +48 -0
- package/dist/commands/redact/log.js.map +1 -0
- package/dist/commands/redact/proxy.d.ts +3 -0
- package/dist/commands/redact/proxy.d.ts.map +1 -0
- package/dist/commands/redact/proxy.js +269 -0
- package/dist/commands/redact/proxy.js.map +1 -0
- package/dist/commands/redact/run.d.ts +3 -0
- package/dist/commands/redact/run.d.ts.map +1 -0
- package/dist/commands/redact/run.js +115 -0
- package/dist/commands/redact/run.js.map +1 -0
- package/dist/commands/redact/trial.d.ts +3 -0
- package/dist/commands/redact/trial.d.ts.map +1 -0
- package/dist/commands/redact/trial.js +33 -0
- package/dist/commands/redact/trial.js.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/utils/api.d.ts +36 -0
- package/dist/utils/api.d.ts.map +1 -1
- package/dist/utils/api.js +41 -0
- package/dist/utils/api.js.map +1 -1
- package/dist/utils/config.d.ts +6 -0
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +15 -0
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/redact-api.d.ts +124 -0
- package/dist/utils/redact-api.d.ts.map +1 -0
- package/dist/utils/redact-api.js +231 -0
- package/dist/utils/redact-api.js.map +1 -0
- package/dist/utils/redact-config.d.ts +22 -0
- package/dist/utils/redact-config.d.ts.map +1 -0
- package/dist/utils/redact-config.js +27 -0
- package/dist/utils/redact-config.js.map +1 -0
- package/dist/utils/redact-local.d.ts +3 -0
- package/dist/utils/redact-local.d.ts.map +1 -0
- package/dist/utils/redact-local.js +160 -0
- package/dist/utils/redact-local.js.map +1 -0
- package/dist/utils/redact-manifest.json +44 -0
- package/package.json +3 -2
package/dist/utils/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/utils/api.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/utils/api.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/config.d.ts
CHANGED
|
@@ -3,11 +3,17 @@ interface TrezaConfig {
|
|
|
3
3
|
apiUrl: string;
|
|
4
4
|
walletAddress: string;
|
|
5
5
|
apiKey?: string;
|
|
6
|
+
/** Default Nitro PII_PROCESSOR enclave id for `treza pii` commands */
|
|
7
|
+
piiProcessorEnclaveId?: string;
|
|
8
|
+
/** Compliance labeling for client-side tooling (gdpr | ccpa | hipaa | off) */
|
|
9
|
+
complianceMode?: string;
|
|
6
10
|
}
|
|
7
11
|
export declare function getConfig(): Conf<TrezaConfig>;
|
|
8
12
|
export declare function isConfigured(): boolean;
|
|
9
13
|
export declare function getApiUrl(): string;
|
|
10
14
|
export declare function getWalletAddress(): string;
|
|
11
15
|
export declare function getApiKey(): string | undefined;
|
|
16
|
+
export declare function getPiiProcessorEnclaveId(): string | undefined;
|
|
17
|
+
export declare function getComplianceMode(): string;
|
|
12
18
|
export {};
|
|
13
19
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,8EAA8E;IAC9E,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AA2BD,wBAAgB,SAAS,IAAI,IAAI,CAAC,WAAW,CAAC,CAQ7C;AAED,wBAAgB,YAAY,IAAI,OAAO,CAGtC;AAED,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,SAAS,IAAI,MAAM,GAAG,SAAS,CAE9C;AAED,wBAAgB,wBAAwB,IAAI,MAAM,GAAG,SAAS,CAG7D;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C"}
|
package/dist/utils/config.js
CHANGED
|
@@ -12,6 +12,14 @@ const schema = {
|
|
|
12
12
|
type: 'string',
|
|
13
13
|
default: '',
|
|
14
14
|
},
|
|
15
|
+
piiProcessorEnclaveId: {
|
|
16
|
+
type: 'string',
|
|
17
|
+
default: '',
|
|
18
|
+
},
|
|
19
|
+
complianceMode: {
|
|
20
|
+
type: 'string',
|
|
21
|
+
default: 'off',
|
|
22
|
+
},
|
|
15
23
|
};
|
|
16
24
|
let configInstance = null;
|
|
17
25
|
export function getConfig() {
|
|
@@ -36,4 +44,11 @@ export function getWalletAddress() {
|
|
|
36
44
|
export function getApiKey() {
|
|
37
45
|
return getConfig().get('apiKey') || undefined;
|
|
38
46
|
}
|
|
47
|
+
export function getPiiProcessorEnclaveId() {
|
|
48
|
+
const v = getConfig().get('piiProcessorEnclaveId');
|
|
49
|
+
return v ? String(v) : undefined;
|
|
50
|
+
}
|
|
51
|
+
export function getComplianceMode() {
|
|
52
|
+
return getConfig().get('complianceMode') || 'off';
|
|
53
|
+
}
|
|
39
54
|
//# sourceMappingURL=config.js.map
|
package/dist/utils/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAYxB,MAAM,MAAM,GAAG;IACb,MAAM,EAAE;QACN,IAAI,EAAE,QAAiB;QACvB,OAAO,EAAE,2BAA2B;KACrC;IACD,aAAa,EAAE;QACb,IAAI,EAAE,QAAiB;QACvB,OAAO,EAAE,EAAE;KACZ;IACD,MAAM,EAAE;QACN,IAAI,EAAE,QAAiB;QACvB,OAAO,EAAE,EAAE;KACZ;IACD,qBAAqB,EAAE;QACrB,IAAI,EAAE,QAAiB;QACvB,OAAO,EAAE,EAAE;KACZ;IACD,cAAc,EAAE;QACd,IAAI,EAAE,QAAiB;QACvB,OAAO,EAAE,KAAK;KACf;CACF,CAAC;AAEF,IAAI,cAAc,GAA6B,IAAI,CAAC;AAEpD,MAAM,UAAU,SAAS;IACvB,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,cAAc,GAAG,IAAI,IAAI,CAAc;YACrC,WAAW,EAAE,WAAW;YACxB,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,SAAS,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,2BAA2B,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,SAAS,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,SAAS,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,MAAM,CAAC,GAAG,SAAS,EAAE,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACnD,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,SAAS,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,KAAK,CAAC;AACpD,CAAC"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
export interface RedactEntity {
|
|
2
|
+
type: string;
|
|
3
|
+
placeholder: string;
|
|
4
|
+
start: number;
|
|
5
|
+
end: number;
|
|
6
|
+
}
|
|
7
|
+
export interface AttestationSummary {
|
|
8
|
+
enclaveId: string;
|
|
9
|
+
region: string;
|
|
10
|
+
pcr0?: string;
|
|
11
|
+
modelVersion?: string;
|
|
12
|
+
recognizerVersion?: string;
|
|
13
|
+
attested?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface RedactResult {
|
|
16
|
+
redacted: string;
|
|
17
|
+
entities: RedactEntity[];
|
|
18
|
+
requestId: string;
|
|
19
|
+
attestation?: AttestationSummary;
|
|
20
|
+
modelVersion?: string;
|
|
21
|
+
recognizerVersion?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface AuditEntry {
|
|
24
|
+
ts: string;
|
|
25
|
+
requestId: string;
|
|
26
|
+
source: 'run' | 'proxy';
|
|
27
|
+
entityCountsByType: Record<string, number>;
|
|
28
|
+
attestationRef: string;
|
|
29
|
+
modelVersion?: string;
|
|
30
|
+
recognizerVersion?: string;
|
|
31
|
+
}
|
|
32
|
+
export interface AuditListResponse {
|
|
33
|
+
entries: AuditEntry[];
|
|
34
|
+
nextCursor?: string;
|
|
35
|
+
}
|
|
36
|
+
export declare class RedactApiError extends Error {
|
|
37
|
+
statusCode: number;
|
|
38
|
+
details?: unknown | undefined;
|
|
39
|
+
constructor(message: string, statusCode: number, details?: unknown | undefined);
|
|
40
|
+
}
|
|
41
|
+
export declare class MissingCredentialsError extends Error {
|
|
42
|
+
constructor();
|
|
43
|
+
}
|
|
44
|
+
interface Creds {
|
|
45
|
+
apiKey: string;
|
|
46
|
+
walletAddress: string;
|
|
47
|
+
apiUrl: string;
|
|
48
|
+
}
|
|
49
|
+
export declare function resolveCreds(override?: {
|
|
50
|
+
apiKey?: string;
|
|
51
|
+
}): Creds;
|
|
52
|
+
export declare function redactText(text: string, override?: {
|
|
53
|
+
apiKey?: string;
|
|
54
|
+
}): Promise<RedactResult>;
|
|
55
|
+
export declare function fetchAttestation(override?: {
|
|
56
|
+
apiKey?: string;
|
|
57
|
+
}): Promise<AttestationSummary>;
|
|
58
|
+
export declare function getAuditLog(params?: {
|
|
59
|
+
limit?: number;
|
|
60
|
+
since?: string;
|
|
61
|
+
apiKey?: string;
|
|
62
|
+
}): Promise<AuditListResponse>;
|
|
63
|
+
/**
|
|
64
|
+
* Forward an OpenAI-shaped chat-completion request through the control plane
|
|
65
|
+
* and buffer the full (non-streaming) response.
|
|
66
|
+
*/
|
|
67
|
+
export declare function chatCompletionProxy(body: Record<string, unknown>, modelKey: string, options?: {
|
|
68
|
+
rehydrate?: boolean;
|
|
69
|
+
apiKey?: string;
|
|
70
|
+
}): Promise<{
|
|
71
|
+
status: number;
|
|
72
|
+
body: unknown;
|
|
73
|
+
rehydrationMap?: Record<string, string>;
|
|
74
|
+
requestId?: string;
|
|
75
|
+
}>;
|
|
76
|
+
export interface ChatCompletionStream {
|
|
77
|
+
status: number;
|
|
78
|
+
/** Raw upstream SSE stream when the upstream actually streamed, else null. */
|
|
79
|
+
stream: ReadableStream<Uint8Array> | null;
|
|
80
|
+
/** Set when the upstream returned a non-SSE body (e.g. a JSON error) instead. */
|
|
81
|
+
body?: unknown;
|
|
82
|
+
contentType: string;
|
|
83
|
+
/**
|
|
84
|
+
* Placeholder → original map sent in the `x-treza-rehydration` header. Known
|
|
85
|
+
* entirely from the request-side redaction, so it is available before the
|
|
86
|
+
* first token. Only populated when `rehydrate` was requested.
|
|
87
|
+
*/
|
|
88
|
+
rehydrationMap?: Record<string, string>;
|
|
89
|
+
requestId?: string;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Streaming variant of {@link chatCompletionProxy}. Asks the control plane for
|
|
93
|
+
* an SSE stream (`stream: true`) and returns the raw upstream byte stream so the
|
|
94
|
+
* caller can pipe it straight to its own client. The proxy never rewrites the
|
|
95
|
+
* response body — placeholders are rehydrated client-side (see
|
|
96
|
+
* `applyStreamRehydration`) using the `x-treza-rehydration` map.
|
|
97
|
+
*
|
|
98
|
+
* Fails closed: if the request-side redaction errors the control plane returns a
|
|
99
|
+
* non-2xx JSON body and this throws a {@link RedactApiError} before any bytes
|
|
100
|
+
* reach the caller — nothing was forwarded upstream.
|
|
101
|
+
*/
|
|
102
|
+
export declare function chatCompletionProxyStream(body: Record<string, unknown>, modelKey: string, options?: {
|
|
103
|
+
rehydrate?: boolean;
|
|
104
|
+
apiKey?: string;
|
|
105
|
+
}): Promise<ChatCompletionStream>;
|
|
106
|
+
/**
|
|
107
|
+
* Stateful rehydrator for streamed text. A placeholder such as `[EMAIL_1]` can
|
|
108
|
+
* be split across SSE chunks, so we rehydrate against accumulated text rather
|
|
109
|
+
* than individual deltas: any trailing fragment that could still grow into a
|
|
110
|
+
* placeholder (an unclosed `[…`) is held back and prepended to the next delta.
|
|
111
|
+
*
|
|
112
|
+
* Returns the rehydrated, safe-to-emit text for this delta (possibly empty).
|
|
113
|
+
* Call {@link StreamRehydrator.flush} once the stream ends to drain the tail.
|
|
114
|
+
*/
|
|
115
|
+
export declare class StreamRehydrator {
|
|
116
|
+
private readonly map;
|
|
117
|
+
private carry;
|
|
118
|
+
constructor(map: Record<string, string>);
|
|
119
|
+
push(delta: string): string;
|
|
120
|
+
flush(): string;
|
|
121
|
+
private rehydrate;
|
|
122
|
+
}
|
|
123
|
+
export {};
|
|
124
|
+
//# sourceMappingURL=redact-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redact-api.d.ts","sourceRoot":"","sources":["../../src/utils/redact-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thin HTTP client for the Treza redaction control plane.
|
|
3
|
+
*
|
|
4
|
+
* Uses the existing CLI auth scheme — Bearer API key + `x-treza-wallet`
|
|
5
|
+
* header — exactly like the `treza pii` commands. No separate trial /
|
|
6
|
+
* wallet-free flow. Customers receive an API key with `redact:*`
|
|
7
|
+
* permissions during manual onboarding.
|
|
8
|
+
*/
|
|
9
|
+
import { getApiKey, getWalletAddress, getApiUrl } from './config.js';
|
|
10
|
+
export class RedactApiError extends Error {
|
|
11
|
+
statusCode;
|
|
12
|
+
details;
|
|
13
|
+
constructor(message, statusCode, details) {
|
|
14
|
+
super(message);
|
|
15
|
+
this.statusCode = statusCode;
|
|
16
|
+
this.details = details;
|
|
17
|
+
this.name = 'RedactApiError';
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export class MissingCredentialsError extends Error {
|
|
21
|
+
constructor() {
|
|
22
|
+
super('No API key and/or wallet address configured.\n' +
|
|
23
|
+
'Run `treza config init` to set both, or contact your Treza account team for onboarding.');
|
|
24
|
+
this.name = 'MissingCredentialsError';
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export function resolveCreds(override) {
|
|
28
|
+
const apiKey = override?.apiKey || process.env.TREZA_API_KEY || getApiKey();
|
|
29
|
+
const walletAddress = getWalletAddress();
|
|
30
|
+
if (!apiKey || !walletAddress) {
|
|
31
|
+
throw new MissingCredentialsError();
|
|
32
|
+
}
|
|
33
|
+
return { apiKey, walletAddress, apiUrl: getApiUrl() };
|
|
34
|
+
}
|
|
35
|
+
function authHeaders(creds, extra = {}) {
|
|
36
|
+
return {
|
|
37
|
+
'Content-Type': 'application/json',
|
|
38
|
+
Authorization: `Bearer ${creds.apiKey}`,
|
|
39
|
+
'x-treza-wallet': creds.walletAddress,
|
|
40
|
+
...extra,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
async function request(creds, path, init = {}) {
|
|
44
|
+
const base = creds.apiUrl.replace(/\/$/, '');
|
|
45
|
+
let url = `${base}${path}`;
|
|
46
|
+
if (init.query) {
|
|
47
|
+
const qs = new URLSearchParams(init.query).toString();
|
|
48
|
+
if (qs)
|
|
49
|
+
url += `?${qs}`;
|
|
50
|
+
}
|
|
51
|
+
const res = await fetch(url, {
|
|
52
|
+
method: init.method || 'GET',
|
|
53
|
+
headers: authHeaders(creds),
|
|
54
|
+
body: init.body ? JSON.stringify(init.body) : undefined,
|
|
55
|
+
});
|
|
56
|
+
const text = await res.text();
|
|
57
|
+
let parsed;
|
|
58
|
+
try {
|
|
59
|
+
parsed = text ? JSON.parse(text) : {};
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
parsed = { raw: text };
|
|
63
|
+
}
|
|
64
|
+
if (!res.ok) {
|
|
65
|
+
const err = parsed?.error;
|
|
66
|
+
throw new RedactApiError(err || `Redaction API ${res.status}`, res.status, parsed);
|
|
67
|
+
}
|
|
68
|
+
return parsed;
|
|
69
|
+
}
|
|
70
|
+
export async function redactText(text, override) {
|
|
71
|
+
const creds = resolveCreds(override);
|
|
72
|
+
return request(creds, '/api/redact/run', {
|
|
73
|
+
method: 'POST',
|
|
74
|
+
body: { text },
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
export async function fetchAttestation(override) {
|
|
78
|
+
const creds = resolveCreds(override);
|
|
79
|
+
return request(creds, '/api/redact/attest', { method: 'GET' });
|
|
80
|
+
}
|
|
81
|
+
export async function getAuditLog(params = {}) {
|
|
82
|
+
const creds = resolveCreds({ apiKey: params.apiKey });
|
|
83
|
+
const query = {};
|
|
84
|
+
if (params.limit)
|
|
85
|
+
query.limit = String(params.limit);
|
|
86
|
+
if (params.since)
|
|
87
|
+
query.since = params.since;
|
|
88
|
+
return request(creds, '/api/redact/log', { method: 'GET', query });
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Forward an OpenAI-shaped chat-completion request through the control plane
|
|
92
|
+
* and buffer the full (non-streaming) response.
|
|
93
|
+
*/
|
|
94
|
+
export async function chatCompletionProxy(body, modelKey, options = {}) {
|
|
95
|
+
const creds = resolveCreds({ apiKey: options.apiKey });
|
|
96
|
+
const base = creds.apiUrl.replace(/\/$/, '');
|
|
97
|
+
const res = await fetch(`${base}/api/redact/chat/completions`, {
|
|
98
|
+
method: 'POST',
|
|
99
|
+
headers: authHeaders(creds, {
|
|
100
|
+
'x-model-key': modelKey,
|
|
101
|
+
'x-treza-rehydrate': options.rehydrate ? '1' : '0',
|
|
102
|
+
}),
|
|
103
|
+
// Buffered path always asks upstream for a non-streaming response.
|
|
104
|
+
body: JSON.stringify({ ...body, stream: false }),
|
|
105
|
+
});
|
|
106
|
+
const text = await res.text();
|
|
107
|
+
let parsed;
|
|
108
|
+
try {
|
|
109
|
+
parsed = text ? JSON.parse(text) : {};
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
parsed = { raw: text };
|
|
113
|
+
}
|
|
114
|
+
if (!res.ok) {
|
|
115
|
+
const err = parsed?.error;
|
|
116
|
+
throw new RedactApiError(err || `Proxy upstream ${res.status}`, res.status, parsed);
|
|
117
|
+
}
|
|
118
|
+
let rehydrationMap;
|
|
119
|
+
const headerMap = res.headers.get('x-treza-rehydration');
|
|
120
|
+
if (headerMap && options.rehydrate) {
|
|
121
|
+
try {
|
|
122
|
+
rehydrationMap = JSON.parse(headerMap);
|
|
123
|
+
}
|
|
124
|
+
catch {
|
|
125
|
+
rehydrationMap = undefined;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return {
|
|
129
|
+
status: res.status,
|
|
130
|
+
body: parsed,
|
|
131
|
+
rehydrationMap,
|
|
132
|
+
requestId: res.headers.get('x-treza-request-id') || undefined,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Streaming variant of {@link chatCompletionProxy}. Asks the control plane for
|
|
137
|
+
* an SSE stream (`stream: true`) and returns the raw upstream byte stream so the
|
|
138
|
+
* caller can pipe it straight to its own client. The proxy never rewrites the
|
|
139
|
+
* response body — placeholders are rehydrated client-side (see
|
|
140
|
+
* `applyStreamRehydration`) using the `x-treza-rehydration` map.
|
|
141
|
+
*
|
|
142
|
+
* Fails closed: if the request-side redaction errors the control plane returns a
|
|
143
|
+
* non-2xx JSON body and this throws a {@link RedactApiError} before any bytes
|
|
144
|
+
* reach the caller — nothing was forwarded upstream.
|
|
145
|
+
*/
|
|
146
|
+
export async function chatCompletionProxyStream(body, modelKey, options = {}) {
|
|
147
|
+
const creds = resolveCreds({ apiKey: options.apiKey });
|
|
148
|
+
const base = creds.apiUrl.replace(/\/$/, '');
|
|
149
|
+
const res = await fetch(`${base}/api/redact/chat/completions`, {
|
|
150
|
+
method: 'POST',
|
|
151
|
+
headers: authHeaders(creds, {
|
|
152
|
+
'x-model-key': modelKey,
|
|
153
|
+
'x-treza-rehydrate': options.rehydrate ? '1' : '0',
|
|
154
|
+
}),
|
|
155
|
+
body: JSON.stringify({ ...body, stream: true }),
|
|
156
|
+
});
|
|
157
|
+
const contentType = res.headers.get('content-type') || '';
|
|
158
|
+
const requestId = res.headers.get('x-treza-request-id') || undefined;
|
|
159
|
+
let rehydrationMap;
|
|
160
|
+
const headerMap = res.headers.get('x-treza-rehydration');
|
|
161
|
+
if (headerMap && options.rehydrate) {
|
|
162
|
+
try {
|
|
163
|
+
rehydrationMap = JSON.parse(headerMap);
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
rehydrationMap = undefined;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
// Non-SSE response (error, or upstream fell back to a buffered body): read it
|
|
170
|
+
// out and surface it as a normal JSON body so the caller forwards it verbatim.
|
|
171
|
+
if (!res.ok || !res.body || !contentType.includes('text/event-stream')) {
|
|
172
|
+
const text = await res.text();
|
|
173
|
+
let parsed;
|
|
174
|
+
try {
|
|
175
|
+
parsed = text ? JSON.parse(text) : {};
|
|
176
|
+
}
|
|
177
|
+
catch {
|
|
178
|
+
parsed = { raw: text };
|
|
179
|
+
}
|
|
180
|
+
if (!res.ok) {
|
|
181
|
+
const err = parsed?.error;
|
|
182
|
+
throw new RedactApiError(err || `Proxy upstream ${res.status}`, res.status, parsed);
|
|
183
|
+
}
|
|
184
|
+
return { status: res.status, stream: null, body: parsed, contentType, rehydrationMap, requestId };
|
|
185
|
+
}
|
|
186
|
+
return { status: res.status, stream: res.body, contentType, rehydrationMap, requestId };
|
|
187
|
+
}
|
|
188
|
+
const PLACEHOLDER_RE = /\[[A-Z][A-Z0-9_]*_\d+\]/g;
|
|
189
|
+
/**
|
|
190
|
+
* Stateful rehydrator for streamed text. A placeholder such as `[EMAIL_1]` can
|
|
191
|
+
* be split across SSE chunks, so we rehydrate against accumulated text rather
|
|
192
|
+
* than individual deltas: any trailing fragment that could still grow into a
|
|
193
|
+
* placeholder (an unclosed `[…`) is held back and prepended to the next delta.
|
|
194
|
+
*
|
|
195
|
+
* Returns the rehydrated, safe-to-emit text for this delta (possibly empty).
|
|
196
|
+
* Call {@link StreamRehydrator.flush} once the stream ends to drain the tail.
|
|
197
|
+
*/
|
|
198
|
+
export class StreamRehydrator {
|
|
199
|
+
map;
|
|
200
|
+
carry = '';
|
|
201
|
+
constructor(map) {
|
|
202
|
+
this.map = map;
|
|
203
|
+
}
|
|
204
|
+
push(delta) {
|
|
205
|
+
const combined = this.carry + delta;
|
|
206
|
+
// Hold back from the last unclosed `[` — it may be the start of a placeholder
|
|
207
|
+
// whose closing `]` arrives in a later chunk.
|
|
208
|
+
const lastOpen = combined.lastIndexOf('[');
|
|
209
|
+
let safe;
|
|
210
|
+
if (lastOpen !== -1 && combined.indexOf(']', lastOpen) === -1) {
|
|
211
|
+
safe = combined.slice(0, lastOpen);
|
|
212
|
+
this.carry = combined.slice(lastOpen);
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
safe = combined;
|
|
216
|
+
this.carry = '';
|
|
217
|
+
}
|
|
218
|
+
return this.rehydrate(safe);
|
|
219
|
+
}
|
|
220
|
+
flush() {
|
|
221
|
+
const out = this.rehydrate(this.carry);
|
|
222
|
+
this.carry = '';
|
|
223
|
+
return out;
|
|
224
|
+
}
|
|
225
|
+
rehydrate(text) {
|
|
226
|
+
if (!text)
|
|
227
|
+
return text;
|
|
228
|
+
return text.replace(PLACEHOLDER_RE, (m) => this.map[m] ?? m);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
//# sourceMappingURL=redact-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redact-api.js","sourceRoot":"","sources":["../../src/utils/redact-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export { getRedactApiUrl } from './config.js';
|
|
2
|
+
export interface RedactCredentials {
|
|
3
|
+
apiKey: string;
|
|
4
|
+
apiUrl: string;
|
|
5
|
+
}
|
|
6
|
+
export declare class NoRedactKeyError extends Error {
|
|
7
|
+
constructor();
|
|
8
|
+
}
|
|
9
|
+
export interface RedactCredentialOptions {
|
|
10
|
+
apiKey?: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Resolve the redaction API credentials with the documented precedence:
|
|
14
|
+
* --api-key flag > TREZA_REDACT_API_KEY env var > config redactApiKey
|
|
15
|
+
*
|
|
16
|
+
* Throws NoRedactKeyError when no key is available anywhere. The thrown
|
|
17
|
+
* error has a friendly multiline message that command handlers can print
|
|
18
|
+
* directly to the user.
|
|
19
|
+
*/
|
|
20
|
+
export declare function resolveRedactCredentials(options?: RedactCredentialOptions): RedactCredentials;
|
|
21
|
+
export declare function saveRedactApiKey(key: string): void;
|
|
22
|
+
//# sourceMappingURL=redact-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redact-config.d.ts","sourceRoot":"","sources":["../../src/utils/redact-config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,gBAAiB,SAAQ,KAAK;;CAO1C;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,GAAE,uBAA4B,GAAG,iBAAiB,CAMjG;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAElD"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { getRedactApiKey, getRedactApiUrl, setRedactApiKey as persistKey } from './config.js';
|
|
2
|
+
export { getRedactApiUrl } from './config.js';
|
|
3
|
+
export class NoRedactKeyError extends Error {
|
|
4
|
+
constructor() {
|
|
5
|
+
super('No redaction API key configured. Get a free trial key with:\n treza redact trial\n\nOr set one explicitly:\n treza config set redactApiKey <key>');
|
|
6
|
+
this.name = 'NoRedactKeyError';
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Resolve the redaction API credentials with the documented precedence:
|
|
11
|
+
* --api-key flag > TREZA_REDACT_API_KEY env var > config redactApiKey
|
|
12
|
+
*
|
|
13
|
+
* Throws NoRedactKeyError when no key is available anywhere. The thrown
|
|
14
|
+
* error has a friendly multiline message that command handlers can print
|
|
15
|
+
* directly to the user.
|
|
16
|
+
*/
|
|
17
|
+
export function resolveRedactCredentials(options = {}) {
|
|
18
|
+
const apiKey = options.apiKey || process.env.TREZA_REDACT_API_KEY || getRedactApiKey();
|
|
19
|
+
if (!apiKey) {
|
|
20
|
+
throw new NoRedactKeyError();
|
|
21
|
+
}
|
|
22
|
+
return { apiKey, apiUrl: getRedactApiUrl() };
|
|
23
|
+
}
|
|
24
|
+
export function saveRedactApiKey(key) {
|
|
25
|
+
persistKey(key);
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=redact-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redact-config.js","sourceRoot":"","sources":["../../src/utils/redact-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,IAAI,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9F,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAO9C,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACzC;QACE,KAAK,CACH,oJAAoJ,CACrJ,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAMD;;;;;;;GAOG;AACH,MAAM,UAAU,wBAAwB,CAAC,UAAmC,EAAE;IAC5E,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,eAAe,EAAE,CAAC;IACvF,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,gBAAgB,EAAE,CAAC;IAC/B,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,EAAE,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,UAAU,CAAC,GAAG,CAAC,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redact-local.d.ts","sourceRoot":"","sources":["../../src/utils/redact-local.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAgB,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAyK7D,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAazE"}
|