updated documentation to reflect additions of new project, settings, and UI restructure
This commit is contained in:
@@ -35,7 +35,8 @@ service to generate and store a vector in Qdrant.
|
||||
src/
|
||||
├── db/
|
||||
│ ├── index.js # SQLite connection + initialization + migrations
|
||||
│ └── schema.js # Table definitions, indexes, FTS5, triggers
|
||||
│ ├── schema.js # Table definitions, indexes, FTS5, triggers
|
||||
│ └── projects.js # Project CRUD functions
|
||||
├── episodic/
|
||||
│ └── index.js # Session + episode CRUD, FTS search, embedding write path
|
||||
├── semantic/
|
||||
@@ -47,13 +48,14 @@ src/
|
||||
|
||||
## SQLite Schema
|
||||
|
||||
Five core tables:
|
||||
Six core tables:
|
||||
|
||||
- **sessions** — top-level conversation containers, identified by an `external_id` and optional `name`
|
||||
- **sessions** — top-level conversation containers, identified by an `external_id`, optional `name`, and optional `project_id`
|
||||
- **episodes** — individual exchanges (user message + AI response) tied to a session
|
||||
- **entities** — named things the system learns about (people, places, concepts)
|
||||
- **relationships** — directional labeled links between entities
|
||||
- **summaries** — condensed episode groups for efficient context retrieval
|
||||
- **projects** — named groupings of sessions with optional description, colour, and icon
|
||||
|
||||
### Migrations
|
||||
|
||||
@@ -64,13 +66,25 @@ already-applied changes:
|
||||
```js
|
||||
try {
|
||||
db.exec(`ALTER TABLE sessions ADD COLUMN name TEXT`);
|
||||
} catch {
|
||||
// Column already exists — safe to ignore on subsequent startups
|
||||
}
|
||||
} catch {}
|
||||
|
||||
try {
|
||||
db.exec(`ALTER TABLE sessions ADD COLUMN project_id INTEGER REFERENCES projects(id)`);
|
||||
} catch {}
|
||||
|
||||
try {
|
||||
db.exec(`CREATE INDEX IF NOT EXISTS idx_sessions_project ON sessions(project_id)`);
|
||||
} catch {}
|
||||
```
|
||||
|
||||
This pattern is idempotent — safe to run on every startup. New migrations should
|
||||
always be appended here rather than modifying the schema file, since `ALTER TABLE`
|
||||
and index creation on existing tables cannot use `IF NOT EXISTS` guards in SQLite.
|
||||
|
||||
Current migrations:
|
||||
- `ALTER TABLE sessions ADD COLUMN name TEXT` — adds display name to sessions
|
||||
- `ALTER TABLE sessions ADD COLUMN project_id INTEGER` — links sessions to projects
|
||||
- `CREATE INDEX idx_sessions_project` — index on the new project_id column
|
||||
|
||||
### FTS5 Full-Text Search
|
||||
|
||||
@@ -216,6 +230,37 @@ and summaries via SQLite `ON DELETE CASCADE`.
|
||||
> Note: `/episodes/search` must be defined before `/episodes/:id` in Express to prevent
|
||||
> the word `search` being captured as an ID parameter.
|
||||
|
||||
### Projects
|
||||
|
||||
| Method | Path | Description |
|
||||
|---|---|---|
|
||||
| POST | /projects | Create a new project |
|
||||
| GET | /projects | Get all projects |
|
||||
| GET | /projects/:id | Get project by ID |
|
||||
| PATCH | /projects/:id | Update a project |
|
||||
| DELETE | /projects/:id | Delete a project |
|
||||
|
||||
**POST /projects body:**
|
||||
```json
|
||||
{
|
||||
"name": "My Project",
|
||||
"description": "Optional description",
|
||||
"colour": "#3d3a79",
|
||||
"icon": null
|
||||
}
|
||||
```
|
||||
|
||||
`name` is required. `description`, `colour`, and `icon` are optional.
|
||||
|
||||
Returns `201` with the created project object on success.
|
||||
|
||||
**PATCH /projects/:id body:** same fields as POST, all optional.
|
||||
|
||||
**DELETE /projects/:id**
|
||||
|
||||
Returns `204 No Content`. Sessions assigned to the project are not deleted —
|
||||
their `project_id` foreign key is left as-is (nullable, no cascade).
|
||||
|
||||
### Entities
|
||||
|
||||
| Method | Path | Description |
|
||||
|
||||
Reference in New Issue
Block a user