summaryrefslogtreecommitdiffhomepage
path: root/packages/tui/internal
diff options
context:
space:
mode:
authorAiden Cline <[email protected]>2025-08-11 18:32:09 -0500
committerGitHub <[email protected]>2025-08-11 18:32:09 -0500
commitb2a4f57d640655b78f25d4485d2cf137637c3c53 (patch)
tree46d7314a45af05757cbfd6e1bcc4e2d97cb887a2 /packages/tui/internal
parent0ce7d92a8b67c5660669b7850d758131d39b076d (diff)
downloadopencode-b2a4f57d640655b78f25d4485d2cf137637c3c53.tar.gz
opencode-b2a4f57d640655b78f25d4485d2cf137637c3c53.zip
feat: add -c and -s args to tui command following run command pattern (#1835)
Diffstat (limited to 'packages/tui/internal')
-rw-r--r--packages/tui/internal/app/app.go53
1 files changed, 39 insertions, 14 deletions
diff --git a/packages/tui/internal/app/app.go b/packages/tui/internal/app/app.go
index a07637794..47520257d 100644
--- a/packages/tui/internal/app/app.go
+++ b/packages/tui/internal/app/app.go
@@ -46,6 +46,7 @@ type App struct {
InitialModel *string
InitialPrompt *string
InitialAgent *string
+ InitialSession *string
compactCancel context.CancelFunc
IsLeaderSequence bool
}
@@ -95,6 +96,7 @@ func New(
initialModel *string,
initialPrompt *string,
initialAgent *string,
+ initialSession *string,
) (*App, error) {
util.RootPath = appInfo.Path.Root
util.CwdPath = appInfo.Path.Cwd
@@ -175,20 +177,21 @@ func New(
slog.Debug("Loaded config", "config", configInfo)
app := &App{
- Info: appInfo,
- Agents: agents,
- Version: version,
- StatePath: appStatePath,
- Config: configInfo,
- State: appState,
- Client: httpClient,
- AgentIndex: agentIndex,
- Session: &opencode.Session{},
- Messages: []Message{},
- Commands: commands.LoadFromConfig(configInfo),
- InitialModel: initialModel,
- InitialPrompt: initialPrompt,
- InitialAgent: initialAgent,
+ Info: appInfo,
+ Agents: agents,
+ Version: version,
+ StatePath: appStatePath,
+ Config: configInfo,
+ State: appState,
+ Client: httpClient,
+ AgentIndex: agentIndex,
+ Session: &opencode.Session{},
+ Messages: []Message{},
+ Commands: commands.LoadFromConfig(configInfo),
+ InitialModel: initialModel,
+ InitialPrompt: initialPrompt,
+ InitialAgent: initialAgent,
+ InitialSession: initialSession,
}
return app, nil
@@ -504,6 +507,28 @@ func (a *App) InitializeProvider() tea.Cmd {
Provider: *selectedProvider,
Model: *selectedModel,
}))
+
+ // Load initial session if provided
+ if a.InitialSession != nil && *a.InitialSession != "" {
+ cmds = append(cmds, func() tea.Msg {
+ // Find the session by ID
+ sessions, err := a.ListSessions(context.Background())
+ if err != nil {
+ slog.Error("Failed to list sessions for initial session", "error", err)
+ return toast.NewErrorToast("Failed to load initial session")()
+ }
+
+ for _, session := range sessions {
+ if session.ID == *a.InitialSession {
+ return SessionSelectedMsg(&session)
+ }
+ }
+
+ slog.Warn("Initial session not found", "sessionID", *a.InitialSession)
+ return toast.NewErrorToast("Session not found: " + *a.InitialSession)()
+ })
+ }
+
if a.InitialPrompt != nil && *a.InitialPrompt != "" {
cmds = append(cmds, util.CmdHandler(SendPrompt{Text: *a.InitialPrompt}))
}