mirror of
https://github.com/sst/opencode.git
synced 2025-08-04 13:30:52 +00:00
44 lines
1 KiB
Go
44 lines
1 KiB
Go
package app
|
|
|
|
import (
|
|
"context"
|
|
"database/sql"
|
|
|
|
"github.com/kujtimiihoxha/termai/internal/db"
|
|
"github.com/kujtimiihoxha/termai/internal/llm"
|
|
"github.com/kujtimiihoxha/termai/internal/logging"
|
|
"github.com/kujtimiihoxha/termai/internal/message"
|
|
"github.com/kujtimiihoxha/termai/internal/permission"
|
|
"github.com/kujtimiihoxha/termai/internal/session"
|
|
"github.com/spf13/viper"
|
|
)
|
|
|
|
type App struct {
|
|
Context context.Context
|
|
|
|
Sessions session.Service
|
|
Messages message.Service
|
|
Permissions permission.Service
|
|
LLM llm.Service
|
|
|
|
Logger logging.Interface
|
|
}
|
|
|
|
func New(ctx context.Context, conn *sql.DB) *App {
|
|
q := db.New(conn)
|
|
log := logging.NewLogger(logging.Options{
|
|
Level: viper.GetString("log.level"),
|
|
})
|
|
sessions := session.NewService(ctx, q)
|
|
messages := message.NewService(ctx, q)
|
|
llm := llm.NewService(ctx, log, sessions, messages)
|
|
|
|
return &App{
|
|
Context: ctx,
|
|
Sessions: sessions,
|
|
Messages: messages,
|
|
Permissions: permission.Default,
|
|
LLM: llm,
|
|
Logger: log,
|
|
}
|
|
}
|