bots-garden/sidekickspublic Fork
⑂ main
Commits
⬇ Clone ▾
git clone https://git.rickub.com/bots-garden/sidekicks.git
git clone ssh://git@rickub.com/bots-garden/sidekicks.git

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

Download ZIP

Initialize #1

Merged@k33g wants to merge feature/initialize into main
Merged as b625b0f0f26f.
163 files changed
added .claude/skills/drawio-fancy-diagram/generator/examples/sidekicks_packages.py +52 -0
new file mode 100644
@@ -0,0 +1,52 @@
1+"""The description of docs/diagrams/packages.{drawio,svg} (Sidekicks, ADR 0003).
2+
3+ python3 .claude/skills/drawio-fancy-diagram/generator/examples/sidekicks_packages.py docs/diagrams
4+ rsvg-convert -w 1200 -h 780 -o docs/diagrams/packages.png docs/diagrams/packages.svg
5+"""
6+import os
7+import sys
8+
9+sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), ".."))
10+from flowgen import Diagram
11+
12+OUT = sys.argv[1] if len(sys.argv) > 1 else "docs/diagrams"
13+
14+d = Diagram("packages", "Sidekicks — packages and dependencies",
15+ "arrows are imports · the frontend only talks to internal/app · nothing outside internal/acp sees the ACP SDK", height=780)
16+
17+# Row 1: the entry points.
18+d.box(40, 100, 250, 115, "user", "💻", "frontend/", ["Svelte 5 · panels · Markdown", "CodeMirror · xterm.js"])
19+d.box(475, 100, 250, 115, "decider", "🔀", "internal/app", ["Wails services bound to the UI", "typed events to the UI"], badge="★ only API of the UI")
20+d.box(910, 100, 250, 115, "data", "⚙️", "cmd/sidekicks", ["main: reads flags, wires", "the services, runs Wails"])
21+d.edge([(290, 157), (475, 157)], "bindings · events", at=(382, 157), lw=130, both=True)
22+d.edge([(910, 157), (725, 157)], "creates", at=(817, 157), lw=70)
23+
24+# Row 2: the domain packages, all used by internal/app.
25+d.box(40, 300, 250, 110, "agent", "💬", "internal/channels", ["channels, members, routing", "@mentions · /agent:command"])
26+d.box(330, 300, 250, 110, "agent", "🤖", "internal/agents", ["agent processes: lazy start,", "idle stop, limit, logs"])
27+d.box(620, 300, 250, 110, "agent", "📋", "internal/config", ["load · validate · watch", "save with comments"])
28+d.box(910, 300, 250, 110, "agent", "🧰", "internal/workspace", ["files + exec: local,", "container, sbx"])
29+for cx in (165, 455, 745, 1035):
30+ d.edge([(600, 215), (600, 255), (cx, 255), (cx, 300)])
31+d.edge([(290, 355), (330, 355)])
32+d.edge([(580, 355), (620, 355)])
33+
34+# Row 3: what the domain packages build on.
35+d.box(40, 480, 250, 105, "agent", "📥", "internal/store", ["Pebble: channels, messages,", "session ids"])
36+d.box(330, 480, 250, 105, "agent", "🔧", "internal/acp", ["ACP v1 client wrapper", "SDK types stay inside"])
37+d.box(620, 480, 250, 105, "agent", "🛡️", "schema", ["config JSON Schema", "ValidateConfig()"])
38+d.edge([(165, 410), (165, 480)])
39+d.edge([(455, 410), (455, 480)])
40+d.edge([(745, 410), (745, 480)])
41+
42+# Row 4: third-party modules and external processes.
43+d.chip(40, 655, 250, 50, "cockroachdb/pebble/v2")
44+d.chip(330, 655, 250, 50, "coder/acp-go-sdk → mm -acp")
45+d.chip(620, 655, 250, 50, "jsonschema/v6 · yaml/v3")
46+d.chip(910, 655, 250, 50, "creack/pty · docker · sbx")
47+d.edge([(165, 585), (165, 655)])
48+d.edge([(455, 585), (455, 655)], "stdio", at=(500, 620), lw=50)
49+d.edge([(745, 585), (745, 655)])
50+d.edge([(1035, 410), (1035, 655)])
51+d.text(600, 750, "Third-party modules in grey. Wails v3 is imported by cmd/sidekicks and internal/app only.", 12.5, italic=True)
52+d.write(OUT)
new file mode 100644
@@ -0,0 +1,52 @@
1+"""The description of docs/diagrams/packages.{drawio,svg} (Sidekicks, ADR 0003).
2+
3+ python3 .claude/skills/drawio-fancy-diagram/generator/examples/sidekicks_packages.py docs/diagrams
4+ rsvg-convert -w 1200 -h 780 -o docs/diagrams/packages.png docs/diagrams/packages.svg
5+"""
6+import os
7+import sys
8+
9+sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), ".."))
10+from flowgen import Diagram
11+
12+OUT = sys.argv[1] if len(sys.argv) > 1 else "docs/diagrams"
13+
14+d = Diagram("packages", "Sidekicks — packages and dependencies",
15+ "arrows are imports · the frontend only talks to internal/app · nothing outside internal/acp sees the ACP SDK", height=780)
16+
17+# Row 1: the entry points.
18+d.box(40, 100, 250, 115, "user", "💻", "frontend/", ["Svelte 5 · panels · Markdown", "CodeMirror · xterm.js"])
19+d.box(475, 100, 250, 115, "decider", "🔀", "internal/app", ["Wails services bound to the UI", "typed events to the UI"], badge="★ only API of the UI")
20+d.box(910, 100, 250, 115, "data", "⚙️", "cmd/sidekicks", ["main: reads flags, wires", "the services, runs Wails"])
21+d.edge([(290, 157), (475, 157)], "bindings · events", at=(382, 157), lw=130, both=True)
22+d.edge([(910, 157), (725, 157)], "creates", at=(817, 157), lw=70)
23+
24+# Row 2: the domain packages, all used by internal/app.
25+d.box(40, 300, 250, 110, "agent", "💬", "internal/channels", ["channels, members, routing", "@mentions · /agent:command"])
26+d.box(330, 300, 250, 110, "agent", "🤖", "internal/agents", ["agent processes: lazy start,", "idle stop, limit, logs"])
27+d.box(620, 300, 250, 110, "agent", "📋", "internal/config", ["load · validate · watch", "save with comments"])
28+d.box(910, 300, 250, 110, "agent", "🧰", "internal/workspace", ["files + exec: local,", "container, sbx"])
29+for cx in (165, 455, 745, 1035):
30+ d.edge([(600, 215), (600, 255), (cx, 255), (cx, 300)])
31+d.edge([(290, 355), (330, 355)])
32+d.edge([(580, 355), (620, 355)])
33+
34+# Row 3: what the domain packages build on.
35+d.box(40, 480, 250, 105, "agent", "📥", "internal/store", ["Pebble: channels, messages,", "session ids"])
36+d.box(330, 480, 250, 105, "agent", "🔧", "internal/acp", ["ACP v1 client wrapper", "SDK types stay inside"])
37+d.box(620, 480, 250, 105, "agent", "🛡️", "schema", ["config JSON Schema", "ValidateConfig()"])
38+d.edge([(165, 410), (165, 480)])
39+d.edge([(455, 410), (455, 480)])
40+d.edge([(745, 410), (745, 480)])
41+
42+# Row 4: third-party modules and external processes.
43+d.chip(40, 655, 250, 50, "cockroachdb/pebble/v2")
44+d.chip(330, 655, 250, 50, "coder/acp-go-sdk → mm -acp")
45+d.chip(620, 655, 250, 50, "jsonschema/v6 · yaml/v3")
46+d.chip(910, 655, 250, 50, "creack/pty · docker · sbx")
47+d.edge([(165, 585), (165, 655)])
48+d.edge([(455, 585), (455, 655)], "stdio", at=(500, 620), lw=50)
49+d.edge([(745, 585), (745, 655)])
50+d.edge([(1035, 410), (1035, 655)])
51+d.text(600, 750, "Third-party modules in grey. Wails v3 is imported by cmd/sidekicks and internal/app only.", 12.5, italic=True)
52+d.write(OUT)
added .gitignore +4 -0
new file mode 100644
@@ -0,0 +1,4 @@
1+# Slots of the test agents started by scripts/agents.sh
2+.run/
3+# macOS
4+.DS_Store
new file mode 100644
@@ -0,0 +1,4 @@
1+# Slots of the test agents started by scripts/agents.sh
2+.run/
3+# macOS
4+.DS_Store
added .memory/README.md +11 -0
new file mode 100644
@@ -0,0 +1,11 @@
1+# .memory — the project record
2+
3+For whoever continues building Sidekicks (a person or an agent, possibly in a fresh sandbox). Users read `docs/`; builders read this first.
4+
5+| File | What it is | How it changes |
6+| --- | --- | --- |
7+| `summary.md` | Snapshot of the project now: what it is, decisions in force, real commands, unknowns. | Edited in place; only what a session verified; unknowns under "Not yet established". |
8+| `history.md` | One dated entry per session. | Append only; past entries are never rewritten. |
9+| `handoffs/YYYY-MM-DD-<slug>.md` | Where a session stopped: state, work in flight, next steps, blockers, traps. | One per session/topic; never overwrite another session's handoff. |
10+
11+The backlog itself lives in `.tickets/` (IssueSpec); decisions in `docs/adr/`.
new file mode 100644
@@ -0,0 +1,11 @@
1+# .memory — the project record
2+
3+For whoever continues building Sidekicks (a person or an agent, possibly in a fresh sandbox). Users read `docs/`; builders read this first.
4+
5+| File | What it is | How it changes |
6+| --- | --- | --- |
7+| `summary.md` | Snapshot of the project now: what it is, decisions in force, real commands, unknowns. | Edited in place; only what a session verified; unknowns under "Not yet established". |
8+| `history.md` | One dated entry per session. | Append only; past entries are never rewritten. |
9+| `handoffs/YYYY-MM-DD-<slug>.md` | Where a session stopped: state, work in flight, next steps, blockers, traps. | One per session/topic; never overwrite another session's handoff. |
10+
11+The backlog itself lives in `.tickets/` (IssueSpec); decisions in `docs/adr/`.
added .memory/handoffs/2026-10-29-milestone-initialize.md +36 -0
new file mode 100644
@@ -0,0 +1,36 @@
1+# Handoff — 2026-10-29 — milestone Initialize
2+
3+## State
4+
5+Initialize is implemented on branch `feature/initialize` (not committed by the agent). Decisions are in `docs/adr/0001..0003`; the config format, its schema and tests, the test-agent tooling, wireframes and bilingual docs exist. `make test` passes.
6+
7+## In flight
8+
9+- Nothing. #3 was verified on macOS by the owner and closed; milestone "Initialize" is closed. The owner commits, opens a merge request for `feature/initialize` and merges it.
10+
11+## Next steps
12+
13+1. Owner: merge `feature/initialize`, then create the M1 branch.
14+2. Owner: decide whether to run the qlty gate (needs a sandbox with the dev-toolkit kit) before M1.
15+3. Start M1 with #8 (project from `wails3 init -t svelte`, merged into the existing root `go.mod`; keep the Makefile as entry point; licence headers), then #9 (loader on top of `schema`), #10 (`internal/acp` wrapping coder/acp-go-sdk; `realagents` build tag), #11, #12, #13.
16+
17+## Open questions / blockers
18+
19+- qlty missing in this sandbox (skill says: report and stop, do not install by hand) → no quality report yet.
20+- `sbx`: how to exec and read files inside a sandbox is unknown (#28).
21+- Should `.claude/skills/` be committed? (they are kit files; the package-diagram description was added under `.claude/skills/drawio-fancy-diagram/generator/examples/`).
22+
23+## Watch out for
24+
25+- `pkill -f <pattern>` kills the Bash tool's own shell when the pattern appears in the command line: list pids with `ps -eo pid,args | awk …` and exclude awk instead.
26+- Shell tests: background jobs started inside a test subshell must be waited for **in that subshell** (`trap stop_all_agents EXIT`), otherwise `make test | tail` hangs on the inherited pipe. `set -e` is ignored inside an `if` condition — the harness runs tests outside `if` on purpose.
27+- The model is unloaded after the slot is freed: wait for the `agents.sh run` process (not the slot file) before asserting on unloads.
28+- `git mv -k` on an untracked file silently does nothing (exit 0).
29+- `wails3 init -d X` creates `X/<name>/`: move the content up.
30+- Wails v3 bindings: `wails3 generate bindings -ts` (the build task uses `-ts -i`).
31+- Running the Wails app headless: Xvfb + `GDK_BACKEND=x11 WEBKIT_DISABLE_DMABUF_RENDERER=1 dbus-launch`; drive with `xdotool`, capture with `import -window root`.
32+- rsvg collapses spaces in SVG text: the wireframe generator sets `xml:space="preserve"`.
33+- `make` prints "Clock skew detected" on the shared folder; harmless.
34+- The repository folder is shared with the owner's Mac: after `npm install` on macOS, `spikes/wails-ui/frontend/node_modules` holds darwin-only native bindings (rolldown, lightningcss) and the frontend build fails in the Linux sandbox ("Cannot find native binding"). Do not reinstall there (it would break the Mac); build a copy in the scratchpad (`tar --exclude=frontend/node_modules …`, `npm ci`).
35+- macOS hidden-inset title bar: the left dock is padded by `--titlebar-inset` (38px under `:root.macos`, set from `System.IsMac()`), which must match `InvisibleTitleBarHeight` in `spikes/wails-ui/main.go`. The real Sidekicks shell (#12) must keep this.
36+- The ACP traces of Riker (`riker-reject.jsonl`, ~470 kB) are large on purpose: they document the retry loop.
new file mode 100644
@@ -0,0 +1,36 @@
1+# Handoff — 2026-10-29 — milestone Initialize
2+
3+## State
4+
5+Initialize is implemented on branch `feature/initialize` (not committed by the agent). Decisions are in `docs/adr/0001..0003`; the config format, its schema and tests, the test-agent tooling, wireframes and bilingual docs exist. `make test` passes.
6+
7+## In flight
8+
9+- Nothing. #3 was verified on macOS by the owner and closed; milestone "Initialize" is closed. The owner commits, opens a merge request for `feature/initialize` and merges it.
10+
11+## Next steps
12+
13+1. Owner: merge `feature/initialize`, then create the M1 branch.
14+2. Owner: decide whether to run the qlty gate (needs a sandbox with the dev-toolkit kit) before M1.
15+3. Start M1 with #8 (project from `wails3 init -t svelte`, merged into the existing root `go.mod`; keep the Makefile as entry point; licence headers), then #9 (loader on top of `schema`), #10 (`internal/acp` wrapping coder/acp-go-sdk; `realagents` build tag), #11, #12, #13.
16+
17+## Open questions / blockers
18+
19+- qlty missing in this sandbox (skill says: report and stop, do not install by hand) → no quality report yet.
20+- `sbx`: how to exec and read files inside a sandbox is unknown (#28).
21+- Should `.claude/skills/` be committed? (they are kit files; the package-diagram description was added under `.claude/skills/drawio-fancy-diagram/generator/examples/`).
22+
23+## Watch out for
24+
25+- `pkill -f <pattern>` kills the Bash tool's own shell when the pattern appears in the command line: list pids with `ps -eo pid,args | awk …` and exclude awk instead.
26+- Shell tests: background jobs started inside a test subshell must be waited for **in that subshell** (`trap stop_all_agents EXIT`), otherwise `make test | tail` hangs on the inherited pipe. `set -e` is ignored inside an `if` condition — the harness runs tests outside `if` on purpose.
27+- The model is unloaded after the slot is freed: wait for the `agents.sh run` process (not the slot file) before asserting on unloads.
28+- `git mv -k` on an untracked file silently does nothing (exit 0).
29+- `wails3 init -d X` creates `X/<name>/`: move the content up.
30+- Wails v3 bindings: `wails3 generate bindings -ts` (the build task uses `-ts -i`).
31+- Running the Wails app headless: Xvfb + `GDK_BACKEND=x11 WEBKIT_DISABLE_DMABUF_RENDERER=1 dbus-launch`; drive with `xdotool`, capture with `import -window root`.
32+- rsvg collapses spaces in SVG text: the wireframe generator sets `xml:space="preserve"`.
33+- `make` prints "Clock skew detected" on the shared folder; harmless.
34+- The repository folder is shared with the owner's Mac: after `npm install` on macOS, `spikes/wails-ui/frontend/node_modules` holds darwin-only native bindings (rolldown, lightningcss) and the frontend build fails in the Linux sandbox ("Cannot find native binding"). Do not reinstall there (it would break the Mac); build a copy in the scratchpad (`tar --exclude=frontend/node_modules …`, `npm ci`).
35+- macOS hidden-inset title bar: the left dock is padded by `--titlebar-inset` (38px under `:root.macos`, set from `System.IsMac()`), which must match `InvisibleTitleBarHeight` in `spikes/wails-ui/main.go`. The real Sidekicks shell (#12) must keep this.
36+- The ACP traces of Riker (`riker-reject.jsonl`, ~470 kB) are large on purpose: they document the retry loop.
added .memory/history.md +36 -0
new file mode 100644
@@ -0,0 +1,36 @@
1+# History
2+
3+## 2026-10-29 — Backlog, licence, and milestone Initialize
4+
5+- **Goal**: turn the draft (#1) into a backlog; propose a protective licence; implement milestone Initialize (issues #2–#7), "all the way".
6+- **Changes**:
7+ - `.tickets/`: 36 issues (#2–#37), 8 epics, 5 milestones, 13 labels; comment on #1 explaining the plan. After Initialize: #2, #4, #5, #6, #7 closed with result comments; #3 kept open (macOS check); notes added to #8, #9, #10, #17, #24, #25.
8+ - `LICENSE` (custom source-available), licence-header convention recorded in #8.
9+ - #7: `scripts/agents.sh`, `scripts/agents_test.sh`, `Makefile`, `.gitignore`.
10+ - #2: `spikes/acp-trace`, `docs/spikes/acp/traces/*.jsonl`, `docs/adr/0001-acp.md`.
11+ - #3: `spikes/wails-ui` (Wails v3 + Svelte), `docs/spikes/ui/*.png`, `docs/adr/0002-ui-stack.md`.
12+ - #4: root `go.mod`, `schema/` (JSON Schema + `ValidateConfig` + tests), `examples/test-agents.yaml`, configuration reference.
13+ - #5: `docs/adr/0003-architecture.md`, `docs/diagrams/packages.{drawio,svg,png}` (+ generator description in `.claude/skills/drawio-fancy-diagram/generator/examples/sidekicks_packages.py`).
14+ - #6: `docs/design/` (generator `wireframes.py`, `wireframes.drawio` with 6 pages, SVG/PNG).
15+- **Decisions**: ACP v1 + coder/acp-go-sdk (rejected: hand-written JSON-RPC, other young Go SDKs, waiting for v2); Wails v3.0.0 (rejected v2: would need migration soon); Svelte 5 (React/Vue not needed); CodeMirror over Monaco; Shiki over highlight.js; Pebble v2; channels only in Pebble; `agents.sh run` with stdio pass-through instead of start/stop (so it is usable as an ACP agent command); config `runtime` via if/then instead of oneOf (readable errors); config spec moved to `docs/en/reference/configuration.md` (no duplicate spec).
16+- **Tests**: `make test` — Go schema tests (4 valid + 12 invalid documents, example) and 14 shell tests; all pass, stable over 8 runs. Real-agent captures with Alice, Riker (allow/reject), Garfield (cancel, command), one agent at a time, models unloaded.
17+- **Quality**: qlty unavailable in this sandbox → gate **not measured**. Substitutes run: gofmt, go vet (3 modules), bash -n, svelte-check (0/0), make test.
18+- **Docs**: `docs/README.md` selector; `docs/en` and `docs/fr`: tutorial (first ACP exchange), how-to (run tests, run a test agent), reference (configuration + schema package, agents.sh), explanation (why ACP, UI stack, architecture, memory and local models).
19+
20+## 2026-10-29 — macOS test guide for milestone Initialize
21+
22+- **Goal**: a guide to test what Initialize produced when the owner is on a Mac.
23+- **Changes**: `docs/fr/how-to/tester-la-milestone-initialize-sous-macos.md`, `docs/en/how-to/test-milestone-initialize-on-macos.md`, both indexes; comment on #3. Fixed `spikes/wails-ui/README.md`: the `.app` comes from `wails3 package`, not `wails3 build`.
24+- **Tests**: guide commands cross-checked against the sandbox runs and the Wails v3 CLI (`wails3 package` exists, darwin Taskfile creates `bin/wails-ui.app`); not run on a Mac.
25+- **Docs**: how-to in EN and FR.
26+
27+## 2026-10-29 — macOS check feedback: traffic lights over "CHANNELS"
28+
29+- **Goal**: the owner ran the macOS guide; everything works except the traffic lights overlapping the "CHANNELS" heading.
30+- **Changes**: `spikes/wails-ui`: `--titlebar-inset` CSS variable (0, 38px under `:root.macos`), `macos` class set from `System.IsMac()` in `main.ts`, left dock padded by it; comment linking it to `InvisibleTitleBarHeight` in `main.go`. Guide point 7 updated (EN/FR).
31+- **Tests**: shared `node_modules` now holds the Mac's darwin bindings, so the build was verified on a scratchpad copy (`npm ci`, `npm run build`, `svelte-check` 0/0, `go vet`), and the layout checked under Xvfb with the class forced on. Not re-checked on the Mac yet.
32+
33+## 2026-10-29 — Milestone Initialize closed
34+
35+- **Goal**: after the owner's successful macOS check, close #3 and the milestone.
36+- **Changes**: #3 last task closed + result comment, issue closed; milestone `Initialize` → closed; ADR 0002 status "verified on macOS"; prototype README updated; `.memory/` summary and handoff updated. No commit by the agent (the owner commits and merges).
new file mode 100644
@@ -0,0 +1,36 @@
1+# History
2+
3+## 2026-10-29 — Backlog, licence, and milestone Initialize
4+
5+- **Goal**: turn the draft (#1) into a backlog; propose a protective licence; implement milestone Initialize (issues #2–#7), "all the way".
6+- **Changes**:
7+ - `.tickets/`: 36 issues (#2–#37), 8 epics, 5 milestones, 13 labels; comment on #1 explaining the plan. After Initialize: #2, #4, #5, #6, #7 closed with result comments; #3 kept open (macOS check); notes added to #8, #9, #10, #17, #24, #25.
8+ - `LICENSE` (custom source-available), licence-header convention recorded in #8.
9+ - #7: `scripts/agents.sh`, `scripts/agents_test.sh`, `Makefile`, `.gitignore`.
10+ - #2: `spikes/acp-trace`, `docs/spikes/acp/traces/*.jsonl`, `docs/adr/0001-acp.md`.
11+ - #3: `spikes/wails-ui` (Wails v3 + Svelte), `docs/spikes/ui/*.png`, `docs/adr/0002-ui-stack.md`.
12+ - #4: root `go.mod`, `schema/` (JSON Schema + `ValidateConfig` + tests), `examples/test-agents.yaml`, configuration reference.
13+ - #5: `docs/adr/0003-architecture.md`, `docs/diagrams/packages.{drawio,svg,png}` (+ generator description in `.claude/skills/drawio-fancy-diagram/generator/examples/sidekicks_packages.py`).
14+ - #6: `docs/design/` (generator `wireframes.py`, `wireframes.drawio` with 6 pages, SVG/PNG).
15+- **Decisions**: ACP v1 + coder/acp-go-sdk (rejected: hand-written JSON-RPC, other young Go SDKs, waiting for v2); Wails v3.0.0 (rejected v2: would need migration soon); Svelte 5 (React/Vue not needed); CodeMirror over Monaco; Shiki over highlight.js; Pebble v2; channels only in Pebble; `agents.sh run` with stdio pass-through instead of start/stop (so it is usable as an ACP agent command); config `runtime` via if/then instead of oneOf (readable errors); config spec moved to `docs/en/reference/configuration.md` (no duplicate spec).
16+- **Tests**: `make test` — Go schema tests (4 valid + 12 invalid documents, example) and 14 shell tests; all pass, stable over 8 runs. Real-agent captures with Alice, Riker (allow/reject), Garfield (cancel, command), one agent at a time, models unloaded.
17+- **Quality**: qlty unavailable in this sandbox → gate **not measured**. Substitutes run: gofmt, go vet (3 modules), bash -n, svelte-check (0/0), make test.
18+- **Docs**: `docs/README.md` selector; `docs/en` and `docs/fr`: tutorial (first ACP exchange), how-to (run tests, run a test agent), reference (configuration + schema package, agents.sh), explanation (why ACP, UI stack, architecture, memory and local models).
19+
20+## 2026-10-29 — macOS test guide for milestone Initialize
21+
22+- **Goal**: a guide to test what Initialize produced when the owner is on a Mac.
23+- **Changes**: `docs/fr/how-to/tester-la-milestone-initialize-sous-macos.md`, `docs/en/how-to/test-milestone-initialize-on-macos.md`, both indexes; comment on #3. Fixed `spikes/wails-ui/README.md`: the `.app` comes from `wails3 package`, not `wails3 build`.
24+- **Tests**: guide commands cross-checked against the sandbox runs and the Wails v3 CLI (`wails3 package` exists, darwin Taskfile creates `bin/wails-ui.app`); not run on a Mac.
25+- **Docs**: how-to in EN and FR.
26+
27+## 2026-10-29 — macOS check feedback: traffic lights over "CHANNELS"
28+
29+- **Goal**: the owner ran the macOS guide; everything works except the traffic lights overlapping the "CHANNELS" heading.
30+- **Changes**: `spikes/wails-ui`: `--titlebar-inset` CSS variable (0, 38px under `:root.macos`), `macos` class set from `System.IsMac()` in `main.ts`, left dock padded by it; comment linking it to `InvisibleTitleBarHeight` in `main.go`. Guide point 7 updated (EN/FR).
31+- **Tests**: shared `node_modules` now holds the Mac's darwin bindings, so the build was verified on a scratchpad copy (`npm ci`, `npm run build`, `svelte-check` 0/0, `go vet`), and the layout checked under Xvfb with the class forced on. Not re-checked on the Mac yet.
32+
33+## 2026-10-29 — Milestone Initialize closed
34+
35+- **Goal**: after the owner's successful macOS check, close #3 and the milestone.
36+- **Changes**: #3 last task closed + result comment, issue closed; milestone `Initialize` → closed; ADR 0002 status "verified on macOS"; prototype README updated; `.memory/` summary and handoff updated. No commit by the agent (the owner commits and merges).
added .memory/summary.md +49 -0
new file mode 100644
@@ -0,0 +1,49 @@
1+# Sidekicks — summary
2+
3+## What it is
4+
5+A desktop application (Go + Wails) to talk with AI agents in channels, for non-technical ("citizen") users. Agent-agnostic: every agent is reached over the Agent Client Protocol (ACP, JSON-RPC on stdio). Full brief: `.tickets/issues/0001-draft.yaml`; backlog of 36 issues, 9 epics, 6 milestones in `.tickets/` (IssueSpec format, see `.claude/skills/issuespec`).
6+
7+## State (2026-10-29)
8+
9+Milestone **Initialize** is closed (issues #2–#7 closed; the UI prototype was verified on macOS by the owner). There is **no application code yet**; M1 (issues #8–#13) starts it.
10+
11+What exists:
12+
13+- `scripts/agents.sh` — the only way to start test agents: `run <agent>` (stdio pass-through, max 2 simultaneous, unloads the model at exit), `ps`, `unload`, `model`, `list`.
14+- `schema/` — Go package (`git.rickub.com/bots-garden/sidekicks/schema`): configuration JSON Schema + `ValidateConfig`.
15+- `examples/test-agents.yaml` — a valid configuration with the 4 test agents (through `scripts/agents.sh`).
16+- `spikes/acp-trace` (ACP trace client), `spikes/wails-ui` (Wails v3 + Svelte prototype) — throwaway, separate Go modules.
17+- `docs/adr/0001..0003`, `docs/design/` (6 wireframes, draw.io), `docs/diagrams/packages.drawio`, `docs/en|fr/` (Diátaxis).
18+
19+## Decisions in force
20+
21+- ACP **v1**, via `github.com/coder/acp-go-sdk` v0.13.5, wrapped in `internal/acp` (ADR 0001). One ACP session per (channel, agent).
22+- **Wails v3.0.0**, Svelte 5 + TS, paneforge, markdown-it + Shiki (JS engine) + DOMPurify, CodeMirror 6, xterm.js + creack/pty (ADR 0002). Markdown rendered at most once per animation frame. macOS hidden-inset title bar: content near the top-left is padded by `--titlebar-inset` (38px under `:root.macos`, = `InvisibleTitleBarHeight`).
23+- Packages and data model: ADR 0003. YAML = what exists; Pebble v2 = what happens, one DB per config file; channels live only in Pebble (YAML-declared ones are created once). Messages written at end of turn.
24+- Config format v1: `docs/en/reference/configuration.md`; unknown keys are errors; cross-entry rules belong to the loader (#9).
25+- Licence: custom source-available (`LICENSE`). Every hand-written source file starts with the one-line header `Copyright (c) 2026 Philippe Charrière — Sidekicks Source-Available License 1.0, see LICENSE` (comment syntax of the language); not on generated files nor on the owner's root scripts (`git.sh`, `new.*.sh`, `tag-step.sh`).
26+- ADRs and specs in English; docs bilingual EN + FR; tickets in French.
27+
28+## Commands
29+
30+| | |
31+| --- | --- |
32+| All tests | `make test` (Go `go test ./...` + `scripts/agents_test.sh`; no network, no real agent) |
33+| Test agents | `scripts/agents.sh run alice` · `ps` · `unload --all` (needs `mm` on PATH or `MM_BIN`, llmman on 127.0.0.1:17434 or host.docker.internal:17434) |
34+| ACP trace | `cd spikes/acp-trace && go run . -agent alice -prompt "…" -out /tmp/t.jsonl` |
35+| UI prototype | `cd spikes/wails-ui && wails3 dev` (macOS) ; Linux build needs `pkg-config libgtk-4-dev libwebkitgtk-6.0-dev` |
36+| Wireframes | `python3 docs/design/wireframes.py` then `rsvg-convert` each SVG |
37+| Package diagram | `python3 .claude/skills/drawio-fancy-diagram/generator/examples/sidekicks_packages.py docs/diagrams` then `rsvg-convert -w 1200 -h 780` |
38+
39+## Facts about the test agents (mm v1.0.3)
40+
41+- Alice (gemma E2B), Bob and Riker (same Qwen3.5 2B), Garfield (gemma E4B, skills). Never more than 2 at once (MacBook Air 32 GB).
42+- mm: protocolVersion 1, no `loadSession`, commands = `compact`/`new`/`unload` + skills, sent right after `session/new`; `/skill args` as prompt text runs a skill; ignores `mcpServers`; reads AGENTS.md/skills from the session cwd.
43+- Riker loops ~40 times after `reject_once`, then the turn ends with JSON-RPC error -32603.
44+
45+## Not yet established
46+
47+- How to exec a shell / read files inside an `sbx` sandbox (issue #28).
48+- Quality gate: `qlty` was not installed in the 2026-10-29 sandbox, so no qlty measurement exists yet (`.quality/` absent).
49+- Whether `.claude/skills/*` (kit files) should be committed with the project is the owner's call.
new file mode 100644
@@ -0,0 +1,49 @@
1+# Sidekicks — summary
2+
3+## What it is
4+
5+A desktop application (Go + Wails) to talk with AI agents in channels, for non-technical ("citizen") users. Agent-agnostic: every agent is reached over the Agent Client Protocol (ACP, JSON-RPC on stdio). Full brief: `.tickets/issues/0001-draft.yaml`; backlog of 36 issues, 9 epics, 6 milestones in `.tickets/` (IssueSpec format, see `.claude/skills/issuespec`).
6+
7+## State (2026-10-29)
8+
9+Milestone **Initialize** is closed (issues #2–#7 closed; the UI prototype was verified on macOS by the owner). There is **no application code yet**; M1 (issues #8–#13) starts it.
10+
11+What exists:
12+
13+- `scripts/agents.sh` — the only way to start test agents: `run <agent>` (stdio pass-through, max 2 simultaneous, unloads the model at exit), `ps`, `unload`, `model`, `list`.
14+- `schema/` — Go package (`git.rickub.com/bots-garden/sidekicks/schema`): configuration JSON Schema + `ValidateConfig`.
15+- `examples/test-agents.yaml` — a valid configuration with the 4 test agents (through `scripts/agents.sh`).
16+- `spikes/acp-trace` (ACP trace client), `spikes/wails-ui` (Wails v3 + Svelte prototype) — throwaway, separate Go modules.
17+- `docs/adr/0001..0003`, `docs/design/` (6 wireframes, draw.io), `docs/diagrams/packages.drawio`, `docs/en|fr/` (Diátaxis).
18+
19+## Decisions in force
20+
21+- ACP **v1**, via `github.com/coder/acp-go-sdk` v0.13.5, wrapped in `internal/acp` (ADR 0001). One ACP session per (channel, agent).
22+- **Wails v3.0.0**, Svelte 5 + TS, paneforge, markdown-it + Shiki (JS engine) + DOMPurify, CodeMirror 6, xterm.js + creack/pty (ADR 0002). Markdown rendered at most once per animation frame. macOS hidden-inset title bar: content near the top-left is padded by `--titlebar-inset` (38px under `:root.macos`, = `InvisibleTitleBarHeight`).
23+- Packages and data model: ADR 0003. YAML = what exists; Pebble v2 = what happens, one DB per config file; channels live only in Pebble (YAML-declared ones are created once). Messages written at end of turn.
24+- Config format v1: `docs/en/reference/configuration.md`; unknown keys are errors; cross-entry rules belong to the loader (#9).
25+- Licence: custom source-available (`LICENSE`). Every hand-written source file starts with the one-line header `Copyright (c) 2026 Philippe Charrière — Sidekicks Source-Available License 1.0, see LICENSE` (comment syntax of the language); not on generated files nor on the owner's root scripts (`git.sh`, `new.*.sh`, `tag-step.sh`).
26+- ADRs and specs in English; docs bilingual EN + FR; tickets in French.
27+
28+## Commands
29+
30+| | |
31+| --- | --- |
32+| All tests | `make test` (Go `go test ./...` + `scripts/agents_test.sh`; no network, no real agent) |
33+| Test agents | `scripts/agents.sh run alice` · `ps` · `unload --all` (needs `mm` on PATH or `MM_BIN`, llmman on 127.0.0.1:17434 or host.docker.internal:17434) |
34+| ACP trace | `cd spikes/acp-trace && go run . -agent alice -prompt "…" -out /tmp/t.jsonl` |
35+| UI prototype | `cd spikes/wails-ui && wails3 dev` (macOS) ; Linux build needs `pkg-config libgtk-4-dev libwebkitgtk-6.0-dev` |
36+| Wireframes | `python3 docs/design/wireframes.py` then `rsvg-convert` each SVG |
37+| Package diagram | `python3 .claude/skills/drawio-fancy-diagram/generator/examples/sidekicks_packages.py docs/diagrams` then `rsvg-convert -w 1200 -h 780` |
38+
39+## Facts about the test agents (mm v1.0.3)
40+
41+- Alice (gemma E2B), Bob and Riker (same Qwen3.5 2B), Garfield (gemma E4B, skills). Never more than 2 at once (MacBook Air 32 GB).
42+- mm: protocolVersion 1, no `loadSession`, commands = `compact`/`new`/`unload` + skills, sent right after `session/new`; `/skill args` as prompt text runs a skill; ignores `mcpServers`; reads AGENTS.md/skills from the session cwd.
43+- Riker loops ~40 times after `reject_once`, then the turn ends with JSON-RPC error -32603.
44+
45+## Not yet established
46+
47+- How to exec a shell / read files inside an `sbx` sandbox (issue #28).
48+- Quality gate: `qlty` was not installed in the 2026-10-29 sandbox, so no qlty measurement exists yet (`.quality/` absent).
49+- Whether `.claude/skills/*` (kit files) should be committed with the project is the owner's call.
modified .tickets/issues/0002-spike-maitriser-le-protocole-acp-et-le-valider-a.yaml +49 -12
@@ -1,12 +1,12 @@
11 # Managed by IssueSpec. Hand edits are welcome; keep the schema valid.
22 id: 2
33 title: "Spike : maîtriser le protocole ACP et le valider avec mm"
4-state: open
4+state: closed
55 author:
66 name: k33g
77 email: ph.charriere@gmail.com
88 createdAt: 2026-10-29T07:20:00.000Z
9-updatedAt: 2026-10-29T07:20:00.000Z
9+updatedAt: 2026-10-29T08:51:00.000Z
1010 labels:
1111 - "kind::spike"
1212 - "area::acp"
@@ -39,74 +39,111 @@ body: |
3939 tasks:
4040 - id: 1
4141 title: "Lire la spec ACP : initialize, session/new, session/prompt, session/update, session/cancel"
42- state: open
42+ state: closed
4343 priority: high
4444 author:
4545 name: k33g
4646 email: ph.charriere@gmail.com
4747 createdAt: 2026-10-29T07:20:00.000Z
48+ updatedAt: 2026-10-29T08:51:00.000Z
49+ closedAt: 2026-10-29T08:51:00.000Z
4850 - id: 2
4951 title: "Lire la partie permissions (session/request_permission) et tool calls"
50- state: open
52+ state: closed
5153 priority: high
5254 author:
5355 name: k33g
5456 email: ph.charriere@gmail.com
5557 createdAt: 2026-10-29T07:20:00.000Z
58+ updatedAt: 2026-10-29T08:51:00.000Z
59+ closedAt: 2026-10-29T08:51:00.000Z
5660 - id: 3
5761 title: "Lire les capacités client fs/* et terminal/*"
58- state: open
62+ state: closed
5963 priority: medium
6064 author:
6165 name: k33g
6266 email: ph.charriere@gmail.com
6367 createdAt: 2026-10-29T07:20:00.000Z
68+ updatedAt: 2026-10-29T08:51:00.000Z
69+ closedAt: 2026-10-29T08:51:00.000Z
6470 - id: 4
6571 title: "Lire available_commands_update (commandes slash) et session/load"
66- state: open
72+ state: closed
6773 priority: medium
6874 author:
6975 name: k33g
7076 email: ph.charriere@gmail.com
7177 createdAt: 2026-10-29T07:20:00.000Z
78+ updatedAt: 2026-10-29T08:51:00.000Z
79+ closedAt: 2026-10-29T08:51:00.000Z
7280 - id: 5
7381 title: "Évaluer les SDK Go existants (maintenance, licence, couverture du protocole)"
74- state: open
82+ state: closed
7583 priority: high
7684 author:
7785 name: k33g
7886 email: ph.charriere@gmail.com
7987 createdAt: 2026-10-29T07:20:00.000Z
88+ updatedAt: 2026-10-29T08:51:00.000Z
89+ closedAt: 2026-10-29T08:51:00.000Z
8090 - id: 6
8191 title: "Capturer une trace JSON-RPC réelle avec Alice (mm -acp)"
82- state: open
92+ state: closed
8393 priority: medium
8494 author:
8595 name: k33g
8696 email: ph.charriere@gmail.com
8797 createdAt: 2026-10-29T07:20:00.000Z
98+ updatedAt: 2026-10-29T08:51:00.000Z
99+ closedAt: 2026-10-29T08:51:00.000Z
88100 - id: 7
89101 title: "Capturer une trace avec Riker (tool call + demande de permission)"
90- state: open
102+ state: closed
91103 priority: medium
92104 author:
93105 name: k33g
94106 email: ph.charriere@gmail.com
95107 createdAt: 2026-10-29T07:20:00.000Z
108+ updatedAt: 2026-10-29T08:51:00.000Z
109+ closedAt: 2026-10-29T08:51:00.000Z
96110 - id: 8
97111 title: "Capturer une trace avec Garfield (commandes/skills exposés)"
98- state: open
112+ state: closed
99113 priority: medium
100114 author:
101115 name: k33g
102116 email: ph.charriere@gmail.com
103117 createdAt: 2026-10-29T07:20:00.000Z
118+ updatedAt: 2026-10-29T08:51:00.000Z
119+ closedAt: 2026-10-29T08:51:00.000Z
104120 - id: 9
105121 title: "Rédiger l'ADR ACP"
106- state: open
122+ state: closed
107123 priority: high
108124 author:
109125 name: k33g
110126 email: ph.charriere@gmail.com
111127 createdAt: 2026-10-29T07:20:00.000Z
112-comments: []
128+ updatedAt: 2026-10-29T08:51:00.000Z
129+ closedAt: 2026-10-29T08:51:00.000Z
130+comments:
131+ - id: 1
132+ author:
133+ name: k33g
134+ email: ph.charriere@gmail.com
135+ createdAt: 2026-10-29T08:51:00.000Z
136+ body: |
137+ ## Résultat — spike terminé
138+
139+ Décision et constats : [ADR 0001 — ACP](docs/adr/0001-acp.md). Client de capture : [spikes/acp-trace](spikes/acp-trace/README.md). Traces réelles : [docs/spikes/acp](docs/spikes/acp/README.md).
140+
141+ - **Protocole v1** : mm v1.0.3 répond `protocolVersion: 1` ; la v2 documentée sur le site est écartée pour l'instant.
142+ - **SDK** : `github.com/coder/acp-go-sdk` v0.13.5 (Apache-2.0, généré depuis le schéma officiel), encapsulé dans `internal/acp`.
143+ - **Une session ACP par (channel, agent)**.
144+ - **Pas de `loadSession` chez mm** → la reprise (#25) devra réinjecter le contexte.
145+ - **Commandes** = commandes intégrées de mm + skills (Garfield), envoyées comme texte `/idioms …` → validé.
146+ - **Permissions** : options `allow`, `allow_always`, `reject`, `never`. Après un refus `reject_once`, Riker a réessayé 40 fois puis le tour a fini en **erreur JSON-RPC** → impacts sur #17.
147+ - **Annulation** : `session/cancel` → `stopReason: cancelled`, vérifié avec Garfield.
148+
149+ Traces capturées un agent à la fois, via `scripts/agents.sh run`, modèle déchargé après chaque capture.
@@ -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: 22 id: 2
3 title: "Spike : maîtriser le protocole ACP et le valider avec mm"3 title: "Spike : maîtriser le protocole ACP et le valider avec mm"
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-10-29T07:20:00.000Z8 createdAt: 2026-10-29T07:20:00.000Z
9-updatedAt: 2026-10-29T07:20:00.000Z9+updatedAt: 2026-10-29T08:51:00.000Z
10 labels:10 labels:
11 - "kind::spike"11 - "kind::spike"
12 - "area::acp"12 - "area::acp"
@@ -39,74 +39,111 @@ body: |
39 tasks:39 tasks:
40 - id: 140 - id: 1
41 title: "Lire la spec ACP : initialize, session/new, session/prompt, session/update, session/cancel"41 title: "Lire la spec ACP : initialize, session/new, session/prompt, session/update, session/cancel"
42- state: open42+ state: closed
43 priority: high43 priority: high
44 author:44 author:
45 name: k33g45 name: k33g
46 email: ph.charriere@gmail.com46 email: ph.charriere@gmail.com
47 createdAt: 2026-10-29T07:20:00.000Z47 createdAt: 2026-10-29T07:20:00.000Z
48+ updatedAt: 2026-10-29T08:51:00.000Z
49+ closedAt: 2026-10-29T08:51:00.000Z
48 - id: 250 - id: 2
49 title: "Lire la partie permissions (session/request_permission) et tool calls"51 title: "Lire la partie permissions (session/request_permission) et tool calls"
50- state: open52+ state: closed
51 priority: high53 priority: high
52 author:54 author:
53 name: k33g55 name: k33g
54 email: ph.charriere@gmail.com56 email: ph.charriere@gmail.com
55 createdAt: 2026-10-29T07:20:00.000Z57 createdAt: 2026-10-29T07:20:00.000Z
58+ updatedAt: 2026-10-29T08:51:00.000Z
59+ closedAt: 2026-10-29T08:51:00.000Z
56 - id: 360 - id: 3
57 title: "Lire les capacités client fs/* et terminal/*"61 title: "Lire les capacités client fs/* et terminal/*"
58- state: open62+ state: closed
59 priority: medium63 priority: medium
60 author:64 author:
61 name: k33g65 name: k33g
62 email: ph.charriere@gmail.com66 email: ph.charriere@gmail.com
63 createdAt: 2026-10-29T07:20:00.000Z67 createdAt: 2026-10-29T07:20:00.000Z
68+ updatedAt: 2026-10-29T08:51:00.000Z
69+ closedAt: 2026-10-29T08:51:00.000Z
64 - id: 470 - id: 4
65 title: "Lire available_commands_update (commandes slash) et session/load"71 title: "Lire available_commands_update (commandes slash) et session/load"
66- state: open72+ state: closed
67 priority: medium73 priority: medium
68 author:74 author:
69 name: k33g75 name: k33g
70 email: ph.charriere@gmail.com76 email: ph.charriere@gmail.com
71 createdAt: 2026-10-29T07:20:00.000Z77 createdAt: 2026-10-29T07:20:00.000Z
78+ updatedAt: 2026-10-29T08:51:00.000Z
79+ closedAt: 2026-10-29T08:51:00.000Z
72 - id: 580 - id: 5
73 title: "Évaluer les SDK Go existants (maintenance, licence, couverture du protocole)"81 title: "Évaluer les SDK Go existants (maintenance, licence, couverture du protocole)"
74- state: open82+ state: closed
75 priority: high83 priority: high
76 author:84 author:
77 name: k33g85 name: k33g
78 email: ph.charriere@gmail.com86 email: ph.charriere@gmail.com
79 createdAt: 2026-10-29T07:20:00.000Z87 createdAt: 2026-10-29T07:20:00.000Z
88+ updatedAt: 2026-10-29T08:51:00.000Z
89+ closedAt: 2026-10-29T08:51:00.000Z
80 - id: 690 - id: 6
81 title: "Capturer une trace JSON-RPC réelle avec Alice (mm -acp)"91 title: "Capturer une trace JSON-RPC réelle avec Alice (mm -acp)"
82- state: open92+ state: closed
83 priority: medium93 priority: medium
84 author:94 author:
85 name: k33g95 name: k33g
86 email: ph.charriere@gmail.com96 email: ph.charriere@gmail.com
87 createdAt: 2026-10-29T07:20:00.000Z97 createdAt: 2026-10-29T07:20:00.000Z
98+ updatedAt: 2026-10-29T08:51:00.000Z
99+ closedAt: 2026-10-29T08:51:00.000Z
88 - id: 7100 - id: 7
89 title: "Capturer une trace avec Riker (tool call + demande de permission)"101 title: "Capturer une trace avec Riker (tool call + demande de permission)"
90- state: open102+ state: closed
91 priority: medium103 priority: medium
92 author:104 author:
93 name: k33g105 name: k33g
94 email: ph.charriere@gmail.com106 email: ph.charriere@gmail.com
95 createdAt: 2026-10-29T07:20:00.000Z107 createdAt: 2026-10-29T07:20:00.000Z
108+ updatedAt: 2026-10-29T08:51:00.000Z
109+ closedAt: 2026-10-29T08:51:00.000Z
96 - id: 8110 - id: 8
97 title: "Capturer une trace avec Garfield (commandes/skills exposés)"111 title: "Capturer une trace avec Garfield (commandes/skills exposés)"
98- state: open112+ state: closed
99 priority: medium113 priority: medium
100 author:114 author:
101 name: k33g115 name: k33g
102 email: ph.charriere@gmail.com116 email: ph.charriere@gmail.com
103 createdAt: 2026-10-29T07:20:00.000Z117 createdAt: 2026-10-29T07:20:00.000Z
118+ updatedAt: 2026-10-29T08:51:00.000Z
119+ closedAt: 2026-10-29T08:51:00.000Z
104 - id: 9120 - id: 9
105 title: "Rédiger l'ADR ACP"121 title: "Rédiger l'ADR ACP"
106- state: open122+ state: closed
107 priority: high123 priority: high
108 author:124 author:
109 name: k33g125 name: k33g
110 email: ph.charriere@gmail.com126 email: ph.charriere@gmail.com
111 createdAt: 2026-10-29T07:20:00.000Z127 createdAt: 2026-10-29T07:20:00.000Z
112-comments: []128+ updatedAt: 2026-10-29T08:51:00.000Z
129+ closedAt: 2026-10-29T08:51:00.000Z
130+comments:
131+ - id: 1
132+ author:
133+ name: k33g
134+ email: ph.charriere@gmail.com
135+ createdAt: 2026-10-29T08:51:00.000Z
136+ body: |
137+ ## Résultat — spike terminé
138+
139+ Décision et constats : [ADR 0001 — ACP](docs/adr/0001-acp.md). Client de capture : [spikes/acp-trace](spikes/acp-trace/README.md). Traces réelles : [docs/spikes/acp](docs/spikes/acp/README.md).
140+
141+ - **Protocole v1** : mm v1.0.3 répond `protocolVersion: 1` ; la v2 documentée sur le site est écartée pour l'instant.
142+ - **SDK** : `github.com/coder/acp-go-sdk` v0.13.5 (Apache-2.0, généré depuis le schéma officiel), encapsulé dans `internal/acp`.
143+ - **Une session ACP par (channel, agent)**.
144+ - **Pas de `loadSession` chez mm** → la reprise (#25) devra réinjecter le contexte.
145+ - **Commandes** = commandes intégrées de mm + skills (Garfield), envoyées comme texte `/idioms …` → validé.
146+ - **Permissions** : options `allow`, `allow_always`, `reject`, `never`. Après un refus `reject_once`, Riker a réessayé 40 fois puis le tour a fini en **erreur JSON-RPC** → impacts sur #17.
147+ - **Annulation** : `session/cancel` → `stopReason: cancelled`, vérifié avec Garfield.
148+
149+ Traces capturées un agent à la fois, via `scripts/agents.sh run`, modèle déchargé après chaque capture.
modified .tickets/issues/0003-spike-choisir-la-stack-wails-et-frontend.yaml +67 -10
@@ -1,12 +1,12 @@
11 # Managed by IssueSpec. Hand edits are welcome; keep the schema valid.
22 id: 3
33 title: "Spike : choisir la stack Wails et frontend"
4-state: open
4+state: closed
55 author:
66 name: k33g
77 email: ph.charriere@gmail.com
88 createdAt: 2026-10-29T07:20:01.000Z
9-updatedAt: 2026-10-29T07:20:01.000Z
9+updatedAt: 2026-10-29T09:30:00.000Z
1010 labels:
1111 - "kind::spike"
1212 - "area::ui"
@@ -42,58 +42,115 @@ body: |
4242 tasks:
4343 - id: 1
4444 title: "Comparer Wails v2 et v3 (stabilité, API events, multi-fenêtres)"
45- state: open
45+ state: closed
4646 priority: high
4747 author:
4848 name: k33g
4949 email: ph.charriere@gmail.com
5050 createdAt: 2026-10-29T07:20:01.000Z
51+ updatedAt: 2026-10-29T08:51:00.000Z
52+ closedAt: 2026-10-29T08:51:00.000Z
5153 - id: 2
5254 title: "Comparer CodeMirror 6 et Monaco (poids, YAML, thèmes)"
53- state: open
55+ state: closed
5456 priority: medium
5557 author:
5658 name: k33g
5759 email: ph.charriere@gmail.com
5860 createdAt: 2026-10-29T07:20:01.000Z
61+ updatedAt: 2026-10-29T08:51:00.000Z
62+ closedAt: 2026-10-29T08:51:00.000Z
5963 - id: 3
6064 title: "Valider xterm.js + PTY Go (creack/pty)"
61- state: open
65+ state: closed
6266 priority: medium
6367 author:
6468 name: k33g
6569 email: ph.charriere@gmail.com
6670 createdAt: 2026-10-29T07:20:01.000Z
71+ updatedAt: 2026-10-29T08:51:00.000Z
72+ closedAt: 2026-10-29T08:51:00.000Z
6773 - id: 4
6874 title: "Choisir la lib Markdown + coloration compatible streaming"
69- state: open
75+ state: closed
7076 priority: medium
7177 author:
7278 name: k33g
7379 email: ph.charriere@gmail.com
7480 createdAt: 2026-10-29T07:20:01.000Z
81+ updatedAt: 2026-10-29T08:51:00.000Z
82+ closedAt: 2026-10-29T08:51:00.000Z
7583 - id: 5
7684 title: "Choisir le framework frontend"
77- state: open
85+ state: closed
7886 priority: high
7987 author:
8088 name: k33g
8189 email: ph.charriere@gmail.com
8290 createdAt: 2026-10-29T07:20:01.000Z
91+ updatedAt: 2026-10-29T08:51:00.000Z
92+ closedAt: 2026-10-29T08:51:00.000Z
8393 - id: 6
8494 title: "Prototype jetable : panels + éditeur + terminal"
85- state: open
95+ state: closed
8696 priority: medium
8797 author:
8898 name: k33g
8999 email: ph.charriere@gmail.com
90100 createdAt: 2026-10-29T07:20:01.000Z
101+ updatedAt: 2026-10-29T08:51:00.000Z
102+ closedAt: 2026-10-29T08:51:00.000Z
91103 - id: 7
92104 title: "Rédiger l'ADR stack UI"
93- state: open
105+ state: closed
94106 priority: high
95107 author:
96108 name: k33g
97109 email: ph.charriere@gmail.com
98110 createdAt: 2026-10-29T07:20:01.000Z
99-comments: []
111+ updatedAt: 2026-10-29T08:51:00.000Z
112+ closedAt: 2026-10-29T08:51:00.000Z
113+ - id: 8
114+ title: "Lancer le prototype sur macOS (wails3 dev) et confirmer l'ADR 0002"
115+ state: closed
116+ priority: high
117+ author:
118+ name: k33g
119+ email: ph.charriere@gmail.com
120+ createdAt: 2026-10-29T08:51:00.000Z
121+ updatedAt: 2026-10-29T09:30:00.000Z
122+ closedAt: 2026-10-29T09:30:00.000Z
123+comments:
124+ - id: 1
125+ author:
126+ name: k33g
127+ email: ph.charriere@gmail.com
128+ createdAt: 2026-10-29T08:51:00.000Z
129+ body: |
130+ ## Résultat — décision prise, une vérification reste à faire sur macOS
131+
132+ [ADR 0002 — UI stack](docs/adr/0002-ui-stack.md), prototype [spikes/wails-ui](spikes/wails-ui/README.md).
133+
134+ - **Wails v3.0.0** (stable depuis le 26/10/2026) : services, événements typés, bindings TypeScript générés avec les commentaires Go, packaging macOS intégré.
135+ - **Svelte 5 + TypeScript**, **paneforge** (panels), **markdown-it + Shiki + DOMPurify**, **CodeMirror 6**, **xterm.js + creack/pty**.
136+ - Prototype compilé et lancé sous Linux (GTK4/WebKitGTK 6, Xvfb) : layout, streaming à 50 et 500 chunks/s (rendu une fois par frame), coloration pendant le streaming, HTML injecté non exécuté, vrai shell dans le terminal. Captures : `docs/spikes/ui/`.
137+
138+ **Reste ouvert** : la sandbox n'a pas de SDK macOS. Le prototype doit être lancé sur le Mac (`cd spikes/wails-ui && wails3 dev`) — tâche ajoutée ci-dessous. L'issue reste ouverte jusque-là.
139+ - id: 2
140+ author:
141+ name: k33g
142+ email: ph.charriere@gmail.com
143+ createdAt: 2026-10-29T09:05:00.000Z
144+ body: |
145+ Guide pas à pas pour la vérification sur Mac : [docs/fr/how-to/tester-la-milestone-initialize-sous-macos.md](docs/fr/how-to/tester-la-milestone-initialize-sous-macos.md) (EN : [docs/en/how-to/test-milestone-initialize-on-macos.md](docs/en/how-to/test-milestone-initialize-on-macos.md)). Les parties 4 et 5 couvrent cette issue ; elles expliquent aussi comment la fermer, ainsi que la milestone Initialize.
146+ - id: 3
147+ author:
148+ name: k33g
149+ email: ph.charriere@gmail.com
150+ createdAt: 2026-10-29T09:30:00.000Z
151+ body: |
152+ ## Vérifié sur macOS — issue fermée
153+
154+ Le propriétaire a déroulé le [guide de test macOS](docs/fr/how-to/tester-la-milestone-initialize-sous-macos.md) : `wails3 dev` et `wails3 package` fonctionnent (panels, streaming, coloration, terminal, éditeur, thèmes). Seul écart constaté : les boutons de fenêtre macOS recouvraient « CHANNELS » ; corrigé par une marge `--titlebar-inset` (38 px sous macOS, alignée sur `InvisibleTitleBarHeight`), à reprendre dans le vrai shell UI (#12).
155+
156+ [ADR 0002](docs/adr/0002-ui-stack.md) confirmé.
@@ -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: 32 id: 3
3 title: "Spike : choisir la stack Wails et frontend"3 title: "Spike : choisir la stack Wails et frontend"
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-10-29T07:20:01.000Z8 createdAt: 2026-10-29T07:20:01.000Z
9-updatedAt: 2026-10-29T07:20:01.000Z9+updatedAt: 2026-10-29T09:30:00.000Z
10 labels:10 labels:
11 - "kind::spike"11 - "kind::spike"
12 - "area::ui"12 - "area::ui"
@@ -42,58 +42,115 @@ body: |
42 tasks:42 tasks:
43 - id: 143 - id: 1
44 title: "Comparer Wails v2 et v3 (stabilité, API events, multi-fenêtres)"44 title: "Comparer Wails v2 et v3 (stabilité, API events, multi-fenêtres)"
45- state: open45+ state: closed
46 priority: high46 priority: high
47 author:47 author:
48 name: k33g48 name: k33g
49 email: ph.charriere@gmail.com49 email: ph.charriere@gmail.com
50 createdAt: 2026-10-29T07:20:01.000Z50 createdAt: 2026-10-29T07:20:01.000Z
51+ updatedAt: 2026-10-29T08:51:00.000Z
52+ closedAt: 2026-10-29T08:51:00.000Z
51 - id: 253 - id: 2
52 title: "Comparer CodeMirror 6 et Monaco (poids, YAML, thèmes)"54 title: "Comparer CodeMirror 6 et Monaco (poids, YAML, thèmes)"
53- state: open55+ state: closed
54 priority: medium56 priority: medium
55 author:57 author:
56 name: k33g58 name: k33g
57 email: ph.charriere@gmail.com59 email: ph.charriere@gmail.com
58 createdAt: 2026-10-29T07:20:01.000Z60 createdAt: 2026-10-29T07:20:01.000Z
61+ updatedAt: 2026-10-29T08:51:00.000Z
62+ closedAt: 2026-10-29T08:51:00.000Z
59 - id: 363 - id: 3
60 title: "Valider xterm.js + PTY Go (creack/pty)"64 title: "Valider xterm.js + PTY Go (creack/pty)"
61- state: open65+ state: closed
62 priority: medium66 priority: medium
63 author:67 author:
64 name: k33g68 name: k33g
65 email: ph.charriere@gmail.com69 email: ph.charriere@gmail.com
66 createdAt: 2026-10-29T07:20:01.000Z70 createdAt: 2026-10-29T07:20:01.000Z
71+ updatedAt: 2026-10-29T08:51:00.000Z
72+ closedAt: 2026-10-29T08:51:00.000Z
67 - id: 473 - id: 4
68 title: "Choisir la lib Markdown + coloration compatible streaming"74 title: "Choisir la lib Markdown + coloration compatible streaming"
69- state: open75+ state: closed
70 priority: medium76 priority: medium
71 author:77 author:
72 name: k33g78 name: k33g
73 email: ph.charriere@gmail.com79 email: ph.charriere@gmail.com
74 createdAt: 2026-10-29T07:20:01.000Z80 createdAt: 2026-10-29T07:20:01.000Z
81+ updatedAt: 2026-10-29T08:51:00.000Z
82+ closedAt: 2026-10-29T08:51:00.000Z
75 - id: 583 - id: 5
76 title: "Choisir le framework frontend"84 title: "Choisir le framework frontend"
77- state: open85+ state: closed
78 priority: high86 priority: high
79 author:87 author:
80 name: k33g88 name: k33g
81 email: ph.charriere@gmail.com89 email: ph.charriere@gmail.com
82 createdAt: 2026-10-29T07:20:01.000Z90 createdAt: 2026-10-29T07:20:01.000Z
91+ updatedAt: 2026-10-29T08:51:00.000Z
92+ closedAt: 2026-10-29T08:51:00.000Z
83 - id: 693 - id: 6
84 title: "Prototype jetable : panels + éditeur + terminal"94 title: "Prototype jetable : panels + éditeur + terminal"
85- state: open95+ state: closed
86 priority: medium96 priority: medium
87 author:97 author:
88 name: k33g98 name: k33g
89 email: ph.charriere@gmail.com99 email: ph.charriere@gmail.com
90 createdAt: 2026-10-29T07:20:01.000Z100 createdAt: 2026-10-29T07:20:01.000Z
101+ updatedAt: 2026-10-29T08:51:00.000Z
102+ closedAt: 2026-10-29T08:51:00.000Z
91 - id: 7103 - id: 7
92 title: "Rédiger l'ADR stack UI"104 title: "Rédiger l'ADR stack UI"
93- state: open105+ state: closed
94 priority: high106 priority: high
95 author:107 author:
96 name: k33g108 name: k33g
97 email: ph.charriere@gmail.com109 email: ph.charriere@gmail.com
98 createdAt: 2026-10-29T07:20:01.000Z110 createdAt: 2026-10-29T07:20:01.000Z
99-comments: []111+ updatedAt: 2026-10-29T08:51:00.000Z
112+ closedAt: 2026-10-29T08:51:00.000Z
113+ - id: 8
114+ title: "Lancer le prototype sur macOS (wails3 dev) et confirmer l'ADR 0002"
115+ state: closed
116+ priority: high
117+ author:
118+ name: k33g
119+ email: ph.charriere@gmail.com
120+ createdAt: 2026-10-29T08:51:00.000Z
121+ updatedAt: 2026-10-29T09:30:00.000Z
122+ closedAt: 2026-10-29T09:30:00.000Z
123+comments:
124+ - id: 1
125+ author:
126+ name: k33g
127+ email: ph.charriere@gmail.com
128+ createdAt: 2026-10-29T08:51:00.000Z
129+ body: |
130+ ## Résultat — décision prise, une vérification reste à faire sur macOS
131+
132+ [ADR 0002 — UI stack](docs/adr/0002-ui-stack.md), prototype [spikes/wails-ui](spikes/wails-ui/README.md).
133+
134+ - **Wails v3.0.0** (stable depuis le 26/10/2026) : services, événements typés, bindings TypeScript générés avec les commentaires Go, packaging macOS intégré.
135+ - **Svelte 5 + TypeScript**, **paneforge** (panels), **markdown-it + Shiki + DOMPurify**, **CodeMirror 6**, **xterm.js + creack/pty**.
136+ - Prototype compilé et lancé sous Linux (GTK4/WebKitGTK 6, Xvfb) : layout, streaming à 50 et 500 chunks/s (rendu une fois par frame), coloration pendant le streaming, HTML injecté non exécuté, vrai shell dans le terminal. Captures : `docs/spikes/ui/`.
137+
138+ **Reste ouvert** : la sandbox n'a pas de SDK macOS. Le prototype doit être lancé sur le Mac (`cd spikes/wails-ui && wails3 dev`) — tâche ajoutée ci-dessous. L'issue reste ouverte jusque-là.
139+ - id: 2
140+ author:
141+ name: k33g
142+ email: ph.charriere@gmail.com
143+ createdAt: 2026-10-29T09:05:00.000Z
144+ body: |
145+ Guide pas à pas pour la vérification sur Mac : [docs/fr/how-to/tester-la-milestone-initialize-sous-macos.md](docs/fr/how-to/tester-la-milestone-initialize-sous-macos.md) (EN : [docs/en/how-to/test-milestone-initialize-on-macos.md](docs/en/how-to/test-milestone-initialize-on-macos.md)). Les parties 4 et 5 couvrent cette issue ; elles expliquent aussi comment la fermer, ainsi que la milestone Initialize.
146+ - id: 3
147+ author:
148+ name: k33g
149+ email: ph.charriere@gmail.com
150+ createdAt: 2026-10-29T09:30:00.000Z
151+ body: |
152+ ## Vérifié sur macOS — issue fermée
153+
154+ Le propriétaire a déroulé le [guide de test macOS](docs/fr/how-to/tester-la-milestone-initialize-sous-macos.md) : `wails3 dev` et `wails3 package` fonctionnent (panels, streaming, coloration, terminal, éditeur, thèmes). Seul écart constaté : les boutons de fenêtre macOS recouvraient « CHANNELS » ; corrigé par une marge `--titlebar-inset` (38 px sous macOS, alignée sur `InvisibleTitleBarHeight`), à reprendre dans le vrai shell UI (#12).
155+
156+ [ADR 0002](docs/adr/0002-ui-stack.md) confirmé.
modified .tickets/issues/0004-specifier-le-format-du-fichier-de-configuration.yaml +35 -9
@@ -1,12 +1,12 @@
11 # Managed by IssueSpec. Hand edits are welcome; keep the schema valid.
22 id: 4
33 title: "Spécifier le format du fichier de configuration YAML"
4-state: open
4+state: closed
55 author:
66 name: k33g
77 email: ph.charriere@gmail.com
88 createdAt: 2026-10-29T07:20:02.000Z
9-updatedAt: 2026-10-29T07:20:02.000Z
9+updatedAt: 2026-10-29T08:51:00.000Z
1010 labels:
1111 - "kind::chore"
1212 - "documentation"
@@ -55,50 +55,76 @@ body: |
5555 tasks:
5656 - id: 1
5757 title: "Lister les clés agents / channels / ui / runtime"
58- state: open
58+ state: closed
5959 priority: high
6060 author:
6161 name: k33g
6262 email: ph.charriere@gmail.com
6363 createdAt: 2026-10-29T07:20:02.000Z
64+ updatedAt: 2026-10-29T08:51:00.000Z
65+ closedAt: 2026-10-29T08:51:00.000Z
6466 - id: 2
6567 title: "Définir les règles de nommage (nom technique pour @ vs titre affiché)"
66- state: open
68+ state: closed
6769 priority: medium
6870 author:
6971 name: k33g
7072 email: ph.charriere@gmail.com
7173 createdAt: 2026-10-29T07:20:02.000Z
74+ updatedAt: 2026-10-29T08:51:00.000Z
75+ closedAt: 2026-10-29T08:51:00.000Z
7276 - id: 3
7377 title: "Définir l'emplacement par défaut et l'ordre de priorité des surcharges"
74- state: open
78+ state: closed
7579 priority: high
7680 author:
7781 name: k33g
7882 email: ph.charriere@gmail.com
7983 createdAt: 2026-10-29T07:20:02.000Z
84+ updatedAt: 2026-10-29T08:51:00.000Z
85+ closedAt: 2026-10-29T08:51:00.000Z
8086 - id: 4
8187 title: "Définir la résolution des chemins relatifs"
82- state: open
88+ state: closed
8389 priority: medium
8490 author:
8591 name: k33g
8692 email: ph.charriere@gmail.com
8793 createdAt: 2026-10-29T07:20:02.000Z
94+ updatedAt: 2026-10-29T08:51:00.000Z
95+ closedAt: 2026-10-29T08:51:00.000Z
8896 - id: 5
8997 title: "Écrire le JSON Schema"
90- state: open
98+ state: closed
9199 priority: medium
92100 author:
93101 name: k33g
94102 email: ph.charriere@gmail.com
95103 createdAt: 2026-10-29T07:20:02.000Z
104+ updatedAt: 2026-10-29T08:51:00.000Z
105+ closedAt: 2026-10-29T08:51:00.000Z
96106 - id: 6
97107 title: "Écrire l'exemple avec Alice, Bob, Riker, Garfield"
98- state: open
108+ state: closed
99109 priority: medium
100110 author:
101111 name: k33g
102112 email: ph.charriere@gmail.com
103113 createdAt: 2026-10-29T07:20:02.000Z
104-comments: []
114+ updatedAt: 2026-10-29T08:51:00.000Z
115+ closedAt: 2026-10-29T08:51:00.000Z
116+comments:
117+ - id: 1
118+ author:
119+ name: k33g
120+ email: ph.charriere@gmail.com
121+ createdAt: 2026-10-29T08:51:00.000Z
122+ body: |
123+ ## Résultat
124+
125+ - Référence (EN/FR) : [docs/en/reference/configuration.md](docs/en/reference/configuration.md), [docs/fr/reference/configuration.md](docs/fr/reference/configuration.md).
126+ - JSON Schema : [schema/config.schema.json](schema/config.schema.json), embarqué par le package Go `schema` (`ValidateConfig`), réutilisable par #9 et #18.
127+ - Exemple avec les 4 agents de test : [examples/test-agents.yaml](examples/test-agents.yaml) — les agents passent par `scripts/agents.sh run`, donc la limite de 2 s'applique aussi à Sidekicks en dev.
128+ - Tests : 4 documents valides, 12 invalides (chacun rejeté pour la bonne raison) — `make test`.
129+
130+ Choix notables : clés inconnues = erreurs (fautes de frappe signalées), `limits.maxRunningAgents` / `stopIdleAgentsAfter`, `runtime` en `if/then` plutôt que `oneOf` pour des erreurs lisibles, les règles inter-entrées (noms uniques, membres existants) relèvent du chargeur (#9).
@@ -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: 42 id: 4
3 title: "Spécifier le format du fichier de configuration YAML"3 title: "Spécifier le format du fichier de configuration YAML"
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-10-29T07:20:02.000Z8 createdAt: 2026-10-29T07:20:02.000Z
9-updatedAt: 2026-10-29T07:20:02.000Z9+updatedAt: 2026-10-29T08:51:00.000Z
10 labels:10 labels:
11 - "kind::chore"11 - "kind::chore"
12 - "documentation"12 - "documentation"
@@ -55,50 +55,76 @@ body: |
55 tasks:55 tasks:
56 - id: 156 - id: 1
57 title: "Lister les clés agents / channels / ui / runtime"57 title: "Lister les clés agents / channels / ui / runtime"
58- state: open58+ state: closed
59 priority: high59 priority: high
60 author:60 author:
61 name: k33g61 name: k33g
62 email: ph.charriere@gmail.com62 email: ph.charriere@gmail.com
63 createdAt: 2026-10-29T07:20:02.000Z63 createdAt: 2026-10-29T07:20:02.000Z
64+ updatedAt: 2026-10-29T08:51:00.000Z
65+ closedAt: 2026-10-29T08:51:00.000Z
64 - id: 266 - id: 2
65 title: "Définir les règles de nommage (nom technique pour @ vs titre affiché)"67 title: "Définir les règles de nommage (nom technique pour @ vs titre affiché)"
66- state: open68+ state: closed
67 priority: medium69 priority: medium
68 author:70 author:
69 name: k33g71 name: k33g
70 email: ph.charriere@gmail.com72 email: ph.charriere@gmail.com
71 createdAt: 2026-10-29T07:20:02.000Z73 createdAt: 2026-10-29T07:20:02.000Z
74+ updatedAt: 2026-10-29T08:51:00.000Z
75+ closedAt: 2026-10-29T08:51:00.000Z
72 - id: 376 - id: 3
73 title: "Définir l'emplacement par défaut et l'ordre de priorité des surcharges"77 title: "Définir l'emplacement par défaut et l'ordre de priorité des surcharges"
74- state: open78+ state: closed
75 priority: high79 priority: high
76 author:80 author:
77 name: k33g81 name: k33g
78 email: ph.charriere@gmail.com82 email: ph.charriere@gmail.com
79 createdAt: 2026-10-29T07:20:02.000Z83 createdAt: 2026-10-29T07:20:02.000Z
84+ updatedAt: 2026-10-29T08:51:00.000Z
85+ closedAt: 2026-10-29T08:51:00.000Z
80 - id: 486 - id: 4
81 title: "Définir la résolution des chemins relatifs"87 title: "Définir la résolution des chemins relatifs"
82- state: open88+ state: closed
83 priority: medium89 priority: medium
84 author:90 author:
85 name: k33g91 name: k33g
86 email: ph.charriere@gmail.com92 email: ph.charriere@gmail.com
87 createdAt: 2026-10-29T07:20:02.000Z93 createdAt: 2026-10-29T07:20:02.000Z
94+ updatedAt: 2026-10-29T08:51:00.000Z
95+ closedAt: 2026-10-29T08:51:00.000Z
88 - id: 596 - id: 5
89 title: "Écrire le JSON Schema"97 title: "Écrire le JSON Schema"
90- state: open98+ state: closed
91 priority: medium99 priority: medium
92 author:100 author:
93 name: k33g101 name: k33g
94 email: ph.charriere@gmail.com102 email: ph.charriere@gmail.com
95 createdAt: 2026-10-29T07:20:02.000Z103 createdAt: 2026-10-29T07:20:02.000Z
104+ updatedAt: 2026-10-29T08:51:00.000Z
105+ closedAt: 2026-10-29T08:51:00.000Z
96 - id: 6106 - id: 6
97 title: "Écrire l'exemple avec Alice, Bob, Riker, Garfield"107 title: "Écrire l'exemple avec Alice, Bob, Riker, Garfield"
98- state: open108+ state: closed
99 priority: medium109 priority: medium
100 author:110 author:
101 name: k33g111 name: k33g
102 email: ph.charriere@gmail.com112 email: ph.charriere@gmail.com
103 createdAt: 2026-10-29T07:20:02.000Z113 createdAt: 2026-10-29T07:20:02.000Z
104-comments: []114+ updatedAt: 2026-10-29T08:51:00.000Z
115+ closedAt: 2026-10-29T08:51:00.000Z
116+comments:
117+ - id: 1
118+ author:
119+ name: k33g
120+ email: ph.charriere@gmail.com
121+ createdAt: 2026-10-29T08:51:00.000Z
122+ body: |
123+ ## Résultat
124+
125+ - Référence (EN/FR) : [docs/en/reference/configuration.md](docs/en/reference/configuration.md), [docs/fr/reference/configuration.md](docs/fr/reference/configuration.md).
126+ - JSON Schema : [schema/config.schema.json](schema/config.schema.json), embarqué par le package Go `schema` (`ValidateConfig`), réutilisable par #9 et #18.
127+ - Exemple avec les 4 agents de test : [examples/test-agents.yaml](examples/test-agents.yaml) — les agents passent par `scripts/agents.sh run`, donc la limite de 2 s'applique aussi à Sidekicks en dev.
128+ - Tests : 4 documents valides, 12 invalides (chacun rejeté pour la bonne raison) — `make test`.
129+
130+ Choix notables : clés inconnues = erreurs (fautes de frappe signalées), `limits.maxRunningAgents` / `stopIdleAgentsAfter`, `runtime` en `if/then` plutôt que `oneOf` pour des erreurs lisibles, les règles inter-entrées (noms uniques, membres existants) relèvent du chargeur (#9).
modified .tickets/issues/0005-definir-l-architecture-et-le-modele-de-donnees.yaml +32 -8
@@ -1,12 +1,12 @@
11 # Managed by IssueSpec. Hand edits are welcome; keep the schema valid.
22 id: 5
33 title: "Définir l'architecture et le modèle de données"
4-state: open
4+state: closed
55 author:
66 name: k33g
77 email: ph.charriere@gmail.com
88 createdAt: 2026-10-29T07:20:03.000Z
9-updatedAt: 2026-10-29T07:20:03.000Z
9+updatedAt: 2026-10-29T08:51:00.000Z
1010 labels:
1111 - "kind::chore"
1212 - "documentation"
@@ -49,42 +49,66 @@ body: |
4949 tasks:
5050 - id: 1
5151 title: "Découpage en packages et responsabilités"
52- state: open
52+ state: closed
5353 priority: high
5454 author:
5555 name: k33g
5656 email: ph.charriere@gmail.com
5757 createdAt: 2026-10-29T07:20:03.000Z
58+ updatedAt: 2026-10-29T08:51:00.000Z
59+ closedAt: 2026-10-29T08:51:00.000Z
5860 - id: 2
5961 title: "Modèle de données et schéma de clés Pebble"
60- state: open
62+ state: closed
6163 priority: high
6264 author:
6365 name: k33g
6466 email: ph.charriere@gmail.com
6567 createdAt: 2026-10-29T07:20:03.000Z
68+ updatedAt: 2026-10-29T08:51:00.000Z
69+ closedAt: 2026-10-29T08:51:00.000Z
6670 - id: 3
6771 title: "Décider : 1 session ACP par (channel, agent)"
68- state: open
72+ state: closed
6973 priority: medium
7074 author:
7175 name: k33g
7276 email: ph.charriere@gmail.com
7377 createdAt: 2026-10-29T07:20:03.000Z
78+ updatedAt: 2026-10-29T08:51:00.000Z
79+ closedAt: 2026-10-29T08:51:00.000Z
7480 - id: 4
7581 title: "Catalogue des événements Wails backend → frontend"
76- state: open
82+ state: closed
7783 priority: medium
7884 author:
7985 name: k33g
8086 email: ph.charriere@gmail.com
8187 createdAt: 2026-10-29T07:20:03.000Z
88+ updatedAt: 2026-10-29T08:51:00.000Z
89+ closedAt: 2026-10-29T08:51:00.000Z
8290 - id: 5
8391 title: "Schéma d'architecture"
84- state: open
92+ state: closed
8593 priority: medium
8694 author:
8795 name: k33g
8896 email: ph.charriere@gmail.com
8997 createdAt: 2026-10-29T07:20:03.000Z
90-comments: []
98+ updatedAt: 2026-10-29T08:51:00.000Z
99+ closedAt: 2026-10-29T08:51:00.000Z
100+comments:
101+ - id: 1
102+ author:
103+ name: k33g
104+ email: ph.charriere@gmail.com
105+ createdAt: 2026-10-29T08:51:00.000Z
106+ body: |
107+ ## Résultat
108+
109+ [ADR 0003 — architecture](docs/adr/0003-architecture.md) et schéma [docs/diagrams/packages.drawio](docs/diagrams/packages.drawio) (+ SVG/PNG).
110+
111+ - Packages : `cmd/sidekicks`, `internal/app` (seule API vue par l'UI), `channels`, `agents`, `acp`, `config`, `store`, `workspace`, `schema`.
112+ - YAML = ce qui existe ; Pebble v2 = ce qui se passe (une base par fichier de config) ; les channels n'ont qu'une maison : Pebble.
113+ - Modèle de données (ULID), clés Pebble, catalogue de 12 événements, flux d'un message.
114+ - Un message est écrit à la fin du tour, pas à chaque chunk.
@@ -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: 52 id: 5
3 title: "Définir l'architecture et le modèle de données"3 title: "Définir l'architecture et le modèle de données"
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-10-29T07:20:03.000Z8 createdAt: 2026-10-29T07:20:03.000Z
9-updatedAt: 2026-10-29T07:20:03.000Z9+updatedAt: 2026-10-29T08:51:00.000Z
10 labels:10 labels:
11 - "kind::chore"11 - "kind::chore"
12 - "documentation"12 - "documentation"
@@ -49,42 +49,66 @@ body: |
49 tasks:49 tasks:
50 - id: 150 - id: 1
51 title: "Découpage en packages et responsabilités"51 title: "Découpage en packages et responsabilités"
52- state: open52+ state: closed
53 priority: high53 priority: high
54 author:54 author:
55 name: k33g55 name: k33g
56 email: ph.charriere@gmail.com56 email: ph.charriere@gmail.com
57 createdAt: 2026-10-29T07:20:03.000Z57 createdAt: 2026-10-29T07:20:03.000Z
58+ updatedAt: 2026-10-29T08:51:00.000Z
59+ closedAt: 2026-10-29T08:51:00.000Z
58 - id: 260 - id: 2
59 title: "Modèle de données et schéma de clés Pebble"61 title: "Modèle de données et schéma de clés Pebble"
60- state: open62+ state: closed
61 priority: high63 priority: high
62 author:64 author:
63 name: k33g65 name: k33g
64 email: ph.charriere@gmail.com66 email: ph.charriere@gmail.com
65 createdAt: 2026-10-29T07:20:03.000Z67 createdAt: 2026-10-29T07:20:03.000Z
68+ updatedAt: 2026-10-29T08:51:00.000Z
69+ closedAt: 2026-10-29T08:51:00.000Z
66 - id: 370 - id: 3
67 title: "Décider : 1 session ACP par (channel, agent)"71 title: "Décider : 1 session ACP par (channel, agent)"
68- state: open72+ state: closed
69 priority: medium73 priority: medium
70 author:74 author:
71 name: k33g75 name: k33g
72 email: ph.charriere@gmail.com76 email: ph.charriere@gmail.com
73 createdAt: 2026-10-29T07:20:03.000Z77 createdAt: 2026-10-29T07:20:03.000Z
78+ updatedAt: 2026-10-29T08:51:00.000Z
79+ closedAt: 2026-10-29T08:51:00.000Z
74 - id: 480 - id: 4
75 title: "Catalogue des événements Wails backend → frontend"81 title: "Catalogue des événements Wails backend → frontend"
76- state: open82+ state: closed
77 priority: medium83 priority: medium
78 author:84 author:
79 name: k33g85 name: k33g
80 email: ph.charriere@gmail.com86 email: ph.charriere@gmail.com
81 createdAt: 2026-10-29T07:20:03.000Z87 createdAt: 2026-10-29T07:20:03.000Z
88+ updatedAt: 2026-10-29T08:51:00.000Z
89+ closedAt: 2026-10-29T08:51:00.000Z
82 - id: 590 - id: 5
83 title: "Schéma d'architecture"91 title: "Schéma d'architecture"
84- state: open92+ state: closed
85 priority: medium93 priority: medium
86 author:94 author:
87 name: k33g95 name: k33g
88 email: ph.charriere@gmail.com96 email: ph.charriere@gmail.com
89 createdAt: 2026-10-29T07:20:03.000Z97 createdAt: 2026-10-29T07:20:03.000Z
90-comments: []98+ updatedAt: 2026-10-29T08:51:00.000Z
99+ closedAt: 2026-10-29T08:51:00.000Z
100+comments:
101+ - id: 1
102+ author:
103+ name: k33g
104+ email: ph.charriere@gmail.com
105+ createdAt: 2026-10-29T08:51:00.000Z
106+ body: |
107+ ## Résultat
108+
109+ [ADR 0003 — architecture](docs/adr/0003-architecture.md) et schéma [docs/diagrams/packages.drawio](docs/diagrams/packages.drawio) (+ SVG/PNG).
110+
111+ - Packages : `cmd/sidekicks`, `internal/app` (seule API vue par l'UI), `channels`, `agents`, `acp`, `config`, `store`, `workspace`, `schema`.
112+ - YAML = ce qui existe ; Pebble v2 = ce qui se passe (une base par fichier de config) ; les channels n'ont qu'une maison : Pebble.
113+ - Modèle de données (ULID), clés Pebble, catalogue de 12 événements, flux d'un message.
114+ - Un message est écrit à la fin du tour, pas à chaque chunk.
modified .tickets/issues/0006-maquettes-ux-des-panels-pour-le-citizen-user.yaml +34 -9
@@ -1,12 +1,12 @@
11 # Managed by IssueSpec. Hand edits are welcome; keep the schema valid.
22 id: 6
33 title: "Maquettes UX des panels pour le citizen user"
4-state: open
4+state: closed
55 author:
66 name: k33g
77 email: ph.charriere@gmail.com
88 createdAt: 2026-10-29T07:20:04.000Z
9-updatedAt: 2026-10-29T07:20:04.000Z
9+updatedAt: 2026-10-29T08:51:00.000Z
1010 labels:
1111 - "kind::chore"
1212 - "area::ui"
@@ -38,50 +38,75 @@ body: |
3838 tasks:
3939 - id: 1
4040 title: "Layout global et docks"
41- state: open
41+ state: closed
4242 priority: medium
4343 author:
4444 name: k33g
4545 email: ph.charriere@gmail.com
4646 createdAt: 2026-10-29T07:20:04.000Z
47+ updatedAt: 2026-10-29T08:51:00.000Z
48+ closedAt: 2026-10-29T08:51:00.000Z
4749 - id: 2
4850 title: "Vue conversation multi-agents"
49- state: open
51+ state: closed
5052 priority: medium
5153 author:
5254 name: k33g
5355 email: ph.charriere@gmail.com
5456 createdAt: 2026-10-29T07:20:04.000Z
57+ updatedAt: 2026-10-29T08:51:00.000Z
58+ closedAt: 2026-10-29T08:51:00.000Z
5559 - id: 3
5660 title: "Popups @ et /"
57- state: open
61+ state: closed
5862 priority: medium
5963 author:
6064 name: k33g
6165 email: ph.charriere@gmail.com
6266 createdAt: 2026-10-29T07:20:04.000Z
67+ updatedAt: 2026-10-29T08:51:00.000Z
68+ closedAt: 2026-10-29T08:51:00.000Z
6369 - id: 4
6470 title: "Dialogue de permission"
65- state: open
71+ state: closed
6672 priority: high
6773 author:
6874 name: k33g
6975 email: ph.charriere@gmail.com
7076 createdAt: 2026-10-29T07:20:04.000Z
77+ updatedAt: 2026-10-29T08:51:00.000Z
78+ closedAt: 2026-10-29T08:51:00.000Z
7179 - id: 5
7280 title: "Panel Agents (treeview + terminal)"
73- state: open
81+ state: closed
7482 priority: medium
7583 author:
7684 name: k33g
7785 email: ph.charriere@gmail.com
7886 createdAt: 2026-10-29T07:20:04.000Z
87+ updatedAt: 2026-10-29T08:51:00.000Z
88+ closedAt: 2026-10-29T08:51:00.000Z
7989 - id: 6
8090 title: "Écran de premier lancement"
81- state: open
91+ state: closed
8292 priority: medium
8393 author:
8494 name: k33g
8595 email: ph.charriere@gmail.com
8696 createdAt: 2026-10-29T07:20:04.000Z
87-comments: []
97+ updatedAt: 2026-10-29T08:51:00.000Z
98+ closedAt: 2026-10-29T08:51:00.000Z
99+comments:
100+ - id: 1
101+ author:
102+ name: k33g
103+ email: ph.charriere@gmail.com
104+ createdAt: 2026-10-29T08:51:00.000Z
105+ body: |
106+ ## Résultat
107+
108+ 6 écrans en draw.io (une page par écran) : [docs/design](docs/design/README.md) — `wireframes.drawio` + SVG/PNG, générés par `docs/design/wireframes.py` pour que le .drawio et les images ne divergent pas.
109+
110+ Décisions visibles dans les maquettes : seuls la conversation et le dock gauche sont visibles par défaut ; la permission est attachée à la conversation et propose toujours « Ne plus jamais » et « Arrêter l'agent » (conséquence du spike #2) ; l'arrivée d'un agent dans un channel est annoncée ; le premier lancement ne montre jamais de YAML.
111+
112+ À valider par toi : le parcours « je crée un channel, j'invite Alice, je lui pose une question » (critère d'acceptation).
@@ -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: 62 id: 6
3 title: "Maquettes UX des panels pour le citizen user"3 title: "Maquettes UX des panels pour le citizen user"
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-10-29T07:20:04.000Z8 createdAt: 2026-10-29T07:20:04.000Z
9-updatedAt: 2026-10-29T07:20:04.000Z9+updatedAt: 2026-10-29T08:51:00.000Z
10 labels:10 labels:
11 - "kind::chore"11 - "kind::chore"
12 - "area::ui"12 - "area::ui"
@@ -38,50 +38,75 @@ body: |
38 tasks:38 tasks:
39 - id: 139 - id: 1
40 title: "Layout global et docks"40 title: "Layout global et docks"
41- state: open41+ state: closed
42 priority: medium42 priority: medium
43 author:43 author:
44 name: k33g44 name: k33g
45 email: ph.charriere@gmail.com45 email: ph.charriere@gmail.com
46 createdAt: 2026-10-29T07:20:04.000Z46 createdAt: 2026-10-29T07:20:04.000Z
47+ updatedAt: 2026-10-29T08:51:00.000Z
48+ closedAt: 2026-10-29T08:51:00.000Z
47 - id: 249 - id: 2
48 title: "Vue conversation multi-agents"50 title: "Vue conversation multi-agents"
49- state: open51+ state: closed
50 priority: medium52 priority: medium
51 author:53 author:
52 name: k33g54 name: k33g
53 email: ph.charriere@gmail.com55 email: ph.charriere@gmail.com
54 createdAt: 2026-10-29T07:20:04.000Z56 createdAt: 2026-10-29T07:20:04.000Z
57+ updatedAt: 2026-10-29T08:51:00.000Z
58+ closedAt: 2026-10-29T08:51:00.000Z
55 - id: 359 - id: 3
56 title: "Popups @ et /"60 title: "Popups @ et /"
57- state: open61+ state: closed
58 priority: medium62 priority: medium
59 author:63 author:
60 name: k33g64 name: k33g
61 email: ph.charriere@gmail.com65 email: ph.charriere@gmail.com
62 createdAt: 2026-10-29T07:20:04.000Z66 createdAt: 2026-10-29T07:20:04.000Z
67+ updatedAt: 2026-10-29T08:51:00.000Z
68+ closedAt: 2026-10-29T08:51:00.000Z
63 - id: 469 - id: 4
64 title: "Dialogue de permission"70 title: "Dialogue de permission"
65- state: open71+ state: closed
66 priority: high72 priority: high
67 author:73 author:
68 name: k33g74 name: k33g
69 email: ph.charriere@gmail.com75 email: ph.charriere@gmail.com
70 createdAt: 2026-10-29T07:20:04.000Z76 createdAt: 2026-10-29T07:20:04.000Z
77+ updatedAt: 2026-10-29T08:51:00.000Z
78+ closedAt: 2026-10-29T08:51:00.000Z
71 - id: 579 - id: 5
72 title: "Panel Agents (treeview + terminal)"80 title: "Panel Agents (treeview + terminal)"
73- state: open81+ state: closed
74 priority: medium82 priority: medium
75 author:83 author:
76 name: k33g84 name: k33g
77 email: ph.charriere@gmail.com85 email: ph.charriere@gmail.com
78 createdAt: 2026-10-29T07:20:04.000Z86 createdAt: 2026-10-29T07:20:04.000Z
87+ updatedAt: 2026-10-29T08:51:00.000Z
88+ closedAt: 2026-10-29T08:51:00.000Z
79 - id: 689 - id: 6
80 title: "Écran de premier lancement"90 title: "Écran de premier lancement"
81- state: open91+ state: closed
82 priority: medium92 priority: medium
83 author:93 author:
84 name: k33g94 name: k33g
85 email: ph.charriere@gmail.com95 email: ph.charriere@gmail.com
86 createdAt: 2026-10-29T07:20:04.000Z96 createdAt: 2026-10-29T07:20:04.000Z
87-comments: []97+ updatedAt: 2026-10-29T08:51:00.000Z
98+ closedAt: 2026-10-29T08:51:00.000Z
99+comments:
100+ - id: 1
101+ author:
102+ name: k33g
103+ email: ph.charriere@gmail.com
104+ createdAt: 2026-10-29T08:51:00.000Z
105+ body: |
106+ ## Résultat
107+
108+ 6 écrans en draw.io (une page par écran) : [docs/design](docs/design/README.md) — `wireframes.drawio` + SVG/PNG, générés par `docs/design/wireframes.py` pour que le .drawio et les images ne divergent pas.
109+
110+ Décisions visibles dans les maquettes : seuls la conversation et le dock gauche sont visibles par défaut ; la permission est attachée à la conversation et propose toujours « Ne plus jamais » et « Arrêter l'agent » (conséquence du spike #2) ; l'arrivée d'un agent dans un channel est annoncée ; le premier lancement ne montre jamais de YAML.
111+
112+ À valider par toi : le parcours « je crée un channel, j'invite Alice, je lui pose une question » (critère d'acceptation).
modified .tickets/issues/0007-outillage-de-test-avec-les-agents-reels-2-agents.yaml +34 -8
Large diff collapsed to keep the page fast — load it when you need it.
modified .tickets/issues/0008-initialiser-le-projet-go-wails.yaml +12 -1
@@ -6,7 +6,7 @@ author:
66 name: k33g
77 email: ph.charriere@gmail.com
88 createdAt: 2026-10-29T07:20:06.000Z
9-updatedAt: 2026-10-29T08:10:00.000Z
9+updatedAt: 2026-10-29T08:51:00.000Z
1010 labels:
1111 - "kind::chore"
1212 - "area::infra"
@@ -127,3 +127,14 @@ comments:
127127 - Les fichiers générés (bindings `wailsjs/`, `go.sum`, lockfiles) et les fichiers de config tiers ne portent pas d'en-tête.
128128 - Les scripts personnels à la racine (`git.sh`, `new.*.sh`, `tag-step.sh`) sont hors convention : ce sont des outils de l'auteur, pas du code du projet.
129129 - L'année reste celle de la création du fichier.
130+ - id: 2
131+ author:
132+ name: k33g
133+ email: ph.charriere@gmail.com
134+ createdAt: 2026-10-29T08:51:00.000Z
135+ body: |
136+ Apports de la milestone Initialize :
137+
138+ - `go.mod` existe déjà à la racine (`git.rickub.com/bots-garden/sidekicks`, go 1.26) avec le package `schema`. `wails3 init` génère son propre go.mod : partir du template Svelte dans un dossier temporaire et reporter `main.go`, `frontend/`, `build/`, `Taskfile.yml` à la racine.
139+ - Le `Makefile` est le point d'entrée unique (`make test`) ; ses cibles délèguent à la Taskfile de Wails (ADR 0002).
140+ - Build Linux : `pkg-config`, `libgtk-4-dev`, `libwebkitgtk-6.0-dev`. Le prototype [spikes/wails-ui](spikes/wails-ui/README.md) sert de modèle.
@@ -6,7 +6,7 @@ author:
6 name: k33g6 name: k33g
7 email: ph.charriere@gmail.com7 email: ph.charriere@gmail.com
8 createdAt: 2026-10-29T07:20:06.000Z8 createdAt: 2026-10-29T07:20:06.000Z
9-updatedAt: 2026-10-29T08:10:00.000Z9+updatedAt: 2026-10-29T08:51:00.000Z
10 labels:10 labels:
11 - "kind::chore"11 - "kind::chore"
12 - "area::infra"12 - "area::infra"
@@ -127,3 +127,14 @@ comments:
127 - Les fichiers générés (bindings `wailsjs/`, `go.sum`, lockfiles) et les fichiers de config tiers ne portent pas d'en-tête.127 - Les fichiers générés (bindings `wailsjs/`, `go.sum`, lockfiles) et les fichiers de config tiers ne portent pas d'en-tête.
128 - Les scripts personnels à la racine (`git.sh`, `new.*.sh`, `tag-step.sh`) sont hors convention : ce sont des outils de l'auteur, pas du code du projet.128 - Les scripts personnels à la racine (`git.sh`, `new.*.sh`, `tag-step.sh`) sont hors convention : ce sont des outils de l'auteur, pas du code du projet.
129 - L'année reste celle de la création du fichier.129 - L'année reste celle de la création du fichier.
130+ - id: 2
131+ author:
132+ name: k33g
133+ email: ph.charriere@gmail.com
134+ createdAt: 2026-10-29T08:51:00.000Z
135+ body: |
136+ Apports de la milestone Initialize :
137+
138+ - `go.mod` existe déjà à la racine (`git.rickub.com/bots-garden/sidekicks`, go 1.26) avec le package `schema`. `wails3 init` génère son propre go.mod : partir du template Svelte dans un dossier temporaire et reporter `main.go`, `frontend/`, `build/`, `Taskfile.yml` à la racine.
139+ - Le `Makefile` est le point d'entrée unique (`make test`) ; ses cibles délèguent à la Taskfile de Wails (ADR 0002).
140+ - Build Linux : `pkg-config`, `libgtk-4-dev`, `libwebkitgtk-6.0-dev`. Le prototype [spikes/wails-ui](spikes/wails-ui/README.md) sert de modèle.
modified .tickets/issues/0009-charger-valider-et-sauvegarder-la-configuration.yaml +9 -2
Large diff collapsed to keep the page fast — load it when you need it.
modified .tickets/issues/0010-client-acp-transport-stdio-et-handshake-initiali.yaml +17 -2
Large diff collapsed to keep the page fast — load it when you need it.
modified .tickets/issues/0017-afficher-les-tool-calls-et-gerer-les-demandes-de.yaml +9 -2
Large diff collapsed to keep the page fast — load it when you need it.
modified .tickets/issues/0024-commandes-slash-exposees-par-les-agents.yaml +9 -2
Large diff collapsed to keep the page fast — load it when you need it.
modified .tickets/issues/0025-reprendre-les-conversations-apres-redemarrage.yaml +9 -2
Large diff collapsed to keep the page fast — load it when you need it.
modified .tickets/milestones.yaml +1 -1
@@ -1,7 +1,7 @@
11 # Managed by IssueSpec. Hand edits are welcome; keep the schema valid.
22 milestones:
33 - title: Initialize
4- state: open
4+ state: closed
55 description: Specification of the project, settings, definition of tools
66 dueOn: 2026-10-30
77 - title: "M1 · Fondations"
@@ -1,7 +1,7 @@
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 milestones:2 milestones:
3 - title: Initialize3 - title: Initialize
4- state: open4+ state: closed
5 description: Specification of the project, settings, definition of tools5 description: Specification of the project, settings, definition of tools
6 dueOn: 2026-10-306 dueOn: 2026-10-30
7 - title: "M1 · Fondations"7 - title: "M1 · Fondations"
added Makefile +16 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/README.md +6 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/adr/0001-acp.md +79 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/adr/0002-ui-stack.md +75 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/adr/0003-architecture.md +114 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/design/01-layout.png +0 -0
new file mode 100644
Binary files /dev/null and b/docs/design/01-layout.png differ
new file mode 100644
Binary files /dev/null and b/docs/design/01-layout.png differBinary files /dev/null and b/docs/design/01-layout.png differ
added docs/design/01-layout.svg +101 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/design/02-conversation.png +0 -0
new file mode 100644
Binary files /dev/null and b/docs/design/02-conversation.png differ
new file mode 100644
Binary files /dev/null and b/docs/design/02-conversation.png differBinary files /dev/null and b/docs/design/02-conversation.png differ
added docs/design/02-conversation.svg +100 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/design/03-mentions-commands.png +0 -0
new file mode 100644
Binary files /dev/null and b/docs/design/03-mentions-commands.png differ
new file mode 100644
Binary files /dev/null and b/docs/design/03-mentions-commands.png differBinary files /dev/null and b/docs/design/03-mentions-commands.png differ
added docs/design/03-mentions-commands.svg +102 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/design/04-permission.png +0 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/design/04-permission.svg +97 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/design/05-agents-panel.png +0 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/design/05-agents-panel.svg +111 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/design/06-first-launch.png +0 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/design/06-first-launch.svg +73 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/design/README.md +34 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/design/wireframes.drawio +546 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/design/wireframes.py +411 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/diagrams/packages.drawio +45 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/diagrams/packages.png +0 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/diagrams/packages.svg +97 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/en/README.md +21 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/en/explanation/architecture.md +36 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/en/explanation/memory-and-local-models.md +29 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/en/explanation/ui-stack.md +29 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/en/explanation/why-acp.md +28 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/en/how-to/run-a-test-agent.md +61 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/en/how-to/run-the-tests.md +36 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/en/how-to/test-milestone-initialize-on-macos.md +201 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/en/reference/agents-script.md +48 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/en/reference/configuration.md +183 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/en/tutorials/first-acp-exchange.md +104 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/fr/README.md +21 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/fr/explanation/architecture.md +36 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/fr/explanation/memoire-et-modeles-locaux.md +29 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/fr/explanation/pourquoi-acp.md +28 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/fr/explanation/stack-interface.md +29 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/fr/how-to/lancer-les-tests.md +36 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/fr/how-to/lancer-un-agent-de-test.md +61 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/fr/how-to/tester-la-milestone-initialize-sous-macos.md +201 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/fr/reference/configuration.md +183 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/fr/reference/script-agents.md +48 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/fr/tutorials/premier-echange-acp.md +104 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/spikes/acp/README.md +17 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/spikes/acp/traces/alice.jsonl +56 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/spikes/acp/traces/garfield-command.jsonl +21 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/spikes/acp/traces/garfield.jsonl +22 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/spikes/acp/traces/riker-allow.jsonl +139 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/spikes/acp/traces/riker-reject.jsonl +1985 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/spikes/ui/prototype-linux.png +0 -0
Large diff collapsed to keep the page fast — load it when you need it.
added docs/spikes/ui/prototype-streaming.png +0 -0
Large diff collapsed to keep the page fast — load it when you need it.
added examples/test-agents.yaml +54 -0
Large diff collapsed to keep the page fast — load it when you need it.
added go.mod +10 -0
Large diff collapsed to keep the page fast — load it when you need it.
added go.sum +8 -0
Large diff collapsed to keep the page fast — load it when you need it.
added schema/config.schema.json +251 -0
Large diff collapsed to keep the page fast — load it when you need it.
added schema/schema.go +91 -0
Large diff collapsed to keep the page fast — load it when you need it.
added schema/schema_test.go +96 -0
Large diff collapsed to keep the page fast — load it when you need it.
added schema/testdata/invalid/agent-without-command.yaml +3 -0
Large diff collapsed to keep the page fast — load it when you need it.
added schema/testdata/invalid/bad-duration.yaml +4 -0
Large diff collapsed to keep the page fast — load it when you need it.
added schema/testdata/invalid/container-without-name.yaml +6 -0
Large diff collapsed to keep the page fast — load it when you need it.
added schema/testdata/invalid/duplicate-channel-member.yaml +5 -0
Large diff collapsed to keep the page fast — load it when you need it.
added schema/testdata/invalid/local-with-sandbox.yaml +7 -0
Large diff collapsed to keep the page fast — load it when you need it.
added schema/testdata/invalid/missing-version.yaml +3 -0
Large diff collapsed to keep the page fast — load it when you need it.
added schema/testdata/invalid/name-with-uppercase-and-space.yaml +4 -0
Large diff collapsed to keep the page fast — load it when you need it.
added schema/testdata/invalid/unknown-key.yaml +5 -0
Large diff collapsed to keep the page fast — load it when you need it.
added schema/testdata/invalid/unknown-runtime.yaml +6 -0
Large diff collapsed to keep the page fast — load it when you need it.
added schema/testdata/invalid/unknown-theme.yaml +4 -0
Large diff collapsed to keep the page fast — load it when you need it.
added schema/testdata/invalid/unknown-version.yaml +2 -0
Large diff collapsed to keep the page fast — load it when you need it.
added schema/testdata/invalid/zero-agents-limit.yaml +4 -0
Large diff collapsed to keep the page fast — load it when you need it.
added schema/testdata/valid/minimal.yaml +4 -0
Large diff collapsed to keep the page fast — load it when you need it.
added schema/testdata/valid/runtimes.yaml +30 -0
Large diff collapsed to keep the page fast — load it when you need it.
added schema/testdata/valid/spec-example.yaml +41 -0
Large diff collapsed to keep the page fast — load it when you need it.
added scripts/agents.sh +224 -0
Large diff collapsed to keep the page fast — load it when you need it.
added scripts/agents_test.sh +215 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/README.md +8 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/acp-trace/README.md +19 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/acp-trace/go.mod +5 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/acp-trace/go.sum +2 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/acp-trace/main.go +257 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/.gitignore +11 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/README.md +34 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/Taskfile.yml +68 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/build/Taskfile.yml +398 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/build/appicon.icon/Assets/wails_icon_vector.svg +9 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/build/appicon.icon/icon.json +51 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/build/appicon.png +0 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/build/config.yml +87 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/build/darwin/Assets.car +0 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/build/darwin/Info.dev.plist +34 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/build/darwin/Info.plist +29 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/build/darwin/Taskfile.yml +230 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/build/darwin/dmg-background.png +0 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/build/darwin/dmg-file-icon.icns +0 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/build/darwin/dmg-file-icon.png +0 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/build/darwin/icons.icns +0 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/build/docker/Dockerfile.cross +225 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/build/docker/Dockerfile.server +67 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/build/linux/Taskfile.yml +220 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/build/linux/appimage/build.sh +35 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/build/linux/desktop +13 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/build/linux/nfpm/nfpm.yaml +80 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/build/linux/nfpm/scripts/postinstall.sh +21 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/build/linux/nfpm/scripts/postremove.sh +1 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/build/linux/nfpm/scripts/preinstall.sh +1 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/build/linux/nfpm/scripts/preremove.sh +1 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/build/windows/Taskfile.yml +195 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/build/windows/icon.ico +0 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/build/windows/info.json +15 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/build/windows/msix/app_manifest.xml +55 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/build/windows/msix/template.xml +54 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/build/windows/nsis/project.nsi +119 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/build/windows/nsis/wails_tools.nsh +261 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/build/windows/wails.exe.manifest +22 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/frontend/.npmrc +5 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/frontend/Inter Font License.txt +93 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/frontend/bindings/events/index.ts +20 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/frontend/bindings/git.rickub.com/bots-garden/sidekicks/spikes/wails-ui/index.ts +13 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/frontend/bindings/git.rickub.com/bots-garden/sidekicks/spikes/wails-ui/models.ts +11 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/frontend/bindings/git.rickub.com/bots-garden/sidekicks/spikes/wails-ui/streamservice.ts +20 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/frontend/bindings/git.rickub.com/bots-garden/sidekicks/spikes/wails-ui/terminalservice.ts +35 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/frontend/bindings/github.com/wailsapp/wails/v3/internal/eventcreate.ts +9 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/frontend/bindings/github.com/wailsapp/wails/v3/internal/eventdata.d.ts +19 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/frontend/index.html +14 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/frontend/package-lock.json +2007 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/frontend/package.json +35 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/frontend/public/Inter-Medium.ttf +0 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/frontend/public/style.css +57 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/frontend/src/App.svelte +55 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/frontend/src/lib/Conversation.svelte +105 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/frontend/src/lib/Terminal.svelte +43 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/frontend/src/lib/YamlEditor.svelte +46 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/frontend/src/lib/markdown.ts +59 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/frontend/src/main.ts +11 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/frontend/src/vite-env.d.ts +2 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/frontend/svelte.config.js +7 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/frontend/tsconfig.json +19 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/frontend/vite.config.ts +13 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/go.mod +18 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/go.sum +34 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/main.go +55 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/stream.go +91 -0
Large diff collapsed to keep the page fast — load it when you need it.
added spikes/wails-ui/terminal.go +103 -0
Large diff collapsed to keep the page fast — load it when you need it.