Add workspaces, conversation sessions, app-managed computers and pictures
- Rail: Add icon with stacked form modals (bot, workspace, computer), coordinator, recent bots with "See all bots", Workspaces section, and a workspace mode listing only its crew - Workspaces: page for context, bots (per-workspace instructions and memory), computers (default, link, unlink), models and delete; conversations scoped per bot per workspace - Sessions: conversations split into searchable, reopenable sessions with carry-over summaries; sessions and new-session header icons - Computers: created and provisioned over the docker socket, home dir kept at DATA_DIR/computers/<id> after delete; super admins only - Models: workspace settings win over a bot's own, then the defaults - Pictures for bots and workspaces; bots editable from the header - Coordinator tools: update_workspace, set_bot_workspace_instructions Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
@@ -3,6 +3,6 @@
|
||||
* `AdminHomePath`. People, logs and backups exist in code but stay closed
|
||||
* until they are added back here.
|
||||
*/
|
||||
export const AdminSections = ["/admin/bots", "/admin/settings"] as const;
|
||||
export const AdminSections = ["/admin/bots", "/admin/workspaces", "/admin/settings"] as const;
|
||||
|
||||
export const AdminHomePath = "/admin/bots";
|
||||
|
||||
@@ -108,6 +108,24 @@ export const BotTaskStatuses = [
|
||||
|
||||
export type BotTaskStatus = (typeof BotTaskStatuses)[number]["value"];
|
||||
|
||||
/**
|
||||
* A conversation (one bot, in its own chat or one workspace) is split into
|
||||
* sessions so no single history grows without bound. One is active per
|
||||
* conversation; closed ones can be browsed and reopened.
|
||||
*/
|
||||
export const BotSessionStatuses = [
|
||||
{
|
||||
title: "Active",
|
||||
value: "active",
|
||||
},
|
||||
{
|
||||
title: "Closed",
|
||||
value: "closed",
|
||||
},
|
||||
] as const;
|
||||
|
||||
export type BotSessionStatus = (typeof BotSessionStatuses)[number]["value"];
|
||||
|
||||
export const BotTaskStepStates = [
|
||||
{
|
||||
title: "Done",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* A computer is an AIO sandbox running in its own docker container on the
|
||||
* cobble network. The main computer is set up at install and recorded on
|
||||
* signup; sandboxes are created later by the main container.
|
||||
* cobble network, created by the app (`createComputer`), its home
|
||||
* directory kept under `DATA_DIR/computers/<id>`.
|
||||
*/
|
||||
export const ComputerKinds = [
|
||||
{
|
||||
@@ -20,9 +20,18 @@ export const MainComputerName = "Main computer";
|
||||
|
||||
/**
|
||||
* Docker container state as reported by `docker inspect` (`State.Status`),
|
||||
* plus `unknown` for a record that hasn't been inspected yet.
|
||||
* plus `creating` while the app sets it up, `failed` when that didn't
|
||||
* work, and `unknown` for a record that hasn't been inspected yet.
|
||||
*/
|
||||
export const ContainerStatuses = [
|
||||
{
|
||||
title: "Creating",
|
||||
value: "creating",
|
||||
},
|
||||
{
|
||||
title: "Failed",
|
||||
value: "failed",
|
||||
},
|
||||
{
|
||||
title: "Created",
|
||||
value: "created",
|
||||
|
||||
@@ -34,4 +34,12 @@ export const MediaParadigms = [
|
||||
title: "Bot Attachment",
|
||||
value: "bot-attachment",
|
||||
},
|
||||
{
|
||||
title: "Bot Image",
|
||||
value: "bot-image",
|
||||
},
|
||||
{
|
||||
title: "Workspace Image",
|
||||
value: "workspace-image",
|
||||
},
|
||||
] as const;
|
||||
|
||||
Reference in New Issue
Block a user