rlm-cli 0.2.6 → 0.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.
@@ -464,6 +464,51 @@ function displaySubQueryResult(info) {
464
464
  console.log(` ${c.magenta}└─${c.reset} ${c.dim}${elapsed}s · ${formatSize(info.resultLength)} received${c.reset}`);
465
465
  }
466
466
  // ── Available models list ────────────────────────────────────────────────────
467
+ /** Filter out deprecated, retired, and non-chat models (Feb 2026). */
468
+ const EXCLUDED_MODEL_PATTERNS = [
469
+ // ── Anthropic retired ──
470
+ /^claude-3-haiku/, // retired Feb 19, 2026
471
+ /^claude-3-sonnet/, // long retired
472
+ /^claude-3-opus/, // long retired
473
+ /^claude-3-5-sonnet/, // retired Jan 5, 2026
474
+ // ── OpenAI legacy / specialized ──
475
+ /^gpt-4$/, // superseded by gpt-4.1
476
+ /^gpt-4-turbo/, // superseded by gpt-4.1
477
+ /^gpt-4o-2024-/, // dated snapshots
478
+ /-chat-latest$/, // chat variants (use base model)
479
+ /^codex-/, // code-only
480
+ /-codex/, // all codex variants
481
+ // ── Google retired / deprecated ──
482
+ /^gemini-1\.5-/, // all 1.5 retired
483
+ /^gemini-3-pro-preview$/, // deprecated, shuts down Mar 9, 2026
484
+ /^gemini-live-/, // real-time streaming, not standard chat
485
+ // ── xAI non-chat ──
486
+ /^grok-beta$/,
487
+ /^grok-vision-beta$/,
488
+ /^grok-2-vision/,
489
+ /^grok-2-1212$/, // dated snapshot
490
+ // ── Mistral legacy ──
491
+ /^open-mistral-7b$/,
492
+ /^open-mixtral-/,
493
+ /^mistral-nemo$/,
494
+ // ── Dated snapshots / previews ──
495
+ /preview-\d{2}-\d{2}$/, // e.g. preview-04-17
496
+ /preview-\d{2}-\d{4}$/, // e.g. preview-09-2025
497
+ /^labs-/,
498
+ /-customtools$/,
499
+ /deep-research$/,
500
+ // Mistral dated snapshots (use -latest instead)
501
+ /^mistral-large-\d{4}$/,
502
+ /^mistral-medium-\d{4}$/,
503
+ /^mistral-small-\d{4}$/,
504
+ /^devstral-\d{4}$/,
505
+ /^devstral-\w+-\d{4}$/,
506
+ // Groq dated snapshots
507
+ /kimi-k2-instruct-\d+$/,
508
+ ];
509
+ function isModelExcluded(modelId) {
510
+ return EXCLUDED_MODEL_PATTERNS.some((p) => p.test(modelId));
511
+ }
467
512
  /** Collect models from providers that have an API key set. */
468
513
  function getAvailableModels() {
469
514
  const items = [];
@@ -472,7 +517,8 @@ function getAvailableModels() {
472
517
  if (!process.env[key] && provider !== detectProvider())
473
518
  continue;
474
519
  for (const m of getModels(provider)) {
475
- items.push({ id: m.id, provider });
520
+ if (!isModelExcluded(m.id))
521
+ items.push({ id: m.id, provider });
476
522
  }
477
523
  }
478
524
  return items;
@@ -484,7 +530,8 @@ function getModelsForProvider(providerName) {
484
530
  if (provider !== providerName)
485
531
  continue;
486
532
  for (const m of getModels(provider)) {
487
- items.push({ id: m.id, provider });
533
+ if (!isModelExcluded(m.id))
534
+ items.push({ id: m.id, provider });
488
535
  }
489
536
  }
490
537
  return items;
@@ -731,7 +778,7 @@ async function interactive() {
731
778
  // Validate env
732
779
  if (!hasAnyApiKey()) {
733
780
  printBanner();
734
- console.log(` ${c.red}No API key found.${c.reset}\n`);
781
+ console.log(` ${c.bold}Welcome! Let's get you set up.${c.reset}\n`);
735
782
  const setupRl = readline.createInterface({ input: stdin, output: stdout, terminal: true });
736
783
  let setupDone = false;
737
784
  while (!setupDone) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rlm-cli",
3
- "version": "0.2.6",
3
+ "version": "0.2.8",
4
4
  "description": "Standalone CLI for Recursive Language Models (RLMs) — implements Algorithm 1 from arXiv:2512.24601",
5
5
  "type": "module",
6
6
  "bin": {