feat(db): move container config from filesystem to DB
Source of truth for container runtime config moves from
groups/<folder>/container.json to a new container_configs table.
The file becomes a materialized view written at spawn time.
- New container_configs table with scalar columns (provider, model,
effort, image_tag, assistant_name, max_messages_per_prompt) and
JSON columns (mcp_servers, packages_apt, packages_npm, skills,
additional_mounts)
- Startup backfill seeds DB from existing container.json files
- materializeContainerJson() replaces readContainerConfig + ensureRuntimeFields
- Self-mod handlers (install_packages, add_mcp_server) write to DB
- Provider cascade simplified: session -> container_configs -> 'claude'
- ncl groups config-{get,update,add-mcp-server,remove-mcp-server,
add-package,remove-package} custom operations
- restartAgentGroupContainers() helper for config change propagation
- Container side unchanged (still reads /workspace/agent/container.json)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
19
src/types.ts
19
src/types.ts
@@ -4,10 +4,29 @@ export interface AgentGroup {
|
||||
id: string;
|
||||
name: string;
|
||||
folder: string;
|
||||
/** @deprecated Use container_configs.provider instead. */
|
||||
agent_provider: string | null;
|
||||
created_at: string;
|
||||
}
|
||||
|
||||
/** Per-agent-group container runtime config. Source of truth in the DB;
|
||||
* materialized to `groups/<folder>/container.json` at spawn time. */
|
||||
export interface ContainerConfigRow {
|
||||
agent_group_id: string;
|
||||
provider: string | null;
|
||||
model: string | null;
|
||||
effort: string | null;
|
||||
image_tag: string | null;
|
||||
assistant_name: string | null;
|
||||
max_messages_per_prompt: number | null;
|
||||
skills: string; // JSON: '"all"' | '["skill1","skill2"]'
|
||||
mcp_servers: string; // JSON: Record<string, McpServerConfig>
|
||||
packages_apt: string; // JSON: string[]
|
||||
packages_npm: string; // JSON: string[]
|
||||
additional_mounts: string; // JSON: AdditionalMountConfig[]
|
||||
updated_at: string;
|
||||
}
|
||||
|
||||
export type UnknownSenderPolicy = 'strict' | 'request_approval' | 'public';
|
||||
|
||||
export interface MessagingGroup {
|
||||
|
||||
Reference in New Issue
Block a user