@robinpath/ai
Advanced tools
+13
-3
| { | ||
| "name": "@robinpath/ai", | ||
| "version": "0.1.1", | ||
| "version": "0.1.2", | ||
| "description": "LLM integration for OpenAI, Anthropic, and compatible APIs", | ||
@@ -25,9 +25,19 @@ "publishConfig": { | ||
| "peerDependencies": { | ||
| "@wiredwp/robinpath": ">=0.20.0" | ||
| "@robinpath/core": ">=0.20.0" | ||
| }, | ||
| "devDependencies": { | ||
| "@wiredwp/robinpath": "^0.30.1", | ||
| "@robinpath/core": "^0.30.1", | ||
| "tsx": "^4.19.0", | ||
| "typescript": "^5.6.0" | ||
| }, | ||
| "keywords": [ | ||
| "ai" | ||
| ], | ||
| "license": "MIT", | ||
| "robinpath": { | ||
| "category": "ai", | ||
| "type": "integration", | ||
| "auth": "api-key", | ||
| "functionCount": 10 | ||
| } | ||
| } |
-139
| import type { BuiltinHandler } from "@wiredwp/robinpath"; | ||
| export declare const AiFunctions: Record<string, BuiltinHandler>; | ||
| export declare const AiFunctionMetadata: { | ||
| configure: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| chat: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| complete: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| summarize: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| extract: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| classify: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| translate: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| sentiment: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| generateJson: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| embedding: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| }; | ||
| export declare const AiModuleMetadata: { | ||
| description: string; | ||
| methods: string[]; | ||
| }; | ||
| //# sourceMappingURL=ai.d.ts.map |
| {"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../src/ai.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAA2C,MAAM,oBAAoB,CAAC;AAuPlG,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAEtD,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAW9B,CAAC;AAEF,eAAO,MAAM,gBAAgB;;;CAG5B,CAAC"} |
-220
| const providers = new Map(); | ||
| const PROVIDER_DEFAULTS = { | ||
| openai: { baseUrl: "https://api.openai.com/v1", model: "gpt-4o" }, | ||
| anthropic: { baseUrl: "https://api.anthropic.com/v1", model: "claude-sonnet-4-5-20250929" }, | ||
| }; | ||
| // ── Function Handlers ─────────────────────────────────────────────── | ||
| const configure = (args) => { | ||
| const name = String(args[0] ?? "default"); | ||
| const opts = (typeof args[1] === "object" && args[1] !== null ? args[1] : {}); | ||
| const provider = String(opts.provider ?? "openai"); | ||
| const defaults = PROVIDER_DEFAULTS[provider] ?? { baseUrl: "", model: "" }; | ||
| const config = { | ||
| name, | ||
| provider, | ||
| apiKey: String(opts.apiKey ?? opts.key ?? ""), | ||
| baseUrl: String(opts.baseUrl ?? defaults.baseUrl), | ||
| defaultModel: String(opts.model ?? defaults.model), | ||
| defaultMaxTokens: Number(opts.maxTokens ?? 4096), | ||
| }; | ||
| providers.set(name, config); | ||
| return { name, provider, model: config.defaultModel }; | ||
| }; | ||
| const chat = async (args) => { | ||
| const providerName = String(args[0] ?? "default"); | ||
| const messages = args[1]; | ||
| const opts = (typeof args[2] === "object" && args[2] !== null ? args[2] : {}); | ||
| const config = providers.get(providerName); | ||
| if (!config) | ||
| throw new Error(`AI provider "${providerName}" not configured. Use ai.configure first.`); | ||
| const model = String(opts.model ?? config.defaultModel); | ||
| const maxTokens = Number(opts.maxTokens ?? config.defaultMaxTokens); | ||
| const temperature = opts.temperature != null ? Number(opts.temperature) : undefined; | ||
| const systemPrompt = opts.system ? String(opts.system) : undefined; | ||
| // Normalize messages | ||
| let msgArray; | ||
| if (typeof messages === "string") { | ||
| msgArray = [{ role: "user", content: messages }]; | ||
| } | ||
| else if (Array.isArray(messages)) { | ||
| msgArray = messages; | ||
| } | ||
| else { | ||
| msgArray = [{ role: "user", content: String(messages) }]; | ||
| } | ||
| if (config.provider === "anthropic") { | ||
| return await callAnthropic(config, msgArray, model, maxTokens, temperature, systemPrompt); | ||
| } | ||
| // OpenAI-compatible (also works for custom endpoints) | ||
| return await callOpenAI(config, msgArray, model, maxTokens, temperature, systemPrompt); | ||
| }; | ||
| async function callOpenAI(config, messages, model, maxTokens, temperature, system) { | ||
| const allMessages = system ? [{ role: "system", content: system }, ...messages] : messages; | ||
| const body = { model, messages: allMessages, max_tokens: maxTokens }; | ||
| if (temperature !== undefined) | ||
| body.temperature = temperature; | ||
| const response = await fetch(`${config.baseUrl}/chat/completions`, { | ||
| method: "POST", | ||
| headers: { "Content-Type": "application/json", Authorization: `Bearer ${config.apiKey}` }, | ||
| body: JSON.stringify(body), | ||
| }); | ||
| const data = await response.json(); | ||
| if (!response.ok) | ||
| throw new Error(`OpenAI API error: ${JSON.stringify(data.error ?? data)}`); | ||
| const choices = data.choices; | ||
| const usage = data.usage; | ||
| return { | ||
| content: choices?.[0]?.message?.content ?? "", | ||
| role: "assistant", | ||
| model: data.model, | ||
| usage: usage ? { promptTokens: usage.prompt_tokens, completionTokens: usage.completion_tokens, totalTokens: usage.total_tokens } : undefined, | ||
| }; | ||
| } | ||
| async function callAnthropic(config, messages, model, maxTokens, temperature, system) { | ||
| const body = { model, messages, max_tokens: maxTokens }; | ||
| if (system) | ||
| body.system = system; | ||
| if (temperature !== undefined) | ||
| body.temperature = temperature; | ||
| const response = await fetch(`${config.baseUrl}/messages`, { | ||
| method: "POST", | ||
| headers: { | ||
| "Content-Type": "application/json", | ||
| "x-api-key": config.apiKey, | ||
| "anthropic-version": "2023-06-01", | ||
| }, | ||
| body: JSON.stringify(body), | ||
| }); | ||
| const data = await response.json(); | ||
| if (!response.ok) | ||
| throw new Error(`Anthropic API error: ${JSON.stringify(data.error ?? data)}`); | ||
| const content = data.content?.[0]?.text ?? ""; | ||
| const usage = data.usage; | ||
| return { | ||
| content, | ||
| role: "assistant", | ||
| model: data.model, | ||
| usage: usage ? { promptTokens: usage.input_tokens, completionTokens: usage.output_tokens, totalTokens: (usage.input_tokens ?? 0) + (usage.output_tokens ?? 0) } : undefined, | ||
| stopReason: data.stop_reason, | ||
| }; | ||
| } | ||
| const complete = async (args) => { | ||
| const providerName = String(args[0] ?? "default"); | ||
| const prompt = String(args[1] ?? ""); | ||
| const opts = (typeof args[2] === "object" && args[2] !== null ? args[2] : {}); | ||
| const result = await chat([providerName, prompt, opts]); | ||
| return result.content; | ||
| }; | ||
| const summarize = async (args) => { | ||
| const providerName = String(args[0] ?? "default"); | ||
| const text = String(args[1] ?? ""); | ||
| const opts = (typeof args[2] === "object" && args[2] !== null ? args[2] : {}); | ||
| const maxLength = opts.maxLength ? `in ${opts.maxLength} words or less` : "concisely"; | ||
| const prompt = `Summarize the following text ${maxLength}:\n\n${text}`; | ||
| return await complete([providerName, prompt, opts]); | ||
| }; | ||
| const extract = async (args) => { | ||
| const providerName = String(args[0] ?? "default"); | ||
| const text = String(args[1] ?? ""); | ||
| const fields = Array.isArray(args[2]) ? args[2] : String(args[2] ?? "").split(",").map((s) => s.trim()); | ||
| const opts = (typeof args[3] === "object" && args[3] !== null ? args[3] : {}); | ||
| const prompt = `Extract the following fields from the text below and return ONLY a valid JSON object with these keys: ${fields.join(", ")}.\n\nText:\n${text}\n\nJSON:`; | ||
| const result = await complete([providerName, prompt, { ...opts, temperature: 0 }]); | ||
| try { | ||
| const jsonMatch = result.match(/\{[\s\S]*\}/); | ||
| return jsonMatch ? JSON.parse(jsonMatch[0]) : result; | ||
| } | ||
| catch { | ||
| return result; | ||
| } | ||
| }; | ||
| const classify = async (args) => { | ||
| const providerName = String(args[0] ?? "default"); | ||
| const text = String(args[1] ?? ""); | ||
| const categories = Array.isArray(args[2]) ? args[2] : String(args[2] ?? "").split(",").map((s) => s.trim()); | ||
| const opts = (typeof args[3] === "object" && args[3] !== null ? args[3] : {}); | ||
| const prompt = `Classify the following text into exactly one of these categories: ${categories.join(", ")}.\n\nText: ${text}\n\nRespond with ONLY the category name, nothing else.`; | ||
| const result = await complete([providerName, prompt, { ...opts, temperature: 0 }]); | ||
| return result.trim(); | ||
| }; | ||
| const translate = async (args) => { | ||
| const providerName = String(args[0] ?? "default"); | ||
| const text = String(args[1] ?? ""); | ||
| const targetLang = String(args[2] ?? "English"); | ||
| const opts = (typeof args[3] === "object" && args[3] !== null ? args[3] : {}); | ||
| const prompt = `Translate the following text to ${targetLang}. Return ONLY the translation, nothing else.\n\n${text}`; | ||
| return await complete([providerName, prompt, opts]); | ||
| }; | ||
| const sentiment = async (args) => { | ||
| const providerName = String(args[0] ?? "default"); | ||
| const text = String(args[1] ?? ""); | ||
| const opts = (typeof args[2] === "object" && args[2] !== null ? args[2] : {}); | ||
| const prompt = `Analyze the sentiment of the following text. Respond with ONLY a JSON object: {"sentiment": "positive"|"negative"|"neutral", "score": 0.0-1.0, "confidence": 0.0-1.0}\n\nText: ${text}\n\nJSON:`; | ||
| const result = await complete([providerName, prompt, { ...opts, temperature: 0 }]); | ||
| try { | ||
| const jsonMatch = result.match(/\{[\s\S]*\}/); | ||
| return jsonMatch ? JSON.parse(jsonMatch[0]) : { sentiment: "neutral", score: 0.5 }; | ||
| } | ||
| catch { | ||
| return { sentiment: "neutral", score: 0.5, raw: result }; | ||
| } | ||
| }; | ||
| const generateJson = async (args) => { | ||
| const providerName = String(args[0] ?? "default"); | ||
| const prompt = String(args[1] ?? ""); | ||
| const schema = args[2]; | ||
| const opts = (typeof args[3] === "object" && args[3] !== null ? args[3] : {}); | ||
| let fullPrompt = `${prompt}\n\nRespond with ONLY a valid JSON object`; | ||
| if (schema) | ||
| fullPrompt += ` matching this structure: ${JSON.stringify(schema)}`; | ||
| fullPrompt += ". No explanations, no markdown, just JSON."; | ||
| const result = await complete([providerName, fullPrompt, { ...opts, temperature: 0 }]); | ||
| try { | ||
| const jsonMatch = result.match(/\{[\s\S]*\}|\[[\s\S]*\]/); | ||
| return jsonMatch ? JSON.parse(jsonMatch[0]) : result; | ||
| } | ||
| catch { | ||
| return result; | ||
| } | ||
| }; | ||
| const embedding = async (args) => { | ||
| const providerName = String(args[0] ?? "default"); | ||
| const input = args[1]; | ||
| const opts = (typeof args[2] === "object" && args[2] !== null ? args[2] : {}); | ||
| const config = providers.get(providerName); | ||
| if (!config) | ||
| throw new Error(`AI provider "${providerName}" not configured.`); | ||
| const model = String(opts.model ?? "text-embedding-3-small"); | ||
| const texts = Array.isArray(input) ? input.map(String) : [String(input)]; | ||
| const response = await fetch(`${config.baseUrl}/embeddings`, { | ||
| method: "POST", | ||
| headers: { "Content-Type": "application/json", Authorization: `Bearer ${config.apiKey}` }, | ||
| body: JSON.stringify({ model, input: texts }), | ||
| }); | ||
| const data = await response.json(); | ||
| if (!response.ok) | ||
| throw new Error(`Embeddings error: ${JSON.stringify(data.error ?? data)}`); | ||
| const embeddings = data.data?.map((d) => d.embedding) ?? []; | ||
| return texts.length === 1 ? embeddings[0] : embeddings; | ||
| }; | ||
| // ── Exports ───────────────────────────────────────────────────────── | ||
| export const AiFunctions = { | ||
| configure, chat, complete, summarize, extract, classify, translate, sentiment, generateJson, embedding, | ||
| }; | ||
| export const AiFunctionMetadata = { | ||
| configure: { description: "Configure an AI provider (OpenAI, Anthropic, or custom)", parameters: [{ name: "name", dataType: "string", description: "Provider name", formInputType: "text", required: true }, { name: "options", dataType: "object", description: "{provider, apiKey, baseUrl, model, maxTokens}", formInputType: "text", required: true }], returnType: "object", returnDescription: "{name, provider, model}", example: 'ai.configure "openai" {"provider": "openai", "apiKey": $key}' }, | ||
| chat: { description: "Send a chat message and get a response", parameters: [{ name: "provider", dataType: "string", description: "Provider name", formInputType: "text", required: true }, { name: "messages", dataType: "any", description: "String or array of {role, content}", formInputType: "text", required: true }, { name: "options", dataType: "object", description: "{model, maxTokens, temperature, system}", formInputType: "text", required: false }], returnType: "object", returnDescription: "{content, role, model, usage}", example: 'ai.chat "openai" "Explain quantum computing" {"system": "You are a teacher"}' }, | ||
| complete: { description: "Get a simple text completion (returns just the text)", parameters: [{ name: "provider", dataType: "string", description: "Provider name", formInputType: "text", required: true }, { name: "prompt", dataType: "string", description: "Prompt text", formInputType: "text", required: true }, { name: "options", dataType: "object", description: "{model, maxTokens, temperature}", formInputType: "text", required: false }], returnType: "string", returnDescription: "Generated text", example: 'ai.complete "openai" "Write a haiku about automation"' }, | ||
| summarize: { description: "Summarize text using AI", parameters: [{ name: "provider", dataType: "string", description: "Provider name", formInputType: "text", required: true }, { name: "text", dataType: "string", description: "Text to summarize", formInputType: "text", required: true }, { name: "options", dataType: "object", description: "{maxLength}", formInputType: "text", required: false }], returnType: "string", returnDescription: "Summary text", example: 'ai.summarize "openai" $longText {"maxLength": 100}' }, | ||
| extract: { description: "Extract structured data from text using AI", parameters: [{ name: "provider", dataType: "string", description: "Provider name", formInputType: "text", required: true }, { name: "text", dataType: "string", description: "Source text", formInputType: "text", required: true }, { name: "fields", dataType: "array", description: "Fields to extract", formInputType: "text", required: true }], returnType: "object", returnDescription: "Extracted key-value object", example: 'ai.extract "openai" "John Smith, age 30, from NYC" ["name", "age", "city"]' }, | ||
| classify: { description: "Classify text into one of given categories", parameters: [{ name: "provider", dataType: "string", description: "Provider name", formInputType: "text", required: true }, { name: "text", dataType: "string", description: "Text to classify", formInputType: "text", required: true }, { name: "categories", dataType: "array", description: "Possible categories", formInputType: "text", required: true }], returnType: "string", returnDescription: "Selected category", example: 'ai.classify "openai" "I love this product!" ["positive", "negative", "neutral"]' }, | ||
| translate: { description: "Translate text to a target language", parameters: [{ name: "provider", dataType: "string", description: "Provider name", formInputType: "text", required: true }, { name: "text", dataType: "string", description: "Text to translate", formInputType: "text", required: true }, { name: "targetLang", dataType: "string", description: "Target language", formInputType: "text", required: true }], returnType: "string", returnDescription: "Translated text", example: 'ai.translate "openai" "Hello world" "Spanish"' }, | ||
| sentiment: { description: "Analyze the sentiment of text", parameters: [{ name: "provider", dataType: "string", description: "Provider name", formInputType: "text", required: true }, { name: "text", dataType: "string", description: "Text to analyze", formInputType: "text", required: true }], returnType: "object", returnDescription: "{sentiment, score, confidence}", example: 'ai.sentiment "openai" "This product is amazing!"' }, | ||
| generateJson: { description: "Generate structured JSON from a prompt", parameters: [{ name: "provider", dataType: "string", description: "Provider name", formInputType: "text", required: true }, { name: "prompt", dataType: "string", description: "Prompt describing what to generate", formInputType: "text", required: true }, { name: "schema", dataType: "object", description: "Optional JSON schema/structure", formInputType: "text", required: false }], returnType: "object", returnDescription: "Generated JSON object", example: 'ai.generateJson "openai" "Generate 3 fake users" {"name": "string", "email": "string"}' }, | ||
| embedding: { description: "Generate text embeddings (OpenAI only)", parameters: [{ name: "provider", dataType: "string", description: "Provider name", formInputType: "text", required: true }, { name: "input", dataType: "any", description: "String or array of strings", formInputType: "text", required: true }, { name: "options", dataType: "object", description: "{model}", formInputType: "text", required: false }], returnType: "array", returnDescription: "Embedding vector(s)", example: 'ai.embedding "openai" "Hello world"' }, | ||
| }; | ||
| export const AiModuleMetadata = { | ||
| description: "LLM integration: chat, complete, summarize, extract, classify, translate, sentiment analysis, and embeddings", | ||
| methods: ["configure", "chat", "complete", "summarize", "extract", "classify", "translate", "sentiment", "generateJson", "embedding"], | ||
| }; | ||
| //# sourceMappingURL=ai.js.map |
| {"version":3,"file":"ai.js","sourceRoot":"","sources":["../src/ai.ts"],"names":[],"mappings":"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"} |
| import type { ModuleAdapter } from "@wiredwp/robinpath"; | ||
| declare const AiModule: ModuleAdapter; | ||
| export default AiModule; | ||
| export { AiModule }; | ||
| export { AiFunctions, AiFunctionMetadata, AiModuleMetadata } from "./ai.js"; | ||
| //# sourceMappingURL=index.d.ts.map |
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD,QAAA,MAAM,QAAQ,EAAE,aAMf,CAAC;AAEF,eAAe,QAAQ,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,CAAC;AACpB,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC"} |
| import { AiFunctions, AiFunctionMetadata, AiModuleMetadata } from "./ai.js"; | ||
| const AiModule = { | ||
| name: "ai", | ||
| functions: AiFunctions, | ||
| functionMetadata: AiFunctionMetadata, | ||
| moduleMetadata: AiModuleMetadata, | ||
| global: false, | ||
| }; // as ModuleAdapter | ||
| export default AiModule; | ||
| export { AiModule }; | ||
| export { AiFunctions, AiFunctionMetadata, AiModuleMetadata } from "./ai.js"; | ||
| //# sourceMappingURL=index.js.map |
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE5E,MAAM,QAAQ,GAAkB;IAC9B,IAAI,EAAE,IAAI;IACV,SAAS,EAAE,WAAW;IACtB,gBAAgB,EAAE,kBAAyB;IAC3C,cAAc,EAAE,gBAAuB;IACvC,MAAM,EAAE,KAAK;CACd,CAAC,CAAC,mBAAmB;AAEtB,eAAe,QAAQ,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,CAAC;AACpB,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC"} |
Empty package
Supply chain riskPackage does not contain any code. It may be removed, is name squatting, or the result of a faulty package publish.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
No License Found
LicenseLicense information could not be found.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
0
-100%1
-50%2
-50%4142
-90.03%2
-80%0
-100%