app: composition root (A1-A4), Run(ctx), handleIncoming (вариант A), фикс config.Load(""), GetActiveTaskByChatID, main.go обновлён
All checks were successful
build-test / build (push) Successful in 35s

This commit is contained in:
Hermes
2026-08-15 09:51:03 +05:00
parent 4641090398
commit c72b41b2c5
7 changed files with 392 additions and 47 deletions

View File

@@ -1,11 +1,11 @@
// Command ratatoskr — оркестратор конвейера Ratatoskr (единственный бинарь).
// Command ratatoskr — оркестратор конвейера Ratatoskr (единый бинарь).
//
// Стартовый каркас: точка входа + заглушки пакетов. Полная логика
// (диалог, аналитик, research, feedback, webhook) наполняется по мере
// переезда с Python.
// Запуск: ratatoskr [-config config.yaml]
// config.yaml ищется в CWD, по умолчанию — env/дефолты.
package main
import (
"context"
"flag"
"fmt"
"log"
@@ -15,7 +15,7 @@ import (
)
func main() {
cfg := flag.String("config", "", "путь к config файлу (по умолчанию — env)")
cfg := flag.String("config", "", "путь к config.yaml (по умолчанию — CWD/config.yaml)")
version := flag.Bool("version", false, "показать версию и выйти")
flag.Parse()
@@ -24,21 +24,20 @@ func main() {
return
}
// Composition root: читает конфиг (env/config), настраивает DI.
a, err := app.New(*cfg)
if err != nil {
log.Fatalf("app init: %v", err)
}
defer func() {
if a.Store != nil {
a.Store.Close()
}
}()
// Пока: заглушка. Здесь будет:
// - запуск Telegram-gateway (диалог)
// - http-сервер webhook (+ /feedback, /status)
// - воркер: обработка issues → opencode-субагенты → PR
_ = a
os.Exit(run())
}
func run() int {
fmt.Fprintln(os.Stderr, "ratatoskr-go: каркас готов, конвейер не подключён")
return 0
log.Print("ratatoskr: запущен")
if err := a.Run(context.Background()); err != nil {
log.Fatalf("app run: %v", err)
}
log.Print("ratatoskr: остановлен")
os.Exit(0)
}