RFC: A project board for people and agent sessions
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 28/100
- issue の種類
- 機能追加
- 明瞭さ
- おおむね明確
- 活発さ
- 活発
- 技術スタック
- typescript
- 領域
- devtools
調査の方向性
Start with the PRD and draft technical design in docs/features/kanban/ on the feat/kanban branch, then read sessionService.ts, src/utils/git.ts, and the StartSession control request flow. The design still has open questions and needs maintainer review; implementation spans persistence, server permissions, agent tools, notifications, and UI. Done means delivering the agreed board capabilities and resolving the design questions.
索引モデルが issue の本文から書いたものです。
説明
Status
Requirements settled, technical design in draft. The PRD was finalized on 2026-11-06; the technical design is waiting for maintainer review. Both live in docs/features/kanban/ on the feat/kanban branch (not pushed yet). No code.
Summary
Sessions can already start each other and exchange messages (#239). Once a long task is spread over several sessions, though, the tasks, owners, dependencies and progress live only in chat transcripts. Nobody can see the state of the project without asking each session, and it is lost when sessions stop or the app restarts.
This RFC adds a persistent project board that people and agent sessions share: a fixed project PM, an optional Task Lead for complex work, plus Workers and Reviewers. The board records what to do, who owns it, how far it got and what came out. Clarifying, planning, implementing and verifying stay inside the sessions; the board is not a workflow engine.
Scope
Four capabilities:
- A persistent board. Cards can be created, split into sub-cards, linked by "must finish first" dependencies and moved between states. It survives sessions stopping and app restarts. Every branch and worktree of a project sees the same board.
- Hierarchical delegation. Each project has one fixed PM session, set only by the human. A complex card can get a Lead, who may split it further and delegate to Workers, Reviewers, or a lower Lead (default limit: two levels of Leads). Assignments take effect only after the human confirms them.
- Scoped access. The PM sees the whole project, a Lead its subtree, a Worker its own cards, a Reviewer the cards it reviews. The server enforces this.
- Agents drive progress. Agents update progress, report blockers and submit results through tools. The human views, adjusts and accepts.
Each card has three identities:
| Identity | Who |
|---|---|
| Owner | The card's Worker or Lead, at most one |
| Supervisor | The Lead of the nearest ancestor card that has one, else the PM |
| Acceptor | The human when the supervisor is the PM, otherwise the supervisor. The human can always step in |
The owner and the acceptor of a card are never the same session, and a Reviewer is never the owner. Reports go to the supervisor, not to the session's parent.
States: Backlog, Todo, In Progress, Blocked, Review, Done, Cancelled. A light permission table decides who may make each transition; starting a card also requires an effective assignment and all dependencies done. An agent submitting a result never marks a card Done. Agent suggestions for new work are Backlog cards with a "suggestion" flag, accepted or rejected by the supervisor or the human.
Non-goals
- A separate spec or requirements state machine, versioned approvals, or multi-stage review, acceptance and merge.
- Creating card worktrees or branches, integration branches, automatic merges or PRs. Branches and PRs are recorded on a card as links.
- Predicting file overlap, scheduling ready tasks, worker pools, leases, retries.
- Cost per card, a cross-project board, scheduled cards, auto-approved assignments, multiple users, cloud sync.
Proposed design
- Storage: one append-only event log per board,
~/.dreamcoder/boards/<sanitized repo root>/events.jsonl, replayed into memory by a pure reducer on first access. This matches how session metadata is already persisted as transcript entries (sessionService.ts), and the log doubles as the card history. No SQLite: nothing in the repo usesbun:sqlite, and the data fits in memory. - One board per repository. The board key is the canonical git root from
findCanonicalGitRoot(src/utils/git.ts), which resolves any worktree to its main repository. It is the same rule that gives sessions theirprojectRoot, so the sidebar's project groups and the boards line up. - The entry point decides the actor. REST calls from the app act as the human. Agent tools send control requests over their own session's SDK connection, as
StartSessiondoes, so the server knows which session is acting; the request body cannot claim an identity. - Four CLI tools:
KanbanList,KanbanGet,KanbanCreate,KanbanUpdate, backed bykanban_queryandkanban_commandcontrol requests. The server checks every command against the permission table and the invariants in one pure function. - Notifications reuse
deliverUserTurn. An effective assignment, a revoked assignment, a human comment, a submitted result and a blocker each become a user message with a neworigin.kind = 'kanban'. A stopped session is resumed to receive it; a new session gets it as its first message. Like cross-session messages, it is wrapped and marked as carrying no user authority. - UI: a board page per project, opened from the project group in the sidebar, with a card detail and a "needs me" list. It polls with
since=<version>instead of adding a WebSocket channel. Desktop and H5 share it; drag and drop is desktop only.
Open questions
- Can sub-agents call the write tools? Leaning yes: the actor is still the session.
- Should a session created for an assignment appear under its supervisor in the sidebar (a new
parent.kind = 'assigned')? Leaning yes. - Who may edit a card's title, description and dependencies? The PRD does not say. Leaning owner, supervisor and human.
- What counts as a "blocker that involves the human" and a "pending suggestion" in the "needs me" list.
Related
- #239: sessions start and message each other; the board is built on it.
- #162: agent teams.
- #166: isolated workspaces for team members.
- 主要言語
- TypeScript
- スター
- 490
- フォーク
- 47
- 平均マージ
- 8時間 51分
- マージ済み PR(30日)
- 91
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
GoDiao/dreamcoder のほかの issue
-
[good first issue] UX polish — friendlier copy for error toasts and empty states対応中かも @iamcipherdev が 22 日前に担当しました。 オープンarea:i18n area:ux difficulty:1 good first issue mentor-available
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
GoDiao/dreamcoder#9 · コメント 3 件 ·
メンテナーはふだん 1 日以内に返信
-
Add more provider presets (Groq / OpenRouter / SiliconFlow / etc.)再び着手できるかも @01iamysf が 29 日前に担当しましたが、オープン中のプルリクエストはありません。 オープンarea:desktop area:provider difficulty:1 good first issue mentor-available
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
GoDiao/dreamcoder#6 · コメント 6 件 ·
メンテナーはふだん 1 日以内に返信
-
Composer shows a disabled send button instead of Stop while the CLI is starting対応中かも @22chiragmodh が 1 日前に担当しました。 オープンbug good first issue
GoDiao/dreamcoder#240 · コメント 2 件 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
-
area:desktop enhancement rfc
難易度 5/5 1週間以上 初心者へのやさしさ 8/100
GoDiao/dreamcoder#234 ·
メンテナーはふだん 1 日以内に返信
-
Context usage indicator counts base64 images as text and shows several times too many tokens対応中かも @Oscar-Williams が 6 日前に担当しました。 オープンarea:desktop bug good first issue help wanted
難易度 3/5 1〜2日 初心者へのやさしさ 70/100
GoDiao/dreamcoder#230 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
GoDiao/dreamcoder の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
langchain-ai/langchainjs#12157 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 86/100
activescott/home-infra-k8s-flux#511 ·
メンテナーはふだん 1 日以内に返信
-
community first-timers-only good first issue hacktoberfest help wanted low hanging fruit up-for-grabs
難易度 1/5 1時間未満 初心者へのやさしさ 72/100
lingdojo/kana-dojo#33753 · コメント 1 件 · リアクション 5 件 ·
メンテナーはふだん 1 日以内に返信
-
android:player
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
メンテナーはふだん 1 日以内に返信
-
follow-up needs-triage S3: minor
難易度 1/5 1〜3時間 初心者へのやさしさ 85/100
manaflow-ai/cmux#38032 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信