-// promptToolNames returns the names of tools.
-func promptToolNames(tools []ModelTool) []string {
- names := make([]string, len(tools))
- for n, tool := range tools {
- names[n] = tool.Name
- }
-
- return names
+func TestRootPromptDefinesChildRoutingAndConsent(t *testing.T) {
+ text := prompt("Ada", "/AGENT/instructions.md", "Keep replies short.")
+ require.Contains(t, text, "Use agent_create for permanent children, whose areas are in the state.")
+ require.Contains(t, text, `Use tell for children and subagents, and zoom("Name") for their memory.`)
+ require.Contains(t, text, "Pass area messages from mixed chats to the right child with sender, date, and\nwords.")
+ require.Contains(t, text, "Never send a WhatsApp reply drafted by a child without the user's\nagreement.")
+ require.Contains(t, text, "Set or remove a route only after the user agrees.")
+ require.Contains(t, text, "You act again when a message or your own schedule wakes you.")
+ require.True(t, strings.HasSuffix(text, "Keep replies short."))
+
+ child := promptChild("GreenOtter", "Ada", "Keep garden plans.", "/CHILD/instructions.md", "")
+ require.NotContains(t, child, promptChildrenText)
+ require.NotContains(t, child, "Use agent_create")
+ require.Contains(t, child, "Send nothing to WhatsApp. Draft replies in your report instead")