@alfe.ai/gateway 0.9.13 → 0.9.14
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/health.js +37 -3
- package/package.json +3 -3
package/dist/health.js
CHANGED
|
@@ -4533,6 +4533,7 @@ _enum(MOONSHOT_MODELS);
|
|
|
4533
4533
|
_enum(QWEN_MODELS);
|
|
4534
4534
|
string().trim().min(1);
|
|
4535
4535
|
AnthropicModel.Opus5, AnthropicModel.Opus48, AnthropicModel.Opus47, AnthropicModel.Opus46, AnthropicModel.Sonnet5, AnthropicModel.Sonnet46, AnthropicModel.Haiku45, OpenAIModel.GPT4o, OpenAIModel.GPT4oMini, OpenAIModel.O3, OpenAIModel.GPT41, OpenAIModel.GPT41Mini, OpenAIModel.GPT41Nano, OpenAIModel.GPT54, OpenAIModel.GPT54Mini, OpenAIModel.GPT54Nano, OpenAIModel.GPT54Pro, OpenAIModel.GPT55, OpenAIModel.GPT55Pro, OpenAIModel.GPT56Sol, OpenAIModel.GPT56Terra, OpenAIModel.GPT56Luna, OpenAIModel.O3Mini, OpenAIModel.O4Mini, OpenAIModel.TextEmbedding3Small, OpenAIModel.TextEmbedding3Large, DeepSeekModel.Chat, DeepSeekModel.Reasoner, DeepSeekModel.V4Flash, DeepSeekModel.V4Pro, GoogleModel.Gemini35Flash, GoogleModel.Gemini31Pro, GoogleModel.Gemini31FlashLite, GoogleModel.Gemini25Pro, GoogleModel.Gemini25Flash, GoogleModel.Gemini25FlashLite, GoogleModel.Gemini20Flash, MiniMaxModel.M3, MiniMaxModel.M27, MiniMaxModel.M27HighSpeed, MiniMaxModel.M25, MiniMaxModel.M21, MiniMaxModel.M2, MistralModel.Large, MistralModel.Medium, MistralModel.Small, MistralModel.Codestral, MistralModel.Ministral8b, MistralModel.Ministral3b, MistralModel.MagistralMedium, MistralModel.MagistralSmall, MistralModel.DevstralMedium, XAIModel.Grok45, XAIModel.Grok43, XAIModel.Grok4, XAIModel.Grok41Fast, ZhipuModel.GLM52, ZhipuModel.GLM51, ZhipuModel.GLM46, ZhipuModel.GLM45, ZhipuModel.GLM45Air, MoonshotModel.K3, MoonshotModel.K26, MoonshotModel.K27Code, MoonshotModel.K27CodeHighSpeed, QwenModel.Qwen37Max, QwenModel.Qwen37Plus, QwenModel.Qwen36Flash, QwenModel.Qwen35Flash;
|
|
4536
|
+
({ Qwen3_8B: "alfe-qwen3-8b" }).Qwen3_8B;
|
|
4536
4537
|
AnthropicModel.Opus5, AnthropicModel.Opus48, AnthropicModel.Opus47, AnthropicModel.Opus46, AnthropicModel.Sonnet5, AnthropicModel.Sonnet46, AnthropicModel.Haiku45, OpenAIModel.GPT4o, OpenAIModel.GPT4oMini, OpenAIModel.O3, OpenAIModel.GPT41, OpenAIModel.GPT41Mini, OpenAIModel.GPT41Nano, OpenAIModel.GPT54, OpenAIModel.GPT54Mini, OpenAIModel.GPT54Nano, OpenAIModel.GPT54Pro, OpenAIModel.GPT55, OpenAIModel.GPT55Pro, OpenAIModel.GPT56Sol, OpenAIModel.GPT56Terra, OpenAIModel.GPT56Luna, OpenAIModel.O3Mini, OpenAIModel.O4Mini, OpenAIModel.TextEmbedding3Small, OpenAIModel.TextEmbedding3Large, DeepSeekModel.Chat, DeepSeekModel.Reasoner, DeepSeekModel.V4Flash, DeepSeekModel.V4Pro, GoogleModel.Gemini35Flash, GoogleModel.Gemini31Pro, GoogleModel.Gemini31FlashLite, GoogleModel.Gemini25Pro, GoogleModel.Gemini25Flash, GoogleModel.Gemini25FlashLite, GoogleModel.Gemini20Flash, MiniMaxModel.M3, MiniMaxModel.M27, MiniMaxModel.M27HighSpeed, MiniMaxModel.M25, MiniMaxModel.M21, MiniMaxModel.M2, MistralModel.Large, MistralModel.Medium, MistralModel.Small, MistralModel.Codestral, MistralModel.Ministral8b, MistralModel.Ministral3b, MistralModel.MagistralMedium, MistralModel.MagistralSmall, MistralModel.DevstralMedium, XAIModel.Grok45, XAIModel.Grok43, XAIModel.Grok4, XAIModel.Grok41Fast, ZhipuModel.GLM52, ZhipuModel.GLM51, ZhipuModel.GLM46, ZhipuModel.GLM45, ZhipuModel.GLM45Air, MoonshotModel.K3, MoonshotModel.K26, MoonshotModel.K27Code, MoonshotModel.K27CodeHighSpeed, QwenModel.Qwen37Max, QwenModel.Qwen37Plus, QwenModel.Qwen36Flash, QwenModel.Qwen35Flash;
|
|
4537
4538
|
enumValues({
|
|
4538
4539
|
Standard: "standard",
|
|
@@ -5397,6 +5398,24 @@ function deriveGatewayWsUrl(apiEndpoint) {
|
|
|
5397
5398
|
return "wss://gateway.alfe.ai/ws";
|
|
5398
5399
|
}
|
|
5399
5400
|
}
|
|
5401
|
+
function validatePrivateManagedWsUrl(value, service) {
|
|
5402
|
+
let url;
|
|
5403
|
+
try {
|
|
5404
|
+
url = new URL(value);
|
|
5405
|
+
} catch {
|
|
5406
|
+
throw new Error(`${service} WebSocket URL must be a valid regional service URL`);
|
|
5407
|
+
}
|
|
5408
|
+
if (url.protocol !== "ws:" || !url.hostname.endsWith(".local") && !url.hostname.endsWith(".sst") || url.pathname !== "/ws" || url.username !== "" || url.password !== "" || url.search !== "" || url.hash !== "") throw new Error(`${service} WebSocket URL must be a canonical VPC-local regional service URL`);
|
|
5409
|
+
return url.toString();
|
|
5410
|
+
}
|
|
5411
|
+
function _resolveManagedGatewayWsUrl(apiEndpoint) {
|
|
5412
|
+
const override = process.env.ALFE_GATEWAY_WS_URL?.trim();
|
|
5413
|
+
if (process.env.ALFE_PRIVATE_DATA_PLANE === "true") {
|
|
5414
|
+
if (!override) throw new Error("ALFE_GATEWAY_WS_URL is required in AWS-private managed mode");
|
|
5415
|
+
return validatePrivateManagedWsUrl(override, "Gateway");
|
|
5416
|
+
}
|
|
5417
|
+
return override && override.length > 0 ? override : deriveGatewayWsUrl(apiEndpoint);
|
|
5418
|
+
}
|
|
5400
5419
|
/**
|
|
5401
5420
|
* Parse [runtimes.*] sections from config.toml.
|
|
5402
5421
|
* Returns a map of runtime name → RuntimeConfig.
|
|
@@ -5471,7 +5490,7 @@ async function loadManagedConfig() {
|
|
|
5471
5490
|
const apiEndpoint = process.env.ALFE_API_ENDPOINT ?? getEndpointFromToken(apiKey);
|
|
5472
5491
|
logger$1.debug({ apiEndpoint }, "Environment loaded, resolving identity...");
|
|
5473
5492
|
const identity = await resolveAgentIdentity(apiKey, apiEndpoint);
|
|
5474
|
-
const gatewayWsUrl =
|
|
5493
|
+
const gatewayWsUrl = _resolveManagedGatewayWsUrl(apiEndpoint);
|
|
5475
5494
|
logger$1.debug({
|
|
5476
5495
|
agentId: identity.agentId,
|
|
5477
5496
|
orgId: identity.orgId,
|
|
@@ -6950,6 +6969,15 @@ const SYSTEMD_SERVICE = "alfe-gateway";
|
|
|
6950
6969
|
const MANAGED_ENV_VARS = [
|
|
6951
6970
|
"ALFE_MANAGED",
|
|
6952
6971
|
"ALFE_API_KEY",
|
|
6972
|
+
"ALFE_API_ENDPOINT",
|
|
6973
|
+
"ALFE_API_URL",
|
|
6974
|
+
"ALFE_AI_PROXY_URL",
|
|
6975
|
+
"ALFE_CHAT_WS_URL",
|
|
6976
|
+
"ALFE_GATEWAY_WS_URL",
|
|
6977
|
+
"ALFE_SYNC_RELAY_WS_URL",
|
|
6978
|
+
"ALFE_PRIVATE_DATA_PLANE",
|
|
6979
|
+
"ALFE_PRIVATE_DATA_PLANE_REGION",
|
|
6980
|
+
"ALFE_PRIVATE_DATA_PLANE_RELEASE",
|
|
6953
6981
|
"LOG_LEVEL",
|
|
6954
6982
|
"ALFE_CLI_VERSION"
|
|
6955
6983
|
];
|
|
@@ -7992,12 +8020,18 @@ async function startAiProxy(apiKey) {
|
|
|
7992
8020
|
try {
|
|
7993
8021
|
const { createProxyServer, DEFAULT_AI_PROXY_PORT } = await import("@alfe.ai/ai-proxy-local");
|
|
7994
8022
|
const { getAiServiceUrlFromToken } = await import("@alfe.ai/config");
|
|
7995
|
-
const
|
|
8023
|
+
const privateDataPlane = process.env.ALFE_PRIVATE_DATA_PLANE === "true";
|
|
8024
|
+
const proxyUrlOverride = process.env.ALFE_AI_PROXY_URL?.trim();
|
|
8025
|
+
const configuredProxyUrl = proxyUrlOverride && proxyUrlOverride.length > 0 ? proxyUrlOverride : void 0;
|
|
8026
|
+
if (privateDataPlane && configuredProxyUrl === void 0) throw new Error("AWS-private AI proxy target is not configured");
|
|
8027
|
+
const proxyUrl = configuredProxyUrl ?? getAiServiceUrlFromToken(apiKey);
|
|
7996
8028
|
const port = DEFAULT_AI_PROXY_PORT ?? 18193;
|
|
7997
8029
|
handle.server = createProxyServer({
|
|
7998
8030
|
port,
|
|
7999
8031
|
apiKey,
|
|
8000
|
-
proxyUrl
|
|
8032
|
+
proxyUrl,
|
|
8033
|
+
allowPrivateAwsTarget: privateDataPlane,
|
|
8034
|
+
requirePrivateAwsTarget: privateDataPlane
|
|
8001
8035
|
});
|
|
8002
8036
|
const server = handle.server;
|
|
8003
8037
|
await new Promise((resolve, reject) => {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alfe.ai/gateway",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.14",
|
|
4
4
|
"description": "Alfe local gateway daemon — persistent control plane for agent integrations",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
"pino-roll": "^1.2.0",
|
|
24
24
|
"smol-toml": ">=1.6.1",
|
|
25
25
|
"ws": "^8.18.0",
|
|
26
|
-
"@alfe.ai/agent-api-client": "^0.17.
|
|
27
|
-
"@alfe.ai/ai-proxy-local": "^0.0.
|
|
26
|
+
"@alfe.ai/agent-api-client": "^0.17.1",
|
|
27
|
+
"@alfe.ai/ai-proxy-local": "^0.0.17",
|
|
28
28
|
"@alfe.ai/config": "^0.4.1",
|
|
29
29
|
"@alfe.ai/integration-manifest": "^0.4.0",
|
|
30
30
|
"@alfe.ai/integrations": "^0.6.4",
|