@agentunion/kite 1.4.0 → 1.5.0
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.
- package/CHANGELOG.md +102 -0
- package/cli.js +44 -5
- package/core/dependency_checker.py +250 -0
- package/core/env_checker.py +490 -0
- package/dependencies_lock.json +128 -0
- package/extensions/agents/assistant/server.py +33 -17
- package/extensions/channels/acp_channel/server.py +33 -17
- package/extensions/services/backup/entry.py +23 -16
- package/extensions/services/evol/auth_manager.py +443 -0
- package/extensions/services/evol/config.yaml +149 -0
- package/extensions/services/evol/config_loader.py +117 -0
- package/extensions/services/evol/entry.py +406 -0
- package/extensions/services/evol/evol_api.py +173 -0
- package/extensions/services/evol/evol_config.json5 +29 -0
- package/extensions/services/evol/migrate_tokens.py +122 -0
- package/extensions/services/evol/module.md +32 -0
- package/extensions/services/evol/pairing.py +250 -0
- package/extensions/services/evol/pairing_codes.jsonl +1 -0
- package/extensions/services/evol/relay.py +682 -0
- package/extensions/services/evol/relay_config.json5 +67 -0
- package/extensions/services/evol/routes/__init__.py +1 -0
- package/extensions/services/evol/routes/routes_management_ws.py +127 -0
- package/extensions/services/evol/routes/routes_rpc.py +89 -0
- package/extensions/services/evol/routes/routes_test.py +61 -0
- package/extensions/services/evol/server.py +875 -0
- package/extensions/services/evol/static/css/style.css +1200 -0
- package/extensions/services/evol/static/index.html +781 -0
- package/extensions/services/evol/static/index_evol.html +14 -0
- package/extensions/services/evol/static/js/app.js +6304 -0
- package/extensions/services/evol/static/js/auth.js +326 -0
- package/extensions/services/evol/static/js/dialog.js +285 -0
- package/extensions/services/evol/static/js/evol-app-fixed.js +50 -0
- package/extensions/services/evol/static/js/evol-app.js +1949 -0
- package/extensions/services/evol/static/js/evol-app.js.bak +1800 -0
- package/extensions/services/evol/static/js/kernel-client-example.js +228 -0
- package/extensions/services/evol/static/js/kernel-client.js +396 -0
- package/extensions/services/evol/static/js/main.js +141 -0
- package/extensions/services/evol/static/js/registry-tests.js +585 -0
- package/extensions/services/evol/static/js/stats.js +217 -0
- package/extensions/services/evol/static/js/token-manager.js +175 -0
- package/extensions/services/evol/static/pairing.html +248 -0
- package/extensions/services/evol/static/test_registry.html +262 -0
- package/extensions/services/evol/static/test_relay.html +462 -0
- package/extensions/services/evol/stats_manager.py +240 -0
- package/extensions/services/model_service/entry.py +23 -1
- package/extensions/services/proxy/.claude/settings.local.json +13 -0
- package/extensions/services/proxy/CHANGELOG_20260308.md +258 -0
- package/extensions/services/proxy/_fix_prints.py +133 -0
- package/extensions/services/proxy/_fix_prints2.py +87 -0
- package/extensions/services/proxy/agentcp/LICENCE +178 -0
- package/extensions/services/proxy/agentcp/README copy.md +85 -0
- package/extensions/services/proxy/agentcp/README.md +260 -0
- package/extensions/services/proxy/agentcp/__init__.py +16 -0
- package/extensions/services/proxy/agentcp/agent.py +4 -0
- package/extensions/services/proxy/agentcp/agentcp.py +2494 -0
- package/extensions/services/proxy/agentcp/agentprofile.json +89 -0
- package/extensions/services/proxy/agentcp/ap/__init__.py +16 -0
- package/extensions/services/proxy/agentcp/ap/ap_client.py +316 -0
- package/extensions/services/proxy/agentcp/assets/images/wechat_qr.png +0 -0
- package/extensions/services/proxy/agentcp/backup/metrics.json +31 -0
- package/extensions/services/proxy/agentcp/base/__init__.py +20 -0
- package/extensions/services/proxy/agentcp/base/auth_client.py +257 -0
- package/extensions/services/proxy/agentcp/base/client.py +112 -0
- package/extensions/services/proxy/agentcp/base/env.py +34 -0
- package/extensions/services/proxy/agentcp/base/html_util.py +336 -0
- package/extensions/services/proxy/agentcp/base/log.py +98 -0
- package/extensions/services/proxy/agentcp/ca/__init__.py +17 -0
- package/extensions/services/proxy/agentcp/ca/ca_client.py +414 -0
- package/extensions/services/proxy/agentcp/ca/ca_root.py +74 -0
- package/extensions/services/proxy/agentcp/context/__init__.py +20 -0
- package/extensions/services/proxy/agentcp/context/context.py +73 -0
- package/extensions/services/proxy/agentcp/context/exceptions.py +114 -0
- package/extensions/services/proxy/agentcp/create_profile.py +125 -0
- package/extensions/services/proxy/agentcp/create_profile_weather.py +125 -0
- package/extensions/services/proxy/agentcp/db/__init__.py +15 -0
- package/extensions/services/proxy/agentcp/db/db_mananger.py +550 -0
- package/extensions/services/proxy/agentcp/docs/UDP_HEARTBEAT_FIX_REPORT.md +265 -0
- package/extensions/services/proxy/agentcp/docs/heartbeat_issue_analysis.md +291 -0
- package/extensions/services/proxy/agentcp/file/__init__.py +16 -0
- package/extensions/services/proxy/agentcp/file/file_client.py +141 -0
- package/extensions/services/proxy/agentcp/file/wss_binary_message.py +137 -0
- package/extensions/services/proxy/agentcp/hcp.py +299 -0
- package/extensions/services/proxy/agentcp/heartbeat/__init__.py +16 -0
- package/extensions/services/proxy/agentcp/heartbeat/heartbeat_client.py +360 -0
- package/extensions/services/proxy/agentcp/improved_scheduler.py +498 -0
- package/extensions/services/proxy/agentcp/llm_agent_utils.py +249 -0
- package/extensions/services/proxy/agentcp/llm_server.py +172 -0
- package/extensions/services/proxy/agentcp/mermaid.py +210 -0
- package/extensions/services/proxy/agentcp/message.py +149 -0
- package/extensions/services/proxy/agentcp/metrics.py +256 -0
- package/extensions/services/proxy/agentcp/monitoring/__init__.py +20 -0
- package/extensions/services/proxy/agentcp/monitoring/global_monitor.py +27 -0
- package/extensions/services/proxy/agentcp/monitoring/metrics_store.py +325 -0
- package/extensions/services/proxy/agentcp/monitoring/monitoring_service.py +269 -0
- package/extensions/services/proxy/agentcp/monitoring/sliding_window.py +222 -0
- package/extensions/services/proxy/agentcp/monitoring/standalone_reader.py +224 -0
- package/extensions/services/proxy/agentcp/msg/__init__.py +21 -0
- package/extensions/services/proxy/agentcp/msg/connection_manager.py +456 -0
- package/extensions/services/proxy/agentcp/msg/message_client.py +2058 -0
- package/extensions/services/proxy/agentcp/msg/message_serialize.py +263 -0
- package/extensions/services/proxy/agentcp/msg/open_ai_message.py +88 -0
- package/extensions/services/proxy/agentcp/msg/session_manager.py +1062 -0
- package/extensions/services/proxy/agentcp/msg/stream_client.py +267 -0
- package/extensions/services/proxy/agentcp/msg/websocket_file_receiver.py +89 -0
- package/extensions/services/proxy/agentcp/msg/ws_logger.py +685 -0
- package/extensions/services/proxy/agentcp/msg/wss_binary_message.py +137 -0
- package/extensions/services/proxy/agentcp/requirements.txt +7 -0
- package/extensions/services/proxy/agentcp/samples/agent_graph/README.md +37 -0
- package/extensions/services/proxy/agentcp/samples/agent_graph/agentprofile.json +89 -0
- package/extensions/services/proxy/agentcp/samples/agent_graph/create_profile.py +138 -0
- package/extensions/services/proxy/agentcp/samples/agent_graph/main.py +164 -0
- package/extensions/services/proxy/agentcp/samples/agent_use/create_profile.py +123 -0
- package/extensions/services/proxy/agentcp/samples/agent_use/llm/create_profile.py +129 -0
- package/extensions/services/proxy/agentcp/samples/agent_use/llm/env.json +5 -0
- package/extensions/services/proxy/agentcp/samples/agent_use/llm/main.py +146 -0
- package/extensions/services/proxy/agentcp/samples/agent_use/main.py +123 -0
- package/extensions/services/proxy/agentcp/samples/agent_use/readme.md +379 -0
- package/extensions/services/proxy/agentcp/samples/agent_use/search/create_profile.py +129 -0
- package/extensions/services/proxy/agentcp/samples/agent_use/search/main.py +28 -0
- package/extensions/services/proxy/agentcp/samples/agent_use/tool/create_profile.py +129 -0
- package/extensions/services/proxy/agentcp/samples/agent_use/tool/main.py +20 -0
- package/extensions/services/proxy/agentcp/samples/ali_amap/README.md +97 -0
- package/extensions/services/proxy/agentcp/samples/ali_amap/amap_agent.py +88 -0
- package/extensions/services/proxy/agentcp/samples/ali_amap/create_profile.py +125 -0
- package/extensions/services/proxy/agentcp/samples/compute_agent/agent/powershell.py +228 -0
- package/extensions/services/proxy/agentcp/samples/compute_agent/agent/software.py +63 -0
- package/extensions/services/proxy/agentcp/samples/compute_agent/agent/tools.py +36 -0
- package/extensions/services/proxy/agentcp/samples/compute_agent/browser_user.py +41 -0
- package/extensions/services/proxy/agentcp/samples/deepseek/README.md +79 -0
- package/extensions/services/proxy/agentcp/samples/deepseek/create_profile.py +126 -0
- package/extensions/services/proxy/agentcp/samples/deepseek/deepseek.py +42 -0
- package/extensions/services/proxy/agentcp/samples/dify_chat/README.md +78 -0
- package/extensions/services/proxy/agentcp/samples/dify_chat/create_profile.py +126 -0
- package/extensions/services/proxy/agentcp/samples/dify_chat/dify_chat.py +47 -0
- package/extensions/services/proxy/agentcp/samples/dify_workflow/README.md +78 -0
- package/extensions/services/proxy/agentcp/samples/dify_workflow/create_profile.py +126 -0
- package/extensions/services/proxy/agentcp/samples/dify_workflow/dify_workflow.py +46 -0
- package/extensions/services/proxy/agentcp/samples/executor/README.md +44 -0
- package/extensions/services/proxy/agentcp/samples/executor/agentprofile.json +89 -0
- package/extensions/services/proxy/agentcp/samples/executor/create_profile.py +139 -0
- package/extensions/services/proxy/agentcp/samples/executor/main.py +160 -0
- package/extensions/services/proxy/agentcp/samples/filereader/README.md +45 -0
- package/extensions/services/proxy/agentcp/samples/filereader/agentprofile.json +90 -0
- package/extensions/services/proxy/agentcp/samples/filereader/create_profile.py +137 -0
- package/extensions/services/proxy/agentcp/samples/filereader/main.py +253 -0
- package/extensions/services/proxy/agentcp/samples/filewriter/README.md +38 -0
- package/extensions/services/proxy/agentcp/samples/filewriter/agentprofile.json +91 -0
- package/extensions/services/proxy/agentcp/samples/filewriter/create_profile.py +138 -0
- package/extensions/services/proxy/agentcp/samples/filewriter/main.py +289 -0
- package/extensions/services/proxy/agentcp/samples/hcp/README.md +85 -0
- package/extensions/services/proxy/agentcp/samples/hcp/acp_weather_agent.zip +0 -0
- package/extensions/services/proxy/agentcp/samples/hcp/create_profile.py +125 -0
- package/extensions/services/proxy/agentcp/samples/hcp/hcp.py +237 -0
- package/extensions/services/proxy/agentcp/samples/helloworld/README.md +68 -0
- package/extensions/services/proxy/agentcp/samples/helloworld/hello_world.py +40 -0
- package/extensions/services/proxy/agentcp/samples/llm_agent/MEADME.md +117 -0
- package/extensions/services/proxy/agentcp/samples/llm_agent/create_profile.py +125 -0
- package/extensions/services/proxy/agentcp/samples/llm_agent/qwen_agent.py +136 -0
- package/extensions/services/proxy/agentcp/samples/local_llm_agent/README.md +90 -0
- package/extensions/services/proxy/agentcp/samples/local_llm_agent/create_profile.py +125 -0
- package/extensions/services/proxy/agentcp/samples/local_llm_agent/main.py +49 -0
- package/extensions/services/proxy/agentcp/samples/query_llm_from_agent/README.md +55 -0
- package/extensions/services/proxy/agentcp/samples/query_llm_from_agent/create_profile.py +125 -0
- package/extensions/services/proxy/agentcp/samples/query_llm_from_agent/main.py +23 -0
- package/extensions/services/proxy/agentcp/samples/query_weather_api_agent/README.md +103 -0
- package/extensions/services/proxy/agentcp/samples/query_weather_api_agent/create_profile.py +125 -0
- package/extensions/services/proxy/agentcp/samples/query_weather_api_agent/main.py +69 -0
- package/extensions/services/proxy/agentcp/samples/query_weather_from_agent/README.md +58 -0
- package/extensions/services/proxy/agentcp/samples/query_weather_from_agent/create_profile.py +125 -0
- package/extensions/services/proxy/agentcp/samples/query_weather_from_agent/main.py +25 -0
- package/extensions/services/proxy/agentcp/samples/qwen3/README.md +71 -0
- package/extensions/services/proxy/agentcp/samples/qwen3/create_profile.py +126 -0
- package/extensions/services/proxy/agentcp/samples/qwen3/qwen3.py +37 -0
- package/extensions/services/proxy/agentcp/samples/qwen3_tools/README.md +133 -0
- package/extensions/services/proxy/agentcp/samples/qwen3_tools/create_profile.py +126 -0
- package/extensions/services/proxy/agentcp/samples/qwen3_tools/qwen3_tools.py +98 -0
- package/extensions/services/proxy/agentcp/samples/search/create_profile_qwen.py +125 -0
- package/extensions/services/proxy/agentcp/samples/search/create_profile_search.py +125 -0
- package/extensions/services/proxy/agentcp/samples/search/qwen_agent.py +136 -0
- package/extensions/services/proxy/agentcp/samples/search/search_agent.py +170 -0
- package/extensions/services/proxy/agentcp/samples/wrapper_agently_to_agent/README.md +89 -0
- package/extensions/services/proxy/agentcp/samples/wrapper_agently_to_agent/create_profile.py +125 -0
- package/extensions/services/proxy/agentcp/samples/wrapper_agently_to_agent/main.py +44 -0
- package/extensions/services/proxy/agentcp/utils/__init__.py +15 -0
- package/extensions/services/proxy/agentcp/utils/file_util.py +117 -0
- package/extensions/services/proxy/agentcp/utils/proxy_bypass.py +99 -0
- package/extensions/services/proxy/agentcp/workflow.py +203 -0
- package/extensions/services/proxy/console_auth.py +109 -0
- package/extensions/services/proxy/evol/__init__.py +1 -0
- package/extensions/services/proxy/evol/config.py +37 -0
- package/extensions/services/proxy/evol/http/__init__.py +1 -0
- package/extensions/services/proxy/evol/http/async_http.py +551 -0
- package/extensions/services/proxy/evol/log.py +28 -0
- package/extensions/services/proxy/evol/presenter/__init__.py +2 -0
- package/extensions/services/proxy/evol/presenter/agentIdPresenter.py +1031 -0
- package/extensions/services/proxy/evol/presenter/apikeyPresenter.py +106 -0
- package/extensions/services/proxy/evol/presenter/configPresenter.py +1281 -0
- package/extensions/services/proxy/evol/presenter/userPresenter.py +477 -0
- package/extensions/services/proxy/evol/server/__init__.py +1 -0
- package/extensions/services/proxy/evol/server/claude_proxy_async.py +3430 -0
- package/extensions/services/proxy/evol/server/openclaw_proxy.py +1861 -0
- package/extensions/services/proxy/evol/server/proxy_config.py +15 -0
- package/extensions/services/proxy/evol/server/proxy_engine.py +501 -0
- package/extensions/services/proxy/evol/version.py +24 -0
- package/extensions/services/proxy/logs/websocket.log +260 -0
- package/extensions/services/proxy/main.py +240 -0
- package/extensions/services/proxy/requirements.txt +13 -0
- package/extensions/services/proxy/server.py +271 -0
- package/extensions/services/watchdog/entry.py +42 -16
- package/extensions/services/watchdog/module.md +1 -0
- package/extensions/services/watchdog/monitor.py +34 -4
- package/extensions/services/web/module.md +1 -1
- package/extensions/services/web/server.py +30 -18
- package/extensions/services/web/static/js/token-manager.js +10 -10
- package/kernel/entry.py +1 -1
- package/kernel/module.md +25 -1
- package/kernel/registry_store.py +2 -26
- package/kernel/rpc_router.py +36 -10
- package/kernel/server.py +106 -17
- package/kite_cli/commands/deps_install.py +67 -0
- package/kite_cli/commands/env_check.py +45 -0
- package/kite_cli/commands/prepare.py +49 -0
- package/kite_cli/commands/venv_setup.py +56 -0
- package/kite_cli/main.py +29 -1
- package/launcher/entry.py +306 -21
- package/launcher/module.md +9 -0
- package/launcher/module_scanner.py +11 -1
- package/main.py +4 -1
- package/package.json +8 -1
- package/python_version.json +4 -0
- package/requirements.txt +38 -0
- package/scripts/env-manager.js +328 -0
- package/scripts/python-env.js +79 -0
- package/scripts/scan_dependencies.py +461 -0
- package/scripts/setup-python-env.js +191 -0
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Copyright 2025 AgentUnion Inc.
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
15
|
+
from requests import get
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def parse_html(json_data):
|
|
19
|
+
html_content1 = """
|
|
20
|
+
<!DOCTYPE html>
|
|
21
|
+
<html lang="zh-CN">
|
|
22
|
+
<head>
|
|
23
|
+
<meta charset="UTF-8">
|
|
24
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
25
|
+
<title>智能体描述页面</title>
|
|
26
|
+
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
|
|
27
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.10.0/font/bootstrap-icons.css">
|
|
28
|
+
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
|
29
|
+
<style>
|
|
30
|
+
:root {
|
|
31
|
+
--primary-color: #3498db;
|
|
32
|
+
--secondary-color: #2ecc71;
|
|
33
|
+
--dark-color: #2c3e50;
|
|
34
|
+
--light-color: #ecf0f1;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
body {
|
|
38
|
+
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
|
|
39
|
+
background-color: #f8f9fa;
|
|
40
|
+
color: #333;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.navbar {
|
|
44
|
+
background: linear-gradient(135deg, var(--primary-color), var(--dark-color));
|
|
45
|
+
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.hero-section {
|
|
49
|
+
background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
|
|
50
|
+
color: white;
|
|
51
|
+
padding: 4rem 0;
|
|
52
|
+
margin-bottom: 2rem;
|
|
53
|
+
border-radius: 0 0 20px 20px;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.card {
|
|
57
|
+
border: none;
|
|
58
|
+
border-radius: 10px;
|
|
59
|
+
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
|
|
60
|
+
transition: transform 0.3s ease;
|
|
61
|
+
margin-bottom: 20px;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.card:hover {
|
|
65
|
+
transform: translateY(-5px);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.card-header {
|
|
69
|
+
background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
|
|
70
|
+
color: white;
|
|
71
|
+
border-radius: 10px 10px 0 0 !important;
|
|
72
|
+
font-weight: bold;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.feature-icon {
|
|
76
|
+
font-size: 2.5rem;
|
|
77
|
+
color: var(--primary-color);
|
|
78
|
+
margin-bottom: 1rem;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.tech-specs {
|
|
82
|
+
background-color: white;
|
|
83
|
+
border-radius: 10px;
|
|
84
|
+
padding: 2rem;
|
|
85
|
+
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.tech-specs h3 {
|
|
89
|
+
color: var(--primary-color);
|
|
90
|
+
margin-bottom: 1.5rem;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.tech-specs table {
|
|
94
|
+
width: 100%;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.tech-specs th {
|
|
98
|
+
background-color: var(--light-color);
|
|
99
|
+
padding: 12px;
|
|
100
|
+
text-align: left;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.tech-specs td {
|
|
104
|
+
padding: 12px;
|
|
105
|
+
border-bottom: 1px solid #eee;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.chart-container {
|
|
109
|
+
background-color: white;
|
|
110
|
+
border-radius: 10px;
|
|
111
|
+
padding: 2rem;
|
|
112
|
+
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
|
|
113
|
+
margin-bottom: 2rem;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
footer {
|
|
117
|
+
background-color: var(--dark-color);
|
|
118
|
+
color: white;
|
|
119
|
+
padding: 2rem 0;
|
|
120
|
+
margin-top: 3rem;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
.badge-custom {
|
|
124
|
+
background-color: var(--secondary-color);
|
|
125
|
+
color: white;
|
|
126
|
+
font-weight: normal;
|
|
127
|
+
padding: 5px 10px;
|
|
128
|
+
border-radius: 20px;
|
|
129
|
+
}
|
|
130
|
+
</style>
|
|
131
|
+
</head>
|
|
132
|
+
"""
|
|
133
|
+
html_content3 = """
|
|
134
|
+
<body>
|
|
135
|
+
<!-- 导航栏 -->
|
|
136
|
+
<nav class="navbar navbar-expand-lg navbar-dark">
|
|
137
|
+
<div class="container">
|
|
138
|
+
<a class="navbar-brand" href="#">
|
|
139
|
+
<i class="bi bi-cloud-sun-fill me-2"></i>
|
|
140
|
+
{name}
|
|
141
|
+
</a>
|
|
142
|
+
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
|
|
143
|
+
<span class="navbar-toggler-icon"></span>
|
|
144
|
+
</button>
|
|
145
|
+
<div class="collapse navbar-collapse" id="navbarNav">
|
|
146
|
+
<ul class="navbar-nav ms-auto">
|
|
147
|
+
<li class="nav-item">
|
|
148
|
+
<a class="nav-link active" href="#overview">概述</a>
|
|
149
|
+
</li>
|
|
150
|
+
<li class="nav-item">
|
|
151
|
+
<a class="nav-link" href="#features">功能</a>
|
|
152
|
+
</li>
|
|
153
|
+
<li class="nav-item">
|
|
154
|
+
<a class="nav-link" href="#tech">技术</a>
|
|
155
|
+
</li>
|
|
156
|
+
</ul>
|
|
157
|
+
</div>
|
|
158
|
+
</div>
|
|
159
|
+
</nav>
|
|
160
|
+
|
|
161
|
+
<!-- 标题区 -->
|
|
162
|
+
<section class="hero-section text-center">
|
|
163
|
+
<div class="container">
|
|
164
|
+
<h1 class="display-4 fw-bold mb-3">{name}</h1>
|
|
165
|
+
<p class="lead mb-4"> {description}</p>
|
|
166
|
+
<span class="badge badge-custom mb-3">版本 1.0.0</span>
|
|
167
|
+
<p class="mb-0">最后更新: {lastUpdated}</p>
|
|
168
|
+
</div>
|
|
169
|
+
</section>
|
|
170
|
+
|
|
171
|
+
<!-- 主要内容区 -->
|
|
172
|
+
<div class="container">
|
|
173
|
+
<!-- 基本信息卡片 -->
|
|
174
|
+
<section id="overview" class="mb-5">
|
|
175
|
+
<div class="row">
|
|
176
|
+
<div class="col-12">
|
|
177
|
+
<div class="card h-100">
|
|
178
|
+
<div class="card-header">
|
|
179
|
+
<h5 class="card-title mb-0"><i class="bi bi-info-circle me-2"></i>系统信息</h5>
|
|
180
|
+
</div>
|
|
181
|
+
<div class="card-body">
|
|
182
|
+
<ul class="list-group list-group-flush">
|
|
183
|
+
<li class="list-group-item d-flex justify-content-between align-items-center">
|
|
184
|
+
<span><i class="bi bi-tag me-2"></i>名称</span>
|
|
185
|
+
<span class="text-muted">{name}</span>
|
|
186
|
+
</li>
|
|
187
|
+
<li class="list-group-item d-flex justify-content-between align-items-center">
|
|
188
|
+
<span><i class="bi bi-card-text me-2"></i>发布者</span>
|
|
189
|
+
<span class="text-muted">{publisherAid}</span>
|
|
190
|
+
</li>
|
|
191
|
+
<li class="list-group-item d-flex justify-content-between align-items-center">
|
|
192
|
+
<span><i class="bi bi-123 me-2"></i>版本</span>
|
|
193
|
+
<span class="text-muted">{version}</span>
|
|
194
|
+
</li>
|
|
195
|
+
<li class="list-group-item d-flex justify-content-between align-items-center">
|
|
196
|
+
<span><i class="bi bi-calendar-check me-2"></i>最后更新</span>
|
|
197
|
+
<span class="text-muted">{lastUpdated}</span>
|
|
198
|
+
</li>
|
|
199
|
+
<li class="list-group-item d-flex justify-content-between align-items-center">
|
|
200
|
+
<span><i class="bi bi-building me-2"></i>认证机构</span>
|
|
201
|
+
<span class="text-muted">{organization}</span>
|
|
202
|
+
</li>
|
|
203
|
+
</ul>
|
|
204
|
+
</div>
|
|
205
|
+
</div>
|
|
206
|
+
</div>
|
|
207
|
+
<div class="col-12 mt-4">
|
|
208
|
+
<div class="card h-100">
|
|
209
|
+
<div class="card-header">
|
|
210
|
+
<h5 class="card-title mb-0"><i class="bi bi-lightning-charge me-2"></i>核心能力</h5>
|
|
211
|
+
</div>
|
|
212
|
+
<div class="card-body">
|
|
213
|
+
<div class="text-center mb-4">
|
|
214
|
+
<i class="bi bi-geo-alt-fill feature-icon"></i>
|
|
215
|
+
<h4>{capabilitiesCore}</h4>
|
|
216
|
+
</div>
|
|
217
|
+
<hr>
|
|
218
|
+
<div class="text-center">
|
|
219
|
+
<i class="bi bi-arrow-repeat feature-icon"></i>
|
|
220
|
+
<h4>异步支持</h4>
|
|
221
|
+
<p class="text-muted">系统支持异步操作,提高响应效率</p>
|
|
222
|
+
</div>
|
|
223
|
+
</div>
|
|
224
|
+
</div>
|
|
225
|
+
</div>
|
|
226
|
+
</div>
|
|
227
|
+
</section>
|
|
228
|
+
|
|
229
|
+
<!-- 功能展示区 -->
|
|
230
|
+
<section id="features" class="mb-5">
|
|
231
|
+
<h2 class="text-center mb-4" style="color: var(--primary-color);"><i class="bi bi-stars me-2"></i>功能特点</h2>
|
|
232
|
+
<div class="row">
|
|
233
|
+
<div class="col-12 mb-4">
|
|
234
|
+
<div class="card h-100">
|
|
235
|
+
<div class="card-body text-center">
|
|
236
|
+
<i class="bi bi-cloud-sun feature-icon"></i>
|
|
237
|
+
<h4>{description}</h4>
|
|
238
|
+
<p class="text-muted">{capabilitiesCore}</p>
|
|
239
|
+
</div>
|
|
240
|
+
</div>
|
|
241
|
+
</div>
|
|
242
|
+
<div class="col-12 mb-4">
|
|
243
|
+
<div class="card h-100">
|
|
244
|
+
<div class="card-body text-center">
|
|
245
|
+
<i class="bi bi-code-slash feature-icon"></i>
|
|
246
|
+
<h4>标准接口</h4>
|
|
247
|
+
<p class="text-muted">采用JSON输入/Markdown输出,标准化接口设计</p>
|
|
248
|
+
</div>
|
|
249
|
+
</div>
|
|
250
|
+
</div>
|
|
251
|
+
<div class="col-12">
|
|
252
|
+
<div class="card h-100">
|
|
253
|
+
<div class="card-body text-center">
|
|
254
|
+
<i class="bi bi-shield-check feature-icon"></i>
|
|
255
|
+
<h4>安全认证</h4>
|
|
256
|
+
<p class="text-muted">通过数字签名认证,确保数据安全可靠</p>
|
|
257
|
+
</div>
|
|
258
|
+
</div>
|
|
259
|
+
</div>
|
|
260
|
+
</div>
|
|
261
|
+
</section>
|
|
262
|
+
|
|
263
|
+
<!-- 技术细节表格 -->
|
|
264
|
+
<section id="tech" class="mb-5">
|
|
265
|
+
<div class="tech-specs">
|
|
266
|
+
<h3 class="text-center"><i class="bi bi-cpu me-2"></i>技术规格</h3>
|
|
267
|
+
<div class="table-responsive">
|
|
268
|
+
<table class="table">
|
|
269
|
+
<thead>
|
|
270
|
+
<tr>
|
|
271
|
+
<th>类别</th>
|
|
272
|
+
<th>项目</th>
|
|
273
|
+
<th>详情</th>
|
|
274
|
+
</tr>
|
|
275
|
+
</thead>
|
|
276
|
+
<tbody>
|
|
277
|
+
<tr>
|
|
278
|
+
<td rowspan="2">输入</td>
|
|
279
|
+
<td>类型</td>
|
|
280
|
+
<td>content</td>
|
|
281
|
+
</tr>
|
|
282
|
+
<tr>
|
|
283
|
+
<td>格式</td>
|
|
284
|
+
<td>JSON</td>
|
|
285
|
+
</tr>
|
|
286
|
+
<tr>
|
|
287
|
+
<td rowspan="2">输出</td>
|
|
288
|
+
<td>类型</td>
|
|
289
|
+
<td>content</td>
|
|
290
|
+
</tr>
|
|
291
|
+
<tr>
|
|
292
|
+
<td>格式</td>
|
|
293
|
+
<td>Markdown</td>
|
|
294
|
+
</tr>
|
|
295
|
+
<tr>
|
|
296
|
+
<td>操作模式</td>
|
|
297
|
+
<td colspan="2">支持异步操作 (support_async: true)</td>
|
|
298
|
+
</tr>
|
|
299
|
+
<tr>
|
|
300
|
+
<td>授权</td>
|
|
301
|
+
<td colspan="2">免费使用 (当前智能体免费使用,无费用)</td>
|
|
302
|
+
</tr>
|
|
303
|
+
<tr>
|
|
304
|
+
<td>认证</td>
|
|
305
|
+
<td colspan="2">{organization}</td>
|
|
306
|
+
</tr>
|
|
307
|
+
</tbody>
|
|
308
|
+
</table>
|
|
309
|
+
</div>
|
|
310
|
+
</div>
|
|
311
|
+
</section>
|
|
312
|
+
</div>
|
|
313
|
+
|
|
314
|
+
<!-- 页脚 -->
|
|
315
|
+
<footer class="text-center">
|
|
316
|
+
<div class="container">
|
|
317
|
+
<p class="mb-2"><i class="bi bi-cloud-sun-fill me-2"></i>{name}</p>
|
|
318
|
+
<p class="mb-0">© 2025 {organization} 版权所有</p>
|
|
319
|
+
</div>
|
|
320
|
+
</footer>
|
|
321
|
+
""".format(
|
|
322
|
+
name=json_data.get("name", "AI Agent"),
|
|
323
|
+
description=json_data.get("description","AI智能体"),
|
|
324
|
+
lastUpdated=json_data.get("lastUpdated","----"),
|
|
325
|
+
version=json_data.get("version","----"),
|
|
326
|
+
publisherAid=json_data.get("publisherInfo",{}).get("publisherAid","未知发布者"),
|
|
327
|
+
organization = json_data.get("publisherInfo",{}).get("organization","未知认证机构"),
|
|
328
|
+
capabilitiesCore = ",".join(json_data.get("capabilities",{}).get("core", [])),
|
|
329
|
+
)
|
|
330
|
+
html_content4="""
|
|
331
|
+
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
|
|
332
|
+
</body>
|
|
333
|
+
</html>
|
|
334
|
+
"""
|
|
335
|
+
return html_content1 + html_content3 +html_content4
|
|
336
|
+
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Copyright 2025 AgentUnion Inc.
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
15
|
+
import logging
|
|
16
|
+
|
|
17
|
+
from agentcp.base.env import Environ
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def get_logger(name=__name__, level=Environ.LOG_LEVEL.get(logging.INFO)) -> logging.Logger:
|
|
21
|
+
"""
|
|
22
|
+
Set up the log for the agentid module.
|
|
23
|
+
"""
|
|
24
|
+
log = logging.getLogger(name)
|
|
25
|
+
log.setLevel(level)
|
|
26
|
+
if not log.handlers:
|
|
27
|
+
console_handler = logging.StreamHandler()
|
|
28
|
+
console_handler.setLevel(level)
|
|
29
|
+
formatter = logging.Formatter(
|
|
30
|
+
"%(asctime)s - %(name)s - %(filename)s:%(lineno)d - %(levelname)s - %(message)s"
|
|
31
|
+
)
|
|
32
|
+
console_handler.setFormatter(formatter)
|
|
33
|
+
log.addHandler(console_handler)
|
|
34
|
+
else:
|
|
35
|
+
for handler in log.handlers:
|
|
36
|
+
try:
|
|
37
|
+
handler.setLevel(level)
|
|
38
|
+
except Exception:
|
|
39
|
+
pass
|
|
40
|
+
return log
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
logger = None
|
|
44
|
+
log_enabled = True
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def _ensure_logger() -> logging.Logger:
|
|
48
|
+
"""Ensure module-level logger is initialized to avoid None dereferences."""
|
|
49
|
+
global logger
|
|
50
|
+
if logger is None:
|
|
51
|
+
try:
|
|
52
|
+
logger = get_logger(name="agentid", level=Environ.LOG_LEVEL.get(logging.INFO))
|
|
53
|
+
except Exception:
|
|
54
|
+
logger = logging.getLogger("agentid")
|
|
55
|
+
return logger
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def set_log_enabled(enabled: bool, level: int):
|
|
59
|
+
global log_enabled, logger
|
|
60
|
+
log_enabled = enabled
|
|
61
|
+
logger = get_logger(name="agentid", level=Environ.LOG_LEVEL.get(level))
|
|
62
|
+
|
|
63
|
+
def log_exception(e):
|
|
64
|
+
global log_enabled
|
|
65
|
+
if log_enabled:
|
|
66
|
+
_ensure_logger().exception(e)
|
|
67
|
+
|
|
68
|
+
def log_info(content:str):
|
|
69
|
+
global log_enabled
|
|
70
|
+
if log_enabled and _ensure_logger().isEnabledFor(logging.INFO):
|
|
71
|
+
_ensure_logger().info(content)
|
|
72
|
+
|
|
73
|
+
def log_error(content:str):
|
|
74
|
+
global log_enabled
|
|
75
|
+
if log_enabled and _ensure_logger().isEnabledFor(logging.ERROR):
|
|
76
|
+
_ensure_logger().error(content)
|
|
77
|
+
|
|
78
|
+
def log_debug(content:str):
|
|
79
|
+
global log_enabled
|
|
80
|
+
if log_enabled and _ensure_logger().isEnabledFor(logging.DEBUG):
|
|
81
|
+
_ensure_logger().debug(content)
|
|
82
|
+
|
|
83
|
+
def log_warning(content:str):
|
|
84
|
+
global log_enabled
|
|
85
|
+
if log_enabled and _ensure_logger().isEnabledFor(logging.WARNING):
|
|
86
|
+
_ensure_logger().warning(content)
|
|
87
|
+
|
|
88
|
+
# 新增关键日志级别
|
|
89
|
+
def log_critical(content:str):
|
|
90
|
+
global log_enabled
|
|
91
|
+
if log_enabled and _ensure_logger().isEnabledFor(logging.CRITICAL):
|
|
92
|
+
_ensure_logger().critical(content)
|
|
93
|
+
|
|
94
|
+
# 新增详细日志级别
|
|
95
|
+
def log_verbose(content:str):
|
|
96
|
+
global log_enabled
|
|
97
|
+
if log_enabled and _ensure_logger().isEnabledFor(logging.DEBUG - 1):
|
|
98
|
+
_ensure_logger().log(logging.DEBUG - 1, content)
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Copyright 2025 AgentUnion Inc.
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
15
|
+
|
|
16
|
+
from . import ca_client
|
|
17
|
+
from . import ca_root
|