package worker import ( "strings" "text/template" ) // devPromptTemplate — промпт для dev-агента при запуске задачи. var devPromptTemplate = template.Must(template.New("dev").Parse(`Ты — dev-агент, реализуешь задачу в репозитории(ях). **Задача:** {{if .Title}}Название: {{.Title}}{{end}} {{if .Goal}}Цель: {{.Goal}}{{end}} {{if .Repos}} Репозитории (доступны как подпапки текущего каталога): {{- range .Repos}} - {{.}} {{- end}} {{end}} {{if .Why}}Зачем: {{.Why}}{{end}} {{if .AC}}Критерии готовности: {{.AC}}{{end}} **Инструкции:** 1. Рабочий каталог — общий корень, в котором лежат все репозитории по именам. Правь файлы внутри нужного репозитория (./имя_репо/...). Связанные репозитории меняй согласованно. 2. Напиши код, реализующий задачу. 3. Убедись, что все acceptance criteria выполнены. 4. Пользуйся встроенными инструментами opencode (чтение файлов, поиск, редактирование). 5. По окончании верни краткий отчёт о том, что сделано. `)) // DevPromptData — данные для рендера dev-промпта. type DevPromptData struct { Title string Goal string Repos []string Why string AC string } // RenderDevPrompt собирает промпт для dev-агента. func RenderDevPrompt(data DevPromptData) (string, error) { var buf strings.Builder if err := devPromptTemplate.Execute(&buf, data); err != nil { return "", err } return buf.String(), nil }