summaryrefslogtreecommitdiffhomepage
path: root/internal/app/interfaces.go
diff options
context:
space:
mode:
authoradamdottv <[email protected]>2025-05-28 10:12:08 -0500
committeradamdottv <[email protected]>2025-05-28 15:36:35 -0500
commit5e738ce7d3b66b88a407a1bcc53a5169d0f4a904 (patch)
tree5c7a6ac13ebb60946e7c88f7d0e04df766edf94a /internal/app/interfaces.go
parent641e9ff6642ef7b55928ef235f54d53822045baf (diff)
downloadopencode-5e738ce7d3b66b88a407a1bcc53a5169d0f4a904.tar.gz
opencode-5e738ce7d3b66b88a407a1bcc53a5169d0f4a904.zip
wip: refactoring tui
Diffstat (limited to 'internal/app/interfaces.go')
-rw-r--r--internal/app/interfaces.go42
1 files changed, 42 insertions, 0 deletions
diff --git a/internal/app/interfaces.go b/internal/app/interfaces.go
new file mode 100644
index 000000000..2f4287078
--- /dev/null
+++ b/internal/app/interfaces.go
@@ -0,0 +1,42 @@
+package app
+
+import (
+ "context"
+ "time"
+
+ "github.com/sst/opencode/internal/message"
+ "github.com/sst/opencode/internal/pubsub"
+ "github.com/sst/opencode/internal/session"
+)
+
+// SessionService defines the interface for session operations
+type SessionService interface {
+ Create(ctx context.Context, title string) (session.Session, error)
+ Get(ctx context.Context, id string) (session.Session, error)
+ List(ctx context.Context) ([]session.Session, error)
+ Update(ctx context.Context, id, title string) error
+ Delete(ctx context.Context, id string) error
+}
+
+// MessageService defines the interface for message operations
+type MessageService interface {
+ pubsub.Subscriber[message.Message]
+
+ GetBySession(ctx context.Context, sessionID string) ([]message.Message, error)
+ List(ctx context.Context, sessionID string) ([]message.Message, error)
+ Create(ctx context.Context, sessionID string, params message.CreateMessageParams) (message.Message, error)
+ Update(ctx context.Context, msg message.Message) (message.Message, error)
+ Delete(ctx context.Context, id string) error
+ DeleteSessionMessages(ctx context.Context, sessionID string) error
+ Get(ctx context.Context, id string) (message.Message, error)
+ ListAfter(ctx context.Context, sessionID string, timestamp time.Time) ([]message.Message, error)
+}
+
+// AgentService defines the interface for agent operations
+type AgentService interface {
+ Run(ctx context.Context, sessionID string, text string, attachments ...message.Attachment) (string, error)
+ Cancel(sessionID string) error
+ IsBusy() bool
+ IsSessionBusy(sessionID string) bool
+ CompactSession(ctx context.Context, sessionID string, force bool) error
+} \ No newline at end of file