feat: наблюдение за живой opencode-сессией (/status N показывает что делает агент)
All checks were successful
CI / test (push) Successful in 54s
CI / build-and-package (amd64, linux) (push) Successful in 35s
CI / build-and-package (amd64, windows) (push) Successful in 43s

LiveRegistry собирает live-шаги из stdout процесса opencode по taskID
(через контекст, без изменения интерфейса Runner). /status N для running-задачи
прикладывает живое состояние: активный субагент, давность последнего шага,
последние text-шаги агента. Ничего не перезапускается и не убивается —
только наблюдение по запросу.
This commit is contained in:
Hermes
2026-08-17 08:05:15 +05:00
parent 2255917949
commit da775ac227
9 changed files with 329 additions and 26 deletions

View File

@@ -103,6 +103,9 @@ func New(configPath, version, updateToken string) (*App, error) {
// Core — ядро машины состояний
coreCtx := core.New(store, analystCtx)
// Live-журнал живых сессий: воркер пишет шаги агента, /status N их читает.
live := opencode.NewLiveRegistry()
// Router — единый диспетчер входящих из всех каналов
a := &App{
Config: cfg,
@@ -129,10 +132,14 @@ func New(configPath, version, updateToken string) (*App, error) {
MaxJobs: 2,
GitBaseURL: cfg.Git.BaseURL,
GitToken: cfg.Git.Token,
Live: live,
}
a.Router = router
a.Worker = w
// /status N читает живое состояние сессии через liveProbe-адаптер.
coreCtx.Live = &liveProbe{reg: live}
// Auto-обновление: .new/.old рядом с бинарником (Dir пуст → binDir() от os.Executable).
// Токен: вшитый updateToken приоритетнее update.token из конфига.
udToken := updateToken