// promptEfforts are the reasoning efforts that spawn can give a subagent.
var promptEfforts = []string{"low", "medium", "high", "xhigh"}
-// prompt returns the system prompt of the reference with one added paragraph on
-// the user's instructions file at instructionsPath. It uses the agent name and
-// ends with the user's instructions. Without instructions it has neither them
-// nor the clause that points to them, but keeps the file paragraph. Turns and
-// compactions send the same prompt and tools, so compactions read the prompt
-// cache of the turns.
-func prompt(name, instructionsPath, instructions string) string {
- text := strings.NewReplacer(promptName, name, promptInstructionsPath, instructionsPath).Replace(promptText)
- text = strings.Replace(text, "\n\n# Compactions", promptChildrenText+"\n\n# Compactions", 1)
-
- return promptWithInstructions(text, promptTaskSentence, promptInstructionsClause, instructions)
-}
-
// promptChild returns the prompt of a child with its area and reporting rules.
// Its instructions file belongs to the child, not to the parent.
func promptChild(name, parent, responsibility, instructionsPath, instructions string) string {
return promptWithInstructions(text, "Do the tasks of your area yourself, with your tools.", promptInstructionsClause, instructions)
}
+// prompt returns the system prompt of the reference with one added paragraph on
+// the user's instructions file at instructionsPath. It uses the agent name and
+// ends with the user's instructions. Without instructions it has neither them
+// nor the clause that points to them, but keeps the file paragraph. Turns and
+// compactions send the same prompt and tools, so compactions read the prompt
+// cache of the turns.
+func prompt(name, instructionsPath, instructions string) string {
+ text := strings.NewReplacer(promptName, name, promptInstructionsPath, instructionsPath).Replace(promptText)
+ text = strings.Replace(text, "\n\n# Compactions", promptChildrenText+"\n\n# Compactions", 1)
+
+ return promptWithInstructions(text, promptTaskSentence, promptInstructionsClause, instructions)
+}
+
+// promptWithInstructions returns text with the instructions of the user at its
+// end, after the heading. With instructions, sentence gets clause, which points
+// to them. Without instructions the prompt has neither them nor the clause.
+func promptWithInstructions(text, sentence, clause, instructions string) string {
+ instructions = strings.TrimSpace(instructions)
+ if instructions == "" {
+ return text
+ }
+
+ text = strings.Replace(text, sentence, strings.TrimSuffix(sentence, ".")+clause+".", 1)
+
+ return text + promptInstructionsHeading + instructions
+}
+
// promptSubagent returns the system prompt of a subagent of the agent name,
// with the instructions of the user at its end, as prompt does.
func promptSubagent(name, instructions string) string {
}
}
-// promptWithInstructions returns text with the instructions of the user at its
-// end, after the heading. With instructions, sentence gets clause, which points
-// to them. Without instructions the prompt has neither them nor the clause.
-func promptWithInstructions(text, sentence, clause, instructions string) string {
- instructions = strings.TrimSpace(instructions)
- if instructions == "" {
- return text
- }
-
- text = strings.Replace(text, sentence, strings.TrimSuffix(sentence, ".")+clause+".", 1)
-
- return text + promptInstructionsHeading + instructions
-}
-
// promptObjectSchema returns a strict JSON schema of an object whose properties
// are all required.
func promptObjectSchema(properties map[string]any) map[string]any {
}
}
-// promptEffortEnum returns the values of the effort of spawn: promptEfforts
-// and null.
+// promptEffortEnum returns the values of the effort of spawn: promptEfforts and
+// null.
func promptEffortEnum() []any {
values := make([]any, 0, len(promptEfforts)+1)
for _, effort := range promptEfforts {
return append(values, nil)
}
-// promptIntegerSchema returns the JSON schema of an integer.
-func promptIntegerSchema(description string) map[string]any {
+// promptStringSchema returns the JSON schema of a string.
+func promptStringSchema(description string) map[string]any {
return map[string]any{
- "type": "integer",
+ "type": "string",
"description": description,
}
}
}
}
-// promptStringSchema returns the JSON schema of a string.
-func promptStringSchema(description string) map[string]any {
+// promptIntegerSchema returns the JSON schema of an integer.
+func promptIntegerSchema(description string) map[string]any {
return map[string]any{
- "type": "string",
+ "type": "integer",
"description": description,
}
}