283 lines
7.3 KiB
Markdown
283 lines
7.3 KiB
Markdown
# Appendix: Enums & Constants
|
|
|
|
All enum values used across the API. Definitive source of truth.
|
|
|
|
## Channel Types
|
|
|
|
| Value | Description |
|
|
|-------|-------------|
|
|
| `direct` | Single-user chat (default, backward compatible) |
|
|
| `dm` | Human-to-human direct message, AI silent unless @mentioned |
|
|
| `group` | Multi-user/multi-model collaborative channel |
|
|
| `channel` | Named persistent space, configurable ai_mode |
|
|
| `workflow` | Staged channel driven by workflow definitions |
|
|
| `service` | Autonomous task execution, no human participant |
|
|
|
|
## Channel AI Modes
|
|
|
|
| Value | Description |
|
|
|-------|-------------|
|
|
| `auto` | AI responds to every message (default) |
|
|
| `mention_only` | AI responds only when @mentioned (default for `dm`) |
|
|
| `off` | AI disabled entirely |
|
|
|
|
## Participant Types
|
|
|
|
| Value | Description |
|
|
|-------|-------------|
|
|
| `user` | Authenticated user. `participant_id` = `users.id` |
|
|
| `persona` | AI persona. `participant_id` = `personas.id` |
|
|
| `session` | Anonymous visitor. `participant_id` = session token |
|
|
|
|
## Participant Roles
|
|
|
|
| Value | Description |
|
|
|-------|-------------|
|
|
| `owner` | Full control: add/remove participants, delete channel |
|
|
| `member` | Send messages, trigger completions, view history |
|
|
| `observer` | Read-only: view messages, no send |
|
|
| `visitor` | Anonymous session participant (workflow intake) |
|
|
|
|
## Presence Statuses
|
|
|
|
`online`, `away`, `offline`
|
|
|
|
## Message Roles
|
|
|
|
`user`, `assistant`, `system`, `tool`
|
|
|
|
## Scopes
|
|
|
|
`personal`, `team`, `global`
|
|
|
|
## Visibility (Model Catalog)
|
|
|
|
`enabled`, `disabled`, `team`
|
|
|
|
## User Roles
|
|
|
|
`admin`, `user`
|
|
|
|
## Team Member Roles
|
|
|
|
`admin`, `member`
|
|
|
|
## Provider Types
|
|
|
|
`openai`, `anthropic`, `openrouter`, `venice` (extensible via registry)
|
|
|
|
## Model Types
|
|
|
|
`chat`, `embedding`, `image`
|
|
|
|
## Memory Scopes
|
|
|
|
`user`, `persona`, `persona_user`
|
|
|
|
## Memory Statuses
|
|
|
|
`active`, `pending_review`, `archived`
|
|
|
|
## Workspace Owner Types
|
|
|
|
`user`, `project`, `channel`, `team`
|
|
|
|
## Workspace Statuses
|
|
|
|
`active`, `archived`, `deleting`
|
|
|
|
## File Index Statuses
|
|
|
|
`pending`, `indexing`, `ready`, `error`, `skipped`
|
|
|
|
## KB Document Statuses
|
|
|
|
`pending`, `chunking`, `embedding`, `ready`, `error`
|
|
|
|
## Provider Health Statuses
|
|
|
|
`healthy`, `degraded`, `down`
|
|
|
|
## Routing Policy Types
|
|
|
|
| Value | Description |
|
|
|-------|-------------|
|
|
| `provider_prefer` | Ordered provider fallback list |
|
|
| `team_route` | Restrict team to specific providers |
|
|
| `cost_limit` | Heuristic cost cap per request |
|
|
| `model_alias` | Alias → provider+model rewrite |
|
|
| `capability_match` | Match cheapest model with required capabilities |
|
|
|
|
## Extension Tiers
|
|
|
|
`browser` (implemented), `starlark` (future), `sidecar` (future)
|
|
|
|
## Grant Types
|
|
|
|
| Value | Visibility |
|
|
|-------|-----------|
|
|
| `team_only` | Only the owning team |
|
|
| `global` | All authenticated users |
|
|
| `groups` | Members of specified groups |
|
|
|
|
## Resource Grant Resource Types
|
|
|
|
`persona`, `knowledge_base`, `project`
|
|
|
|
## Group Sources
|
|
|
|
| Value | Description |
|
|
|-------|-------------|
|
|
| `manual` | Admin-created |
|
|
| `oidc` | Synced from IdP groups claim |
|
|
| `system` | Platform-seeded (e.g., Everyone group) |
|
|
|
|
## Auth Sources
|
|
|
|
| Value | Description |
|
|
|-------|-------------|
|
|
| `builtin` | Username/password, bcrypt |
|
|
| `mtls` | Mutual TLS via reverse proxy |
|
|
| `oidc` | OpenID Connect (Keycloak etc.) |
|
|
|
|
## Workflow Statuses
|
|
|
|
| Value | Description |
|
|
|-------|-------------|
|
|
| `active` | Instance is running |
|
|
| `completed` | All stages finished |
|
|
| `stale` | No activity within threshold |
|
|
| `cancelled` | Manually cancelled |
|
|
|
|
## Workflow Entry Modes
|
|
|
|
`public_link`, `team_only`
|
|
|
|
## Workflow History Modes
|
|
|
|
| Value | Description |
|
|
|-------|-------------|
|
|
| `full` | Next stage sees complete chat history |
|
|
| `summary` | Utility-role summary of previous stages |
|
|
| `fresh` | Clean slate — no history carried forward |
|
|
|
|
## Task Types
|
|
|
|
`prompt`, `workflow`
|
|
|
|
## Task Run Statuses
|
|
|
|
| Value | Description |
|
|
|-------|-------------|
|
|
| `queued` | Waiting to execute |
|
|
| `running` | Currently executing |
|
|
| `completed` | Finished successfully |
|
|
| `failed` | Error during execution |
|
|
| `budget_exceeded` | Hit token/tool/wall-clock limit |
|
|
| `cancelled` | Manually killed |
|
|
|
|
## Task Scopes
|
|
|
|
`personal`, `team`, `global`
|
|
|
|
## Task Output Modes
|
|
|
|
`channel`, `note`, `webhook`
|
|
|
|
## Assignment Statuses
|
|
|
|
`unassigned`, `claimed`, `completed`
|
|
|
|
## Surface Sources
|
|
|
|
`core`, `extension`
|
|
|
|
## Notification Types
|
|
|
|
Convention: `domain.action`. Free-form strings — new types don't
|
|
require migration.
|
|
|
|
| Type | Description |
|
|
|------|-------------|
|
|
| `role.fallback` | Model role fell back to secondary provider |
|
|
| `kb.ready` | Knowledge base finished indexing |
|
|
| `kb.error` | Knowledge base indexing failed |
|
|
| `grant.changed` | User added to or removed from a group |
|
|
| `memory.extracted` | New memories extracted from conversation |
|
|
| `user.mentioned` | User was @mentioned in a channel |
|
|
| `workflow.assigned` | Workflow stage assigned to team/user |
|
|
| `workflow.claimed` | Workflow assignment claimed by a user |
|
|
| `task.completed` | Scheduled task finished successfully |
|
|
| `task.failed` | Scheduled task failed |
|
|
| `task.budget_exceeded` | Task hit token/tool/wall-clock budget |
|
|
|
|
**Planned (not yet implemented):**
|
|
`system.announcement` (v0.28.4 — admin broadcast to all users)
|
|
|
|
## Git Auth Types
|
|
|
|
`https_pat`, `https_basic`, `ssh_key`
|
|
|
|
## File Origins
|
|
|
|
`user_upload`, `tool_output`, `system`
|
|
|
|
## File Display Hints
|
|
|
|
`inline`, `download`, `thumbnail`
|
|
|
|
## Proxy Modes
|
|
|
|
`system`, `direct`, `custom`
|
|
|
|
## Permissions
|
|
|
|
12 permission constants, `domain.action` convention:
|
|
|
|
| Permission | Description |
|
|
|-----------|-------------|
|
|
| `model.use` | Use AI models for completions |
|
|
| `kb.read` | Search knowledge bases |
|
|
| `kb.create` | Create knowledge bases |
|
|
| `kb.write` | Upload documents to KBs |
|
|
| `channel.create` | Create new channels |
|
|
| `channel.invite` | Add participants to channels |
|
|
| `persona.create` | Create personal personas |
|
|
| `persona.manage` | Edit/delete own personas |
|
|
| `workflow.create` | Create/edit workflow definitions |
|
|
| `tasks.create` | Create/manage tasks |
|
|
| `tasks.admin` | Manage all tasks (admin) |
|
|
| `admin.access` | Access admin panel |
|
|
|
|
Permissions are granted via groups. The `Everyone` group
|
|
(ID `00000000-0000-0000-0000-000000000001`) provides default
|
|
permissions to all authenticated users. It is system-seeded
|
|
and editable by admins.
|
|
|
|
## Extension Permissions (v0.29.0+)
|
|
|
|
7 extension permission constants, `domain.action` convention.
|
|
Declared in package manifests, granted by admin review.
|
|
|
|
| Permission | Module | Since |
|
|
|-----------|--------|-------|
|
|
| `secrets.read` | `secrets` | v0.29.0 |
|
|
| `notifications.send` | `notifications` | v0.29.0 |
|
|
| `filters.pre_completion` | — | v0.29.0 |
|
|
| `api.http` | `http` | v0.29.0 |
|
|
| `provider.complete` | `provider` | v0.29.1 |
|
|
| `db.read` | `db` | future |
|
|
| `db.write` | `db` | future |
|
|
|
|
## Policies
|
|
|
|
| Key | Default | Description |
|
|
|-----|---------|-------------|
|
|
| `allow_registration` | `"true"` | Allow new user self-registration |
|
|
| `allow_user_byok` | `"false"` | Allow users to add personal API keys |
|
|
| `allow_user_personas` | `"false"` | Allow users to create personal Personas |
|
|
| `allow_team_providers` | `"true"` | Allow team admins to configure team providers |
|
|
| `allow_raw_model_access` | `"true"` | Allow raw model selection without persona |
|
|
| `kb_direct_access` | `"true"` | Show KB picker in channel (false = strict enterprise) |
|
|
| `default_user_active` | `"false"` | New users active immediately (vs admin approval) |
|