openclaw-agent-dashboard 1.0.21 → 1.0.23

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.
Files changed (135) hide show
  1. package/README.md +55 -321
  2. package/frontend-dist/assets/index-B7XqKAxm.css +1 -0
  3. package/frontend-dist/assets/index-CxJaSYyo.js +24 -0
  4. package/{frontend → frontend-dist}/index.html +2 -1
  5. package/{plugin/openclaw.plugin.json → openclaw.plugin.json} +2 -2
  6. package/package.json +21 -13
  7. package/.github/workflows/release.yml +0 -56
  8. package/VERSION_DISPLAY_delivery.md +0 -242
  9. package/VERSION_DISPLAY_implementation_summary.md +0 -315
  10. package/design_manifest.md +0 -100
  11. package/docs/CHANGELOG_AGENT_MODIFICATIONS.md +0 -132
  12. package/docs/MAINTAINER_RELEASE_WORKFLOW.md +0 -211
  13. package/docs/Openclaw-Agent-Dashboard/345/217/221/345/270/203/344/270/216/346/233/264/346/226/260.md +0 -147
  14. package/docs/RELEASE-LATEST.md +0 -189
  15. package/docs/RELEASE-MODEL-CONFIG.md +0 -95
  16. package/docs/WINDOWS_INSTALL_TROUBLESHOOTING.md +0 -171
  17. package/docs/design/.gitkeep +0 -0
  18. package/docs/design/VERSION_DISPLAY_design.md +0 -1236
  19. package/docs/release-guide.md +0 -259
  20. package/docs/release-operations-manual.md +0 -167
  21. package/docs/reviews/.gitkeep +0 -0
  22. package/docs/reviews/approval_history.json +0 -14
  23. package/docs/reviews/cr_VERSION_DISPLAY.md +0 -397
  24. package/docs/reviews/traceability_manifest.json +0 -279
  25. package/docs/specs/VERSION_DISPLAY_spec.md +0 -371
  26. package/docs/specs/tr3-install-system.md +0 -580
  27. package/docs/windows-collaboration-model-paths-troubleshooting.md +0 -0
  28. package/frontend/package-lock.json +0 -1240
  29. package/frontend/package.json +0 -19
  30. package/frontend/src/App.vue +0 -355
  31. package/frontend/src/components/AgentCard.vue +0 -796
  32. package/frontend/src/components/AgentConfigPanel.vue +0 -539
  33. package/frontend/src/components/AgentDetailPanel.vue +0 -738
  34. package/frontend/src/components/ErrorAnalysisView.vue +0 -546
  35. package/frontend/src/components/ErrorCenterPanel.vue +0 -844
  36. package/frontend/src/components/PerformanceMonitor.vue +0 -515
  37. package/frontend/src/components/SettingsPanel.vue +0 -236
  38. package/frontend/src/components/TokenAnalysisPanel.vue +0 -683
  39. package/frontend/src/components/chain/ChainEdge.vue +0 -85
  40. package/frontend/src/components/chain/ChainNode.vue +0 -166
  41. package/frontend/src/components/chain/TaskChainView.vue +0 -425
  42. package/frontend/src/components/chain/index.ts +0 -3
  43. package/frontend/src/components/chain/types.ts +0 -70
  44. package/frontend/src/components/collaboration/CollaborationFlowSection.vue +0 -1032
  45. package/frontend/src/components/collaboration/CollaborationFlowWrapper.vue +0 -113
  46. package/frontend/src/components/common/VersionDisplay.vue +0 -187
  47. package/frontend/src/components/performance/PerformancePanel.vue +0 -119
  48. package/frontend/src/components/performance/PerformanceSection.vue +0 -1137
  49. package/frontend/src/components/tasks/TaskStatusSection.vue +0 -973
  50. package/frontend/src/components/timeline/TimelineConnector.vue +0 -31
  51. package/frontend/src/components/timeline/TimelineRound.vue +0 -135
  52. package/frontend/src/components/timeline/TimelineStep.vue +0 -691
  53. package/frontend/src/components/timeline/TimelineToolLink.vue +0 -109
  54. package/frontend/src/components/timeline/TimelineView.vue +0 -540
  55. package/frontend/src/components/timeline/index.ts +0 -5
  56. package/frontend/src/components/timeline/types.ts +0 -120
  57. package/frontend/src/composables/index.ts +0 -7
  58. package/frontend/src/composables/useDebounce.ts +0 -48
  59. package/frontend/src/composables/useRealtime.ts +0 -52
  60. package/frontend/src/composables/useState.ts +0 -52
  61. package/frontend/src/composables/useThrottle.ts +0 -46
  62. package/frontend/src/composables/useVirtualScroll.ts +0 -106
  63. package/frontend/src/main.ts +0 -4
  64. package/frontend/src/managers/EventDispatcher.ts +0 -127
  65. package/frontend/src/managers/RealtimeDataManager.ts +0 -302
  66. package/frontend/src/managers/StateManager.ts +0 -128
  67. package/frontend/src/managers/index.ts +0 -5
  68. package/frontend/src/types/collaboration.ts +0 -135
  69. package/frontend/src/types/index.ts +0 -20
  70. package/frontend/src/types/performance.ts +0 -105
  71. package/frontend/src/types/task.ts +0 -38
  72. package/frontend/vite.config.ts +0 -18
  73. package/legacy_code_anatomy.md +0 -518
  74. package/plugin/README.md +0 -99
  75. package/plugin/config.json.example +0 -1
  76. package/plugin/package.json +0 -26
  77. package/scripts/build-plugin.js +0 -81
  78. package/scripts/bundle.sh +0 -62
  79. package/scripts/install-plugin.sh +0 -162
  80. package/scripts/install-python-deps.sh +0 -226
  81. package/scripts/install.js +0 -684
  82. package/scripts/install.sh +0 -367
  83. package/scripts/lib/common.sh +0 -137
  84. package/scripts/release-pack.sh +0 -110
  85. package/scripts/start.js +0 -50
  86. package/scripts/test_available_models.py +0 -284
  87. package/scripts/test_version_display.sh +0 -128
  88. package/scripts/test_websocket_ping.py +0 -44
  89. package/session_registry.json +0 -58
  90. package/tests/.gitkeep +0 -0
  91. package/tests/qa_regression_report.md +0 -359
  92. package/tests/qa_version_display_report.md +0 -598
  93. /package/{src/backend → dashboard}/agents.py +0 -0
  94. /package/{src/backend → dashboard}/api/__init__.py +0 -0
  95. /package/{src/backend → dashboard}/api/agent_config_api.py +0 -0
  96. /package/{src/backend → dashboard}/api/agents.py +0 -0
  97. /package/{src/backend → dashboard}/api/agents_config.py +0 -0
  98. /package/{src/backend → dashboard}/api/chains.py +0 -0
  99. /package/{src/backend → dashboard}/api/collaboration.py +0 -0
  100. /package/{src/backend → dashboard}/api/debug_paths.py +0 -0
  101. /package/{src/backend → dashboard}/api/error_analysis.py +0 -0
  102. /package/{src/backend → dashboard}/api/errors.py +0 -0
  103. /package/{src/backend → dashboard}/api/performance.py +0 -0
  104. /package/{src/backend → dashboard}/api/subagents.py +0 -0
  105. /package/{src/backend → dashboard}/api/timeline.py +0 -0
  106. /package/{src/backend → dashboard}/api/version.py +0 -0
  107. /package/{src/backend → dashboard}/api/websocket.py +0 -0
  108. /package/{src/backend → dashboard}/collaboration.py +0 -0
  109. /package/{src/backend → dashboard}/data/__init__.py +0 -0
  110. /package/{src/backend → dashboard}/data/agent_config_manager.py +0 -0
  111. /package/{src/backend → dashboard}/data/chain_reader.py +0 -0
  112. /package/{src/backend → dashboard}/data/config_reader.py +0 -0
  113. /package/{src/backend → dashboard}/data/error_analyzer.py +0 -0
  114. /package/{src/backend → dashboard}/data/session_reader.py +0 -0
  115. /package/{src/backend → dashboard}/data/subagent_reader.py +0 -0
  116. /package/{src/backend → dashboard}/data/task_history.py +0 -0
  117. /package/{src/backend → dashboard}/data/timeline_reader.py +0 -0
  118. /package/{src/backend → dashboard}/data/version_info_reader.py +0 -0
  119. /package/{src/backend → dashboard}/errors.py +0 -0
  120. /package/{src/backend → dashboard}/main.py +0 -0
  121. /package/{src/backend → dashboard}/mechanism_reader.py +0 -0
  122. /package/{src/backend → dashboard}/mechanisms.py +0 -0
  123. /package/{src/backend → dashboard}/performance.py +0 -0
  124. /package/{src/backend → dashboard}/requirements.txt +0 -0
  125. /package/{src/backend → dashboard}/session_reader.py +0 -0
  126. /package/{src/backend → dashboard}/status/__init__.py +0 -0
  127. /package/{src/backend → dashboard}/status/change_tracker.py +0 -0
  128. /package/{src/backend → dashboard}/status/error_detector.py +0 -0
  129. /package/{src/backend → dashboard}/status/status_cache.py +0 -0
  130. /package/{src/backend → dashboard}/status/status_calculator.py +0 -0
  131. /package/{src/backend → dashboard}/status_calculator.py +0 -0
  132. /package/{src/backend → dashboard}/subagent_reader.py +0 -0
  133. /package/{src/backend → dashboard}/watchers/__init__.py +0 -0
  134. /package/{src/backend → dashboard}/watchers/file_watcher.py +0 -0
  135. /package/{plugin/index.js → index.js} +0 -0
@@ -1,113 +0,0 @@
1
- <template>
2
- <div class="collaboration-box">
3
- <div class="collaboration-box-header">
4
- <h2>协作流程</h2>
5
- <span class="collaboration-hint">展示主 Agent 与子 Agents 的协作关系</span>
6
- </div>
7
- <div class="collaboration-box-body">
8
- <CollaborationFlowSection
9
- v-show="!capturedError"
10
- :main-agent="mainAgent"
11
- :sub-agents="subAgents"
12
- :main-agent-id="mainAgentId"
13
- @agent-click="$emit('agent-click', $event)"
14
- />
15
- <div v-show="capturedError" class="collaboration-error-fallback">
16
- <p class="fallback-title">协作流程加载失败</p>
17
- <p class="fallback-reason">{{ capturedError }}</p>
18
- <button @click="capturedError = null">重试</button>
19
- </div>
20
- </div>
21
- </div>
22
- </template>
23
-
24
- <script setup lang="ts">
25
- import { ref, onErrorCaptured } from 'vue'
26
- import CollaborationFlowSection from './CollaborationFlowSection.vue'
27
-
28
- defineProps<{
29
- mainAgent?: unknown
30
- subAgents?: unknown[]
31
- mainAgentId?: string
32
- }>()
33
-
34
- defineEmits<{
35
- 'agent-click': [node: unknown]
36
- }>()
37
-
38
- const capturedError = ref<string | null>(null)
39
-
40
- onErrorCaptured((err) => {
41
- capturedError.value = err instanceof Error ? err.message : String(err)
42
- return false
43
- })
44
- </script>
45
-
46
- <style scoped>
47
- .collaboration-box {
48
- background: white;
49
- border: 1px solid #e2e8f0;
50
- border-radius: 8px;
51
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
52
- overflow: hidden;
53
- }
54
-
55
- .collaboration-box-header {
56
- padding: 1rem 1.5rem;
57
- border-bottom: 2px solid #e2e8f0;
58
- background: #f8fafc;
59
- }
60
-
61
- .collaboration-box-header h2 {
62
- margin: 0 0 0.25rem 0;
63
- font-size: 1.3rem;
64
- color: #1e293b;
65
- }
66
-
67
- .collaboration-hint {
68
- font-size: 0.85rem;
69
- color: #64748b;
70
- }
71
-
72
- .collaboration-box-body {
73
- padding: 1rem 1.5rem;
74
- min-height: 600px;
75
- }
76
-
77
- .collaboration-error-fallback {
78
- display: flex;
79
- flex-direction: column;
80
- align-items: center;
81
- justify-content: center;
82
- min-height: 500px;
83
- gap: 1rem;
84
- color: #64748b;
85
- }
86
-
87
- .fallback-title {
88
- margin: 0;
89
- font-size: 1.1rem;
90
- color: #334155;
91
- }
92
-
93
- .fallback-reason {
94
- margin: 0;
95
- font-size: 0.9rem;
96
- color: #ef4444;
97
- max-width: 400px;
98
- text-align: center;
99
- }
100
-
101
- .collaboration-error-fallback button {
102
- padding: 0.5rem 1rem;
103
- background: #4a9eff;
104
- color: white;
105
- border: none;
106
- border-radius: 4px;
107
- cursor: pointer;
108
- }
109
-
110
- .collaboration-error-fallback button:hover {
111
- background: #3a8eef;
112
- }
113
- </style>
@@ -1,187 +0,0 @@
1
- <template>
2
- <!-- 版本号显示组件 -->
3
- <div class="version-display">
4
- <!-- 加载中状态 -->
5
- <template v-if="loading">
6
- <span class="loading-text">加载中...</span>
7
- </template>
8
-
9
- <!-- 错误状态 -->
10
- <template v-else-if="error">
11
- <span class="error-text">版本信息获取失败</span>
12
- </template>
13
-
14
- <!-- 正常显示 -->
15
- <template v-else>
16
- <span
17
- class="version-text"
18
- @mouseenter="showTooltip = true"
19
- @mouseleave="showTooltip = false"
20
- >
21
- {{ displayText }}
22
- </span>
23
-
24
- <!-- hover 提示框 -->
25
- <div v-if="showTooltip" class="tooltip">
26
- <div class="tooltip-item"><strong>名称:</strong> {{ versionInfo.name }}</div>
27
- <div class="tooltip-item"><strong>版本:</strong> {{ versionInfo.version }}</div>
28
- <div class="tooltip-item"><strong>描述:</strong> {{ versionInfo.description }}</div>
29
- <div v-if="versionInfo.build_date" class="tooltip-item">
30
- <strong>构建时间:</strong> {{ formatBuildDate(versionInfo.build_date) }}
31
- </div>
32
- <div v-if="versionInfo.git_commit" class="tooltip-item">
33
- <strong>Git 提交:</strong> {{ versionInfo.git_commit }}
34
- </div>
35
- </div>
36
- </template>
37
- </div>
38
- </template>
39
-
40
- <script setup lang="ts">
41
- /**
42
- * 版本号显示组件
43
- *
44
- * 功能:
45
- * 1. 从 /api/version 接口获取版本信息
46
- * 2. 由父级布局放置(通常顶栏 controls 内)
47
- * 3. hover 时显示完整的版本信息(名称、描述、构建时间等);置于顶栏时使用向下展开的提示框
48
- * 4. 支持加载中、错误等状态显示
49
- */
50
- import { ref, onMounted, computed } from 'vue'
51
-
52
- // 版本信息接口定义
53
- interface VersionInfo {
54
- version: string
55
- name: string
56
- description: string
57
- build_date?: string
58
- git_commit?: string
59
- }
60
-
61
- // 状态定义
62
- const loading = ref(true)
63
- const error = ref(false)
64
- const versionInfo = ref<VersionInfo>({
65
- version: '',
66
- name: '',
67
- description: '',
68
- })
69
- const showTooltip = ref(false)
70
-
71
- // 计算显示文本
72
- const displayText = computed(() => {
73
- if (versionInfo.value.name && versionInfo.value.version) {
74
- return `${versionInfo.value.name} v${versionInfo.value.version}`
75
- }
76
- return versionInfo.value.version || 'v?'
77
- })
78
-
79
- /**
80
- * 格式化构建时间
81
- * @param dateStr 时间字符串
82
- * @returns 格式化后的时间字符串
83
- */
84
- const formatBuildDate = (dateStr: string) => {
85
- try {
86
- return new Date(dateStr).toLocaleString('zh-CN')
87
- } catch {
88
- return dateStr
89
- }
90
- }
91
-
92
- /**
93
- * 从 API 获取版本信息
94
- */
95
- const fetchVersionInfo = async () => {
96
- try {
97
- loading.value = true
98
- error.value = false
99
-
100
- // 与页面同源显式拼接,避免子路径 / 代理环境下相对 URL 解析异常
101
- const url = `${window.location.origin}/api/version`
102
- const response = await fetch(url, {
103
- headers: { Accept: 'application/json' },
104
- cache: 'no-store',
105
- })
106
- if (!response.ok) {
107
- const hint = await response.text().catch(() => '')
108
- throw new Error(`HTTP ${response.status}${hint ? `: ${hint.slice(0, 120)}` : ''}`)
109
- }
110
-
111
- versionInfo.value = await response.json()
112
- } catch (err) {
113
- console.error('获取版本信息失败:', err)
114
- error.value = true
115
- } finally {
116
- loading.value = false
117
- }
118
- }
119
-
120
- // 组件挂载时获取版本信息
121
- onMounted(() => {
122
- fetchVersionInfo()
123
- })
124
- </script>
125
-
126
- <style scoped>
127
- .version-display {
128
- font-size: 0.8rem;
129
- color: rgba(255, 255, 255, 0.65);
130
- display: inline-block;
131
- position: relative;
132
- z-index: 1000;
133
- flex-shrink: 0;
134
- }
135
-
136
- .loading-text,
137
- .error-text {
138
- color: rgba(255, 255, 255, 0.5);
139
- }
140
-
141
- .version-text {
142
- cursor: pointer;
143
- transition: color 0.2s;
144
- user-select: none;
145
- }
146
-
147
- .version-text:hover {
148
- color: rgba(255, 255, 255, 0.95);
149
- }
150
-
151
- .tooltip {
152
- position: absolute;
153
- top: calc(100% + 8px);
154
- right: 0;
155
- background: #fff;
156
- border: 1px solid #ddd;
157
- border-radius: 4px;
158
- padding: 8px 12px;
159
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
160
- white-space: nowrap;
161
- z-index: 1001;
162
- min-width: 200px;
163
- }
164
-
165
- .tooltip-item {
166
- margin: 4px 0;
167
- font-size: 12px;
168
- color: #333;
169
- }
170
-
171
- .tooltip-item strong {
172
- color: #666;
173
- margin-right: 4px;
174
- }
175
-
176
- /* 响应式调整 */
177
- @media (max-width: 640px) {
178
- .version-display {
179
- font-size: 0.7rem;
180
- }
181
-
182
- .tooltip {
183
- min-width: 160px;
184
- font-size: 11px;
185
- }
186
- }
187
- </style>
@@ -1,119 +0,0 @@
1
- <template>
2
- <div class="performance-panel">
3
- <div class="panel-header">
4
- <h2>性能监控</h2>
5
- <div class="tab-switcher">
6
- <button
7
- :class="['tab-btn', { active: activeTab === 'tpm' }]"
8
- @click="activeTab = 'tpm'"
9
- >
10
- 📊 TPM/RPM
11
- </button>
12
- <button
13
- :class="['tab-btn', { active: activeTab === 'token' }]"
14
- @click="activeTab = 'token'"
15
- >
16
- 💰 Token 分析
17
- </button>
18
- </div>
19
- </div>
20
-
21
- <div class="panel-content">
22
- <PerformanceSection v-show="activeTab === 'tpm'" />
23
- <TokenAnalysisPanel v-show="activeTab === 'token'" />
24
- </div>
25
- </div>
26
- </template>
27
-
28
- <script setup lang="ts">
29
- import { ref } from 'vue'
30
- import PerformanceSection from './PerformanceSection.vue'
31
- import TokenAnalysisPanel from '../TokenAnalysisPanel.vue'
32
-
33
- const activeTab = ref<'tpm' | 'token'>('tpm')
34
- </script>
35
-
36
- <style scoped>
37
- .performance-panel {
38
- background: white;
39
- border-radius: 8px;
40
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
41
- overflow: hidden;
42
- }
43
-
44
- .panel-header {
45
- display: flex;
46
- justify-content: space-between;
47
- align-items: center;
48
- padding: 1rem 1.5rem;
49
- background: #f9fafb;
50
- border-bottom: 1px solid #e5e7eb;
51
- flex-wrap: wrap;
52
- gap: 1rem;
53
- }
54
-
55
- .panel-header h2 {
56
- margin: 0;
57
- font-size: 1.3rem;
58
- color: #333;
59
- }
60
-
61
- .tab-switcher {
62
- display: flex;
63
- gap: 0.5rem;
64
- }
65
-
66
- .tab-btn {
67
- padding: 0.5rem 1rem;
68
- border: 1px solid #e5e7eb;
69
- border-radius: 6px;
70
- background: white;
71
- font-size: 0.85rem;
72
- cursor: pointer;
73
- transition: all 0.2s;
74
- display: flex;
75
- align-items: center;
76
- gap: 0.5rem;
77
- }
78
-
79
- .tab-btn:hover {
80
- border-color: #4a9eff;
81
- }
82
-
83
- .tab-btn.active {
84
- background: #4a9eff;
85
- color: white;
86
- border-color: #4a9eff;
87
- }
88
-
89
- .panel-content {
90
- padding: 0;
91
- }
92
-
93
- /* 确保子组件没有额外的背景和圆角 */
94
- .panel-content :deep(.performance-section),
95
- .panel-content :deep(.token-analysis) {
96
- background: transparent;
97
- box-shadow: none;
98
- border-radius: 0;
99
- padding: 1.5rem;
100
- margin-bottom: 0;
101
- }
102
-
103
- /* 响应式 */
104
- @media (max-width: 640px) {
105
- .panel-header {
106
- flex-direction: column;
107
- align-items: flex-start;
108
- }
109
-
110
- .tab-switcher {
111
- width: 100%;
112
- }
113
-
114
- .tab-btn {
115
- flex: 1;
116
- justify-content: center;
117
- }
118
- }
119
- </style>