diff options
| author | Nate Sesti <33237525+sestinj@users.noreply.github.com> | 2023-07-25 23:52:12 -0700 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-07-25 23:52:12 -0700 | 
| commit | 2b69bf6f1fc2e06b16b718358ceed4911d6e87c3 (patch) | |
| tree | c27c630c64f2890698512606e2dd8acac9c0c8b6 | |
| parent | f0df0fdc1fb7d8e65e27abe633da1831b8172b35 (diff) | |
| parent | 03da423e5abdf32c5bf9755ffd2e1c7be98e6454 (diff) | |
| download | sncontinue-2b69bf6f1fc2e06b16b718358ceed4911d6e87c3.tar.gz sncontinue-2b69bf6f1fc2e06b16b718358ceed4911d6e87c3.tar.bz2 sncontinue-2b69bf6f1fc2e06b16b718358ceed4911d6e87c3.zip | |
Merge pull request #296 from continuedev/config-py-2
Config py 2
| -rw-r--r-- | continuedev/poetry.lock | 128 | ||||
| -rw-r--r-- | continuedev/pyproject.toml | 2 | ||||
| -rw-r--r-- | continuedev/src/continuedev/core/autopilot.py | 2 | ||||
| -rw-r--r-- | continuedev/src/continuedev/core/context.py | 40 | ||||
| -rw-r--r-- | continuedev/src/continuedev/plugins/context_providers/file.py | 7 | ||||
| -rw-r--r-- | continuedev/src/continuedev/plugins/context_providers/highlighted_code.py | 4 | ||||
| -rw-r--r-- | continuedev/src/continuedev/server/gui.py | 4 | ||||
| -rw-r--r-- | continuedev/src/continuedev/server/ide.py | 14 | ||||
| -rw-r--r-- | continuedev/src/continuedev/server/main.py | 10 | ||||
| -rw-r--r-- | continuedev/src/continuedev/server/meilisearch_server.py | 12 | ||||
| -rw-r--r-- | extension/package-lock.json | 4 | ||||
| -rw-r--r-- | extension/package.json | 2 | ||||
| -rw-r--r-- | extension/react-app/src/main.tsx | 7 | ||||
| -rw-r--r-- | extension/src/activation/activate.ts | 3 | ||||
| -rw-r--r-- | extension/src/continueIdeClient.ts | 3 | ||||
| -rw-r--r-- | extension/src/debugPanel.ts | 2 | ||||
| -rw-r--r-- | extension/src/util/messenger.ts | 2 | 
17 files changed, 96 insertions, 150 deletions
| diff --git a/continuedev/poetry.lock b/continuedev/poetry.lock index b67128fd..d1b5f3d6 100644 --- a/continuedev/poetry.lock +++ b/continuedev/poetry.lock @@ -1,10 +1,20 @@ -# This file is automatically @generated by Poetry 1.4.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.5.1 and should not be changed by hand. + +[[package]] +name = "aiofiles" +version = "23.1.0" +description = "File support for asyncio." +optional = false +python-versions = ">=3.7,<4.0" +files = [ +    {file = "aiofiles-23.1.0-py3-none-any.whl", hash = "sha256:9312414ae06472eb6f1d163f555e466a23aed1c8f60c30cccf7121dba2e53eb2"}, +    {file = "aiofiles-23.1.0.tar.gz", hash = "sha256:edd247df9a19e0db16534d4baaf536d6609a43e1de5401d7a4c1c148753a1635"}, +]  [[package]]  name = "aiohttp"  version = "3.8.4"  description = "Async http client/server framework (asyncio)" -category = "main"  optional = false  python-versions = ">=3.6"  files = [ @@ -113,7 +123,6 @@ speedups = ["Brotli", "aiodns", "cchardet"]  name = "aiosignal"  version = "1.3.1"  description = "aiosignal: a list of registered asynchronous callbacks" -category = "main"  optional = false  python-versions = ">=3.7"  files = [ @@ -128,7 +137,6 @@ frozenlist = ">=1.1.0"  name = "anthropic"  version = "0.3.4"  description = "Client library for the anthropic API" -category = "main"  optional = false  python-versions = ">=3.7,<4.0"  files = [ @@ -148,7 +156,6 @@ typing-extensions = ">=4.1.1,<5"  name = "anyio"  version = "3.6.2"  description = "High level compatibility layer for multiple asynchronous event loop implementations" -category = "main"  optional = false  python-versions = ">=3.6.2"  files = [ @@ -169,7 +176,6 @@ trio = ["trio (>=0.16,<0.22)"]  name = "async-timeout"  version = "4.0.2"  description = "Timeout context manager for asyncio programs" -category = "main"  optional = false  python-versions = ">=3.6"  files = [ @@ -181,7 +187,6 @@ files = [  name = "attrs"  version = "23.1.0"  description = "Classes Without Boilerplate" -category = "main"  optional = false  python-versions = ">=3.7"  files = [ @@ -200,7 +205,6 @@ tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pyte  name = "backoff"  version = "2.2.1"  description = "Function decoration for backoff and retry" -category = "main"  optional = false  python-versions = ">=3.7,<4.0"  files = [ @@ -212,7 +216,6 @@ files = [  name = "boltons"  version = "23.0.0"  description = "When they're not builtins, they're boltons." -category = "main"  optional = false  python-versions = "*"  files = [ @@ -224,7 +227,6 @@ files = [  name = "camel-converter"  version = "3.0.2"  description = "Converts a string from snake case to camel case or camel case to snake case" -category = "main"  optional = false  python-versions = ">=3.8,<4.0"  files = [ @@ -232,9 +234,6 @@ files = [      {file = "camel_converter-3.0.2.tar.gz", hash = "sha256:3b3d076e824ae979b271b4d497c90514c2b218811f76b0c368fb69da2556fe07"},  ] -[package.dependencies] -pydantic = {version = ">=1.8.2", optional = true, markers = "extra == \"pydantic\""} -  [package.extras]  pydantic = ["pydantic (>=1.8.2)"] @@ -242,7 +241,6 @@ pydantic = ["pydantic (>=1.8.2)"]  name = "certifi"  version = "2022.12.7"  description = "Python package for providing Mozilla's CA Bundle." -category = "main"  optional = false  python-versions = ">=3.6"  files = [ @@ -254,7 +252,6 @@ files = [  name = "cffi"  version = "1.15.1"  description = "Foreign Function Interface for Python calling C code." -category = "main"  optional = false  python-versions = "*"  files = [ @@ -331,7 +328,6 @@ pycparser = "*"  name = "charset-normalizer"  version = "3.1.0"  description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -category = "main"  optional = false  python-versions = ">=3.7.0"  files = [ @@ -416,7 +412,6 @@ files = [  name = "chevron"  version = "0.14.0"  description = "Mustache templating language renderer" -category = "main"  optional = false  python-versions = "*"  files = [ @@ -428,7 +423,6 @@ files = [  name = "click"  version = "8.1.3"  description = "Composable command line interface toolkit" -category = "main"  optional = false  python-versions = ">=3.7"  files = [ @@ -443,7 +437,6 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""}  name = "colorama"  version = "0.4.6"  description = "Cross-platform colored terminal text." -category = "main"  optional = false  python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"  files = [ @@ -455,7 +448,6 @@ files = [  name = "cryptography"  version = "41.0.2"  description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." -category = "main"  optional = false  python-versions = ">=3.7"  files = [ @@ -501,7 +493,6 @@ test-randomorder = ["pytest-randomly"]  name = "dataclasses-json"  version = "0.5.7"  description = "Easily serialize dataclasses to and from JSON" -category = "main"  optional = false  python-versions = ">=3.6"  files = [ @@ -521,7 +512,6 @@ dev = ["flake8", "hypothesis", "ipython", "mypy (>=0.710)", "portray", "pytest (  name = "deprecated"  version = "1.2.14"  description = "Python @deprecated decorator to deprecate old python classes, functions or methods." -category = "main"  optional = false  python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"  files = [ @@ -539,7 +529,6 @@ dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"]  name = "diff-match-patch"  version = "20230430"  description = "Diff Match and Patch" -category = "main"  optional = false  python-versions = ">=3.7"  files = [ @@ -554,7 +543,6 @@ dev = ["attribution (==1.6.2)", "black (==23.3.0)", "flit (==3.8.0)", "mypy (==1  name = "directory-tree"  version = "0.0.3.1"  description = "Utility Package that Displays out the Tree Structure of a Particular Directory." -category = "main"  optional = false  python-versions = "*"  files = [ @@ -569,7 +557,6 @@ dev = ["pytest (>=3.7)"]  name = "distro"  version = "1.8.0"  description = "Distro - an OS platform information API" -category = "main"  optional = false  python-versions = ">=3.6"  files = [ @@ -581,7 +568,6 @@ files = [  name = "fastapi"  version = "0.95.1"  description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" -category = "main"  optional = false  python-versions = ">=3.7"  files = [ @@ -603,7 +589,6 @@ test = ["anyio[trio] (>=3.2.1,<4.0.0)", "black (==23.1.0)", "coverage[toml] (>=6  name = "frozenlist"  version = "1.3.3"  description = "A list-like structure which implements collections.abc.MutableSequence" -category = "main"  optional = false  python-versions = ">=3.7"  files = [ @@ -687,7 +672,6 @@ files = [  name = "gpt-index"  version = "0.6.8"  description = "Interface between LLMs and your data" -category = "main"  optional = false  python-versions = "*"  files = [ @@ -709,7 +693,6 @@ tiktoken = "*"  name = "greenlet"  version = "2.0.2"  description = "Lightweight in-process concurrent programming" -category = "main"  optional = false  python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*"  files = [ @@ -783,7 +766,6 @@ test = ["objgraph", "psutil"]  name = "h11"  version = "0.14.0"  description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" -category = "main"  optional = false  python-versions = ">=3.7"  files = [ @@ -795,7 +777,6 @@ files = [  name = "httpcore"  version = "0.17.3"  description = "A minimal low-level HTTP client." -category = "main"  optional = false  python-versions = ">=3.7"  files = [ @@ -807,17 +788,16 @@ files = [  anyio = ">=3.0,<5.0"  certifi = "*"  h11 = ">=0.13,<0.15" -sniffio = ">=1.0.0,<2.0.0" +sniffio = "==1.*"  [package.extras]  http2 = ["h2 (>=3,<5)"] -socks = ["socksio (>=1.0.0,<2.0.0)"] +socks = ["socksio (==1.*)"]  [[package]]  name = "httpx"  version = "0.24.1"  description = "The next generation HTTP client." -category = "main"  optional = false  python-versions = ">=3.7"  files = [ @@ -833,15 +813,14 @@ sniffio = "*"  [package.extras]  brotli = ["brotli", "brotlicffi"] -cli = ["click (>=8.0.0,<9.0.0)", "pygments (>=2.0.0,<3.0.0)", "rich (>=10,<14)"] +cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"]  http2 = ["h2 (>=3,<5)"] -socks = ["socksio (>=1.0.0,<2.0.0)"] +socks = ["socksio (==1.*)"]  [[package]]  name = "idna"  version = "3.4"  description = "Internationalized Domain Names in Applications (IDNA)" -category = "main"  optional = false  python-versions = ">=3.5"  files = [ @@ -853,7 +832,6 @@ files = [  name = "importlib-resources"  version = "6.0.0"  description = "Read resources from Python packages" -category = "main"  optional = false  python-versions = ">=3.8"  files = [ @@ -872,7 +850,6 @@ testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)",  name = "jsonref"  version = "1.1.0"  description = "jsonref is a library for automatic dereferencing of JSON Reference objects for Python." -category = "main"  optional = false  python-versions = ">=3.7"  files = [ @@ -884,7 +861,6 @@ files = [  name = "jsonschema"  version = "4.17.3"  description = "An implementation of JSON Schema validation for Python" -category = "main"  optional = false  python-versions = ">=3.7"  files = [ @@ -906,7 +882,6 @@ format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-  name = "langchain"  version = "0.0.171"  description = "Building applications with LLMs through composability" -category = "main"  optional = false  python-versions = ">=3.8.1,<4.0"  files = [ @@ -943,7 +918,6 @@ qdrant = ["qdrant-client (>=1.1.2,<2.0.0)"]  name = "marshmallow"  version = "3.19.0"  description = "A lightweight library for converting complex datatypes to and from native Python datatypes." -category = "main"  optional = false  python-versions = ">=3.7"  files = [ @@ -964,7 +938,6 @@ tests = ["pytest", "pytz", "simplejson"]  name = "marshmallow-enum"  version = "1.5.1"  description = "Enum field for Marshmallow" -category = "main"  optional = false  python-versions = "*"  files = [ @@ -976,26 +949,27 @@ files = [  marshmallow = ">=2.0.0"  [[package]] -name = "meilisearch" -version = "0.28.1" -description = "The python client for Meilisearch API." -category = "main" +name = "meilisearch-python-async" +version = "1.4.8" +description = "A Python async client for the Meilisearch API"  optional = false -python-versions = ">=3.8" +python-versions = ">=3.8,<4.0"  files = [ -    {file = "meilisearch-0.28.1-py3-none-any.whl", hash = "sha256:b4cfaf140fc323c429a4e174b801bcc6dddef88bf901560ebf2fc5c0014099b5"}, -    {file = "meilisearch-0.28.1.tar.gz", hash = "sha256:4e8627abe1394f04125c99e60f9f4356ba200effe5735ce9b8a44b09e3c6403c"}, +    {file = "meilisearch_python_async-1.4.8-py3-none-any.whl", hash = "sha256:dea8da89ea254cd2de7e3c0f0883e98486fc724ba8212e4fe19b2b44d9ca6aa1"}, +    {file = "meilisearch_python_async-1.4.8.tar.gz", hash = "sha256:ebcea0ed800dce291809ec599384f103da55362b4485997ff4daa0010c935fc6"},  ]  [package.dependencies] -camel-converter = {version = "*", extras = ["pydantic"]} -requests = "*" +aiofiles = ">=0.7" +camel-converter = ">=1.0.0" +httpx = ">=0.17" +pydantic = ">=1.8" +PyJWT = ">=2.3.0"  [[package]]  name = "monotonic"  version = "1.6"  description = "An implementation of time.monotonic() for Python 2 & < 3.3" -category = "main"  optional = false  python-versions = "*"  files = [ @@ -1007,7 +981,6 @@ files = [  name = "multidict"  version = "6.0.4"  description = "multidict implementation" -category = "main"  optional = false  python-versions = ">=3.7"  files = [ @@ -1091,7 +1064,6 @@ files = [  name = "mypy-extensions"  version = "1.0.0"  description = "Type system extensions for programs checked with the mypy type checker." -category = "main"  optional = false  python-versions = ">=3.5"  files = [ @@ -1103,7 +1075,6 @@ files = [  name = "nest-asyncio"  version = "1.5.6"  description = "Patch asyncio to allow nested event loops" -category = "main"  optional = false  python-versions = ">=3.5"  files = [ @@ -1115,7 +1086,6 @@ files = [  name = "numexpr"  version = "2.8.4"  description = "Fast numerical expression evaluator for NumPy" -category = "main"  optional = false  python-versions = ">=3.7"  files = [ @@ -1158,7 +1128,6 @@ numpy = ">=1.13.3"  name = "numpy"  version = "1.24.3"  description = "Fundamental package for array computing in Python" -category = "main"  optional = false  python-versions = ">=3.8"  files = [ @@ -1196,7 +1165,6 @@ files = [  name = "openai"  version = "0.27.6"  description = "Python client library for the OpenAI API" -category = "main"  optional = false  python-versions = ">=3.7.1"  files = [ @@ -1211,7 +1179,7 @@ tqdm = "*"  [package.extras]  datalib = ["numpy", "openpyxl (>=3.0.7)", "pandas (>=1.2.3)", "pandas-stubs (>=1.1.0.11)"] -dev = ["black (>=21.6b0,<22.0)", "pytest (>=6.0.0,<7.0.0)", "pytest-asyncio", "pytest-mock"] +dev = ["black (>=21.6b0,<22.0)", "pytest (==6.*)", "pytest-asyncio", "pytest-mock"]  embeddings = ["matplotlib", "numpy", "openpyxl (>=3.0.7)", "pandas (>=1.2.3)", "pandas-stubs (>=1.1.0.11)", "plotly", "scikit-learn (>=1.0.2)", "scipy", "tenacity (>=8.0.1)"]  wandb = ["numpy", "openpyxl (>=3.0.7)", "pandas (>=1.2.3)", "pandas-stubs (>=1.1.0.11)", "wandb"] @@ -1219,7 +1187,6 @@ wandb = ["numpy", "openpyxl (>=3.0.7)", "pandas (>=1.2.3)", "pandas-stubs (>=1.1  name = "openapi-schema-pydantic"  version = "1.2.4"  description = "OpenAPI (v3) specification schema as pydantic class" -category = "main"  optional = false  python-versions = ">=3.6.1"  files = [ @@ -1234,7 +1201,6 @@ pydantic = ">=1.8.2"  name = "packaging"  version = "23.1"  description = "Core utilities for Python packages" -category = "main"  optional = false  python-versions = ">=3.7"  files = [ @@ -1246,7 +1212,6 @@ files = [  name = "pandas"  version = "2.0.1"  description = "Powerful data structures for data analysis, time series, and statistics" -category = "main"  optional = false  python-versions = ">=3.8"  files = [ @@ -1314,7 +1279,6 @@ xml = ["lxml (>=4.6.3)"]  name = "pkgutil-resolve-name"  version = "1.3.10"  description = "Resolve a name to an object." -category = "main"  optional = false  python-versions = ">=3.6"  files = [ @@ -1326,7 +1290,6 @@ files = [  name = "posthog"  version = "3.0.1"  description = "Integrate PostHog into any python application." -category = "main"  optional = false  python-versions = "*"  files = [ @@ -1350,7 +1313,6 @@ test = ["coverage", "flake8", "freezegun (==0.3.15)", "mock (>=2.0.0)", "pylint"  name = "psutil"  version = "5.9.5"  description = "Cross-platform lib for process and system monitoring in Python." -category = "main"  optional = false  python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"  files = [ @@ -1377,7 +1339,6 @@ test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"]  name = "pycparser"  version = "2.21"  description = "C parser in Python" -category = "main"  optional = false  python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"  files = [ @@ -1389,7 +1350,6 @@ files = [  name = "pydantic"  version = "1.10.7"  description = "Data validation and settings management using python type hints" -category = "main"  optional = false  python-versions = ">=3.7"  files = [ @@ -1442,7 +1402,6 @@ email = ["email-validator (>=1.0.3)"]  name = "pygithub"  version = "1.59.0"  description = "Use the full Github API v3" -category = "main"  optional = false  python-versions = ">=3.7"  files = [ @@ -1460,7 +1419,6 @@ requests = ">=2.14.0"  name = "pyjwt"  version = "2.8.0"  description = "JSON Web Token implementation in Python" -category = "main"  optional = false  python-versions = ">=3.7"  files = [ @@ -1481,7 +1439,6 @@ tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"]  name = "pynacl"  version = "1.5.0"  description = "Python binding to the Networking and Cryptography (NaCl) library" -category = "main"  optional = false  python-versions = ">=3.6"  files = [ @@ -1508,7 +1465,6 @@ tests = ["hypothesis (>=3.27.0)", "pytest (>=3.2.1,!=3.3.0)"]  name = "pyrsistent"  version = "0.19.3"  description = "Persistent/Functional/Immutable data structures" -category = "main"  optional = false  python-versions = ">=3.7"  files = [ @@ -1545,7 +1501,6 @@ files = [  name = "python-dateutil"  version = "2.8.2"  description = "Extensions to the standard Python datetime module" -category = "main"  optional = false  python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"  files = [ @@ -1560,7 +1515,6 @@ six = ">=1.5"  name = "python-dotenv"  version = "1.0.0"  description = "Read key-value pairs from a .env file and set them as environment variables" -category = "main"  optional = false  python-versions = ">=3.8"  files = [ @@ -1575,7 +1529,6 @@ cli = ["click (>=5.0)"]  name = "pytz"  version = "2023.3"  description = "World timezone definitions, modern and historical" -category = "main"  optional = false  python-versions = "*"  files = [ @@ -1587,7 +1540,6 @@ files = [  name = "pyyaml"  version = "6.0"  description = "YAML parser and emitter for Python" -category = "main"  optional = false  python-versions = ">=3.6"  files = [ @@ -1637,7 +1589,6 @@ files = [  name = "regex"  version = "2023.5.5"  description = "Alternative regular expression module, to replace re." -category = "main"  optional = false  python-versions = ">=3.6"  files = [ @@ -1735,7 +1686,6 @@ files = [  name = "requests"  version = "2.29.0"  description = "Python HTTP for Humans." -category = "main"  optional = false  python-versions = ">=3.7"  files = [ @@ -1757,7 +1707,6 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]  name = "six"  version = "1.16.0"  description = "Python 2 and 3 compatibility utilities" -category = "main"  optional = false  python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"  files = [ @@ -1769,7 +1718,6 @@ files = [  name = "sniffio"  version = "1.3.0"  description = "Sniff out which async library your code is running under" -category = "main"  optional = false  python-versions = ">=3.7"  files = [ @@ -1781,7 +1729,6 @@ files = [  name = "sqlalchemy"  version = "2.0.13"  description = "Database Abstraction Library" -category = "main"  optional = false  python-versions = ">=3.7"  files = [ @@ -1829,7 +1776,7 @@ files = [  ]  [package.dependencies] -greenlet = {version = "!=0.4.17", markers = "platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\""} +greenlet = {version = "!=0.4.17", markers = "platform_machine == \"win32\" or platform_machine == \"WIN32\" or platform_machine == \"AMD64\" or platform_machine == \"amd64\" or platform_machine == \"x86_64\" or platform_machine == \"ppc64le\" or platform_machine == \"aarch64\""}  typing-extensions = ">=4.2.0"  [package.extras] @@ -1859,7 +1806,6 @@ sqlcipher = ["sqlcipher3-binary"]  name = "starlette"  version = "0.26.1"  description = "The little ASGI library that shines." -category = "main"  optional = false  python-versions = ">=3.7"  files = [ @@ -1878,7 +1824,6 @@ full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart", "pyyam  name = "tenacity"  version = "8.2.2"  description = "Retry code until it succeeds" -category = "main"  optional = false  python-versions = ">=3.6"  files = [ @@ -1893,7 +1838,6 @@ doc = ["reno", "sphinx", "tornado (>=4.5)"]  name = "tiktoken"  version = "0.4.0"  description = "tiktoken is a fast BPE tokeniser for use with OpenAI's models" -category = "main"  optional = false  python-versions = ">=3.8"  files = [ @@ -1939,7 +1883,6 @@ blobfile = ["blobfile (>=2)"]  name = "tokenizers"  version = "0.13.3"  description = "Fast and Customizable Tokenizers" -category = "main"  optional = false  python-versions = "*"  files = [ @@ -1994,7 +1937,6 @@ testing = ["black (==22.3)", "datasets", "numpy", "pytest", "requests"]  name = "tqdm"  version = "4.65.0"  description = "Fast, Extensible Progress Meter" -category = "main"  optional = false  python-versions = ">=3.7"  files = [ @@ -2015,7 +1957,6 @@ telegram = ["requests"]  name = "typer"  version = "0.7.0"  description = "Typer, build great CLIs. Easy to code. Based on Python type hints." -category = "main"  optional = false  python-versions = ">=3.6"  files = [ @@ -2036,7 +1977,6 @@ test = ["black (>=22.3.0,<23.0.0)", "coverage (>=6.2,<7.0)", "isort (>=5.0.6,<6.  name = "typing-extensions"  version = "4.5.0"  description = "Backported and Experimental Type Hints for Python 3.7+" -category = "main"  optional = false  python-versions = ">=3.7"  files = [ @@ -2048,7 +1988,6 @@ files = [  name = "typing-inspect"  version = "0.8.0"  description = "Runtime inspection utilities for typing module." -category = "main"  optional = false  python-versions = "*"  files = [ @@ -2064,7 +2003,6 @@ typing-extensions = ">=3.7.4"  name = "tzdata"  version = "2023.3"  description = "Provider of IANA time zone data" -category = "main"  optional = false  python-versions = ">=2"  files = [ @@ -2076,7 +2014,6 @@ files = [  name = "urllib3"  version = "1.26.15"  description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "main"  optional = false  python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"  files = [ @@ -2093,7 +2030,6 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"]  name = "uvicorn"  version = "0.21.1"  description = "The lightning-fast ASGI server." -category = "main"  optional = false  python-versions = ">=3.7"  files = [ @@ -2112,7 +2048,6 @@ standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)",  name = "websockets"  version = "11.0.2"  description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" -category = "main"  optional = false  python-versions = ">=3.7"  files = [ @@ -2192,7 +2127,6 @@ files = [  name = "wrapt"  version = "1.15.0"  description = "Module for decorators, wrappers and monkey patching." -category = "main"  optional = false  python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"  files = [ @@ -2277,7 +2211,6 @@ files = [  name = "yarl"  version = "1.9.2"  description = "Yet another URL library" -category = "main"  optional = false  python-versions = ">=3.7"  files = [ @@ -2365,7 +2298,6 @@ multidict = ">=4.0"  name = "zipp"  version = "3.16.2"  description = "Backport of pathlib-compatible object wrapper for zip files" -category = "main"  optional = false  python-versions = ">=3.8"  files = [ @@ -2380,4 +2312,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p  [metadata]  lock-version = "2.0"  python-versions = "^3.8.1" -content-hash = "83880c8de27a4094fa8e695bd8db5d4053fc2d61ffc028f09cfa097f315c35f2" +content-hash = "126119ec6b94f1da4af9f8f2de4352df20522652cd58726546bd2fb46b40a9ef" diff --git a/continuedev/pyproject.toml b/continuedev/pyproject.toml index 64d5e90c..d7505e2b 100644 --- a/continuedev/pyproject.toml +++ b/continuedev/pyproject.toml @@ -27,8 +27,8 @@ directory-tree = "^0.0.3.1"  anthropic = "^0.3.4"  chevron = "^0.14.0"  psutil = "^5.9.5" -meilisearch = "^0.28.1"  pygithub = "^1.59.0" +meilisearch-python-async = "^1.4.8"  [tool.poetry.scripts]  typegen = "src.continuedev.models.generate_json_schema:main"  diff --git a/continuedev/src/continuedev/core/autopilot.py b/continuedev/src/continuedev/core/autopilot.py index d018c29e..42a58423 100644 --- a/continuedev/src/continuedev/core/autopilot.py +++ b/continuedev/src/continuedev/core/autopilot.py @@ -69,7 +69,7 @@ class Autopilot(ContinueBaseModel):          autopilot.continue_sdk = await ContinueSDK.create(autopilot)          # Load documents into the search index -        autopilot.context_manager = ContextManager( +        autopilot.context_manager = await ContextManager.create(              autopilot.continue_sdk.config.context_providers + [                  HighlightedCodeContextProvider(ide=ide),                  FileContextProvider(workspace_dir=ide.workspace_directory) diff --git a/continuedev/src/continuedev/core/context.py b/continuedev/src/continuedev/core/context.py index 67bba651..7d302656 100644 --- a/continuedev/src/continuedev/core/context.py +++ b/continuedev/src/continuedev/core/context.py @@ -1,7 +1,7 @@  from abc import abstractmethod  from typing import Dict, List -import meilisearch +from meilisearch_python_async import Client  from pydantic import BaseModel @@ -50,21 +50,21 @@ class ContextProvider(BaseModel):          """          return [ChatMessage(role="user", content=f"{item.description.name}: {item.description.description}\n\n{item.content}", summary=item.description.description) for item in await self.get_selected_items()] -    async def get_item(self, id: ContextItemId, query: str, search_client: meilisearch.Client) -> ContextItem: +    async def get_item(self, id: ContextItemId, query: str, search_client: Client) -> ContextItem:          """          Returns the ContextItem with the given id.          Default implementation uses the search index to get the item.          """ -        result = search_client.index( +        result = await search_client.index(              SEARCH_INDEX_NAME).get_document(id.to_string())          return ContextItem(              description=ContextItemDescription( -                name=result.name, -                description=result.description, +                name=result["name"], +                description=result["description"],                  id=id              ), -            content=result.content +            content=result["content"]          )      async def delete_context_with_ids(self, ids: List[ContextItemId]): @@ -85,7 +85,7 @@ class ContextProvider(BaseModel):          """          self.selected_items = [] -    async def add_context_item(self, id: ContextItemId, query: str, search_client: meilisearch.Client): +    async def add_context_item(self, id: ContextItemId, query: str, search_client: Client):          """          Adds the given ContextItem to the list of ContextItems. @@ -126,21 +126,26 @@ class ContextManager:          """          return sum([await provider.get_chat_messages() for provider in self.context_providers.values()], []) -    search_client: meilisearch.Client - -    def __init__(self, context_providers: List[ContextProvider]): -        self.search_client = meilisearch.Client('http://localhost:7700') - -        # If meilisearch isn't running, don't use any ContextProviders that might depend on it -        if not check_meilisearch_running(): -            context_providers = list( -                filter(lambda cp: cp.title == "code", context_providers)) +    search_client: Client +    def __init__(self, context_providers: List[ContextProvider], search_client: Client): +        self.search_client = search_client          self.context_providers = {              prov.title: prov for prov in context_providers}          self.provider_titles = {              provider.title for provider in context_providers} +    @classmethod +    async def create(cls, context_providers: List[ContextProvider]): +        search_client = Client('http://localhost:7700') +        health = await search_client.health() +        if not health.status == "available": +            print("MeiliSearch not running, avoiding any dependent context providers") +            context_providers = list( +                filter(lambda cp: cp.title == "code", context_providers)) + +        return cls(context_providers, search_client) +      async def load_index(self):          for _, provider in self.context_providers.items():              context_items = await provider.provide_context_items() @@ -154,8 +159,7 @@ class ContextManager:                  for item in context_items              ]              if len(documents) > 0: -                self.search_client.index( -                    SEARCH_INDEX_NAME).add_documents(documents) +                await self.search_client.index(SEARCH_INDEX_NAME).add_documents(documents)      # def compile_chat_messages(self, max_tokens: int) -> List[Dict]:      #     """ diff --git a/continuedev/src/continuedev/plugins/context_providers/file.py b/continuedev/src/continuedev/plugins/context_providers/file.py index fc0af7ba..6222ec6a 100644 --- a/continuedev/src/continuedev/plugins/context_providers/file.py +++ b/continuedev/src/continuedev/plugins/context_providers/file.py @@ -21,7 +21,7 @@ class FileContextProvider(ContextProvider):      title = "file"      workspace_dir: str -    ignore_patterns: List[str] = list(map(lambda folder: f"**/{folder}", [ +    ignore_patterns: List[str] = [          ".git",          ".vscode",          ".idea", @@ -35,7 +35,10 @@ class FileContextProvider(ContextProvider):          "target",          "out",          "bin", -    ])) +        ".pytest_cache", +        ".vscode-test", +        ".continue", +    ]      async def provide_context_items(self) -> List[ContextItem]:          filepaths = [] diff --git a/continuedev/src/continuedev/plugins/context_providers/highlighted_code.py b/continuedev/src/continuedev/plugins/context_providers/highlighted_code.py index 23d4fc86..426c0804 100644 --- a/continuedev/src/continuedev/plugins/context_providers/highlighted_code.py +++ b/continuedev/src/continuedev/plugins/context_providers/highlighted_code.py @@ -1,7 +1,7 @@  import os  from typing import Any, Dict, List -import meilisearch +from meilisearch_python_async import Client  from ...core.main import ChatMessage  from ...models.filesystem import RangeInFile, RangeInFileWithContents  from ...core.context import ContextItem, ContextItemDescription, ContextItemId @@ -187,5 +187,5 @@ class HighlightedCodeContextProvider(BaseModel):          for hr in self.highlighted_ranges:              hr.item.editing = hr.item.description.id.to_string() in ids -    async def add_context_item(self, id: ContextItemId, query: str, search_client: meilisearch.Client, prev: List[ContextItem] = None) -> List[ContextItem]: +    async def add_context_item(self, id: ContextItemId, query: str, search_client: Client, prev: List[ContextItem] = None) -> List[ContextItem]:          raise NotImplementedError() diff --git a/continuedev/src/continuedev/server/gui.py b/continuedev/src/continuedev/server/gui.py index fa203c28..c0957395 100644 --- a/continuedev/src/continuedev/server/gui.py +++ b/continuedev/src/continuedev/server/gui.py @@ -61,12 +61,12 @@ class GUIProtocolServer(AbstractGUIProtocolServer):              "data": data          }) -    async def _receive_json(self, message_type: str, timeout: int = 5) -> Any: +    async def _receive_json(self, message_type: str, timeout: int = 20) -> Any:          try:              return await asyncio.wait_for(self.sub_queue.get(message_type), timeout=timeout)          except asyncio.TimeoutError:              raise Exception( -                "GUI Protocol _receive_json timed out after 5 seconds") +                "GUI Protocol _receive_json timed out after 20 seconds")      async def _send_and_receive_json(self, data: Any, resp_model: Type[T], message_type: str) -> T:          await self._send_json(message_type, data) diff --git a/continuedev/src/continuedev/server/ide.py b/continuedev/src/continuedev/server/ide.py index d6a28c92..cf8b32a1 100644 --- a/continuedev/src/continuedev/server/ide.py +++ b/continuedev/src/continuedev/server/ide.py @@ -10,6 +10,7 @@ from pydantic import BaseModel  import traceback  import asyncio +from .meilisearch_server import start_meilisearch  from ..libs.util.telemetry import posthog_logger  from ..libs.util.queue import AsyncSubscriptionQueue  from ..models.filesystem import FileSystem, RangeInFile, EditDiff, RangeInFileWithContents, RealFileSystem @@ -139,6 +140,7 @@ class IdeProtocolServer(AbstractIdeProtocolServer):                  continue              message_type = message["messageType"]              data = message["data"] +            print("Received message while initializing", message_type)              if message_type == "workspaceDirectory":                  self.workspace_directory = data["workspaceDirectory"]              elif message_type == "uniqueId": @@ -153,17 +155,18 @@ class IdeProtocolServer(AbstractIdeProtocolServer):      async def _send_json(self, message_type: str, data: Any):          if self.websocket.application_state == WebSocketState.DISCONNECTED:              return +        print("Sending IDE message: ", message_type)          await self.websocket.send_json({              "messageType": message_type,              "data": data          }) -    async def _receive_json(self, message_type: str, timeout: int = 5) -> Any: +    async def _receive_json(self, message_type: str, timeout: int = 20) -> Any:          try:              return await asyncio.wait_for(self.sub_queue.get(message_type), timeout=timeout)          except asyncio.TimeoutError:              raise Exception( -                "IDE Protocol _receive_json timed out after 5 seconds") +                "IDE Protocol _receive_json timed out after 20 seconds", message_type)      async def _send_and_receive_json(self, data: Any, resp_model: Type[T], message_type: str) -> T:          await self._send_json(message_type, data) @@ -432,6 +435,13 @@ class IdeProtocolServer(AbstractIdeProtocolServer):  @router.websocket("/ws")  async def websocket_endpoint(websocket: WebSocket, session_id: str = None):      try: +        # Start meilisearch +        try: +            await start_meilisearch() +        except Exception as e: +            print("Failed to start MeiliSearch") +            print(e) +          await websocket.accept()          print("Accepted websocket connection from, ", websocket.client)          await websocket.send_json({"messageType": "connected", "data": {}}) diff --git a/continuedev/src/continuedev/server/main.py b/continuedev/src/continuedev/server/main.py index 7ee64041..0b59d4fe 100644 --- a/continuedev/src/continuedev/server/main.py +++ b/continuedev/src/continuedev/server/main.py @@ -1,7 +1,5 @@  import asyncio -import subprocess  import time -import meilisearch  import psutil  import os  from fastapi import FastAPI @@ -13,7 +11,6 @@ import argparse  from .ide import router as ide_router  from .gui import router as gui_router  from .session_manager import session_manager -from .meilisearch_server import start_meilisearch  app = FastAPI() @@ -87,13 +84,8 @@ if __name__ == "__main__":          # cpu_thread = threading.Thread(target=cpu_usage_loop)          # cpu_thread.start() -        try: -            start_meilisearch() -        except Exception as e: -            print("Failed to start MeiliSearch") -            print(e) -          run_server()      except Exception as e: +        print("Error starting Continue server: ", e)          cleanup()          raise e diff --git a/continuedev/src/continuedev/server/meilisearch_server.py b/continuedev/src/continuedev/server/meilisearch_server.py index 232b6243..286019e1 100644 --- a/continuedev/src/continuedev/server/meilisearch_server.py +++ b/continuedev/src/continuedev/server/meilisearch_server.py @@ -2,7 +2,7 @@ import os  import shutil  import subprocess -import meilisearch +from meilisearch_python_async import Client  from ..libs.util.paths import getServerFolderPath @@ -41,14 +41,14 @@ def ensure_meilisearch_installed():              f"curl -L https://install.meilisearch.com | sh", shell=True, check=True, cwd=serverPath) -def check_meilisearch_running() -> bool: +async def check_meilisearch_running() -> bool:      """      Checks if MeiliSearch is running.      """      try: -        client = meilisearch.Client('http://localhost:7700') -        resp = client.health() +        client = Client('http://localhost:7700') +        resp = await client.health()          if resp["status"] != "available":              return False          return True @@ -56,7 +56,7 @@ def check_meilisearch_running() -> bool:          return False -def start_meilisearch(): +async def start_meilisearch():      """      Starts the MeiliSearch server, wait for it.      """ @@ -71,7 +71,7 @@ def start_meilisearch():      ensure_meilisearch_installed()      # Check if MeiliSearch is running -    if not check_meilisearch_running(): +    if not await check_meilisearch_running():          print("Starting MeiliSearch...")          subprocess.Popen(["./meilisearch"], cwd=serverPath, stdout=subprocess.DEVNULL,                           stderr=subprocess.STDOUT, close_fds=True, start_new_session=True) diff --git a/extension/package-lock.json b/extension/package-lock.json index 71c489c6..c965f8be 100644 --- a/extension/package-lock.json +++ b/extension/package-lock.json @@ -1,12 +1,12 @@  {    "name": "continue", -  "version": "0.0.195", +  "version": "0.0.200",    "lockfileVersion": 2,    "requires": true,    "packages": {      "": {        "name": "continue", -      "version": "0.0.195", +      "version": "0.0.200",        "license": "Apache-2.0",        "dependencies": {          "@electron/rebuild": "^3.2.10", diff --git a/extension/package.json b/extension/package.json index 1e9314e5..5459299d 100644 --- a/extension/package.json +++ b/extension/package.json @@ -14,7 +14,7 @@    "displayName": "Continue",    "pricing": "Free",    "description": "The open-source coding autopilot", -  "version": "0.0.195", +  "version": "0.0.200",    "publisher": "Continue",    "engines": {      "vscode": "^1.67.0" diff --git a/extension/react-app/src/main.tsx b/extension/react-app/src/main.tsx index a76bced6..1776490c 100644 --- a/extension/react-app/src/main.tsx +++ b/extension/react-app/src/main.tsx @@ -8,12 +8,11 @@ import "./index.css";  import posthog from "posthog-js";  import { PostHogProvider } from "posthog-js/react"; +console.log("Starting React"); +  posthog.init("phc_JS6XFROuNbhJtVCEdTSYk6gl5ArRrTNMpCcguAXlSPs", {    api_host: "https://app.posthog.com", -  session_recording: { -    // WARNING: Only enable this if you understand the security implications -    recordCrossOriginIframes: true, -  } as any, +  disable_session_recording: true,  });  ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render( diff --git a/extension/src/activation/activate.ts b/extension/src/activation/activate.ts index a1d88a31..356d0256 100644 --- a/extension/src/activation/activate.ts +++ b/extension/src/activation/activate.ts @@ -17,7 +17,7 @@ export let ideProtocolClient: IdeProtocolClient;  export async function activateExtension(context: vscode.ExtensionContext) {    extensionContext = context; - +  console.log("Using Continue version: ", getExtensionVersion());    // Before anything else, check whether this is an out-of-date version of the extension    // Do so by grabbing the package.json off of the GitHub respository for now.    fetch(PACKAGE_JSON_RAW_GITHUB_URL) @@ -67,6 +67,7 @@ export async function activateExtension(context: vscode.ExtensionContext) {        }, 2000);      }); +    console.log("Continue server started");      // Initialize IDE Protocol Client      const serverUrl = getContinueServerUrl();      ideProtocolClient = new IdeProtocolClient( diff --git a/extension/src/continueIdeClient.ts b/extension/src/continueIdeClient.ts index 802afc1d..d92a829d 100644 --- a/extension/src/continueIdeClient.ts +++ b/extension/src/continueIdeClient.ts @@ -399,8 +399,9 @@ class IdeProtocolClient {          }        }, 1000);      }); +    console.log("Getting session ID");      const resp = await this.messenger?.sendAndReceive("getSessionId", {}); -    // console.log("New Continue session with ID: ", sessionId); +    console.log("New Continue session with ID: ", resp.sessionId);      this._sessionId = resp.sessionId;      return resp.sessionId;    } diff --git a/extension/src/debugPanel.ts b/extension/src/debugPanel.ts index 6da79cdc..6dcb588a 100644 --- a/extension/src/debugPanel.ts +++ b/extension/src/debugPanel.ts @@ -166,11 +166,13 @@ export function setupDebugPanel(      switch (data.type) {        case "onLoad": {          let sessionId: string; +        console.log("Running onLoad");          if (typeof sessionIdPromise === "string") {            sessionId = sessionIdPromise;          } else {            sessionId = await sessionIdPromise;          } +        console.log("Done with onLoad: ", sessionId);          panel.webview.postMessage({            type: "onLoad",            vscMachineId: vscode.env.machineId, diff --git a/extension/src/util/messenger.ts b/extension/src/util/messenger.ts index 3044898e..dc59a593 100644 --- a/extension/src/util/messenger.ts +++ b/extension/src/util/messenger.ts @@ -39,6 +39,7 @@ export class WebsocketMessenger extends Messenger {      //   var WebSocket = require("ws");      // } +    console.log("Creating websocket at: ", this.serverUrl);      const newWebsocket = new WebSocket(this.serverUrl);      for (const listener of this.onOpenListeners) {        this.onOpen(listener); @@ -110,6 +111,7 @@ export class WebsocketMessenger extends Messenger {        if (this.websocket.readyState !== this.websocket.CONNECTING) {          this.websocket = this._newWebsocket();        } +        this.websocket.addEventListener("open", () => {          this.websocket.send(payload);        }); | 
