BEACON

← candidates

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

package profile →

amplifiers co-occurring signal pairs that lift the final score

Signals fired

signalweightrationale
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"
  }
}