1package agent
2
3import (
4 "context"
5 _ "embed"
6
7 "github.com/charmbracelet/crush/internal/agent/prompt"
8 "github.com/charmbracelet/crush/internal/config"
9)
10
11//go:embed templates/coder.md.tpl
12var coderPromptTmpl []byte
13
14//go:embed templates/task.md.tpl
15var taskPromptTmpl []byte
16
17//go:embed templates/initialize.md.tpl
18var initializePromptTmpl []byte
19
20func coderPrompt(modelName string, opts ...prompt.Option) (*prompt.Prompt, error) {
21 opts = append(opts, prompt.WithModelFamily(prompt.DetectModelFamily(modelName)))
22 return prompt.NewPrompt("coder", string(coderPromptTmpl), opts...)
23}
24
25func taskPrompt(opts ...prompt.Option) (*prompt.Prompt, error) {
26 return prompt.NewPrompt("task", string(taskPromptTmpl), opts...)
27}
28
29func InitializePrompt(cfg config.Config) (string, error) {
30 systemPrompt, err := prompt.NewPrompt("initialize", string(initializePromptTmpl))
31 if err != nil {
32 return "", err
33 }
34 return systemPrompt.Build(context.Background(), "", "", cfg)
35}