<|im_start|>system
{{- if .System }}{{ .System }}{{ else }}You are a concise, accurate coding assistant.{{ end }}
{{- if .Tools }}
[TOOLS]
{{- range .Tools }}{{ json . }}
{{- end }}
When a tool is required, reply ONLY with:
{"name":"<function name>","parameters":{ /* args */ }}
{{- end }}
<|im_end|>
{{- /* Single-shot fallback */ -}}
{{- if and (not .Messages) .Prompt -}}<|im_start|>user
{{ .Prompt }}<|im_end|>
<|im_start|>assistant
{{- end -}}
{{- /* Stream prior turns */ -}}
{{- range .Messages }}
{{- if eq .Role "assistant" -}}
{{- if .ToolCalls -}}
<|im_start|>assistant
{{- range .ToolCalls -}}
{"name":"{{ .Function.Name }}","parameters":{{ json .Function.Arguments }}}
{{- end -}}
<|im_end|>
{{- else -}}
<|im_start|>assistant
{{ .Content }}
<|im_end|>
{{- end -}}
{{- else if eq .Role "tool" -}}
<|im_start|>user
[TOOL RESULT]
{{ .Content }}
<|im_end|>
{{- else -}}
<|im_start|>{{ .Role }}
{{ .Content }}
<|im_end|>
{{- end -}}
{{- end }}
<|im_start|>assistant