The analysis engine now reads JavaScript and TypeScript, so a skill's Node scripts get the same data-flow analysis and evidence chains as its shell and Python code.
- JavaScript / TypeScript front end. Downloaded code run with
eval,new Function,vmor a downloadedrequire(); the wholeprocess.envor a credential file sent in a request, socket write or DNS lookup; base64 and character-code payloads, decoded and analysed in turn. Works on.js/.tsfiles,jscode blocks in Markdown andnode -e. - Commands judged once, the same way. A
child_processcommand is rebuilt and handed to the shell analysis, soexecSync(`curl ${u} | sh`)is caught like the shell line, and a fetched value used as agitargument is not called remote code execution.
- An official installer (Google Cloud SDK, uv) could block a skill when the same file had an unrelated warning. Info findings now stay info.
- A pattern finding that an engine finding already explains is merged into it: about 1,700 fewer duplicate findings across the benchmark sets, same verdicts.
- JavaScript front end: 2 more malicious skills blocked, no new false alarms. All benchmarks now run with Husk's full dependencies; re-measured, 1.5.0's published numbers are unchanged.