@elsium-ai/gateway 0.2.1 → 0.2.3
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 +1013 -17
- package/dist/gateway.d.ts +2 -0
- package/dist/gateway.d.ts.map +1 -1
- package/dist/index.js +148 -39
- package/dist/providers/google.d.ts.map +1 -1
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/router.d.ts +1 -1
- package/dist/router.d.ts.map +1 -1
- package/dist/security.d.ts.map +1 -1
- package/package.json +3 -3
package/dist/gateway.d.ts
CHANGED
package/dist/gateway.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../src/gateway.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,iBAAiB,EACjB,WAAW,EACX,UAAU,EAEV,cAAc,
|
|
1
|
+
{"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../src/gateway.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,iBAAiB,EACjB,WAAW,EACX,UAAU,EAEV,cAAc,EAEd,QAAQ,EACR,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAe,KAAK,YAAY,EAAiC,MAAM,iBAAiB,CAAA;AAC/F,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAI5B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAM7C,MAAM,WAAW,aAAa;IAC7B,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,UAAU,EAAE,CAAA;IACzB,IAAI,CAAC,EAAE,OAAO,GAAG;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACxC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,OAAO;IACvB,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;IAC1D,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,YAAY,CAAA;IAChD,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,iBAAiB,GAAG;QAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC;QAC3E,IAAI,EAAE,CAAC,CAAA;QACP,QAAQ,EAAE,WAAW,CAAA;KACrB,CAAC,CAAA;IACF,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAA;IAC9B,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAAA;IAC3B,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,EAAE,CAAA;CACvC;AAQD,wBAAgB,uBAAuB,CACtC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,WAAW,GAC9C,IAAI,CAEN;AAiID,wBAAgB,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CA6HtD"}
|
package/dist/index.js
CHANGED
|
@@ -1163,7 +1163,19 @@ function createGoogleProvider(config) {
|
|
|
1163
1163
|
return { role, parts };
|
|
1164
1164
|
}
|
|
1165
1165
|
function formatGeminiMultipartContent(msg, role) {
|
|
1166
|
-
const parts =
|
|
1166
|
+
const parts = [];
|
|
1167
|
+
for (const p of msg.content) {
|
|
1168
|
+
if (p.type === "text") {
|
|
1169
|
+
parts.push({ text: p.text });
|
|
1170
|
+
} else if (p.type === "image") {
|
|
1171
|
+
const img = p;
|
|
1172
|
+
if (img.source.type === "base64") {
|
|
1173
|
+
parts.push({ inlineData: { mimeType: img.source.mediaType, data: img.source.data } });
|
|
1174
|
+
} else {
|
|
1175
|
+
parts.push({ fileData: { mimeType: "image/jpeg", fileUri: img.source.url } });
|
|
1176
|
+
}
|
|
1177
|
+
}
|
|
1178
|
+
}
|
|
1167
1179
|
return { role, parts };
|
|
1168
1180
|
}
|
|
1169
1181
|
function formatMessages(messages) {
|
|
@@ -1338,7 +1350,8 @@ async function handleGoogleErrorResponse(response) {
|
|
|
1338
1350
|
throw ElsiumError.authError("google");
|
|
1339
1351
|
}
|
|
1340
1352
|
if (response.status === 429) {
|
|
1341
|
-
|
|
1353
|
+
const retryAfter = response.headers.get("retry-after");
|
|
1354
|
+
throw ElsiumError.rateLimit("google", retryAfter ? Number.parseInt(retryAfter) * 1000 : undefined);
|
|
1342
1355
|
}
|
|
1343
1356
|
throw ElsiumError.providerError(`Google API error ${response.status}: ${errorBody}`, {
|
|
1344
1357
|
provider: "google",
|
|
@@ -1524,6 +1537,24 @@ function createOpenAIProvider(config) {
|
|
|
1524
1537
|
}
|
|
1525
1538
|
return openaiMsg;
|
|
1526
1539
|
}
|
|
1540
|
+
function formatUserContent(msg) {
|
|
1541
|
+
if (typeof msg.content === "string")
|
|
1542
|
+
return msg.content;
|
|
1543
|
+
const parts = [];
|
|
1544
|
+
for (const part of msg.content) {
|
|
1545
|
+
if (part.type === "text") {
|
|
1546
|
+
parts.push({ type: "text", text: part.text });
|
|
1547
|
+
} else if (part.type === "image") {
|
|
1548
|
+
if (part.source.type === "base64") {
|
|
1549
|
+
const url = `data:${part.source.mediaType};base64,${part.source.data}`;
|
|
1550
|
+
parts.push({ type: "image_url", image_url: { url } });
|
|
1551
|
+
} else {
|
|
1552
|
+
parts.push({ type: "image_url", image_url: { url: part.source.url } });
|
|
1553
|
+
}
|
|
1554
|
+
}
|
|
1555
|
+
}
|
|
1556
|
+
return parts;
|
|
1557
|
+
}
|
|
1527
1558
|
function formatMessages(messages) {
|
|
1528
1559
|
const formatted = [];
|
|
1529
1560
|
for (const msg of messages) {
|
|
@@ -1539,7 +1570,7 @@ function createOpenAIProvider(config) {
|
|
|
1539
1570
|
formatted.push(formatAssistantMessage(msg));
|
|
1540
1571
|
continue;
|
|
1541
1572
|
}
|
|
1542
|
-
formatted.push({ role: "user", content:
|
|
1573
|
+
formatted.push({ role: "user", content: formatUserContent(msg) });
|
|
1543
1574
|
}
|
|
1544
1575
|
return formatted;
|
|
1545
1576
|
}
|
|
@@ -1778,7 +1809,7 @@ var PROVIDER_FACTORIES = {
|
|
|
1778
1809
|
function registerProviderFactory(name, factory) {
|
|
1779
1810
|
PROVIDER_FACTORIES[name] = factory;
|
|
1780
1811
|
}
|
|
1781
|
-
function
|
|
1812
|
+
function validateGatewayConfig(config) {
|
|
1782
1813
|
const factory = PROVIDER_FACTORIES[config.provider];
|
|
1783
1814
|
if (!factory) {
|
|
1784
1815
|
throw new ElsiumError({
|
|
@@ -1787,21 +1818,92 @@ function gateway(config) {
|
|
|
1787
1818
|
retryable: false
|
|
1788
1819
|
});
|
|
1789
1820
|
}
|
|
1821
|
+
if (typeof config.apiKey !== "string" || config.apiKey.trim() === "") {
|
|
1822
|
+
throw new ElsiumError({
|
|
1823
|
+
code: "CONFIG_ERROR",
|
|
1824
|
+
message: "apiKey must be a non-empty string",
|
|
1825
|
+
retryable: false
|
|
1826
|
+
});
|
|
1827
|
+
}
|
|
1828
|
+
if (config.timeout !== undefined && (!Number.isFinite(config.timeout) || config.timeout <= 0)) {
|
|
1829
|
+
throw new ElsiumError({
|
|
1830
|
+
code: "CONFIG_ERROR",
|
|
1831
|
+
message: "timeout must be a positive finite number",
|
|
1832
|
+
retryable: false
|
|
1833
|
+
});
|
|
1834
|
+
}
|
|
1835
|
+
if (config.maxRetries !== undefined && (!Number.isFinite(config.maxRetries) || !Number.isInteger(config.maxRetries) || config.maxRetries < 0)) {
|
|
1836
|
+
throw new ElsiumError({
|
|
1837
|
+
code: "CONFIG_ERROR",
|
|
1838
|
+
message: "maxRetries must be a non-negative finite integer",
|
|
1839
|
+
retryable: false
|
|
1840
|
+
});
|
|
1841
|
+
}
|
|
1842
|
+
return factory;
|
|
1843
|
+
}
|
|
1844
|
+
function autoRegisterProvider(provider) {
|
|
1845
|
+
if (!provider.metadata)
|
|
1846
|
+
return;
|
|
1847
|
+
registerProviderMetadata(provider.name, provider.metadata);
|
|
1848
|
+
if (!provider.metadata.pricing)
|
|
1849
|
+
return;
|
|
1850
|
+
for (const [model, pricing] of Object.entries(provider.metadata.pricing)) {
|
|
1851
|
+
registerPricing(model, pricing);
|
|
1852
|
+
}
|
|
1853
|
+
}
|
|
1854
|
+
function validateRequestLimits(request, maxMessages, maxInputTokens) {
|
|
1855
|
+
if (request.messages.length > maxMessages) {
|
|
1856
|
+
throw ElsiumError.validation(`Message count ${request.messages.length} exceeds limit of ${maxMessages}`);
|
|
1857
|
+
}
|
|
1858
|
+
let estimatedTokens = 0;
|
|
1859
|
+
for (const msg of request.messages) {
|
|
1860
|
+
const text = typeof msg.content === "string" ? msg.content : msg.content.map((p) => p.type === "text" ? p.text : "").join("");
|
|
1861
|
+
estimatedTokens += Math.ceil(text.length / 4);
|
|
1862
|
+
}
|
|
1863
|
+
if (estimatedTokens > maxInputTokens) {
|
|
1864
|
+
throw ElsiumError.validation(`Estimated input tokens (~${estimatedTokens}) exceeds limit of ${maxInputTokens}`);
|
|
1865
|
+
}
|
|
1866
|
+
}
|
|
1867
|
+
function buildMiddlewareContext(req, providerName, defaultModel, metadata) {
|
|
1868
|
+
return {
|
|
1869
|
+
request: req,
|
|
1870
|
+
provider: providerName,
|
|
1871
|
+
model: req.model ?? defaultModel,
|
|
1872
|
+
traceId: generateTraceId(),
|
|
1873
|
+
startTime: performance.now(),
|
|
1874
|
+
metadata
|
|
1875
|
+
};
|
|
1876
|
+
}
|
|
1877
|
+
async function accumulateStreamEvents(stream, emit) {
|
|
1878
|
+
let textContent = "";
|
|
1879
|
+
let usage = { inputTokens: 0, outputTokens: 0, totalTokens: 0 };
|
|
1880
|
+
let stopReason = "end_turn";
|
|
1881
|
+
let id = "";
|
|
1882
|
+
for await (const event of stream) {
|
|
1883
|
+
emit(event);
|
|
1884
|
+
if (event.type === "text_delta") {
|
|
1885
|
+
textContent += event.text;
|
|
1886
|
+
} else if (event.type === "message_end") {
|
|
1887
|
+
usage = event.usage;
|
|
1888
|
+
stopReason = event.stopReason;
|
|
1889
|
+
} else if (event.type === "message_start") {
|
|
1890
|
+
id = event.id;
|
|
1891
|
+
}
|
|
1892
|
+
}
|
|
1893
|
+
return { textContent, usage, stopReason, id };
|
|
1894
|
+
}
|
|
1895
|
+
function gateway(config) {
|
|
1896
|
+
const factory = validateGatewayConfig(config);
|
|
1790
1897
|
const provider = factory({
|
|
1791
1898
|
apiKey: config.apiKey,
|
|
1792
1899
|
baseUrl: config.baseUrl,
|
|
1793
1900
|
timeout: config.timeout,
|
|
1794
1901
|
maxRetries: config.maxRetries
|
|
1795
1902
|
});
|
|
1796
|
-
|
|
1797
|
-
registerProviderMetadata(provider.name, provider.metadata);
|
|
1798
|
-
if (provider.metadata.pricing) {
|
|
1799
|
-
for (const [model, pricing] of Object.entries(provider.metadata.pricing)) {
|
|
1800
|
-
registerPricing(model, pricing);
|
|
1801
|
-
}
|
|
1802
|
-
}
|
|
1803
|
-
}
|
|
1903
|
+
autoRegisterProvider(provider);
|
|
1804
1904
|
const defaultModel = config.model ?? provider.defaultModel;
|
|
1905
|
+
const maxMessages = config.maxMessages ?? 1000;
|
|
1906
|
+
const maxInputTokens = config.maxInputTokens ?? 1e6;
|
|
1805
1907
|
let xrayStore = null;
|
|
1806
1908
|
const allMiddleware = [...config.middleware ?? []];
|
|
1807
1909
|
if (config.xray) {
|
|
@@ -1816,14 +1918,7 @@ function gateway(config) {
|
|
|
1816
1918
|
if (!composedMiddleware) {
|
|
1817
1919
|
return provider.complete(req);
|
|
1818
1920
|
}
|
|
1819
|
-
const ctx = {
|
|
1820
|
-
request: req,
|
|
1821
|
-
provider: provider.name,
|
|
1822
|
-
model: req.model ?? defaultModel,
|
|
1823
|
-
traceId: generateTraceId(),
|
|
1824
|
-
startTime: performance.now(),
|
|
1825
|
-
metadata: request.metadata ?? {}
|
|
1826
|
-
};
|
|
1921
|
+
const ctx = buildMiddlewareContext(req, provider.name, defaultModel, request.metadata ?? {});
|
|
1827
1922
|
return composedMiddleware(ctx, async (c) => provider.complete(c.request));
|
|
1828
1923
|
}
|
|
1829
1924
|
return {
|
|
@@ -1835,34 +1930,27 @@ function gateway(config) {
|
|
|
1835
1930
|
return xrayStore?.callHistory(limit) ?? [];
|
|
1836
1931
|
},
|
|
1837
1932
|
async complete(request) {
|
|
1933
|
+
validateRequestLimits(request, maxMessages, maxInputTokens);
|
|
1838
1934
|
return executeWithMiddleware(request);
|
|
1839
1935
|
},
|
|
1840
1936
|
stream(request) {
|
|
1937
|
+
validateRequestLimits(request, maxMessages, maxInputTokens);
|
|
1841
1938
|
const req = { ...request, model: request.model ?? defaultModel };
|
|
1842
1939
|
if (composedMiddleware) {
|
|
1843
|
-
const ctx = {
|
|
1844
|
-
request: req,
|
|
1845
|
-
provider: provider.name,
|
|
1846
|
-
model: req.model ?? defaultModel,
|
|
1847
|
-
traceId: generateTraceId(),
|
|
1848
|
-
startTime: performance.now(),
|
|
1849
|
-
metadata: request.metadata ?? {}
|
|
1850
|
-
};
|
|
1940
|
+
const ctx = buildMiddlewareContext(req, provider.name, defaultModel, request.metadata ?? {});
|
|
1851
1941
|
return createStream(async (emit) => {
|
|
1852
1942
|
await composedMiddleware(ctx, async (c) => {
|
|
1853
|
-
const
|
|
1854
|
-
|
|
1855
|
-
emit(event);
|
|
1856
|
-
}
|
|
1943
|
+
const result = await accumulateStreamEvents(provider.stream(c.request), emit);
|
|
1944
|
+
const latencyMs = Math.round(performance.now() - ctx.startTime);
|
|
1857
1945
|
return {
|
|
1858
|
-
id:
|
|
1859
|
-
message: { role: "assistant", content:
|
|
1860
|
-
usage:
|
|
1861
|
-
cost:
|
|
1946
|
+
id: result.id,
|
|
1947
|
+
message: { role: "assistant", content: result.textContent },
|
|
1948
|
+
usage: result.usage,
|
|
1949
|
+
cost: calculateCost(c.model, result.usage),
|
|
1862
1950
|
model: c.model,
|
|
1863
1951
|
provider: provider.name,
|
|
1864
|
-
stopReason:
|
|
1865
|
-
latencyMs
|
|
1952
|
+
stopReason: result.stopReason,
|
|
1953
|
+
latencyMs,
|
|
1866
1954
|
traceId: ctx.traceId
|
|
1867
1955
|
};
|
|
1868
1956
|
});
|
|
@@ -2223,6 +2311,12 @@ function redactResponseSecrets(response, config) {
|
|
|
2223
2311
|
}
|
|
2224
2312
|
function securityMiddleware(config) {
|
|
2225
2313
|
return async (ctx, next) => {
|
|
2314
|
+
if (ctx.request.system) {
|
|
2315
|
+
const sysViolations = scanMessageForViolations(ctx.request.system, config);
|
|
2316
|
+
if (sysViolations.length > 0) {
|
|
2317
|
+
reportAndThrow(sysViolations, config);
|
|
2318
|
+
}
|
|
2319
|
+
}
|
|
2226
2320
|
for (const message of ctx.request.messages) {
|
|
2227
2321
|
const text = extractText(message.content);
|
|
2228
2322
|
if (!text)
|
|
@@ -2557,7 +2651,22 @@ function createProviderMesh(config) {
|
|
|
2557
2651
|
const available = sortedProviders.find((e) => isProviderAvailable(e.name));
|
|
2558
2652
|
const entry = available ?? sortedProviders[0];
|
|
2559
2653
|
const gw = getGateway(entry.name);
|
|
2560
|
-
|
|
2654
|
+
let resolvedStream = null;
|
|
2655
|
+
callWithCircuitBreaker(entry.name, () => {
|
|
2656
|
+
resolvedStream = gw.stream({ ...request, model: request.model ?? entry.model });
|
|
2657
|
+
return Promise.resolve(resolvedStream);
|
|
2658
|
+
}).catch(() => {});
|
|
2659
|
+
if (resolvedStream === null) {
|
|
2660
|
+
const err2 = new ElsiumError({
|
|
2661
|
+
code: "PROVIDER_ERROR",
|
|
2662
|
+
message: "Circuit breaker is open",
|
|
2663
|
+
retryable: true
|
|
2664
|
+
});
|
|
2665
|
+
return new ElsiumStream(async function* () {
|
|
2666
|
+
yield { type: "error", error: err2 };
|
|
2667
|
+
}());
|
|
2668
|
+
}
|
|
2669
|
+
return resolvedStream;
|
|
2561
2670
|
}
|
|
2562
2671
|
};
|
|
2563
2672
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"google.d.ts","sourceRoot":"","sources":["../../src/providers/google.ts"],"names":[],"mappings":"AAAA,OAAO,EAMN,KAAK,cAAc,EASnB,MAAM,iBAAiB,CAAA;AAExB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"google.d.ts","sourceRoot":"","sources":["../../src/providers/google.ts"],"names":[],"mappings":"AAAA,OAAO,EAMN,KAAK,cAAc,EASnB,MAAM,iBAAiB,CAAA;AAExB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAqC9C,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,cAAc,GAAG,WAAW,CA8PxE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"AAAA,OAAO,EAMN,KAAK,cAAc,EASnB,MAAM,iBAAiB,CAAA;AAExB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"AAAA,OAAO,EAMN,KAAK,cAAc,EASnB,MAAM,iBAAiB,CAAA;AAExB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAoD9C,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,cAAc,GAAG,WAAW,CAsSxE"}
|
package/dist/router.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { CompletionRequest, LLMResponse } from '@elsium-ai/core';
|
|
2
|
-
import { type CircuitBreakerConfig,
|
|
2
|
+
import { type CircuitBreakerConfig, ElsiumStream } from '@elsium-ai/core';
|
|
3
3
|
export type RoutingStrategy = 'fallback' | 'cost-optimized' | 'latency-optimized' | 'capability-aware';
|
|
4
4
|
export interface ProviderEntry {
|
|
5
5
|
name: string;
|
package/dist/router.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AACrE,OAAO,EAEN,KAAK,oBAAoB,EAEzB,
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AACrE,OAAO,EAEN,KAAK,oBAAoB,EAEzB,YAAY,EAEZ,MAAM,iBAAiB,CAAA;AAKxB,MAAM,MAAM,eAAe,GACxB,UAAU,GACV,gBAAgB,GAChB,mBAAmB,GACnB,kBAAkB,CAAA;AAErB,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;CACvB;AAED,MAAM,WAAW,mBAAmB;IACnC,WAAW,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IAChD,YAAY,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IACjD,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED,MAAM,WAAW,kBAAkB;IAClC,SAAS,EAAE,aAAa,EAAE,CAAA;IAC1B,QAAQ,EAAE,eAAe,CAAA;IACzB,aAAa,CAAC,EAAE,mBAAmB,CAAA;IACnC,cAAc,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAA;CAC/C;AAED,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;IAC1D,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,YAAY,CAAA;IAChD,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,CAAA;IAC5B,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAA;CAClC;AAoDD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,YAAY,CAgQ3E"}
|
package/dist/security.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../src/security.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,UAAU,EAAqC,MAAM,iBAAiB,CAAA;AAKjG,MAAM,WAAW,iBAAiB;IACjC,IAAI,EAAE,kBAAkB,GAAG,WAAW,GAAG,iBAAiB,GAAG,iBAAiB,CAAA;IAC9E,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAA;CACnC;AAED,MAAM,WAAW,cAAc;IAC9B,IAAI,EAAE,OAAO,CAAA;IACb,UAAU,EAAE,iBAAiB,EAAE,CAAA;CAC/B;AAED,MAAM,WAAW,wBAAwB;IACxC,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,QAAQ,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,KAAK,CAAC,CAAA;IACpE,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,iBAAiB,KAAK,IAAI,CAAA;CACpD;AAuID,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,UAAU,GAAG,cAAc,GAAG,YAAY,CAAA;AAEtF,MAAM,WAAW,oBAAoB;IACpC,KAAK,EAAE,kBAAkB,CAAA;IACzB,aAAa,EAAE,MAAM,EAAE,CAAA;CACvB;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,CA4BlE;AAQD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,EAAE,CASvE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,EAAE,CASjE;AAoCD,wBAAgB,aAAa,CAC5B,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,KAAK,CAAC,GAClE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,iBAAiB,EAAE,CAAA;CAAE,CAYlD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,iBAAiB,EAAE,CAa1F;AAwDD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,wBAAwB,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../src/security.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,UAAU,EAAqC,MAAM,iBAAiB,CAAA;AAKjG,MAAM,WAAW,iBAAiB;IACjC,IAAI,EAAE,kBAAkB,GAAG,WAAW,GAAG,iBAAiB,GAAG,iBAAiB,CAAA;IAC9E,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAA;CACnC;AAED,MAAM,WAAW,cAAc;IAC9B,IAAI,EAAE,OAAO,CAAA;IACb,UAAU,EAAE,iBAAiB,EAAE,CAAA;CAC/B;AAED,MAAM,WAAW,wBAAwB;IACxC,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,QAAQ,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,KAAK,CAAC,CAAA;IACpE,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,iBAAiB,KAAK,IAAI,CAAA;CACpD;AAuID,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,UAAU,GAAG,cAAc,GAAG,YAAY,CAAA;AAEtF,MAAM,WAAW,oBAAoB;IACpC,KAAK,EAAE,kBAAkB,CAAA;IACzB,aAAa,EAAE,MAAM,EAAE,CAAA;CACvB;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,CA4BlE;AAQD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,EAAE,CASvE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,EAAE,CASjE;AAoCD,wBAAgB,aAAa,CAC5B,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,KAAK,CAAC,GAClE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,iBAAiB,EAAE,CAAA;CAAE,CAYlD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,iBAAiB,EAAE,CAa1F;AAwDD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,wBAAwB,GAAG,UAAU,CA+B/E"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elsium-ai/gateway",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.3",
|
|
4
4
|
"description": "Multi-provider LLM gateway for ElsiumAI",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Eric Utrera <ebutrera9103@gmail.com>",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
9
|
-
"url": "https://github.com/elsium-ai/elsium-ai",
|
|
9
|
+
"url": "git+https://github.com/elsium-ai/elsium-ai.git",
|
|
10
10
|
"directory": "packages/gateway"
|
|
11
11
|
},
|
|
12
12
|
"type": "module",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"dev": "bun --watch src/index.ts"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@elsium-ai/core": "^0.2.
|
|
29
|
+
"@elsium-ai/core": "^0.2.3",
|
|
30
30
|
"zod": "^3.24.0"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|