
Research
SANDWORM_MODE: Shai-Hulud-Style npm Worm Hijacks CI Workflows and Poisons AI Toolchains
An emerging npm supply chain attack that infects repos, steals CI secrets, and targets developer AI toolchains for further compromise.
Universal AI proxy library with SSE streaming support for OpenAI, Claude, Gemini and more
Universal AI proxy library with SSE streaming support for OpenAI, Claude, Gemini and more.
npm install open-sse
import { handleChatCore, getModelInfoCore } from "open-sse";
async function handleChat(request) {
const body = await request.json();
// Get model info (auto-detect provider)
const modelInfo = await getModelInfoCore(body.model);
// Provider credentials
const credentials = {
provider: modelInfo.provider,
accessToken: "your-token"
};
// Handle chat with auto translation & streaming
return await handleChatCore(body, credentials, console);
}
import { handleChatCore, isTokenExpiringSoon, refreshTokenByProvider } from "open-sse";
async function handleChat(request, credentials) {
const body = await request.json();
// Auto refresh if expiring
if (isTokenExpiringSoon(credentials)) {
const newTokens = await refreshTokenByProvider(
credentials.provider,
credentials,
console
);
credentials = { ...credentials, ...newTokens };
}
return await handleChatCore(body, credentials, console);
}
import { translateRequest, translateResponse } from "open-sse";
// OpenAI → Claude
const claudeRequest = await translateRequest(openAIRequest, "openai", "claude");
// Claude → OpenAI
const openAIResponse = await translateResponse(claudeResponse, "claude", "openai");
import { handleComboChat } from "open-sse/services/combo.js";
const models = [
{ provider: "claude", model: "claude-3-5-sonnet-20241022" },
{ provider: "openai", model: "gpt-4" }
];
const response = await handleComboChat(request, models, getCredentials, console);
// Handlers
import { handleChatCore, isTokenExpiringSoon } from "open-sse";
// Services
import { getModelInfoCore, parseModel } from "open-sse";
import { buildProviderUrl, buildProviderHeaders, detectFormat } from "open-sse";
import { refreshTokenByProvider, refreshClaudeOAuthToken } from "open-sse";
import { checkFallbackError, isAccountUnavailable } from "open-sse";
// Translation
import { translateRequest, translateResponse, needsTranslation } from "open-sse";
// Utils
import { errorResponse } from "open-sse";
import { createSSETransformStreamWithLogger } from "open-sse";
# Enable detailed request/response logging (default: false)
ENABLE_REQUEST_LOGS=true
When enabled, logs are saved to logs/ directory with structure:
logs/
└── {sourceFormat}_{targetFormat}_{model}_{timestamp}/
├── 0_client_raw_request.json
├── 1_raw_request.json
├── 2_converted_request.json
├── 3_raw_response.json
└── 4_converted_response.json
import { PROVIDER_MODELS, getProviderModels } from "open-sse";
const claudeModels = getProviderModels("claude");
import { PROVIDERS, OAUTH_ENDPOINTS, CACHE_TTL } from "open-sse";
// app/api/chat/route.js
import { handleChatCore, getModelInfoCore } from "open-sse";
export async function POST(request) {
const body = await request.json();
const modelInfo = await getModelInfoCore(body.model);
const credentials = {
provider: modelInfo.provider,
accessToken: process.env.API_TOKEN
};
return await handleChatCore(body, credentials, console);
}
import express from "express";
import { handleChatCore, getModelInfoCore } from "open-sse";
const app = express();
app.post("/api/chat", async (req, res) => {
const modelInfo = await getModelInfoCore(req.body.model);
const credentials = {
provider: modelInfo.provider,
accessToken: process.env.API_TOKEN
};
const response = await handleChatCore(req.body, credentials, console);
return res.send(response);
});
MIT
FAQs
Universal AI proxy library with SSE streaming support for OpenAI, Claude, Gemini and more
The npm package open-sse receives a total of 0 weekly downloads. As such, open-sse popularity was classified as not popular.
We found that open-sse demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
An emerging npm supply chain attack that infects repos, steals CI secrets, and targets developer AI toolchains for further compromise.

Company News
Socket is proud to join the OpenJS Foundation as a Silver Member, deepening our commitment to the long-term health and security of the JavaScript ecosystem.

Security News
npm now links to Socket's security analysis on every package page. Here's what you'll find when you click through.