amicus 1.2.0 → 1.2.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/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +10 -0
- package/package.json +1 -1
- package/src/utils/alias-audit.js +17 -4
- package/src/utils/curated-models.js +2 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "amicus",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"description": "Multi-model LLM Council + parallel AI window for Claude Code. Run structured council reviews across Gemini, GPT, DeepSeek and more — or fork a conversation to any model and fold the results back.",
|
|
5
5
|
"author": { "name": "Christian Wagner" },
|
|
6
6
|
"homepage": "https://bourbondog.github.io/amicus/",
|
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,16 @@ All notable changes to Amicus are documented here. Format follows
|
|
|
5
5
|
|
|
6
6
|
## [Unreleased]
|
|
7
7
|
|
|
8
|
+
## [1.2.1] - 2026-06-24
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
- **`amicus models --check` / `amicus doctor` stale deepseek warning is now clearable**: the
|
|
12
|
+
built-in deepseek direct fallback (`deepseek/deepseek-chat`) has been updated to
|
|
13
|
+
`deepseek/deepseek-v4-pro`. Additionally, stale curated-route warnings are now suppressed when
|
|
14
|
+
the same alias already resolves live via any other source (default openrouter route or a
|
|
15
|
+
user-set alias), so the suggested `--add-alias` fix actually clears the warning instead of
|
|
16
|
+
leaving it permanently unresolvable.
|
|
17
|
+
|
|
8
18
|
## [1.2.0] - 2026-06-24
|
|
9
19
|
|
|
10
20
|
A post-launch enhancement program: reliability and cost made real, the council's
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "amicus",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"description": "Multi-model LLM Council + parallel AI window for Claude Code. Run structured council reviews across Gemini, GPT, DeepSeek and more — or fork a conversation to any model and fold the results back.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"claude",
|
package/src/utils/alias-audit.js
CHANGED
|
@@ -57,17 +57,30 @@ function idsByProvider(catalog) {
|
|
|
57
57
|
* Entries whose model is absent from the catalog. A model is only checkable
|
|
58
58
|
* when its provider has rows in the catalog (unkeyed providers never produce
|
|
59
59
|
* false stales). Empty catalog → [] (cannot check).
|
|
60
|
+
*
|
|
61
|
+
* Stale curated-route entries are suppressed when the same alias already has
|
|
62
|
+
* at least one live resolution from any other source. This ensures the
|
|
63
|
+
* suggested `--add-alias` fix actually clears the warning, and prevents
|
|
64
|
+
* permanently unclearable noise when the default openrouter route is live.
|
|
60
65
|
* @param {Array<{alias,model,source}>} sources
|
|
61
66
|
* @param {Array<{id:string}>} catalog
|
|
62
67
|
*/
|
|
63
68
|
function findStaleAliases(sources, catalog) {
|
|
64
69
|
if (!catalog || catalog.length === 0) { return []; }
|
|
65
70
|
const byProvider = idsByProvider(catalog);
|
|
66
|
-
|
|
67
|
-
const
|
|
68
|
-
|
|
71
|
+
const isLive = model => {
|
|
72
|
+
const ids = byProvider.get(model.split('/')[0]);
|
|
73
|
+
return ids ? ids.has(model) : null;
|
|
74
|
+
};
|
|
75
|
+
const covered = new Set(
|
|
76
|
+
sources.filter(({ model }) => isLive(model) === true).map(({ alias }) => alias)
|
|
77
|
+
);
|
|
78
|
+
return sources.filter(({ alias, model, source }) => {
|
|
79
|
+
const ids = byProvider.get(model.split('/')[0]);
|
|
69
80
|
if (!ids) { return false; } // provider unverifiable
|
|
70
|
-
|
|
81
|
+
if (ids.has(model)) { return false; } // live
|
|
82
|
+
if (source.startsWith('curated-route') && covered.has(alias)) { return false; }
|
|
83
|
+
return true;
|
|
71
84
|
});
|
|
72
85
|
}
|
|
73
86
|
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
* the direct route is omitted (no pinned guess is better than a wrong one).
|
|
22
22
|
* `gpt`'s pattern intentionally matches any plain numeric flagship id
|
|
23
23
|
* (gpt-5.5, gpt-6) and excludes suffixed variants (-pro/-mini/-codex).
|
|
24
|
-
* Pinned ids verified against the live catalog 2026-06-
|
|
24
|
+
* Pinned ids verified against the live catalog 2026-06-24.
|
|
25
25
|
*/
|
|
26
26
|
const FAMILIES = [
|
|
27
27
|
{ alias: 'gemini', label: 'Gemini Flash-class', blurb: 'fast, large context',
|
|
@@ -51,7 +51,7 @@ const FAMILIES = [
|
|
|
51
51
|
idPattern: /^deepseek-v[\d.]+(-pro)?$/,
|
|
52
52
|
directProviders: ['deepseek'],
|
|
53
53
|
fallback: { openrouter: 'openrouter/deepseek/deepseek-v4-pro',
|
|
54
|
-
deepseek: 'deepseek/deepseek-
|
|
54
|
+
deepseek: 'deepseek/deepseek-v4-pro' } },
|
|
55
55
|
];
|
|
56
56
|
|
|
57
57
|
/**
|