simplify discussion fetch logic

plugins/plugin_installer/api/plugin_install.py:66 no longer calls the GitHub Discussions API or augments the index response. fetch_index now returns the plugin index data as-is, with discussion coming only from index.json. The marketplace button logic already matched your requirement, so no extra UI change was needed: plugins/plugin_installer/webui/install-detail.html:139 renders Join Discussion only when selectedPlugin.discussion exists. Result: if the plugin index entry has a discussion link, the button shows. If the index has no discussion field, the button does not show.

Alessandro committed Mar 9, 2026 at 11:56 UTC 913aa6bab0d055ba576573621a026cfeea72c34c
1 file changed -30
plugins/plugin_installer/api/plugin_install.py
-30
@@ -1,9 +1,6 @@
1 from __future__ import annotations
2
3 -import json
4 -import logging
3 import time
6 -import urllib.request
4 import uuid
5 from pathlib import Path
6
@@ -80,31 +77,4 @@ class PluginInstall(ApiHandler):
77 if _dir_name(p.get("github", "")) in installed_dirs
78 ]
79
83 - if all(plugin.get("discussion") for plugin in plugins.values()):
84 - return {"success": True, "index": index_data, "installed_plugins": installed_keys}
85 -
86 - try:
87 - req = urllib.request.Request(
88 - "https://api.github.com/repos/agent0ai/a0-plugins/discussions?per_page=100",
89 - headers={
90 - "User-Agent": "AgentZero",
91 - "Accept": "application/vnd.github+json",
92 - },
93 - )
94 - with urllib.request.urlopen(req, timeout=10) as resp:
95 - discussions = json.loads(resp.read().decode())
96 -
97 - for discussion in discussions:
98 - title = discussion.get("title", "")
99 - if not title.startswith("Plugin: "):
100 - continue
101 -
102 - key = title[len("Plugin: "):]
103 - if key in plugins and not plugins[key].get("discussion"):
104 - plugins[key]["discussion"] = discussion["html_url"]
105 - except Exception as e:
106 - logging.getLogger(__name__).warning(
107 - "Failed to augment plugin index discussions: %s", e
108 - )
109 -
80 return {"success": True, "index": index_data, "installed_plugins": installed_keys}