38 lines
1.4 KiB
TypeScript
38 lines
1.4 KiB
TypeScript
import { registerResource } from '../crud.js';
|
|
|
|
registerResource({
|
|
name: 'group',
|
|
plural: 'groups',
|
|
table: 'agent_groups',
|
|
description:
|
|
'Agent group — a logical agent identity. Each group has its own workspace folder (CLAUDE.md, skills, container config), conversation history, and container image. Multiple messaging groups can be wired to one agent group.',
|
|
idColumn: 'id',
|
|
columns: [
|
|
{ name: 'id', type: 'string', description: 'UUID.', generated: true },
|
|
{
|
|
name: 'name',
|
|
type: 'string',
|
|
description: 'Display name shown in logs, help output, and channel adapters. Does not need to be unique.',
|
|
required: true,
|
|
updatable: true,
|
|
},
|
|
{
|
|
name: 'folder',
|
|
type: 'string',
|
|
description:
|
|
'Directory name under groups/ on the host. Must be unique. Contains CLAUDE.md, skills/, and container.json. Cannot be changed after creation.',
|
|
required: true,
|
|
},
|
|
{
|
|
name: 'agent_provider',
|
|
type: 'string',
|
|
description:
|
|
'LLM provider. Null means the default (claude). Skill-installed providers (e.g. opencode) register via /add-<provider>.',
|
|
updatable: true,
|
|
default: null,
|
|
},
|
|
{ name: 'created_at', type: 'string', description: 'Auto-set.', generated: true },
|
|
],
|
|
operations: { list: 'open', get: 'open', create: 'approval', update: 'approval', delete: 'approval' },
|
|
});
|