diff --git a/context_providers/confluence_context_provider.py b/context_providers/confluence_context_provider.py index 8c9d8304c72629b0bc5d29724b26e1115412f250..181ced00fc00a75a1dcce84623a895625f627eaa 100644 --- a/context_providers/confluence_context_provider.py +++ b/context_providers/confluence_context_provider.py @@ -13,6 +13,10 @@ from markdownify import markdownify as md class ConfluenceContextProvider(ContextProvider): title = "confluence" + display_title = "Confluence Pages" + description = "Reference Confluence pages" + dynamic = True + requires_query = True server: str username: str @@ -37,13 +41,16 @@ class ConfluenceContextProvider(ContextProvider): return [self.BASE_CONTEXT_ITEM] async def get_item(self, id: ContextItemId, query: str) -> ContextItem: - if id.item_id != self.CONFLUENCE_CONTEXT_ITEM_ID: - raise Exception("Invalid item id") + if not id.provider_title == self.title: + raise Exception("Invalid provider title for item") + page_id = query.lstrip(self.title + " ").strip() + if page_id is None or page_id == "": + return None confluence = Confluence( url=self.server, username=self.username, password=self.token, cloud=True ) page = confluence.get_page_by_id( - query.lstrip(self.title + " "), + page_id, expand="space,body.view", status=None, version=None, diff --git a/context_providers/gitlab_context_provider.py b/context_providers/gitlab_context_provider.py index a17e5a0556b949280f8aee2b3a0b85812fb8de71..a2c4d7538e46dc490ea0c4080eba82fbe4b655bf 100644 --- a/context_providers/gitlab_context_provider.py +++ b/context_providers/gitlab_context_provider.py @@ -12,6 +12,9 @@ from gitlab import Gitlab class GitLabContextProvider(ContextProvider): title = "gitlab" + display_title = "GitLab Issues" + description = "Reference GitLab issues" + dynamic = False server: str token: str diff --git a/context_providers/jira_context_provider.py b/context_providers/jira_context_provider.py index ca8e38cd5bb81a00396f7ffdd379f3a1bbd5c439..84aa6a0534a40971d147145a4ca562690188ec6e 100644 --- a/context_providers/jira_context_provider.py +++ b/context_providers/jira_context_provider.py @@ -12,6 +12,10 @@ from atlassian import Jira class JIRAContextProvider(ContextProvider): title = "jira" + display_title = "Jira Issues" + description = "Reference Jira issues" + dynamic = True + requires_query = True server: str username: str @@ -36,12 +40,15 @@ class JIRAContextProvider(ContextProvider): return [self.BASE_CONTEXT_ITEM] async def get_item(self, id: ContextItemId, query: str) -> ContextItem: - if id.item_id != self.JIRA_CONTEXT_ITEM_ID: - raise Exception("Invalid item id") + if not id.provider_title == self.title: + raise Exception("Invalid provider title for item") + issue_key = query.lstrip(self.title + " ").strip() + if issue_key is None or issue_key == "": + return None jira = Jira( url=self.server, username=self.username, password=self.token, cloud=True ) - issue = jira.issue(query.lstrip(self.title + " ")) + issue = jira.issue(issue_key) ctx_item = self.BASE_CONTEXT_ITEM.copy() ctx_item.description.name = issue["key"] ctx_item.description.description = issue["fields"]["summary"]