rlm-cli 0.2.7 → 0.2.9

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 (2) hide show
  1. package/dist/interactive.js +48 -24
  2. package/package.json +1 -1
@@ -67,7 +67,7 @@ class Spinner {
67
67
  }
68
68
  }
69
69
  // ── Constants ───────────────────────────────────────────────────────────────
70
- const DEFAULT_MODEL = process.env.RLM_MODEL || "claude-sonnet-4-5-20250929";
70
+ const DEFAULT_MODEL = process.env.RLM_MODEL || "claude-sonnet-4-6";
71
71
  const TRAJ_DIR = path.resolve(process.cwd(), "trajectories");
72
72
  const W = Math.min(process.stdout.columns || 80, 100);
73
73
  // ── Session state ───────────────────────────────────────────────────────────
@@ -152,9 +152,26 @@ function resolveModelWithProvider(modelId) {
152
152
  }
153
153
  return undefined;
154
154
  }
155
- /** Returns the first model ID from a given pi-ai provider. */
155
+ /** Sensible default model per provider. */
156
+ const PROVIDER_DEFAULT_MODELS = {
157
+ anthropic: "claude-sonnet-4-6",
158
+ openai: "gpt-4o",
159
+ google: "gemini-2.5-flash",
160
+ groq: "llama-3.3-70b-versatile",
161
+ xai: "grok-4",
162
+ mistral: "mistral-large-latest",
163
+ openrouter: "claude-sonnet-4-6",
164
+ };
165
+ /** Returns the recommended default model for a provider. */
156
166
  function getDefaultModelForProvider(provider) {
157
- const models = getModels(provider);
167
+ const preferred = PROVIDER_DEFAULT_MODELS[provider];
168
+ if (preferred) {
169
+ const model = resolveModel(preferred);
170
+ if (model)
171
+ return preferred;
172
+ }
173
+ // Fallback: first non-excluded model
174
+ const models = getModelsForProvider(provider);
158
175
  return models.length > 0 ? models[0].id : undefined;
159
176
  }
160
177
  /** Wrap rl.question with ESC-to-cancel. Returns user input or null on ESC/empty. */
@@ -464,37 +481,44 @@ function displaySubQueryResult(info) {
464
481
  console.log(` ${c.magenta}└─${c.reset} ${c.dim}${elapsed}s · ${formatSize(info.resultLength)} received${c.reset}`);
465
482
  }
466
483
  // ── Available models list ────────────────────────────────────────────────────
467
- /** Filter out deprecated, legacy, preview-only, and non-chat models. */
484
+ /** Filter out deprecated, retired, and non-chat models (Feb 2026). */
468
485
  const EXCLUDED_MODEL_PATTERNS = [
469
- // Anthropic legacy
470
- /^claude-3-haiku/,
471
- /^claude-3-sonnet/,
472
- /^claude-3-opus/,
473
- /^claude-3-5-sonnet-20240620/, // superseded by v2
474
- // OpenAI legacy
475
- /^gpt-4$/, // base gpt-4
476
- /^gpt-4-turbo/, // gpt-4-turbo
477
- /^gpt-4o-2024-/, // old dated snapshots
478
- // Non-chat / specialized
479
- /^codex-/,
480
- /^gpt-5\.\d+-codex/,
481
- /^gpt-5-codex/,
482
- /^gpt-5\.3-codex/,
483
- /deep-research$/,
484
- /^gemini-live-/,
486
+ // ── Anthropic retired / old gen ──
487
+ /^claude-3-/, // all claude 3.x retired (haiku, sonnet, opus, 3-5-*, 3-7-*)
488
+ // ── OpenAI legacy / specialized ──
489
+ /^gpt-4$/, // superseded by gpt-4.1
490
+ /^gpt-4-turbo/, // superseded by gpt-4.1
491
+ /^gpt-4o-2024-/, // dated snapshots
492
+ /-chat-latest$/, // chat variants (use base model)
493
+ /^codex-/, // code-only
494
+ /-codex/, // all codex variants
495
+ // ── Google retired / deprecated ──
496
+ /^gemini-1\.5-/, // all 1.5 retired
497
+ /^gemini-3-pro-preview$/, // deprecated, shuts down Mar 9, 2026
498
+ /^gemini-live-/, // real-time streaming, not standard chat
499
+ // ── xAI non-chat ──
485
500
  /^grok-beta$/,
486
501
  /^grok-vision-beta$/,
487
502
  /^grok-2-vision/,
488
- // Old/niche Mistral
503
+ /^grok-2-1212$/, // dated snapshot
504
+ // ── Mistral legacy ──
489
505
  /^open-mistral-7b$/,
490
506
  /^open-mixtral-/,
491
507
  /^mistral-nemo$/,
492
- // Dated previews (keep only -latest and stable)
493
- /preview-\d{2}-\d{2}$/, // e.g. preview-04-17, preview-05-20
508
+ // ── Dated snapshots / previews ──
509
+ /preview-\d{2}-\d{2}$/, // e.g. preview-04-17
494
510
  /preview-\d{2}-\d{4}$/, // e.g. preview-09-2025
495
511
  /^labs-/,
496
- // Specialized/internal variants
497
512
  /-customtools$/,
513
+ /deep-research$/,
514
+ // Mistral dated snapshots (use -latest instead)
515
+ /^mistral-large-\d{4}$/,
516
+ /^mistral-medium-\d{4}$/,
517
+ /^mistral-small-\d{4}$/,
518
+ /^devstral-\d{4}$/,
519
+ /^devstral-\w+-\d{4}$/,
520
+ // Groq dated snapshots
521
+ /kimi-k2-instruct-\d+$/,
498
522
  ];
499
523
  function isModelExcluded(modelId) {
500
524
  return EXCLUDED_MODEL_PATTERNS.some((p) => p.test(modelId));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rlm-cli",
3
- "version": "0.2.7",
3
+ "version": "0.2.9",
4
4
  "description": "Standalone CLI for Recursive Language Models (RLMs) — implements Algorithm 1 from arXiv:2512.24601",
5
5
  "type": "module",
6
6
  "bin": {