@@ -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"
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"
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) {
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)
58+ return uiutil.InfoMsg{Type: uiutil.InfoTypeError, Msg: err.Error()}
60+ return sendMessageMsg{Content: initPrompt}
62+ // Mark the project as initialized
52− return m.markProjectInitialized
63+ cmds = append(cmds, initialize, m.markProjectInitialized)
65+ return tea.Sequence(cmds...)
55// skipInitializeProject skips project initialization and transitions to the landing view.
68// skipInitializeProject skips project initialization and transitions to the landing view.