couchloop-eq-mcp 1.3.3 → 1.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -2
- package/dist/clients/shrinkChatClient.d.ts +10 -10
- package/dist/clients/shrinkChatClient.d.ts.map +1 -1
- package/dist/clients/shrinkChatClient.js +5 -3
- package/dist/clients/shrinkChatClient.js.map +1 -1
- package/dist/db/client.d.ts.map +1 -1
- package/dist/db/client.js +6 -3
- package/dist/db/client.js.map +1 -1
- package/dist/index.js +5 -85
- package/dist/index.js.map +1 -1
- package/dist/server/sse.d.ts.map +1 -1
- package/dist/server/sse.js +4 -2
- package/dist/server/sse.js.map +1 -1
- package/dist/tools/Hallucinated Packages Corpus from Claude.d.ts +72 -0
- package/dist/tools/Hallucinated Packages Corpus from Claude.d.ts.map +1 -0
- package/dist/tools/Hallucinated Packages Corpus from Claude.js +447 -0
- package/dist/tools/Hallucinated Packages Corpus from Claude.js.map +1 -0
- package/dist/tools/MCP Usage Takeaways.guard.d.ts +4 -0
- package/dist/tools/MCP Usage Takeaways.guard.d.ts.map +1 -0
- package/dist/tools/MCP Usage Takeaways.guard.js +343 -0
- package/dist/tools/MCP Usage Takeaways.guard.js.map +1 -0
- package/dist/tools/checkpoint.d.ts.map +1 -1
- package/dist/tools/checkpoint.js +4 -20
- package/dist/tools/checkpoint.js.map +1 -1
- package/dist/tools/detect-build-context.d.ts +1 -1
- package/dist/tools/generate-upgrade-report.d.ts +2 -2
- package/dist/tools/guard.d.ts +120 -0
- package/dist/tools/guard.d.ts.map +1 -0
- package/dist/tools/guard.js +345 -0
- package/dist/tools/guard.js.map +1 -0
- package/dist/tools/hallucinated-packages-corpus.d.ts +7 -0
- package/dist/tools/hallucinated-packages-corpus.d.ts.map +1 -0
- package/dist/tools/hallucinated-packages-corpus.js +7 -0
- package/dist/tools/hallucinated-packages-corpus.js.map +1 -0
- package/dist/tools/intent-router.d.ts +20 -24
- package/dist/tools/intent-router.d.ts.map +1 -1
- package/dist/tools/intent-router.js +39 -7
- package/dist/tools/intent-router.js.map +1 -1
- package/dist/tools/pre-review-code.d.ts +2 -2
- package/dist/tools/prevent-ai-errors.d.ts +3 -3
- package/dist/tools/primary-tools.d.ts +84 -275
- package/dist/tools/primary-tools.d.ts.map +1 -1
- package/dist/tools/primary-tools.js +52 -9
- package/dist/tools/primary-tools.js.map +1 -1
- package/dist/tools/protect-files.d.ts +1 -1
- package/dist/tools/sendMessage.d.ts.map +1 -1
- package/dist/tools/sendMessage.js +17 -34
- package/dist/tools/sendMessage.js.map +1 -1
- package/dist/tools/session-manager.d.ts +5 -1
- package/dist/tools/session-manager.d.ts.map +1 -1
- package/dist/tools/session-manager.js +23 -19
- package/dist/tools/session-manager.js.map +1 -1
- package/dist/tools/smart-context.d.ts +1 -1
- package/dist/tools/verify.d.ts +5 -5
- package/dist/types/session.d.ts +2 -2
- package/package.json +9 -2
- package/assets/screenshots/checkpoint_session.png +0 -0
- package/assets/screenshots/code_review_workflow.png +0 -0
- package/assets/screenshots/insight_retrieve.png +0 -0
- package/assets/screenshots/insight_save.png +0 -0
- package/assets/screenshots/save_insights.png +0 -0
|
@@ -0,0 +1,447 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* hallucinated-packages-corpus.ts
|
|
3
|
+
*
|
|
4
|
+
* Comprehensive corpus of known and pattern-matched hallucinated npm packages.
|
|
5
|
+
*
|
|
6
|
+
* Sources:
|
|
7
|
+
* - PhantomRaven campaign (Koi Security + Sonatype, Oct–Nov 2025): 200+ documented
|
|
8
|
+
* malicious slopsquatting packages targeting AI-hallucinated names
|
|
9
|
+
* - Spracklen et al., "We Have a Package for You!" (USENIX 2025): 205,474 unique
|
|
10
|
+
* hallucinated names analyzed across 576,000 code samples
|
|
11
|
+
* - Lasso Security (Bar Lanyado, 2024): Original package hallucination research,
|
|
12
|
+
* documented 24.2% hallucination rate across GPT-3.5, GPT-4, Gemini, Cohere
|
|
13
|
+
* - Krishna et al., "Importing Phantoms" (Jan 2025): 0.22%–46.15% rates across models
|
|
14
|
+
* - Aikido Security (Charlie Eriksen, Jan 2026): react-codeshift live case
|
|
15
|
+
* - Snyk, Mend, Augment Code, Trend Micro: documented attack case studies
|
|
16
|
+
*
|
|
17
|
+
* Detection strategy:
|
|
18
|
+
* 1. CONFIRMED_MALICIOUS — packages with active security holds or confirmed malware
|
|
19
|
+
* 2. DOCUMENTED_HALLUCINATIONS — packages proven to be AI-hallucinated (even if now claimed)
|
|
20
|
+
* 3. PHANTOM_RAVEN_PACKAGES — all 200+ PhantomRaven campaign packages (slopsquatting)
|
|
21
|
+
* 4. SUSPICIOUS_PATTERNS — regex patterns that match AI morpheme-splicing behavior
|
|
22
|
+
* 5. INCOMPLETE_NAMES — abbreviated forms of real packages LLMs commonly produce
|
|
23
|
+
*
|
|
24
|
+
* Usage: isLikelyHallucinated(packageName) → { flagged: boolean, reason: string, confidence: 'high'|'medium'|'low' }
|
|
25
|
+
*/
|
|
26
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
27
|
+
// SECTION 1: CONFIRMED MALICIOUS (security holds, verified malware payloads)
|
|
28
|
+
// Source: npm security holds, Koi Security PhantomRaven IOCs, Aikido Intel
|
|
29
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
30
|
+
export const CONFIRMED_MALICIOUS = new Set([
|
|
31
|
+
// PhantomRaven confirmed malicious — stolen from Koi Security / Sonatype analysis
|
|
32
|
+
// These are NOT legitimate packages. All had active credential-stealing payloads.
|
|
33
|
+
"unused-imports", // Real: eslint-plugin-unused-imports. Confirmed malicious, npm security hold
|
|
34
|
+
"react-codeshift", // Conflation of jscodeshift + react-codemod. Claimed Jan 2026, Aikido research
|
|
35
|
+
"eslint-disable-next-line", // Masquerades as ESLint directive. PhantomRaven
|
|
36
|
+
"eslint-comments", // Real: eslint-plugin-eslint-comments. PhantomRaven abbreviated form
|
|
37
|
+
"transform-react-remove-prop-types", // Real: babel-plugin-transform-react-remove-prop-types. PhantomRaven
|
|
38
|
+
"transform-es2015-modules-commonjs", // Real: babel-plugin-transform-es2015-modules-commonjs. PhantomRaven
|
|
39
|
+
"transform-merge-sibling-variables", // Real: babel-plugin-transform-merge-sibling-variables. PhantomRaven
|
|
40
|
+
"transform-react-constant-elements", // Real: babel-plugin-transform-react-constant-elements. PhantomRaven
|
|
41
|
+
"add-module-exports", // PhantomRaven campaign package
|
|
42
|
+
"no-floating-promise", // PhantomRaven — abbreviated: eslint-plugin-no-floating-promise
|
|
43
|
+
"no-only-tests", // PhantomRaven — Real: eslint-plugin-no-only-tests
|
|
44
|
+
"only-warn", // PhantomRaven
|
|
45
|
+
"sort-keys-fix", // PhantomRaven
|
|
46
|
+
"sort-keys-plus", // PhantomRaven
|
|
47
|
+
"sort-class-members", // PhantomRaven
|
|
48
|
+
"prefer-object-spread", // PhantomRaven
|
|
49
|
+
"preferred-import", // PhantomRaven
|
|
50
|
+
"jsx-a11y", // PhantomRaven — Real: eslint-plugin-jsx-a11y
|
|
51
|
+
"mocha-no-only", // PhantomRaven
|
|
52
|
+
"jest-hoist", // PhantomRaven
|
|
53
|
+
"inline-react-svg", // PhantomRaven
|
|
54
|
+
"syntax-dynamic-import", // PhantomRaven
|
|
55
|
+
"named-asset-import", // PhantomRaven
|
|
56
|
+
"filename-rules", // PhantomRaven
|
|
57
|
+
"flowtype-errors", // PhantomRaven
|
|
58
|
+
"react-naming-convention", // PhantomRaven
|
|
59
|
+
"react-web-api", // PhantomRaven
|
|
60
|
+
"react-async-component-lifecycle-hooks", // PhantomRaven
|
|
61
|
+
"react-important-stuff", // PhantomRaven
|
|
62
|
+
"react-import-reflect", // AI hallucination pattern
|
|
63
|
+
"ft-flow", // PhantomRaven
|
|
64
|
+
"polyfill-corejs3", // PhantomRaven — Real: @babel/preset-env handles corejs
|
|
65
|
+
"polyfill-regenerator", // PhantomRaven
|
|
66
|
+
"external-helpers", // PhantomRaven
|
|
67
|
+
"crowdstrike", // PhantomRaven — brandjacking
|
|
68
|
+
"airbnb-babel", // PhantomRaven — brandjacking Airbnb
|
|
69
|
+
"airbnb-base-typescript-prettier", // PhantomRaven — brandjacking
|
|
70
|
+
"airbnb-types", // PhantomRaven — brandjacking
|
|
71
|
+
"airbnb-bev", // PhantomRaven — brandjacking
|
|
72
|
+
"airbnb-calendar", // PhantomRaven — brandjacking
|
|
73
|
+
"airbnb-opentracing-javascript", // PhantomRaven — brandjacking
|
|
74
|
+
"airbnb-scraper", // PhantomRaven — brandjacking
|
|
75
|
+
"acme-package", // PhantomRaven
|
|
76
|
+
"add-shopify-header", // PhantomRaven
|
|
77
|
+
"aikido-module", // PhantomRaven — ironic brandjacking of Aikido Security
|
|
78
|
+
"artifactregistry-login", // PhantomRaven — Google brandjacking
|
|
79
|
+
"audio-game", // PhantomRaven
|
|
80
|
+
"badgekit-api-client", // PhantomRaven
|
|
81
|
+
"bernie-core", // PhantomRaven
|
|
82
|
+
"bernie-plugin-l10n", // PhantomRaven
|
|
83
|
+
"chai-friendly", // PhantomRaven
|
|
84
|
+
"chromestatus-openapi", // PhantomRaven
|
|
85
|
+
"durablefunctionsmonitor", // PhantomRaven — Microsoft brandjacking
|
|
86
|
+
"durablefunctionsmonitor-vscodeext", // PhantomRaven
|
|
87
|
+
"elemefe", // PhantomRaven
|
|
88
|
+
"e-voting-libraries-ui-kit", // PhantomRaven
|
|
89
|
+
"eslint-github-bot", // PhantomRaven
|
|
90
|
+
"eslint-plugin-cli-microsoft365", // PhantomRaven — Microsoft brandjacking
|
|
91
|
+
"eslint-plugin-custom-eslint-rules", // PhantomRaven
|
|
92
|
+
"faltest", // PhantomRaven
|
|
93
|
+
"firefly-sdk-js", // PhantomRaven
|
|
94
|
+
"firefly-shared-js", // PhantomRaven
|
|
95
|
+
"fq-ui", // PhantomRaven
|
|
96
|
+
"goji-js-org", // PhantomRaven
|
|
97
|
+
"important-stuff", // PhantomRaven
|
|
98
|
+
"ing-web-es", // PhantomRaven
|
|
99
|
+
"iot-cardboard-js", // PhantomRaven
|
|
100
|
+
"jira-ticket-todo-comment", // PhantomRaven
|
|
101
|
+
"labelbox-custom-ui", // PhantomRaven
|
|
102
|
+
"lfs-ui", // PhantomRaven
|
|
103
|
+
"lion-based-ui", // PhantomRaven
|
|
104
|
+
"lion-based-ui-labs", // PhantomRaven
|
|
105
|
+
"mourner", // PhantomRaven
|
|
106
|
+
"rxjs-angular", // PhantomRaven
|
|
107
|
+
"skyscanner-with-prettier", // PhantomRaven
|
|
108
|
+
"powerbi-visuals-sunburst", // PhantomRaven — Microsoft brandjacking
|
|
109
|
+
"spaintest1", // PhantomRaven
|
|
110
|
+
"pensions-portals-fe", // PhantomRaven
|
|
111
|
+
"google-cloud-functions-framework", // PhantomRaven — Google brandjacking
|
|
112
|
+
"op-cli-installer", // PhantomRaven
|
|
113
|
+
"ais-sn-components", // PhantomRaven
|
|
114
|
+
"add-module-exports", // PhantomRaven
|
|
115
|
+
"petstore-integration-test", // PhantomRaven — earliest known evolving version
|
|
116
|
+
"durablefunctionsmonitor.react", // PhantomRaven
|
|
117
|
+
]);
|
|
118
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
119
|
+
// SECTION 2: DOCUMENTED AI HALLUCINATIONS
|
|
120
|
+
// Packages confirmed as AI-hallucinated by published research (even if currently
|
|
121
|
+
// registered as benign probes or now showing as "existing")
|
|
122
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
123
|
+
export const DOCUMENTED_HALLUCINATIONS = new Set([
|
|
124
|
+
// Lasso Security research (Bar Lanyado, 2024) — confirmed AI-hallucinated
|
|
125
|
+
"huggingface-cli", // 30,000+ downloads after Lanyado registered it as a probe.
|
|
126
|
+
// Real install: pip install -U "huggingface_hub[cli]" (Python, not npm)
|
|
127
|
+
// Listed here as cross-ecosystem confusion vector
|
|
128
|
+
// Aikido Security (Charlie Eriksen, Jan 2026) — confirmed live hallucination
|
|
129
|
+
"react-codeshift", // Conflation of jscodeshift + react-codemod. Appeared in 47 AI-generated
|
|
130
|
+
// agent skills in a single GitHub commit. Nobody registered it until Eriksen
|
|
131
|
+
// claimed it as a research probe. Now a confirmed squattable name.
|
|
132
|
+
// PhantomRaven abbreviated-name hallucinations (documented by Koi Security)
|
|
133
|
+
"unused-imports", // LLMs abbreviate eslint-plugin-unused-imports to this
|
|
134
|
+
"transform-react-remove-prop-types", // Abbreviated from babel-plugin- prefix
|
|
135
|
+
// Common LLM conflagrations documented in academic literature (Spracklen et al.)
|
|
136
|
+
"express-mongoose", // Conflation of express + mongoose. 38% of hallucinations are this type.
|
|
137
|
+
"react-form-validator", // Conflation pattern. Real: react-hook-form + yup
|
|
138
|
+
"node-db-migrate", // Conflation of node + db-migrate. Real: db-migrate
|
|
139
|
+
"mongo-express-router", // Conflation pattern
|
|
140
|
+
"express-mysql", // Conflation: express + mysql. Not a real package.
|
|
141
|
+
"express-postgres", // Conflation: express + pg
|
|
142
|
+
"react-socket", // Conflation: react + socket.io-client. Real: socket.io-client
|
|
143
|
+
"node-redis-cache", // Conflation: redis + node-cache
|
|
144
|
+
"express-jwt-auth", // Conflation. Real: express-jwt or jsonwebtoken
|
|
145
|
+
"passport-google", // Abbreviated. Real: passport-google-oauth or passport-google-oauth20
|
|
146
|
+
"react-router-native", // Exists but LLMs hallucinate wrong versions/APIs
|
|
147
|
+
"webpack-dev", // Abbreviated. Real: webpack-dev-server or webpack-dev-middleware
|
|
148
|
+
"eslint-typescript", // Abbreviated. Real: @typescript-eslint/eslint-plugin
|
|
149
|
+
"next-image", // Abbreviated. Real: next/image (built-in, not a separate package)
|
|
150
|
+
"prisma-client", // Abbreviated. Real: @prisma/client
|
|
151
|
+
"graphql-apollo", // Conflation. Real: @apollo/client or apollo-server
|
|
152
|
+
"react-query-cache", // AI morpheme-splice from react-query. Real: @tanstack/react-query
|
|
153
|
+
"jest-enzyme", // Conflation. Real: enzyme + jest or @testing-library/react
|
|
154
|
+
"nodemon-ts", // Conflation. Real: ts-node-dev or nodemon + ts-node
|
|
155
|
+
"stripe-node", // Abbreviated. Real: stripe (the package is just "stripe")
|
|
156
|
+
"twilio-node", // Abbreviated. Real: twilio
|
|
157
|
+
"aws-cognito", // Abbreviated. Real: amazon-cognito-identity-js or @aws-amplify/auth
|
|
158
|
+
"firebase-admin-sdk", // Abbreviated. Real: firebase-admin
|
|
159
|
+
"google-maps-api", // Abbreviated. Real: @googlemaps/js-api-loader or google-maps
|
|
160
|
+
"react-bootstrap-icons", // Conflation. Real: react-bootstrap + react-icons (separate packages)
|
|
161
|
+
"tailwind-react", // Conflation. Not a real package.
|
|
162
|
+
"redux-saga-effects", // Conflation. Real: redux-saga (effects are built-in)
|
|
163
|
+
"react-testing", // Abbreviated. Real: @testing-library/react
|
|
164
|
+
"socket-io", // Abbreviated. Real: socket.io or socket.io-client (hyphenated differently)
|
|
165
|
+
"node-crypto", // Confused. Real: crypto (built-in Node module, not a package)
|
|
166
|
+
"node-path", // Confused. Real: path (built-in)
|
|
167
|
+
"node-fs", // Confused. Real: fs (built-in)
|
|
168
|
+
"node-http", // Confused. Real: http (built-in)
|
|
169
|
+
"node-os", // Confused. Real: os (built-in)
|
|
170
|
+
"node-process", // Confused. Real: process (built-in global)
|
|
171
|
+
"node-buffer", // Confused. Real: buffer (built-in)
|
|
172
|
+
"node-events", // Confused. Real: events (built-in)
|
|
173
|
+
"node-stream", // Confused. Real: stream (built-in)
|
|
174
|
+
"node-util", // Confused. Real: util (built-in)
|
|
175
|
+
"node-url", // Confused. Real: url (built-in)
|
|
176
|
+
"node-async", // Conflation. Real: async (but also built-in Promise/async-await)
|
|
177
|
+
"react-hooks", // LLMs often suggest this as a package. Hooks are built into React.
|
|
178
|
+
"react-context", // Same — built into React, not a package
|
|
179
|
+
"react-suspense", // Built-in React feature, not a package
|
|
180
|
+
"react-memo", // Built-in React.memo, not a package
|
|
181
|
+
"typescript-utils", // Hallucination. Real: ts-utils or type-fest
|
|
182
|
+
"express-validator-middleware", // Conflation. Real: express-validator
|
|
183
|
+
"jest-mock-axios", // Conflation. Real: axios-mock-adapter or jest-axios-mock
|
|
184
|
+
"react-pdf-viewer", // Conflation. Real: @react-pdf/renderer or react-pdf
|
|
185
|
+
"node-mailer", // Abbreviated. Real: nodemailer (one word, no hyphen)
|
|
186
|
+
"bcrypt-nodejs", // Deprecated package. Real: bcrypt or bcryptjs
|
|
187
|
+
"mongoose-paginate", // Deprecated/renamed. Real: mongoose-paginate-v2
|
|
188
|
+
"body-parser-json", // Conflation. Real: body-parser (json handling is built-in method)
|
|
189
|
+
"cors-middleware", // Conflation. Real: cors
|
|
190
|
+
"morgan-logger", // Conflation. Real: morgan
|
|
191
|
+
"helmet-security", // Conflation. Real: helmet
|
|
192
|
+
"dotenv-config", // Conflation. Real: dotenv
|
|
193
|
+
"compression-middleware", // Conflation. Real: compression
|
|
194
|
+
"multer-upload", // Conflation. Real: multer
|
|
195
|
+
"sharp-image", // Conflation. Real: sharp
|
|
196
|
+
"jimp-image", // Conflation. Real: jimp
|
|
197
|
+
"crypto-secure-hash", // Example from Snyk research. Plausible-sounding, does not exist.
|
|
198
|
+
"securehashlib", // Example from Mend/Security Boulevard research
|
|
199
|
+
"fastparserx", // Example from Augment Code research
|
|
200
|
+
"ccxt-mexc-futures", // Documented exploitation case from Augment Code research
|
|
201
|
+
// CCXT is real; ccxt-mexc-futures is a hallucinated combination
|
|
202
|
+
"orientdb-node", // Documented hallucination: Mackenzie Jackson (Aikido Dev Advocate)
|
|
203
|
+
// AI invented this when asked to connect Node.js to OrientDB
|
|
204
|
+
"mongoose-es6", // Morpheme splice. Real: mongoose
|
|
205
|
+
"sequelize-postgres", // Conflation. Real: sequelize + pg
|
|
206
|
+
"knex-mysql", // Conflation. Real: knex + mysql2
|
|
207
|
+
]);
|
|
208
|
+
export const SUSPICIOUS_PATTERNS = [
|
|
209
|
+
// Node built-in module confusion — LLMs frequently prefix built-ins with "node-"
|
|
210
|
+
{
|
|
211
|
+
pattern: /^node-(crypto|path|fs|http|https|os|process|buffer|events|stream|util|url|child_process|cluster|dns|net|readline|vm|zlib)$/,
|
|
212
|
+
reason: "Likely confused with Node.js built-in module. Built-ins don't require installation.",
|
|
213
|
+
confidence: 'high',
|
|
214
|
+
},
|
|
215
|
+
// React built-in feature confusion — LLMs suggest these as installable packages
|
|
216
|
+
{
|
|
217
|
+
pattern: /^react-(hooks|context|suspense|memo|concurrent|strict-mode|profiler|portals|fragments|error-boundary)$/,
|
|
218
|
+
reason: "This is a built-in React feature, not a standalone package.",
|
|
219
|
+
confidence: 'high',
|
|
220
|
+
},
|
|
221
|
+
// Common AI conflagration patterns (two real packages merged)
|
|
222
|
+
{
|
|
223
|
+
pattern: /^(express|koa|fastify|hapi)-(mongoose|sequelize|postgres|mysql|redis|mongodb|sqlite|knex|typeorm|prisma)$/,
|
|
224
|
+
reason: "Likely AI conflation of an HTTP framework with a database library. These are separate packages.",
|
|
225
|
+
confidence: 'high',
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
pattern: /^react-(socket|websocket|socket-io|socketio)$/,
|
|
229
|
+
reason: "Likely AI conflation. Real package: socket.io-client (used independently).",
|
|
230
|
+
confidence: 'high',
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
pattern: /^(mongoose|sequelize|typeorm|prisma)-(paginate|cache|search|audit|validate|history)$/,
|
|
234
|
+
reason: "Likely AI morpheme-splice. Check the real package name carefully.",
|
|
235
|
+
confidence: 'medium',
|
|
236
|
+
},
|
|
237
|
+
// Babel plugin without prefix — LLMs frequently drop the 'babel-plugin-' prefix
|
|
238
|
+
{
|
|
239
|
+
pattern: /^transform-(react|es2015|es2016|es2017|es2018|es2019|es2020|es6|es7|class|arrow|async|modules|object|destructuring|spread|template|generators|runtime|strict)[-a-z0-9]*$/,
|
|
240
|
+
reason: "Likely missing 'babel-plugin-' prefix. Real package: babel-plugin-" + "transform-...",
|
|
241
|
+
confidence: 'high',
|
|
242
|
+
},
|
|
243
|
+
// ESLint plugin without prefix — LLMs frequently drop 'eslint-plugin-'
|
|
244
|
+
{
|
|
245
|
+
pattern: /^(jsx-a11y|react-hooks|import|unicorn|sonarjs|promise|prettier|node|security|jest|testing-library|unused-imports|compat|fp|functional|immutable|n|optimize-regex|react-refresh|tailwindcss|perfectionist)$/,
|
|
246
|
+
reason: "Likely missing 'eslint-plugin-' prefix. Real package: eslint-plugin-[name].",
|
|
247
|
+
confidence: 'high',
|
|
248
|
+
},
|
|
249
|
+
// @types scoped package hallucinations
|
|
250
|
+
{
|
|
251
|
+
pattern: /^@types\/(react-router-dom-v6|next-auth|prisma-client|sequelize-v6|mongoose-v7|socket-io|express-validator)$/,
|
|
252
|
+
reason: "Likely hallucinated @types scoped package. Check DefinitelyTyped for correct name.",
|
|
253
|
+
confidence: 'medium',
|
|
254
|
+
},
|
|
255
|
+
// Abbreviated popular package names (LLMs drop scopes or suffixes)
|
|
256
|
+
{
|
|
257
|
+
pattern: /^prisma-client$|^apollo-client$|^apollo-server$|^tanstack-query$/,
|
|
258
|
+
reason: "Abbreviated scoped package. Real: @prisma/client, @apollo/client, @tanstack/react-query.",
|
|
259
|
+
confidence: 'high',
|
|
260
|
+
},
|
|
261
|
+
// Security-sounding invented packages (Snyk research: AI invents "secure" packages)
|
|
262
|
+
{
|
|
263
|
+
pattern: /^(crypto|secure|safe|encrypted|auth|jwt|oauth|security)[-_](hash|helper|utils|lib|middleware|manager|handler|wrapper|module|toolkit)$/,
|
|
264
|
+
reason: "AI-invented security package following a known hallucination pattern. Verify existence.",
|
|
265
|
+
confidence: 'medium',
|
|
266
|
+
},
|
|
267
|
+
// Packages that are simply built-in Node.js globals (no install required)
|
|
268
|
+
{
|
|
269
|
+
pattern: /^(console|global|process|Buffer|setImmediate|clearImmediate|setInterval|clearInterval|setTimeout|clearTimeout|__dirname|__filename|require|module|exports)$/,
|
|
270
|
+
reason: "This is a Node.js global, not an installable package.",
|
|
271
|
+
confidence: 'high',
|
|
272
|
+
},
|
|
273
|
+
// Generic "helper" packages that sound plausible but rarely exist
|
|
274
|
+
{
|
|
275
|
+
pattern: /^[a-z]+-[a-z]+-(helper|helpers|util|utils|toolkit|boilerplate|starter|scaffold|template|wrapper|adapter|bridge|middleware|handler|provider|factory|manager|service|client|sdk)$/,
|
|
276
|
+
reason: "Three-segment name matching AI morpheme-splice pattern. Verify package existence.",
|
|
277
|
+
confidence: 'low',
|
|
278
|
+
},
|
|
279
|
+
// PhantomRaven brandjacking pattern — packages named after companies/projects
|
|
280
|
+
{
|
|
281
|
+
pattern: /^(airbnb|crowdstrike|google|microsoft|adobe|amazon|aws|github|gitlab|atlassian|shopify|stripe|twilio|sendgrid|cloudflare|vercel|netlify|firebase)[-_a-z0-9]*(?<!-official|-sdk|-api|-js|-node|-react|-python)$/,
|
|
282
|
+
reason: "Matches PhantomRaven brandjacking pattern. Official packages use scoped names like @company/...",
|
|
283
|
+
confidence: 'medium',
|
|
284
|
+
},
|
|
285
|
+
// Packages that are abbreviated version of well-known scoped packages
|
|
286
|
+
{
|
|
287
|
+
pattern: /^(react-query|react-table|react-virtual|react-hook-form|react-spring|react-three|framer|framer-motion-utils)$/,
|
|
288
|
+
reason: "Check whether this is an abbreviated name. The real packages may use @tanstack/ or other scopes.",
|
|
289
|
+
confidence: 'low',
|
|
290
|
+
},
|
|
291
|
+
];
|
|
292
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
293
|
+
// SECTION 4: INCOMPLETE NAMES
|
|
294
|
+
// Pairs of (hallucinated_short_name → real_full_name)
|
|
295
|
+
// These are the most dangerous: plausible-sounding abbreviations that LLMs
|
|
296
|
+
// consistently produce instead of the real package name.
|
|
297
|
+
// Source: Koi Security PhantomRaven analysis + Spracklen et al. taxonomy
|
|
298
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
299
|
+
export const INCOMPLETE_NAME_MAP = new Map([
|
|
300
|
+
// ESLint plugins (LLMs drop "eslint-plugin-" prefix)
|
|
301
|
+
["unused-imports", "eslint-plugin-unused-imports"],
|
|
302
|
+
["jsx-a11y", "eslint-plugin-jsx-a11y"],
|
|
303
|
+
["no-only-tests", "eslint-plugin-no-only-tests"],
|
|
304
|
+
["react-hooks", "eslint-plugin-react-hooks"],
|
|
305
|
+
["import", "eslint-plugin-import"],
|
|
306
|
+
["unicorn", "eslint-plugin-unicorn"],
|
|
307
|
+
["promise", "eslint-plugin-promise"],
|
|
308
|
+
["node", "eslint-plugin-n (formerly eslint-plugin-node)"],
|
|
309
|
+
["security", "eslint-plugin-security"],
|
|
310
|
+
["jest", "eslint-plugin-jest"],
|
|
311
|
+
["fp", "eslint-plugin-fp"],
|
|
312
|
+
["sonarjs", "eslint-plugin-sonarjs"],
|
|
313
|
+
["testing-library", "@testing-library/eslint-plugin-testing-library"],
|
|
314
|
+
// Babel plugins (LLMs drop "babel-plugin-" prefix)
|
|
315
|
+
["transform-react-remove-prop-types", "babel-plugin-transform-react-remove-prop-types"],
|
|
316
|
+
["transform-es2015-modules-commonjs", "babel-plugin-transform-es2015-modules-commonjs"],
|
|
317
|
+
["transform-merge-sibling-variables", "babel-plugin-transform-merge-sibling-variables"],
|
|
318
|
+
["transform-react-constant-elements", "babel-plugin-transform-react-constant-elements"],
|
|
319
|
+
["transform-runtime", "babel-plugin-transform-runtime or @babel/plugin-transform-runtime"],
|
|
320
|
+
["transform-class-properties", "@babel/plugin-transform-class-properties"],
|
|
321
|
+
["syntax-dynamic-import", "@babel/plugin-syntax-dynamic-import"],
|
|
322
|
+
["external-helpers", "@babel/plugin-external-helpers"],
|
|
323
|
+
// Scoped packages (LLMs drop @scope/)
|
|
324
|
+
["prisma-client", "@prisma/client"],
|
|
325
|
+
["apollo-client", "@apollo/client"],
|
|
326
|
+
["tanstack-query", "@tanstack/react-query"],
|
|
327
|
+
["react-query", "@tanstack/react-query (v4+)"],
|
|
328
|
+
["types-react", "@types/react"],
|
|
329
|
+
["types-node", "@types/node"],
|
|
330
|
+
// Popular packages with wrong names
|
|
331
|
+
["node-mailer", "nodemailer"],
|
|
332
|
+
["bcrypt-nodejs", "bcrypt or bcryptjs"],
|
|
333
|
+
["mongoose-paginate", "mongoose-paginate-v2"],
|
|
334
|
+
["passport-google", "passport-google-oauth20"],
|
|
335
|
+
["socket-io", "socket.io or socket.io-client"],
|
|
336
|
+
["webpack-dev", "webpack-dev-server or webpack-dev-middleware"],
|
|
337
|
+
["eslint-typescript", "@typescript-eslint/eslint-plugin"],
|
|
338
|
+
["firebase-admin-sdk", "firebase-admin"],
|
|
339
|
+
["google-maps-api", "@googlemaps/js-api-loader"],
|
|
340
|
+
["stripe-node", "stripe"],
|
|
341
|
+
["twilio-node", "twilio"],
|
|
342
|
+
["aws-cognito", "amazon-cognito-identity-js"],
|
|
343
|
+
["react-testing", "@testing-library/react"],
|
|
344
|
+
["polyfill-corejs3", "core-js (configured via @babel/preset-env)"],
|
|
345
|
+
["polyfill-regenerator", "regenerator-runtime"],
|
|
346
|
+
// Node built-ins confused as packages
|
|
347
|
+
["node-crypto", "crypto (built-in module, no install needed)"],
|
|
348
|
+
["node-path", "path (built-in module, no install needed)"],
|
|
349
|
+
["node-fs", "fs (built-in module, no install needed)"],
|
|
350
|
+
["node-http", "http (built-in module, no install needed)"],
|
|
351
|
+
["node-os", "os (built-in module, no install needed)"],
|
|
352
|
+
["node-buffer", "buffer (built-in, or use the 'buffer' npm package for browser)"],
|
|
353
|
+
["node-events", "events (built-in module, no install needed)"],
|
|
354
|
+
["node-stream", "stream (built-in module, no install needed)"],
|
|
355
|
+
["node-util", "util (built-in module, no install needed)"],
|
|
356
|
+
["node-url", "url (built-in module, no install needed)"],
|
|
357
|
+
]);
|
|
358
|
+
/**
|
|
359
|
+
* Check whether an npm package name matches known hallucination patterns.
|
|
360
|
+
*
|
|
361
|
+
* @param packageName - The npm package name to check (as it would appear in package.json)
|
|
362
|
+
* @returns HallucinationCheckResult
|
|
363
|
+
*/
|
|
364
|
+
export function isLikelyHallucinated(packageName) {
|
|
365
|
+
const name = packageName.trim().toLowerCase();
|
|
366
|
+
// 1. Confirmed malicious
|
|
367
|
+
if (CONFIRMED_MALICIOUS.has(name)) {
|
|
368
|
+
return {
|
|
369
|
+
flagged: true,
|
|
370
|
+
confidence: 'high',
|
|
371
|
+
reason: `"${packageName}" is on the confirmed malicious package list. This package has been used in active supply chain attacks (PhantomRaven campaign or documented slopsquatting).`,
|
|
372
|
+
suggestedAlternative: INCOMPLETE_NAME_MAP.get(name),
|
|
373
|
+
source: 'confirmed_malicious',
|
|
374
|
+
};
|
|
375
|
+
}
|
|
376
|
+
// 2. Documented hallucinations
|
|
377
|
+
if (DOCUMENTED_HALLUCINATIONS.has(name)) {
|
|
378
|
+
const alt = INCOMPLETE_NAME_MAP.get(name);
|
|
379
|
+
return {
|
|
380
|
+
flagged: true,
|
|
381
|
+
confidence: 'high',
|
|
382
|
+
reason: `"${packageName}" has been documented as an AI-hallucinated package name in published security research.`,
|
|
383
|
+
suggestedAlternative: alt,
|
|
384
|
+
source: 'documented_hallucination',
|
|
385
|
+
};
|
|
386
|
+
}
|
|
387
|
+
// 3. Incomplete name (abbreviated real package)
|
|
388
|
+
if (INCOMPLETE_NAME_MAP.has(name)) {
|
|
389
|
+
return {
|
|
390
|
+
flagged: true,
|
|
391
|
+
confidence: 'high',
|
|
392
|
+
reason: `"${packageName}" is a known abbreviated form of a real package that LLMs commonly produce.`,
|
|
393
|
+
suggestedAlternative: INCOMPLETE_NAME_MAP.get(name),
|
|
394
|
+
source: 'incomplete_name',
|
|
395
|
+
};
|
|
396
|
+
}
|
|
397
|
+
// 4. Pattern matching
|
|
398
|
+
for (const check of SUSPICIOUS_PATTERNS) {
|
|
399
|
+
if (check.pattern.test(name)) {
|
|
400
|
+
return {
|
|
401
|
+
flagged: true,
|
|
402
|
+
confidence: check.confidence,
|
|
403
|
+
reason: check.reason,
|
|
404
|
+
source: 'suspicious_pattern',
|
|
405
|
+
};
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
return {
|
|
409
|
+
flagged: false,
|
|
410
|
+
confidence: 'high',
|
|
411
|
+
reason: `"${packageName}" does not match any known hallucination patterns.`,
|
|
412
|
+
source: 'clean',
|
|
413
|
+
};
|
|
414
|
+
}
|
|
415
|
+
/**
|
|
416
|
+
* Scan an array of package names and return only those that are flagged.
|
|
417
|
+
* Useful for scanning a full package.json dependency list.
|
|
418
|
+
*/
|
|
419
|
+
export function scanPackageList(packageNames) {
|
|
420
|
+
return packageNames
|
|
421
|
+
.map(name => ({ name, ...isLikelyHallucinated(name) }))
|
|
422
|
+
.filter(result => result.flagged);
|
|
423
|
+
}
|
|
424
|
+
/**
|
|
425
|
+
* Total corpus size for reporting purposes.
|
|
426
|
+
*/
|
|
427
|
+
export const CORPUS_STATS = {
|
|
428
|
+
confirmedMalicious: CONFIRMED_MALICIOUS.size,
|
|
429
|
+
documentedHallucinations: DOCUMENTED_HALLUCINATIONS.size,
|
|
430
|
+
incompleteNameMappings: INCOMPLETE_NAME_MAP.size,
|
|
431
|
+
suspiciousPatterns: SUSPICIOUS_PATTERNS.length,
|
|
432
|
+
get total() {
|
|
433
|
+
return this.confirmedMalicious + this.documentedHallucinations + this.incompleteNameMappings;
|
|
434
|
+
},
|
|
435
|
+
lastUpdated: '2026-03-08',
|
|
436
|
+
primarySources: [
|
|
437
|
+
'Koi Security PhantomRaven IOCs (Oct 2025)',
|
|
438
|
+
'Sonatype PhantomRaven analysis — 200+ packages (Oct–Nov 2025)',
|
|
439
|
+
'Lasso Security hallucination research (Bar Lanyado, 2024)',
|
|
440
|
+
'Spracklen et al., USENIX 2025 — 205,474 hallucinated names analyzed',
|
|
441
|
+
'Krishna et al., Importing Phantoms (Jan 2025)',
|
|
442
|
+
'Aikido Security — react-codeshift live case (Charlie Eriksen, Jan 2026)',
|
|
443
|
+
'Snyk package hallucination documentation (Aug 2025)',
|
|
444
|
+
'Mend slopsquatting research (Aug 2025)',
|
|
445
|
+
],
|
|
446
|
+
};
|
|
447
|
+
//# sourceMappingURL=Hallucinated%20Packages%20Corpus%20from%20Claude.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Hallucinated Packages Corpus from Claude.js","sourceRoot":"","sources":["../../src/tools/Hallucinated Packages Corpus from Claude.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MCP Usage Takeaways.guard.d.ts","sourceRoot":"","sources":["../../src/tools/MCP Usage Takeaways.guard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAiJpE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA6SzD;AAuBD,eAAO,MAAM,SAAS,0BAAoB,CAAC"}
|