🛟 Updated.
d8543e4 parent: 2d8407e modified
INSTALL.LINUX.md +1 -1 | @@ -2,7 +2,7 @@ | ||
| 2 | 2 | |
| 3 | 3 | ```bash |
| 4 | 4 | # download the binary release in https://rickub.com/bots-garden/mini-me/releases |
| 5 | -VERSION=1.0.2 | |
| 5 | +VERSION=1.0.3 | |
| 6 | 6 | case "$(uname -m)" in |
| 7 | 7 | x86_64) ARCH=amd64 ;; |
| 8 | 8 | aarch64|arm64) ARCH=arm64 ;; |
| @@ -2,7 +2,7 @@ | |||
| 2 | 2 | ||
| 3 | ```bash | 3 | ```bash |
| 4 | # download the binary release in https://rickub.com/bots-garden/mini-me/releases | 4 | # download the binary release in https://rickub.com/bots-garden/mini-me/releases |
| 5 | -VERSION=1.0.2 | 5 | +VERSION=1.0.3 |
| 6 | case "$(uname -m)" in | 6 | case "$(uname -m)" in |
| 7 | x86_64) ARCH=amd64 ;; | 7 | x86_64) ARCH=amd64 ;; |
| 8 | aarch64|arm64) ARCH=arm64 ;; | 8 | aarch64|arm64) ARCH=arm64 ;; |
modified
INSTALL.MACOS.md +1 -1 | @@ -2,7 +2,7 @@ | ||
| 2 | 2 | |
| 3 | 3 | ```bash |
| 4 | 4 | # download the binary release in https://rickub.com/bots-garden/mini-me/releases |
| 5 | -VERSION=1.0.2 | |
| 5 | +VERSION=1.0.3 | |
| 6 | 6 | curl -fsSLO "https://rickub.com/bots-garden/mini-me/releases/download/v${VERSION}/mm-${VERSION}-darwin-arm64" |
| 7 | 7 | chmod +x ./mm-${VERSION}-darwin-arm64 |
| 8 | 8 | xattr -cr ./mm-${VERSION}-darwin-arm64 |
| @@ -2,7 +2,7 @@ | |||
| 2 | 2 | ||
| 3 | ```bash | 3 | ```bash |
| 4 | # download the binary release in https://rickub.com/bots-garden/mini-me/releases | 4 | # download the binary release in https://rickub.com/bots-garden/mini-me/releases |
| 5 | -VERSION=1.0.2 | 5 | +VERSION=1.0.3 |
| 6 | curl -fsSLO "https://rickub.com/bots-garden/mini-me/releases/download/v${VERSION}/mm-${VERSION}-darwin-arm64" | 6 | curl -fsSLO "https://rickub.com/bots-garden/mini-me/releases/download/v${VERSION}/mm-${VERSION}-darwin-arm64" |
| 7 | chmod +x ./mm-${VERSION}-darwin-arm64 | 7 | chmod +x ./mm-${VERSION}-darwin-arm64 |
| 8 | xattr -cr ./mm-${VERSION}-darwin-arm64 | 8 | xattr -cr ./mm-${VERSION}-darwin-arm64 |
modified
INSTALL.WINDOWS.md +1 -1 | @@ -4,7 +4,7 @@ In PowerShell (no administrator rights needed): | ||
| 4 | 4 | |
| 5 | 5 | ```powershell |
| 6 | 6 | # download the binary release in https://rickub.com/bots-garden/mini-me/releases |
| 7 | -$Version = "1.0.2" | |
| 7 | +$Version = "1.0.3" | |
| 8 | 8 | $Arch = if ($env:PROCESSOR_ARCHITECTURE -eq "ARM64") { "arm64" } else { "amd64" } |
| 9 | 9 | $Asset = "mm-$Version-windows-$Arch.exe" |
| 10 | 10 | $Base = "https://rickub.com/bots-garden/mini-me/releases/download/v$Version" |
| @@ -4,7 +4,7 @@ In PowerShell (no administrator rights needed): | |||
| 4 | 4 | ||
| 5 | ```powershell | 5 | ```powershell |
| 6 | # download the binary release in https://rickub.com/bots-garden/mini-me/releases | 6 | # download the binary release in https://rickub.com/bots-garden/mini-me/releases |
| 7 | -$Version = "1.0.2" | 7 | +$Version = "1.0.3" |
| 8 | $Arch = if ($env:PROCESSOR_ARCHITECTURE -eq "ARM64") { "arm64" } else { "amd64" } | 8 | $Arch = if ($env:PROCESSOR_ARCHITECTURE -eq "ARM64") { "arm64" } else { "amd64" } |
| 9 | $Asset = "mm-$Version-windows-$Arch.exe" | 9 | $Asset = "mm-$Version-windows-$Arch.exe" |
| 10 | $Base = "https://rickub.com/bots-garden/mini-me/releases/download/v$Version" | 10 | $Base = "https://rickub.com/bots-garden/mini-me/releases/download/v$Version" |
modified
README.md +3 -2 | @@ -20,7 +20,7 @@ What makes Mini Me a bit special is that it was designed from the start to be us | ||
| 20 | 20 | |
| 21 | 21 | ## Install |
| 22 | 22 | |
| 23 | -You need Go 1.27+ and a model server that can emit tool calls, through its OpenAI-compatible API: Docker Model Runner (`provider: dmr`, the default), llama.cpp's `llama-server` (`llamacpp`), [llmman](https://github.com/llmmanorg/llmman) (`llmman`) or Ollama (`ollama`) — or any other OpenAI-compatible server with `provider: openai` (the OpenAI API by default, vLLM, LM Studio…). | |
| 23 | +You need Go 1.27+ and a model server that can emit tool calls, through its OpenAI-compatible API: Docker Model Runner (`provider: dmr`, the default), llama.cpp's `llama-server` (`llamacpp`), [llmman](https://github.com/llmmanorg/llmman) (`llmman`) or Ollama (`ollama`) — or any other OpenAI-compatible server or service with `provider: openai` (the OpenAI API by default, Mistral AI, Cerebras, Hugging Face, vLLM, LM Studio…: `mm init` asks its endpoint and the variable that holds its API key). | |
| 24 | 24 | |
| 25 | 25 | ```bash |
| 26 | 26 | git clone https://git.rickub.com/bots-garden/mini-me.git |
| @@ -107,7 +107,7 @@ Anything that speaks ACP can host `mm -acp` the same way: **JetBrains IDEs** (In | ||
| 107 | 107 | |
| 108 | 108 | ## More features |
| 109 | 109 | |
| 110 | -- **Create an agent**: `mm init` (or `mm --init`) asks which server, which model (from the server's list), what the agent is for and which machine runs it, then writes a commented agent.yaml — the model's facts read from the server (window, the GGUF's sampling, the reasoning switch), a family table sourced from model cards and the measured demos, every value with its reason; `--check` proves the model answers, flags make it scriptable. See [Create an agent with `mm init`](docs/en/how-to/create-an-agent.md). | |
| 110 | +- **Create an agent**: `mm init` (or `mm --init`) asks which server, which model (from the server's list), what the agent is for and which machine runs it, then writes a commented agent.yaml — the model's facts read from the server (window, the GGUF's sampling, the reasoning switch), a family table sourced from model cards and the measured demos, every value with its reason; `--check` proves the model answers, flags make it scriptable. For an OpenAI-compatible service (`openai`) it also asks the endpoint and the API key's variable, and lists the service's models when the key is set. See [Create an agent with `mm init`](docs/en/how-to/create-an-agent.md) and `demos/open-ai-compliant/`. | |
| 111 | 111 | - **One prompt and exit**: `mm -p "…"` — for scripts. See [Run a single prompt](docs/en/how-to/run-a-single-prompt.md). |
| 112 | 112 | - **Other agents**: list other mm agents under `mmConfigs`; you ask them with `/ask-<name>`, your agent calls them itself with its `ask_agent` tool, a script with `mm --ask <name>`. See [Let your agent call other agents](docs/en/how-to/let-the-agent-call-other-agents.md). |
| 113 | 113 | - **Questions to you**: the agent asks with its `ask_user` tool — pick one, pick several, type a text, yes or no — as numbered choices in the terminal, an arrow-key box in the window, a form or a dialog in an editor; a called agent's questions come up to you too. `askUserTool: false` turns it off. See [Let the agent ask you questions](docs/en/how-to/let-the-agent-ask-you.md). |
| @@ -148,6 +148,7 @@ The `demos/` directory holds ready-made set-ups (most with a README explaining h | ||
| 148 | 148 | | `demos/mini-mes/` | small teams of agents (`riker` coordinating a specifier and a coder, `gopher` a Go specialist) | |
| 149 | 149 | | `demos/little-coder/` | a Go + htmx web-app generator for a small local model (Mellum2 12B on llmman, 32 GB RAM): a tested starter, skills, `AGENTS.md`, measured results | |
| 150 | 150 | | `demos/team/` | a team of four agents (lead, specifier, coder, tester) on one small model (Ornith 1.5 9B on llmman) building Go + htmx apps through spec and test files, with measured results | |
| 151 | +| `demos/open-ai-compliant/` | `mm init` for OpenAI-compatible services: the steps, and agent files for OpenAI and Mistral AI (`baseUrl`, `apiKeyEnv: MISTRAL_API_KEY`) | | |
| 151 | 152 | | `demos/coding-helpers-unload-option/` | the same team as `demos/coding-helpers/` with `unloadModels: true` on its `mmConfigs` entries instead of unload hooks: the two models never in memory together, measured on llmman | |
| 152 | 153 | | `demos/auto-pull/` | `autoPull: true` with SmolLM2-135M: a model the server does not have is downloaded at start-up, with its progress; also a team, and a misspelt repository name | |
| 153 | 154 | | `demos/struggle-signals/` | a fake OpenAI-compatible server and `run-all.sh` that trigger every struggle signal (loop, failed calls, broken call, stalled, max turns, context full…) without a real model | |
| @@ -20,7 +20,7 @@ What makes Mini Me a bit special is that it was designed from the start to be us | |||
| 20 | 20 | ||
| 21 | ## Install | 21 | ## Install |
| 22 | 22 | ||
| 23 | -You need Go 1.27+ and a model server that can emit tool calls, through its OpenAI-compatible API: Docker Model Runner (`provider: dmr`, the default), llama.cpp's `llama-server` (`llamacpp`), [llmman](https://github.com/llmmanorg/llmman) (`llmman`) or Ollama (`ollama`) — or any other OpenAI-compatible server with `provider: openai` (the OpenAI API by default, vLLM, LM Studio…). | 23 | +You need Go 1.27+ and a model server that can emit tool calls, through its OpenAI-compatible API: Docker Model Runner (`provider: dmr`, the default), llama.cpp's `llama-server` (`llamacpp`), [llmman](https://github.com/llmmanorg/llmman) (`llmman`) or Ollama (`ollama`) — or any other OpenAI-compatible server or service with `provider: openai` (the OpenAI API by default, Mistral AI, Cerebras, Hugging Face, vLLM, LM Studio…: `mm init` asks its endpoint and the variable that holds its API key). |
| 24 | 24 | ||
| 25 | ```bash | 25 | ```bash |
| 26 | git clone https://git.rickub.com/bots-garden/mini-me.git | 26 | git clone https://git.rickub.com/bots-garden/mini-me.git |
| @@ -107,7 +107,7 @@ Anything that speaks ACP can host `mm -acp` the same way: **JetBrains IDEs** (In | |||
| 107 | 107 | ||
| 108 | ## More features | 108 | ## More features |
| 109 | 109 | ||
| 110 | -- **Create an agent**: `mm init` (or `mm --init`) asks which server, which model (from the server's list), what the agent is for and which machine runs it, then writes a commented agent.yaml — the model's facts read from the server (window, the GGUF's sampling, the reasoning switch), a family table sourced from model cards and the measured demos, every value with its reason; `--check` proves the model answers, flags make it scriptable. See [Create an agent with `mm init`](docs/en/how-to/create-an-agent.md). | 110 | +- **Create an agent**: `mm init` (or `mm --init`) asks which server, which model (from the server's list), what the agent is for and which machine runs it, then writes a commented agent.yaml — the model's facts read from the server (window, the GGUF's sampling, the reasoning switch), a family table sourced from model cards and the measured demos, every value with its reason; `--check` proves the model answers, flags make it scriptable. For an OpenAI-compatible service (`openai`) it also asks the endpoint and the API key's variable, and lists the service's models when the key is set. See [Create an agent with `mm init`](docs/en/how-to/create-an-agent.md) and `demos/open-ai-compliant/`. |
| 111 | - **One prompt and exit**: `mm -p "…"` — for scripts. See [Run a single prompt](docs/en/how-to/run-a-single-prompt.md). | 111 | - **One prompt and exit**: `mm -p "…"` — for scripts. See [Run a single prompt](docs/en/how-to/run-a-single-prompt.md). |
| 112 | - **Other agents**: list other mm agents under `mmConfigs`; you ask them with `/ask-<name>`, your agent calls them itself with its `ask_agent` tool, a script with `mm --ask <name>`. See [Let your agent call other agents](docs/en/how-to/let-the-agent-call-other-agents.md). | 112 | - **Other agents**: list other mm agents under `mmConfigs`; you ask them with `/ask-<name>`, your agent calls them itself with its `ask_agent` tool, a script with `mm --ask <name>`. See [Let your agent call other agents](docs/en/how-to/let-the-agent-call-other-agents.md). |
| 113 | - **Questions to you**: the agent asks with its `ask_user` tool — pick one, pick several, type a text, yes or no — as numbered choices in the terminal, an arrow-key box in the window, a form or a dialog in an editor; a called agent's questions come up to you too. `askUserTool: false` turns it off. See [Let the agent ask you questions](docs/en/how-to/let-the-agent-ask-you.md). | 113 | - **Questions to you**: the agent asks with its `ask_user` tool — pick one, pick several, type a text, yes or no — as numbered choices in the terminal, an arrow-key box in the window, a form or a dialog in an editor; a called agent's questions come up to you too. `askUserTool: false` turns it off. See [Let the agent ask you questions](docs/en/how-to/let-the-agent-ask-you.md). |
| @@ -148,6 +148,7 @@ The `demos/` directory holds ready-made set-ups (most with a README explaining h | |||
| 148 | | `demos/mini-mes/` | small teams of agents (`riker` coordinating a specifier and a coder, `gopher` a Go specialist) | | 148 | | `demos/mini-mes/` | small teams of agents (`riker` coordinating a specifier and a coder, `gopher` a Go specialist) | |
| 149 | | `demos/little-coder/` | a Go + htmx web-app generator for a small local model (Mellum2 12B on llmman, 32 GB RAM): a tested starter, skills, `AGENTS.md`, measured results | | 149 | | `demos/little-coder/` | a Go + htmx web-app generator for a small local model (Mellum2 12B on llmman, 32 GB RAM): a tested starter, skills, `AGENTS.md`, measured results | |
| 150 | | `demos/team/` | a team of four agents (lead, specifier, coder, tester) on one small model (Ornith 1.5 9B on llmman) building Go + htmx apps through spec and test files, with measured results | | 150 | | `demos/team/` | a team of four agents (lead, specifier, coder, tester) on one small model (Ornith 1.5 9B on llmman) building Go + htmx apps through spec and test files, with measured results | |
| 151 | +| `demos/open-ai-compliant/` | `mm init` for OpenAI-compatible services: the steps, and agent files for OpenAI and Mistral AI (`baseUrl`, `apiKeyEnv: MISTRAL_API_KEY`) | | ||
| 151 | | `demos/coding-helpers-unload-option/` | the same team as `demos/coding-helpers/` with `unloadModels: true` on its `mmConfigs` entries instead of unload hooks: the two models never in memory together, measured on llmman | | 152 | | `demos/coding-helpers-unload-option/` | the same team as `demos/coding-helpers/` with `unloadModels: true` on its `mmConfigs` entries instead of unload hooks: the two models never in memory together, measured on llmman | |
| 152 | | `demos/auto-pull/` | `autoPull: true` with SmolLM2-135M: a model the server does not have is downloaded at start-up, with its progress; also a team, and a misspelt repository name | | 153 | | `demos/auto-pull/` | `autoPull: true` with SmolLM2-135M: a model the server does not have is downloaded at start-up, with its progress; also a team, and a misspelt repository name | |
| 153 | | `demos/struggle-signals/` | a fake OpenAI-compatible server and `run-all.sh` that trigger every struggle signal (loop, failed calls, broken call, stalled, max turns, context full…) without a real model | | 154 | | `demos/struggle-signals/` | a fake OpenAI-compatible server and `run-all.sh` that trigger every struggle signal (loop, failed calls, broken call, stalled, max turns, context full…) without a real model | |
modified
release-notes/README.md +2 -1 | @@ -4,7 +4,8 @@ One note per tag, in English (`.en.md`) and French (`.fr.md`). Rebuilt on 2026-1 | ||
| 4 | 4 | |
| 5 | 5 | | Version | Date | Summary | | |
| 6 | 6 | |---|---|---|---| |
| 7 | -| [v1.0.2](v1.0.2.en.md) | not tagged yet | Use mini-me as a library from Node.js, test what a model can do with mini-me itself, and send OpenAI models only the sampling settings you wrote. | [FR](v1.0.2.fr.md) | | |
| 7 | +| [v1.0.3](v1.0.3.en.md) | not tagged yet | `mm init` writes agents for any OpenAI-compatible service — it asks the endpoint and the API key's variable, then lists the service's models or lets you type one — and its text answers can be edited with the arrow keys. | [FR](v1.0.3.fr.md) | | |
| 8 | +| [v1.0.2](v1.0.2.en.md) | 2026-10-26 | Use mini-me as a library from Node.js, test what a model can do with mini-me itself, and send OpenAI models only the sampling settings you wrote. | [FR](v1.0.2.fr.md) | | |
| 8 | 9 | | [v1.0.1](v1.0.1.en.md) | 2026-10-26 | Messages typed during an answer wait their turn, the window shows when the model struggles and how long an answer takes, models can be downloaded at start-up and take turns in memory during a hand-off, and deciders need no boilerplate. | [FR](v1.0.1.fr.md) | |
| 9 | 10 | | [v1.0.0](v1.0.0.en.md) | 2026-10-22 | Small decision models working for the agent — skill and tool routing, command triage, checks on what it reads — plus `/shell` in the window and `mm init` files that say where each number comes from. | [FR](v1.0.0.fr.md) | |
| 10 | 11 | | [v0.9.0](v0.9.0.en.md) | 2026-10-21 | Start an agent without writing its file, run your own tools and hooks as sandboxed WebAssembly modules, and talk to any OpenAI-compatible server. | [FR](v0.9.0.fr.md) | |
| @@ -4,7 +4,8 @@ One note per tag, in English (`.en.md`) and French (`.fr.md`). Rebuilt on 2026-1 | |||
| 4 | 4 | ||
| 5 | | Version | Date | Summary | | | 5 | | Version | Date | Summary | | |
| 6 | |---|---|---|---| | 6 | |---|---|---|---| |
| 7 | -| [v1.0.2](v1.0.2.en.md) | not tagged yet | Use mini-me as a library from Node.js, test what a model can do with mini-me itself, and send OpenAI models only the sampling settings you wrote. | [FR](v1.0.2.fr.md) | | 7 | +| [v1.0.3](v1.0.3.en.md) | not tagged yet | `mm init` writes agents for any OpenAI-compatible service — it asks the endpoint and the API key's variable, then lists the service's models or lets you type one — and its text answers can be edited with the arrow keys. | [FR](v1.0.3.fr.md) | |
| 8 | +| [v1.0.2](v1.0.2.en.md) | 2026-10-26 | Use mini-me as a library from Node.js, test what a model can do with mini-me itself, and send OpenAI models only the sampling settings you wrote. | [FR](v1.0.2.fr.md) | | ||
| 8 | | [v1.0.1](v1.0.1.en.md) | 2026-10-26 | Messages typed during an answer wait their turn, the window shows when the model struggles and how long an answer takes, models can be downloaded at start-up and take turns in memory during a hand-off, and deciders need no boilerplate. | [FR](v1.0.1.fr.md) | | 9 | | [v1.0.1](v1.0.1.en.md) | 2026-10-26 | Messages typed during an answer wait their turn, the window shows when the model struggles and how long an answer takes, models can be downloaded at start-up and take turns in memory during a hand-off, and deciders need no boilerplate. | [FR](v1.0.1.fr.md) | |
| 9 | | [v1.0.0](v1.0.0.en.md) | 2026-10-22 | Small decision models working for the agent — skill and tool routing, command triage, checks on what it reads — plus `/shell` in the window and `mm init` files that say where each number comes from. | [FR](v1.0.0.fr.md) | | 10 | | [v1.0.0](v1.0.0.en.md) | 2026-10-22 | Small decision models working for the agent — skill and tool routing, command triage, checks on what it reads — plus `/shell` in the window and `mm init` files that say where each number comes from. | [FR](v1.0.0.fr.md) | |
| 10 | | [v0.9.0](v0.9.0.en.md) | 2026-10-21 | Start an agent without writing its file, run your own tools and hooks as sandboxed WebAssembly modules, and talk to any OpenAI-compatible server. | [FR](v0.9.0.fr.md) | | 11 | | [v0.9.0](v0.9.0.en.md) | 2026-10-21 | Start an agent without writing its file, run your own tools and hooks as sandboxed WebAssembly modules, and talk to any OpenAI-compatible server. | [FR](v0.9.0.fr.md) | |
added
release-notes/v1.0.3.en.md +64 -0 | new file mode 100644 | ||
| @@ -0,0 +1,64 @@ | ||
| 1 | +# mini-me v1.0.3 | |
| 2 | + | |
| 3 | +*[Version française](v1.0.3.fr.md)* | |
| 4 | + | |
| 5 | +`mm init` writes agents for any OpenAI-compatible service — it asks the endpoint and the API key's variable, then lists the service's models or lets you type one — and its text answers can be edited with the arrow keys. | |
| 6 | + | |
| 7 | +## New | |
| 8 | + | |
| 9 | +### `mm init` for OpenAI-compatible services (#177) | |
| 10 | + | |
| 11 | +`provider: openai` is mm's way to any OpenAI-compatible service: OpenAI, Mistral AI, Cerebras, Hugging Face… `mm init` now treats it that way. | |
| 12 | + | |
| 13 | +- **Two more questions**, for `openai` only, between the server and the model: | |
| 14 | + - **the endpoint**, `https://api.openai.com/v1` by default (`--base-url`); | |
| 15 | + - **the environment variable that holds the API key**, `OPENAI_API_KEY` by default, or `MISTRAL_API_KEY`, `CEREBRAS_API_KEY`, `HF_TOKEN`… (new flag `--api-key-env`). | |
| 16 | +- **The model question depends on the key:** | |
| 17 | + - when the variable is set, it lists the service's models, asked with that key; | |
| 18 | + - when the variable is not set, nothing is requested and you type the model's ID. The question says why: `Model ID? (MISTRAL_API_KEY is not set: no list — type it)`. | |
| 19 | + - when the list is refused or times out, the question shows the error, in the window as in the line mode. Before, the window showed an empty list with no reason. | |
| 20 | +- **A longer wait for a remote list**: 20 s for `openai`, instead of 5 s. A user saw no model on a first `mm init` with OpenAI and the whole list on the second; a cold first connection is the likely cause (not reproduced). Local servers keep 5 s. | |
| 21 | +- **The written file**: | |
| 22 | + - `baseUrl` and `apiKeyEnv` when they are not the defaults; | |
| 23 | + - a comment naming the key's variable; | |
| 24 | + - a commented `reasoning_effort: none` in `sampling`. Uncomment it if the API answers "Function tools with reasoning_effort are not supported" (seen with `gpt-6-luna`): mm uses `/v1/chat/completions` and always sends tools. This turns the model's reasoning off. Keeping reasoning and tools together needs OpenAI's Responses API: ticket 178, not started. | |
| 25 | +- **Tried by the author with OpenAI and Mistral AI**: it works. Also checked against a local fake service: | |
| 26 | + - without the key, you type the ID; | |
| 27 | + - with the key, the models are listed; | |
| 28 | + - the written files load. | |
| 29 | + | |
| 30 | +### Text answers in the `mm init` window can be edited (#177) | |
| 31 | + | |
| 32 | +The endpoint, the key's variable, the agent's name and the file name are edited where the cursor is: | |
| 33 | + | |
| 34 | +- `←` `→` move the cursor, and typing inserts there; | |
| 35 | +- `Home` `End` (or `Ctrl-A` `Ctrl-E`) go to the start and the end; | |
| 36 | +- `Backspace` deletes before the cursor, `Delete` after it; | |
| 37 | +- `Ctrl-U` clears the answer. | |
| 38 | + | |
| 39 | +Before, you could only type or delete at the end. | |
| 40 | + | |
| 41 | +## Fixed | |
| 42 | + | |
| 43 | +- **`install.sh` failed when mm was not installed yet**: it removed `/usr/local/bin/mm` before building, and the missing file stopped the script. It now uses `rm -f`. | |
| 44 | + | |
| 45 | +## Demos | |
| 46 | + | |
| 47 | +- [`demos/open-ai-compliant/`](../demos/open-ai-compliant/README.md): the `mm init` steps and two agent files written that way, for OpenAI and for Mistral AI (`ministral-8b-2512`, with `apiKeyEnv: MISTRAL_API_KEY`). | |
| 48 | + | |
| 49 | +## Documentation | |
| 50 | + | |
| 51 | +- **[How to create an agent with `mm init`](../docs/en/how-to/create-an-agent.md)** (EN, FR): a variant for OpenAI-compatible services, and the editing keys of text answers. | |
| 52 | +- **[How to run with an OpenAI-compatible server](../docs/en/how-to/run-with-an-openai-compatible-server.md)** (EN, FR): what `mm init` asks for such a service, and a variant for "Function tools with reasoning_effort are not supported". | |
| 53 | +- **[Command line reference](../docs/en/reference/cli.md)** (EN, FR): the `--base-url`, `--api-key-env` and `--model` rows of `mm init`, and the window's keys. | |
| 54 | +- **Keyboard shortcuts of the window** ([EN](../guides/tui-keyboard-shortcuts.md), [FR](../guides/raccourcis-clavier-tui.md)): editing a text answer of `mm init`. | |
| 55 | +- **README**: | |
| 56 | + - links to the step-by-step install guides for macOS, Linux and Windows; | |
| 57 | + - seven entries the feature list was missing since v1.0.0: decision models, messages queued during an answer, struggle signals, `autoPull`, models taking turns in memory, using mm from another program, and testing a model; | |
| 58 | + - three demos added to the table. | |
| 59 | + | |
| 60 | +## Upgrading | |
| 61 | + | |
| 62 | +- **Nothing changes in how mm reads an agent file.** Files written by an earlier `mm init` load as they are. | |
| 63 | +- `mm init` with `openai` asks two more questions. In scripts, give them with `--base-url` and `--api-key-env`, or keep `--yes` to take the defaults: the OpenAI API, `OPENAI_API_KEY`. | |
| 64 | +- The correction for `provider: openai` sampling (#176) shipped in v1.0.2: see [its notes](v1.0.2.en.md). | |
| new file mode 100644 | |||
| @@ -0,0 +1,64 @@ | |||
| 1 | +# mini-me v1.0.3 | ||
| 2 | + | ||
| 3 | +*[Version française](v1.0.3.fr.md)* | ||
| 4 | + | ||
| 5 | +`mm init` writes agents for any OpenAI-compatible service — it asks the endpoint and the API key's variable, then lists the service's models or lets you type one — and its text answers can be edited with the arrow keys. | ||
| 6 | + | ||
| 7 | +## New | ||
| 8 | + | ||
| 9 | +### `mm init` for OpenAI-compatible services (#177) | ||
| 10 | + | ||
| 11 | +`provider: openai` is mm's way to any OpenAI-compatible service: OpenAI, Mistral AI, Cerebras, Hugging Face… `mm init` now treats it that way. | ||
| 12 | + | ||
| 13 | +- **Two more questions**, for `openai` only, between the server and the model: | ||
| 14 | + - **the endpoint**, `https://api.openai.com/v1` by default (`--base-url`); | ||
| 15 | + - **the environment variable that holds the API key**, `OPENAI_API_KEY` by default, or `MISTRAL_API_KEY`, `CEREBRAS_API_KEY`, `HF_TOKEN`… (new flag `--api-key-env`). | ||
| 16 | +- **The model question depends on the key:** | ||
| 17 | + - when the variable is set, it lists the service's models, asked with that key; | ||
| 18 | + - when the variable is not set, nothing is requested and you type the model's ID. The question says why: `Model ID? (MISTRAL_API_KEY is not set: no list — type it)`. | ||
| 19 | + - when the list is refused or times out, the question shows the error, in the window as in the line mode. Before, the window showed an empty list with no reason. | ||
| 20 | +- **A longer wait for a remote list**: 20 s for `openai`, instead of 5 s. A user saw no model on a first `mm init` with OpenAI and the whole list on the second; a cold first connection is the likely cause (not reproduced). Local servers keep 5 s. | ||
| 21 | +- **The written file**: | ||
| 22 | + - `baseUrl` and `apiKeyEnv` when they are not the defaults; | ||
| 23 | + - a comment naming the key's variable; | ||
| 24 | + - a commented `reasoning_effort: none` in `sampling`. Uncomment it if the API answers "Function tools with reasoning_effort are not supported" (seen with `gpt-6-luna`): mm uses `/v1/chat/completions` and always sends tools. This turns the model's reasoning off. Keeping reasoning and tools together needs OpenAI's Responses API: ticket 178, not started. | ||
| 25 | +- **Tried by the author with OpenAI and Mistral AI**: it works. Also checked against a local fake service: | ||
| 26 | + - without the key, you type the ID; | ||
| 27 | + - with the key, the models are listed; | ||
| 28 | + - the written files load. | ||
| 29 | + | ||
| 30 | +### Text answers in the `mm init` window can be edited (#177) | ||
| 31 | + | ||
| 32 | +The endpoint, the key's variable, the agent's name and the file name are edited where the cursor is: | ||
| 33 | + | ||
| 34 | +- `←` `→` move the cursor, and typing inserts there; | ||
| 35 | +- `Home` `End` (or `Ctrl-A` `Ctrl-E`) go to the start and the end; | ||
| 36 | +- `Backspace` deletes before the cursor, `Delete` after it; | ||
| 37 | +- `Ctrl-U` clears the answer. | ||
| 38 | + | ||
| 39 | +Before, you could only type or delete at the end. | ||
| 40 | + | ||
| 41 | +## Fixed | ||
| 42 | + | ||
| 43 | +- **`install.sh` failed when mm was not installed yet**: it removed `/usr/local/bin/mm` before building, and the missing file stopped the script. It now uses `rm -f`. | ||
| 44 | + | ||
| 45 | +## Demos | ||
| 46 | + | ||
| 47 | +- [`demos/open-ai-compliant/`](../demos/open-ai-compliant/README.md): the `mm init` steps and two agent files written that way, for OpenAI and for Mistral AI (`ministral-8b-2512`, with `apiKeyEnv: MISTRAL_API_KEY`). | ||
| 48 | + | ||
| 49 | +## Documentation | ||
| 50 | + | ||
| 51 | +- **[How to create an agent with `mm init`](../docs/en/how-to/create-an-agent.md)** (EN, FR): a variant for OpenAI-compatible services, and the editing keys of text answers. | ||
| 52 | +- **[How to run with an OpenAI-compatible server](../docs/en/how-to/run-with-an-openai-compatible-server.md)** (EN, FR): what `mm init` asks for such a service, and a variant for "Function tools with reasoning_effort are not supported". | ||
| 53 | +- **[Command line reference](../docs/en/reference/cli.md)** (EN, FR): the `--base-url`, `--api-key-env` and `--model` rows of `mm init`, and the window's keys. | ||
| 54 | +- **Keyboard shortcuts of the window** ([EN](../guides/tui-keyboard-shortcuts.md), [FR](../guides/raccourcis-clavier-tui.md)): editing a text answer of `mm init`. | ||
| 55 | +- **README**: | ||
| 56 | + - links to the step-by-step install guides for macOS, Linux and Windows; | ||
| 57 | + - seven entries the feature list was missing since v1.0.0: decision models, messages queued during an answer, struggle signals, `autoPull`, models taking turns in memory, using mm from another program, and testing a model; | ||
| 58 | + - three demos added to the table. | ||
| 59 | + | ||
| 60 | +## Upgrading | ||
| 61 | + | ||
| 62 | +- **Nothing changes in how mm reads an agent file.** Files written by an earlier `mm init` load as they are. | ||
| 63 | +- `mm init` with `openai` asks two more questions. In scripts, give them with `--base-url` and `--api-key-env`, or keep `--yes` to take the defaults: the OpenAI API, `OPENAI_API_KEY`. | ||
| 64 | +- The correction for `provider: openai` sampling (#176) shipped in v1.0.2: see [its notes](v1.0.2.en.md). | ||
added
release-notes/v1.0.3.fr.md +64 -0 | new file mode 100644 | ||
| @@ -0,0 +1,64 @@ | ||
| 1 | +# mini-me v1.0.3 | |
| 2 | + | |
| 3 | +*[English version](v1.0.3.en.md)* | |
| 4 | + | |
| 5 | +`mm init` écrit des agents pour n'importe quel service compatible OpenAI : il demande l'endpoint et la variable de la clé d'API, puis liste les modèles du service ou vous laisse en taper un. Ses réponses de texte se modifient avec les flèches. | |
| 6 | + | |
| 7 | +## Nouveautés | |
| 8 | + | |
| 9 | +### `mm init` pour les services compatibles OpenAI (#177) | |
| 10 | + | |
| 11 | +`provider: openai` est la porte de mm vers tout service compatible OpenAI : OpenAI, Mistral AI, Cerebras, Hugging Face… `mm init` le traite maintenant ainsi. | |
| 12 | + | |
| 13 | +- **Deux questions de plus**, pour `openai` seulement, entre le serveur et le modèle : | |
| 14 | + - **l'endpoint**, `https://api.openai.com/v1` par défaut (`--base-url`) ; | |
| 15 | + - **la variable d'environnement qui contient la clé d'API**, `OPENAI_API_KEY` par défaut, ou `MISTRAL_API_KEY`, `CEREBRAS_API_KEY`, `HF_TOKEN`… (nouvelle option `--api-key-env`). | |
| 16 | +- **La question du modèle dépend de la clé :** | |
| 17 | + - quand la variable est renseignée, elle liste les modèles du service, demandés avec cette clé ; | |
| 18 | + - quand la variable n'est pas renseignée, rien n'est demandé et vous tapez l'ID du modèle. La question dit pourquoi : `Model ID? (MISTRAL_API_KEY is not set: no list — type it)`. | |
| 19 | + - quand la liste est refusée ou trop lente, la question affiche l'erreur, dans la fenêtre comme en mode ligne. Avant, la fenêtre montrait une liste vide sans raison. | |
| 20 | +- **Une attente plus longue pour une liste distante** : 20 s pour `openai`, au lieu de 5 s. Un utilisateur ne voyait aucun modèle au premier `mm init` avec OpenAI, et toute la liste au second ; une première connexion « à froid » est la cause probable (non reproduite). Les serveurs locaux gardent 5 s. | |
| 21 | +- **Le fichier écrit** : | |
| 22 | + - `baseUrl` et `apiKeyEnv` quand ce ne sont pas les valeurs par défaut ; | |
| 23 | + - un commentaire qui nomme la variable de la clé ; | |
| 24 | + - un `reasoning_effort: none` en commentaire dans `sampling`. Décommentez-le si l'API répond « Function tools with reasoning_effort are not supported » (vu avec `gpt-6-luna`) : mm utilise `/v1/chat/completions` et envoie toujours des outils. Cela coupe le raisonnement du modèle. Garder raisonnement et outils ensemble demande l'API Responses d'OpenAI : ticket 178, pas commencé. | |
| 25 | +- **Essayé par l'auteur avec OpenAI et Mistral AI** : ça marche. Vérifié aussi contre un faux service local : | |
| 26 | + - sans la clé, on tape l'ID ; | |
| 27 | + - avec la clé, les modèles sont listés ; | |
| 28 | + - les fichiers écrits se chargent. | |
| 29 | + | |
| 30 | +### Les réponses de texte de la fenêtre de `mm init` se modifient (#177) | |
| 31 | + | |
| 32 | +L'endpoint, la variable de la clé, le nom de l'agent et le nom du fichier se modifient à l'endroit du curseur : | |
| 33 | + | |
| 34 | +- `←` `→` déplacent le curseur, et la saisie s'insère là ; | |
| 35 | +- `Début` `Fin` (ou `Ctrl-A` `Ctrl-E`) vont au début et à la fin ; | |
| 36 | +- `Retour arrière` efface avant le curseur, `Suppr` après ; | |
| 37 | +- `Ctrl-U` efface la réponse. | |
| 38 | + | |
| 39 | +Avant, on ne pouvait que taper ou effacer à la fin. | |
| 40 | + | |
| 41 | +## Corrections | |
| 42 | + | |
| 43 | +- **`install.sh` échouait quand mm n'était pas encore installé** : il supprimait `/usr/local/bin/mm` avant de compiler, et le fichier absent arrêtait le script. Il utilise maintenant `rm -f`. | |
| 44 | + | |
| 45 | +## Démos | |
| 46 | + | |
| 47 | +- [`demos/open-ai-compliant/`](../demos/open-ai-compliant/README.md) : les étapes de `mm init` et deux fichiers d'agent écrits ainsi, pour OpenAI et pour Mistral AI (`ministral-8b-2512`, avec `apiKeyEnv: MISTRAL_API_KEY`). | |
| 48 | + | |
| 49 | +## Documentation | |
| 50 | + | |
| 51 | +- **[Créer un agent avec `mm init`](../docs/fr/how-to/create-an-agent.md)** (FR, EN) : une variante pour les services compatibles OpenAI, et les touches d'édition des réponses de texte. | |
| 52 | +- **[Utiliser un serveur compatible OpenAI](../docs/fr/how-to/run-with-an-openai-compatible-server.md)** (FR, EN) : ce que demande `mm init` pour un tel service, et une variante pour « Function tools with reasoning_effort are not supported ». | |
| 53 | +- **[Référence de la ligne de commande](../docs/fr/reference/cli.md)** (FR, EN) : les lignes `--base-url`, `--api-key-env` et `--model` de `mm init`, et les touches de la fenêtre. | |
| 54 | +- **Raccourcis clavier de la fenêtre** ([FR](../guides/raccourcis-clavier-tui.md), [EN](../guides/tui-keyboard-shortcuts.md)) : modifier une réponse de texte de `mm init`. | |
| 55 | +- **README** : | |
| 56 | + - des liens vers les guides d'installation pas à pas pour macOS, Linux et Windows ; | |
| 57 | + - sept entrées qui manquaient dans la liste des fonctionnalités depuis v1.0.0 : modèles de décision, messages mis en file pendant une réponse, signaux de difficulté, `autoPull`, modèles qui se relaient en mémoire, utiliser mm depuis un autre programme, et tester un modèle ; | |
| 58 | + - trois démos ajoutées au tableau. | |
| 59 | + | |
| 60 | +## Mise à jour | |
| 61 | + | |
| 62 | +- **Rien ne change dans la lecture d'un fichier d'agent.** Les fichiers écrits par un `mm init` plus ancien se chargent tels quels. | |
| 63 | +- `mm init` avec `openai` pose deux questions de plus. Dans un script, donnez-les avec `--base-url` et `--api-key-env`, ou gardez `--yes` pour prendre les valeurs par défaut : l'API OpenAI, `OPENAI_API_KEY`. | |
| 64 | +- La correction du sampling de `provider: openai` (#176) est partie avec v1.0.2 : voir [ses notes](v1.0.2.fr.md). | |
| new file mode 100644 | |||
| @@ -0,0 +1,64 @@ | |||
| 1 | +# mini-me v1.0.3 | ||
| 2 | + | ||
| 3 | +*[English version](v1.0.3.en.md)* | ||
| 4 | + | ||
| 5 | +`mm init` écrit des agents pour n'importe quel service compatible OpenAI : il demande l'endpoint et la variable de la clé d'API, puis liste les modèles du service ou vous laisse en taper un. Ses réponses de texte se modifient avec les flèches. | ||
| 6 | + | ||
| 7 | +## Nouveautés | ||
| 8 | + | ||
| 9 | +### `mm init` pour les services compatibles OpenAI (#177) | ||
| 10 | + | ||
| 11 | +`provider: openai` est la porte de mm vers tout service compatible OpenAI : OpenAI, Mistral AI, Cerebras, Hugging Face… `mm init` le traite maintenant ainsi. | ||
| 12 | + | ||
| 13 | +- **Deux questions de plus**, pour `openai` seulement, entre le serveur et le modèle : | ||
| 14 | + - **l'endpoint**, `https://api.openai.com/v1` par défaut (`--base-url`) ; | ||
| 15 | + - **la variable d'environnement qui contient la clé d'API**, `OPENAI_API_KEY` par défaut, ou `MISTRAL_API_KEY`, `CEREBRAS_API_KEY`, `HF_TOKEN`… (nouvelle option `--api-key-env`). | ||
| 16 | +- **La question du modèle dépend de la clé :** | ||
| 17 | + - quand la variable est renseignée, elle liste les modèles du service, demandés avec cette clé ; | ||
| 18 | + - quand la variable n'est pas renseignée, rien n'est demandé et vous tapez l'ID du modèle. La question dit pourquoi : `Model ID? (MISTRAL_API_KEY is not set: no list — type it)`. | ||
| 19 | + - quand la liste est refusée ou trop lente, la question affiche l'erreur, dans la fenêtre comme en mode ligne. Avant, la fenêtre montrait une liste vide sans raison. | ||
| 20 | +- **Une attente plus longue pour une liste distante** : 20 s pour `openai`, au lieu de 5 s. Un utilisateur ne voyait aucun modèle au premier `mm init` avec OpenAI, et toute la liste au second ; une première connexion « à froid » est la cause probable (non reproduite). Les serveurs locaux gardent 5 s. | ||
| 21 | +- **Le fichier écrit** : | ||
| 22 | + - `baseUrl` et `apiKeyEnv` quand ce ne sont pas les valeurs par défaut ; | ||
| 23 | + - un commentaire qui nomme la variable de la clé ; | ||
| 24 | + - un `reasoning_effort: none` en commentaire dans `sampling`. Décommentez-le si l'API répond « Function tools with reasoning_effort are not supported » (vu avec `gpt-6-luna`) : mm utilise `/v1/chat/completions` et envoie toujours des outils. Cela coupe le raisonnement du modèle. Garder raisonnement et outils ensemble demande l'API Responses d'OpenAI : ticket 178, pas commencé. | ||
| 25 | +- **Essayé par l'auteur avec OpenAI et Mistral AI** : ça marche. Vérifié aussi contre un faux service local : | ||
| 26 | + - sans la clé, on tape l'ID ; | ||
| 27 | + - avec la clé, les modèles sont listés ; | ||
| 28 | + - les fichiers écrits se chargent. | ||
| 29 | + | ||
| 30 | +### Les réponses de texte de la fenêtre de `mm init` se modifient (#177) | ||
| 31 | + | ||
| 32 | +L'endpoint, la variable de la clé, le nom de l'agent et le nom du fichier se modifient à l'endroit du curseur : | ||
| 33 | + | ||
| 34 | +- `←` `→` déplacent le curseur, et la saisie s'insère là ; | ||
| 35 | +- `Début` `Fin` (ou `Ctrl-A` `Ctrl-E`) vont au début et à la fin ; | ||
| 36 | +- `Retour arrière` efface avant le curseur, `Suppr` après ; | ||
| 37 | +- `Ctrl-U` efface la réponse. | ||
| 38 | + | ||
| 39 | +Avant, on ne pouvait que taper ou effacer à la fin. | ||
| 40 | + | ||
| 41 | +## Corrections | ||
| 42 | + | ||
| 43 | +- **`install.sh` échouait quand mm n'était pas encore installé** : il supprimait `/usr/local/bin/mm` avant de compiler, et le fichier absent arrêtait le script. Il utilise maintenant `rm -f`. | ||
| 44 | + | ||
| 45 | +## Démos | ||
| 46 | + | ||
| 47 | +- [`demos/open-ai-compliant/`](../demos/open-ai-compliant/README.md) : les étapes de `mm init` et deux fichiers d'agent écrits ainsi, pour OpenAI et pour Mistral AI (`ministral-8b-2512`, avec `apiKeyEnv: MISTRAL_API_KEY`). | ||
| 48 | + | ||
| 49 | +## Documentation | ||
| 50 | + | ||
| 51 | +- **[Créer un agent avec `mm init`](../docs/fr/how-to/create-an-agent.md)** (FR, EN) : une variante pour les services compatibles OpenAI, et les touches d'édition des réponses de texte. | ||
| 52 | +- **[Utiliser un serveur compatible OpenAI](../docs/fr/how-to/run-with-an-openai-compatible-server.md)** (FR, EN) : ce que demande `mm init` pour un tel service, et une variante pour « Function tools with reasoning_effort are not supported ». | ||
| 53 | +- **[Référence de la ligne de commande](../docs/fr/reference/cli.md)** (FR, EN) : les lignes `--base-url`, `--api-key-env` et `--model` de `mm init`, et les touches de la fenêtre. | ||
| 54 | +- **Raccourcis clavier de la fenêtre** ([FR](../guides/raccourcis-clavier-tui.md), [EN](../guides/tui-keyboard-shortcuts.md)) : modifier une réponse de texte de `mm init`. | ||
| 55 | +- **README** : | ||
| 56 | + - des liens vers les guides d'installation pas à pas pour macOS, Linux et Windows ; | ||
| 57 | + - sept entrées qui manquaient dans la liste des fonctionnalités depuis v1.0.0 : modèles de décision, messages mis en file pendant une réponse, signaux de difficulté, `autoPull`, modèles qui se relaient en mémoire, utiliser mm depuis un autre programme, et tester un modèle ; | ||
| 58 | + - trois démos ajoutées au tableau. | ||
| 59 | + | ||
| 60 | +## Mise à jour | ||
| 61 | + | ||
| 62 | +- **Rien ne change dans la lecture d'un fichier d'agent.** Les fichiers écrits par un `mm init` plus ancien se chargent tels quels. | ||
| 63 | +- `mm init` avec `openai` pose deux questions de plus. Dans un script, donnez-les avec `--base-url` et `--api-key-env`, ou gardez `--yes` pour prendre les valeurs par défaut : l'API OpenAI, `OPENAI_API_KEY`. | ||
| 64 | +- La correction du sampling de `provider: openai` (#176) est partie avec v1.0.2 : voir [ses notes](v1.0.2.fr.md). | ||