@rayu-dev/rayu-cli 1.5.12 → 1.5.14

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/README.md CHANGED
@@ -51,6 +51,51 @@ Or reinstall the latest directly:
51
51
  npm install -g @rayu-dev/rayu-cli
52
52
  ```
53
53
 
54
+ Prefer `rayu update`: it resolves the latest version once, installs that **exact**
55
+ version, and then verifies what actually landed on disk. A plain
56
+ `npm install -g @rayu-dev/rayu-cli@latest` resolves the mutable `latest` tag a
57
+ second time and can silently reinstall the version you already have when npm
58
+ serves cached registry metadata (packuments are cached for 5 minutes), which
59
+ looks like a successful update that changed nothing.
60
+
61
+ When a newer version is published, Rayu shows a one-line notice above the prompt
62
+ and in the welcome box at launch, with a link to
63
+ [the changelog](https://rayucode.com/changelog). Nothing is installed until you
64
+ run `rayu update` yourself.
65
+
66
+ ### Automatic updates (opt-in)
67
+
68
+ Auto-updates are **off by default**. Rayu tells you an update exists but never
69
+ replaces your install behind your back. To turn them on, set `autoUpdates` in
70
+ `~/.rayu/config.json`:
71
+
72
+ ```json
73
+ {
74
+ "autoUpdates": true
75
+ }
76
+ ```
77
+
78
+ To silence update checks and notices entirely:
79
+
80
+ ```bash
81
+ export DISABLE_AUTOUPDATER=1
82
+ ```
83
+
84
+ Two things to know before enabling automatic updates:
85
+
86
+ - **Node version.** Rayu requires **Node.js 18 or newer**. npm only *warns* when
87
+ a package's `engines` requirement isn't met, so if a future release raises that
88
+ floor, an automatic update could replace a working install with one that
89
+ refuses to start until you upgrade Node. `rayu update` has the same
90
+ constraint, but you choose when it happens.
91
+ - **Duplicate installs.** If Rayu is installed under two different npm prefixes
92
+ (for example once with `sudo`, landing in `/usr/local`, and once without,
93
+ landing in `~/.npm-global`), an update writes to whichever prefix npm is
94
+ configured for — which may not be the copy your shell actually runs. The result
95
+ is a "successful" update where `rayu --version` never changes. `rayu update`
96
+ detects this and tells you which copy is shadowing which; the automatic updater
97
+ does not. Run `which -a rayu` to check, and remove the copy you don't want.
98
+
54
99
  ---
55
100
 
56
101
  ## Uninstall
@@ -127,15 +172,27 @@ rayu --print --output-format json "list top-level folders" | jq .result
127
172
 
128
173
  ## Providers
129
174
 
130
- Rayu supports five provider types:
131
-
132
- | Provider | SDK / Method | Key env var |
133
- |----------|-------------|-------------|
134
- | **`anthropic`** | Anthropic SDK (`@anthropic-ai/sdk`) | `ANTHROPIC_API_KEY` |
135
- | **`openai-compatible`** | OpenAI SDK — NVIDIA, DeepSeek, Kimi, OpenRouter, Ollama, LM Studio, etc. | `RAYU_OPENAI_API_KEY` |
136
- | **`bedrock`** | AWS Bedrock SDK v3 | `AWS_BEARER_TOKEN_BEDROCK` or default AWS creds |
137
- | **`vertex`** | Google Gemini API via `@google/genai` | Google OAuth / ADC |
138
- | **`rayu-hosted`** | Proxied through rayu-gateway (requires RAYU OAuth login) | N/A (uses JWT auth) |
175
+ Rayu speaks **four wire formats**, so one provider entry can serve models that use
176
+ different protocols. Which format a request uses is decided per **model**, not per
177
+ provider:
178
+
179
+ | Provider | Models it serves | Wire format(s) | Auth |
180
+ |----------|------------------|----------------|------|
181
+ | **Anthropic** | Claude | Anthropic Messages | `ANTHROPIC_API_KEY` |
182
+ | **AWS Bedrock** | Claude **and** gpt-oss / qwen / deepseek / mistral / | Anthropic Messages for Claude, OpenAI Chat for the rest | `AWS_BEARER_TOKEN_BEDROCK` (Bedrock API key) |
183
+ | **Microsoft Azure** | Claude **and** GPT deployments | Anthropic Messages for Claude, OpenAI Responses for the rest | `ANTHROPIC_FOUNDRY_API_KEY` / `AZURE_OPENAI_API_KEY` |
184
+ | **Google Vertex AI** | Gemini, Claude, **and** Llama / Mistral / Qwen (MaaS) | GenAI, Anthropic Messages, OpenAI Chat | Google OAuth / ADC |
185
+ | **OpenAI-compatible** | NVIDIA, DeepSeek, Kimi, OpenRouter, GLM, Ollama, LM Studio, … | OpenAI Chat | `RAYU_OPENAI_API_KEY` or per-provider key |
186
+ | **Anthropic-compatible** | LongCat, Ollama Cloud | Anthropic Messages | Bearer key |
187
+ | **GitHub Copilot** | Copilot models | OpenAI Chat | GitHub OAuth device flow |
188
+ | **Kiro** | Claude via AWS CodeWhisperer | CodeWhisperer event-stream | API key or `kiro-cli` login |
189
+ | **Rayu (hosted)** | Curated hosted models | Anthropic Messages | Your Rayu account (JWT) |
190
+ | **Custom** | Anything you declare | **you pick**: OpenAI Chat, OpenAI Responses, or Anthropic Messages | your key |
191
+
192
+ **Custom providers need no code change.** Run `/connect` → *Custom provider*, give
193
+ it a name, pick the API format its endpoint speaks, enter the base URL, the model
194
+ ids and your key. Declare whether it supports reasoning and images so Rayu never
195
+ sends a parameter your endpoint would reject.
139
196
 
140
197
  **Google Gemini** is available three ways:
141
198
  1. **Gemini API key** (`GEMINI_API_KEY`) via the OpenAI-compatible endpoint