mu-agent 0.2.5 → 0.2.7
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/CHANGELOG.md +25 -0
- package/README.md +2 -1
- package/dist/bundle/chunks/{chunk-C4L65EFW.js → chunk-SJA6GZQX.js} +2 -2
- package/dist/bundle/chunks/{chunk-VPSGIO2O.js → chunk-Y4V36NDW.js} +1 -1
- package/dist/bundle/chunks/{virtual-modules-4BSUQTRT.js → virtual-modules-P3ZGSM7W.js} +1 -1
- package/dist/bundle/cli-runtime.js +1 -1
- package/dist/bundle/index.js +1 -1
- package/dist/bundle/rpc-entry.js +1 -1
- package/judge/dist/auth.js +1 -0
- package/judge/dist/mude.js +8 -4
- package/judge/dist/setup.js +124 -26
- package/judge/manifest.json +2 -2
- package/judge/mu/{chunk-JK2OO2CN.js → chunk-GELL4P7W.js} +1 -1
- package/judge/mu/{cloud-code-K5ONKXO7.js → cloud-code-CM6I6AXS.js} +1 -1
- package/judge/mu/index.js +1114 -789
- package/kyrn/bin/kyrn-doctor +22 -3
- package/kyrn/bin/mu.mjs +11 -7
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,31 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [0.2.7] - 2026-10-24
|
|
6
|
+
|
|
7
|
+
**0.2.7 adds OpenAI's decision model (`gpt-6-luna`, through the Decisions API) as a judge, and makes `gpt-6.1-sol` the `openai` provider's default model.**
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- The `openai` judge (type and built-in name): OpenAI's decision model, `gpt-6-luna`, through `POST /v1/decisions` ([Decisions API](https://developers.openai.com/api/docs/guides/decisions)). Yes/no questions go out as predicates with their criteria in the instructions, choices as choices and scores as levels; answers come back with their probabilities and confidence, and usage with the cached and cache-write input tokens (`cachedInputTokens`, `cacheWriteTokens` in the ledger). A refusal or a missing answer fails the call as with TypeSafe, so the next judge or the fallback answers, and HTTP 401, 403, 429 and 5xx are classified the same way. The key is `MU_JUDGE_OPENAI_KEY`. Without it, at OpenAI's own address, the judge takes the key of the `openai` model provider (auth.json or `OPENAI_API_KEY`), but not a Sign in with ChatGPT token, nor the key of an `openai` provider that models.json points elsewhere. With a `baseUrl` (a relay or proxy that serves the same Decisions endpoint), only the judge's own key goes there. The keys of other judge services are never sent to it, and `MU_JUDGE_OPENAI_KEY` and `OPENAI_API_KEY` never to TypeSafe.
|
|
12
|
+
- The `openai` judge checks a request against the API's limits before sending it (1–400 questions, 2–255 choices, 2–10 levels; `bad_request` otherwise, so the next judge answers), and exports the models the API serves (`OPENAI_DECISIONS_MODELS`, today `gpt-6-luna`). When it has no key (`missing`: signed out of OpenAI, or the key removed) or OpenAI answers 401, or a 403 not about billing (`rejected`), the session says so once: `judge.notice` with `code: "openai_key"` and `reason`, then the line.
|
|
13
|
+
- `mu setup` offers OpenAI's decision model in its judge step, and scripts use `--judge openai`: the OpenAI key mu has, or a key on stdin's second line, written to the .env as `MU_JUDGE_OPENAI_KEY`. `mu doctor` reports where its key comes from, and `/mu judge` lists `openai`.
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
|
|
17
|
+
- The `openai` provider's default model is `gpt-6.1-sol` (was `gpt-5.5`), as `openai-codex` and `github-copilot` already were; `mu setup` names it for an OpenAI key.
|
|
18
|
+
|
|
19
|
+
## [0.2.6] - 2026-10-24
|
|
20
|
+
|
|
21
|
+
**0.2.6 shows the note that Laya was replaced when a person sends a message, keeps mude 1.0 local only when it's installed again, and stops `mu doctor` failing on a machine without Chrome.**
|
|
22
|
+
|
|
23
|
+
### Fixed
|
|
24
|
+
|
|
25
|
+
- The `laya_removed` notice waits for a person. In 0.2.5 the desktop backend's health check of mu (a session that never gets a prompt) was the first session with a UI: it took Laya out of mu.json and got the notice about 3 s after the app started, so nobody saw it. mu.json still loses Laya at the first session start with a terminal or the desktop app, but the notice is now kept in `<agentDir>/mu/notices.json` (`layaRemoved: { judge, from }`) and said at the first message a person sends, in that session or a later one: `judge.notice`, then the line, and the entry is removed. pi's `input` event is that message; mu's own commands (`/goal`, `/permissions`, `/mu …`), which pi runs before it, and messages an extension sends don't count. A session that gets no message leaves the notice where it is, and `mu --print` and json mode still change nothing. `MU_JUDGE=laya` leaves the same notice at the start of each session that has it. The free Jev notice now writes its day beside other entries in notices.json instead of replacing the file. A mu.json that 0.2.5 already updated has no notice left to show.
|
|
26
|
+
- `mu judge mude install` without `--local-only` or `--with-fallback` keeps the current setting when mude 1.0 is already the judge (as `enable` does), instead of putting Jev back behind it.
|
|
27
|
+
- `mu judge model add`: a 401 without `HF_TOKEN` says the model doesn't exist or is private or gated, and to check the name, since Hugging Face answers both the same way.
|
|
28
|
+
- `mu doctor` and `/doctor` mark a missing Chrome, Chromium, Edge or Brave as optional (`--`) instead of something to fix, so `mu doctor` exits 0 when everything else is set up. `mu --help` lines fit in 100 columns.
|
|
29
|
+
|
|
5
30
|
## [0.2.5] - 2026-10-24
|
|
6
31
|
|
|
7
32
|
**0.2.5 removes Laya from mu's built-in judges. A configuration that still names it switches to mude 1.0 or Jev on its own.**
|
package/README.md
CHANGED
|
@@ -27,9 +27,10 @@ mu is built on [pi](https://github.com/earendil-works/pi). It hands the small qu
|
|
|
27
27
|
|
|
28
28
|
## Choose a judge
|
|
29
29
|
|
|
30
|
-
Out of the box, the judge is Jev 1.13, TypeSafe's hosted judge model, free on OpenCode Zen for a limited time and with no key needed. What it judges goes to OpenCode, which doesn't train on it, and mu reminds you of that once a day. To send nothing anywhere, run `mu setup --judge off` (or choose "Not now" when `mu setup` asks): no decision point asks a judge, and mu's features
|
|
30
|
+
Out of the box, the judge is Jev 1.13, TypeSafe's hosted judge model, free on OpenCode Zen for a limited time and with no key needed. What it judges goes to OpenCode, which doesn't train on it, and mu reminds you of that once a day. To send nothing anywhere, run `mu setup --judge off` (or choose "Not now" when `mu setup` asks): no decision point asks a judge, and mu's features fall back to their own rules. Or, on a Mac with Apple silicon, use mude 1.0 with `--local-only`.
|
|
31
31
|
|
|
32
32
|
- **Jev** (hosted): set `TYPESAFE_API_KEY` (TypeSafe), `MU_JUDGE_OPENROUTER_API_KEY` (Jev on OpenRouter), `AI_GATEWAY_API_KEY` (Vercel AI Gateway), `OPENCODE_API_KEY` (OpenCode Zen) or `CLOUDFLARE_API_KEY` with `CLOUDFLARE_ACCOUNT_ID` (Cloudflare Workers AI) in your environment, or add it to `~/.mu/.env` as `KEY=value`. `mu setup` asks for a key and writes it there. mu reads that file as data, never prints it and starts using the key automatically.
|
|
33
|
+
- **OpenAI's decision model**, `gpt-6-luna`, through OpenAI's Decisions API: `mu setup --judge openai`, or `/mu judge openai`. It uses `MU_JUDGE_OPENAI_KEY` (in your environment or `~/.mu/.env`), else the OpenAI API key mu already has for its `openai` provider. With a `baseUrl` (a relay or proxy that serves the same Decisions endpoint), only its own key is sent there.
|
|
33
34
|
- **Another classifier** from pi's catalog: `/mu judge classifier:<provider>/<model>`, for example Cloudflare's Clef (`clef`, `clef-flash`) or a System One model on OpenRouter, with that provider's key.
|
|
34
35
|
- **CLM** (self-hosted; its encoder needs a GPU): start `clm-serve` from [Contrastive-LM/CLM](https://github.com/Contrastive-LM/CLM), then run `/mu judge clm`. For a server on another machine, add `"judges": { "clm": { "type": "clm", "baseUrl": "http://<host>:8700" } }` to `~/.mu/agent/mu.json`. If the server was started with `CLM_API_KEY`, set the same value in `MU_JUDGE_CLM_API_KEY`. `mu doctor` checks the server.
|
|
35
36
|
- **mude 1.0** (local, a Mac with Apple silicon, macOS 14+), mu's own decision model, optimized for coding: `mu judge mude install` downloads it (1.8 GB), sets it up in `~/.mu/local-judge/mude`, starts its server on 127.0.0.1 and puts it first. What it can't answer goes to the judges you had before, which are hosted; `mu judge mude enable --local-only` keeps everything on your Mac. Its server uses about 4 GB of memory until `mu judge mude stop`.
|