Changeset 0.19.0.1 (#82)
This commit is contained in:
@@ -47,7 +47,7 @@ Three Docker images support different deployment scenarios:
|
||||
|
||||
6. **Channels as Execution Context**: Channels are the universal container for conversation state — messages, tool activity, notes, and artifacts all hang off a channel. Today channels are single-user direct chats. The architecture anticipates multi-participant channels (team members, anonymous visitors, AI personas) for workflow execution, without requiring changes to the message tree, tool framework, or streaming infrastructure.
|
||||
|
||||
## Workflow Architecture (Future — v0.21.0+)
|
||||
## Workflow Architecture (Future — v0.25.0+)
|
||||
|
||||
The platform's existing primitives (teams, personas, channels, tools, notes)
|
||||
compose into a workflow engine where the channel is the execution context
|
||||
@@ -235,7 +235,33 @@ scope='team' → owner_id=team.id → Team-admin-managed, visible to team
|
||||
scope='personal' → owner_id=user.id → User-managed, visible to owner
|
||||
```
|
||||
|
||||
Used by: `provider_configs`, `personas`, `model_catalog` (visibility column adds `enabled`/`disabled`/`team` states on top).
|
||||
Used by: `provider_configs`, `personas`, `model_catalog` (visibility column adds `enabled`/`disabled`/`team` states on top), `projects`.
|
||||
|
||||
## Projects (v0.19.0)
|
||||
|
||||
Projects are organizational containers that group channels, knowledge bases,
|
||||
and notes. They follow the same scope model as other resources.
|
||||
|
||||
**KB Resolution Chain:**
|
||||
```
|
||||
Persona KBs → Project KBs → Channel KBs → Personal KBs
|
||||
```
|
||||
|
||||
When a channel belongs to a project, all KBs bound to that project are
|
||||
automatically included in both the system prompt hint (`BuildKBHint`) and
|
||||
tool-time search (`kbsearch`). This means adding a KB to a project makes it
|
||||
available to every channel in that project without per-channel configuration.
|
||||
|
||||
**Channel Association:** Channels have an optional `project_id` FK.
|
||||
The `project_channels` junction table maintains ordered membership with a
|
||||
UNIQUE constraint on `channel_id` (a channel can only belong to one project).
|
||||
`AddChannel` performs an atomic move: single transaction deletes from the
|
||||
old project, inserts into the new one, and updates the denormalized FK.
|
||||
|
||||
**Store Pattern:** `ProjectStore` interface with Postgres and SQLite
|
||||
implementations following the same conventions as other stores (see
|
||||
Store Layer Pattern above). Access checks via `UserCanAccess` enforce
|
||||
owner-or-team-member visibility.
|
||||
|
||||
## Schema Migration
|
||||
|
||||
@@ -276,6 +302,7 @@ src/
|
||||
│ ├── attachments.js # File upload, paste-to-file, lightbox
|
||||
│ ├── notes.js # Notes panel CRUD + graph + daily notes
|
||||
│ ├── note-graph.js # Canvas force-directed graph visualization
|
||||
│ ├── projects-ui.js # Project sidebar, context menu, drag-and-drop
|
||||
│ ├── knowledge.js # Knowledge base UI
|
||||
│ ├── memory-ui.js # Memory settings tab + admin review panel
|
||||
│ └── __tests__/ # Node.js test suite (node --test)
|
||||
|
||||
1151
docs/DESIGN-0.19.0.md
Normal file
1151
docs/DESIGN-0.19.0.md
Normal file
File diff suppressed because it is too large
Load Diff
@@ -70,9 +70,9 @@ v0.18.0 Memory ✅ (user + persona scopes, review pipeline)
|
||||
│
|
||||
v0.18.1 Side Panel Architecture ✅ (single-slot, ctx.ui primitives, mermaid refactor)
|
||||
│
|
||||
v0.19.0 Projects / Workspaces + Notifications
|
||||
v0.19.0 Projects / Workspaces ✅ (project groups, KB resolution, drag-drop sidebar)
|
||||
│
|
||||
v0.20.0 @mention Routing + Multi-model
|
||||
v0.20.0 Notifications + @mention Routing + Multi-model
|
||||
│
|
||||
v0.21.0 Extension Surfaces + Modes (depends on CM6 from v0.17.2)
|
||||
│
|
||||
@@ -496,37 +496,52 @@ collaboration (v0.23.0) where multiple panels need simultaneous visibility.
|
||||
|
||||
---
|
||||
|
||||
## v0.19.0 — Projects / Workspaces + Notifications
|
||||
## ✅ v0.19.0 — Projects / Workspaces
|
||||
|
||||
Organizational containers that group related conversations, KBs, and
|
||||
notes into a single workspace with shared access controls. Plus the
|
||||
notification infrastructure that makes collaboration real-time.
|
||||
notes into a single workspace with shared access controls.
|
||||
|
||||
Depends on: user groups (v0.16.0), knowledge bases (v0.14.0).
|
||||
|
||||
**Data Model**
|
||||
- [ ] `projects` table: `id`, `name`, `description`, `scope` (personal, team, global), `owner_id`, `team_id`, `settings` (JSONB), `created_at`, `updated_at`
|
||||
- [ ] `project_resources` table: `project_id`, `resource_type` (channel, knowledge_base, note), `resource_id`, `added_at`
|
||||
- [ ] Projects use the same grant model (v0.16.0): team_only / global / groups
|
||||
- [x] `projects` table: `id`, `name`, `description`, `color`, `icon`, `scope` (personal/team/global), `owner_id`, `team_id`, `is_archived`, `settings` (JSONB)
|
||||
- [x] `project_channels` junction: ordered membership with UNIQUE `channel_id`, denormalized FK on `channels.project_id`
|
||||
- [x] `project_knowledge_bases` junction: with `auto_search` flag
|
||||
- [x] `project_notes` junction
|
||||
- [x] `resource_grants` CHECK extended to include `'project'`
|
||||
|
||||
**Features**
|
||||
- [ ] Channels can belong to a project (optional `project_id` FK)
|
||||
- [ ] KBs can belong to a project → auto-linked to all channels in the project
|
||||
- [ ] Notes can belong to a project → visible to all project members
|
||||
- [ ] Project-level Persona default: all new channels in the project start with this Persona
|
||||
- [ ] Project sidebar section: grouped view of conversations with folder-like nesting
|
||||
- [x] Channels can belong to a project (optional `project_id` FK)
|
||||
- [x] KBs can belong to a project → auto-linked to all channels in the project (BuildKBHint + kbsearch)
|
||||
- [x] Notes can belong to a project → auto-associated when created from project channel
|
||||
- [x] KB resolution chain: Persona → Project → Channel → Personal
|
||||
- [x] Project sidebar section: collapsible groups above time-based Recent section
|
||||
|
||||
**UI**
|
||||
- [ ] Sidebar: projects as collapsible groups above/integrated with chat history
|
||||
- [ ] Project creation dialog (name, description, default Persona, default KBs)
|
||||
- [ ] Drag channels/notes into projects
|
||||
- [ ] Folders within projects (lightweight — just a `path` column on project_resources)
|
||||
- [ ] Project settings: manage resources, access, defaults
|
||||
- [x] Sidebar: projects as collapsible groups with color dots, counts, options menu
|
||||
- [x] Right-click context menu: move chat to project / remove / create-and-assign
|
||||
- [x] Drag-and-drop channels between project groups and Recent
|
||||
- [x] New Project button in split dropdown
|
||||
- [x] Channel list `project_id` filter (`?project_id=uuid` or `?project_id=none`)
|
||||
- [x] Collapse state persisted in localStorage
|
||||
|
||||
**Enterprise Use**
|
||||
- [ ] Team admins create projects for their teams
|
||||
- [ ] Project templates: pre-configured with specific Personas, KBs, and settings
|
||||
- [ ] Cross-team projects via group grants
|
||||
**Deferred to later versions:**
|
||||
- Project creation dialog (name, description, default Persona, default KBs) — using prompt() for now
|
||||
- Project detail panel (KB + note management within a project)
|
||||
- Project-level Persona default
|
||||
- Folders within projects
|
||||
- Project templates
|
||||
- Admin-level team/global project management
|
||||
- Notifications (moved to v0.20.0)
|
||||
|
||||
---
|
||||
|
||||
## v0.20.0 — Notifications + @mention Routing + Multi-model
|
||||
|
||||
Notification infrastructure that makes collaboration real-time, plus
|
||||
the channel schema already supports multiple models — this adds routing.
|
||||
|
||||
_(Notifications shifted from v0.19.0; @mention routing shifted from v0.17.0)_
|
||||
|
||||
**Notifications**
|
||||
- [ ] `notifications` table: `id`, `user_id`, `type`, `title`, `body`, `resource_type`, `resource_id`, `is_read`, `created_at`
|
||||
@@ -540,14 +555,7 @@ Depends on: user groups (v0.16.0), knowledge bases (v0.14.0).
|
||||
- [ ] Admin settings: enable/disable email, SMTP config, default notification preferences
|
||||
- [ ] User preferences: per-type toggles (in-app, email, off)
|
||||
|
||||
---
|
||||
|
||||
## v0.20.0 — @mention Routing + Multi-model
|
||||
|
||||
The channel schema already supports multiple models. This adds routing.
|
||||
|
||||
_(Shifted from v0.17.0 — no content changes)_
|
||||
|
||||
**@mention Routing**
|
||||
- [ ] @mention parsing in messages (users and AI models)
|
||||
- [ ] Resolve mentions against `channel_models`
|
||||
- [ ] Multi-model channels: fire completions per mentioned model
|
||||
|
||||
Reference in New Issue
Block a user