diff options
Diffstat (limited to 'continuedev/src')
| -rw-r--r-- | continuedev/src/continuedev/core/sdk.py | 4 | ||||
| -rw-r--r-- | continuedev/src/continuedev/libs/util/telemetry.py | 12 | ||||
| -rw-r--r-- | continuedev/src/continuedev/server/ide.py | 9 | ||||
| -rw-r--r-- | continuedev/src/continuedev/server/ide_protocol.py | 3 | 
4 files changed, 23 insertions, 5 deletions
| diff --git a/continuedev/src/continuedev/core/sdk.py b/continuedev/src/continuedev/core/sdk.py index c3b50375..7090283f 100644 --- a/continuedev/src/continuedev/core/sdk.py +++ b/continuedev/src/continuedev/core/sdk.py @@ -115,7 +115,9 @@ class ContinueSDK(AbstractContinueSDK):          # )          # When the config is loaded, setup posthog logger -        posthog_logger.setup(sdk.ide.unique_id, sdk.config.allow_anonymous_telemetry) +        posthog_logger.setup( +            sdk.ide.unique_id, sdk.config.allow_anonymous_telemetry, sdk.ide.ide_info +        )          dev_data_logger.setup(sdk.config.user_token, sdk.config.data_server_url)          return sdk diff --git a/continuedev/src/continuedev/libs/util/telemetry.py b/continuedev/src/continuedev/libs/util/telemetry.py index 10cf7ba8..1772fe20 100644 --- a/continuedev/src/continuedev/libs/util/telemetry.py +++ b/continuedev/src/continuedev/libs/util/telemetry.py @@ -1,6 +1,6 @@  import os  import socket -from typing import Any +from typing import Any, Dict, Optional  from dotenv import load_dotenv @@ -26,14 +26,18 @@ def is_connected():  class PostHogLogger:      unique_id: str = "NO_UNIQUE_ID"      allow_anonymous_telemetry: bool = False +    ide_info: Optional[Dict] = None      posthog = None      def __init__(self, api_key: str):          self.api_key = api_key -    def setup(self, unique_id: str, allow_anonymous_telemetry: bool): +    def setup( +        self, unique_id: str, allow_anonymous_telemetry: bool, ide_info: Optional[Dict] +    ):          self.unique_id = unique_id or "NO_UNIQUE_ID"          self.allow_anonymous_telemetry = allow_anonymous_telemetry or False +        self.ide_info = ide_info          # Capture initial event          self.capture_event("session_start", {"os": os.name}) @@ -81,6 +85,10 @@ class PostHogLogger:          # Add operating system          event_properties["os"] = os.name +        if self.ide_info: +            event_properties["ide_name"] = self.ide_info.get("name", None) +            event_properties["ide_version"] = self.ide_info.get("version", None) +            event_properties["ide_remote_name"] = self.ide_info.get("remoteName", None)          # Send event to PostHog          if self.posthog is None: diff --git a/continuedev/src/continuedev/server/ide.py b/continuedev/src/continuedev/server/ide.py index 1709503b..6a4dc738 100644 --- a/continuedev/src/continuedev/server/ide.py +++ b/continuedev/src/continuedev/server/ide.py @@ -4,7 +4,7 @@ import json  import os  import traceback  import uuid -from typing import Any, Callable, Coroutine, List, Optional, Type, TypeVar, Union +from typing import Any, Callable, Coroutine, Dict, List, Optional, Type, TypeVar, Union  import nest_asyncio  from fastapi import APIRouter, WebSocket @@ -154,6 +154,8 @@ class IdeProtocolServer(AbstractIdeProtocolServer):      sub_queue: AsyncSubscriptionQueue = AsyncSubscriptionQueue()      session_id: Union[str, None] = None +    ide_info: Optional[Dict] = None +      def __init__(self, session_manager: SessionManager, websocket: WebSocket):          self.websocket = websocket          self.session_manager = session_manager @@ -165,6 +167,7 @@ class IdeProtocolServer(AbstractIdeProtocolServer):          self.session_id = session_id          await self._send_json("workspaceDirectory", {})          await self._send_json("uniqueId", {}) +        await self._send_json("ide", {})          other_msgs = []          while True:              msg_string = await self.websocket.receive_text() @@ -178,6 +181,8 @@ class IdeProtocolServer(AbstractIdeProtocolServer):                  self.workspace_directory = data["workspaceDirectory"]              elif message_type == "uniqueId":                  self.unique_id = data["uniqueId"] +            elif message_type == "ide": +                self.ide_info = data              else:                  other_msgs.append(msg_string) @@ -269,6 +274,8 @@ class IdeProtocolServer(AbstractIdeProtocolServer):              self.workspace_directory = data["workspaceDirectory"]          elif message_type == "uniqueId":              self.unique_id = data["uniqueId"] +        elif message_type == "ide": +            self.ide_info = data          elif message_type == "filesCreated":              self.onFilesCreated(data["filepaths"])          elif message_type == "filesDeleted": diff --git a/continuedev/src/continuedev/server/ide_protocol.py b/continuedev/src/continuedev/server/ide_protocol.py index 015da767..832dd338 100644 --- a/continuedev/src/continuedev/server/ide_protocol.py +++ b/continuedev/src/continuedev/server/ide_protocol.py @@ -1,5 +1,5 @@  from abc import ABC, abstractmethod -from typing import Any, Callable, List, Optional, Union +from typing import Any, Callable, Dict, List, Optional, Union  from fastapi import WebSocket @@ -10,6 +10,7 @@ from ..models.filesystem_edit import EditDiff, FileEdit, FileSystemEdit  class AbstractIdeProtocolServer(ABC):      websocket: WebSocket      session_id: Union[str, None] +    ide_info: Optional[Dict] = None      @abstractmethod      async def handle_json(self, data: Any): | 
