feedback-mcp 1.0.64__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of feedback-mcp might be problematic. Click here for more details.

feedback_config.py ADDED
@@ -0,0 +1,144 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Feedback配置管理
4
+ 用于管理IDE等全局配置
5
+ """
6
+ import json
7
+ import os
8
+ from pathlib import Path
9
+ from typing import Optional, Dict, Any
10
+
11
+
12
+ class FeedbackConfig:
13
+ """Feedback配置管理"""
14
+
15
+ def __init__(self, project_path: Optional[str] = None):
16
+ """初始化配置管理器
17
+
18
+ Args:
19
+ project_path: 项目路径,默认为当前工作目录
20
+ """
21
+ if project_path:
22
+ self.project_path = Path(project_path)
23
+ else:
24
+ self.project_path = Path.cwd()
25
+
26
+ self.config_dir = self.project_path / '.claude'
27
+ self.config_file = self.config_dir / 'feedback.config'
28
+
29
+ def load_config(self) -> Dict[str, Any]:
30
+ """加载配置
31
+
32
+ Returns:
33
+ 配置字典
34
+ """
35
+ if not self.config_file.exists():
36
+ return {
37
+ "ide": None,
38
+ "custom_ide_command": None
39
+ }
40
+
41
+ try:
42
+ with open(self.config_file, 'r', encoding='utf-8') as f:
43
+ config = json.load(f)
44
+ # 确保必要的键存在
45
+ if "ide" not in config:
46
+ config["ide"] = None
47
+ if "custom_ide_command" not in config:
48
+ config["custom_ide_command"] = None
49
+ return config
50
+ except (json.JSONDecodeError, IOError) as e:
51
+ print(f"Error loading config: {e}")
52
+ return {
53
+ "ide": None,
54
+ "custom_ide_command": None
55
+ }
56
+
57
+ def save_config(self, config: Dict[str, Any]):
58
+ """保存配置
59
+
60
+ Args:
61
+ config: 配置字典
62
+ """
63
+ try:
64
+ # 确保目录存在
65
+ self.config_dir.mkdir(parents=True, exist_ok=True)
66
+
67
+ # 写入配置
68
+ with open(self.config_file, 'w', encoding='utf-8') as f:
69
+ json.dump(config, f, indent=2, ensure_ascii=False)
70
+ except IOError as e:
71
+ print(f"Error saving config: {e}")
72
+
73
+ def get_ide(self) -> Optional[str]:
74
+ """获取配置的IDE
75
+
76
+ Returns:
77
+ IDE名称或None
78
+ """
79
+ config = self.load_config()
80
+ # 优先返回custom_ide_command,其次返回ide
81
+ custom = config.get("custom_ide_command")
82
+ if custom:
83
+ return custom
84
+ return config.get("ide")
85
+
86
+ def set_ide(self, ide: Optional[str] = None, custom_command: Optional[str] = None):
87
+ """设置IDE
88
+
89
+ Args:
90
+ ide: IDE名称(单选按钮选择的)
91
+ custom_command: 自定义IDE命令
92
+ """
93
+ config = self.load_config()
94
+
95
+ if custom_command:
96
+ # 如果有自定义命令,优先使用
97
+ config["custom_ide_command"] = custom_command
98
+ config["ide"] = None
99
+ else:
100
+ # 否则使用预设IDE
101
+ config["ide"] = ide
102
+ config["custom_ide_command"] = None
103
+
104
+ self.save_config(config)
105
+
106
+ def clear_ide(self):
107
+ """清除IDE配置"""
108
+ config = self.load_config()
109
+ config["ide"] = None
110
+ config["custom_ide_command"] = None
111
+ self.save_config(config)
112
+
113
+
114
+ def main():
115
+ """命令行接口"""
116
+ import argparse
117
+
118
+ parser = argparse.ArgumentParser(description='管理Feedback配置')
119
+ parser.add_argument('action', choices=['get', 'set', 'clear'],
120
+ help='要执行的操作')
121
+ parser.add_argument('--project-path', help='项目路径')
122
+ parser.add_argument('--ide', help='IDE名称')
123
+ parser.add_argument('--custom-command', help='自定义IDE命令')
124
+
125
+ args = parser.parse_args()
126
+
127
+ config_manager = FeedbackConfig(args.project_path)
128
+
129
+ if args.action == 'get':
130
+ ide = config_manager.get_ide()
131
+ print(ide if ide else "none")
132
+
133
+ elif args.action == 'set':
134
+ config_manager.set_ide(args.ide, args.custom_command)
135
+ ide = config_manager.get_ide()
136
+ print(f"IDE配置已设置为: {ide}")
137
+
138
+ elif args.action == 'clear':
139
+ config_manager.clear_ide()
140
+ print("IDE配置已清除")
141
+
142
+
143
+ if __name__ == "__main__":
144
+ main()
@@ -0,0 +1,327 @@
1
+ Metadata-Version: 2.4
2
+ Name: feedback-mcp
3
+ Version: 1.0.64
4
+ Summary: Interactive Feedback MCP Server with UI - 支持工作空间管理、任务追踪、检查点恢复的反馈系统
5
+ Author-email: Yang <your.email@example.com>
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/yourusername/feedback-mcp
8
+ Project-URL: Repository, https://github.com/yourusername/feedback-mcp
9
+ Project-URL: Issues, https://github.com/yourusername/feedback-mcp/issues
10
+ Keywords: mcp,feedback,interactive,workspace,task-management,checkpoint,ai-assistant,development-tools
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Programming Language :: Python :: 3.10
15
+ Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Programming Language :: Python :: 3.12
17
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
18
+ Classifier: Topic :: Software Development :: User Interfaces
19
+ Classifier: Operating System :: OS Independent
20
+ Requires-Python: >=3.10
21
+ Description-Content-Type: text/markdown
22
+ Requires-Dist: fastmcp==2.5.1
23
+ Requires-Dist: PySide6<7.0.0,>=6.8.0
24
+ Requires-Dist: psutil<8.0.0,>=6.0.0
25
+ Requires-Dist: markdown<4.0.0,>=3.6
26
+ Requires-Dist: pyyaml<7.0.0,>=6.0.0
27
+ Requires-Dist: requests<3.0.0,>=2.28.0
28
+ Requires-Dist: python-dotenv<2.0.0,>=1.0.0
29
+ Requires-Dist: urllib3<3.0.0,>=2.0.0
30
+ Requires-Dist: websockets==15.0.1
31
+ Requires-Dist: Pillow<12.0.0,>=10.0.0
32
+ Requires-Dist: pyperclip<2.0.0,>=1.8.0
33
+ Provides-Extra: dev
34
+ Requires-Dist: pytest; extra == "dev"
35
+ Requires-Dist: black; extra == "dev"
36
+ Requires-Dist: flake8; extra == "dev"
37
+ Requires-Dist: build; extra == "dev"
38
+ Requires-Dist: twine; extra == "dev"
39
+
40
+ # Interactive Feedback MCP
41
+
42
+ 一个功能强大的 MCP (Model Context Protocol) 服务器,提供交互式反馈界面,支持工作空间管理、任务追踪和检查点恢复。
43
+
44
+ ## ✨ 核心特性
45
+
46
+ - 🎯 **交互式反馈界面**: 基于 PySide6 的现代化 UI,支持文本、图片等多种反馈方式
47
+ - 📁 **工作空间管理**: 完整的工作空间生命周期管理,支持阶段切换
48
+ - ✅ **任务追踪**: 强大的任务管理系统,支持依赖关系、优先级、并行执行
49
+ - 💾 **检查点恢复**: 创建、恢复、对比工作检查点,确保工作安全
50
+ - 🔄 **工作流支持**: 模板化工作流,支持自定义工作流程
51
+ - 📊 **会话管理**: 完整的会话历史记录和统计
52
+
53
+ ## 🚀 快速开始
54
+
55
+ ### 方式一:使用 uv tool 安装(推荐)
56
+
57
+ #### 安装 feedback-mcp
58
+
59
+ ```bash
60
+ # 使用清华镜像(推荐,国内速度快)
61
+ uv tool install feedback-mcp@latest --index https://pypi.tuna.tsinghua.edu.cn/simple
62
+
63
+ # 或使用阿里云镜像
64
+ uv tool install feedback-mcp@latest --index https://mirrors.aliyun.com/pypi/simple/
65
+
66
+ # 验证安装
67
+ uv tool list | grep feedback
68
+ which feedback-mcp
69
+
70
+ # 更新版本
71
+ uv tool upgrade feedback-mcp
72
+ ```
73
+
74
+ **优势:**
75
+ - ✅ 只占用 1.1GB 空间(不会重复缓存)
76
+ - ✅ 启动速度快 10-30 倍
77
+ - ✅ 使用国内镜像下载速度快(1-3分钟 vs 10-30分钟)
78
+ - ✅ 一次安装,长期使用
79
+ - ✅ 自动管理 Python 版本(支持 3.10-3.12)
80
+
81
+ **可选:配置全局镜像**
82
+
83
+ 如果不想每次都加 `--index` 参数,可以配置 `~/.config/uv/uv.toml`:
84
+
85
+ ```toml
86
+ [[index]]
87
+ name = "tsinghua"
88
+ url = "https://pypi.tuna.tsinghua.edu.cn/simple"
89
+ default = true
90
+ ```
91
+
92
+ 配置后直接运行 `uv tool install feedback-mcp@latest` 即可。
93
+
94
+ ### 方式二:使用 pip 安装
95
+
96
+ ```bash
97
+ # 使用清华镜像安装
98
+ pip install feedback-mcp -i https://pypi.tuna.tsinghua.edu.cn/simple
99
+
100
+ # 或配置 pip 全局镜像
101
+ pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
102
+ pip install feedback-mcp
103
+ ```
104
+
105
+ ### 配置 MCP 服务器
106
+
107
+ 在你的 MCP 客户端配置文件(如 `.mcp.json`)中添加:
108
+
109
+ #### 使用 uv tool 方式(推荐)
110
+
111
+ ```json
112
+ {
113
+ "mcpServers": {
114
+ "feedback": {
115
+ "command": "feedback-mcp",
116
+ "args": ["--ide", "qoder"],
117
+ "timeout": 30000,
118
+ "autoApprove": ["interactive_feedback"]
119
+ }
120
+ }
121
+ }
122
+ ```
123
+
124
+
125
+ **参数说明:**
126
+ - `--ide`: IDE 名称,可选值:`qoder`、`cursor`、`vscode` 等
127
+ - `timeout`: 超时时间(毫秒),建议 30000 以上
128
+ - `autoApprove`: 自动批准的工具列表
129
+
130
+ ### 配置 Stop Hook
131
+
132
+ 在项目的 `hooks/hooks.json` 文件中配置停止钩子:
133
+
134
+ ```json
135
+ {
136
+ "hooks": {
137
+ "Stop": [
138
+ {
139
+ "hooks": [
140
+ {
141
+ "type": "command",
142
+ "command": "uvx --from feedback-mcp --with feedback-mcp python -m stop_hook"
143
+ }
144
+ ]
145
+ }
146
+ ]
147
+ }
148
+ }
149
+ ```
150
+
151
+ **注意:**
152
+ - `uvx` 会自动选择合适的 Python 版本(3.10-3.12)
153
+ - 如需指定版本可添加 `--python 3.11` 参数
154
+ - 如果使用 `uv tool install` 方式,参考上文中的路径配置
155
+ - 如果使用 pip 全局安装,使用 `python3 -m stop_hook` 即可
156
+ - Stop Hook 用于在会话结束时触发反馈提示
157
+
158
+ ### 使用示例
159
+
160
+ 安装配置完成后,AI 助手可以通过 `interactive_feedback` 工具与你交互:
161
+
162
+ ```python
163
+ # AI 助手自动调用 feedback 工具
164
+ # 弹出交互式反馈窗口
165
+ # 支持文本输入、预定义选项、文件选择等多种交互方式
166
+ ```
167
+
168
+ ## 📦 主要功能
169
+
170
+ ### 1. 工作空间管理
171
+
172
+ - 创建工作空间并设置目标
173
+ - 管理工作空间的不同阶段
174
+ - 记录工作记忆和相关文件
175
+ - 支持多个并行工作空间
176
+
177
+ ### 2. 任务管理
178
+
179
+ - 创建和更新任务列表
180
+ - 设置任务依赖关系和优先级
181
+ - 支持任务并行执行
182
+ - 实时任务状态追踪
183
+
184
+ ### 3. 检查点系统
185
+
186
+ - 创建工作检查点快照
187
+ - 恢复到历史检查点
188
+ - 对比不同检查点的差异
189
+ - 自动收集相关文件
190
+
191
+ ### 4. 工作流引擎
192
+
193
+ - 预定义工作流模板
194
+ - 自定义工作流步骤
195
+ - 工作流状态管理
196
+ - 步骤依赖和执行控制
197
+
198
+ ## 🔧 系统要求
199
+
200
+ - Python >= 3.10, < 3.13 (支持 3.10, 3.11, 3.12)
201
+ - PySide6 >= 6.8.0
202
+ - FastMCP >= 2.5.1
203
+
204
+ ## 🐛 常见问题
205
+
206
+ ### 1. 磁盘空间占用过大
207
+
208
+ **问题:** `~/.cache/uv/` 目录占用大量磁盘空间(可能达到 100GB+)
209
+
210
+ **原因:** 使用 `uvx` 方式会为每次运行创建独立的虚拟环境缓存
211
+
212
+ **解决方案:**
213
+ ```bash
214
+ # 清理 uv 缓存
215
+ uv cache clean
216
+
217
+ # 迁移到 uv tool install 方式(推荐)
218
+ uv tool install feedback-mcp@latest
219
+ ```
220
+
221
+ 迁移后磁盘占用从 ~125GB 降至 ~1.1GB,启动速度提升 10-30 倍。
222
+
223
+ ### 2. 安装速度慢
224
+
225
+ **问题:** 下载 PySide6 等大型依赖包速度很慢
226
+
227
+ **解决方案:** 配置国内镜像加速(见上文"配置国内镜像加速"章节)
228
+
229
+ ### 3. Stop Hook 不工作
230
+
231
+ **问题:** 会话结束时没有弹出反馈窗口
232
+
233
+ **排查步骤:**
234
+ ```bash
235
+ # 1. 检查 hooks.json 配置是否正确
236
+ cat hooks/hooks.json
237
+
238
+ # 2. 测试 stop_hook 模块是否可用
239
+ ~/.local/share/uv/tools/feedback-mcp/bin/python -m stop_hook
240
+
241
+ # 3. 检查 Python 路径是否正确
242
+ which python
243
+ ls -la ~/.local/share/uv/tools/feedback-mcp/bin/python
244
+ ```
245
+
246
+ **解决方案:** 确保 hooks.json 中的 Python 路径与实际安装位置一致
247
+
248
+ ### 4. 权限问题
249
+
250
+ **问题:** `permission denied: feedback-mcp`
251
+
252
+ **解决方案:**
253
+ ```bash
254
+ # 添加执行权限
255
+ chmod +x ~/.local/bin/feedback-mcp
256
+
257
+ # 确保 ~/.local/bin 在 PATH 中
258
+ echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
259
+ source ~/.zshrc
260
+ ```
261
+
262
+ ### 5. 版本更新
263
+
264
+ **更新到最新版本:**
265
+ ```bash
266
+ # 使用 uv tool
267
+ uv tool upgrade feedback-mcp
268
+
269
+ # 或重新安装特定版本
270
+ uv tool install feedback-mcp@1.0.4 --force
271
+
272
+ # 使用 pip
273
+ pip install --upgrade feedback-mcp -i https://pypi.tuna.tsinghua.edu.cn/simple
274
+ ```
275
+
276
+ ### 6. 从 uvx 迁移到 uv tool
277
+
278
+ 如果你之前使用 `uvx` 方式,建议迁移到 `uv tool install`:
279
+
280
+ **迁移步骤:**
281
+ 1. 清理旧缓存:`uv cache clean`
282
+ 2. 安装工具:`uv tool install feedback-mcp@latest`
283
+ 3. 更新 `.mcp.json`:将 `command` 从 `"uvx"` 改为 `"feedback-mcp"`
284
+ 4. 更新 `hooks.json`:使用完整的 Python 路径
285
+
286
+ 详细迁移指南请参考项目中的 `MIGRATION_SUMMARY.md` 文档。
287
+
288
+ ## 🔍 调试模式
289
+
290
+ 启用调试日志:
291
+
292
+ ```bash
293
+ # 设置环境变量
294
+ export DEBUG=1
295
+ feedback-mcp --ide qoder
296
+
297
+ # 查看日志
298
+ tail -f /path/to/feedback.log
299
+ ```
300
+
301
+ ## 📝 开发
302
+
303
+ ```bash
304
+ # 克隆仓库
305
+ git clone https://github.com/yourusername/interactive-feedback-mcp.git
306
+ cd interactive-feedback-mcp
307
+
308
+ # 安装开发依赖
309
+ pip install -e ".[dev]"
310
+
311
+ # 运行服务器
312
+ python -m src-min.server
313
+ ```
314
+
315
+ ## 🤝 贡献
316
+
317
+ 欢迎提交 Issue 和 Pull Request!
318
+
319
+ ## 📄 许可证
320
+
321
+ MIT License
322
+
323
+ ## 🔗 相关链接
324
+
325
+ - [GitHub Repository](https://github.com/yourusername/interactive-feedback-mcp)
326
+ - [MCP Documentation](https://modelcontextprotocol.io/)
327
+ - [Issue Tracker](https://github.com/yourusername/interactive-feedback-mcp/issues)
@@ -0,0 +1,41 @@
1
+ add_command_dialog.py,sha256=SFBlWCY5eZ9MmFOQ4Nt29ehwMY1Y8POIzeGgOnRTHzI,26281
2
+ command.py,sha256=wC1x3KfaOi-DDy5SvIK4kN-PMZTIGYNsgilPTzQ1Us0,25936
3
+ context_formatter.py,sha256=yt88vx-HU1LstlKMl8eh9yf8nhhTkskjimig8rw2k8Y,11458
4
+ debug_logger.py,sha256=ZDhErmUdKMKDJMMfvKI-UtLHOaAFm9qbgtUJDuiSRts,4228
5
+ feedback_config.py,sha256=sQzYgKYhwEDWJtlG492ickGYK2EdyBhsZdjiqRtJxSE,4142
6
+ feedback_ui.py,sha256=eMAlEgy_aBGYp8l35qUgT1jqaU586LLz7GqliD0vUHg,67874
7
+ get_session_id.py,sha256=NDfxazme_BgHgHkKOdo-n71MvlkRIebwPEI6h5kduGk,1809
8
+ git_operations.py,sha256=svBodkhkfnNd4t5MwJZFvi_XRr3SdicbjSyMH1g1JMI,23871
9
+ ide_utils.py,sha256=8KlHeQdQ1wAVctzxKBeBpKlr9wpt52WKtvArUvmESZE,8948
10
+ path_config.py,sha256=MY43rTs19DEWbIVckGGSyA0q2NUiEHuU51L5RgFF7Vw,3274
11
+ post_task_hook.py,sha256=nGMi9iIbq3iv7gqN1hDTYrTDdBgj6-arwTeCXXWedjw,2649
12
+ record.py,sha256=jhZJ5lWMs1fQt9yoLZ1rj2eCqr3yGIejAhXDhBxkwUg,6417
13
+ server.py,sha256=V7oIAj382dyfuxSAU0KZ8TBZMuGay5YaAFqHacaseg0,30385
14
+ session_manager.py,sha256=mvvK2X2Rr1-LHT71poDZj-ZuPY3Ni5IuNbV470LxzQg,12622
15
+ stop_hook.py,sha256=BBGzAivVTxUIcG-oAKDZCyZnvj7NctsBwCwDkX-7uaI,3052
16
+ window_position_manager.py,sha256=4BhMDIQ2UnvTnbBzt5yQDKC7En2-8fOIDwhKfWpaNBw,6469
17
+ workspace_manager.py,sha256=F8cxQBr3misn32w1Z4UnDMU3BETWyC0asG_af8Sejuc,7848
18
+ components/__init__.py,sha256=MLxfbTmwIyXT0n7hgHzcKyf1mjLEAFfkQohVPju75pU,287
19
+ components/agent_popup.py,sha256=b6bEUXXaPxHOoB-NzEg4a3H9raYO2HCSFed8HCnsfDk,5805
20
+ components/chat_history.py,sha256=XrgE_Kh3iQN1OQ_6GP-UUBkLNnBaIXUdvDXTOftgPUc,10376
21
+ components/command_popup.py,sha256=7me1MNg2Vm4Ue3s-bosWD8O9Fg3TS2rTF-X1f5f7KzE,15229
22
+ components/feedback_text_edit.py,sha256=Q8qzlXzgrXXv8UBe0mHKeIXUYs8ka4rU5ceI4flZAHQ,43437
23
+ components/file_popup.py,sha256=_gS7w7KH0jLtFo9C0IvWv4gC5cc9IvwHWnJvZ_OJtWo,14788
24
+ components/history_popup.py,sha256=61KLCJzkkDFB4E8FPovZlX3WGAohiYIcYZJUggghX7E,19694
25
+ components/markdown_display.py,sha256=neNfe2s8_dFkKPOnF-WQkzIvBeKD3nxxFZbuNmkUNFA,9777
26
+ tabs/__init__.py,sha256=HPlk2eAtIQEHNpjNp5RH6wbQLvwJJOBMbSxyIPTsiA0,1559
27
+ tabs/base_tab.py,sha256=6nYXKhrWp77ezt1Xdmu0Mod9nOafMp27wPsoBTp6-Po,781
28
+ tabs/chat_history_style.qss,sha256=viziaHC8oluD5LJeOKXhGHVDh3JWS4PReUxvfEFbrks,1645
29
+ tabs/chat_history_tab.py,sha256=0jrg-SoREwoq4DJ_uH6tQSRrBDCiJPRQ-N8x9VcqywA,38662
30
+ tabs/chat_tab.py,sha256=lFfLs7b22o55A0xmznTZ8ScA295NEF9Kn6Spa6oOjeM,77921
31
+ tabs/workspace_tab.py,sha256=FOeRJIVvGboNqmFLSnF_rcneAL0ICMT2HItuUrKr_xI,18219
32
+ ui/__init__.py,sha256=Ci3V2esksNuam2ZpGKVqr4n7AX2mhdC39U6EcJwSlrQ,345
33
+ ui/__main__.py,sha256=iDIR_b9SHIhWTuxgHRg4IcHNke23KWJZ2M6hsHwu_Fk,363
34
+ ui/compact_feedback_ui.py,sha256=VjWwSiyC-9zulXQI4mbgxRNUj3ss00EQyjTg0oSdVZE,14090
35
+ ui/session_list_ui.py,sha256=V9WrGgRC0uLuwVtAaAo5Mrkrm9zIzFfS6sBnwTswepo,30027
36
+ ui/styles/session_list.qss,sha256=y5tt0F6fRhEDcSCHJPQQrTFAIKeSShZMmRvjTeE6gvI,3735
37
+ feedback_mcp-1.0.64.dist-info/METADATA,sha256=5C1bLN63lyKP5NZBnQdniw3JhbnXL7SdZBOHlPKVocw,8715
38
+ feedback_mcp-1.0.64.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
39
+ feedback_mcp-1.0.64.dist-info/entry_points.txt,sha256=sQh-GO0peid-VnYwSo9YKc-24H13o8mG4l-qLtFWoeg,45
40
+ feedback_mcp-1.0.64.dist-info/top_level.txt,sha256=IKnj7tM3zkH5s9di3IQN4szSO-6GDc2MzOyegPCyyKo,254
41
+ feedback_mcp-1.0.64.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (80.9.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ feedback-mcp = server:main
@@ -0,0 +1,20 @@
1
+ add_command_dialog
2
+ command
3
+ components
4
+ context_formatter
5
+ debug_logger
6
+ feedback_config
7
+ feedback_ui
8
+ get_session_id
9
+ git_operations
10
+ ide_utils
11
+ path_config
12
+ post_task_hook
13
+ record
14
+ server
15
+ session_manager
16
+ stop_hook
17
+ tabs
18
+ ui
19
+ window_position_manager
20
+ workspace_manager