on main help sign in
refactor(ui): enable initialize
4e66b9cKujtim Hoxha
internal/ui/model/onboarding.go+19−6
@@ -8,9 +8,12 @@ import (
8 "charm.land/bubbles/v2/key"
8 "charm.land/bubbles/v2/key"
9 tea "charm.land/bubbletea/v2"
9 tea "charm.land/bubbletea/v2"
10 "charm.land/lipgloss/v2"
10 "charm.land/lipgloss/v2"
11+
12+ "github.com/charmbracelet/crush/internal/agent"
11 "github.com/charmbracelet/crush/internal/config"
13 "github.com/charmbracelet/crush/internal/config"
12 "github.com/charmbracelet/crush/internal/home"
14 "github.com/charmbracelet/crush/internal/home"
13 "github.com/charmbracelet/crush/internal/ui/common"
15 "github.com/charmbracelet/crush/internal/ui/common"
16+ "github.com/charmbracelet/crush/internal/uiutil"
14)
17)
15
18
16// markProjectInitialized marks the current project as initialized in the config.
19// markProjectInitialized marks the current project as initialized in the config.
@@ -44,12 +47,22 @@ func (m *UI) updateInitializeView(msg tea.KeyPressMsg) (cmds []tea.Cmd) {
44
47
45// initializeProject starts project initialization and transitions to the landing view.
48// initializeProject starts project initialization and transitions to the landing view.
46func (m *UI) initializeProject() tea.Cmd {
49func (m *UI) initializeProject() tea.Cmd {
47− // TODO: initialize the project
50+ // clear the session
48− // for now we just go to the landing page
51+ m.newSession()
49− m.state = uiLanding
52+ cfg := m.com.Config()
50− m.focus = uiFocusEditor
53+ var cmds []tea.Cmd
51− // TODO: actually send a message to the agent
54+
55+ initialize := func() tea.Msg {
56+ initPrompt, err := agent.InitializePrompt(*cfg)
57+ if err != nil {
58+ return uiutil.InfoMsg{Type: uiutil.InfoTypeError, Msg: err.Error()}
59+ }
60+ return sendMessageMsg{Content: initPrompt}
61+ }
62+ // Mark the project as initialized
52− return m.markProjectInitialized
63+ cmds = append(cmds, initialize, m.markProjectInitialized)
64+
65+ return tea.Sequence(cmds...)
53}
66}
54
67
55// skipInitializeProject skips project initialization and transitions to the landing view.
68// skipInitializeProject skips project initialization and transitions to the landing view.
internal/ui/model/ui.go+1
@@ -1106,6 +1106,7 @@ func (m *UI) handleDialogMsg(msg tea.Msg) tea.Cmd {
1106 break
1106 break
1107 }
1107 }
1108 cmds = append(cmds, m.initializeProject())
1108 cmds = append(cmds, m.initializeProject())
1109+ m.dialog.CloseDialog(dialog.CommandsID)
1109
1110
1110 case dialog.ActionSelectModel:
1111 case dialog.ActionSelectModel:
1111 if m.isAgentBusy() {
1112 if m.isAgentBusy() {