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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "amicus",
3
- "version": "1.2.0",
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.0",
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",
@@ -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
- return sources.filter(({ model }) => {
67
- const provider = model.split('/')[0];
68
- const ids = byProvider.get(provider);
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
- return !ids.has(model);
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-11.
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-chat' } },
54
+ deepseek: 'deepseek/deepseek-v4-pro' } },
55
55
  ];
56
56
 
57
57
  /**