From 4ace0b68c51ba051d26642e3296211358ca1c993 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20Hedenstr=C3=B6m?= <erik@hedenstroem.com> Date: Sun, 3 Sep 2023 16:17:23 +0000 Subject: [PATCH] Gitlab --- .gitignore | 2 ++ .gitlab-ci.yml | 15 +++------ config.py | 32 ++++++++++++++++-- context_providers/gitlab_context_provider.py | 34 ++++++++++++++++++++ requirements.txt | 1 + 5 files changed, 71 insertions(+), 13 deletions(-) create mode 100644 context_providers/gitlab_context_provider.py diff --git a/.gitignore b/.gitignore index a93e887..13322f1 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ libs +__pycache__ +*.code-workspace diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fef13ef..a5074ea 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,13 +1,6 @@ -# You can override the included template(s) by including variable overrides -# SAST customization: https://docs.gitlab.com/ee/user/application_security/sast/#customizing-the-sast-settings -# Secret Detection customization: https://docs.gitlab.com/ee/user/application_security/secret_detection/#customizing-settings -# Dependency Scanning customization: https://docs.gitlab.com/ee/user/application_security/dependency_scanning/#customizing-the-dependency-scanning-settings -# Container Scanning customization: https://docs.gitlab.com/ee/user/application_security/container_scanning/#customizing-the-container-scanning-settings -# Note that environment variables can be set in several places -# See https://docs.gitlab.com/ee/ci/variables/#cicd-variable-precedence -stages: -- test -sast: - stage: test include: - template: Security/SAST.gitlab-ci.yml +- template: Security/Secret-Detection.gitlab-ci.yml + +stages: + - test diff --git a/config.py b/config.py index eb2d710..bfadb58 100644 --- a/config.py +++ b/config.py @@ -10,7 +10,7 @@ from continuedev.src.continuedev.core.models import Models from continuedev.src.continuedev.core.config import CustomCommand, SlashCommand, ContinueConfig from continuedev.src.continuedev.libs.llm.ollama import Ollama -from continuedev.src.continuedev.libs.llm.maybe_proxy_openai import MaybeProxyOpenAI +from continuedev.src.continuedev.libs.llm.openai import OpenAI from continuedev.src.continuedev.plugins.steps.open_config import OpenConfigStep from continuedev.src.continuedev.plugins.steps.clear_history import ClearHistoryStep @@ -39,10 +39,34 @@ for path in c.get("SYS_PATH","").split(","): logger.info(f"sys.path: {', '.join(sys.path)}") from jira_context_provider import JIRAContextProvider +from gitlab_context_provider import GitLabContextProvider config = ContinueConfig( allow_anonymous_telemetry=False, - models=Models(default=Ollama(prompt_templates={'edit': '[INST] Consider the following code:\n```\n{{code_to_edit}}\n```\nEdit the code to perfectly satisfy the following user request:\n{{user_input}}\nOutput nothing except for the code. No code block, no English explanation, no start/end tags.\n[/INST]'}, model="codellama", server_url="http://localhost:11434", max_context_length=2048)), + models=Models( + default=Ollama( + context_length=2048, + unique_id="116ea2d7ed102aa7a7c2ab2206dd2083aebcac7a7f853956a9108fd1b1e67e82", + model="codellama", + prompt_templates={ + 'edit': '[INST] Consider the following code:\n```\n{{code_to_edit}}\n```\nEdit the code to perfectly satisfy the following user request:\n{{user_input}}\nOutput nothing except for the code. No code block, no English explanation, no start/end tags.\n[/INST]' + }, + server_url="http://localhost:11434" + ), + unused=[ + OpenAI( + context_length=2048, + model="gpt-4", + prompt_templates={}, + api_key=c.get("OPENAI_API_KEY") + ), + OpenAI( + context_length=2048, + model="gpt-3.5-turbo", + prompt_templates={}, + api_key=c.get("OPENAI_API_KEY")) + ] + ), system_message=None, temperature=0.3, custom_commands=[ @@ -98,5 +122,9 @@ config = ContinueConfig( username=c.get("JIRA_USERNAME"), token=c.get("JIRA_TOKEN") ), + GitLabContextProvider( + server=c.get("GITLAB_SERVER"), + token=c.get("GITLAB_TOKEN") + ) ], ) diff --git a/context_providers/gitlab_context_provider.py b/context_providers/gitlab_context_provider.py new file mode 100644 index 0000000..c9a7161 --- /dev/null +++ b/context_providers/gitlab_context_provider.py @@ -0,0 +1,34 @@ +from typing import List + +from continuedev.src.continuedev.core.context import ( + ContextItem, + ContextItemDescription, + ContextItemId, + ContextProvider, +) + +from gitlab import Gitlab + +class GitLabContextProvider(ContextProvider): + + title = "gitlab" + + server: str + token: str + + async def provide_context_items(self, workspace_dir: str) -> List[ContextItem]: + + gl = Gitlab(url=self.server, private_token=self.token) + issues = gl.issues.list(state='opened',scope='all',per_page=100) + + return [ + ContextItem( + content=issue.description, + description=ContextItemDescription( + name=f"Issue #{issue.project_id}.{issue.iid}", + description=issue.title, + id=ContextItemId(provider_title=self.title, item_id=str(issue.id)), + ), + ) + for issue in issues + ] diff --git a/requirements.txt b/requirements.txt index c04ac9a..fca13ec 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1,2 @@ jira==3.5.2 +python-gitlab==3.15.0 -- GitLab