@opendatalabs/personal-server-ts-server 1.9.0 → 1.10.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.
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,KAAK,EAAE,qCAAqC,EAAE,MAAM,2CAA2C,CAAC;AAEvG,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE9D,OAAO,EAEL,KAAK,YAAY,EAClB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAGjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6DAA6D,CAAC;AAMnG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAC;AAKhF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAMlF,OAAO,EAKL,KAAK,WAAW,EACjB,MAAM,4CAA4C,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAMrF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAKjC,OAAO,EAAE,aAAa,EAAoB,MAAM,mBAAmB,CAAC;AAGpE,OAAO,EAIL,KAAK,iBAAiB,EAEvB,MAAM,mDAAmD,CAAC;AAE3D,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,IAAI,CAAC;IACV,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,IAAI,CAAC;IAChB,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,aAAa,CAAC;IAC7B,eAAe,EAAE,eAAe,CAAC;IACjC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,OAAO,CAAC;IAClC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,sBAAsB,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACjD,sBAAsB,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uBAAuB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IAC/B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B;;;;OAIG;IACH,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,uBAAuB,CAAC,EAAE,qCAAqC,CAAC;IAChE;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;CAC/C;AA0BD,wBAAsB,YAAY,CAChC,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,aAAa,CAAC,CAmmBxB"}
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,KAAK,EAAE,qCAAqC,EAAE,MAAM,2CAA2C,CAAC;AAEvG,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE9D,OAAO,EAEL,KAAK,YAAY,EAClB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAGjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6DAA6D,CAAC;AAMnG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAC;AAKhF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAMlF,OAAO,EAKL,KAAK,WAAW,EACjB,MAAM,4CAA4C,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAMrF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAKjC,OAAO,EAAE,aAAa,EAAoB,MAAM,mBAAmB,CAAC;AAGpE,OAAO,EAKL,KAAK,iBAAiB,EAEvB,MAAM,mDAAmD,CAAC;AAE3D,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,IAAI,CAAC;IACV,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,IAAI,CAAC;IAChB,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,aAAa,CAAC;IAC7B,eAAe,EAAE,eAAe,CAAC;IACjC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,OAAO,CAAC;IAClC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,sBAAsB,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACjD,sBAAsB,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uBAAuB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IAC/B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B;;;;OAIG;IACH,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,uBAAuB,CAAC,EAAE,qCAAqC,CAAC;IAChE;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;CAC/C;AA0BD,wBAAsB,YAAY,CAChC,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,aAAa,CAAC,CAonBxB"}
package/dist/bootstrap.js CHANGED
@@ -27,7 +27,7 @@ import { createTokenStore } from "./token-store.js";
27
27
  import { TunnelManager, ensureFrpcBinary } from "./tunnel/index.js";
28
28
  import { createNodeDataStorage } from "./storage/node-data-storage.js";
29
29
  import { createSqliteQuestionStore } from "./storage/question-store.js";
30
- import { computeQuestion, createOpenAiCompatibleInferenceProvider, createRecomputeScheduler, } from "@opendatalabs/personal-server-ts-core/derivatives";
30
+ import { computeQuestion, createOpenAiCompatibleInferenceProvider, createPhalaE2eeEncryption, createRecomputeScheduler, } from "@opendatalabs/personal-server-ts-core/derivatives";
31
31
  const DEFAULT_LOCAL_APPROVAL_PORT = 34127;
32
32
  function resolveLocalApprovalPort(serverPort) {
33
33
  const raw = process.env.LOCAL_AUTH_PORT;
@@ -183,13 +183,25 @@ export async function createServer(config, options) {
183
183
  // The scheduler exists before the sync manager so downloads can mark
184
184
  // questions stale; it reaches the sync manager lazily to upload results.
185
185
  const questionStore = createSqliteQuestionStore(db);
186
+ const inferenceBaseUrl = process.env.INFERENCE_BASE_URL ?? config.inference.baseUrl;
187
+ // E2EE to the Phala gateway is on unless config or INFERENCE_E2EE=false
188
+ // turns it off (local development against a provider without ACI).
189
+ const inferenceE2ee = process.env.INFERENCE_E2EE !== undefined
190
+ ? process.env.INFERENCE_E2EE !== "false"
191
+ : config.inference.e2ee;
186
192
  const inferenceProvider = options?.inferenceProvider ??
187
193
  createOpenAiCompatibleInferenceProvider({
188
- baseUrl: process.env.INFERENCE_BASE_URL ?? config.inference.baseUrl,
194
+ baseUrl: inferenceBaseUrl,
189
195
  model: process.env.INFERENCE_MODEL ?? config.inference.model,
190
196
  // Local development only: production relays hold the provider key.
191
197
  apiKey: process.env.INFERENCE_API_KEY,
198
+ encryption: inferenceE2ee
199
+ ? createPhalaE2eeEncryption({ baseUrl: inferenceBaseUrl, logger })
200
+ : undefined,
192
201
  });
202
+ if (!inferenceE2ee) {
203
+ logger.warn({ baseUrl: inferenceBaseUrl }, "Inference E2EE is disabled: prompts and answers travel as plaintext over TLS");
204
+ }
193
205
  const derivativeScheduler = createRecomputeScheduler({
194
206
  store: questionStore,
195
207
  debounceMs: config.inference.recomputeDebounceMs,
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
@@ -4404,7 +4404,7 @@ function weierstrass(curveDef) {
4404
4404
  function prepSig(msgHash, privateKey, opts = defaultSigOpts) {
4405
4405
  if (["recovered", "canonical"].some((k10) => k10 in opts))
4406
4406
  throw new Error("sign() legacy options not supported");
4407
- const { hash: hash2, randomBytes: randomBytes4 } = CURVE4;
4407
+ const { hash: hash2, randomBytes: randomBytes5 } = CURVE4;
4408
4408
  let { lowS, prehash, extraEntropy: ent } = opts;
4409
4409
  if (lowS == null)
4410
4410
  lowS = true;
@@ -4416,7 +4416,7 @@ function weierstrass(curveDef) {
4416
4416
  const d10 = normPrivateKeyToScalar(privateKey);
4417
4417
  const seedArgs = [int2octets(d10), int2octets(h1int)];
4418
4418
  if (ent != null && ent !== false) {
4419
- const e10 = ent === true ? randomBytes4(Fp2.BYTES) : ent;
4419
+ const e10 = ent === true ? randomBytes5(Fp2.BYTES) : ent;
4420
4420
  seedArgs.push(ensureBytes("extraEntropy", e10));
4421
4421
  }
4422
4422
  const seed = concatBytes3(...seedArgs);
@@ -109756,6 +109756,10 @@ var DEFAULTS = {
109756
109756
  // provider key) or straight at a provider for local development.
109757
109757
  baseUrl: "https://inference.phala.com/v1",
109758
109758
  model: "z-ai/glm-5.2",
109759
+ // End to end encryption of prompt and answer to the Phala gateway
109760
+ // (E2EE v2): the relay only sees ciphertext. Set false only for local
109761
+ // development against a provider without ACI attestation.
109762
+ e2ee: true,
109759
109763
  // Newest-first items kept per source scope when a prompt is assembled.
109760
109764
  maxSourceItems: 50,
109761
109765
  // Quiet period after a source scope changes before a recompute starts.
@@ -109817,6 +109821,7 @@ var ServerConfigSchema = external_exports.object({
109817
109821
  inference: external_exports.object({
109818
109822
  baseUrl: external_exports.url().default(DEFAULTS.inference.baseUrl),
109819
109823
  model: external_exports.string().min(1).default(DEFAULTS.inference.model),
109824
+ e2ee: external_exports.boolean().default(DEFAULTS.inference.e2ee),
109820
109825
  maxSourceItems: external_exports.number().int().min(1).max(1e4).default(DEFAULTS.inference.maxSourceItems),
109821
109826
  recomputeDebounceMs: external_exports.number().int().min(0).max(36e5).default(DEFAULTS.inference.recomputeDebounceMs)
109822
109827
  }).default(DEFAULTS.inference)
@@ -113910,10 +113915,19 @@ var DEFAULT_INFERENCE_REQUEST_FIELDS = {
113910
113915
  };
113911
113916
  var InferenceRequestError = class extends Error {
113912
113917
  status;
113913
- constructor(message, status2) {
113918
+ /** OpenAI-style `error.type` of the rejection, when the body had one. */
113919
+ errorType;
113920
+ /**
113921
+ * Explicit retry hint. When undefined the compute layer falls back to the
113922
+ * status: no response, 429 or 5xx are retried.
113923
+ */
113924
+ retryable;
113925
+ constructor(message, status2, options = {}) {
113914
113926
  super(message);
113915
113927
  this.status = status2;
113916
113928
  this.name = "InferenceRequestError";
113929
+ this.errorType = options.errorType ?? null;
113930
+ this.retryable = options.retryable;
113917
113931
  }
113918
113932
  };
113919
113933
  function isRecord6(value) {
@@ -113936,12 +113950,25 @@ function readContent(body) {
113936
113950
  const first = body.choices[0];
113937
113951
  if (!isRecord6(first) || !isRecord6(first.message))
113938
113952
  return null;
113953
+ const index = typeof first.index === "number" ? first.index : 0;
113954
+ const field = `choices.${index}.message.content`;
113955
+ const id2 = typeof body.id === "string" ? body.id : "";
113939
113956
  const content = first.message.content;
113940
113957
  if (typeof content === "string")
113941
- return content;
113958
+ return { content, field, id: id2 };
113942
113959
  if (Array.isArray(content)) {
113943
113960
  const text = content.map((part) => isRecord6(part) && typeof part.text === "string" ? part.text : "").join("");
113944
- return text;
113961
+ return { content: text, field, id: id2 };
113962
+ }
113963
+ return null;
113964
+ }
113965
+ async function readErrorType(response) {
113966
+ try {
113967
+ const body = await response.json();
113968
+ if (isRecord6(body) && isRecord6(body.error)) {
113969
+ return typeof body.error.type === "string" ? body.error.type : null;
113970
+ }
113971
+ } catch {
113945
113972
  }
113946
113973
  return null;
113947
113974
  }
@@ -113951,65 +113978,100 @@ function createOpenAiCompatibleInferenceProvider(options = {}) {
113951
113978
  const timeoutMs = options.timeoutMs ?? DEFAULT_INFERENCE_TIMEOUT_MS;
113952
113979
  const doFetch = options.fetch ?? fetch;
113953
113980
  const requestFields = options.requestFields ?? DEFAULT_INFERENCE_REQUEST_FIELDS;
113954
- return {
113955
- defaultModel,
113956
- async chat(input) {
113957
- const headers = new Headers({ "Content-Type": "application/json" });
113958
- if (options.apiKey) {
113959
- headers.set("Authorization", `Bearer ${options.apiKey}`);
113960
- }
113961
- let messages = input.messages;
113962
- if (options.encryption) {
113963
- ({ messages } = await options.encryption.encryptRequest({
113964
- messages,
113965
- headers
113966
- }));
113967
- }
113968
- const body = {
113969
- ...requestFields,
113970
- model: input.model || defaultModel,
113981
+ const encryption = options.encryption;
113982
+ async function send(input) {
113983
+ const headers = new Headers({ "Content-Type": "application/json" });
113984
+ if (options.apiKey) {
113985
+ headers.set("Authorization", `Bearer ${options.apiKey}`);
113986
+ }
113987
+ const model = input.model || defaultModel;
113988
+ let messages = input.messages;
113989
+ let encrypted = null;
113990
+ if (encryption) {
113991
+ encrypted = await encryption.encryptRequest({
113992
+ model,
113971
113993
  messages,
113972
- max_tokens: input.maxTokens ?? DEFAULT_INFERENCE_MAX_TOKENS
113973
- };
113974
- let response;
113975
- try {
113976
- response = await doFetch(`${base}/chat/completions`, {
113977
- method: "POST",
113978
- headers,
113979
- body: JSON.stringify(body),
113980
- signal: AbortSignal.timeout(timeoutMs)
113981
- });
113982
- } catch (err2) {
113983
- const name = err2 instanceof Error ? err2.name : "Error";
113984
- throw new InferenceRequestError(`inference request failed before a response (${name})`, null);
113985
- }
113986
- if (!response.ok) {
113987
- throw new InferenceRequestError(`inference request failed with status ${response.status}`, response.status);
113988
- }
113989
- let parsed;
113990
- try {
113991
- parsed = await response.json();
113992
- } catch {
113993
- throw new InferenceRequestError("inference response was not JSON", response.status);
113994
- }
113995
- let content = readContent(parsed);
113996
- if (content === null || content.trim() === "") {
113997
- throw new InferenceRequestError("inference response carried no assistant content", response.status);
113998
- }
113999
- if (options.encryption) {
114000
- content = await options.encryption.decryptResponse({
114001
- content,
114002
- headers: response.headers
114003
- });
114004
- }
114005
- const receiptId = response.headers.get("x-receipt-id") ?? void 0;
114006
- const aciIdentity = response.headers.get("x-aci-identity") ?? void 0;
113994
+ headers
113995
+ });
113996
+ messages = encrypted.messages;
113997
+ }
113998
+ const body = {
113999
+ ...requestFields,
114000
+ model,
114001
+ messages,
114002
+ max_tokens: input.maxTokens ?? DEFAULT_INFERENCE_MAX_TOKENS
114003
+ };
114004
+ let response;
114005
+ try {
114006
+ response = await doFetch(`${base}/chat/completions`, {
114007
+ method: "POST",
114008
+ headers,
114009
+ body: JSON.stringify(body),
114010
+ signal: AbortSignal.timeout(timeoutMs)
114011
+ });
114012
+ } catch (err2) {
114013
+ const name = err2 instanceof Error ? err2.name : "Error";
114014
+ throw new InferenceRequestError(`inference request failed before a response (${name})`, null);
114015
+ }
114016
+ if (!response.ok) {
114017
+ const errorType = await readErrorType(response);
114018
+ const retry = await encryption?.onRejected?.({
114019
+ status: response.status,
114020
+ errorType,
114021
+ headers: response.headers
114022
+ }) === true;
114007
114023
  return {
114024
+ ok: false,
114025
+ retry,
114026
+ error: new InferenceRequestError(`inference request failed with status ${response.status}${errorType ? ` (${errorType})` : ""}`, response.status, { errorType })
114027
+ };
114028
+ }
114029
+ let parsed;
114030
+ try {
114031
+ parsed = await response.json();
114032
+ } catch {
114033
+ throw new InferenceRequestError("inference response was not JSON", response.status);
114034
+ }
114035
+ const choice = readContent(parsed);
114036
+ if (choice === null) {
114037
+ throw new InferenceRequestError("inference response carried no assistant content", response.status);
114038
+ }
114039
+ let content = choice.content;
114040
+ if (encrypted) {
114041
+ content = await encrypted.decryptResponse({
114042
+ content,
114043
+ field: choice.field,
114044
+ id: choice.id,
114045
+ headers: response.headers
114046
+ });
114047
+ }
114048
+ if (content.trim() === "") {
114049
+ throw new InferenceRequestError("inference response carried no assistant content", response.status);
114050
+ }
114051
+ const receiptId = response.headers.get("x-receipt-id") ?? void 0;
114052
+ const aciIdentity = response.headers.get("x-aci-identity") ?? void 0;
114053
+ return {
114054
+ ok: true,
114055
+ result: {
114008
114056
  content,
114009
114057
  usage: readUsage(isRecord6(parsed) ? parsed.usage : void 0),
114010
114058
  ...receiptId ? { receiptId } : {},
114011
114059
  ...aciIdentity ? { aciIdentity } : {}
114012
- };
114060
+ }
114061
+ };
114062
+ }
114063
+ return {
114064
+ defaultModel,
114065
+ async chat(input) {
114066
+ const first = await send(input);
114067
+ if (first.ok)
114068
+ return first.result;
114069
+ if (!first.retry)
114070
+ throw first.error;
114071
+ const second = await send(input);
114072
+ if (second.ok)
114073
+ return second.result;
114074
+ throw second.error;
114013
114075
  }
114014
114076
  };
114015
114077
  }
@@ -114017,7 +114079,11 @@ function createOpenAiCompatibleInferenceProvider(options = {}) {
114017
114079
  // ../core/dist/derivatives/compute.js
114018
114080
  var DEFAULT_RETRY_DELAYS_MS = [1e3, 4e3];
114019
114081
  function isRetryableInferenceError(err2) {
114020
- return err2 instanceof InferenceRequestError && (err2.status === null || err2.status === 429 || err2.status >= 500);
114082
+ if (!(err2 instanceof InferenceRequestError))
114083
+ return false;
114084
+ if (err2.retryable !== void 0)
114085
+ return err2.retryable;
114086
+ return err2.status === null || err2.status === 429 || err2.status >= 500;
114021
114087
  }
114022
114088
  async function withRetries(deps, attempt, retryable) {
114023
114089
  const delays = deps.retryDelaysMs ?? DEFAULT_RETRY_DELAYS_MS;
@@ -114616,6 +114682,496 @@ async function handlePersonalServerDerivativesRequest(request2, deps, options =
114616
114682
  }
114617
114683
  }
114618
114684
 
114685
+ // ../core/dist/derivatives/e2ee/jcs.js
114686
+ function canonicalizeJson(value) {
114687
+ if (value === null)
114688
+ return "null";
114689
+ switch (typeof value) {
114690
+ case "boolean":
114691
+ return value ? "true" : "false";
114692
+ case "number":
114693
+ if (!Number.isFinite(value)) {
114694
+ throw new TypeError("JCS: non-finite number");
114695
+ }
114696
+ return JSON.stringify(value);
114697
+ case "string":
114698
+ return JSON.stringify(value);
114699
+ case "object": {
114700
+ if (Array.isArray(value)) {
114701
+ return `[${value.map((item) => canonicalizeJson(item)).join(",")}]`;
114702
+ }
114703
+ const record2 = value;
114704
+ const keys = Object.keys(record2).sort();
114705
+ const members = [];
114706
+ for (const key of keys) {
114707
+ const member = record2[key];
114708
+ if (member === void 0) {
114709
+ throw new TypeError(`JCS: undefined member "${key}"`);
114710
+ }
114711
+ members.push(`${JSON.stringify(key)}:${canonicalizeJson(member)}`);
114712
+ }
114713
+ return `{${members.join(",")}}`;
114714
+ }
114715
+ default:
114716
+ throw new TypeError(`JCS: unsupported value of type ${typeof value}`);
114717
+ }
114718
+ }
114719
+ var encoder3 = new TextEncoder();
114720
+ function canonicalJsonBytes(value) {
114721
+ return encoder3.encode(canonicalizeJson(value));
114722
+ }
114723
+
114724
+ // ../core/dist/derivatives/e2ee/aad.js
114725
+ var E2EE_REQUEST_AAD_PURPOSE = "aci.e2ee.request.v2";
114726
+ var E2EE_RESPONSE_AAD_PURPOSE = "aci.e2ee.response.v2";
114727
+ function requestFieldAad(context, field) {
114728
+ return canonicalJsonBytes({
114729
+ purpose: E2EE_REQUEST_AAD_PURPOSE,
114730
+ algo: context.algo,
114731
+ model: context.model,
114732
+ field,
114733
+ nonce: context.nonce,
114734
+ ts: context.ts
114735
+ });
114736
+ }
114737
+ function responseFieldAad(context, field, id2) {
114738
+ return canonicalJsonBytes({
114739
+ purpose: E2EE_RESPONSE_AAD_PURPOSE,
114740
+ algo: context.algo,
114741
+ model: context.model,
114742
+ id: id2,
114743
+ field,
114744
+ nonce: context.nonce,
114745
+ ts: context.ts
114746
+ });
114747
+ }
114748
+
114749
+ // ../core/dist/derivatives/e2ee/suite.js
114750
+ var E2EE_ALGO_X25519 = "x25519-aes-256-gcm-hkdf-sha256";
114751
+ var E2EE_HKDF_INFO_X25519 = "aci.e2ee.v2.x25519";
114752
+ var X25519_PUBLIC_KEY_BYTES = 32;
114753
+ var AES_GCM_NONCE_BYTES = 12;
114754
+ var AES_GCM_TAG_BYTES = 16;
114755
+ var E2eeCipherError = class extends Error {
114756
+ constructor(message) {
114757
+ super(message);
114758
+ this.name = "E2eeCipherError";
114759
+ }
114760
+ };
114761
+ function subtle() {
114762
+ const api = globalThis.crypto?.subtle;
114763
+ if (!api)
114764
+ throw new E2eeCipherError("WebCrypto is not available");
114765
+ return api;
114766
+ }
114767
+ function randomBytes4(length) {
114768
+ const bytes2 = new Uint8Array(length);
114769
+ globalThis.crypto.getRandomValues(bytes2);
114770
+ return bytes2;
114771
+ }
114772
+ function bytesToHex6(bytes2) {
114773
+ let out = "";
114774
+ for (const byte of bytes2)
114775
+ out += byte.toString(16).padStart(2, "0");
114776
+ return out;
114777
+ }
114778
+ function hexToBytes4(hex3) {
114779
+ const clean2 = hex3.startsWith("0x") || hex3.startsWith("0X") ? hex3.slice(2) : hex3;
114780
+ if (clean2.length % 2 !== 0 || !/^[0-9a-fA-F]*$/.test(clean2)) {
114781
+ throw new E2eeCipherError("malformed hex");
114782
+ }
114783
+ const out = new Uint8Array(clean2.length / 2);
114784
+ for (let i10 = 0; i10 < out.length; i10 += 1) {
114785
+ out[i10] = parseInt(clean2.slice(i10 * 2, i10 * 2 + 2), 16);
114786
+ }
114787
+ return out;
114788
+ }
114789
+ function parseX25519PublicKey(hex3) {
114790
+ const bytes2 = hexToBytes4(hex3);
114791
+ if (bytes2.length !== X25519_PUBLIC_KEY_BYTES) {
114792
+ throw new E2eeCipherError("X25519 public key must be 32 bytes");
114793
+ }
114794
+ return bytes2;
114795
+ }
114796
+ function concat2(...parts) {
114797
+ const total = parts.reduce((sum, part) => sum + part.length, 0);
114798
+ const out = new Uint8Array(total);
114799
+ let offset = 0;
114800
+ for (const part of parts) {
114801
+ out.set(part, offset);
114802
+ offset += part.length;
114803
+ }
114804
+ return out;
114805
+ }
114806
+ function toBuffer(bytes2) {
114807
+ const out = new ArrayBuffer(bytes2.byteLength);
114808
+ new Uint8Array(out).set(bytes2);
114809
+ return out;
114810
+ }
114811
+ async function generateX25519KeyPair() {
114812
+ const pair = await subtle().generateKey({ name: "X25519" }, false, [
114813
+ "deriveBits"
114814
+ ]);
114815
+ const raw = await subtle().exportKey("raw", pair.publicKey);
114816
+ return { privateKey: pair.privateKey, publicKey: new Uint8Array(raw) };
114817
+ }
114818
+ async function deriveFieldKey(privateKey, peerPublicKey, usage) {
114819
+ const api = subtle();
114820
+ const peer = await api.importKey("raw", toBuffer(peerPublicKey), { name: "X25519" }, false, []);
114821
+ const shared = await api.deriveBits({ name: "X25519", public: peer }, privateKey, X25519_PUBLIC_KEY_BYTES * 8);
114822
+ const ikm = await api.importKey("raw", shared, "HKDF", false, ["deriveKey"]);
114823
+ return api.deriveKey({
114824
+ name: "HKDF",
114825
+ hash: "SHA-256",
114826
+ salt: new Uint8Array(0),
114827
+ info: new TextEncoder().encode(E2EE_HKDF_INFO_X25519)
114828
+ }, ikm, { name: "AES-GCM", length: 256 }, false, [usage]);
114829
+ }
114830
+ async function encryptField(input) {
114831
+ const ephemeral = input.ephemeral ?? await generateX25519KeyPair();
114832
+ const nonce = input.nonce ?? randomBytes4(AES_GCM_NONCE_BYTES);
114833
+ if (nonce.length !== AES_GCM_NONCE_BYTES) {
114834
+ throw new E2eeCipherError("AES-GCM nonce must be 12 bytes");
114835
+ }
114836
+ const key = await deriveFieldKey(ephemeral.privateKey, input.recipientPublicKey, "encrypt");
114837
+ const sealed = await subtle().encrypt({
114838
+ name: "AES-GCM",
114839
+ iv: toBuffer(nonce),
114840
+ additionalData: toBuffer(input.aad),
114841
+ tagLength: AES_GCM_TAG_BYTES * 8
114842
+ }, key, new TextEncoder().encode(input.plaintext));
114843
+ return bytesToHex6(concat2(ephemeral.publicKey, nonce, new Uint8Array(sealed)));
114844
+ }
114845
+ async function decryptField(input) {
114846
+ let bytes2;
114847
+ try {
114848
+ bytes2 = hexToBytes4(input.wire);
114849
+ } catch {
114850
+ throw new E2eeCipherError("ciphertext is not hex");
114851
+ }
114852
+ const minimum = X25519_PUBLIC_KEY_BYTES + AES_GCM_NONCE_BYTES + AES_GCM_TAG_BYTES;
114853
+ if (bytes2.length < minimum) {
114854
+ throw new E2eeCipherError("ciphertext is too short");
114855
+ }
114856
+ const ephemeralPublicKey = bytes2.subarray(0, X25519_PUBLIC_KEY_BYTES);
114857
+ const nonce = bytes2.subarray(X25519_PUBLIC_KEY_BYTES, X25519_PUBLIC_KEY_BYTES + AES_GCM_NONCE_BYTES);
114858
+ const sealed = bytes2.subarray(X25519_PUBLIC_KEY_BYTES + AES_GCM_NONCE_BYTES);
114859
+ let key;
114860
+ try {
114861
+ key = await deriveFieldKey(input.privateKey, ephemeralPublicKey, "decrypt");
114862
+ } catch {
114863
+ throw new E2eeCipherError("key agreement failed");
114864
+ }
114865
+ let opened;
114866
+ try {
114867
+ opened = await subtle().decrypt({
114868
+ name: "AES-GCM",
114869
+ iv: toBuffer(nonce),
114870
+ additionalData: toBuffer(input.aad),
114871
+ tagLength: AES_GCM_TAG_BYTES * 8
114872
+ }, key, toBuffer(sealed));
114873
+ } catch {
114874
+ throw new E2eeCipherError("authentication failed");
114875
+ }
114876
+ return new TextDecoder().decode(opened);
114877
+ }
114878
+
114879
+ // ../core/dist/derivatives/e2ee/attestation.js
114880
+ var ACI_API_VERSION = "aci/1";
114881
+ var ACI_REPORT_DATA_PURPOSE = "aci.report_data.v1";
114882
+ var E2EE_VERSION = "2";
114883
+ var PHALA_GATEWAY_BASE_URL = "https://inference.phala.com/v1";
114884
+ var MAX_KEYSET_LIFETIME_S = 400 * 24 * 3600;
114885
+ var DEFAULT_FETCH_TIMEOUT_MS = 15e3;
114886
+ var E2eeAttestationError = class extends Error {
114887
+ code;
114888
+ constructor(code, message) {
114889
+ super(message);
114890
+ this.code = code;
114891
+ this.name = "E2eeAttestationError";
114892
+ }
114893
+ };
114894
+ function isRecord7(value) {
114895
+ return value !== null && typeof value === "object" && !Array.isArray(value);
114896
+ }
114897
+ async function sha256Hex2(bytes2) {
114898
+ const buffer = new ArrayBuffer(bytes2.byteLength);
114899
+ new Uint8Array(buffer).set(bytes2);
114900
+ const digest = await globalThis.crypto.subtle.digest("SHA-256", buffer);
114901
+ return bytesToHex6(new Uint8Array(digest));
114902
+ }
114903
+ async function workloadKeysetDigest(keyset) {
114904
+ return `sha256:${await sha256Hex2(canonicalJsonBytes(keyset))}`;
114905
+ }
114906
+ async function reportDataFor(keysetDigest, nonce) {
114907
+ const nonceJson = nonce === null ? "null" : `"${nonce}"`;
114908
+ const statement = `{"keyset_digest":"${keysetDigest}","nonce":${nonceJson},"purpose":"${ACI_REPORT_DATA_PURPOSE}"}`;
114909
+ return sha256Hex2(new TextEncoder().encode(statement));
114910
+ }
114911
+ function parseReport(body) {
114912
+ if (!isRecord7(body) || typeof body.api_version !== "string" || typeof body.workload_keyset_digest !== "string" || !isRecord7(body.attestation) || typeof body.attestation.tee_type !== "string" || typeof body.attestation.report_data !== "string" || !isRecord7(body.attestation.workload_keyset)) {
114913
+ throw new E2eeAttestationError("malformed_report", "attestation report is missing required fields");
114914
+ }
114915
+ const keyset = body.attestation.workload_keyset;
114916
+ if (typeof keyset.not_after !== "number" || !Array.isArray(keyset.e2ee_public_keys)) {
114917
+ throw new E2eeAttestationError("malformed_report", "workload keyset is missing not_after or e2ee_public_keys");
114918
+ }
114919
+ return body;
114920
+ }
114921
+ async function verifyAciReportBinding(report, nonce, nowSeconds) {
114922
+ if (report.api_version !== ACI_API_VERSION) {
114923
+ throw new E2eeAttestationError("malformed_report", `unsupported attestation api_version ${report.api_version}`);
114924
+ }
114925
+ if (report.attestation.tee_type !== "tdx") {
114926
+ throw new E2eeAttestationError("malformed_report", `unsupported tee_type ${report.attestation.tee_type}`);
114927
+ }
114928
+ const versions = report.service_capabilities?.supported_e2ee_versions;
114929
+ if (!Array.isArray(versions) || !versions.includes(E2EE_VERSION)) {
114930
+ throw new E2eeAttestationError("e2ee_unsupported", "service does not advertise E2EE version 2");
114931
+ }
114932
+ const keyset = report.attestation.workload_keyset;
114933
+ const digest = await workloadKeysetDigest(keyset);
114934
+ if (digest !== report.workload_keyset_digest) {
114935
+ throw new E2eeAttestationError("keyset_digest_mismatch", "workload_keyset_digest does not match the embedded keyset");
114936
+ }
114937
+ const expectedReportData = await reportDataFor(digest, nonce);
114938
+ const reportData = report.attestation.report_data.toLowerCase();
114939
+ if (reportData !== expectedReportData) {
114940
+ throw new E2eeAttestationError("report_data_mismatch", "report_data does not bind the keyset digest and our nonce");
114941
+ }
114942
+ const quoteReportData = report.attestation.evidence?.quote_report_data;
114943
+ if (typeof quoteReportData === "string") {
114944
+ const slot = quoteReportData.toLowerCase();
114945
+ if (slot.length !== 128 || !slot.startsWith(reportData) || !/^0+$/.test(slot.slice(64))) {
114946
+ throw new E2eeAttestationError("report_data_mismatch", "quote report-data slot does not carry report_data zero-padded");
114947
+ }
114948
+ }
114949
+ if (!(nowSeconds < keyset.not_after)) {
114950
+ throw new E2eeAttestationError("keyset_expired", "workload keyset has expired");
114951
+ }
114952
+ if (keyset.not_after - nowSeconds > MAX_KEYSET_LIFETIME_S) {
114953
+ throw new E2eeAttestationError("keyset_expired", "workload keyset not_after is implausibly far in the future");
114954
+ }
114955
+ return digest;
114956
+ }
114957
+ function selectX25519Key(keyset, expectedKeyId) {
114958
+ for (const entry of keyset.e2ee_public_keys) {
114959
+ if (!isRecord7(entry) || entry.algo !== E2EE_ALGO_X25519)
114960
+ continue;
114961
+ if (typeof entry.public_key !== "string")
114962
+ continue;
114963
+ if (expectedKeyId !== void 0 && entry.key_id !== expectedKeyId) {
114964
+ continue;
114965
+ }
114966
+ let publicKey;
114967
+ try {
114968
+ publicKey = parseX25519PublicKey(entry.public_key);
114969
+ } catch {
114970
+ throw new E2eeAttestationError("no_e2ee_key", "the X25519 E2EE key in the keyset is malformed");
114971
+ }
114972
+ return { entry, publicKey };
114973
+ }
114974
+ throw new E2eeAttestationError("no_e2ee_key", expectedKeyId ? `keyset has no ${E2EE_ALGO_X25519} key with key_id ${expectedKeyId}` : `keyset has no ${E2EE_ALGO_X25519} key`);
114975
+ }
114976
+ function attestationUrl(baseUrl, nonce) {
114977
+ return `${baseUrl.replace(/\/+$/, "")}/aci/attestation?nonce=${nonce}`;
114978
+ }
114979
+ async function fetchReport(doFetch, url2, timeoutMs) {
114980
+ let response;
114981
+ try {
114982
+ response = await doFetch(url2, {
114983
+ method: "GET",
114984
+ headers: { Accept: "application/json" },
114985
+ signal: AbortSignal.timeout(timeoutMs)
114986
+ });
114987
+ } catch (err2) {
114988
+ const name = err2 instanceof Error ? err2.name : "Error";
114989
+ throw new E2eeAttestationError("fetch_failed", `attestation fetch failed before a response (${name})`);
114990
+ }
114991
+ if (!response.ok) {
114992
+ return { status: response.status, body: null };
114993
+ }
114994
+ try {
114995
+ return { status: response.status, body: await response.json() };
114996
+ } catch {
114997
+ throw new E2eeAttestationError("malformed_report", "attestation response was not JSON");
114998
+ }
114999
+ }
115000
+ async function fetchGatewayE2eeKey(options) {
115001
+ const doFetch = options.fetch ?? fetch;
115002
+ const clock = options.clock ?? Date.now;
115003
+ const random = options.random ?? randomBytes4;
115004
+ const timeoutMs = options.timeoutMs ?? DEFAULT_FETCH_TIMEOUT_MS;
115005
+ const nonce = bytesToHex6(random(32));
115006
+ const fallback = options.fallbackBaseUrl === void 0 ? PHALA_GATEWAY_BASE_URL : options.fallbackBaseUrl;
115007
+ let source = options.baseUrl;
115008
+ let fetched = await fetchReport(doFetch, attestationUrl(source, nonce), timeoutMs);
115009
+ if ((fetched.status === 404 || fetched.status === 405) && fallback !== null && fallback.replace(/\/+$/, "") !== source.replace(/\/+$/, "")) {
115010
+ source = fallback;
115011
+ fetched = await fetchReport(doFetch, attestationUrl(source, nonce), timeoutMs);
115012
+ }
115013
+ if (fetched.body === null) {
115014
+ throw new E2eeAttestationError("fetch_failed", `attestation fetch failed with status ${fetched.status}`);
115015
+ }
115016
+ const report = parseReport(fetched.body);
115017
+ const nowSeconds = Math.floor(clock() / 1e3);
115018
+ const keysetDigest = await verifyAciReportBinding(report, nonce, nowSeconds);
115019
+ const { entry, publicKey } = selectX25519Key(report.attestation.workload_keyset, options.expectedKeyId);
115020
+ if (options.verifyEvidence) {
115021
+ try {
115022
+ await options.verifyEvidence(report);
115023
+ } catch (err2) {
115024
+ const reason = err2 instanceof Error ? err2.message : String(err2);
115025
+ throw new E2eeAttestationError("evidence_rejected", `attestation evidence rejected: ${reason}`);
115026
+ }
115027
+ }
115028
+ return {
115029
+ algo: entry.algo,
115030
+ keyId: entry.key_id,
115031
+ publicKey,
115032
+ publicKeyHex: entry.public_key,
115033
+ keysetDigest,
115034
+ notAfter: report.attestation.workload_keyset.not_after,
115035
+ source,
115036
+ report
115037
+ };
115038
+ }
115039
+
115040
+ // ../core/dist/derivatives/e2ee/phala.js
115041
+ var E2EE_HEADER_VERSION = "X-E2EE-Version";
115042
+ var E2EE_HEADER_CLIENT_PUB_KEY = "X-Client-Pub-Key";
115043
+ var E2EE_HEADER_MODEL_PUB_KEY = "X-Model-Pub-Key";
115044
+ var E2EE_HEADER_NONCE = "X-E2EE-Nonce";
115045
+ var E2EE_HEADER_TIMESTAMP = "X-E2EE-Timestamp";
115046
+ var ACI_HEADER_KEYSET_DIGEST = "X-ACI-Keyset-Digest";
115047
+ var DEFAULT_E2EE_KEY_TTL_MS = 5 * 6e4;
115048
+ function keyFetchError(err2) {
115049
+ if (err2 instanceof E2eeAttestationError) {
115050
+ return new InferenceRequestError(`e2ee key fetch failed (${err2.code}): ${err2.message}`, null, {
115051
+ errorType: `e2ee_attestation_${err2.code}`,
115052
+ retryable: err2.code === "fetch_failed"
115053
+ });
115054
+ }
115055
+ const name = err2 instanceof Error ? err2.name : "Error";
115056
+ return new InferenceRequestError(`e2ee key fetch failed (${name})`, null, {
115057
+ retryable: false
115058
+ });
115059
+ }
115060
+ function createPhalaE2eeEncryption(options) {
115061
+ const clock = options.clock ?? Date.now;
115062
+ const ttlMs = options.keyTtlMs ?? DEFAULT_E2EE_KEY_TTL_MS;
115063
+ let cached2 = null;
115064
+ let inFlight = null;
115065
+ const fetchKey = async () => {
115066
+ const key = await fetchGatewayE2eeKey({
115067
+ baseUrl: options.baseUrl,
115068
+ fetch: options.fetch,
115069
+ clock,
115070
+ expectedKeyId: options.expectedKeyId,
115071
+ verifyEvidence: options.verifyEvidence,
115072
+ fallbackBaseUrl: options.fallbackAttestationBaseUrl
115073
+ });
115074
+ options.logger?.info?.({
115075
+ keyId: key.keyId,
115076
+ algo: key.algo,
115077
+ keysetDigest: key.keysetDigest,
115078
+ notAfter: key.notAfter,
115079
+ source: key.source,
115080
+ evidenceVerified: Boolean(options.verifyEvidence)
115081
+ }, "E2EE gateway key verified");
115082
+ return key;
115083
+ };
115084
+ const getKey = async () => {
115085
+ const now = clock();
115086
+ if (cached2 && now - cached2.fetchedAt < ttlMs && Math.floor(now / 1e3) < cached2.key.notAfter) {
115087
+ return cached2.key;
115088
+ }
115089
+ if (!inFlight) {
115090
+ inFlight = fetchKey().then((key) => {
115091
+ cached2 = { key, fetchedAt: clock() };
115092
+ return key;
115093
+ }).finally(() => {
115094
+ inFlight = null;
115095
+ });
115096
+ }
115097
+ try {
115098
+ return await inFlight;
115099
+ } catch (err2) {
115100
+ throw keyFetchError(err2);
115101
+ }
115102
+ };
115103
+ const invalidateKey = () => {
115104
+ cached2 = null;
115105
+ };
115106
+ return {
115107
+ invalidateKey,
115108
+ currentKey: () => cached2?.key ?? null,
115109
+ async encryptRequest({ model, messages, headers }) {
115110
+ if (typeof model !== "string" || model === "") {
115111
+ throw new InferenceRequestError("e2ee requires a non-empty request model", null, { errorType: "e2ee_invalid_payload_model", retryable: false });
115112
+ }
115113
+ const gatewayKey = await getKey();
115114
+ const client = await generateX25519KeyPair();
115115
+ const context = {
115116
+ algo: gatewayKey.algo,
115117
+ model,
115118
+ nonce: bytesToHex6(randomBytes4(32)),
115119
+ ts: Math.floor(clock() / 1e3)
115120
+ };
115121
+ headers.set(E2EE_HEADER_VERSION, "2");
115122
+ headers.set(E2EE_HEADER_CLIENT_PUB_KEY, bytesToHex6(client.publicKey));
115123
+ headers.set(E2EE_HEADER_MODEL_PUB_KEY, gatewayKey.publicKeyHex);
115124
+ headers.set(E2EE_HEADER_NONCE, context.nonce);
115125
+ headers.set(E2EE_HEADER_TIMESTAMP, String(context.ts));
115126
+ const encrypted = [];
115127
+ for (let index = 0; index < messages.length; index += 1) {
115128
+ const message = messages[index];
115129
+ let content;
115130
+ try {
115131
+ content = await encryptField({
115132
+ plaintext: message.content,
115133
+ recipientPublicKey: gatewayKey.publicKey,
115134
+ aad: requestFieldAad(context, `messages.${index}.content`)
115135
+ });
115136
+ } catch (err2) {
115137
+ const name = err2 instanceof Error ? err2.name : "Error";
115138
+ throw new InferenceRequestError(`e2ee request encryption failed (${name})`, null, { retryable: false });
115139
+ }
115140
+ encrypted.push({ ...message, content });
115141
+ }
115142
+ const request2 = {
115143
+ messages: encrypted,
115144
+ async decryptResponse({ content, field, id: id2, headers: response }) {
115145
+ const served = response.get(ACI_HEADER_KEYSET_DIGEST);
115146
+ if (served && served !== gatewayKey.keysetDigest) {
115147
+ options.logger?.warn?.({ pinned: gatewayKey.keysetDigest, served }, "E2EE keyset digest changed; refetching the attestation report");
115148
+ invalidateKey();
115149
+ }
115150
+ try {
115151
+ return await decryptField({
115152
+ wire: content,
115153
+ privateKey: client.privateKey,
115154
+ aad: responseFieldAad(context, field, id2)
115155
+ });
115156
+ } catch (err2) {
115157
+ const detail = err2 instanceof E2eeCipherError ? err2.message : "unexpected error";
115158
+ throw new InferenceRequestError(`e2ee response decryption failed for ${field} (${detail})`, null, { errorType: "e2ee_decryption_failed", retryable: false });
115159
+ }
115160
+ }
115161
+ };
115162
+ return request2;
115163
+ },
115164
+ async onRejected({ errorType }) {
115165
+ if (errorType === "e2ee_model_key_mismatch") {
115166
+ options.logger?.warn?.({ keyId: cached2?.key.keyId ?? null }, "E2EE model key rejected by the gateway; refetching the attestation report");
115167
+ invalidateKey();
115168
+ return true;
115169
+ }
115170
+ return false;
115171
+ }
115172
+ };
115173
+ }
115174
+
114619
115175
  // ../core/dist/mcp/store.js
114620
115176
  function createInMemoryMcpOAuthAuthorizationStore() {
114621
115177
  const byId = /* @__PURE__ */ new Map();
@@ -127963,7 +128519,7 @@ var WebStandardStreamableHTTPServerTransport = class {
127963
128519
  * Only sends if eventStore is configured (opt-in for resumability) and
127964
128520
  * the client's protocol version supports empty SSE data (>= 2025-11-25).
127965
128521
  */
127966
- async writePrimingEvent(controller, encoder3, streamId, protocolVersion) {
128522
+ async writePrimingEvent(controller, encoder4, streamId, protocolVersion) {
127967
128523
  if (!this._eventStore) {
127968
128524
  return;
127969
128525
  }
@@ -127982,7 +128538,7 @@ data:
127982
128538
 
127983
128539
  `;
127984
128540
  }
127985
- controller.enqueue(encoder3.encode(primingEvent));
128541
+ controller.enqueue(encoder4.encode(primingEvent));
127986
128542
  }
127987
128543
  /**
127988
128544
  * Handles GET requests for SSE stream
@@ -128011,7 +128567,7 @@ data:
128011
128567
  this.onerror?.(new Error("Conflict: Only one SSE stream is allowed per session"));
128012
128568
  return this.createJsonErrorResponse(409, -32e3, "Conflict: Only one SSE stream is allowed per session");
128013
128569
  }
128014
- const encoder3 = new TextEncoder();
128570
+ const encoder4 = new TextEncoder();
128015
128571
  let streamController;
128016
128572
  const readable = new ReadableStream({
128017
128573
  start: (controller) => {
@@ -128031,7 +128587,7 @@ data:
128031
128587
  }
128032
128588
  this._streamMapping.set(this._standaloneSseStreamId, {
128033
128589
  controller: streamController,
128034
- encoder: encoder3,
128590
+ encoder: encoder4,
128035
128591
  cleanup: () => {
128036
128592
  this._streamMapping.delete(this._standaloneSseStreamId);
128037
128593
  try {
@@ -128072,7 +128628,7 @@ data:
128072
128628
  if (this.sessionId !== void 0) {
128073
128629
  headers["mcp-session-id"] = this.sessionId;
128074
128630
  }
128075
- const encoder3 = new TextEncoder();
128631
+ const encoder4 = new TextEncoder();
128076
128632
  let streamController;
128077
128633
  const readable = new ReadableStream({
128078
128634
  start: (controller) => {
@@ -128083,7 +128639,7 @@ data:
128083
128639
  });
128084
128640
  const replayedStreamId = await this._eventStore.replayEventsAfter(lastEventId, {
128085
128641
  send: async (eventId, message) => {
128086
- const success2 = this.writeSSEEvent(streamController, encoder3, message, eventId);
128642
+ const success2 = this.writeSSEEvent(streamController, encoder4, message, eventId);
128087
128643
  if (!success2) {
128088
128644
  this.onerror?.(new Error("Failed replay events"));
128089
128645
  try {
@@ -128095,7 +128651,7 @@ data:
128095
128651
  });
128096
128652
  this._streamMapping.set(replayedStreamId, {
128097
128653
  controller: streamController,
128098
- encoder: encoder3,
128654
+ encoder: encoder4,
128099
128655
  cleanup: () => {
128100
128656
  this._streamMapping.delete(replayedStreamId);
128101
128657
  try {
@@ -128113,7 +128669,7 @@ data:
128113
128669
  /**
128114
128670
  * Writes an event to an SSE stream via controller with proper formatting
128115
128671
  */
128116
- writeSSEEvent(controller, encoder3, message, eventId) {
128672
+ writeSSEEvent(controller, encoder4, message, eventId) {
128117
128673
  try {
128118
128674
  let eventData = `event: message
128119
128675
  `;
@@ -128124,7 +128680,7 @@ data:
128124
128680
  eventData += `data: ${JSON.stringify(message)}
128125
128681
 
128126
128682
  `;
128127
- controller.enqueue(encoder3.encode(eventData));
128683
+ controller.enqueue(encoder4.encode(eventData));
128128
128684
  return true;
128129
128685
  } catch (error51) {
128130
128686
  this.onerror?.(error51);
@@ -128246,7 +128802,7 @@ data:
128246
128802
  }
128247
128803
  });
128248
128804
  }
128249
- const encoder3 = new TextEncoder();
128805
+ const encoder4 = new TextEncoder();
128250
128806
  let streamController;
128251
128807
  const readable = new ReadableStream({
128252
128808
  start: (controller) => {
@@ -128268,7 +128824,7 @@ data:
128268
128824
  if (isJSONRPCRequest(message)) {
128269
128825
  this._streamMapping.set(streamId, {
128270
128826
  controller: streamController,
128271
- encoder: encoder3,
128827
+ encoder: encoder4,
128272
128828
  cleanup: () => {
128273
128829
  this._streamMapping.delete(streamId);
128274
128830
  try {
@@ -128280,7 +128836,7 @@ data:
128280
128836
  this._requestToStreamMapping.set(message.id, streamId);
128281
128837
  }
128282
128838
  }
128283
- await this.writePrimingEvent(streamController, encoder3, streamId, clientProtocolVersion);
128839
+ await this.writePrimingEvent(streamController, encoder4, streamId, clientProtocolVersion);
128284
128840
  for (const message of messages) {
128285
128841
  let closeSSEStream;
128286
128842
  let closeStandaloneSSEStream;
@@ -131788,14 +132344,21 @@ function psLiteInferenceConfigured(config2) {
131788
132344
  return config2.inference.baseUrl.replace(/\/+$/, "") !== DEFAULT_INFERENCE_BASE_URL.replace(/\/+$/, "");
131789
132345
  }
131790
132346
  function createPsLiteDerivativeCompute(options) {
131791
- const provider = options.provider ?? createOpenAiCompatibleInferenceProvider({
131792
- baseUrl: options.config.inference.baseUrl,
131793
- model: options.config.inference.model
131794
- });
131795
132347
  const logger = options.logger ? {
131796
132348
  info: (payload, message) => options.logger?.info(payload, message),
131797
132349
  warn: (payload, message) => options.logger?.warn(payload, message)
131798
132350
  } : void 0;
132351
+ const provider = options.provider ?? createOpenAiCompatibleInferenceProvider({
132352
+ baseUrl: options.config.inference.baseUrl,
132353
+ model: options.config.inference.model,
132354
+ // E2EE v2 to the Phala gateway (WebCrypto only, so it runs in the
132355
+ // browser): the relay sees ciphertext. `inference.e2ee: false` turns
132356
+ // it off for local development against a provider without ACI.
132357
+ encryption: options.config.inference.e2ee ? createPhalaE2eeEncryption({
132358
+ baseUrl: options.config.inference.baseUrl,
132359
+ logger
132360
+ }) : void 0
132361
+ });
131799
132362
  const scheduler = createRecomputeScheduler({
131800
132363
  store: options.store,
131801
132364
  debounceMs: options.config.inference.recomputeDebounceMs,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opendatalabs/personal-server-ts-server",
3
- "version": "1.9.0",
3
+ "version": "1.10.0",
4
4
  "description": "Hono HTTP server for the Vana Personal Server — routes, middleware, composition root",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -44,8 +44,8 @@
44
44
  },
45
45
  "dependencies": {
46
46
  "@hono/node-server": "^1.19.13",
47
- "@opendatalabs/personal-server-ts-core": "1.9.0",
48
- "@opendatalabs/personal-server-ts-lite": "1.9.0",
47
+ "@opendatalabs/personal-server-ts-core": "1.10.0",
48
+ "@opendatalabs/personal-server-ts-lite": "1.10.0",
49
49
  "@opendatalabs/vana-sdk": "3.14.0",
50
50
  "better-sqlite3": "^12.11.1",
51
51
  "hono": "^4.12.27",