]> git.giacomolli.uk - onechat/blobdiff - prompt.go
Name private helpers for their owning feature
[onechat] / prompt.go
index 896038bda70cceb4dc516bc5995fccac73da972b..31f57cb4083da7838526a05c83812feee01cd2cb 100644 (file)
--- a/prompt.go
+++ b/prompt.go
@@ -197,19 +197,6 @@ to see its pixels.`
 // 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 {
@@ -229,6 +216,33 @@ can ask the user before sending.`, 1)
        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 {
@@ -421,20 +435,6 @@ func promptSubagentTools() []ModelTool {
        }
 }
 
-// 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 {
@@ -464,10 +464,10 @@ func promptEffortEnum() []any {
        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,
        }
 }
@@ -480,10 +480,10 @@ func promptNullableStringSchema(description string) map[string]any {
        }
 }
 
-// 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,
        }
 }