summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNate Sesti <33237525+sestinj@users.noreply.github.com>2023-07-25 23:52:12 -0700
committerGitHub <noreply@github.com>2023-07-25 23:52:12 -0700
commit2b69bf6f1fc2e06b16b718358ceed4911d6e87c3 (patch)
treec27c630c64f2890698512606e2dd8acac9c0c8b6
parentf0df0fdc1fb7d8e65e27abe633da1831b8172b35 (diff)
parent03da423e5abdf32c5bf9755ffd2e1c7be98e6454 (diff)
downloadsncontinue-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.lock128
-rw-r--r--continuedev/pyproject.toml2
-rw-r--r--continuedev/src/continuedev/core/autopilot.py2
-rw-r--r--continuedev/src/continuedev/core/context.py40
-rw-r--r--continuedev/src/continuedev/plugins/context_providers/file.py7
-rw-r--r--continuedev/src/continuedev/plugins/context_providers/highlighted_code.py4
-rw-r--r--continuedev/src/continuedev/server/gui.py4
-rw-r--r--continuedev/src/continuedev/server/ide.py14
-rw-r--r--continuedev/src/continuedev/server/main.py10
-rw-r--r--continuedev/src/continuedev/server/meilisearch_server.py12
-rw-r--r--extension/package-lock.json4
-rw-r--r--extension/package.json2
-rw-r--r--extension/react-app/src/main.tsx7
-rw-r--r--extension/src/activation/activate.ts3
-rw-r--r--extension/src/continueIdeClient.ts3
-rw-r--r--extension/src/debugPanel.ts2
-rw-r--r--extension/src/util/messenger.ts2
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);
});