htmlgen-mcp 0.4.1__py3-none-any.whl → 0.4.3__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 htmlgen-mcp might be problematic. Click here for more details.
- htmlgen_mcp/sse_optimizations.py +2 -2
- htmlgen_mcp/web_agent_server.py +33 -4
- {htmlgen_mcp-0.4.1.dist-info → htmlgen_mcp-0.4.3.dist-info}/METADATA +4 -4
- {htmlgen_mcp-0.4.1.dist-info → htmlgen_mcp-0.4.3.dist-info}/RECORD +7 -7
- {htmlgen_mcp-0.4.1.dist-info → htmlgen_mcp-0.4.3.dist-info}/WHEEL +0 -0
- {htmlgen_mcp-0.4.1.dist-info → htmlgen_mcp-0.4.3.dist-info}/entry_points.txt +0 -0
- {htmlgen_mcp-0.4.1.dist-info → htmlgen_mcp-0.4.3.dist-info}/top_level.txt +0 -0
htmlgen_mcp/sse_optimizations.py
CHANGED
|
@@ -154,7 +154,7 @@ async def get_progress_optimized(
|
|
|
154
154
|
"job_id", "status", "plan_id", "progress_log",
|
|
155
155
|
"started_at", "updated_at", "completed_at",
|
|
156
156
|
"project_directory", "model", "upload_status",
|
|
157
|
-
"
|
|
157
|
+
"upload_url", "upload_completed_at", "uploaded_directory"
|
|
158
158
|
]
|
|
159
159
|
job_snapshot = {
|
|
160
160
|
k: job_info.get(k) for k in snapshot_keys
|
|
@@ -192,4 +192,4 @@ async def get_progress_optimized(
|
|
|
192
192
|
return {
|
|
193
193
|
"status": "error",
|
|
194
194
|
"message": str(exc)
|
|
195
|
-
}
|
|
195
|
+
}
|
htmlgen_mcp/web_agent_server.py
CHANGED
|
@@ -713,6 +713,32 @@ async def _handle_auto_upload(
|
|
|
713
713
|
if not project_dir:
|
|
714
714
|
return
|
|
715
715
|
|
|
716
|
+
upload_target = project_dir
|
|
717
|
+
|
|
718
|
+
created_files = (job_info.get("result") or {}).get("created_files") or []
|
|
719
|
+
for file_path in created_files:
|
|
720
|
+
if not file_path:
|
|
721
|
+
continue
|
|
722
|
+
try:
|
|
723
|
+
candidate_path = file_path
|
|
724
|
+
if not os.path.isabs(candidate_path):
|
|
725
|
+
candidate_path = os.path.join(project_dir, candidate_path)
|
|
726
|
+
if not os.path.exists(candidate_path):
|
|
727
|
+
continue
|
|
728
|
+
candidate_dir = (
|
|
729
|
+
candidate_path if os.path.isdir(candidate_path) else os.path.dirname(candidate_path)
|
|
730
|
+
)
|
|
731
|
+
rel_path = os.path.relpath(candidate_dir, project_dir)
|
|
732
|
+
if rel_path == "." or rel_path.startswith(".."):
|
|
733
|
+
continue
|
|
734
|
+
top_level = rel_path.split(os.sep, 1)[0]
|
|
735
|
+
top_level_dir = os.path.join(project_dir, top_level)
|
|
736
|
+
if os.path.isdir(top_level_dir):
|
|
737
|
+
upload_target = top_level_dir
|
|
738
|
+
break
|
|
739
|
+
except Exception:
|
|
740
|
+
continue
|
|
741
|
+
|
|
716
742
|
job_info["upload_status"] = "uploading"
|
|
717
743
|
_persist_job_state(job_id)
|
|
718
744
|
|
|
@@ -721,22 +747,24 @@ async def _handle_auto_upload(
|
|
|
721
747
|
if not callable(upload_func):
|
|
722
748
|
raise RuntimeError("upload_project_to_mcp_server 缺少可调用实现")
|
|
723
749
|
|
|
724
|
-
upload_result = await upload_func(folder_path=
|
|
750
|
+
upload_result = await upload_func(folder_path=upload_target)
|
|
725
751
|
|
|
726
752
|
job_info["upload_result"] = upload_result
|
|
727
753
|
job_info["upload_status"] = upload_result.get("status")
|
|
728
754
|
|
|
729
755
|
if upload_result.get("status") == "success":
|
|
730
|
-
job_info["
|
|
756
|
+
job_info["upload_url"] = upload_result.get("url")
|
|
731
757
|
job_info["upload_completed_at"] = time.time()
|
|
758
|
+
job_info["uploaded_directory"] = upload_target
|
|
732
759
|
|
|
733
760
|
if progress_log_path:
|
|
734
761
|
upload_event = {
|
|
735
762
|
"timestamp": time.time(),
|
|
736
763
|
"type": "upload_completed",
|
|
737
764
|
"status": "success",
|
|
738
|
-
"
|
|
765
|
+
"upload_url": upload_result.get("url"),
|
|
739
766
|
"message": upload_result.get("message"),
|
|
767
|
+
"uploaded_directory": upload_target,
|
|
740
768
|
}
|
|
741
769
|
try:
|
|
742
770
|
with open(progress_log_path, "a", encoding="utf-8") as log_file:
|
|
@@ -1096,8 +1124,9 @@ async def get_progress(
|
|
|
1096
1124
|
"project_directory",
|
|
1097
1125
|
"model",
|
|
1098
1126
|
"upload_status",
|
|
1099
|
-
"
|
|
1127
|
+
"upload_url",
|
|
1100
1128
|
"upload_completed_at",
|
|
1129
|
+
"uploaded_directory",
|
|
1101
1130
|
]
|
|
1102
1131
|
job_snapshot = {
|
|
1103
1132
|
k: job_info.get(k) for k in snapshot_keys if job_info.get(k) is not None
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: htmlgen-mcp
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.3
|
|
4
4
|
Summary: AI-powered HTML website generator with auto-upload functionality via Model Context Protocol
|
|
5
5
|
Author-email: HTML Generator Team <contact@htmlgen-mcp.com>
|
|
6
6
|
License: MIT
|
|
@@ -97,7 +97,7 @@ print(f"状态: {progress['job']['status']}")
|
|
|
97
97
|
|
|
98
98
|
# 如果启用了自动上传
|
|
99
99
|
if progress['job'].get('upload_status') == 'success':
|
|
100
|
-
print(f"网站地址: {progress['job']['
|
|
100
|
+
print(f"网站地址: {progress['job']['upload_url']}")
|
|
101
101
|
```
|
|
102
102
|
|
|
103
103
|
## 🛠️ MCP 工具
|
|
@@ -146,7 +146,7 @@ while True:
|
|
|
146
146
|
if status == 'completed':
|
|
147
147
|
upload_status = progress['job'].get('upload_status')
|
|
148
148
|
if upload_status == 'success':
|
|
149
|
-
print(f"🎉 网站已上线: {progress['job']['
|
|
149
|
+
print(f"🎉 网站已上线: {progress['job']['upload_url']}")
|
|
150
150
|
break
|
|
151
151
|
elif upload_status == 'failed':
|
|
152
152
|
print("❌ 上传失败")
|
|
@@ -159,7 +159,7 @@ while True:
|
|
|
159
159
|
|
|
160
160
|
- **构建阶段**: `running` → `completed`
|
|
161
161
|
- **上传阶段**: `uploading` → `success`/`failed`
|
|
162
|
-
- **最终结果**: `
|
|
162
|
+
- **最终结果**: `upload_url` (成功时)
|
|
163
163
|
|
|
164
164
|
## 🤝 贡献
|
|
165
165
|
|
|
@@ -7,8 +7,8 @@ htmlgen_mcp/nas_storage.py,sha256=HpgROy53vrYiBiXsUJO56GCoYZdyYR15iVvOBqyp7Yc,11
|
|
|
7
7
|
htmlgen_mcp/progress_tools.py,sha256=SOScPSr3hEv4rvGzqvwUcomEFiPhhNxJ7CbWURlFpBs,5067
|
|
8
8
|
htmlgen_mcp/progress_tracker.py,sha256=2TVduWNJJH08EQ7Vf9EpiwPjtp61JX7muSCdbGHZAfM,12210
|
|
9
9
|
htmlgen_mcp/prompt_enhancer.py,sha256=8UIxt45vSNarS5uqfxC5thOfnGY7luDs2YjHZRx1GAM,7976
|
|
10
|
-
htmlgen_mcp/sse_optimizations.py,sha256=
|
|
11
|
-
htmlgen_mcp/web_agent_server.py,sha256=
|
|
10
|
+
htmlgen_mcp/sse_optimizations.py,sha256=b7fTZIpRIUsOgZd6iXI6reLtSqZGtzH2IUnOOCEcNI8,6954
|
|
11
|
+
htmlgen_mcp/web_agent_server.py,sha256=Cq6QxYVSTdngLrbJy4kO1GfuwKX5xo_J1ERuvjaqD50,52077
|
|
12
12
|
htmlgen_mcp/agents/__init__.py,sha256=Xydfjzw9s9O6I5Ixx6EmsTdXu26136NDPUAqt9B1hzE,121
|
|
13
13
|
htmlgen_mcp/agents/ai_content_generator.py,sha256=tWGC9cY6Wp7MB1P9J7uCv8LUdiS02rgS6vxaNHD7KQk,10311
|
|
14
14
|
htmlgen_mcp/agents/quick_generator.py,sha256=2wV4PCRugV0suTedLDV91_etHy_2Fiw4J0MraT7MQjw,34201
|
|
@@ -31,8 +31,8 @@ htmlgen_mcp/agents/web_tools/simple_css.py,sha256=kj9X3sHHhj1wGwBVL20j6w2qIHXRdx
|
|
|
31
31
|
htmlgen_mcp/agents/web_tools/simple_js.py,sha256=xMiuF-u-h_IIkUONZIa4Xf8vKB5mcXxwQf5b_BIcpoE,12174
|
|
32
32
|
htmlgen_mcp/agents/web_tools/simple_templates.py,sha256=-Rs-SsWpGZT2hiwa3jZNVDHOMZOo1vV2pWbmBdR30os,6471
|
|
33
33
|
htmlgen_mcp/agents/web_tools/validation.py,sha256=bNA6aWXrCSi7sPqQw5bBR3XF69gRf85D5jSMi996CtI,2069
|
|
34
|
-
htmlgen_mcp-0.4.
|
|
35
|
-
htmlgen_mcp-0.4.
|
|
36
|
-
htmlgen_mcp-0.4.
|
|
37
|
-
htmlgen_mcp-0.4.
|
|
38
|
-
htmlgen_mcp-0.4.
|
|
34
|
+
htmlgen_mcp-0.4.3.dist-info/METADATA,sha256=wulYUcHcUf41PY0XkZEl0yoR65gjx6haSwdSxs45CY8,5158
|
|
35
|
+
htmlgen_mcp-0.4.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
36
|
+
htmlgen_mcp-0.4.3.dist-info/entry_points.txt,sha256=w7ufTQJobIxT3FYI24yKsCEwEQvBOWhNjckUd9Amu_k,66
|
|
37
|
+
htmlgen_mcp-0.4.3.dist-info/top_level.txt,sha256=KnglzX4ekV8SQkHTsJg2_nTBXz2TxaYLdvoMMovHLNk,12
|
|
38
|
+
htmlgen_mcp-0.4.3.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|