Changeset 0.19.0.1 (#82)

This commit is contained in:
2026-02-28 23:46:23 +00:00
parent 091ce2af6a
commit 748f49bedd
30 changed files with 3873 additions and 151 deletions

View File

@@ -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)