bots-garden/mini-mepublic Fork
⑂ e019565
Commits
⬇ Clone ▾
git clone https://git.rickub.com/bots-garden/mini-me.git
git clone ssh://git@rickub.com/bots-garden/mini-me.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

Download ZIP

🛟 Updated.

k33g committed 2026-11-14T08:26:03+01:00 Browse files
e019565 parent: b2739ab
modified .tickets/issues/0210-acp-create-mode-mm-acp-create-mm-init-from-an-acp.yaml +16 -3
@@ -1,12 +1,12 @@
11 # Managed by IssueSpec. Hand edits are welcome; keep the schema valid.
22 id: 210
33 title: "ACP create mode (mm --acp-create): mm init from an ACP client"
4-state: open
4+state: closed
55 author:
66 name: k33g
77 email: ph.charriere@gmail.com
88 createdAt: 2026-11-14T05:41:20.000Z
9-updatedAt: 2026-11-14T07:05:01.000Z
9+updatedAt: 2026-11-14T07:20:30.000Z
1010 labels:
1111 - enhancement
1212 - kind::feature
@@ -119,12 +119,14 @@ body: |
119119 tasks:
120120 - id: 1
121121 title: Spike — which ACP clients (Zed, JetBrains, Neovim plugins…) support elicitation forms, permission dialogs, session config options
122- state: open
122+ state: closed
123123 priority: high
124124 author:
125125 name: k33g
126126 email: ph.charriere@gmail.com
127127 createdAt: 2026-11-14T05:41:20.000Z
128+ updatedAt: 2026-11-14T07:20:30.000Z
129+ closedAt: 2026-11-14T07:20:30.000Z
128130 - id: 2
129131 title: Entry point mm --acp-create / mm acp-create, before config load
130132 state: closed
@@ -296,3 +298,14 @@ comments:
296298 `internal/acp/persist.go` (`startOver`), tests
297299 `TestReloadWithoutSessionsStartsOver`, docs `reference/acp.md` and
298300 `how-to/use-from-an-editor.md` EN+FR.
301+ - id: 5
302+ author:
303+ name: k33g
304+ email: ph.charriere@gmail.com
305+ createdAt: 2026-11-14T07:20:30.000Z
306+ body: |
307+ Merged into main (b2739ab, commit 4d19a27). Closed. Task 1: tried
308+ in Zed by the user, who reported everything works (wizard, /start,
309+ /dockerinit, /sbxinit, /zedconfig, reload). Not tried in a second
310+ ACP client, nor with a client that shows forms: the form path is
311+ covered by tests with a fake client only.
@@ -1,12 +1,12 @@
1 # Managed by IssueSpec. Hand edits are welcome; keep the schema valid.1 # Managed by IssueSpec. Hand edits are welcome; keep the schema valid.
2 id: 2102 id: 210
3 title: "ACP create mode (mm --acp-create): mm init from an ACP client"3 title: "ACP create mode (mm --acp-create): mm init from an ACP client"
4-state: open4+state: closed
5 author:5 author:
6 name: k33g6 name: k33g
7 email: ph.charriere@gmail.com7 email: ph.charriere@gmail.com
8 createdAt: 2026-11-14T05:41:20.000Z8 createdAt: 2026-11-14T05:41:20.000Z
9-updatedAt: 2026-11-14T07:05:01.000Z9+updatedAt: 2026-11-14T07:20:30.000Z
10 labels:10 labels:
11 - enhancement11 - enhancement
12 - kind::feature12 - kind::feature
@@ -119,12 +119,14 @@ body: |
119 tasks:119 tasks:
120 - id: 1120 - id: 1
121 title: Spike — which ACP clients (Zed, JetBrains, Neovim plugins…) support elicitation forms, permission dialogs, session config options121 title: Spike — which ACP clients (Zed, JetBrains, Neovim plugins…) support elicitation forms, permission dialogs, session config options
122- state: open122+ state: closed
123 priority: high123 priority: high
124 author:124 author:
125 name: k33g125 name: k33g
126 email: ph.charriere@gmail.com126 email: ph.charriere@gmail.com
127 createdAt: 2026-11-14T05:41:20.000Z127 createdAt: 2026-11-14T05:41:20.000Z
128+ updatedAt: 2026-11-14T07:20:30.000Z
129+ closedAt: 2026-11-14T07:20:30.000Z
128 - id: 2130 - id: 2
129 title: Entry point mm --acp-create / mm acp-create, before config load131 title: Entry point mm --acp-create / mm acp-create, before config load
130 state: closed132 state: closed
@@ -296,3 +298,14 @@ comments:
296 `internal/acp/persist.go` (`startOver`), tests298 `internal/acp/persist.go` (`startOver`), tests
297 `TestReloadWithoutSessionsStartsOver`, docs `reference/acp.md` and299 `TestReloadWithoutSessionsStartsOver`, docs `reference/acp.md` and
298 `how-to/use-from-an-editor.md` EN+FR.300 `how-to/use-from-an-editor.md` EN+FR.
301+ - id: 5
302+ author:
303+ name: k33g
304+ email: ph.charriere@gmail.com
305+ createdAt: 2026-11-14T07:20:30.000Z
306+ body: |
307+ Merged into main (b2739ab, commit 4d19a27). Closed. Task 1: tried
308+ in Zed by the user, who reported everything works (wizard, /start,
309+ /dockerinit, /sbxinit, /zedconfig, reload). Not tried in a second
310+ ACP client, nor with a client that shows forms: the form path is
311+ covered by tests with a fake client only.
modified .tickets/issues/0212-mm-dockerinit-know-the-mm-folder-project-layout.yaml +9 -2
@@ -1,12 +1,12 @@
11 # Managed by IssueSpec. Hand edits are welcome; keep the schema valid.
22 id: 212
33 title: "mm dockerinit: know the .mm folder (Project layout), as mm sbxinit does"
4-state: open
4+state: closed
55 author:
66 name: k33g
77 email: ph.charriere@gmail.com
88 createdAt: 2026-11-14T06:29:41.000Z
9-updatedAt: 2026-11-14T06:37:57.000Z
9+updatedAt: 2026-11-14T07:20:30.000Z
1010 labels:
1111 - enhancement
1212 - kind::feature
@@ -161,3 +161,10 @@ comments:
161161 sbxenv.yaml comments).
162162 updatedAt: 2026-11-14T06:37:57.000Z
163163 closedAt: 2026-11-14T06:37:57.000Z
164+ - id: 2
165+ author:
166+ name: k33g
167+ email: ph.charriere@gmail.com
168+ createdAt: 2026-11-14T07:20:30.000Z
169+ body: |
170+ Merged into main (b2739ab, commit 4d19a27). Closed.
@@ -1,12 +1,12 @@
1 # Managed by IssueSpec. Hand edits are welcome; keep the schema valid.1 # Managed by IssueSpec. Hand edits are welcome; keep the schema valid.
2 id: 2122 id: 212
3 title: "mm dockerinit: know the .mm folder (Project layout), as mm sbxinit does"3 title: "mm dockerinit: know the .mm folder (Project layout), as mm sbxinit does"
4-state: open4+state: closed
5 author:5 author:
6 name: k33g6 name: k33g
7 email: ph.charriere@gmail.com7 email: ph.charriere@gmail.com
8 createdAt: 2026-11-14T06:29:41.000Z8 createdAt: 2026-11-14T06:29:41.000Z
9-updatedAt: 2026-11-14T06:37:57.000Z9+updatedAt: 2026-11-14T07:20:30.000Z
10 labels:10 labels:
11 - enhancement11 - enhancement
12 - kind::feature12 - kind::feature
@@ -161,3 +161,10 @@ comments:
161 sbxenv.yaml comments).161 sbxenv.yaml comments).
162 updatedAt: 2026-11-14T06:37:57.000Z162 updatedAt: 2026-11-14T06:37:57.000Z
163 closedAt: 2026-11-14T06:37:57.000Z163 closedAt: 2026-11-14T06:37:57.000Z
164+ - id: 2
165+ author:
166+ name: k33g
167+ email: ph.charriere@gmail.com
168+ createdAt: 2026-11-14T07:20:30.000Z
169+ body: |
170+ Merged into main (b2739ab, commit 4d19a27). Closed.
added .tickets/issues/0213-mm-acp-create-a-skillcreate-command-mm-skillcrea.yaml +140 -0
new file mode 100644
@@ -0,0 +1,140 @@
1+# Managed by IssueSpec. Hand edits are welcome; keep the schema valid.
2+id: 213
3+title: "mm acp-create: a /skillcreate command (mm skillcreate from the editor)"
4+state: open
5+author:
6+ name: k33g
7+ email: ph.charriere@gmail.com
8+createdAt: 2026-11-14T07:25:21.000Z
9+updatedAt: 2026-11-14T07:25:21.000Z
10+labels:
11+ - enhancement
12+ - kind::feature
13+milestone: v1.1.0
14+epic: ACP Create
15+related:
16+ - 210
17+ - 206
18+body: |
19+ Add to `mm acp-create`
20+ ([#210](.tickets/issues/0210-acp-create-mode-mm-acp-create-mm-init-from-an-acp.yaml))
21+ a `/skillcreate` command that does what `mm skillcreate`
22+ ([#206](.tickets/issues/0206-mm-skillcreate-a-wizard-that-writes-a-new-skill.yaml))
23+ does in a terminal: ask the skill's name, description, keywords and text,
24+ then write `<skillsDir>/<name>/SKILL.md` where the project's agent reads
25+ its skills — from Zed or any ACP client.
26+
27+ ## What exists (read 2026-11-14)
28+
29+ - `internal/skillcreate` already separates the wizard's state from its
30+ display: `skillcreate.Flow` exposes `Steps`, `Pending`, `Step`, `Set`,
31+ `Unset`, `Preview`, `Result`, with the **same `agentinit.Step` type** as
32+ `mm init` — the line mode and the window both drive it.
33+ - Questions: `name`, `overwrite` (only when the skill exists), `description`,
34+ `keywords` (optional, `-` = none), `body` (multi-line, always last).
35+ - `internal/acpcreate` already asks `agentinit.Step`s in both modes
36+ (forms when the client advertises `elicitation.form`, one message per
37+ question otherwise) — the same machinery can ask the skill's questions.
38+
39+ ## What has to change
40+
41+ - **Where the skill goes, for a given directory.** `skillcreate.Locate`
42+ calls `config.Load`, which fills the global `config.Cfg`, and reads
43+ `.mm` and a relative `skillsDir` from the process's working directory.
44+ In ACP the project is the session's `cwd`, and several sessions may run:
45+ a variant that takes the project directory and returns the place
46+ without touching the global settings (agent file found as mm finds it:
47+ `agent.yaml`, then `.mm/agent.yaml`; its `skillsDir`; no agent or
48+ `skillsDir: no-skills` → `.mm/skills` when `.mm/` exists, else `skills`,
49+ with the note saying which `skillsDir` to set).
50+ - **One session, two wizards.** The session drives an
51+ `agentinit.Flow` today. It should drive any flow with that shape (a small
52+ interface), so that conversation mode, forms, `/back` and `/preview`
53+ work for the skill too.
54+ - **The text (`body`).** Conversation mode: the reply message is the
55+ text, several lines included — a natural fit. Forms: a string field;
56+ whether clients offer a multi-line input there is unknown (no JSON
57+ Schema hint for it) — check, or ask the text as a message even in form
58+ mode.
59+
60+ ## Behaviour
61+
62+ - `/skillcreate [--name …] [--description …] [--keywords …]`: the flags
63+ of `mm skillcreate` as given answers (no `--yes`, `--line`, `--config`:
64+ the agent file is the project's). Works at any time, agent file or not.
65+ - An existing skill: the `overwrite` question, as in the terminal (it can
66+ be asked here, unlike the files of `/dockerinit`).
67+ - At the end: `✅ wrote <path>`, the skill read back with mm's own loader
68+ (`skillcreate.Verify`), the `skillsDir` note when there is one, and a
69+ reminder that a running agent sees the new skill after a reload (the
70+ catalogue is read at start-up).
71+ - `/preview` shows the `SKILL.md` as it stands, `/back` takes back an
72+ answer, `/restart` starts the skill over.
73+
74+ ## Open decision
75+
76+ `/skillcreate` while the agent wizard is half way through: refuse
77+ ("finish or `/restart` first"), or run the skill wizard and come back to
78+ the agent's next question afterwards (answers kept). Proposal: come back —
79+ the two wizards write different files.
80+
81+ ## Acceptance criteria
82+
83+ - In a project made with `mm init --project yes --skills yes`,
84+ `/skillcreate` writes `.mm/skills/<name>/SKILL.md`, byte for byte what
85+ `mm skillcreate` writes with the same answers; mm reads it back.
86+ - Conversation mode and form mode both tested with the fake client; the
87+ text keeps its line breaks.
88+ - The global settings are untouched after a `/skillcreate` (two sessions
89+ in two projects do not see each other's `skillsDir`).
90+ - Docs EN+FR.
91+tasks:
92+ - id: 1
93+ title: Locate the skills directory for a given project directory, without loading the config into the global settings
94+ state: open
95+ priority: high
96+ author:
97+ name: k33g
98+ email: ph.charriere@gmail.com
99+ createdAt: 2026-11-14T07:25:21.000Z
100+ - id: 2
101+ title: Let the acp-create session drive either flow (agent or skill) - one interface over agentinit.Flow and skillcreate.Flow
102+ state: open
103+ priority: high
104+ author:
105+ name: k33g
106+ email: ph.charriere@gmail.com
107+ createdAt: 2026-11-14T07:25:21.000Z
108+ - id: 3
109+ title: /skillcreate command - flags as given answers, conversation mode and forms, multi-line text
110+ state: open
111+ priority: medium
112+ author:
113+ name: k33g
114+ email: ph.charriere@gmail.com
115+ createdAt: 2026-11-14T07:25:21.000Z
116+ - id: 4
117+ title: End message - written path, mm reads it back, the skillsDir note, reload the agent to see the skill
118+ state: open
119+ priority: medium
120+ author:
121+ name: k33g
122+ email: ph.charriere@gmail.com
123+ createdAt: 2026-11-14T07:25:21.000Z
124+ - id: 5
125+ title: Tests with the fake client - same SKILL.md as mm skillcreate with the same answers, both modes
126+ state: open
127+ priority: medium
128+ author:
129+ name: k33g
130+ email: ph.charriere@gmail.com
131+ createdAt: 2026-11-14T07:25:21.000Z
132+ - id: 6
133+ title: Docs EN+FR - how-to create-an-agent-from-an-editor, cli.md acp-create section
134+ state: open
135+ priority: medium
136+ author:
137+ name: k33g
138+ email: ph.charriere@gmail.com
139+ createdAt: 2026-11-14T07:25:21.000Z
140+comments: []
new file mode 100644
@@ -0,0 +1,140 @@
1+# Managed by IssueSpec. Hand edits are welcome; keep the schema valid.
2+id: 213
3+title: "mm acp-create: a /skillcreate command (mm skillcreate from the editor)"
4+state: open
5+author:
6+ name: k33g
7+ email: ph.charriere@gmail.com
8+createdAt: 2026-11-14T07:25:21.000Z
9+updatedAt: 2026-11-14T07:25:21.000Z
10+labels:
11+ - enhancement
12+ - kind::feature
13+milestone: v1.1.0
14+epic: ACP Create
15+related:
16+ - 210
17+ - 206
18+body: |
19+ Add to `mm acp-create`
20+ ([#210](.tickets/issues/0210-acp-create-mode-mm-acp-create-mm-init-from-an-acp.yaml))
21+ a `/skillcreate` command that does what `mm skillcreate`
22+ ([#206](.tickets/issues/0206-mm-skillcreate-a-wizard-that-writes-a-new-skill.yaml))
23+ does in a terminal: ask the skill's name, description, keywords and text,
24+ then write `<skillsDir>/<name>/SKILL.md` where the project's agent reads
25+ its skills — from Zed or any ACP client.
26+
27+ ## What exists (read 2026-11-14)
28+
29+ - `internal/skillcreate` already separates the wizard's state from its
30+ display: `skillcreate.Flow` exposes `Steps`, `Pending`, `Step`, `Set`,
31+ `Unset`, `Preview`, `Result`, with the **same `agentinit.Step` type** as
32+ `mm init` — the line mode and the window both drive it.
33+ - Questions: `name`, `overwrite` (only when the skill exists), `description`,
34+ `keywords` (optional, `-` = none), `body` (multi-line, always last).
35+ - `internal/acpcreate` already asks `agentinit.Step`s in both modes
36+ (forms when the client advertises `elicitation.form`, one message per
37+ question otherwise) — the same machinery can ask the skill's questions.
38+
39+ ## What has to change
40+
41+ - **Where the skill goes, for a given directory.** `skillcreate.Locate`
42+ calls `config.Load`, which fills the global `config.Cfg`, and reads
43+ `.mm` and a relative `skillsDir` from the process's working directory.
44+ In ACP the project is the session's `cwd`, and several sessions may run:
45+ a variant that takes the project directory and returns the place
46+ without touching the global settings (agent file found as mm finds it:
47+ `agent.yaml`, then `.mm/agent.yaml`; its `skillsDir`; no agent or
48+ `skillsDir: no-skills` → `.mm/skills` when `.mm/` exists, else `skills`,
49+ with the note saying which `skillsDir` to set).
50+ - **One session, two wizards.** The session drives an
51+ `agentinit.Flow` today. It should drive any flow with that shape (a small
52+ interface), so that conversation mode, forms, `/back` and `/preview`
53+ work for the skill too.
54+ - **The text (`body`).** Conversation mode: the reply message is the
55+ text, several lines included — a natural fit. Forms: a string field;
56+ whether clients offer a multi-line input there is unknown (no JSON
57+ Schema hint for it) — check, or ask the text as a message even in form
58+ mode.
59+
60+ ## Behaviour
61+
62+ - `/skillcreate [--name …] [--description …] [--keywords …]`: the flags
63+ of `mm skillcreate` as given answers (no `--yes`, `--line`, `--config`:
64+ the agent file is the project's). Works at any time, agent file or not.
65+ - An existing skill: the `overwrite` question, as in the terminal (it can
66+ be asked here, unlike the files of `/dockerinit`).
67+ - At the end: `✅ wrote <path>`, the skill read back with mm's own loader
68+ (`skillcreate.Verify`), the `skillsDir` note when there is one, and a
69+ reminder that a running agent sees the new skill after a reload (the
70+ catalogue is read at start-up).
71+ - `/preview` shows the `SKILL.md` as it stands, `/back` takes back an
72+ answer, `/restart` starts the skill over.
73+
74+ ## Open decision
75+
76+ `/skillcreate` while the agent wizard is half way through: refuse
77+ ("finish or `/restart` first"), or run the skill wizard and come back to
78+ the agent's next question afterwards (answers kept). Proposal: come back —
79+ the two wizards write different files.
80+
81+ ## Acceptance criteria
82+
83+ - In a project made with `mm init --project yes --skills yes`,
84+ `/skillcreate` writes `.mm/skills/<name>/SKILL.md`, byte for byte what
85+ `mm skillcreate` writes with the same answers; mm reads it back.
86+ - Conversation mode and form mode both tested with the fake client; the
87+ text keeps its line breaks.
88+ - The global settings are untouched after a `/skillcreate` (two sessions
89+ in two projects do not see each other's `skillsDir`).
90+ - Docs EN+FR.
91+tasks:
92+ - id: 1
93+ title: Locate the skills directory for a given project directory, without loading the config into the global settings
94+ state: open
95+ priority: high
96+ author:
97+ name: k33g
98+ email: ph.charriere@gmail.com
99+ createdAt: 2026-11-14T07:25:21.000Z
100+ - id: 2
101+ title: Let the acp-create session drive either flow (agent or skill) - one interface over agentinit.Flow and skillcreate.Flow
102+ state: open
103+ priority: high
104+ author:
105+ name: k33g
106+ email: ph.charriere@gmail.com
107+ createdAt: 2026-11-14T07:25:21.000Z
108+ - id: 3
109+ title: /skillcreate command - flags as given answers, conversation mode and forms, multi-line text
110+ state: open
111+ priority: medium
112+ author:
113+ name: k33g
114+ email: ph.charriere@gmail.com
115+ createdAt: 2026-11-14T07:25:21.000Z
116+ - id: 4
117+ title: End message - written path, mm reads it back, the skillsDir note, reload the agent to see the skill
118+ state: open
119+ priority: medium
120+ author:
121+ name: k33g
122+ email: ph.charriere@gmail.com
123+ createdAt: 2026-11-14T07:25:21.000Z
124+ - id: 5
125+ title: Tests with the fake client - same SKILL.md as mm skillcreate with the same answers, both modes
126+ state: open
127+ priority: medium
128+ author:
129+ name: k33g
130+ email: ph.charriere@gmail.com
131+ createdAt: 2026-11-14T07:25:21.000Z
132+ - id: 6
133+ title: Docs EN+FR - how-to create-an-agent-from-an-editor, cli.md acp-create section
134+ state: open
135+ priority: medium
136+ author:
137+ name: k33g
138+ email: ph.charriere@gmail.com
139+ createdAt: 2026-11-14T07:25:21.000Z
140+comments: []
modified .tickets/milestones.yaml +1 -1
@@ -63,7 +63,7 @@ milestones:
6363 - title: v1.0.8
6464 state: closed
6565 - title: v1.0.9
66- state: open
66+ state: closed
6767 dueOn: 2026-11-18
6868 - title: v1.1.0
6969 state: open
@@ -63,7 +63,7 @@ milestones:
63 - title: v1.0.863 - title: v1.0.8
64 state: closed64 state: closed
65 - title: v1.0.965 - title: v1.0.9
66- state: open66+ state: closed
67 dueOn: 2026-11-1867 dueOn: 2026-11-18
68 - title: v1.1.068 - title: v1.1.0
69 state: open69 state: open
modified INSTALL.LINUX.md +1 -1
@@ -2,7 +2,7 @@
22
33 ```bash
44 # download the binary release in https://rickub.com/bots-garden/mini-me/releases
5-VERSION=1.0.8
5+VERSION=1.0.9
66 case "$(uname -m)" in
77 x86_64) ARCH=amd64 ;;
88 aarch64|arm64) ARCH=arm64 ;;
@@ -2,7 +2,7 @@
2 2
3 ```bash3 ```bash
4 # download the binary release in https://rickub.com/bots-garden/mini-me/releases4 # download the binary release in https://rickub.com/bots-garden/mini-me/releases
5-VERSION=1.0.85+VERSION=1.0.9
6 case "$(uname -m)" in6 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 +4 -4
@@ -2,7 +2,7 @@
22
33 Short version:
44 ```bash
5-VERSION=1.0.8
5+VERSION=1.0.9
66 curl -fsSLO "https://rickub.com/bots-garden/mini-me/releases/download/v${VERSION}/mm-${VERSION}-darwin-arm64"
77 chmod +x ./mm-${VERSION}-darwin-arm64
88 sudo rm -f /usr/local/bin/mm
@@ -14,7 +14,7 @@ From v1.0.5, the macOS binary is signed with a Developer ID and notarized by App
1414
1515 ```bash
1616 # download the binary release in https://rickub.com/bots-garden/mini-me/releases
17-VERSION=1.0.8
17+VERSION=1.0.9
1818 curl -fsSLO "https://rickub.com/bots-garden/mini-me/releases/download/v${VERSION}/mm-${VERSION}-darwin-arm64"
1919
2020 # optional: check the download against the release's checksums
@@ -34,8 +34,8 @@ mm --version
3434 The signature check should print:
3535
3636 ```
37-./mm-1.0.8-darwin-arm64: valid on disk
38-./mm-1.0.8-darwin-arm64: satisfies its Designated Requirement
37+./mm-1.0.9-darwin-arm64: valid on disk
38+./mm-1.0.9-darwin-arm64: satisfies its Designated Requirement
3939 Identifier=com.bots-garden.mm
4040 Authority=Developer ID Application: Philippe Charriere (SNLLBZP9V9)
4141 TeamIdentifier=SNLLBZP9V9
@@ -2,7 +2,7 @@
2 2
3 Short version:3 Short version:
4 ```bash4 ```bash
5-VERSION=1.0.85+VERSION=1.0.9
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-arm647 chmod +x ./mm-${VERSION}-darwin-arm64
8 sudo rm -f /usr/local/bin/mm8 sudo rm -f /usr/local/bin/mm
@@ -14,7 +14,7 @@ From v1.0.5, the macOS binary is signed with a Developer ID and notarized by App
14 14
15 ```bash15 ```bash
16 # download the binary release in https://rickub.com/bots-garden/mini-me/releases16 # download the binary release in https://rickub.com/bots-garden/mini-me/releases
17-VERSION=1.0.817+VERSION=1.0.9
18 curl -fsSLO "https://rickub.com/bots-garden/mini-me/releases/download/v${VERSION}/mm-${VERSION}-darwin-arm64"18 curl -fsSLO "https://rickub.com/bots-garden/mini-me/releases/download/v${VERSION}/mm-${VERSION}-darwin-arm64"
19 19
20 # optional: check the download against the release's checksums20 # optional: check the download against the release's checksums
@@ -34,8 +34,8 @@ mm --version
34 The signature check should print:34 The signature check should print:
35 35
36 ```36 ```
37-./mm-1.0.8-darwin-arm64: valid on disk37+./mm-1.0.9-darwin-arm64: valid on disk
38-./mm-1.0.8-darwin-arm64: satisfies its Designated Requirement38+./mm-1.0.9-darwin-arm64: satisfies its Designated Requirement
39 Identifier=com.bots-garden.mm39 Identifier=com.bots-garden.mm
40 Authority=Developer ID Application: Philippe Charriere (SNLLBZP9V9)40 Authority=Developer ID Application: Philippe Charriere (SNLLBZP9V9)
41 TeamIdentifier=SNLLBZP9V941 TeamIdentifier=SNLLBZP9V9
modified INSTALL.WINDOWS.md +1 -1
@@ -4,7 +4,7 @@ In PowerShell (no administrator rights needed):
44
55 ```powershell
66 # download the binary release in https://rickub.com/bots-garden/mini-me/releases
7-$Version = "1.0.8"
7+$Version = "1.0.9"
88 $Arch = if ($env:PROCESSOR_ARCHITECTURE -eq "ARM64") { "arm64" } else { "amd64" }
99 $Asset = "mm-$Version-windows-$Arch.exe"
1010 $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 ```powershell5 ```powershell
6 # download the binary release in https://rickub.com/bots-garden/mini-me/releases6 # download the binary release in https://rickub.com/bots-garden/mini-me/releases
7-$Version = "1.0.8"7+$Version = "1.0.9"
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 release-notes/README.md +4 -3
@@ -4,9 +4,10 @@ One note per tag, in English (`.en.md`) and French (`.fr.md`). Rebuilt on 2026-1
44
55 | Version | Date | Summary | |
66 |---|---|---|---|
7-| [v1.0.8](v1.0.8.en.md) | not tagged yet | `mm sbxinit` writes a simpler `sbxenv.yaml` for a `.mm` project: no `PROJECT_DIR` argument and no `--env-arg` on the `sbx env` commands. | [FR](v1.0.8.fr.md) |
8-| [v1.0.7](v1.0.7.en.md) | not tagged yet | A project can keep its agent in a `.mm` folder, which `mm init`, `mm sbxinit` and the new `mm skillcreate` all know, and models such as SmolLM3, whose chat template reads its tools from `xml_tools`, can call mm's tools. | [FR](v1.0.7.fr.md) |
9-| [v1.0.6](v1.0.6.en.md) | not tagged yet | An ACP client can lend the agent its own functions as tools, and mini-me runs on Kronk, the Go inference server of Ardan Labs. | [FR](v1.0.6.fr.md) |
7+| [v1.0.9](v1.0.9.en.md) | not tagged yet | Create an agent from your editor with `mm acp-create` — and its container, its sandbox and its editor settings — while `mm dockerinit` learns the `.mm` folder and an editor's reload no longer fails. | [FR](v1.0.9.fr.md) |
8+| [v1.0.8](v1.0.8.en.md) | 2026-11-13 | `mm sbxinit` writes a simpler `sbxenv.yaml` for a `.mm` project: no `PROJECT_DIR` argument and no `--env-arg` on the `sbx env` commands. | [FR](v1.0.8.fr.md) |
9+| [v1.0.7](v1.0.7.en.md) | 2026-11-13 | A project can keep its agent in a `.mm` folder, which `mm init`, `mm sbxinit` and the new `mm skillcreate` all know, and models such as SmolLM3, whose chat template reads its tools from `xml_tools`, can call mm's tools. | [FR](v1.0.7.fr.md) |
10+| [v1.0.6](v1.0.6.en.md) | 2026-11-11 | An ACP client can lend the agent its own functions as tools, and mini-me runs on Kronk, the Go inference server of Ardan Labs. | [FR](v1.0.6.fr.md) |
1011 | [v1.0.5](v1.0.5.en.md) | 2026-11-07 | `mm dockerinit` and `mm sbxinit` write the files to run mini-me in a container or a Docker Sandbox, `mm init` gives the agent its name, two vibe-coding demos (Go and Swift), and a macOS binary signed and notarized by Apple. | [FR](v1.0.5.fr.md) |
1112 | [v1.0.4](v1.0.4.en.md) | 2026-11-02 | A security update: mm now builds with `golang.org/x/net` v0.62.0, which fixes two vulnerabilities in its HTML parser. | [FR](v1.0.4.fr.md) |
1213 | [v1.0.3](v1.0.3.en.md) | 2026-10-26 | `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) |
@@ -4,9 +4,10 @@ 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.8](v1.0.8.en.md) | not tagged yet | `mm sbxinit` writes a simpler `sbxenv.yaml` for a `.mm` project: no `PROJECT_DIR` argument and no `--env-arg` on the `sbx env` commands. | [FR](v1.0.8.fr.md) |7+| [v1.0.9](v1.0.9.en.md) | not tagged yet | Create an agent from your editor with `mm acp-create` — and its container, its sandbox and its editor settings — while `mm dockerinit` learns the `.mm` folder and an editor's reload no longer fails. | [FR](v1.0.9.fr.md) |
8-| [v1.0.7](v1.0.7.en.md) | not tagged yet | A project can keep its agent in a `.mm` folder, which `mm init`, `mm sbxinit` and the new `mm skillcreate` all know, and models such as SmolLM3, whose chat template reads its tools from `xml_tools`, can call mm's tools. | [FR](v1.0.7.fr.md) |8+| [v1.0.8](v1.0.8.en.md) | 2026-11-13 | `mm sbxinit` writes a simpler `sbxenv.yaml` for a `.mm` project: no `PROJECT_DIR` argument and no `--env-arg` on the `sbx env` commands. | [FR](v1.0.8.fr.md) |
9-| [v1.0.6](v1.0.6.en.md) | not tagged yet | An ACP client can lend the agent its own functions as tools, and mini-me runs on Kronk, the Go inference server of Ardan Labs. | [FR](v1.0.6.fr.md) |9+| [v1.0.7](v1.0.7.en.md) | 2026-11-13 | A project can keep its agent in a `.mm` folder, which `mm init`, `mm sbxinit` and the new `mm skillcreate` all know, and models such as SmolLM3, whose chat template reads its tools from `xml_tools`, can call mm's tools. | [FR](v1.0.7.fr.md) |
10+| [v1.0.6](v1.0.6.en.md) | 2026-11-11 | An ACP client can lend the agent its own functions as tools, and mini-me runs on Kronk, the Go inference server of Ardan Labs. | [FR](v1.0.6.fr.md) |
10 | [v1.0.5](v1.0.5.en.md) | 2026-11-07 | `mm dockerinit` and `mm sbxinit` write the files to run mini-me in a container or a Docker Sandbox, `mm init` gives the agent its name, two vibe-coding demos (Go and Swift), and a macOS binary signed and notarized by Apple. | [FR](v1.0.5.fr.md) |11 | [v1.0.5](v1.0.5.en.md) | 2026-11-07 | `mm dockerinit` and `mm sbxinit` write the files to run mini-me in a container or a Docker Sandbox, `mm init` gives the agent its name, two vibe-coding demos (Go and Swift), and a macOS binary signed and notarized by Apple. | [FR](v1.0.5.fr.md) |
11 | [v1.0.4](v1.0.4.en.md) | 2026-11-02 | A security update: mm now builds with `golang.org/x/net` v0.62.0, which fixes two vulnerabilities in its HTML parser. | [FR](v1.0.4.fr.md) |12 | [v1.0.4](v1.0.4.en.md) | 2026-11-02 | A security update: mm now builds with `golang.org/x/net` v0.62.0, which fixes two vulnerabilities in its HTML parser. | [FR](v1.0.4.fr.md) |
12 | [v1.0.3](v1.0.3.en.md) | 2026-10-26 | `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) |13 | [v1.0.3](v1.0.3.en.md) | 2026-10-26 | `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) |
added release-notes/v1.0.9.en.md +68 -0
new file mode 100644
@@ -0,0 +1,68 @@
1+# mini-me v1.0.9
2+
3+*[Version française](v1.0.9.fr.md)*
4+
5+Create an agent from your editor with `mm acp-create` — and its container, its sandbox and its editor settings — while `mm dockerinit` learns the `.mm` folder and an editor's reload no longer fails.
6+
7+## New
8+
9+### `mm acp-create`: `mm init` from your editor (#210)
10+
11+`mm acp-create` (also `mm --acp-create`) asks the questions of `mm init` over the Agent Client Protocol, from Zed or any other ACP client, and writes the same file. It needs no agent file and calls no model: it only lists the model server's models, as `mm init` does. Register it once in your client:
12+
13+```json
14+"agent_servers": {
15+ "mm-create": { "type": "custom", "command": "mm", "args": ["acp-create"] }
16+}
17+```
18+
19+Open a project, start a thread with `mm-create` and send `/start`. The file is written in the project's directory, not where the client started `mm`.
20+
21+- **The questions follow what your client can show.** A client that advertises forms (`elicitation.form`) gets a few forms, with the defaults filled in; a question whose choices depend on an earlier answer, such as the model list of the server you chose, comes in the next form. Any other client gets one question per message, with numbered choices: reply with a number or a value, `.` for the default. The choice is made from the client's capabilities, never from its name.
22+- **Commands:** `/start`, `/preview` (the file as it stands), `/back`, `/write` (take every default left and write), `/restart`, `/help`.
23+- **The rest of the set-up from the same thread:** `/dockerinit` and `/sbxinit` run `mm dockerinit` and `mm sbxinit` for the project (their flags work; existing files are kept unless you add `--overwrite`, since nothing can be asked here), and `/zedconfig` shows the Zed `agent_servers` entries for every way the project can start its agent — on your machine (`mm acp <agent file>`), in its container (`docker exec …`), in its sandbox (`sbx exec …`) — with what to start first for each.
24+- The flags of `mm init` fix answers in advance: `"args": ["acp-create", "--provider", "llmman", "--project", "yes"]`.
25+- Reloading the agent restarts the wizard: the answers are not kept, a file already written is untouched.
26+
27+Tried in Zed. The form path is covered by tests with a simulated client only: no second ACP client was tried, and none that shows forms.
28+
29+See [How to create an agent from your editor](../docs/en/how-to/create-an-agent-from-an-editor.md).
30+
31+### `mm dockerinit` knows the `.mm` folder (#212)
32+
33+Like `mm sbxinit` since v1.0.7, `mm dockerinit` now looks for `agent.yaml`, then `.mm/agent.yaml`, and names the service after the agent it finds. For a `.mm` project, `compose.yaml`:
34+
35+- mounts `.mm/` **read-only** over the project, so the agent cannot change its own settings, skills or hooks;
36+- mounts the agent file's `sessions.dir` and `trace.dir` (when on and under `.mm/`) writable again, and `mm dockerinit` creates them if they are missing — Docker would create them as root, and the agent never runs as root;
37+- starts `mm tui` with no file argument: mm finds `.mm/agent.yaml` from the project.
38+
39+```yaml
40+ volumes:
41+ - .:${PWD:-/workspace}
42+ - ./.mm:${PWD:-/workspace}/.mm:ro
43+ - ./.mm/sessions:${PWD:-/workspace}/.mm/sessions # sessions.dir
44+```
45+
46+A plain project gets the same files as before. Checked on Linux with Docker 29.9.3 and Compose v5.7.1: writing in `.mm/` is refused, writing in `.mm/sessions` and in the project works. Not checked on Docker Desktop (macOS).
47+
48+See [How to run mini-me in a container](../docs/en/how-to/run-in-a-container.md).
49+
50+### An editor's reload never fails (#210)
51+
52+Zed's *Reload Agent* answered "Loading or resuming sessions is not supported by this agent" for every agent without `sessions.enabled` — the default of `mm init`. `mm acp` now always accepts the reload (`session/load`, `session/resume`). With saved sessions nothing changes: the conversation comes back. Without them the thread starts over, and a message in it says so and how to keep the next one (`sessions: {enabled: true}`).
53+
54+### `mm sbxinit` says how to run the sandbox
55+
56+After writing `sbxenv.yaml`, `mm sbxinit` now prints `Run the sandbox <name>: sbx env run --force` between the create and remove commands; the file's comments list it too.
57+
58+## Documentation
59+
60+- New guide: [Create an agent from your editor](../docs/en/how-to/create-an-agent-from-an-editor.md).
61+- The container guide has a section for a `.mm` project; the CLI reference describes `mm acp-create` and the new `--agent` lookup of `mm dockerinit`.
62+- The ACP reference, the configuration reference (`sessions.enabled`) and the explanation of persistent sessions describe the reload without saved sessions.
63+
64+## Upgrading
65+
66+- **Agent files do not change.** Replace the binary: see the install guides for [macOS](../INSTALL.MACOS.md), [Linux](../INSTALL.LINUX.md) and [Windows](../INSTALL.WINDOWS.md).
67+- **`mm acp` now always advertises `loadSession` and `session/resume`.** A client that relied on their absence to know sessions were not saved will see a reload that starts the conversation over instead of an error. `session/list` still exists only with `sessions.enabled`.
68+- **A `compose.yaml` written by an earlier `mm dockerinit` for a `.mm` project** mounts the whole project writable and starts `mm tui agent.yaml`. Run `mm dockerinit` again and answer `yes` to replace it.
new file mode 100644
@@ -0,0 +1,68 @@
1+# mini-me v1.0.9
2+
3+*[Version française](v1.0.9.fr.md)*
4+
5+Create an agent from your editor with `mm acp-create` — and its container, its sandbox and its editor settings — while `mm dockerinit` learns the `.mm` folder and an editor's reload no longer fails.
6+
7+## New
8+
9+### `mm acp-create`: `mm init` from your editor (#210)
10+
11+`mm acp-create` (also `mm --acp-create`) asks the questions of `mm init` over the Agent Client Protocol, from Zed or any other ACP client, and writes the same file. It needs no agent file and calls no model: it only lists the model server's models, as `mm init` does. Register it once in your client:
12+
13+```json
14+"agent_servers": {
15+ "mm-create": { "type": "custom", "command": "mm", "args": ["acp-create"] }
16+}
17+```
18+
19+Open a project, start a thread with `mm-create` and send `/start`. The file is written in the project's directory, not where the client started `mm`.
20+
21+- **The questions follow what your client can show.** A client that advertises forms (`elicitation.form`) gets a few forms, with the defaults filled in; a question whose choices depend on an earlier answer, such as the model list of the server you chose, comes in the next form. Any other client gets one question per message, with numbered choices: reply with a number or a value, `.` for the default. The choice is made from the client's capabilities, never from its name.
22+- **Commands:** `/start`, `/preview` (the file as it stands), `/back`, `/write` (take every default left and write), `/restart`, `/help`.
23+- **The rest of the set-up from the same thread:** `/dockerinit` and `/sbxinit` run `mm dockerinit` and `mm sbxinit` for the project (their flags work; existing files are kept unless you add `--overwrite`, since nothing can be asked here), and `/zedconfig` shows the Zed `agent_servers` entries for every way the project can start its agent — on your machine (`mm acp <agent file>`), in its container (`docker exec …`), in its sandbox (`sbx exec …`) — with what to start first for each.
24+- The flags of `mm init` fix answers in advance: `"args": ["acp-create", "--provider", "llmman", "--project", "yes"]`.
25+- Reloading the agent restarts the wizard: the answers are not kept, a file already written is untouched.
26+
27+Tried in Zed. The form path is covered by tests with a simulated client only: no second ACP client was tried, and none that shows forms.
28+
29+See [How to create an agent from your editor](../docs/en/how-to/create-an-agent-from-an-editor.md).
30+
31+### `mm dockerinit` knows the `.mm` folder (#212)
32+
33+Like `mm sbxinit` since v1.0.7, `mm dockerinit` now looks for `agent.yaml`, then `.mm/agent.yaml`, and names the service after the agent it finds. For a `.mm` project, `compose.yaml`:
34+
35+- mounts `.mm/` **read-only** over the project, so the agent cannot change its own settings, skills or hooks;
36+- mounts the agent file's `sessions.dir` and `trace.dir` (when on and under `.mm/`) writable again, and `mm dockerinit` creates them if they are missing — Docker would create them as root, and the agent never runs as root;
37+- starts `mm tui` with no file argument: mm finds `.mm/agent.yaml` from the project.
38+
39+```yaml
40+ volumes:
41+ - .:${PWD:-/workspace}
42+ - ./.mm:${PWD:-/workspace}/.mm:ro
43+ - ./.mm/sessions:${PWD:-/workspace}/.mm/sessions # sessions.dir
44+```
45+
46+A plain project gets the same files as before. Checked on Linux with Docker 29.9.3 and Compose v5.7.1: writing in `.mm/` is refused, writing in `.mm/sessions` and in the project works. Not checked on Docker Desktop (macOS).
47+
48+See [How to run mini-me in a container](../docs/en/how-to/run-in-a-container.md).
49+
50+### An editor's reload never fails (#210)
51+
52+Zed's *Reload Agent* answered "Loading or resuming sessions is not supported by this agent" for every agent without `sessions.enabled` — the default of `mm init`. `mm acp` now always accepts the reload (`session/load`, `session/resume`). With saved sessions nothing changes: the conversation comes back. Without them the thread starts over, and a message in it says so and how to keep the next one (`sessions: {enabled: true}`).
53+
54+### `mm sbxinit` says how to run the sandbox
55+
56+After writing `sbxenv.yaml`, `mm sbxinit` now prints `Run the sandbox <name>: sbx env run --force` between the create and remove commands; the file's comments list it too.
57+
58+## Documentation
59+
60+- New guide: [Create an agent from your editor](../docs/en/how-to/create-an-agent-from-an-editor.md).
61+- The container guide has a section for a `.mm` project; the CLI reference describes `mm acp-create` and the new `--agent` lookup of `mm dockerinit`.
62+- The ACP reference, the configuration reference (`sessions.enabled`) and the explanation of persistent sessions describe the reload without saved sessions.
63+
64+## Upgrading
65+
66+- **Agent files do not change.** Replace the binary: see the install guides for [macOS](../INSTALL.MACOS.md), [Linux](../INSTALL.LINUX.md) and [Windows](../INSTALL.WINDOWS.md).
67+- **`mm acp` now always advertises `loadSession` and `session/resume`.** A client that relied on their absence to know sessions were not saved will see a reload that starts the conversation over instead of an error. `session/list` still exists only with `sessions.enabled`.
68+- **A `compose.yaml` written by an earlier `mm dockerinit` for a `.mm` project** mounts the whole project writable and starts `mm tui agent.yaml`. Run `mm dockerinit` again and answer `yes` to replace it.
added release-notes/v1.0.9.fr.md +68 -0
new file mode 100644
@@ -0,0 +1,68 @@
1+# mini-me v1.0.9
2+
3+*[English version](v1.0.9.en.md)*
4+
5+Créez un agent depuis votre éditeur avec `mm acp-create` — et son conteneur, sa sandbox et les réglages de l'éditeur — pendant que `mm dockerinit` apprend le dossier `.mm` et que le rechargement d'un éditeur n'échoue plus.
6+
7+## Nouveautés
8+
9+### `mm acp-create` : `mm init` depuis votre éditeur (#210)
10+
11+`mm acp-create` (aussi `mm --acp-create`) pose les questions de `mm init` par l'Agent Client Protocol, depuis Zed ou tout autre client ACP, et écrit le même fichier. Il ne demande aucun fichier d'agent et n'appelle aucun modèle : il liste seulement les modèles du serveur, comme `mm init`. Déclarez-le une fois dans votre client :
12+
13+```json
14+"agent_servers": {
15+ "mm-create": { "type": "custom", "command": "mm", "args": ["acp-create"] }
16+}
17+```
18+
19+Ouvrez un projet, démarrez une conversation avec `mm-create` et envoyez `/start`. Le fichier est écrit dans le dossier du projet, pas là où le client a lancé `mm`.
20+
21+- **Les questions suivent ce que votre client sait afficher.** Un client qui annonce les formulaires (`elicitation.form`) reçoit quelques formulaires, valeurs par défaut remplies ; une question dont les choix dépendent d'une réponse précédente, comme la liste des modèles du serveur choisi, arrive dans le formulaire suivant. Tout autre client reçoit une question par message, avec des choix numérotés : répondez par un numéro ou une valeur, `.` pour la valeur par défaut. Le choix se fait d'après les capacités du client, jamais d'après son nom.
22+- **Commandes :** `/start`, `/preview` (le fichier tel qu'il serait écrit), `/back`, `/write` (prend toutes les valeurs par défaut restantes et écrit), `/restart`, `/help`.
23+- **La suite de l'installation dans la même conversation :** `/dockerinit` et `/sbxinit` lancent `mm dockerinit` et `mm sbxinit` pour le projet (leurs options marchent ; les fichiers existants sont gardés sauf avec `--overwrite`, puisque rien ne peut être demandé ici), et `/zedconfig` affiche les entrées `agent_servers` de Zed pour chaque façon dont le projet peut lancer son agent — sur votre machine (`mm acp <fichier d'agent>`), dans son conteneur (`docker exec …`), dans sa sandbox (`sbx exec …`) — avec ce qu'il faut lancer avant pour chacune.
24+- Les options de `mm init` fixent des réponses à l'avance : `"args": ["acp-create", "--provider", "llmman", "--project", "yes"]`.
25+- Recharger l'agent relance l'assistant : les réponses ne sont pas gardées, un fichier déjà écrit n'est pas touché.
26+
27+Essayé dans Zed. Le mode formulaires n'est couvert que par des tests avec un client simulé : aucun second client ACP n'a été essayé, ni aucun qui affiche les formulaires.
28+
29+Voir [Créer un agent depuis votre éditeur](../docs/fr/how-to/create-an-agent-from-an-editor.md).
30+
31+### `mm dockerinit` connaît le dossier `.mm` (#212)
32+
33+Comme `mm sbxinit` depuis la v1.0.7, `mm dockerinit` cherche maintenant `agent.yaml`, puis `.mm/agent.yaml`, et nomme le service d'après l'agent trouvé. Pour un projet `.mm`, `compose.yaml` :
34+
35+- monte `.mm/` **en lecture seule** sur le projet : l'agent ne peut pas modifier ses propres réglages, skills ou hooks ;
36+- remonte en écriture le `sessions.dir` et le `trace.dir` du fichier d'agent (quand ils sont activés et sous `.mm/`), et `mm dockerinit` les crée s'ils manquent — Docker les créerait au nom de root, et l'agent ne tourne jamais en root ;
37+- lance `mm tui` sans fichier : mm trouve `.mm/agent.yaml` depuis le projet.
38+
39+```yaml
40+ volumes:
41+ - .:${PWD:-/workspace}
42+ - ./.mm:${PWD:-/workspace}/.mm:ro
43+ - ./.mm/sessions:${PWD:-/workspace}/.mm/sessions # sessions.dir
44+```
45+
46+Un projet classique obtient les mêmes fichiers qu'avant. Vérifié sous Linux avec Docker 29.9.3 et Compose v5.7.1 : écrire dans `.mm/` est refusé, écrire dans `.mm/sessions` et dans le projet fonctionne. Pas vérifié sur Docker Desktop (macOS).
47+
48+Voir [Faire tourner mini-me dans un conteneur](../docs/fr/how-to/run-in-a-container.md).
49+
50+### Le rechargement d'un éditeur n'échoue plus (#210)
51+
52+Le *Reload Agent* de Zed répondait « Loading or resuming sessions is not supported by this agent » pour tout agent sans `sessions.enabled` — la valeur par défaut de `mm init`. `mm acp` accepte maintenant toujours le rechargement (`session/load`, `session/resume`). Avec des sessions enregistrées, rien ne change : la conversation revient. Sans elles, la conversation recommence, et un message dans le fil le dit, ainsi que la façon de garder la suivante (`sessions: {enabled: true}`).
53+
54+### `mm sbxinit` dit comment lancer la sandbox
55+
56+Après avoir écrit `sbxenv.yaml`, `mm sbxinit` affiche maintenant `Run the sandbox <nom>: sbx env run --force` entre les commandes de création et de suppression ; les commentaires du fichier la listent aussi.
57+
58+## Documentation
59+
60+- Nouveau guide : [Créer un agent depuis votre éditeur](../docs/fr/how-to/create-an-agent-from-an-editor.md).
61+- Le guide du conteneur a une section pour un projet `.mm` ; la référence de la ligne de commande décrit `mm acp-create` et la nouvelle recherche `--agent` de `mm dockerinit`.
62+- La référence ACP, la référence de configuration (`sessions.enabled`) et l'explication des sessions persistantes décrivent le rechargement sans sessions enregistrées.
63+
64+## Mise à jour
65+
66+- **Les fichiers d'agent ne changent pas.** Remplacez le binaire : voir les guides d'installation pour [macOS](../INSTALL.MACOS.md), [Linux](../INSTALL.LINUX.md) et [Windows](../INSTALL.WINDOWS.md).
67+- **`mm acp` annonce maintenant toujours `loadSession` et `session/resume`.** Un client qui comptait sur leur absence pour savoir que les sessions n'étaient pas enregistrées verra un rechargement qui recommence la conversation au lieu d'une erreur. `session/list` n'existe toujours qu'avec `sessions.enabled`.
68+- **Un `compose.yaml` écrit par un `mm dockerinit` antérieur pour un projet `.mm`** monte tout le projet en écriture et lance `mm tui agent.yaml`. Relancez `mm dockerinit` et répondez `yes` pour le remplacer.
new file mode 100644
@@ -0,0 +1,68 @@
1+# mini-me v1.0.9
2+
3+*[English version](v1.0.9.en.md)*
4+
5+Créez un agent depuis votre éditeur avec `mm acp-create` — et son conteneur, sa sandbox et les réglages de l'éditeur — pendant que `mm dockerinit` apprend le dossier `.mm` et que le rechargement d'un éditeur n'échoue plus.
6+
7+## Nouveautés
8+
9+### `mm acp-create` : `mm init` depuis votre éditeur (#210)
10+
11+`mm acp-create` (aussi `mm --acp-create`) pose les questions de `mm init` par l'Agent Client Protocol, depuis Zed ou tout autre client ACP, et écrit le même fichier. Il ne demande aucun fichier d'agent et n'appelle aucun modèle : il liste seulement les modèles du serveur, comme `mm init`. Déclarez-le une fois dans votre client :
12+
13+```json
14+"agent_servers": {
15+ "mm-create": { "type": "custom", "command": "mm", "args": ["acp-create"] }
16+}
17+```
18+
19+Ouvrez un projet, démarrez une conversation avec `mm-create` et envoyez `/start`. Le fichier est écrit dans le dossier du projet, pas là où le client a lancé `mm`.
20+
21+- **Les questions suivent ce que votre client sait afficher.** Un client qui annonce les formulaires (`elicitation.form`) reçoit quelques formulaires, valeurs par défaut remplies ; une question dont les choix dépendent d'une réponse précédente, comme la liste des modèles du serveur choisi, arrive dans le formulaire suivant. Tout autre client reçoit une question par message, avec des choix numérotés : répondez par un numéro ou une valeur, `.` pour la valeur par défaut. Le choix se fait d'après les capacités du client, jamais d'après son nom.
22+- **Commandes :** `/start`, `/preview` (le fichier tel qu'il serait écrit), `/back`, `/write` (prend toutes les valeurs par défaut restantes et écrit), `/restart`, `/help`.
23+- **La suite de l'installation dans la même conversation :** `/dockerinit` et `/sbxinit` lancent `mm dockerinit` et `mm sbxinit` pour le projet (leurs options marchent ; les fichiers existants sont gardés sauf avec `--overwrite`, puisque rien ne peut être demandé ici), et `/zedconfig` affiche les entrées `agent_servers` de Zed pour chaque façon dont le projet peut lancer son agent — sur votre machine (`mm acp <fichier d'agent>`), dans son conteneur (`docker exec …`), dans sa sandbox (`sbx exec …`) — avec ce qu'il faut lancer avant pour chacune.
24+- Les options de `mm init` fixent des réponses à l'avance : `"args": ["acp-create", "--provider", "llmman", "--project", "yes"]`.
25+- Recharger l'agent relance l'assistant : les réponses ne sont pas gardées, un fichier déjà écrit n'est pas touché.
26+
27+Essayé dans Zed. Le mode formulaires n'est couvert que par des tests avec un client simulé : aucun second client ACP n'a été essayé, ni aucun qui affiche les formulaires.
28+
29+Voir [Créer un agent depuis votre éditeur](../docs/fr/how-to/create-an-agent-from-an-editor.md).
30+
31+### `mm dockerinit` connaît le dossier `.mm` (#212)
32+
33+Comme `mm sbxinit` depuis la v1.0.7, `mm dockerinit` cherche maintenant `agent.yaml`, puis `.mm/agent.yaml`, et nomme le service d'après l'agent trouvé. Pour un projet `.mm`, `compose.yaml` :
34+
35+- monte `.mm/` **en lecture seule** sur le projet : l'agent ne peut pas modifier ses propres réglages, skills ou hooks ;
36+- remonte en écriture le `sessions.dir` et le `trace.dir` du fichier d'agent (quand ils sont activés et sous `.mm/`), et `mm dockerinit` les crée s'ils manquent — Docker les créerait au nom de root, et l'agent ne tourne jamais en root ;
37+- lance `mm tui` sans fichier : mm trouve `.mm/agent.yaml` depuis le projet.
38+
39+```yaml
40+ volumes:
41+ - .:${PWD:-/workspace}
42+ - ./.mm:${PWD:-/workspace}/.mm:ro
43+ - ./.mm/sessions:${PWD:-/workspace}/.mm/sessions # sessions.dir
44+```
45+
46+Un projet classique obtient les mêmes fichiers qu'avant. Vérifié sous Linux avec Docker 29.9.3 et Compose v5.7.1 : écrire dans `.mm/` est refusé, écrire dans `.mm/sessions` et dans le projet fonctionne. Pas vérifié sur Docker Desktop (macOS).
47+
48+Voir [Faire tourner mini-me dans un conteneur](../docs/fr/how-to/run-in-a-container.md).
49+
50+### Le rechargement d'un éditeur n'échoue plus (#210)
51+
52+Le *Reload Agent* de Zed répondait « Loading or resuming sessions is not supported by this agent » pour tout agent sans `sessions.enabled` — la valeur par défaut de `mm init`. `mm acp` accepte maintenant toujours le rechargement (`session/load`, `session/resume`). Avec des sessions enregistrées, rien ne change : la conversation revient. Sans elles, la conversation recommence, et un message dans le fil le dit, ainsi que la façon de garder la suivante (`sessions: {enabled: true}`).
53+
54+### `mm sbxinit` dit comment lancer la sandbox
55+
56+Après avoir écrit `sbxenv.yaml`, `mm sbxinit` affiche maintenant `Run the sandbox <nom>: sbx env run --force` entre les commandes de création et de suppression ; les commentaires du fichier la listent aussi.
57+
58+## Documentation
59+
60+- Nouveau guide : [Créer un agent depuis votre éditeur](../docs/fr/how-to/create-an-agent-from-an-editor.md).
61+- Le guide du conteneur a une section pour un projet `.mm` ; la référence de la ligne de commande décrit `mm acp-create` et la nouvelle recherche `--agent` de `mm dockerinit`.
62+- La référence ACP, la référence de configuration (`sessions.enabled`) et l'explication des sessions persistantes décrivent le rechargement sans sessions enregistrées.
63+
64+## Mise à jour
65+
66+- **Les fichiers d'agent ne changent pas.** Remplacez le binaire : voir les guides d'installation pour [macOS](../INSTALL.MACOS.md), [Linux](../INSTALL.LINUX.md) et [Windows](../INSTALL.WINDOWS.md).
67+- **`mm acp` annonce maintenant toujours `loadSession` et `session/resume`.** Un client qui comptait sur leur absence pour savoir que les sessions n'étaient pas enregistrées verra un rechargement qui recommence la conversation au lieu d'une erreur. `session/list` n'existe toujours qu'avec `sessions.enabled`.
68+- **Un `compose.yaml` écrit par un `mm dockerinit` antérieur pour un projet `.mm`** monte tout le projet en écriture et lance `mm tui agent.yaml`. Relancez `mm dockerinit` et répondez `yes` pour le remplacer.