feat: add observability plugin system (#227)

Co-authored-by: Michael Neale <michael.neale@gmail.com>
Co-authored-by: Lifei Zhou <lifei@squareup.com>
Co-authored-by: Alice Hau <ahau@squareup.com>
This commit is contained in:
Alistair Gray
2024-11-12 20:40:27 -05:00
committed by GitHub
parent 70660258e9
commit d30b524f45
20 changed files with 300 additions and 157 deletions
+21 -1
View File
@@ -1,10 +1,11 @@
from datetime import datetime
import os
from datetime import datetime
from typing import Union
from unittest.mock import MagicMock, mock_open, patch
import pytest
from exchange import Message, ToolResult, ToolUse
from exchange.observers import ObserverManager
from goose.cli.prompt.goose_prompt_session import GoosePromptSession
from goose.cli.prompt.overwrite_session_prompt import OverwriteSessionPrompt
from goose.cli.prompt.user_input import PromptAction, UserInput
@@ -260,3 +261,22 @@ def test_prompt_overwrite_session(session_factory):
choice="r",
expected_messages=[Message.user(text="duck duck"), Message.user(text="goose")],
)
def test_observer_plugin_called(create_session_with_mock_configs):
observer_mock = MagicMock()
observe_wrapper_mock = MagicMock()
observer_mock.observe_wrapper = observe_wrapper_mock
observer_manager_mock = MagicMock(spec=ObserverManager)
observer_manager_mock._observers = [observer_mock]
with patch("exchange.observers.ObserverManager.get_instance", return_value=observer_manager_mock), patch(
"exchange.Exchange.generate", return_value=Message.assistant("test response")
):
session = create_session_with_mock_configs({"name": SESSION_NAME})
session.exchange.messages.append(Message.user("hi"))
session.reply()
observe_wrapper_mock.assert_called_once()