@x12i/openrouter-runtime 1.4.0 → 2.1.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/dist/index.cjs CHANGED
@@ -29,6 +29,7 @@ __export(index_exports, {
29
29
  createOpenRouterRuntime: () => createOpenRouterRuntime,
30
30
  decodeProviderMetadata: () => decodeProviderMetadata,
31
31
  isRuntimeLoggingEnabled: () => isRuntimeLoggingEnabled,
32
+ packProviderRecord: () => packProviderRecord,
32
33
  toProviderMetadata: () => toProviderMetadata
33
34
  });
34
35
  module.exports = __toCommonJS(index_exports);
@@ -929,77 +930,34 @@ function buildSubagentTool(policy, fallbackReasoning) {
929
930
  }
930
931
 
931
932
  // src/utils/provider-metadata.ts
933
+ var import_provider_metadata = require("@x12i/provider-metadata");
932
934
  var OPENROUTER_METADATA_LIMITS = {
933
935
  maxPairs: 16,
934
936
  maxKeyLength: 64,
935
937
  maxValueLength: 512
936
938
  };
937
- var PROVIDER_RECORD_CHUNK = 256;
938
- var PROVIDER_RECORD_MAX_CHUNKS = 16;
939
939
  function toProviderMetadata(metadata, agentId, _limits, base) {
940
- return encodeProviderRecord(collectProviderStrings(metadata, agentId, base));
940
+ return (0, import_provider_metadata.packMetadata)(base, metadata, agentLayer(agentId));
941
941
  }
942
- function decodeProviderMetadata(wire) {
943
- if (!isRecord2(wire)) return {};
944
- const parts = [];
945
- for (let index = 0; ; index += 1) {
946
- const chunk = wire[`m.${index}`];
947
- if (typeof chunk !== "string") break;
948
- parts.push(chunk);
949
- }
950
- if (!parts.length) return {};
951
- const parsed = JSON.parse(Buffer.from(parts.join(""), "base64").toString("utf8"));
952
- if (!isRecord2(parsed)) return {};
953
- const record = {};
954
- for (const [key, value] of Object.entries(parsed)) {
955
- if (typeof value === "string") record[key] = value;
956
- }
957
- return record;
958
- }
959
- function encodeProviderRecord(map) {
960
- const keys = Object.keys(map).sort();
961
- if (!keys.length) return void 0;
962
- const ordered = {};
963
- for (const key of keys) {
964
- const value = map[key];
965
- if (value !== void 0) ordered[key] = value;
966
- }
967
- const encoded = Buffer.from(JSON.stringify(ordered), "utf8").toString("base64");
968
- const chunks = Math.ceil(encoded.length / PROVIDER_RECORD_CHUNK);
969
- if (chunks > PROVIDER_RECORD_MAX_CHUNKS) {
970
- throw new Error(
971
- `METADATA_RECORD_TOO_LARGE: provider metadata is ${encoded.length} base64 characters; the maximum is ${PROVIDER_RECORD_CHUNK * PROVIDER_RECORD_MAX_CHUNKS}.`
972
- );
973
- }
974
- const wire = {};
975
- for (let index = 0; index < chunks; index += 1) {
976
- wire[`m.${index}`] = encoded.slice(index * PROVIDER_RECORD_CHUNK, (index + 1) * PROVIDER_RECORD_CHUNK);
977
- }
978
- return wire;
979
- }
980
- function collectProviderStrings(metadata, agentId, base) {
981
- const map = {};
982
- appendStrings(map, base);
983
- appendStrings(map, metadata);
984
- const trimmedAgentId = agentId?.trim();
985
- if (trimmedAgentId) map.agentId = trimmedAgentId;
986
- return map;
987
- }
988
- function appendStrings(target, metadata) {
989
- if (!metadata) return;
990
- for (const [key, value] of Object.entries(metadata)) {
991
- const asString = asMetadataString(value);
992
- if (asString !== void 0) target[key] = asString;
942
+ function packProviderRecord(metadata, agentId, base, packer) {
943
+ const layers = [base, metadata, agentLayer(agentId)];
944
+ if (!packer) {
945
+ const wire = (0, import_provider_metadata.packMetadata)(...layers);
946
+ return wire ? { wire } : {};
993
947
  }
948
+ const packed = packer.pack(...layers);
949
+ const warning = (0, import_provider_metadata.metadataTrimWarning)(packed.dropped);
950
+ return {
951
+ ...packed.wire ? { wire: packed.wire } : {},
952
+ ...warning ? { warning } : {}
953
+ };
994
954
  }
995
- function asMetadataString(value) {
996
- if (typeof value === "string") return value;
997
- if (typeof value === "boolean") return value ? "true" : "false";
998
- if (typeof value === "number" && Number.isFinite(value)) return String(value);
999
- return void 0;
955
+ function decodeProviderMetadata(wire) {
956
+ return (0, import_provider_metadata.openMetadata)(wire);
1000
957
  }
1001
- function isRecord2(value) {
1002
- return typeof value === "object" && value !== null && !Array.isArray(value);
958
+ function agentLayer(agentId) {
959
+ const trimmed = agentId?.trim();
960
+ return trimmed ? { agentId: trimmed } : void 0;
1003
961
  }
1004
962
 
1005
963
  // src/runtime/runtime.ts
@@ -1031,7 +989,7 @@ function compileRuntimeRequest(request, defaults, options = { apiKey: "" }, cont
1031
989
  const assembled = apiMode === "chat" ? buildChatBody(request, baseBody) : buildResponsesBody(request, baseBody);
1032
990
  let body = effectiveContext.finalizeBody ? effectiveContext.finalizeBody(assembled) : assembled;
1033
991
  enforceStreamingPolicyForRun(body, warnings, effectiveContext);
1034
- body = attachProviderMetadata(body, request);
992
+ body = attachProviderMetadata(body, request, options, warnings);
1035
993
  return {
1036
994
  apiMode,
1037
995
  url: endpointFor(options.baseUrl ?? "https://openrouter.ai/api/v1", apiMode),
@@ -1040,10 +998,11 @@ function compileRuntimeRequest(request, defaults, options = { apiKey: "" }, cont
1040
998
  warnings
1041
999
  };
1042
1000
  }
1043
- function attachProviderMetadata(body, request) {
1001
+ function attachProviderMetadata(body, request, options, warnings) {
1044
1002
  const fromBody = isRecord(body.metadata) ? body.metadata : void 0;
1045
- const metadata = toProviderMetadata(request.metadata, request.agentId, OPENROUTER_METADATA_LIMITS, fromBody);
1046
- if (metadata) return { ...body, metadata };
1003
+ const packed = packProviderRecord(request.metadata, request.agentId, fromBody, options.metadataPacker);
1004
+ if (packed.warning) warnings.push(packed.warning);
1005
+ if (packed.wire) return { ...body, metadata: packed.wire };
1047
1006
  if (body.metadata === void 0) return body;
1048
1007
  const rest = { ...body };
1049
1008
  delete rest.metadata;
@@ -1953,6 +1912,7 @@ function operatorHintFor(code) {
1953
1912
  createOpenRouterRuntime,
1954
1913
  decodeProviderMetadata,
1955
1914
  isRuntimeLoggingEnabled,
1915
+ packProviderRecord,
1956
1916
  toProviderMetadata
1957
1917
  });
1958
1918
  //# sourceMappingURL=index.cjs.map