PkgRadar

Package evidence

@bgx4k3p/[email protected]

Install-time lifecycle script: postinstall="node scripts/patch-sdk.mjs"

Trust signals

Why this verdict

PkgRadar discounts a release’s score when public reputation argues against novel malware. The verdict above already reflects these — the panel just explains what was applied.

Publisher
GitHub ActionsTrusted automation · −70% score

Effective trust discount applied: 70% (max across signals — discounts don’t stack). New install-lifecycle deltas vs the previous release would clear the discount.

Recommended action

Block this update

Static evidence trips multiple high-signal indicators. Quarantine the release until the publisher validates the change or you can rule out the indicators below.

Block this release in CIcurl · GitHub Actions

Fail the build when this package version is added or upgraded. Replace $PKGRADAR_TOKEN with a Pro / Team API key from your dashboard.

curl -fsS https://pkgradar.com/gate/npm \
  -H "Authorization: Bearer $PKGRADAR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"specs":["@bgx4k3p/[email protected]"],"fail_on":"high"}'

GitHub Actions step:

- name: PkgRadar gate
  run: |
    curl -fsS https://pkgradar.com/gate/npm \
      -H "Authorization: Bearer ${{ secrets.PKGRADAR_TOKEN }}" \
      -H "Content-Type: application/json" \
      -d '{"specs":["@bgx4k3p/[email protected]"],"fail_on":"high"}'
Artifact bytes4,117,536
Previous version2.2.4
Published2026-05-24T14:57:43.766Z
SHA-2562a6eb8b16712629946008408801cb3df43a049c891cadf7b24b4a39ccd9e055d

Why flagged

What the scanner saw

Install-time lifecycle script: postinstall="node scripts/patch-sdk.mjs"

Not observed: package install, lifecycle script execution, or sandbox execution. PkgRadar only inspects on-disk artifacts.

Availability ledger

available

high
Last checked
highRisk
633Score
2.2.5Version
Status history (1 event)
  1. newavailable · risk high · score 633 · status changed

Related candidates

Linked campaigns and clusters

Repeated static TTPstale

Install-time lifecycle script — postinstall="node scripts/patch-sdk.mjs"

2 members · evidence strength 70

Evidence

Static findings

166 static · 0 from release diff · showing high-signal first.

SeverityKindPathDetailPoints
highInstall-time lifecycle scriptpackage.jsonpostinstall="node scripts/patch-sdk.mjs"30
mediumObfuscation Densitypackage/node_modules/markdown-it/dist/markdown-it.min.jshigh encoded/escaped-token density12
mediumObfuscation Densitypackage/node_modules/markdown-it/dist/markdown-it.jshigh encoded/escaped-token density12
mediumRemote Payloadpackage/node_modules/entities/package.jsonmatched "raw.githubusercontent.com"12
mediumObfuscation Densitypackage/node_modules/entities/lib/generated/decode-data-html.jshigh encoded/escaped-token density12
mediumObfuscation Densitypackage/node_modules/entities/lib/esm/generated/decode-data-html.jshigh encoded/escaped-token density12
mediumRemote Payloadpackage/node_modules/domutils/package.jsonmatched "raw.githubusercontent.com"12
mediumObfuscation Densitypackage/node_modules/uc.micro/build/index.cjs.jshigh encoded/escaped-token density12
mediumRemote Payloadpackage/node_modules/htmlparser2/package.jsonmatched "raw.githubusercontent.com"12
mediumObfuscation Densitypackage/node_modules/zeed-dom/node_modules/entities/dist/esm/generated/decode-data-html.jshigh encoded/escaped-token density12
mediumObfuscation Densitypackage/node_modules/zeed-dom/node_modules/entities/dist/commonjs/generated/decode-data-html.jshigh encoded/escaped-token density12
mediumObfuscation Densitypackage/node_modules/zeed-dom/node_modules/entities/src/generated/decode-data-html.tshigh encoded/escaped-token density12
mediumRemote Payloadpackage/node_modules/ws/lib/websocket.jsmatched "cUrl "12
Show all 166 findings (low-signal and informational)

Showing 60 of 166 findings.

SeverityKindPathDetailPoints
highInstall-time lifecycle scriptpackage.jsonpostinstall="node scripts/patch-sdk.mjs"30
mediumObfuscation Densitypackage/node_modules/markdown-it/dist/markdown-it.min.jshigh encoded/escaped-token density12
mediumObfuscation Densitypackage/node_modules/markdown-it/dist/markdown-it.jshigh encoded/escaped-token density12
mediumRemote Payloadpackage/node_modules/entities/package.jsonmatched "raw.githubusercontent.com"12
mediumObfuscation Densitypackage/node_modules/entities/lib/generated/decode-data-html.jshigh encoded/escaped-token density12
mediumObfuscation Densitypackage/node_modules/entities/lib/esm/generated/decode-data-html.jshigh encoded/escaped-token density12
mediumRemote Payloadpackage/node_modules/domutils/package.jsonmatched "raw.githubusercontent.com"12
mediumObfuscation Densitypackage/node_modules/uc.micro/build/index.cjs.jshigh encoded/escaped-token density12
mediumRemote Payloadpackage/node_modules/htmlparser2/package.jsonmatched "raw.githubusercontent.com"12
mediumObfuscation Densitypackage/node_modules/zeed-dom/node_modules/entities/dist/esm/generated/decode-data-html.jshigh encoded/escaped-token density12
mediumObfuscation Densitypackage/node_modules/zeed-dom/node_modules/entities/dist/commonjs/generated/decode-data-html.jshigh encoded/escaped-token density12
mediumObfuscation Densitypackage/node_modules/zeed-dom/node_modules/entities/src/generated/decode-data-html.tshigh encoded/escaped-token density12
mediumRemote Payloadpackage/node_modules/ws/lib/websocket.jsmatched "cUrl "12
lowObfuscationpackage/node_modules/lexorank/lib/numeralSystems/lexoNumeralSystem10.jsmatched "fromCharCode"3
lowObfuscationpackage/node_modules/markdown-it/dist/markdown-it.min.jsmatched "fromCharCode"3
lowObfuscationpackage/node_modules/markdown-it/dist/index.cjs.jsmatched "fromCharCode"3
lowObfuscationpackage/node_modules/markdown-it/dist/markdown-it.jsmatched "fromCharCode"3
lowObfuscationpackage/node_modules/markdown-it/lib/presets/default.mjsmatched "\\xA0"3
lowObfuscationpackage/node_modules/markdown-it/lib/presets/zero.mjsmatched "\\xA0"3
lowObfuscationpackage/node_modules/markdown-it/lib/presets/commonmark.mjsmatched "\\xA0"3
lowObfuscationpackage/node_modules/markdown-it/lib/index.mjsmatched "\\xA0"3
lowObfuscationpackage/node_modules/markdown-it/lib/rules_core/replacements.mjsmatched "\\u2014"3
lowObfuscationpackage/node_modules/markdown-it/lib/rules_core/normalize.mjsmatched "\\uFFFD"3
lowObfuscationpackage/node_modules/markdown-it/lib/rules_core/smartquotes.mjsmatched "\\u2019"3
lowObfuscationpackage/node_modules/markdown-it/lib/rules_block/fence.mjsmatched "fromCharCode"3
lowObfuscationpackage/node_modules/markdown-it/lib/rules_block/lheading.mjsmatched "fromCharCode"3
lowObfuscationpackage/node_modules/markdown-it/lib/rules_block/hr.mjsmatched "fromCharCode"3
lowObfuscationpackage/node_modules/markdown-it/lib/rules_block/list.mjsmatched "fromCharCode"3
lowObfuscationpackage/node_modules/markdown-it/lib/rules_inline/strikethrough.mjsmatched "fromCharCode"3
lowObfuscationpackage/node_modules/markdown-it/lib/rules_inline/emphasis.mjsmatched "fromCharCode"3
lowObfuscationpackage/node_modules/markdown-it/lib/rules_inline/autolink.mjsmatched "\\x00"3
lowObfuscationpackage/node_modules/markdown-it/lib/common/utils.mjsmatched "fromCharCode"3
lowObfuscationpackage/node_modules/markdown-it/lib/common/html_re.mjsmatched "\\x00"3
lowObfuscationpackage/node_modules/entities/lib/generated/decode-data-xml.jsmatched "\\u0200"3
lowObfuscationpackage/node_modules/entities/lib/generated/decode-data-html.jsmatched "\\u1d41"3
lowObfuscationpackage/node_modules/entities/lib/decode_codepoint.jsmatched "fromCharCode"3
lowObfuscationpackage/node_modules/entities/lib/escape.jsmatched "\\x80"3
lowObfuscationpackage/node_modules/entities/lib/esm/generated/decode-data-xml.jsmatched "\\u0200"3
lowObfuscationpackage/node_modules/entities/lib/esm/generated/decode-data-html.jsmatched "\\u1d41"3
lowObfuscationpackage/node_modules/entities/lib/esm/decode_codepoint.jsmatched "fromCharCode"3
lowObfuscationpackage/node_modules/entities/lib/esm/escape.jsmatched "\\x80"3
lowObfuscationpackage/node_modules/entities/lib/esm/encode.jsmatched "\\x80"3
lowObfuscationpackage/node_modules/entities/lib/encode.jsmatched "\\x80"3
lowObfuscationpackage/node_modules/linkify-it/index.mjsmatched "\\uff5c"3
lowObfuscationpackage/node_modules/linkify-it/lib/re.mjsmatched "\\uff5c"3
lowObfuscationpackage/node_modules/linkify-it/build/index.cjs.jsmatched "\\uff5c"3
lowObfuscationpackage/node_modules/linkifyjs/dist/linkify.jsmatched "\\ufe0f"3
lowObfuscationpackage/node_modules/linkifyjs/dist/linkify.min.jsmatched "\\ufe0f"3
lowObfuscationpackage/node_modules/linkifyjs/dist/linkify.mjsmatched "\\ufe0f"3
lowObfuscationpackage/node_modules/linkifyjs/dist/linkify.cjsmatched "\\ufe0f"3
lowObfuscationpackage/node_modules/@hcengineering/text-core/lib/markup/utils.jsmatched "\\u2026"3
lowObfuscationpackage/node_modules/@hcengineering/contact/lib/__tests__/workspaceMemberStatusUtils.test.jsmatched "\\uFE0F"3
lowObfuscationpackage/node_modules/@hcengineering/contact/lib/workspaceMemberStatusUtils.jsmatched "\\u200D"3
lowObfuscationpackage/node_modules/@hcengineering/client-resources/src/index.tsmatched "atob("3
lowObfuscationpackage/node_modules/@hcengineering/client-resources/lib/index.jsmatched "atob("3
lowObfuscationpackage/node_modules/@hcengineering/api-client/lib/__tests__/markup-types.test.jsmatched "\\u4F60"3
lowObfuscationpackage/node_modules/@hcengineering/text-markdown/src/parser.tsmatched "\\u00A0"3
lowObfuscationpackage/node_modules/@hcengineering/text-markdown/lib/parser.jsmatched "\\u00A0"3
lowObfuscationpackage/node_modules/@hcengineering/text-markdown/lib/compare.jsmatched "\\u00F8"3
lowObfuscationpackage/node_modules/@hcengineering/platform/lib/__tests__/status.test.jsmatched "\\u2192"3

Manifest

Package metadata

Scripts10
  • linteslint src/ scripts/
  • packnode scripts/pack.mjs
  • postinstallnode scripts/patch-sdk.mjs
  • startnode src/index.mjs
  • start:mcpnode src/mcp.mjs
  • start:servernode src/server.mjs
  • testHULY_TRANSPORT=ws node --test test/integration.test.mjs && HULY_TRANSPORT=rest node --test test/integration.test.mjs
  • test:restHULY_TRANSPORT=rest node --test test/integration.test.mjs
  • test:wsHULY_TRANSPORT=ws node --test test/integration.test.mjs
  • version:syncnode -e "const{readFileSync:r,writeFileSync:w}=require('fs');const v=r('VERSION','utf-8').trim();const f='package.json';const j=JSON.parse(r(f,'utf-8'));j.version=v;w(f,JSON.stringify(j,null,2)+'\n');console.log('Synced version '+v+' to package.json')"
Dependencies2
  • @modelcontextprotocol/sdk^1.29.0
  • jsdom^29.1.1