friend-assistant 0.1.48 → 0.1.50
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 +8 -3
- package/dist/BUILD.json +2 -2
- package/dist/friend.mjs +984 -363
- package/dist/web/assets/{index-TN8E9kni.css → index-D-xt1hHe.css} +1 -1
- package/dist/web/assets/index-yo3lqtBB.js +4456 -0
- package/dist/web/index.html +2 -2
- package/package.json +1 -1
- package/dist/web/assets/index-DIYYoJUP.js +0 -4456
package/README.md
CHANGED
|
@@ -138,6 +138,10 @@ Connectors (Gmail, Chrome control, any MCP service) are managed inside the app,
|
|
|
138
138
|
| `apiKey`, `model` | The Anthropic API key and the Claude model used with it. |
|
|
139
139
|
| `claudeCode.model`, `claudeCode.command`, `claudeCode.fallback` | The subscription route: model (`sonnet`, `haiku`, `opus`), the command that starts Claude Code, and `ollama` or `none` for what to use when Claude is unavailable. |
|
|
140
140
|
| `claudeCode.webSearch` | With Claude Code, lets Claude search the web with its own WebSearch tool (on by default), so questions about today (prices, news, scores) are answered from what it finds, with the source, instead of from memory. Only searching: Claude gets no other built-in tool, and a guest never gets it. Off: Claude answers from memory only. |
|
|
141
|
+
| `web.enabled` | Gives every model the tools `web.search` (a list of results) and `web.read` (the text of one page) so it can answer about today (prices, news, scores) from the web instead of from memory. They run on this PC with no browser. A page can never give Friend orders, and Friend will not open addresses on this PC or your network. Off: neither tool exists. |
|
|
142
|
+
| `web.provider` | Where `web.search` asks: `duckduckgo` (default, free, no key), `brave` or `tavily` (your own key), or `searxng` (your own server). If the chosen source cannot answer, Friend tries DuckDuckGo once and says so. |
|
|
143
|
+
| `web.searxngUrl` | The address of your own SearXNG server (http or https, no login in it), used when `web.provider` is `searxng`. It must allow the JSON format. |
|
|
144
|
+
| `web.braveKey`, `web.tavilyKey` | Your keys for Brave Search and Tavily. Write-only: never shown again, and an empty box leaves the saved key alone. Only the owner can change them, on the Settings screen. |
|
|
141
145
|
| `ollama.url`, `ollama.model`, `ollama.vision`, `ollama.contextTokens` | The local model: server address, model name, whether it can see pictures, and how much it remembers at once. |
|
|
142
146
|
| `openai.url`, `openai.model`, `openai.apiKey`, `openai.vision` | An OpenAI-compatible server: its address (ending in `/v1`), the model name it knows, its API key (or empty), and whether the model can see pictures. For OmniRoute (https://github.com/diegosouzapw/OmniRoute) run `npm install -g omniroute` and `omniroute`, then `friend config set provider openai` (the defaults are OmniRoute's: `http://localhost:20128/v1` and model `auto`). Also works with LM Studio, LiteLLM, vLLM and OpenRouter. |
|
|
143
147
|
| `voice.hindiVoice`, `voice.marathiVoice` | The voices that read Hindi and Marathi (Devanagari) text: `hi_IN-priyamvada-medium`, `hi_IN-pratham-medium`, `hi_IN-rohan-medium`, `mr_IN-google-medium`. Empty makes the main voice read that language. See "Hindi, Marathi and English together". |
|
|
@@ -188,7 +192,8 @@ Type `/` in the message bar for a list that narrows as you type; they run on the
|
|
|
188
192
|
| `/plugins` | Opens the plugins. |
|
|
189
193
|
| `/voice` | Opens voice enrolment. |
|
|
190
194
|
| `/camera on`, `/camera off` | Switches the camera. It only takes a picture when you approve. |
|
|
191
|
-
| `/mute`, `/unmute` | Hides or shows everything on the stage. |
|
|
195
|
+
| `/mute`, `/unmute` | Hides or shows everything on the stage. Remembered on this device. |
|
|
196
|
+
| `/quiet`, `/speak` | Stops Friend speaking aloud (it still writes its answers, so you read the captions and the chat), or lets it speak again. Instant, no restart, remembered on this device. |
|
|
192
197
|
| `/clear` | Takes everything off the screen. |
|
|
193
198
|
| `/status` | Says what Friend is doing right now. |
|
|
194
199
|
| `/logout` | Signs out on this screen. |
|
|
@@ -206,7 +211,7 @@ pnpm friend start # gateway + local device node, http://127.0.0.1:8787
|
|
|
206
211
|
|
|
207
212
|
Sign-in is guarded against guessing: after **three wrong passwords** (or PINs) from one address, that address is locked for a minute, and every wrong try after that doubles the wait (up to an hour). The sign-in screen shows the tries left and a countdown, and even the right password waits out a lock. Many addresses together are limited too. A refresh never shows any part of the home screen before sign-in: the page asks the server first and draws only the sign-in screen until you are in.
|
|
208
213
|
|
|
209
|
-
Open the address in a browser, sign in, and press any key to talk. Press `Esc` (or long-press the top-left corner) for the owner menu: mute stage, log out, emergency lock.
|
|
214
|
+
Open the address in a browser, sign in, and press any key to talk. Press `Esc` (or long-press the top-left corner) for the owner menu: voice on/off, mute stage, log out, emergency lock.
|
|
210
215
|
|
|
211
216
|
Preview the whole look with no API key and no network: `pnpm build && pnpm demo`, then open the printed address. Each message you send shows the next scene (gauges and charts, a timeline, a graph, the orb and ring voice styles, a warm mood).
|
|
212
217
|
|
|
@@ -259,7 +264,7 @@ When it notices something you repeat, the AI may suggest a **skill** (instructio
|
|
|
259
264
|
- **Status line (bottom-left):** always shows what Friend is doing in plain words: Ready, Listening, Understanding what you said, Thinking, Getting the weather for Pune, Creating a view, Running a command, Answering, Waiting for your approval, Reconnecting. It never shows command text or arguments.
|
|
260
265
|
- **Clock (bottom-right):** a small date and time, so the screen is never empty.
|
|
261
266
|
- **Settings (Esc, then Settings):** change the model provider (Claude subscription through Claude Code, Claude API key, or local Ollama), the model names, the fallback, the Ollama address, and the voice options without the terminal. A change is used straight away (no restart) except the speaking voice and listening model. Saving needs your PIN. The API key is write-only: it is never sent back to the screen. Network address, folders and safety rules are deliberately not in this screen; use `friend config set` for those.
|
|
262
|
-
- **Slash commands:** type `/` in the message bar for a list that narrows as you type (arrows or Tab to pick, Enter to run): /settings, /plugins, /voice, /camera on|off, /mute, /unmute, /clear, /status, /logout, /lock, /help. They run on the screen and never go to the AI, so they work instantly and even when the model is down. Start a line with // to send a message that begins with a slash.
|
|
267
|
+
- **Slash commands:** type `/` in the message bar for a list that narrows as you type (arrows or Tab to pick, Enter to run): /settings, /plugins, /voice, /camera on|off, /mute, /unmute, /quiet, /speak, /clear, /status, /logout, /lock, /help. They run on the screen and never go to the AI, so they work instantly and even when the model is down. Start a line with // to send a message that begins with a slash.
|
|
263
268
|
- **PIN with the keyboard:** wherever a PIN is asked for, type the digits, Backspace to correct, Enter to confirm (Enter never deletes your voice; that needs a click). The on-screen keys still work for touch.
|
|
264
269
|
- **The AI knows the screen:** its instructions include a layout guide (what is always on screen, the five regions, how to compose one answer, how long things should stay), and every request tells it what is on screen, where, for how long, and which regions are free. If it puts something on top of another object or over the captions, status line or clock, Friend moves it to a free spot (or the tidy auto grid) and tells it why, so it learns within the conversation. Nothing is refused.
|
|
265
270
|
- **Voice presence look (Settings, tab "Voice presence", or `/look`):** the settings dialog is wide and has tabs: *Model*, *Voice* and *Voice presence*. On the last one you choose a **theme** (Aurora, Ocean, Ember, Violet storm, Matrix, Rose, Ghost) with one click, or set everything yourself: the **shape** (sphere, orb, ring), the **colour** (swatches or any colour), **brightness**, **size**, how strongly it **reacts to the voice**, the soft **glow** behind everything, whether the live **captions** show and how big they are, and the **view**. A live preview shows the result before you save. Saving a change of look needs **no PIN**, and every open screen changes at once. *Let the AI change the shape, colour and brightness to suit a topic* can be switched off to keep exactly the look you chose (you can still ask it "make it purple" yourself). Pressing the colour box also works; the colour must be a plain #rrggbb.
|
package/dist/BUILD.json
CHANGED