@realtimex/sdk 1.7.4 → 1.7.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,963 @@
1
+ # RealtimeX App Concepts
2
+
3
+ ---
4
+
5
+ > Auto-generated from app source code. Do not edit manually.
6
+
7
+ ---
8
+
9
+ > Sources: Prisma schema, model files, personalityStorage.js
10
+
11
+ ---
12
+
13
+ ## Personality
14
+
15
+ The **Personality** system stores per-agent and per-workspace configuration as markdown files.
16
+ Files live in `storage/working-data/agent-heartbeat/` (global) or `storage/working-data/<workspace-slug>/` (workspace-level).
17
+
18
+ ### File Structure
19
+
20
+ | File | Purpose |
21
+ |---|---|
22
+ | `AGENTS.md` | Operating instructions for the agent |
23
+ | `SOUL.md` | Persona, tone, and boundaries |
24
+ | `USER.md` | Who the user is and how to address them |
25
+ | `IDENTITY.md` | The agent's name, vibe, and emoji |
26
+ | `TOOLS.md` | Notes on local tools |
27
+ | `MEMORY.md` | Curated long-term memory |
28
+ | `HEARTBEAT.md` | Ambient agent standing instructions |
29
+ | `memory/` | Daily memory logs (YYYY-MM-DD.md) |
30
+ | `skills/` | Workspace-specific skills |
31
+ | `canvas/` | Canvas UI files |
32
+
33
+ Personality files are editable via the Personality editor in the UI or directly through the `/api/personality-files` endpoints.
34
+
35
+ ---
36
+
37
+ ## Heartbeat
38
+
39
+ **Heartbeat** is the ambient background agent system. It runs an AI agent on a schedule to proactively
40
+ monitor context (calendar, documents, threads) and take autonomous actions.
41
+
42
+ ### How It Works
43
+
44
+ 1. A scheduler triggers runs based on `every` cadence (e.g. `"30m"`, `"1h"`).
45
+ 2. Each run provisions an agent (default: RealTimeX Ambient Agent based on Qwen CLI).
46
+ 3. The agent reads Personality files, the heartbeat queue, and calendar events.
47
+ 4. Results are stored in the week's thread inside the `agent_heartbeat` workspace.
48
+
49
+ ### Configuration (`heartbeat_config` in system_settings)
50
+
51
+ | Field | Default | Description |
52
+ |---|---|---|
53
+ | `enabled` | `false` | — |
54
+ | `every` | `"30m"` | The frontend hydrates new configs with the user's system timezone. |
55
+ | `timezone` | `null` | — |
56
+ | `llmProvider` | `DEFAULT_AMBIENT_LLM_PROVIDER` | — |
57
+ | `llmModel` | `DEFAULT_AMBIENT_LLM_MODEL` | autoPilotEnabled: when true, the CLI ACP agent will automatically select |
58
+ | `autoPilotEnabled` | `false` | resumeSession: when true, each heartbeat execution resumes the last ACP |
59
+ | `resumeSession` | `false` | — |
60
+ | `customInstructions` | `""` | — |
61
+
62
+ ### Calendar Routines
63
+
64
+ Heartbeat can integrate with calendar events via these routines:
65
+ - **`morningBrief`** — Runs at start of day to summarize upcoming meetings
66
+ - **`preMeetingPrep`** — Runs before a meeting to prepare context
67
+ - **`followUpSuggestions`** — Runs after a meeting to suggest follow-up actions
68
+
69
+ ### Heartbeat Queue
70
+
71
+ The `heartbeat_queue` table stores text items (documents, messages, events) that the agent consumes on the next run. Items are drained after consumption.
72
+
73
+ ---
74
+
75
+ ## Workspace
76
+
77
+ A **Workspace** is the core unit of organisation in RealtimeX. It combines a document store (vector DB),
78
+ LLM configuration, agent settings, and a chat interface.
79
+
80
+ ### Workspace Types
81
+
82
+ | Type | Description |
83
+ |---|---|
84
+ | `default` | Standard RAG chat workspace with documents and LLM |
85
+ | `meeting_minutes` | Workspace focused on meeting recording and transcription |
86
+ | `agent_skills` | Workspace used to host and develop agent skills |
87
+ | `agent_heartbeat` | Special system workspace for the ambient heartbeat agent |
88
+
89
+ ### Chat Modes
90
+
91
+ | Mode | Description |
92
+ |---|---|
93
+ | `chat` | Full conversational mode — uses document context + LLM history |
94
+ | `query` | Query-only mode — each message is independent, no history |
95
+
96
+ ### Web Search Providers
97
+
98
+ Available values for `webSearchProvider`: `duckduckgo`, `google`, `bing`, `tavily`, `brave`, `brave-api`, `startpage`, `searxng`
99
+
100
+ ### Key Settings
101
+
102
+ | Setting | Description |
103
+ |---|---|
104
+ | `openAiPrompt` | System prompt sent to the LLM |
105
+ | `chatProvider` / `chatModel` | LLM provider and model for chat |
106
+ | `similarityThreshold` | Minimum similarity score for document retrieval (0–1, default 0.25) |
107
+ | `topN` | Number of document chunks to retrieve per query (default 4) |
108
+ | `vectorSearchMode` | `default` or `rerank` |
109
+ | `webSearchEnabled` | Whether to augment responses with live web search |
110
+ | `ambientAgentProvider` / `ambientAgentModel` | Override LLM for ambient agent in this workspace |
111
+ | `ambientAgentSystemPrompt` | Custom system prompt for the ambient agent in this workspace |
112
+
113
+ ---
114
+
115
+ ## Agent Skills
116
+
117
+ An **Agent Skill** is a tool-set (a `SKILL.md` + scripts folder) that agents can invoke.
118
+ Skills are loaded from git repositories, zip files, or installed plugins.
119
+
120
+ ### Skill Types
121
+
122
+ | Type | Description |
123
+ |---|---|
124
+ | `repo` | Skill loaded from a git repository URL |
125
+ | `zip` | Skill loaded from an uploaded .zip file |
126
+ | `local-path` | — |
127
+
128
+ ### Skill Scopes
129
+
130
+ | Scope | Description |
131
+ |---|---|
132
+ | `global` | Available to all workspaces and users |
133
+ | `workspace` | Scoped to a specific workspace |
134
+ | `local-app` | Provided by a registered LocalApp (SDK) |
135
+ | `uploaded` | Manually uploaded by a user |
136
+ | `plugin` | Bundled with an installed plugin (read-only) |
137
+
138
+ ### Skill Status
139
+
140
+ Valid values: `draft`, `published`
141
+
142
+ ---
143
+
144
+ ## Data Models
145
+
146
+ The following models are stored in the RealtimeX database (Prisma / SQLite or PostgreSQL).
147
+
148
+ ### ApiKey (`api_keys`)
149
+ A Bearer API key for authenticating v1 API and SDK requests.
150
+
151
+ | Field | Type | Default | Notes |
152
+ |---|---|---|---|
153
+ | `secret` | String? | — | — |
154
+
155
+ ### WorkspaceDocument (`workspace_documents`)
156
+ A document embedded into a workspace's vector store for RAG.
157
+
158
+ | Field | Type | Default | Notes |
159
+ |---|---|---|---|
160
+ | `docId` | String | — | — |
161
+ | `filename` | String | — | — |
162
+ | `docpath` | String | — | — |
163
+ | `workspaceId` | Int | — | — |
164
+ | `metadata` | String? | — | — |
165
+ | `pinned` | Boolean? | false | — |
166
+ | `watched` | Boolean? | false | — |
167
+ | `workspace` | workspaces | — | — |
168
+ | `document_sync_queues` | document_sync_queues? | — | — |
169
+
170
+ ### invites (`invites`)
171
+ | Field | Type | Default | Notes |
172
+ |---|---|---|---|
173
+ | `code` | String | — | — |
174
+ | `email` | String? | — | — |
175
+ | `name` | String? | — | — |
176
+ | `message` | String? | — | — |
177
+ | `role` | String? | — | — |
178
+ | `status` | String | pending | — |
179
+ | `claimedBy` | Int? | — | — |
180
+ | `workspaceIds` | String? | — | — |
181
+ | `webhookStatus` | String? | — | — |
182
+ | `webhookError` | String? | — | — |
183
+
184
+ ### system_settings (`system_settings`)
185
+ | Field | Type | Default | Notes |
186
+ |---|---|---|---|
187
+ | `label` | String | — | — |
188
+ | `value` | String? | — | — |
189
+
190
+ ### User (`users`)
191
+ A platform user account.
192
+
193
+ | Field | Type | Default | Notes |
194
+ |---|---|---|---|
195
+ | `username` | String? | — | — |
196
+ | `name` | String? | — | — |
197
+ | `kc_user_id` | String? | — | — |
198
+ | `email` | String? | — | — |
199
+ | `password` | String? | — | — |
200
+ | `pfpFilename` | String? | — | — |
201
+ | `role` | String | default | — |
202
+ | `suspended` | Int | 0 | — |
203
+ | `seen_recovery_codes` | Boolean? | false | — |
204
+ | `dailyMessageLimit` | Int? | — | — |
205
+ | `bio` | String? | | — |
206
+ | `workspace_chats` | workspace_chats[] | — | — |
207
+ | `workspace_users` | workspace_users[] | — | — |
208
+ | `created_workspaces` | workspaces[] | — | — |
209
+ | `embed_configs` | embed_configs[] | — | — |
210
+ | `embed_chats` | embed_chats[] | — | — |
211
+ | `threads` | workspace_threads[] | — | — |
212
+ | `recovery_codes` | recovery_codes[] | — | — |
213
+ | `password_reset_tokens` | password_reset_tokens[] | — | — |
214
+ | `workspace_agent_invocations` | workspace_agent_invocations[] | — | — |
215
+ | `slash_command_presets` | slash_command_presets[] | — | — |
216
+ | `system_prompt_presets` | system_prompt_presets[] | — | — |
217
+ | `temporary_auth_tokens` | temporary_auth_tokens[] | — | — |
218
+ | `system_prompt_variables` | system_prompt_variables[] | — | — |
219
+ | `prompt_history` | prompt_history[] | — | — |
220
+ | `desktop_mobile_devices` | desktop_mobile_devices[] | — | — |
221
+ | `workspace_parsed_files` | workspace_parsed_files[] | — | — |
222
+ | `workspace_tasks` | workspace_tasks[] | — | — |
223
+ | `agent_working_directories` | agent_working_directories[] | — | — |
224
+
225
+ ### agent_working_directories (`agent_working_directories`)
226
+ | Field | Type | Default | Notes |
227
+ |---|---|---|---|
228
+ | `user_id` | Int | — | — |
229
+ | `path` | String | — | — |
230
+ | `description` | String? | — | — |
231
+ | `workspace_ids` | String? | — | JSON array of workspace ID strings; NULL = all workspaces |
232
+ | `agent_names` | String? | — | JSON array of agent name strings; NULL = all agents |
233
+ | `user` | users | — | — |
234
+
235
+ ### Workspace (`workspaces`)
236
+ A chat/knowledge space with its own documents, LLM config, and agent settings.
237
+
238
+ | Field | Type | Default | Notes |
239
+ |---|---|---|---|
240
+ | `name` | String | — | — |
241
+ | `slug` | String | — | — |
242
+ | `share_token` | String? | — | — |
243
+ | `vectorTag` | String? | — | — |
244
+ | `openAiTemp` | Float? | — | — |
245
+ | `openAiHistory` | Int | 20 | — |
246
+ | `openAiPrompt` | String? | — | — |
247
+ | `similarityThreshold` | Float? | 0.25 | — |
248
+ | `chatProvider` | String? | — | — |
249
+ | `chatModel` | String? | — | — |
250
+ | `topN` | Int? | 4 | — |
251
+ | `chatMode` | String? | chat | — |
252
+ | `pfpFilename` | String? | — | — |
253
+ | `queryRefusalResponse` | String? | — | — |
254
+ | `vectorSearchMode` | String? | default | — |
255
+ | `webSearchEnabled` | Boolean? | false | — |
256
+ | `webSearchProvider` | String? | duckduckgo | — |
257
+ | `webSearchMaxResults` | Int? | 5 | — |
258
+ | `webSearchIncludeContent` | Boolean? | true | — |
259
+ | `googleApiKey` | String? | — | — |
260
+ | `googleSearchEngineId` | String? | — | — |
261
+ | `bingApiKey` | String? | — | — |
262
+ | `braveApiKey` | String? | — | — |
263
+ | `tavilyApiKey` | String? | — | — |
264
+ | `searxngUrl` | String? | — | — |
265
+ | `suggestedQuestionsEnabled` | Boolean? | false | — |
266
+ | `dynamicActionBarEnabled` | Boolean? | false | — |
267
+ | `ambientAgentProvider` | String? | default | — |
268
+ | `ambientAgentModel` | String? | — | — |
269
+ | `ambientAgentSystemPrompt` | String? | — | — |
270
+ | `email_short_id` | String? | — | — |
271
+ | `isSyncEnabled` | Boolean? | false | — |
272
+ | `syncInterval` | Int? | 60 | — |
273
+ | `directusAgentName` | String? | agent | — |
274
+ | `directusThreadId` | String? | — | — |
275
+ | `llmInstruction` | String? | — | — |
276
+ | `creator` | users? | — | — |
277
+ | `workspace_users` | workspace_users[] | — | — |
278
+ | `documents` | workspace_documents[] | — | — |
279
+ | `workspace_suggested_messages` | workspace_suggested_messages[] | — | — |
280
+ | `embed_configs` | embed_configs[] | — | — |
281
+ | `threads` | workspace_threads[] | — | — |
282
+ | `meeting_outputs` | meeting_outputs[] | — | — |
283
+ | `workspace_agent_invocations` | workspace_agent_invocations[] | — | — |
284
+ | `prompt_history` | prompt_history[] | — | — |
285
+ | `workspace_configs` | workspace_configs? | — | — |
286
+ | `webhook_data` | webhook_data[] | — | — |
287
+ | `workspace_parsed_files` | workspace_parsed_files[] | — | — |
288
+ | `knowledgeConfig` | String? | — | — |
289
+ | `type` | String? | default | — |
290
+ | `workspace_tasks` | workspace_tasks[] | — | — |
291
+ | `channel_plugins` | channel_plugins[] | — | — |
292
+ | `agentic_cli_workspace_overrides` | agentic_cli_workspace_overrides[] | — | — |
293
+
294
+ ### AgenticCLI (`agentic_clis`)
295
+ A registered CLI tool (e.g. Claude, Gemini) that agents can invoke.
296
+
297
+ | Field | Type | Default | Notes |
298
+ |---|---|---|---|
299
+ | `cliId` | String? | — | — |
300
+ | `displayName` | String | — | — |
301
+ | `binary` | String | — | — |
302
+ | `authProbeCommand` | String? | — | — |
303
+ | `authInstructions` | String? | — | — |
304
+ | `versionCommand` | String? | — | — |
305
+ | `installDocsUrl` | String? | — | — |
306
+ | `skillHint` | String? | — | — |
307
+ | `enabled` | Boolean | true | — |
308
+ | `isCustom` | Boolean | false | — |
309
+ | `lastProbeStatus` | String | unknown | — |
310
+ | `lastProbeError` | String? | — | — |
311
+ | `lastProbeAt` | DateTime? | — | — |
312
+ | `workspace_overrides` | agentic_cli_workspace_overrides[] | — | — |
313
+
314
+ ### agentic_cli_workspace_overrides (`agentic_cli_workspace_overrides`)
315
+ | Field | Type | Default | Notes |
316
+ |---|---|---|---|
317
+ | `agentic_cli_id` | Int | — | — |
318
+ | `workspace_id` | Int | — | — |
319
+ | `enabled` | Boolean | true | — |
320
+ | `agentic_cli` | agentic_clis | — | — |
321
+ | `workspace` | workspaces | — | — |
322
+
323
+ ### WorkspaceConfig (`workspace_configs`)
324
+ Key-value config bag attached to a workspace (defaultAgent, etc.).
325
+
326
+ | Field | Type | Default | Notes |
327
+ |---|---|---|---|
328
+ | `workspace_id` | Int | — | — |
329
+ | `agentProvider` | String? | — | — |
330
+ | `agentModel` | String? | — | — |
331
+ | `agentSkills` | String? | — | JSON array of strings |
332
+ | `disabledAgentSkills` | String? | — | JSON array of strings |
333
+ | `customAgentSkills` | String? | — | JSON array of objects |
334
+ | `activeAgentFlows` | String? | — | JSON array of strings |
335
+ | `mcpServers` | String? | — | JSON array of strings |
336
+ | `defaultAgent` | String? | — | JSON object: {name, avatar, type, id} |
337
+ | `heartbeatConfig` | String? | — | JSON object: {enabled, every, activeHours: {start, end}} |
338
+ | `workspace` | workspaces | — | — |
339
+
340
+ ### HeartbeatQueue (`heartbeat_queue`)
341
+ Queue of text items consumed by the ambient heartbeat agent.
342
+
343
+ | Field | Type | Default | Notes |
344
+ |---|---|---|---|
345
+ | `text` | String | | — |
346
+ | `consumed` | Boolean | false | — |
347
+
348
+ ### Thread (`workspace_threads`)
349
+ A conversation thread within a workspace. Can represent a meeting or a standalone chat.
350
+
351
+ | Field | Type | Default | Notes |
352
+ |---|---|---|---|
353
+ | `name` | String | — | — |
354
+ | `slug` | String | — | — |
355
+ | `workspace_id` | Int | — | — |
356
+ | `user_id` | Int? | — | — |
357
+ | `chatProvider` | String? | — | — |
358
+ | `chatModel` | String? | — | — |
359
+ | `meeting_source` | String? | manual | — |
360
+ | `meeting_status` | String? | draft | — |
361
+ | `scheduled_start_at` | DateTime? | — | — |
362
+ | `scheduled_end_at` | DateTime? | — | — |
363
+ | `calendar_event_uuid` | String? | — | — |
364
+ | `meeting_metadata` | String? | — | — |
365
+ | `meeting_settings` | String? | — | — |
366
+ | `last_evidence_at` | DateTime? | — | — |
367
+ | `watcher_state` | String? | idle | — |
368
+ | `recording_started_at` | DateTime? | — | — |
369
+ | `recording_completed_at` | DateTime? | — | — |
370
+ | `recording_status` | String? | — | — |
371
+ | `workspace` | workspaces | — | — |
372
+ | `user` | users? | — | — |
373
+ | `meeting_outputs` | meeting_outputs[] | — | — |
374
+ | `workspace_parsed_files` | workspace_parsed_files[] | — | — |
375
+ | `workspace_tasks` | workspace_tasks[] | — | — |
376
+
377
+ ### workspace_chats (`workspace_chats`)
378
+ | Field | Type | Default | Notes |
379
+ |---|---|---|---|
380
+ | `workspaceId` | Int | — | — |
381
+ | `prompt` | String | — | — |
382
+ | `response` | String | — | — |
383
+ | `uuid` | String? | — | — |
384
+ | `include` | Boolean | true | — |
385
+ | `user_id` | Int? | — | — |
386
+ | `thread_id` | Int? | — | No relation to prevent whole table migration |
387
+ | `api_session_id` | String? | — | String identifier for only the dev API to partition chats in any mode. |
388
+ | `feedbackScore` | Boolean? | — | — |
389
+ | `users` | users? | — | — |
390
+
391
+ ### AgentInvocation (`workspace_agent_invocations`)
392
+ A single agent task invocation with lifecycle state tracking.
393
+
394
+ | Field | Type | Default | Notes |
395
+ |---|---|---|---|
396
+ | `uuid` | String | — | — |
397
+ | `prompt` | String | — | Contains agent invocation to parse + option additional text for seed. |
398
+ | `closed` | Boolean | false | — |
399
+ | `user_id` | Int? | — | — |
400
+ | `thread_id` | Int? | — | No relation to prevent whole table migration |
401
+ | `workspace_id` | Int | — | — |
402
+ | `workspace_slug` | String? | — | — |
403
+ | `thread_slug` | String? | — | — |
404
+ | `user` | users? | — | — |
405
+ | `workspace` | workspaces | — | — |
406
+ | `workspace_agent_invocation_lifecycle` | workspace_agent_invocation_lifecycles? | — | — |
407
+
408
+ ### workspace_agent_invocation_lifecycles (`workspace_agent_invocation_lifecycles`)
409
+ | Field | Type | Default | Notes |
410
+ |---|---|---|---|
411
+ | `invocation_id` | Int | — | — |
412
+ | `invocation_uuid` | String | — | — |
413
+ | `backend_id` | String? | — | — |
414
+ | `state` | String? | — | — |
415
+ | `resume_session_id` | String? | — | — |
416
+ | `initial_prompt_dispatched_at` | DateTime? | — | — |
417
+ | `turn_in_flight` | Boolean | false | — |
418
+ | `pending_permission_count` | Int | 0 | — |
419
+ | `last_error` | String? | — | — |
420
+ | `lifecycle_payload` | String? | — | — |
421
+ | `invocation` | workspace_agent_invocations | — | — |
422
+
423
+ ### workspace_users (`workspace_users`)
424
+ | Field | Type | Default | Notes |
425
+ |---|---|---|---|
426
+ | `user_id` | Int | — | — |
427
+ | `workspace_id` | Int | — | — |
428
+ | `workspaces` | workspaces | — | — |
429
+ | `users` | users | — | — |
430
+
431
+ ### cache_data (`cache_data`)
432
+ | Field | Type | Default | Notes |
433
+ |---|---|---|---|
434
+ | `name` | String | — | — |
435
+ | `data` | String | — | — |
436
+ | `belongsTo` | String? | — | — |
437
+ | `byId` | Int? | — | — |
438
+ | `expiresAt` | DateTime? | — | — |
439
+
440
+ ### EmbedConfig (`embed_configs`)
441
+ Configuration for an embeddable chat widget hosted on an external site.
442
+
443
+ | Field | Type | Default | Notes |
444
+ |---|---|---|---|
445
+ | `uuid` | String | — | — |
446
+ | `enabled` | Boolean | false | — |
447
+ | `chat_mode` | String | chat | — |
448
+ | `allowlist_domains` | String? | — | — |
449
+ | `widget_settings` | String? | — | — |
450
+ | `max_chats_per_day` | Int? | — | — |
451
+ | `max_chats_per_session` | Int? | — | — |
452
+ | `message_limit` | Int? | 20 | — |
453
+ | `workspace_id` | Int | — | — |
454
+ | `usersId` | Int? | — | — |
455
+ | `workspace` | workspaces | — | — |
456
+ | `embed_chats` | embed_chats[] | — | — |
457
+ | `users` | users? | — | — |
458
+
459
+ ### embed_chats (`embed_chats`)
460
+ | Field | Type | Default | Notes |
461
+ |---|---|---|---|
462
+ | `prompt` | String | — | — |
463
+ | `response` | String | — | — |
464
+ | `session_id` | String | — | — |
465
+ | `include` | Boolean | true | — |
466
+ | `connection_information` | String? | — | — |
467
+ | `embed_id` | Int | — | — |
468
+ | `usersId` | Int? | — | — |
469
+ | `embed_config` | embed_configs | — | — |
470
+ | `users` | users? | — | — |
471
+
472
+ ### event_logs (`event_logs`)
473
+ | Field | Type | Default | Notes |
474
+ |---|---|---|---|
475
+ | `event` | String | — | — |
476
+ | `metadata` | String? | — | — |
477
+ | `userId` | Int? | — | — |
478
+ | `occurredAt` | DateTime | now( | — |
479
+
480
+ ### system_logs (`system_logs`)
481
+ | Field | Type | Default | Notes |
482
+ |---|---|---|---|
483
+ | `level` | String | — | debug, info, warn, error, fatal |
484
+ | `source` | String | — | app, server, llm, vector-db, channel, embed, external |
485
+ | `message` | String | — | — |
486
+ | `context` | String? | — | JSON string for extra data |
487
+ | `timestamp` | DateTime | now( | — |
488
+
489
+ ### slash_command_presets (`slash_command_presets`)
490
+ | Field | Type | Default | Notes |
491
+ |---|---|---|---|
492
+ | `command` | String | — | — |
493
+ | `prompt` | String | — | — |
494
+ | `description` | String | — | — |
495
+ | `uid` | Int | 0 | 0 is null user |
496
+ | `userId` | Int? | — | — |
497
+ | `is_purchased` | Boolean | false | — |
498
+ | `store_item_id` | String? | — | — |
499
+ | `user` | users? | — | — |
500
+
501
+ ### system_prompt_presets (`system_prompt_presets`)
502
+ | Field | Type | Default | Notes |
503
+ |---|---|---|---|
504
+ | `name` | String | — | — |
505
+ | `prompt` | String | — | — |
506
+ | `description` | String? | — | — |
507
+ | `uid` | Int | 0 | 0 is null user |
508
+ | `userId` | Int? | — | — |
509
+ | `is_purchased` | Boolean | false | — |
510
+ | `store_item_id` | String? | — | — |
511
+ | `user` | users? | — | — |
512
+
513
+ ### document_sync_executions (`document_sync_executions`)
514
+ | Field | Type | Default | Notes |
515
+ |---|---|---|---|
516
+ | `queueId` | Int | — | — |
517
+ | `status` | String | unknown | — |
518
+ | `result` | String? | — | — |
519
+ | `queue` | document_sync_queues | — | — |
520
+
521
+ ### system_prompt_variables (`system_prompt_variables`)
522
+ | Field | Type | Default | Notes |
523
+ |---|---|---|---|
524
+ | `key` | String | — | — |
525
+ | `value` | String? | — | — |
526
+ | `description` | String? | — | — |
527
+ | `type` | String | system | system, user, dynamic |
528
+ | `userId` | Int? | — | — |
529
+ | `user` | users? | — | — |
530
+
531
+ ### local_mcp_servers (`local_mcp_servers`)
532
+ | Field | Type | Default | Notes |
533
+ |---|---|---|---|
534
+ | `display_name` | String | — | — |
535
+ | `name` | String | — | — |
536
+ | `description` | String? | — | — |
537
+ | `server_type` | String | — | 'stdio' | 'http' | 'sse' (sse deprecated but kept for compatibility) |
538
+ | `config` | String | — | JSON - Runtime config (computed from store_config + user_config) |
539
+ | `store_config` | String? | — | JSON - Template config from Store with placeholders {{KEY}} |
540
+ | `user_config` | String? | — | JSON - User's placeholder values {"KEY": "value"} |
541
+ | `setup_schema` | String? | — | JSON Array - Schema for rich config UI (see config-schema-guide.md) |
542
+ | `enabled` | Boolean | true | Server-level enable/disable flag |
543
+ | `status` | String | stopped | 'stopped' | 'starting' | 'running' | 'error' | 'stopping' | 'disabled' |
544
+ | `enabled_tools` | String? | — | JSON Array - List of enabled tool names for granular control (["*"] means all tools enabled) |
545
+ | `icon_path` | String? | — | — |
546
+ | `tags` | String? | — | JSON Array - User-defined tags for organization |
547
+ | `metadata` | String? | — | JSON - Server metadata (is_default, category, default_key, etc.) |
548
+ | `is_configured` | Boolean | false | Tracks whether the server has user-provided configuration |
549
+
550
+ ### agent_teams (`agent_teams`)
551
+ | Field | Type | Default | Notes |
552
+ |---|---|---|---|
553
+ | `name` | String | — | — |
554
+ | `description` | String? | — | — |
555
+ | `avatar` | String? | — | Path to avatar image file |
556
+ | `agents` | String | [] | JSON array of agent configurations |
557
+ | `connections` | String | [] | JSON array of connections between agents |
558
+ | `settings` | String | {} | JSON object of team settings |
559
+ | `a2aMetadata` | String | {} | A2A protocol metadata (Agent Card) |
560
+ | `tags` | String? | — | JSON array of tags |
561
+ | `lastModified` | DateTime | now( | — |
562
+
563
+ ### desktop_mobile_devices (`desktop_mobile_devices`)
564
+ | Field | Type | Default | Notes |
565
+ |---|---|---|---|
566
+ | `deviceOs` | String | — | — |
567
+ | `deviceName` | String | — | — |
568
+ | `token` | String | — | — |
569
+ | `approved` | Boolean | false | — |
570
+ | `userId` | Int? | — | — |
571
+ | `user` | users? | — | — |
572
+
573
+ ### agent_flow_schedule_runs (`agent_flow_schedule_runs`)
574
+ | Field | Type | Default | Notes |
575
+ |---|---|---|---|
576
+ | `flowUuid` | String | — | — |
577
+ | `mode` | String | interval | — |
578
+ | `userId` | Int? | — | — |
579
+ | `flowName` | String? | — | — |
580
+ | `intervalConfig` | String? | — | JSON string of interval configuration |
581
+ | `timezone` | String? | UTC | — |
582
+ | `active` | Boolean? | true | — |
583
+ | `lastRunAt` | DateTime? | — | — |
584
+ | `nextRunAt` | DateTime? | — | Calculated next run time |
585
+ | `source` | String? | — | null = manual, "api" = scheduler sync |
586
+ | `metadata` | String? | — | JSON string |
587
+
588
+ ### AgentFlow (`agent_flows`)
589
+ An automated multi-step agent workflow.
590
+
591
+ | Field | Type | Default | Notes |
592
+ |---|---|---|---|
593
+ | `uuid` | String | — | Flow UUID, matches JSON filename |
594
+ | `name` | String | — | Flow display name |
595
+ | `description` | String? | — | Flow description |
596
+ | `active` | Boolean | true | Whether flow is enabled |
597
+ | `tags` | String? | — | JSON array of tags |
598
+ | `file_path` | String | — | Path to JSON file (relative to flowsDir) |
599
+ | `has_local_modifications` | Boolean | false | Whether user has modified a purchased flow |
600
+ | `creator` | String? | — | — |
601
+
602
+ ### credentials (`credentials`)
603
+ | Field | Type | Default | Notes |
604
+ |---|---|---|---|
605
+ | `name` | String | — | — |
606
+ | `type` | String | — | Credential type identifier, e.g. http_header, query_auth, basic_auth, env_var |
607
+ | `data` | String | — | Encrypted credential data stored as a string |
608
+ | `metadata` | String? | — | Optional metadata payload as a JSON string |
609
+ | `deletedAt` | DateTime? | — | — |
610
+
611
+ ### acp_auth_profiles (`acp_auth_profiles`)
612
+ | Field | Type | Default | Notes |
613
+ |---|---|---|---|
614
+ | `profileId` | String | — | — |
615
+ | `userId` | Int? | — | — |
616
+ | `providerId` | String | — | — |
617
+ | `type` | String | api_key | api_key, oauth, token |
618
+ | `credential` | String | — | Encrypted JSON via EncryptionManager |
619
+ | `label` | String | default | — |
620
+
621
+ ### CalendarEvent (`calendar_events`)
622
+ A calendar event linked to a workspace thread (meeting integration).
623
+
624
+ | Field | Type | Default | Notes |
625
+ |---|---|---|---|
626
+ | `uuid` | String | uuid( | — |
627
+ | `title` | String | — | — |
628
+ | `description` | String? | — | — |
629
+ | `startDate` | DateTime | — | — |
630
+ | `endDate` | DateTime? | — | — |
631
+ | `allDay` | Boolean | false | — |
632
+ | `color` | String? | #3b82f6 | — |
633
+ | `repeat` | String? | — | JSON: {type, interval, endDate, count, weekdays} |
634
+ | `reminders` | String? | — | JSON array: [{type: 'notification', minutes: 15}] |
635
+ | `metadata` | String? | — | JSON for extensibility: location, participants, conferencing, etc. |
636
+ | `externalProvider` | String? | — | — |
637
+ | `externalAccountId` | String? | — | — |
638
+ | `externalCalendarId` | String? | — | — |
639
+ | `externalEventId` | String? | — | — |
640
+ | `externalEventUrl` | String? | — | — |
641
+ | `externalReadOnly` | Boolean | false | — |
642
+ | `userId` | Int? | — | — |
643
+
644
+ ### calendar_provider_credentials (`calendar_provider_credentials`)
645
+ | Field | Type | Default | Notes |
646
+ |---|---|---|---|
647
+ | `provider` | String | — | e.g. "google", "outlook" |
648
+ | `clientId` | String | — | Encrypted via EncryptionManager |
649
+ | `clientSecret` | String | — | Encrypted via EncryptionManager |
650
+
651
+ ### user_calendar_tokens (`user_calendar_tokens`)
652
+ | Field | Type | Default | Notes |
653
+ |---|---|---|---|
654
+ | `userId` | Int | — | — |
655
+ | `provider` | String | — | e.g. "google", "outlook" |
656
+ | `accountId` | String | — | Provider's stable account identifier (Google: sub). Allows multiple accounts per provider. |
657
+ | `accountEmail` | String? | — | Human-readable email label shown in UI |
658
+ | `accessToken` | String | — | Encrypted via EncryptionManager |
659
+ | `refreshToken` | String? | — | Encrypted via EncryptionManager (nullable: not all flows return a refresh token) |
660
+ | `expiresAt` | DateTime? | — | — |
661
+ | `scope` | String? | — | OAuth scopes granted |
662
+ | `calendarSelection` | String? | — | JSON: { selectedCalendarIds: string[] } |
663
+ | `lastSyncAt` | DateTime? | — | — |
664
+
665
+ ### calendar_operator_audits (`calendar_operator_audits`)
666
+ | Field | Type | Default | Notes |
667
+ |---|---|---|---|
668
+ | `uuid` | String | uuid( | — |
669
+ | `userId` | Int? | — | — |
670
+ | `workspaceId` | Int? | — | — |
671
+ | `threadId` | Int? | — | — |
672
+ | `invocationUuid` | String? | — | — |
673
+ | `permissionRequestId` | String? | — | — |
674
+ | `source` | String | acp_live | acp_live | acp_api |
675
+ | `action` | String | — | — |
676
+ | `status` | String | requested | requested | approved | rejected | timed_out | executed | failed |
677
+ | `target` | String? | — | — |
678
+ | `reason` | String? | — | — |
679
+ | `provider` | String? | — | — |
680
+ | `accountId` | String? | — | — |
681
+ | `calendarId` | String? | — | — |
682
+ | `eventUuid` | String? | — | — |
683
+ | `title` | String? | — | — |
684
+ | `startDate` | String? | — | — |
685
+ | `endDate` | String? | — | — |
686
+ | `allDay` | Boolean | false | — |
687
+ | `sendUpdates` | String? | — | — |
688
+ | `responseStatus` | String? | — | — |
689
+ | `createConference` | Boolean | false | — |
690
+ | `selectedOptionId` | String? | — | — |
691
+ | `approvedAt` | DateTime? | — | — |
692
+ | `executedAt` | DateTime? | — | — |
693
+ | `failedAt` | DateTime? | — | — |
694
+ | `metadata` | String? | — | JSON |
695
+
696
+ ### meeting_outputs (`meeting_outputs`)
697
+ | Field | Type | Default | Notes |
698
+ |---|---|---|---|
699
+ | `uuid` | String | uuid( | — |
700
+ | `workspace_id` | Int | — | — |
701
+ | `thread_id` | Int | — | — |
702
+ | `source_output_id` | Int? | — | — |
703
+ | `output_type` | String | — | — |
704
+ | `title` | String | — | — |
705
+ | `content` | String | — | — |
706
+ | `status` | String | draft | — |
707
+ | `generation_mode` | String | manual | — |
708
+ | `template_key` | String? | — | — |
709
+ | `evidence_snapshot` | String? | — | — |
710
+ | `settings_snapshot` | String? | — | — |
711
+ | `workspace` | workspaces | — | — |
712
+ | `thread` | workspace_threads | — | — |
713
+
714
+ ### LocalApp (`local_apps`)
715
+ A registered SDK application with scoped permissions (x-app-id auth).
716
+
717
+ | Field | Type | Default | Notes |
718
+ |---|---|---|---|
719
+ | `display_name` | String | — | — |
720
+ | `name` | String | — | — |
721
+ | `description` | String? | — | — |
722
+ | `app_type` | String | — | 'python' | 'node' | 'npx' | 'uvx' | 'custom' |
723
+ | `config` | String | — | JSON - Runtime config (computed from store_config + user_config) |
724
+ | `store_config` | String? | — | JSON - Template config from Store with placeholders {{KEY}} |
725
+ | `user_config` | String? | — | JSON - User's placeholder values {"KEY": "value"} |
726
+ | `setup_schema` | String? | — | JSON Array - Schema for rich config UI (see config-schema-guide.md) |
727
+ | `enabled` | Boolean | true | — |
728
+ | `status` | String | stopped | 'stopped' | 'starting' | 'running' | 'error' | 'stopping' | 'disabled' |
729
+ | `icon_path` | String? | — | — |
730
+ | `tags` | String? | — | JSON Array |
731
+ | `metadata` | String? | — | JSON - App metadata |
732
+ | `is_configured` | Boolean | true | Tracks whether the app has user-provided configuration |
733
+
734
+ ### external_tasks (`external_tasks`)
735
+ | Field | Type | Default | Notes |
736
+ |---|---|---|---|
737
+ | `uuid` | String | uuid( | — |
738
+ | `sourceApp` | String | — | "uuid:xxx" |
739
+ | `tableName` | String | — | "activities" |
740
+ | `actionType` | String | — | "INSERT" | "UPDATE" | "DELETE" |
741
+ | `title` | String | — | "[app] type: ACTION uuid:xxx" |
742
+ | `rawData` | String | — | JSON - Full Supabase payload |
743
+ | `oldData` | String? | — | JSON - For UPDATE events |
744
+ | `status` | String | pending | pending | claimed | processing | completed | failed | rejected |
745
+ | `webhookUrl` | String? | — | Local App webhook URL for forwarding |
746
+ | `lockUrl` | String? | — | Local App lock API URL for claiming |
747
+ | `claimedByEmail` | String? | — | Email of user who claimed this task |
748
+ | `error` | String? | — | Error message if failed |
749
+ | `attemptedBy` | String? | — | JSON Array - Machine IDs that attempted and failed |
750
+ | `retryCount` | Int | 0 | Number of retry attempts |
751
+ | `runs` | external_task_runs[] | — | — |
752
+
753
+ ### external_task_runs (`external_task_runs`)
754
+ | Field | Type | Default | Notes |
755
+ |---|---|---|---|
756
+ | `taskUuid` | String | — | — |
757
+ | `agentName` | String | — | — |
758
+ | `workspaceSlug` | String | — | — |
759
+ | `threadSlug` | String? | — | — |
760
+ | `prompt` | String? | — | The prompt used for this run |
761
+ | `status` | String | pending | pending | running | completed | failed |
762
+ | `error` | String? | — | Error message if failed |
763
+ | `startedAt` | DateTime? | — | — |
764
+ | `completedAt` | DateTime? | — | — |
765
+ | `task` | external_tasks | — | — |
766
+
767
+ ### marketplace_items (`marketplace_items`)
768
+ | Field | Type | Default | Notes |
769
+ |---|---|---|---|
770
+ | `entity_type` | String | — | 'local_app' | 'local_mcp_server' | 'mcp_server' | 'agent_flow' | 'slash_command' | 'agent' | 'system_prompt' |
771
+ | `entity_id` | String | — | Polymorphic FK to respective table |
772
+ | `store_item_id` | String? | — | ID on marketplace store side (after publish) |
773
+ | `status` | String | published | draft | published - for saving to store |
774
+ | `marketplace_status` | String | available | available | unavailable | maintenance - for visibility |
775
+ | `publish_metadata` | String? | — | JSON - price, full_description, is_featured, etc. |
776
+ | `store_updated_at` | DateTime? | — | Store's date_updated for sync detection |
777
+ | `cover_image_path` | String? | — | Path to cover image for marketplace listing |
778
+ | `is_purchased` | Boolean | false | Whether this item was purchased from the store |
779
+
780
+ ### AgentSkill (`agent_skills`)
781
+ A skill (tool-set) available to agents. Can come from a git repo, zip file, or plugin.
782
+
783
+ | Field | Type | Default | Notes |
784
+ |---|---|---|---|
785
+ | `name` | String | — | — |
786
+ | `display_name` | String | — | — |
787
+ | `normalized_display_name` | String? | — | — |
788
+ | `description` | String? | — | — |
789
+ | `skill_id` | String? | — | Store's ID, used when synced from marketplace |
790
+ | `repository_url` | String? | — | — |
791
+ | `ref` | String? | — | Git ref (branch/tag) |
792
+ | `skill_path` | String? | — | Path within repository |
793
+ | `zip_file` | String? | — | Path to local zip file |
794
+ | `local_path` | String? | — | Absolute source path for local-path type skills |
795
+ | `type` | String | repo | 'repo' | 'zip' | 'local-path' |
796
+ | `scope` | String | uploaded | 'global' | 'workspace' | 'local-app' | 'uploaded' | 'plugin' |
797
+ | `status` | String | draft | 'draft' | 'published' |
798
+ | `pending_publish` | Boolean | true | Tracks if code/ZIP changed and needs new version publish |
799
+ | `plugin_id` | String? | — | FK to plugins.id — set when skill is contributed by a plugin's manifest |
800
+ | `plugin` | plugins? | — | — |
801
+
802
+ ### local_app_vector_configs (`local_app_vector_configs`)
803
+ | Field | Type | Default | Notes |
804
+ |---|---|---|---|
805
+ | `app_id` | String | — | — |
806
+ | `provider` | String | — | — |
807
+ | `config` | String | — | — |
808
+
809
+ ### WorkspaceTask (`workspace_tasks`)
810
+ A discrete task created within a workspace.
811
+
812
+ | Field | Type | Default | Notes |
813
+ |---|---|---|---|
814
+ | `uuid` | String | uuid( | — |
815
+ | `workspace_id` | Int | — | — |
816
+ | `thread_id` | Int? | — | — |
817
+ | `title` | String | — | — |
818
+ | `description` | String? | — | — |
819
+ | `status` | String | submitted | submitted, working, input-required, completed, failed, canceled |
820
+ | `agent_id` | String? | — | — |
821
+ | `source` | String? | web | web, api, schedule, etc |
822
+ | `priority` | String? | normal | — |
823
+ | `due_at` | DateTime? | — | — |
824
+ | `result` | String? | — | JSON string of task result |
825
+ | `metadata` | String? | — | JSON string of additional metadata |
826
+ | `created_by` | Int? | — | — |
827
+ | `created_at` | DateTime | now( | — |
828
+ | `updated_at` | DateTime | — | — |
829
+ | `workspace` | workspaces | — | — |
830
+ | `user` | users? | — | — |
831
+ | `thread` | workspace_threads? | — | — |
832
+
833
+ ### ChannelPlugin (`channel_plugins`)
834
+ A messaging channel integration (e.g. Slack, Teams) linked to a workspace.
835
+
836
+ | Field | Type | Default | Notes |
837
+ |---|---|---|---|
838
+ | `uuid` | String | uuid( | — |
839
+ | `workspace_id` | Int | — | — |
840
+ | `plugin_type` | String | — | "telegram" | "slack" | "discord" |
841
+ | `name` | String? | — | — |
842
+ | `enabled` | Boolean | false | — |
843
+ | `config` | String | — | JSON - encrypted credentials (bot token) |
844
+ | `settings` | String? | — | JSON - plugin-specific settings |
845
+ | `status` | String | stopped | stopped|starting|running|error |
846
+ | `error_message` | String? | — | — |
847
+ | `created_by` | Int? | — | — |
848
+ | `workspace` | workspaces | — | — |
849
+ | `channel_users` | channel_users[] | — | — |
850
+ | `channel_sessions` | channel_sessions[] | — | — |
851
+ | `channel_pairing_codes` | channel_pairing_codes[] | — | — |
852
+
853
+ ### channel_users (`channel_users`)
854
+ | Field | Type | Default | Notes |
855
+ |---|---|---|---|
856
+ | `plugin_id` | Int | — | — |
857
+ | `platform_user_id` | String | — | — |
858
+ | `platform_username` | String? | — | — |
859
+ | `authorized` | Boolean | true | — |
860
+ | `metadata` | String? | — | JSON |
861
+ | `plugin` | channel_plugins | — | — |
862
+ | `channel_sessions` | channel_sessions[] | — | — |
863
+
864
+ ### channel_sessions (`channel_sessions`)
865
+ | Field | Type | Default | Notes |
866
+ |---|---|---|---|
867
+ | `plugin_id` | Int | — | — |
868
+ | `channel_user_id` | Int | — | — |
869
+ | `platform_chat_id` | String | — | — |
870
+ | `thread_id` | Int? | — | — |
871
+ | `active` | Boolean | true | — |
872
+ | `metadata` | String? | — | JSON |
873
+ | `plugin` | channel_plugins | — | — |
874
+ | `channel_user` | channel_users | — | — |
875
+
876
+ ### channel_pairing_codes (`channel_pairing_codes`)
877
+ | Field | Type | Default | Notes |
878
+ |---|---|---|---|
879
+ | `plugin_id` | Int | — | — |
880
+ | `code` | String | — | — |
881
+ | `platform_user_id` | String? | — | — |
882
+ | `platform_username` | String? | — | — |
883
+ | `status` | String | pending | pending|approved|rejected|expired |
884
+ | `expiresAt` | DateTime | — | — |
885
+ | `plugin` | channel_plugins | — | — |
886
+
887
+ ### WorkspaceMemory (`workspace_memories`)
888
+ A long-term memory entry stored for a workspace.
889
+
890
+ | Field | Type | Default | Notes |
891
+ |---|---|---|---|
892
+ | `uuid` | String | uuid( | — |
893
+ | `workspace_id` | Int | — | — |
894
+ | `user_id` | Int? | — | — |
895
+ | `category` | String | fact | fact, preference, instruction, entity |
896
+ | `content` | String | — | — |
897
+ | `content_hash` | String? | — | — |
898
+ | `vector_id` | String? | — | — |
899
+ | `source_chat_id` | Int? | — | — |
900
+ | `source_thread_id` | Int? | — | — |
901
+ | `importance` | Int | 5 | 1-10 |
902
+ | `access_count` | Int | 0 | — |
903
+ | `active` | Boolean | true | — |
904
+ | `metadata` | String? | — | — |
905
+ | `lastAccessedAt` | DateTime | now( | — |
906
+ | `source_file` | String? | — | relative path: "MEMORY.md" or "2026-03-09.md" |
907
+ | `file_hash` | String? | — | SHA256 of source file at sync time |
908
+ | `chunk_index` | Int? | — | position within file (for multi-memory files) |
909
+
910
+ ### Plugin (`plugins`)
911
+ An installable plugin that extends RealtimeX with new providers, skills, or channels.
912
+
913
+ | Field | Type | Default | Notes |
914
+ |---|---|---|---|
915
+ | `name` | String | — | Machine-readable slug: "notion-integration" |
916
+ | `display_name` | String | — | "Notion Integration" |
917
+ | `description` | String? | — | — |
918
+ | `version` | String | — | Semver: "1.0.0" |
919
+ | `author` | String? | — | — |
920
+ | `license` | String? | — | — |
921
+ | `install_source` | String | local | 'local' | 'marketplace' | 'zip' | 'git' | 'builtin' |
922
+ | `install_ref` | String? | — | Source URL, npm name, marketplace ID, etc. |
923
+ | `manifest` | String | — | JSON - Full realtimex.plugin.json contents |
924
+ | `capabilities` | String | [] | JSON Array - ["tools","hooks"] (denormalized for queries) |
925
+ | `setup_schema` | String? | — | JSON Array - Schema for rich config UI |
926
+ | `store_config` | String? | — | JSON - Template config with {{PLACEHOLDER}} values |
927
+ | `user_config` | String? | — | JSON - User's placeholder values {"KEY": "value"} |
928
+ | `enabled` | Boolean | true | Global enable/disable |
929
+ | `status` | String | installed | 'installed' | 'active' | 'error' | 'disabled' |
930
+ | `error_message` | String? | — | — |
931
+ | `storage_path` | String? | — | Relative path within server/storage/plugins/ |
932
+ | `icon_path` | String? | — | — |
933
+ | `tags` | String? | — | JSON Array |
934
+ | `metadata` | String? | — | JSON - Extra data (homepage, repository, etc.) |
935
+ | `skills` | agent_skills[] | — | Skills contributed by this plugin's manifest (CASCADE on plugin delete) |
936
+
937
+ ### workspace_memory_configs (`workspace_memory_configs`)
938
+ | Field | Type | Default | Notes |
939
+ |---|---|---|---|
940
+ | `workspace_id` | Int | — | — |
941
+ | `memory_enabled` | Boolean | true | — |
942
+ | `auto_extract` | Boolean | true | — |
943
+ | `max_memories` | Int | 200 | — |
944
+ | `injection_token_limit` | Int | 800 | — |
945
+ | `similarity_dedup_threshold` | Float | 0.9 | — |
946
+ | `temporal_decay_halflife` | Int | 30 | — |
947
+ | `hybrid_search_enabled` | Boolean | true | — |
948
+ | `vector_weight` | Float | 0.7 | — |
949
+ | `keyword_weight` | Float | 0.3 | — |
950
+ | `mmr_enabled` | Boolean | false | — |
951
+ | `mmr_lambda` | Float | 0.7 | — |
952
+ | `temporal_decay_enabled` | Boolean | false | — |
953
+ | `chunking_enabled` | Boolean | true | — |
954
+ | `extraction_mode` | String | per_turn | — |
955
+ | `search_backend` | String | builtin | — |
956
+ | `qmd_search_mode` | String | search | — |
957
+ | `qmd_max_results` | Int | 6 | — |
958
+ | `qmd_timeout_ms` | Int | 4000 | — |
959
+ | `qmd_candidate_multiplier` | Int | 3 | — |
960
+ | `qmd_min_score` | Float | 0.0 | — |
961
+ | `qmd_intent` | String | | — |
962
+ | `qmd_candidate_limit` | Int | 40 | — |
963
+ | `qmd_skip_rerank` | Boolean | false | — |