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.
Files changed (61) hide show
  1. package/README.md +4 -2
  2. package/dist/clients/shrinkChatClient.d.ts +10 -10
  3. package/dist/clients/shrinkChatClient.d.ts.map +1 -1
  4. package/dist/clients/shrinkChatClient.js +5 -3
  5. package/dist/clients/shrinkChatClient.js.map +1 -1
  6. package/dist/db/client.d.ts.map +1 -1
  7. package/dist/db/client.js +6 -3
  8. package/dist/db/client.js.map +1 -1
  9. package/dist/index.js +5 -85
  10. package/dist/index.js.map +1 -1
  11. package/dist/server/sse.d.ts.map +1 -1
  12. package/dist/server/sse.js +4 -2
  13. package/dist/server/sse.js.map +1 -1
  14. package/dist/tools/Hallucinated Packages Corpus from Claude.d.ts +72 -0
  15. package/dist/tools/Hallucinated Packages Corpus from Claude.d.ts.map +1 -0
  16. package/dist/tools/Hallucinated Packages Corpus from Claude.js +447 -0
  17. package/dist/tools/Hallucinated Packages Corpus from Claude.js.map +1 -0
  18. package/dist/tools/MCP Usage Takeaways.guard.d.ts +4 -0
  19. package/dist/tools/MCP Usage Takeaways.guard.d.ts.map +1 -0
  20. package/dist/tools/MCP Usage Takeaways.guard.js +343 -0
  21. package/dist/tools/MCP Usage Takeaways.guard.js.map +1 -0
  22. package/dist/tools/checkpoint.d.ts.map +1 -1
  23. package/dist/tools/checkpoint.js +4 -20
  24. package/dist/tools/checkpoint.js.map +1 -1
  25. package/dist/tools/detect-build-context.d.ts +1 -1
  26. package/dist/tools/generate-upgrade-report.d.ts +2 -2
  27. package/dist/tools/guard.d.ts +120 -0
  28. package/dist/tools/guard.d.ts.map +1 -0
  29. package/dist/tools/guard.js +345 -0
  30. package/dist/tools/guard.js.map +1 -0
  31. package/dist/tools/hallucinated-packages-corpus.d.ts +7 -0
  32. package/dist/tools/hallucinated-packages-corpus.d.ts.map +1 -0
  33. package/dist/tools/hallucinated-packages-corpus.js +7 -0
  34. package/dist/tools/hallucinated-packages-corpus.js.map +1 -0
  35. package/dist/tools/intent-router.d.ts +20 -24
  36. package/dist/tools/intent-router.d.ts.map +1 -1
  37. package/dist/tools/intent-router.js +39 -7
  38. package/dist/tools/intent-router.js.map +1 -1
  39. package/dist/tools/pre-review-code.d.ts +2 -2
  40. package/dist/tools/prevent-ai-errors.d.ts +3 -3
  41. package/dist/tools/primary-tools.d.ts +84 -275
  42. package/dist/tools/primary-tools.d.ts.map +1 -1
  43. package/dist/tools/primary-tools.js +52 -9
  44. package/dist/tools/primary-tools.js.map +1 -1
  45. package/dist/tools/protect-files.d.ts +1 -1
  46. package/dist/tools/sendMessage.d.ts.map +1 -1
  47. package/dist/tools/sendMessage.js +17 -34
  48. package/dist/tools/sendMessage.js.map +1 -1
  49. package/dist/tools/session-manager.d.ts +5 -1
  50. package/dist/tools/session-manager.d.ts.map +1 -1
  51. package/dist/tools/session-manager.js +23 -19
  52. package/dist/tools/session-manager.js.map +1 -1
  53. package/dist/tools/smart-context.d.ts +1 -1
  54. package/dist/tools/verify.d.ts +5 -5
  55. package/dist/types/session.d.ts +2 -2
  56. package/package.json +9 -2
  57. package/assets/screenshots/checkpoint_session.png +0 -0
  58. package/assets/screenshots/code_review_workflow.png +0 -0
  59. package/assets/screenshots/insight_retrieve.png +0 -0
  60. package/assets/screenshots/insight_save.png +0 -0
  61. 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,4 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerGuardTool(server: McpServer): void;
3
+ export declare const guardTool: typeof registerGuardTool;
4
+ //# sourceMappingURL=MCP%20Usage%20Takeaways.guard.d.ts.map
@@ -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"}