@opendatalabs/personal-server-ts-core 1.9.0 → 1.10.1

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 (55) hide show
  1. package/dist/derivatives/compute.d.ts.map +1 -1
  2. package/dist/derivatives/compute.js +10 -3
  3. package/dist/derivatives/compute.js.map +1 -1
  4. package/dist/derivatives/e2ee/aad.d.ts +22 -0
  5. package/dist/derivatives/e2ee/aad.d.ts.map +1 -0
  6. package/dist/derivatives/e2ee/aad.js +32 -0
  7. package/dist/derivatives/e2ee/aad.js.map +1 -0
  8. package/dist/derivatives/e2ee/attestation.d.ts +134 -0
  9. package/dist/derivatives/e2ee/attestation.d.ts.map +1 -0
  10. package/dist/derivatives/e2ee/attestation.js +248 -0
  11. package/dist/derivatives/e2ee/attestation.js.map +1 -0
  12. package/dist/derivatives/e2ee/index.d.ts +6 -0
  13. package/dist/derivatives/e2ee/index.d.ts.map +1 -0
  14. package/dist/derivatives/e2ee/index.js +6 -0
  15. package/dist/derivatives/e2ee/index.js.map +1 -0
  16. package/dist/derivatives/e2ee/jcs.d.ts +17 -0
  17. package/dist/derivatives/e2ee/jcs.d.ts.map +1 -0
  18. package/dist/derivatives/e2ee/jcs.js +55 -0
  19. package/dist/derivatives/e2ee/jcs.js.map +1 -0
  20. package/dist/derivatives/e2ee/phala.d.ts +62 -0
  21. package/dist/derivatives/e2ee/phala.d.ts.map +1 -0
  22. package/dist/derivatives/e2ee/phala.js +168 -0
  23. package/dist/derivatives/e2ee/phala.js.map +1 -0
  24. package/dist/derivatives/e2ee/suite.d.ts +56 -0
  25. package/dist/derivatives/e2ee/suite.d.ts.map +1 -0
  26. package/dist/derivatives/e2ee/suite.js +164 -0
  27. package/dist/derivatives/e2ee/suite.js.map +1 -0
  28. package/dist/derivatives/index.d.ts +2 -1
  29. package/dist/derivatives/index.d.ts.map +1 -1
  30. package/dist/derivatives/index.js +1 -0
  31. package/dist/derivatives/index.js.map +1 -1
  32. package/dist/derivatives/inference.d.ts +65 -16
  33. package/dist/derivatives/inference.d.ts.map +1 -1
  34. package/dist/derivatives/inference.js +171 -68
  35. package/dist/derivatives/inference.js.map +1 -1
  36. package/dist/schemas/server-config.d.ts +2 -0
  37. package/dist/schemas/server-config.d.ts.map +1 -1
  38. package/dist/schemas/server-config.js +5 -0
  39. package/dist/schemas/server-config.js.map +1 -1
  40. package/dist/signing/index.d.ts +1 -1
  41. package/dist/signing/index.d.ts.map +1 -1
  42. package/dist/signing/index.js.map +1 -1
  43. package/dist/test-utils/e2ee-fixtures.d.ts +94 -0
  44. package/dist/test-utils/e2ee-fixtures.d.ts.map +1 -0
  45. package/dist/test-utils/e2ee-fixtures.js +116 -0
  46. package/dist/test-utils/e2ee-fixtures.js.map +1 -0
  47. package/dist/test-utils/e2ee-gateway.d.ts +61 -0
  48. package/dist/test-utils/e2ee-gateway.d.ts.map +1 -0
  49. package/dist/test-utils/e2ee-gateway.js +248 -0
  50. package/dist/test-utils/e2ee-gateway.js.map +1 -0
  51. package/dist/test-utils/index.d.ts +2 -0
  52. package/dist/test-utils/index.d.ts.map +1 -1
  53. package/dist/test-utils/index.js +2 -0
  54. package/dist/test-utils/index.js.map +1 -1
  55. package/package.json +1 -1
@@ -7,14 +7,25 @@
7
7
  * optional API key header exists for local development against a provider
8
8
  * directly.
9
9
  *
10
- * E2EE SEAM (not implemented): the Phala confidential-inference E2EE v2
11
- * protocol encrypts each `messages[i].content` to the model's public key
12
- * and adds the headers X-E2EE-Version, X-Client-Pub-Key, X-Model-Pub-Key,
13
- * X-E2EE-Nonce and X-E2EE-Timestamp; the response content comes back
14
- * encrypted to the client key. `InferenceRequestEncryption` below is the
15
- * hook where that lands: it sees the outgoing messages + headers and the
16
- * incoming content + headers, and nothing else in this module has to change.
10
+ * RELAY AUTH: the Vana inference relay
11
+ * (`POST /v1/inference/chat/completions` on the data gateway) only forwards
12
+ * a request that is signed by the owner or by one of the owner's ACTIVE
13
+ * registered servers, with the same Web3Signed scheme the lineage read uses
14
+ * (`RequestSigner`, see ../signing/request-signer.ts). Pass `requestSigner`
15
+ * and every relay call carries `Authorization: Web3Signed ...` over the
16
+ * exact bytes that go on the wire. `apiKey` is the local-development
17
+ * alternative (direct provider, `Authorization: Bearer`) and wins when both
18
+ * are set: a bearer key means "not the relay".
19
+ *
20
+ * E2EE SEAM: the Phala confidential-inference E2EE v2 protocol encrypts each
21
+ * `messages[i].content` to the gateway's attested public key and adds the
22
+ * headers X-E2EE-Version, X-Client-Pub-Key, X-Model-Pub-Key, X-E2EE-Nonce
23
+ * and X-E2EE-Timestamp; the response content comes back encrypted to the
24
+ * client key. `InferenceRequestEncryption` below is the hook, implemented
25
+ * by `createPhalaE2eeEncryption` in ./e2ee. This module only knows the
26
+ * shape: encrypt the outgoing messages, decrypt the one response field.
17
27
  */
28
+ import type { RequestSigner } from "../signing/request-signer.js";
18
29
  export type InferenceRole = "system" | "user" | "assistant";
19
30
  export interface InferenceMessage {
20
31
  role: InferenceRole;
@@ -43,24 +54,46 @@ export interface InferenceProvider {
43
54
  readonly defaultModel: string;
44
55
  chat(input: InferenceChatInput): Promise<InferenceChatResult>;
45
56
  }
57
+ /**
58
+ * One encrypted request: the messages to send and the decryptor bound to
59
+ * that request's context (nonce, timestamp, client key), since the response
60
+ * AAD is built from them.
61
+ */
62
+ export interface EncryptedInferenceRequest {
63
+ messages: InferenceMessage[];
64
+ /**
65
+ * Decrypt one response field. `field` is the spec field path
66
+ * (`choices.{i}.message.content`), `id` the clear response `id` or "".
67
+ */
68
+ decryptResponse(input: {
69
+ content: string;
70
+ field: string;
71
+ id: string;
72
+ headers: Headers;
73
+ }): Promise<string>;
74
+ }
46
75
  /**
47
76
  * E2EE seam. Implement to encrypt message contents end to end (Phala E2EE
48
- * v2); absent = plaintext over TLS to the relay. Both hooks run inside
77
+ * v2); absent = plaintext over TLS to the relay. Runs inside
49
78
  * `createOpenAiCompatibleInferenceProvider`, around the single fetch.
50
79
  */
51
80
  export interface InferenceRequestEncryption {
52
81
  /** Encrypt `messages[i].content` and add the X-E2EE-* request headers. */
53
82
  encryptRequest(input: {
83
+ model: string;
54
84
  messages: InferenceMessage[];
55
85
  headers: Headers;
56
- }): Promise<{
57
- messages: InferenceMessage[];
58
- }>;
59
- /** Decrypt the assistant content using the response headers. */
60
- decryptResponse(input: {
61
- content: string;
86
+ }): Promise<EncryptedInferenceRequest>;
87
+ /**
88
+ * Called once when the provider rejects the request (non-2xx) with the
89
+ * OpenAI-style `error.type` when the body carries one. Return true to
90
+ * re-encrypt and resend once (e.g. after `e2ee_model_key_mismatch`).
91
+ */
92
+ onRejected?(input: {
93
+ status: number;
94
+ errorType: string | null;
62
95
  headers: Headers;
63
- }): Promise<string>;
96
+ }): Promise<boolean>;
64
97
  }
65
98
  export declare const DEFAULT_INFERENCE_BASE_URL = "https://inference.phala.com/v1";
66
99
  export declare const DEFAULT_INFERENCE_MODEL = "z-ai/glm-5.2";
@@ -71,6 +104,12 @@ export interface OpenAiCompatibleInferenceOptions {
71
104
  baseUrl?: string;
72
105
  /** Local development only; production relays hold the key. */
73
106
  apiKey?: string;
107
+ /**
108
+ * Signs every request to the Vana inference relay as this personal server
109
+ * (the same signer the lineage client uses). Ignored when `apiKey` is set,
110
+ * which means the base URL is a provider, not the relay.
111
+ */
112
+ requestSigner?: RequestSigner;
74
113
  model?: string;
75
114
  timeoutMs?: number;
76
115
  fetch?: typeof fetch;
@@ -86,7 +125,17 @@ export declare const DEFAULT_INFERENCE_REQUEST_FIELDS: Record<string, unknown>;
86
125
  /** Thrown for a non-2xx or malformed provider reply. Carries no prompt text. */
87
126
  export declare class InferenceRequestError extends Error {
88
127
  readonly status: number | null;
89
- constructor(message: string, status: number | null);
128
+ /** OpenAI-style `error.type` of the rejection, when the body had one. */
129
+ readonly errorType: string | null;
130
+ /**
131
+ * Explicit retry hint. When undefined the compute layer falls back to the
132
+ * status: no response, 429 or 5xx are retried.
133
+ */
134
+ readonly retryable: boolean | undefined;
135
+ constructor(message: string, status: number | null, options?: {
136
+ errorType?: string | null;
137
+ retryable?: boolean;
138
+ });
90
139
  }
91
140
  export declare function createOpenAiCompatibleInferenceProvider(options?: OpenAiCompatibleInferenceOptions): InferenceProvider;
92
141
  export interface FakeInferenceProviderOptions {
@@ -1 +1 @@
1
- {"version":3,"file":"inference.d.ts","sourceRoot":"","sources":["../../src/derivatives/inference.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inference.d.ts","sourceRoot":"","sources":["../../src/derivatives/inference.ts"],"names":[],"mappings":"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"}
@@ -7,13 +7,23 @@
7
7
  * optional API key header exists for local development against a provider
8
8
  * directly.
9
9
  *
10
- * E2EE SEAM (not implemented): the Phala confidential-inference E2EE v2
11
- * protocol encrypts each `messages[i].content` to the model's public key
12
- * and adds the headers X-E2EE-Version, X-Client-Pub-Key, X-Model-Pub-Key,
13
- * X-E2EE-Nonce and X-E2EE-Timestamp; the response content comes back
14
- * encrypted to the client key. `InferenceRequestEncryption` below is the
15
- * hook where that lands: it sees the outgoing messages + headers and the
16
- * incoming content + headers, and nothing else in this module has to change.
10
+ * RELAY AUTH: the Vana inference relay
11
+ * (`POST /v1/inference/chat/completions` on the data gateway) only forwards
12
+ * a request that is signed by the owner or by one of the owner's ACTIVE
13
+ * registered servers, with the same Web3Signed scheme the lineage read uses
14
+ * (`RequestSigner`, see ../signing/request-signer.ts). Pass `requestSigner`
15
+ * and every relay call carries `Authorization: Web3Signed ...` over the
16
+ * exact bytes that go on the wire. `apiKey` is the local-development
17
+ * alternative (direct provider, `Authorization: Bearer`) and wins when both
18
+ * are set: a bearer key means "not the relay".
19
+ *
20
+ * E2EE SEAM: the Phala confidential-inference E2EE v2 protocol encrypts each
21
+ * `messages[i].content` to the gateway's attested public key and adds the
22
+ * headers X-E2EE-Version, X-Client-Pub-Key, X-Model-Pub-Key, X-E2EE-Nonce
23
+ * and X-E2EE-Timestamp; the response content comes back encrypted to the
24
+ * client key. `InferenceRequestEncryption` below is the hook, implemented
25
+ * by `createPhalaE2eeEncryption` in ./e2ee. This module only knows the
26
+ * shape: encrypt the outgoing messages, decrypt the one response field.
17
27
  */
18
28
  export const DEFAULT_INFERENCE_BASE_URL = "https://inference.phala.com/v1";
19
29
  export const DEFAULT_INFERENCE_MODEL = "z-ai/glm-5.2";
@@ -25,10 +35,19 @@ export const DEFAULT_INFERENCE_REQUEST_FIELDS = {
25
35
  /** Thrown for a non-2xx or malformed provider reply. Carries no prompt text. */
26
36
  export class InferenceRequestError extends Error {
27
37
  status;
28
- constructor(message, status) {
38
+ /** OpenAI-style `error.type` of the rejection, when the body had one. */
39
+ errorType;
40
+ /**
41
+ * Explicit retry hint. When undefined the compute layer falls back to the
42
+ * status: no response, 429 or 5xx are retried.
43
+ */
44
+ retryable;
45
+ constructor(message, status, options = {}) {
29
46
  super(message);
30
47
  this.status = status;
31
48
  this.name = "InferenceRequestError";
49
+ this.errorType = options.errorType ?? null;
50
+ this.retryable = options.retryable;
32
51
  }
33
52
  }
34
53
  function isRecord(value) {
@@ -51,88 +70,172 @@ function readContent(body) {
51
70
  const first = body.choices[0];
52
71
  if (!isRecord(first) || !isRecord(first.message))
53
72
  return null;
73
+ const index = typeof first.index === "number" ? first.index : 0;
74
+ const field = `choices.${index}.message.content`;
75
+ const id = typeof body.id === "string" ? body.id : "";
54
76
  const content = first.message.content;
55
77
  if (typeof content === "string")
56
- return content;
78
+ return { content, field, id };
57
79
  // Some providers return content parts.
58
80
  if (Array.isArray(content)) {
59
81
  const text = content
60
82
  .map((part) => isRecord(part) && typeof part.text === "string" ? part.text : "")
61
83
  .join("");
62
- return text;
84
+ return { content: text, field, id };
85
+ }
86
+ return null;
87
+ }
88
+ /** OpenAI-style `{ error: { type } }` of a rejection; never its message. */
89
+ async function readErrorType(response) {
90
+ try {
91
+ const body = await response.json();
92
+ if (isRecord(body) && isRecord(body.error)) {
93
+ return typeof body.error.type === "string" ? body.error.type : null;
94
+ }
95
+ }
96
+ catch {
97
+ // Not JSON: no type to report.
63
98
  }
64
99
  return null;
65
100
  }
101
+ /**
102
+ * Sign one relay request. A signer that cannot sign (locked key, wallet
103
+ * gone) is a permanent failure: the request is never sent unsigned, and the
104
+ * compute layer must not retry it into a storm.
105
+ */
106
+ async function signOrThrow(signer, params) {
107
+ try {
108
+ return await signer.signRequest(params);
109
+ }
110
+ catch (err) {
111
+ const name = err instanceof Error ? err.name : "Error";
112
+ throw new InferenceRequestError(`inference request could not be signed (${name})`, null, { errorType: "relay_signing_failed", retryable: false });
113
+ }
114
+ }
66
115
  export function createOpenAiCompatibleInferenceProvider(options = {}) {
67
116
  const base = (options.baseUrl ?? DEFAULT_INFERENCE_BASE_URL).replace(/\/+$/, "");
68
117
  const defaultModel = options.model ?? DEFAULT_INFERENCE_MODEL;
69
118
  const timeoutMs = options.timeoutMs ?? DEFAULT_INFERENCE_TIMEOUT_MS;
70
119
  const doFetch = options.fetch ?? fetch;
71
120
  const requestFields = options.requestFields ?? DEFAULT_INFERENCE_REQUEST_FIELDS;
72
- return {
73
- defaultModel,
74
- async chat(input) {
75
- const headers = new Headers({ "Content-Type": "application/json" });
76
- if (options.apiKey) {
77
- headers.set("Authorization", `Bearer ${options.apiKey}`);
78
- }
79
- let messages = input.messages;
80
- if (options.encryption) {
81
- ({ messages } = await options.encryption.encryptRequest({
82
- messages,
83
- headers,
84
- }));
85
- }
86
- const body = {
87
- ...requestFields,
88
- model: input.model || defaultModel,
121
+ const encryption = options.encryption;
122
+ // A bearer key means the base URL is a provider, not the relay: the relay
123
+ // never takes one, so the key wins and no signature is produced.
124
+ const requestSigner = options.apiKey ? undefined : options.requestSigner;
125
+ const chatUrl = new URL(`${base}/chat/completions`);
126
+ /** One send; `rejected` reports a non-2xx so the caller may retry once. */
127
+ async function send(input) {
128
+ const headers = new Headers({ "Content-Type": "application/json" });
129
+ if (options.apiKey) {
130
+ headers.set("Authorization", `Bearer ${options.apiKey}`);
131
+ }
132
+ const model = input.model || defaultModel;
133
+ let messages = input.messages;
134
+ let encrypted = null;
135
+ if (encryption) {
136
+ encrypted = await encryption.encryptRequest({
137
+ model,
89
138
  messages,
90
- max_tokens: input.maxTokens ?? DEFAULT_INFERENCE_MAX_TOKENS,
91
- };
92
- let response;
93
- try {
94
- response = await doFetch(`${base}/chat/completions`, {
95
- method: "POST",
96
- headers,
97
- body: JSON.stringify(body),
98
- signal: AbortSignal.timeout(timeoutMs),
99
- });
100
- }
101
- catch (err) {
102
- // Transport failure: no status, no body. The message is the error
103
- // class name only; it never carries request contents.
104
- const name = err instanceof Error ? err.name : "Error";
105
- throw new InferenceRequestError(`inference request failed before a response (${name})`, null);
106
- }
107
- if (!response.ok) {
108
- throw new InferenceRequestError(`inference request failed with status ${response.status}`, response.status);
109
- }
110
- let parsed;
111
- try {
112
- parsed = await response.json();
113
- }
114
- catch {
115
- throw new InferenceRequestError("inference response was not JSON", response.status);
116
- }
117
- let content = readContent(parsed);
118
- if (content === null || content.trim() === "") {
119
- // An empty reply must never become a "ready" derivative.
120
- throw new InferenceRequestError("inference response carried no assistant content", response.status);
121
- }
122
- if (options.encryption) {
123
- content = await options.encryption.decryptResponse({
124
- content,
125
- headers: response.headers,
126
- });
127
- }
128
- const receiptId = response.headers.get("x-receipt-id") ?? undefined;
129
- const aciIdentity = response.headers.get("x-aci-identity") ?? undefined;
139
+ headers,
140
+ });
141
+ messages = encrypted.messages;
142
+ }
143
+ const body = {
144
+ ...requestFields,
145
+ model,
146
+ messages,
147
+ max_tokens: input.maxTokens ?? DEFAULT_INFERENCE_MAX_TOKENS,
148
+ };
149
+ // Serialized ONCE, after encryption: the bytes that are hashed into the
150
+ // signature are the bytes that go on the wire (ciphertext included).
151
+ const payload = JSON.stringify(body);
152
+ if (requestSigner) {
153
+ headers.set("Authorization", await signOrThrow(requestSigner, {
154
+ aud: chatUrl.origin,
155
+ method: "POST",
156
+ uri: `${chatUrl.pathname}${chatUrl.search}`,
157
+ body: new TextEncoder().encode(payload),
158
+ }));
159
+ }
160
+ let response;
161
+ try {
162
+ response = await doFetch(chatUrl.toString(), {
163
+ method: "POST",
164
+ headers,
165
+ body: payload,
166
+ signal: AbortSignal.timeout(timeoutMs),
167
+ });
168
+ }
169
+ catch (err) {
170
+ // Transport failure: no status, no body. The message is the error
171
+ // class name only; it never carries request contents.
172
+ const name = err instanceof Error ? err.name : "Error";
173
+ throw new InferenceRequestError(`inference request failed before a response (${name})`, null);
174
+ }
175
+ if (!response.ok) {
176
+ const errorType = await readErrorType(response);
177
+ const retry = (await encryption?.onRejected?.({
178
+ status: response.status,
179
+ errorType,
180
+ headers: response.headers,
181
+ })) === true;
130
182
  return {
183
+ ok: false,
184
+ retry,
185
+ error: new InferenceRequestError(`inference request failed with status ${response.status}${errorType ? ` (${errorType})` : ""}`, response.status, { errorType }),
186
+ };
187
+ }
188
+ let parsed;
189
+ try {
190
+ parsed = await response.json();
191
+ }
192
+ catch {
193
+ throw new InferenceRequestError("inference response was not JSON", response.status);
194
+ }
195
+ const choice = readContent(parsed);
196
+ if (choice === null) {
197
+ throw new InferenceRequestError("inference response carried no assistant content", response.status);
198
+ }
199
+ let content = choice.content;
200
+ if (encrypted) {
201
+ // Fail closed: a reply that is not valid ciphertext for this request
202
+ // is an error, never used as plaintext.
203
+ content = await encrypted.decryptResponse({
204
+ content,
205
+ field: choice.field,
206
+ id: choice.id,
207
+ headers: response.headers,
208
+ });
209
+ }
210
+ if (content.trim() === "") {
211
+ // An empty reply must never become a "ready" derivative.
212
+ throw new InferenceRequestError("inference response carried no assistant content", response.status);
213
+ }
214
+ const receiptId = response.headers.get("x-receipt-id") ?? undefined;
215
+ const aciIdentity = response.headers.get("x-aci-identity") ?? undefined;
216
+ return {
217
+ ok: true,
218
+ result: {
131
219
  content,
132
220
  usage: readUsage(isRecord(parsed) ? parsed.usage : undefined),
133
221
  ...(receiptId ? { receiptId } : {}),
134
222
  ...(aciIdentity ? { aciIdentity } : {}),
135
- };
223
+ },
224
+ };
225
+ }
226
+ return {
227
+ defaultModel,
228
+ async chat(input) {
229
+ const first = await send(input);
230
+ if (first.ok)
231
+ return first.result;
232
+ if (!first.retry)
233
+ throw first.error;
234
+ // The encryption asked for one re-send (fresh key, fresh nonce).
235
+ const second = await send(input);
236
+ if (second.ok)
237
+ return second.result;
238
+ throw second.error;
136
239
  },
137
240
  };
138
241
  }
@@ -1 +1 @@
1
- {"version":3,"file":"inference.js","sourceRoot":"","sources":["../../src/derivatives/inference.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inference.js","sourceRoot":"","sources":["../../src/derivatives/inference.ts"],"names":[],"mappings":"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"}
@@ -46,6 +46,7 @@ export declare const DEFAULTS: {
46
46
  inference: {
47
47
  baseUrl: string;
48
48
  model: string;
49
+ e2ee: boolean;
49
50
  maxSourceItems: number;
50
51
  recomputeDebounceMs: number;
51
52
  };
@@ -119,6 +120,7 @@ export declare const ServerConfigSchema: z.ZodObject<{
119
120
  inference: z.ZodDefault<z.ZodObject<{
120
121
  baseUrl: z.ZodDefault<z.ZodURL>;
121
122
  model: z.ZodDefault<z.ZodString>;
123
+ e2ee: z.ZodDefault<z.ZodBoolean>;
122
124
  maxSourceItems: z.ZodDefault<z.ZodNumber>;
123
125
  recomputeDebounceMs: z.ZodDefault<z.ZodNumber>;
124
126
  }, z.core.$strip>>;
@@ -1 +1 @@
1
- {"version":3,"file":"server-config.d.ts","sourceRoot":"","sources":["../../src/schemas/server-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmEpB,CAAC;AAEF,eAAO,MAAM,cAAc;;;;;;EAMzB,CAAC;AAEH,eAAO,MAAM,uBAAuB;;iBAElC,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA6G7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,aAAa,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;AAEpD,0DAA0D;AAC1D,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE;QACT,YAAY,EAAE,MAAM,CAAC;QACrB,0BAA0B,EAAE,MAAM,CAAC;QACnC,qBAAqB,EAAE,MAAM,CAAC;QAC9B,uBAAuB,EAAE,MAAM,CAAC;QAEhC,qBAAqB,EAAE,MAAM,CAAC;QAG9B,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH,CAAC"}
1
+ {"version":3,"file":"server-config.d.ts","sourceRoot":"","sources":["../../src/schemas/server-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuEpB,CAAC;AAEF,eAAO,MAAM,cAAc;;;;;;EAMzB,CAAC;AAEH,eAAO,MAAM,uBAAuB;;iBAElC,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA8G7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,aAAa,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;AAEpD,0DAA0D;AAC1D,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE;QACT,YAAY,EAAE,MAAM,CAAC;QACrB,0BAA0B,EAAE,MAAM,CAAC;QACnC,qBAAqB,EAAE,MAAM,CAAC;QAC9B,uBAAuB,EAAE,MAAM,CAAC;QAEhC,qBAAqB,EAAE,MAAM,CAAC;QAG9B,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH,CAAC"}
@@ -61,6 +61,10 @@ export const DEFAULTS = {
61
61
  // provider key) or straight at a provider for local development.
62
62
  baseUrl: "https://inference.phala.com/v1",
63
63
  model: "z-ai/glm-5.2",
64
+ // End to end encryption of prompt and answer to the Phala gateway
65
+ // (E2EE v2): the relay only sees ciphertext. Set false only for local
66
+ // development against a provider without ACI attestation.
67
+ e2ee: true,
64
68
  // Newest-first items kept per source scope when a prompt is assembled.
65
69
  maxSourceItems: 50,
66
70
  // Quiet period after a source scope changes before a recompute starts.
@@ -172,6 +176,7 @@ export const ServerConfigSchema = z.object({
172
176
  .object({
173
177
  baseUrl: z.url().default(DEFAULTS.inference.baseUrl),
174
178
  model: z.string().min(1).default(DEFAULTS.inference.model),
179
+ e2ee: z.boolean().default(DEFAULTS.inference.e2ee),
175
180
  maxSourceItems: z
176
181
  .number()
177
182
  .int()
@@ -1 +1 @@
1
- {"version":3,"file":"server-config.js","sourceRoot":"","sources":["../../src/schemas/server-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server-config.js","sourceRoot":"","sources":["../../src/schemas/server-config.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  export { createServerSigner, type ServerSigner } from "./signer.js";
2
- export { createRequestSigner } from "./request-signer.js";
2
+ export { createRequestSigner, type RequestSigner } from "./request-signer.js";
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/signing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/signing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/signing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAqB,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/signing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAqB,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAsB,MAAM,qBAAqB,CAAC"}