llm-checker 3.2.6 → 3.2.8

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/LICENSE CHANGED
@@ -1,18 +1,36 @@
1
- MIT License
1
+ LLM Checker No Paid Distribution License (NPDL-1.0)
2
2
 
3
3
  Copyright (c) 2025 Pavelevich
4
4
 
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the Software), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
5
+ Permission is granted, free of charge, to any person obtaining a copy of this
6
+ software and associated documentation files (the "Software"), to use, copy,
7
+ modify, and redistribute the Software, subject to the conditions below.
11
8
 
12
- The above copyright notice and this permission notice shall be included in all
9
+ 1) No paid distribution or monetized delivery
10
+ You may not sell the Software. You may not charge any fee or other
11
+ consideration for:
12
+ - distributing, sublicensing, or transferring the Software (in source or
13
+ binary form), or
14
+ - providing the Software as a hosted, managed, or API service.
15
+
16
+ 2) Attribution and notice
17
+ The above copyright notice and this license text must be included in all
13
18
  copies or substantial portions of the Software.
14
19
 
15
- THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20
+ 3) Derivative works
21
+ You may create and redistribute derivative works only if distribution remains
22
+ free of charge and this license is included.
23
+
24
+ 4) Trademarks
25
+ This license does not grant permission to use the name "LLM Checker", project
26
+ branding, or logos except for accurate attribution.
27
+
28
+ 5) Commercial licensing
29
+ If you need paid distribution rights, commercial sublicensing rights, or
30
+ monetized hosted-service rights, you must obtain a separate commercial license
31
+ from the copyright holder.
32
+
33
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
34
  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
35
  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
36
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
package/README.md CHANGED
@@ -16,7 +16,7 @@
16
16
  <p align="center">
17
17
  <a href="https://www.npmjs.com/package/llm-checker"><img src="https://img.shields.io/npm/v/llm-checker?style=flat-square&color=0066FF" alt="npm version"></a>
18
18
  <a href="https://www.npmjs.com/package/llm-checker"><img src="https://img.shields.io/npm/dm/llm-checker?style=flat-square&color=0066FF" alt="npm downloads"></a>
19
- <a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-0066FF?style=flat-square" alt="License"></a>
19
+ <a href="LICENSE"><img src="https://img.shields.io/badge/License-NPDL--1.0-CC3300?style=flat-square" alt="License"></a>
20
20
  <a href="https://discord.gg/mnmYrA7T"><img src="https://img.shields.io/discord/1457032977849520374?style=flat-square&color=0066FF&label=Discord" alt="Discord"></a>
21
21
  <a href="https://nodejs.org/"><img src="https://img.shields.io/badge/node-%3E%3D16-0066FF?style=flat-square" alt="Node.js"></a>
22
22
  </p>
@@ -97,7 +97,15 @@ LLM Checker is published in all primary channels:
97
97
  - GitHub Releases: [Release history](https://github.com/Pavelevich/llm-checker/releases)
98
98
  - GitHub Packages: [`@pavelevich/llm-checker`](https://github.com/users/Pavelevich/packages/npm/package/llm-checker)
99
99
 
100
- ### v3.2.6 Highlights
100
+ ### v3.2.8 Highlights
101
+
102
+ - Fixed multimodal recommendation false positives from noisy metadata.
103
+ - Coding-only models with incidental `input_types: image` flags are no longer treated as vision models.
104
+ - Added regression tests to keep multimodal category picks aligned with true vision-capable models.
105
+
106
+ ### v3.2.7 Highlights
107
+
108
+ - License updated to **NPDL-1.0**: paid redistribution and paid hosted/API delivery now require a separate commercial license.
101
109
 
102
110
  - Recommendation engine now enforces feasible 30B-class coverage on high-capacity discrete multi-GPU setups (for non-speed objectives).
103
111
  - Heterogeneous GPU inventories are preserved in output summaries and downstream recommendation inputs.
@@ -709,7 +717,12 @@ bin/
709
717
 
710
718
  ## License
711
719
 
712
- MIT License &mdash; see [LICENSE](LICENSE) for details.
720
+ LLM Checker is licensed under **NPDL-1.0** (No Paid Distribution License).
721
+
722
+ - Free use, modification, and redistribution are allowed.
723
+ - Selling the software or offering it as a paid hosted/API service is not allowed without a separate commercial license.
724
+
725
+ See [LICENSE](LICENSE) for full terms.
713
726
 
714
727
  ---
715
728
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "llm-checker",
3
- "version": "3.2.6",
3
+ "version": "3.2.8",
4
4
  "description": "Intelligent CLI tool with AI-powered model selection that analyzes your hardware and recommends optimal LLM models for your system",
5
5
  "bin": {
6
6
  "llm-checker": "bin/cli.js",
@@ -81,7 +81,7 @@
81
81
  "model-context-protocol"
82
82
  ],
83
83
  "author": "Pavelevich (https://github.com/Pavelevich)",
84
- "license": "MIT",
84
+ "license": "SEE LICENSE IN LICENSE",
85
85
  "repository": {
86
86
  "type": "git",
87
87
  "url": "git+https://github.com/Pavelevich/llm-checker.git"
@@ -1042,6 +1042,9 @@ class DeterministicModelSelector {
1042
1042
 
1043
1043
  inferModalities(model, variantTag = '') {
1044
1044
  const inputTypes = Array.isArray(model.input_types) ? model.input_types.map((x) => String(x).toLowerCase()) : [];
1045
+ const primaryCategory = String(model.primary_category || '').toLowerCase();
1046
+ const categories = Array.isArray(model.categories) ? model.categories.map((x) => String(x).toLowerCase()) : [];
1047
+ const useCases = Array.isArray(model.use_cases) ? model.use_cases.map((x) => String(x).toLowerCase()) : [];
1045
1048
  const text = [
1046
1049
  model.model_identifier,
1047
1050
  model.model_name,
@@ -1050,9 +1053,19 @@ class DeterministicModelSelector {
1050
1053
  variantTag
1051
1054
  ].filter(Boolean).join(' ').toLowerCase();
1052
1055
 
1053
- const hasVision = inputTypes.includes('image') ||
1054
- inputTypes.includes('vision') ||
1055
- /vision|vl\b|llava|pixtral|moondream|image|multimodal/.test(text);
1056
+ const hasVisionInputFlag = inputTypes.includes('image') || inputTypes.includes('vision');
1057
+ const hasVisionMetadataHint =
1058
+ primaryCategory === 'multimodal' ||
1059
+ categories.some((cat) => cat.includes('multimodal') || cat.includes('vision')) ||
1060
+ useCases.some((useCase) => useCase.includes('multimodal') || useCase.includes('vision'));
1061
+ const hasVisionTextHint =
1062
+ /(?:\bmultimodal\b|\bvision\b|\bllava\b|\bbakllava\b|\bmoondream\b|\bpixtral\b|\bidefics\b|\bpaligemma\b|\bminicpm-?v\b|\bqwen[\w.-]*vl\b|\bllama3\.2[-_ ]?vision\b|\bdeepseek-ocr\b)/.test(text);
1063
+ const hasVisionContextHint =
1064
+ /\b(image[- ]?(understanding|caption|analysis)|vision[- ]?language|vlm)\b/.test(text);
1065
+
1066
+ // Some upstream scrapers may over-report `image` support by scanning generic page text.
1067
+ // Trust image input flags only when accompanied by multimodal metadata or explicit vision naming.
1068
+ const hasVision = hasVisionTextHint || hasVisionMetadataHint || (hasVisionInputFlag && hasVisionContextHint);
1056
1069
 
1057
1070
  return hasVision ? ['text', 'vision'] : ['text'];
1058
1071
  }