summaryrefslogtreecommitdiffhomepage
path: root/internal/session
diff options
context:
space:
mode:
authoradamdottv <[email protected]>2025-05-02 09:24:24 -0500
committerAdam <[email protected]>2025-05-02 15:24:47 -0500
commit49423da081d6fdffb0bd7275e070a2edeb28e3b5 (patch)
tree3119b731ecd46ff8ef3c26d779c0420c7dfe6c9e /internal/session
parent364cf5b429c3dd6952d45c3361765aa3898e6326 (diff)
downloadopencode-49423da081d6fdffb0bd7275e070a2edeb28e3b5.tar.gz
opencode-49423da081d6fdffb0bd7275e070a2edeb28e3b5.zip
feat: compact command with auto-compact
Diffstat (limited to 'internal/session')
-rw-r--r--internal/session/session.go19
1 files changed, 19 insertions, 0 deletions
diff --git a/internal/session/session.go b/internal/session/session.go
index 682ea7768..be395bb87 100644
--- a/internal/session/session.go
+++ b/internal/session/session.go
@@ -17,6 +17,8 @@ type Session struct {
PromptTokens int64
CompletionTokens int64
Cost float64
+ Summary string
+ SummarizedAt int64
CreatedAt int64
UpdatedAt int64
}
@@ -100,16 +102,31 @@ func (s *service) Get(ctx context.Context, id string) (Session, error) {
}
func (s *service) Save(ctx context.Context, session Session) (Session, error) {
+ summary := sql.NullString{}
+ if session.Summary != "" {
+ summary.String = session.Summary
+ summary.Valid = true
+ }
+
+ summarizedAt := sql.NullInt64{}
+ if session.SummarizedAt != 0 {
+ summarizedAt.Int64 = session.SummarizedAt
+ summarizedAt.Valid = true
+ }
+
dbSession, err := s.q.UpdateSession(ctx, db.UpdateSessionParams{
ID: session.ID,
Title: session.Title,
PromptTokens: session.PromptTokens,
CompletionTokens: session.CompletionTokens,
Cost: session.Cost,
+ Summary: summary,
+ SummarizedAt: summarizedAt,
})
if err != nil {
return Session{}, err
}
+
session = s.fromDBItem(dbSession)
s.Publish(pubsub.UpdatedEvent, session)
return session, nil
@@ -136,6 +153,8 @@ func (s service) fromDBItem(item db.Session) Session {
PromptTokens: item.PromptTokens,
CompletionTokens: item.CompletionTokens,
Cost: item.Cost,
+ Summary: item.Summary.String,
+ SummarizedAt: item.SummarizedAt.Int64,
CreatedAt: item.CreatedAt,
UpdatedAt: item.UpdatedAt,
}