bots-garden/sidekickspublic Fork
⑂ license
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
specifications are defined eb9186a · on license · k33g · 4d ago
0005-definir-l-architecture-et-le-modele-de-donnees.yaml · 90 lines · 3.4 KBYAML Blame HistoryRaw
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# Managed by IssueSpec. Hand edits are welcome; keep the schema valid.
id: 5
title: "Définir l'architecture et le modèle de données"
state: open
author:
  name: k33g
  email: ph.charriere@gmail.com
createdAt: 2026-10-29T07:20:03.000Z
updatedAt: 2026-10-29T07:20:03.000Z
labels:
  - "kind::chore"
  - "documentation"
  - "priority::high"
  - "size::M"
milestone: "Initialize"
epic: "Specifications"
related:
  - 2
  - 3
  - 4
body: |
  ## Contexte
  Une fois ACP ([#2 — Spike : maîtriser le protocole ACP et le valider avec mm](.tickets/issues/0002-spike-maitriser-le-protocole-acp-et-le-valider-a.yaml)) et la stack ([#3 — Spike : choisir la stack Wails et frontend](.tickets/issues/0003-spike-choisir-la-stack-wails-et-frontend.yaml)) compris, il faut fixer le découpage du code avant d'écrire la première ligne de prod.

  ## Pourquoi
  - Plusieurs features se recouvrent (un agent est partagé entre plusieurs channels, une même session ACP alimente le chat et le panel Agents) : sans modèle clair on obtient du couplage frontend ↔ processus agents.
  - La persistance Pebble est « si besoin » dans le draft : cette issue doit **décider où elle est nécessaire** (channels, historique, mapping channel ↔ session ACP) et où elle ne l'est pas (la config reste en YAML, source de vérité éditable).

  ## Proposition de découpage Go
  ```
  cmd/sidekicks/        point d'entrée Wails
  internal/config/      chargement / validation / watch du YAML
  internal/acp/         client JSON-RPC ACP (transport stdio)
  internal/agents/      cycle de vie des processus agents
  internal/channels/    channels, membres, routage des messages
  internal/store/       Pebble (messages, sessions)
  internal/workspace/   fichiers + exec (local, sbx, container)
  frontend/             UI
  ```
  Règle : le frontend ne parle **qu'aux services Wails** ; il ne connaît pas ACP.

  ## Modèle de données (première version)
  - `Agent` (vient de la config) — `Channel` — `Membership(channel, agent, acpSessionId)` — `Message(channel, author: user|agent, parts[], createdAt)`.

  ## Critères d'acceptation
  - [ ] ADR architecture rédigé, avec un schéma (draw.io).
  - [ ] Modèle de données et clés Pebble définis.
  - [ ] Liste des événements backend → frontend (cf. [#13 — Pont d'événements entre Go et le frontend](.tickets/issues/0013-pont-d-evenements-entre-go-et-le-frontend.yaml)).
tasks:
  - id: 1
    title: "Découpage en packages et responsabilités"
    state: open
    priority: high
    author:
      name: k33g
      email: ph.charriere@gmail.com
    createdAt: 2026-10-29T07:20:03.000Z
  - id: 2
    title: "Modèle de données et schéma de clés Pebble"
    state: open
    priority: high
    author:
      name: k33g
      email: ph.charriere@gmail.com
    createdAt: 2026-10-29T07:20:03.000Z
  - id: 3
    title: "Décider : 1 session ACP par (channel, agent)"
    state: open
    priority: medium
    author:
      name: k33g
      email: ph.charriere@gmail.com
    createdAt: 2026-10-29T07:20:03.000Z
  - id: 4
    title: "Catalogue des événements Wails backend → frontend"
    state: open
    priority: medium
    author:
      name: k33g
      email: ph.charriere@gmail.com
    createdAt: 2026-10-29T07:20:03.000Z
  - id: 5
    title: "Schéma d'architecture"
    state: open
    priority: medium
    author:
      name: k33g
      email: ph.charriere@gmail.com
    createdAt: 2026-10-29T07:20:03.000Z
comments: []