X-Git-Url: https://git.giacomolli.uk/onechat/blobdiff_plain/9301f77a5709fe7daea3a71f8dd072c6cd7df4fe..6c7859cfea123479aba046614ee81028651ddaf5:/daemon_children_test.go?ds=inline diff --git a/daemon_children_test.go b/daemon_children_test.go index 8349586..8fcae36 100644 --- a/daemon_children_test.go +++ b/daemon_children_test.go @@ -99,6 +99,37 @@ func TestDaemonToolsCreateAndTellAChildDuringATurn(t *testing.T) { }, 5*time.Second, time.Millisecond) } +func TestRuntimeChildAcceptsNotificationsByItsPermanentID(t *testing.T) { + test := newDaemonChildrenTest(t) + test.server.reply = func(w http.ResponseWriter, _ ModelFakeCall) { + modelWriteEvents(w, modelCompletedEvent([]any{modelMessageItem("")}, 100, 0, 5)) + } + + _, err := test.runtime.Create("Garden", "Keep garden plans.") + require.NoError(t, err) + + child := test.runtime.messages.Child(test.root.agent.config.Name, "Garden") + require.NotNil(t, child) + + receipt, err := test.runtime.messages.Notify(&NotifyInput{ + AgentID: child.agent.config.ID, + Source: "check", + ID: "runtime-child", + Text: "A new result.", + }) + require.NoError(t, err) + require.Equal(t, "accepted", receipt.Status) + require.Eventually(t, func() bool { + return child.memory.Len() == 1 + }, 10*time.Second, time.Millisecond) + require.Zero(t, test.root.memory.Len()) + + logged, err := child.memory.Message(0) + require.NoError(t, err) + require.Equal(t, "work", logged.Kind) + require.Contains(t, logged.Text, "Untrusted external data") +} + func TestChildCreationRefusesUsedNames(t *testing.T) { test := newDaemonChildrenTest(t) box := test.root.tools