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}