refactor(core): restructure conversation, channel and message domains

- Rename chat module to conversation with flow-based architecture
- Move channelidentities into channel/identities subpackage
- Add channel/route for routing logic
- Add message service with event hub
- Add MCP providers: container, directory, schedule
- Refactor Feishu/Telegram adapters with directory and stream support
- Add platform management page and channel badges in web UI
- Update database schema for conversations, messages and channel routes
- Add @memoh/shared package for cross-package type definitions
This commit is contained in:
BBQ
2026-02-12 15:33:09 +08:00
parent 75e2ef0467
commit ca5c6a1866
243 changed files with 21463 additions and 10485 deletions
+39
View File
@@ -72,6 +72,45 @@ func (q *Queries) GetContainerByContainerID(ctx context.Context, containerID str
return i, err
}
const listAutoStartContainers = `-- name: ListAutoStartContainers :many
SELECT id, bot_id, container_id, container_name, image, status, namespace, auto_start, host_path, container_path, created_at, updated_at, last_started_at, last_stopped_at FROM containers WHERE auto_start = true ORDER BY updated_at DESC
`
func (q *Queries) ListAutoStartContainers(ctx context.Context) ([]Container, error) {
rows, err := q.db.Query(ctx, listAutoStartContainers)
if err != nil {
return nil, err
}
defer rows.Close()
var items []Container
for rows.Next() {
var i Container
if err := rows.Scan(
&i.ID,
&i.BotID,
&i.ContainerID,
&i.ContainerName,
&i.Image,
&i.Status,
&i.Namespace,
&i.AutoStart,
&i.HostPath,
&i.ContainerPath,
&i.CreatedAt,
&i.UpdatedAt,
&i.LastStartedAt,
&i.LastStoppedAt,
); err != nil {
return nil, err
}
items = append(items, i)
}
if err := rows.Err(); err != nil {
return nil, err
}
return items, nil
}
const updateContainerStarted = `-- name: UpdateContainerStarted :exec
UPDATE containers
SET status = 'running', last_started_at = now(), updated_at = now()