bots-garden/sidekickspublic Fork
⑂ feature/m1-foundations
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
0005-definir-l-architecture-et-le-modele-de-donnees.yaml · 114 lines · 4.5 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
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
# 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: closed
author:
  name: k33g
  email: ph.charriere@gmail.com
createdAt: 2026-10-29T07:20:03.000Z
updatedAt: 2026-10-29T08:51:00.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: closed
    priority: high
    author:
      name: k33g
      email: ph.charriere@gmail.com
    createdAt: 2026-10-29T07:20:03.000Z
    updatedAt: 2026-10-29T08:51:00.000Z
    closedAt: 2026-10-29T08:51:00.000Z
  - id: 2
    title: "Modèle de données et schéma de clés Pebble"
    state: closed
    priority: high
    author:
      name: k33g
      email: ph.charriere@gmail.com
    createdAt: 2026-10-29T07:20:03.000Z
    updatedAt: 2026-10-29T08:51:00.000Z
    closedAt: 2026-10-29T08:51:00.000Z
  - id: 3
    title: "Décider : 1 session ACP par (channel, agent)"
    state: closed
    priority: medium
    author:
      name: k33g
      email: ph.charriere@gmail.com
    createdAt: 2026-10-29T07:20:03.000Z
    updatedAt: 2026-10-29T08:51:00.000Z
    closedAt: 2026-10-29T08:51:00.000Z
  - id: 4
    title: "Catalogue des événements Wails backend → frontend"
    state: closed
    priority: medium
    author:
      name: k33g
      email: ph.charriere@gmail.com
    createdAt: 2026-10-29T07:20:03.000Z
    updatedAt: 2026-10-29T08:51:00.000Z
    closedAt: 2026-10-29T08:51:00.000Z
  - id: 5
    title: "Schéma d'architecture"
    state: closed
    priority: medium
    author:
      name: k33g
      email: ph.charriere@gmail.com
    createdAt: 2026-10-29T07:20:03.000Z
    updatedAt: 2026-10-29T08:51:00.000Z
    closedAt: 2026-10-29T08:51:00.000Z
comments:
  - id: 1
    author:
      name: k33g
      email: ph.charriere@gmail.com
    createdAt: 2026-10-29T08:51:00.000Z
    body: |
      ## Résultat

      [ADR 0003 — architecture](docs/adr/0003-architecture.md) et schéma [docs/diagrams/packages.drawio](docs/diagrams/packages.drawio) (+ SVG/PNG).

      - Packages : `cmd/sidekicks`, `internal/app` (seule API vue par l'UI), `channels`, `agents`, `acp`, `config`, `store`, `workspace`, `schema`.
      - YAML = ce qui existe ; Pebble v2 = ce qui se passe (une base par fichier de config) ; les channels n'ont qu'une maison : Pebble.
      - Modèle de données (ULID), clés Pebble, catalogue de 12 événements, flux d'un message.
      - Un message est écrit à la fin du tour, pas à chaque chunk.