Add workspaces, computers, bot memory and the bots queue
- Schema: workspaces (+ workspace_bots, workspace_computers), containers, computers, bot_computers, bots.memory, workspaces.system_prompt, and bots_queue as a bun-sqlite isQueue table - Main computer (and its container record) ensured with the coordinator on signup, seed and /admin/bots; the coordinator's access to it is locked - Effective computer access: direct grants plus workspace computers - Full bot prompt: core instructions, workspace prompts, then memory; bots can rewrite their memory and system prompt - Queue helpers on the native BunSQLite.queue API, plus a handler that heartbeats, serializes per computer, recovers after restarts, reports lost jobs, supports cancelling and pushes outcomes over the WebSocket - Enable SQLite foreign keys at startup so schema cascades fire - Prune finished jobs daily Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
@@ -26,4 +26,41 @@ export const AppData = {
|
||||
PasswordMinLength: 8,
|
||||
PasswordMaxLength: 128,
|
||||
PasswordAttemptLimit: 10,
|
||||
/**
|
||||
* Docker network shared by the main container and every computer. The
|
||||
* installer creates it, and the main computer's container on it.
|
||||
*/
|
||||
DockerNetworkName: SiteData["SiteSlug"],
|
||||
MainComputerContainerName: `${SiteData["SiteSlug"]}-computer`,
|
||||
/**
|
||||
* Port the AIO sandbox listens on inside its container.
|
||||
*/
|
||||
ComputerPort: 8080,
|
||||
/**
|
||||
* Cap on a bot's `system_prompt` and `memory`, and on a workspace's
|
||||
* `system_prompt`, so self-updates can't grow a prompt without bound.
|
||||
*/
|
||||
PromptMaxLength: 20000,
|
||||
/**
|
||||
* `bots_queue` (bun-sqlite `isQueue`). A job that hasn't sent an update
|
||||
* within the lock timeout is presumed lost and goes back to the queue,
|
||||
* so long computer jobs must call `updateBotJob` more often than this.
|
||||
*/
|
||||
BotQueueMaxAttempts: 3,
|
||||
BotQueueLockTimeoutMs: 10 * 60 * 1000,
|
||||
BotQueueBackoffMs: 30 * 1000,
|
||||
/**
|
||||
* The queue handler's lock name. Stable across restarts, so on startup
|
||||
* it can release the jobs it was running when the process stopped.
|
||||
*/
|
||||
BotQueueWorker: "main",
|
||||
BotQueuePollMs: 3000,
|
||||
/**
|
||||
* Jobs run at once. Jobs on the same computer always run one at a time.
|
||||
*/
|
||||
BotQueueConcurrency: 3,
|
||||
/**
|
||||
* Finished jobs are deleted after this many days.
|
||||
*/
|
||||
BotQueueRetentionDays: 30,
|
||||
} as const;
|
||||
|
||||
Reference in New Issue
Block a user