modelWriteEvents(w, modelCompletedEvent(items, 100, 0, 5))
}
+
whatsapp, _, _ := whatsappStartTest(t, dir, newTestClock())
listener, err := daemonListenSocket(filepath.Join(dir, socketFileName))
require.NoError(t, err)
test.root.runs.subagents.draw = func() string {
return "BlueFox"
}
+
subagent, err := test.root.runs.subagents.Create(t.Context())
require.NoError(t, err)
require.Equal(t, "BlueFox", subagent.name)
child string
}{
{
- name: "house area",
+ name: "accepts house area",
child: "House",
},
{
- name: "calendar area",
+ name: "accepts calendar area",
child: "Calendar",
},
{
- name: "two letters",
+ name: "accepts two letters",
child: "Ab",
},
{
- name: "capital letters after the first",
+ name: "accepts capital letters after the first",
child: "ABcD",
},
{
- name: "thirty-two letters",
+ name: "accepts thirty-two letters",
child: "A" + strings.Repeat("b", 31),
},
}
+
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
test := newDaemonChildrenTest(t)
child string
}{
{
- name: "empty name",
+ name: "refuses empty name",
child: "",
},
{
- name: "one letter",
+ name: "refuses one letter",
child: "H",
},
{
- name: "thirty-three letters",
+ name: "refuses thirty-three letters",
child: "A" + strings.Repeat("b", 32),
},
{
- name: "lowercase initial",
+ name: "refuses lowercase initial",
child: "house",
},
{
- name: "two words",
+ name: "refuses two words",
child: "My House",
},
{
- name: "digit",
+ name: "refuses digit",
child: "House2",
},
{
- name: "path",
+ name: "refuses path",
child: "../House",
},
{
- name: "punctuation",
+ name: "refuses punctuation",
child: "House-",
},
{
- name: "non-ASCII initial",
+ name: "refuses non-ASCII initial",
child: "\u00c1rea",
},
{
- name: "non-ASCII remainder",
+ name: "refuses non-ASCII remainder",
child: "Hous\u00e9",
},
}
+
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
test := newDaemonChildrenTest(t)
return name
}
+
subagent, err := test.root.runs.subagents.Create(t.Context())
require.NoError(t, err)
require.Equal(t, "BlueFox", subagent.name)
names := promptToolNames(child.agent.Tools())
require.NotContains(t, names, "agent_create")
+ require.NotContains(t, names, "image_show")
+ require.Equal(t, `error: unknown tool "image_show"`, child.tools.run(t.Context(), "image_show", `{"image":"unknown","caption":""}`))
require.NotContains(t, names, "whatsapp_send")
require.NotContains(t, names, "whatsapp_find")
require.Contains(t, names, "spawn")
test.root.runs.subagents.draw = func() string {
return "BlueFox"
}
+
subagent, err := test.root.runs.subagents.Create(t.Context())
require.NoError(t, err)
test := &DaemonChildrenTest{
server: newModelFake(t),
}
+
agents, err := openDaemonAgents(t.Context(), t.TempDir(), test.server.URL, ModelAPIKey(modelTestKey), defaultConfig().Compactor, time.Now, discardLog())
require.NoError(t, err)
root: test.root,
messages: messages,
}
+
test.root.tools.children = test.runtime
t.Cleanup(func() {
cancel()