npm ai-workflow-utils @1.7.15
score
0.7535
high
flagged
2026-07-30 09:07
signals by category
content
2
cadence
1
topology
1
maintainers added: anuragarwalkar
amplifiers
co-occurring signal pairs that lift the final score
- install_script_payload + new_install_script: first-ever install script also matches payload regex (+0.15)
- typosquat + install_script_payload: typosquat shape with active payload or stub-rush surface (+0.15)
Signals fired
| signal | weight | rationale |
|---|---|---|
| content | ||
| new_install_script | 1.0 | first time ['postinstall'] present |
| install_script_payload | 1.0 | install/lifecycle script matches payload regex |
| cadence | ||
| dormant_burst | 1.0 | dormant 325d (prev 1.7.14), then 1.7.15 just published |
| topology | ||
| typosquat | 1.0 | combosquat of 'workflow' |
Prior profile (what it deviated from)
{
"had_install_script": false,
"maintainers": [],
"versions": 0
}
Evidence (package doc at flag time)
{
"dependencies_count": 43,
"dist": {
"integrity": "sha512-+pYoWDFjmHajFDbPNgR+LcjZbcgFP4v1qxzyhX36AdtoOA/GfBDASPJRc9I4k/sRNYDXPZBR+kowFkS+1Q8KDA==",
"tarball": "https://registry.npmjs.org/ai-workflow-utils/-/ai-workflow-utils-1.7.15.tgz",
"unpackedSize": 4373879
},
"dist-tags": {
"beta": "1.5.14-beta.2",
"latest": "1.7.15"
},
"latest_version": "1.7.15",
"maintainers": [
{
"email": "anuragarwalkar@gmail.com",
"name": "anuragarwalkar"
}
],
"num_versions": 51,
"repository": {
"type": "git",
"url": "git+https://github.com/anuragarwalkar/ai-workflow-utils.git"
},
"scripts": {
"build": "export NODE_ENV=production && concurrently --names \"server,ui\" \"npm run build-server\" \"npm run build-ui\"",
"build-server": "export NODE_ENV=production && webpack --config webpack.config.js",
"build-server:watch": "webpack --config webpack.config.js --watch",
"build-ui": "export NODE_ENV=production && vite build",
"check-permissions": "node bin/check-permissions.js",
"dev": "concurrently --names \"watch,server,ui\" \"npm run build-server:watch\" \"npm run start-server-dev\" \"npm run start-ui\"",
"dev-server": "concurrently --names \"watch,server\" \"npm run build-server:watch\" \"npm run start-server-dev\"",
"format": "prettier --write \"ui/src/**/*.{js,jsx,ts,tsx,json,css,md}\" \"server/**/*.{js,ts,json}\" \"*.{js,ts,json,md}\"",
"format:check": "prettier --check \"ui/src/**/*.{js,jsx,ts,tsx,json,css,md}\" \"server/**/*.{js,ts,json}\" \"*.{js,ts,json,md}\"",
"lint": "npm run lint:server && npm run lint:ui",
"lint:check": "npm run lint",
"lint:fix": "npm run lint:server:fix && npm run lint:ui:fix",
"lint:server": "eslint server/ bin/ scripts/ --ext .js",
"lint:server:fix": "eslint server/ bin/ scripts/ --ext .js --fix",
"lint:ui": "cd ui && eslint .",
"lint:ui:fix": "cd ui && eslint . --fix",
"postinstall": "node -e \"const fs=require('fs'),path=require('path'); try{fs.mkdirSync(path.join(process.cwd(),'uploads','build-scripts'),{recursive:true}); console.log('Created uploads directory');}catch(e){console.log('Note: Upload directory will be created dynamically when needed');}\"",
"prepublishOnly": "npm run build",
"preview": "vite preview",
"refactor:check": "npm run lint -- --max-warnings 0",
"start": "node dist/server.js",
"start-server": "node dist/server.js",
"start-server-dev": "nodemon dist/server.js",
"start-ui": "vite",
"test": "echo \"Error: no test specified\" && exit 1"
},
"signal_details": {
"_amplifiers": [
"install_script_payload + new_install_script: first-ever install script also matches payload regex (+0.15)",
"typosquat + install_script_payload: typosquat shape with active payload or stub-rush surface (+0.15)"
],
"dormant_burst": "dormant 325d (prev 1.7.14), then 1.7.15 just published",
"install_script_payload": "install/lifecycle script matches payload regex",
"new_install_script": "first time ['postinstall'] present",
"typosquat": "combosquat of 'workflow'"
},
"time": {
"created": "2025-07-15T17:02:26.756Z",
"modified": "2026-07-30T14:06:45.895Z"
}
}