friend-assistant 0.1.53 → 0.1.55
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 +21 -8
- package/dist/BUILD.json +2 -2
- package/dist/friend.mjs +2756 -1127
- package/dist/plugins/day-trader-india/plugin.json +112 -0
- package/dist/plugins/day-trader-india/skills/analyst.md +18 -0
- package/dist/plugins/day-trader-india/skills/budget.md +15 -0
- package/dist/plugins/day-trader-india/skills/entry.md +14 -0
- package/dist/plugins/day-trader-india/skills/exit.md +18 -0
- package/dist/plugins/day-trader-india/skills/focus.md +32 -0
- package/dist/plugins/day-trader-india/skills/news.md +16 -0
- package/dist/plugins/day-trader-india/skills/replay.md +16 -0
- package/dist/plugins/day-trader-india/skills/risk.md +18 -0
- package/dist/plugins/day-trader-india/skills/scan.md +17 -0
- package/dist/plugins/day-trader-india/skills/smart-money.md +15 -0
- package/dist/plugins/day-trader-india/tools/trade_plan.py +52 -0
- package/dist/plugins/portfolio-assistant/plugin.json +1 -1
- package/dist/plugins/portfolio-assistant/skills/portfolio.md +1 -1
- package/dist/web/assets/{OrgParts-nZOYQPY9.js → OrgParts-D40aMpPd.js} +1 -1
- package/dist/web/assets/index-BfF86nED.css +1 -0
- package/dist/web/assets/index-CCigY-V1.js +4460 -0
- package/dist/web/assets/{jarvis-ui-B1BG4LbC.js → jarvis-ui-C9ztv-dp.js} +1 -1
- package/dist/web/assets/{jarvisTree-Cv0Hmuod.js → jarvisTree-BGatiOp4.js} +1 -1
- package/dist/web/index.html +2 -2
- package/package.json +1 -1
- package/dist/web/assets/index-DF0EwZvr.js +0 -4460
- package/dist/web/assets/index-J0YdEvxK.css +0 -1
package/README.md
CHANGED
|
@@ -108,14 +108,17 @@ Restart `friend start` after any of these.
|
|
|
108
108
|
|
|
109
109
|
| Command | What it does | Use it when |
|
|
110
110
|
|---|---|---|
|
|
111
|
-
| `friend memory list` |
|
|
112
|
-
| `friend memory
|
|
111
|
+
| `friend memory list` | Shows the tree of notes Friend keeps about you, folder by folder (the older flat list if the tree is not there yet). | Seeing what it remembers. |
|
|
112
|
+
| `friend memory show <path>` | Prints one note, or a folder's index (for example `family/priya.md` or `family`). | Reading what it wrote. |
|
|
113
|
+
| `friend memory forget <path or number>` | Deletes one note, a whole folder (by path), or an older numbered note. | A note is wrong or private. |
|
|
113
114
|
| `friend memory clear` | Deletes all notes (asks for your PIN). | Starting fresh. |
|
|
114
115
|
| `friend rules list` | Lists the "always allow" rules you created by choosing *Always allow* on an approval card. | Reviewing what Friend may do without asking. |
|
|
115
116
|
| `friend rules remove <id>` | Removes a rule, so Friend asks again. | You trust something less now. |
|
|
116
117
|
|
|
117
118
|
### Plugins
|
|
118
119
|
|
|
120
|
+
**Day trader (India)** is a bundled plugin with ten skills (focus list, scan for setups, news, entry, exit, budget, risk, replay, analyst, smart money). Ask "what should I trade today" and Friend scans the market (the most active stocks, volume spurts and the biggest F&O movers), checks the news, simulates each setup and gives a ranked focus list with entry, stop, target and odds and an exact sizing tool (`trade-plan`). It reads Indian market data through three built-in tools, `market.get` (candles, quotes, NSE announcements, results, insider trades, bulk and block deals, shareholding, top movers, most active, volume spurts), `market.scan` (finds opening-range breakouts and bounces across the market and ranks them) and `market.replay` (replays the rest of the session from the stock's own recent candles). Both use free public feeds (Yahoo Finance and the NSE, no key), follow the Web switch, and work in IST and rupees. Your limits (max loss, money, leverage) are asked each session, never assumed. It is analysis only: it never places an order, you place it in your broker app.
|
|
121
|
+
|
|
119
122
|
| Command | What it does | Use it when |
|
|
120
123
|
|---|---|---|
|
|
121
124
|
| `friend plugin catalog` | Lists the plugins that come with Friend. | Looking for something to add. |
|
|
@@ -391,7 +394,8 @@ Settings -> Widgets -> **Screen layout** switches between **Classic** (the orb w
|
|
|
391
394
|
The Office lets Friend hire **workers**: separate Claude Code sessions that work in your project folders, one ticket at a time, while you keep talking to Friend. It is off until you switch it on, and nothing in it is preset: the roles, projects, limits and rules are all **settings** (Settings -> **Office**, saved with your PIN; the assistant itself cannot change them).
|
|
392
395
|
|
|
393
396
|
- **Set up.** Turn the Office on, add a **project** (a folder, and one line about its goal) and a **role** (an id, a title, optional model and the instructions that worker always starts with; a few starter roles are only editable data, delete or change them). Then ask Friend: "hire a builder on my site project and have them fix the login bug".
|
|
394
|
-
- **
|
|
397
|
+
- **How much Friend decides.** Settings -> Office -> *How much Friend decides*. When a worker asks to do something (run a command, change a file), **Low** (the default) asks you for everything not on your let-through list, **Medium** lets Friend answer the ordinary requests and still asks you, with your PIN, about dangerous ones (deleting, installing, force pushes), and **High** lets Friend answer all of them. Whatever the level, a path outside the project folders, the files that control a worker and the commands you list under *Always refuse* are refused, and every answer Friend gives is written to the worker's feed and the audit log. Only you can change this level, on the settings screen; Friend cannot change it for itself.
|
|
398
|
+
- **Tools Friend uses.** `office.status` (workers, tickets, the subscription window), `office.hire`, `office.assign` (give a ticket and start it), `office.say` (a message to a worker), `office.review` (accept a finished ticket or send it back) and `office.stop` (one worker or all). Text a worker writes is shown to Friend as untrusted data, never as instructions.
|
|
395
399
|
- **Approvals.** A worker that wants to do something risky asks through Friend's own approval card (the orange octagon on the orbital screen, the card in the classic one), showing the whole command. A path outside the project's folders, and any command that matches one of your **Always refuse** patterns, is refused without asking. Tools on your **Let through without asking** list go ahead inside the folders; everything else asks, and a command that looks dangerous needs your PIN. An unanswered card counts as a no. There is no "always allow" for a worker's question.
|
|
396
400
|
- **Limits.** *Most workers at once* (the others queue), a token limit per worker and in total, a start timeout, and **Pause at N% of the five-hour window**: when your Claude subscription window is that full, workers wait until it resets (0 = never pause). Workers share your Claude subscription with Friend itself, using the program and model chosen under Model.
|
|
397
401
|
- **On the orbital screen** the workers are the orbit nodes (a "+" hires one), Tickets and Budget show the real tickets and token limits, the Activity feed shows what the workers do, and the usage ring shows the real five-hour window with the time it resets. Click a worker to see its live feed, **Stop** it or say something to it. Stop, switching the Office off and closing Friend all end every worker process.
|
|
@@ -400,7 +404,7 @@ The Office lets Friend hire **workers**: separate Claude Code sessions that work
|
|
|
400
404
|
|
|
401
405
|
## Drawing with the Jarvis components
|
|
402
406
|
|
|
403
|
-
Besides the simple widgets,
|
|
407
|
+
Besides the simple widgets, Every component of the Jarvis HUD library that is safe to draw (stat cards, gauges, bar, line and donut charts, tables, status pills, node graphs, tabs and about forty more) is an object type of its own, by its own name (`JStatCard`, `JGaugeChart`, `JTable`, ...), in the same list as the basic widgets, and the best looking: Friend picks them first. Parts inside a card go in `kids` and `slots`; it is data, never code. Every component and prop is checked against an allow-list before it is drawn, so nothing can run or restyle the screen. `stage.guide` lists the components for him.
|
|
404
408
|
|
|
405
409
|
## Pictures first: weather, stats and graphics
|
|
406
410
|
|
|
@@ -418,14 +422,23 @@ Browsers keep sound blocked until the page has had a click, tap or key press. Fr
|
|
|
418
422
|
|
|
419
423
|
## Memory
|
|
420
424
|
|
|
421
|
-
|
|
425
|
+
Friend keeps what it knows about you as a **tree of small Markdown notes** in your data folder (`memory/`), not one long list. There is one entry point, `memory/INDEX.md`, and every folder has its own `INDEX.md` that lists what is inside. The program fixes no branch names: Friend makes the folders it wants (`family/`, `projects/friend/`, `trading/`, and deeper as a topic grows) and keeps every folder listed from the root, so everything can be found by walking down from the entry point.
|
|
426
|
+
|
|
427
|
+
- **What Friend reads.** Only the root index goes into each prompt (a few hundred tokens, however much memory there is). Friend opens a branch with `memory.read` when a question needs it, and finds notes by words with `memory.search`.
|
|
428
|
+
- **What Friend writes.** `memory.write` (a note at a path it chooses, folders made as needed), `memory.move` (group notes into sub-folders when a folder gets crowded) and `memory.forget`. A quick fact with no clear place goes to `inbox/` with `memory.remember`. Notes are short; a long one or a crowded folder is flagged so Friend splits it. A note is at most 6,000 characters, a path at most 6 folders deep, up to 2,000 notes.
|
|
429
|
+
- **Saving by itself.** Friend does not rely on remembering to call a memory tool. Once you have been quiet for a while (2 minutes by default, or after 8 turns in a row), a separate pass reads what was said, with the memory index and a few related notes, and decides what is worth keeping: facts you stated about yourself, family, work and habits, decisions, corrections, commitments and where your projects stand. Small talk, one-off questions, things easy to look up and anything from web pages or workers' reports is not kept. The pass prefers updating a related note over making a new one; when unsure it uses `inbox/`. The program, not the model, decides what is written: it checks every path, never keeps anything that looks like a password, PIN, key, card number or code, saves at most 6 notes per pass, and refuses an update that would shrink a note to almost nothing. A short line on screen says what was remembered ("Remembered: family/priya.md"), and every save is in the audit log. The very first time, it starts from the moment it is switched on, so an old conversation is not mined.
|
|
430
|
+
- **Kept in order by the AI.** Quick notes land in `inbox/`; a tidy pass (a little after Friend starts, after saving, or when you say "tidy my memory") lets the model file them into topic folders (`family/`, `work/`, `projects/friend/`, `preferences/` and so on, whatever the notes call for), give each a short title and a one-line summary, merge notes about the same subject, and link related notes to each other. A note's header lists the notes it relates to (`related: family/sarika.md`) and the page shows them as links under "Related". The model proposes; the program checks every path, keeps all text, and moves things through the tree so the indexes stay right. A link follows its note when the note moves and drops when the note is deleted.
|
|
431
|
+
- **Your control.** The notes are plain files: open and edit them with any editor, and a note you drop in by hand is listed the next time Friend starts. In the terminal: `friend memory list` (the tree), `friend memory show <path>`, `friend memory forget <path or number>` and `friend memory clear` (asks for the PIN). You can also say "forget what you know about Priya".
|
|
432
|
+
- **Your older notes.** The first time the tree starts, your older flat notes are copied once into `inbox/`; the old list is left untouched.
|
|
433
|
+
- **Settings** (Esc → Settings → **Memory**; changed by you with your PIN, never by Friend): `memory.enabled` (off means the older flat list of the 20 newest notes), `memory.maxIndexChars` (how much of the root index is shown every turn), `memory.autoSave` (`on` by default, or `off`), `memory.showSaved` (the "Remembered" line), `memory.autoTidy` (the tidy pass, on by default) and `memory.saveDelaySec` (how long you must be quiet before the pass runs, 10 to 3600 seconds).
|
|
434
|
+
- **Safety.** Notes are **data about you, never instructions**: text inside a note (or text a web page tricked the agent into saving) cannot change a setting or start work. Guests and unrecognized voices never see your notes. Friend never follows a link out of the folder, and is told never to save passwords, PINs or keys.
|
|
422
435
|
|
|
423
|
-
|
|
424
|
-
- You control all of it: `friend memory list`, `friend memory forget <number>`, `friend memory clear` (asks for the PIN). You can also just say "forget note 7".
|
|
425
|
-
- Notes are treated as **data about you, never as instructions**, so text inside a note (or text a web page tricked the agent into saving) cannot give the agent orders. Guests and unrecognized voices never see your notes. The agent is told never to save passwords, PINs or keys.
|
|
436
|
+
Next: a Memory screen to browse and edit notes, and a heartbeat that can start a conversation (see `docs/superpowers/specs/2026-10-24-friend-memory-and-heartbeat-design.md`).
|
|
426
437
|
|
|
427
438
|
## Plugins
|
|
428
439
|
|
|
440
|
+
**Day trader (India)** is a bundled plugin with ten skills (focus list, scan for setups, news, entry, exit, budget, risk, replay, analyst, smart money) and an exact sizing tool (`trade-plan`). It reads Indian market data through three built-in tools, `market.get` (candles, quotes, NSE announcements, results, insider trades, bulk and block deals, shareholding, top movers, most active, volume spurts), `market.scan` (finds opening-range breakouts and bounces across the market and ranks them) and `market.replay` (replays the rest of the session from the stock's own recent candles). Both use free public feeds (Yahoo Finance and the NSE, no key), follow the Web switch, and work in IST and rupees. Your limits (max loss, money, leverage) are asked each session, never assumed. It is analysis only: it never places an order, you place it in your broker app.
|
|
441
|
+
|
|
429
442
|
Plugins add **skills** (instructions the agent loads when they fit, for example "write my stand-up") and **tools** (small programs the agent can call, for example an exact unit converter). Three examples are bundled in `plugins/`: `unit-converter`, `standup-writer`, `rubber-duck`.
|
|
430
443
|
|
|
431
444
|
- Manage them from the screen (Esc, then **Plugins**) or the terminal: `friend plugin catalog | list | install <name|folder> | enable <id> | disable <id> | remove <id>`.
|
package/dist/BUILD.json
CHANGED