rl-rockcli 0.0.7 → 0.0.8

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 (74) hide show
  1. package/index.js +15 -5
  2. package/package.json +2 -2
  3. package/commands/log/core/constants.js +0 -237
  4. package/commands/log/core/display.js +0 -370
  5. package/commands/log/core/search.js +0 -330
  6. package/commands/log/core/tail.js +0 -216
  7. package/commands/log/core/utils.js +0 -424
  8. package/commands/log.js +0 -298
  9. package/commands/sandbox/core/log-bridge.js +0 -119
  10. package/commands/sandbox/core/replay/analyzer.js +0 -311
  11. package/commands/sandbox/core/replay/batch-orchestrator.js +0 -536
  12. package/commands/sandbox/core/replay/batch-task.js +0 -369
  13. package/commands/sandbox/core/replay/concurrent-display.js +0 -70
  14. package/commands/sandbox/core/replay/concurrent-orchestrator.js +0 -170
  15. package/commands/sandbox/core/replay/data-source.js +0 -86
  16. package/commands/sandbox/core/replay/display.js +0 -231
  17. package/commands/sandbox/core/replay/executor.js +0 -634
  18. package/commands/sandbox/core/replay/history-fetcher.js +0 -124
  19. package/commands/sandbox/core/replay/index.js +0 -338
  20. package/commands/sandbox/core/replay/loghouse-data-source.js +0 -177
  21. package/commands/sandbox/core/replay/pid-mapping.js +0 -26
  22. package/commands/sandbox/core/replay/request.js +0 -109
  23. package/commands/sandbox/core/replay/worker.js +0 -166
  24. package/commands/sandbox/core/session.js +0 -346
  25. package/commands/sandbox/log-bridge.js +0 -2
  26. package/commands/sandbox/ray.js +0 -2
  27. package/commands/sandbox/replay/analyzer.js +0 -311
  28. package/commands/sandbox/replay/batch-orchestrator.js +0 -536
  29. package/commands/sandbox/replay/batch-task.js +0 -369
  30. package/commands/sandbox/replay/concurrent-display.js +0 -70
  31. package/commands/sandbox/replay/concurrent-orchestrator.js +0 -170
  32. package/commands/sandbox/replay/display.js +0 -231
  33. package/commands/sandbox/replay/executor.js +0 -634
  34. package/commands/sandbox/replay/history-fetcher.js +0 -118
  35. package/commands/sandbox/replay/index.js +0 -338
  36. package/commands/sandbox/replay/pid-mapping.js +0 -26
  37. package/commands/sandbox/replay/request.js +0 -109
  38. package/commands/sandbox/replay/worker.js +0 -166
  39. package/commands/sandbox/replay.js +0 -2
  40. package/commands/sandbox/session.js +0 -2
  41. package/commands/sandbox-original.js +0 -1393
  42. package/commands/sandbox.js +0 -499
  43. package/help/help.json +0 -1071
  44. package/help/middleware.js +0 -71
  45. package/help/renderer.js +0 -800
  46. package/lib/plugin-context.js +0 -40
  47. package/sdks/sandbox/core/client.js +0 -845
  48. package/sdks/sandbox/core/config.js +0 -70
  49. package/sdks/sandbox/core/types.js +0 -74
  50. package/sdks/sandbox/httpLogger.js +0 -251
  51. package/sdks/sandbox/index.js +0 -9
  52. package/utils/asciiArt.js +0 -138
  53. package/utils/bun-compat.js +0 -59
  54. package/utils/ciPipelines.js +0 -138
  55. package/utils/cli.js +0 -17
  56. package/utils/command-router.js +0 -79
  57. package/utils/configManager.js +0 -503
  58. package/utils/dependency-resolver.js +0 -135
  59. package/utils/eagleeye_traceid.js +0 -151
  60. package/utils/envDetector.js +0 -78
  61. package/utils/execution_logger.js +0 -415
  62. package/utils/featureManager.js +0 -68
  63. package/utils/firstTimeTip.js +0 -44
  64. package/utils/hook-manager.js +0 -125
  65. package/utils/http-logger.js +0 -264
  66. package/utils/i18n.js +0 -139
  67. package/utils/image-progress.js +0 -159
  68. package/utils/logger.js +0 -154
  69. package/utils/plugin-loader.js +0 -124
  70. package/utils/plugin-manager.js +0 -348
  71. package/utils/ray_cli_wrapper.js +0 -746
  72. package/utils/sandbox-client.js +0 -419
  73. package/utils/terminal.js +0 -32
  74. package/utils/tips.js +0 -106
@@ -1,231 +0,0 @@
1
- const { RequestCategory, RequestAction } = require('./request');
2
-
3
- /**
4
- * 显示分析摘要
5
- * @param {ReplayPlan} plan
6
- * @param {Object} options
7
- */
8
- function displayAnalysisSummary(plan, options = {}) {
9
- const { mode = 'smart', quiet = false } = options;
10
-
11
- if (quiet) {
12
- console.log(`Replaying ${plan.executeCount}/${plan.originalCount} requests...`);
13
- return;
14
- }
15
-
16
- console.log(`\n📋 Loaded ${plan.originalCount} requests`);
17
- console.log(`🔍 Mode: ${mode}\n`);
18
-
19
- // 显示请求分析表格
20
- console.log('Request Analysis:');
21
- console.log('┌─────────────────────────────────┬───────┬─────────────────────────────────┐');
22
- console.log('│ Category │ Count │ Action │');
23
- console.log('├─────────────────────────────────┼───────┼─────────────────────────────────┤');
24
-
25
- const { stats } = plan;
26
-
27
- // Startup
28
- if (stats.startup > 0) {
29
- console.log(`│ Startup (start_async) │ ${padNumber(stats.startup)} │ ✅ Execute + wait for alive │`);
30
- }
31
-
32
- // Startup Polling
33
- if (stats.startupPolling > 0) {
34
- const skipped = plan.skippedRequests.filter(r => r.category === RequestCategory.STARTUP_POLLING).length;
35
- if (skipped === stats.startupPolling) {
36
- console.log(`│ Startup polling (get_status) │ ${padNumber(stats.startupPolling)} │ ⏭️ Skip (built-in wait) │`);
37
- } else {
38
- console.log(`│ Startup polling (get_status) │ ${padNumber(stats.startupPolling)} │ ✅ Execute │`);
39
- }
40
- }
41
-
42
- // Session
43
- if (stats.session > 0) {
44
- console.log(`│ Session (create/close) │ ${padNumber(stats.session)} │ ✅ Execute │`);
45
- }
46
-
47
- // Nohup Commands
48
- if (stats.nohupCommand > 0) {
49
- console.log(`│ Nohup commands │ ${padNumber(stats.nohupCommand)} │ ✅ Execute + wait for process │`);
50
- }
51
-
52
- // Process Check
53
- if (stats.processCheck > 0) {
54
- console.log(`│ Process checks (kill -0) │ ${padNumber(stats.processCheck)} │ ⏭️ Skip (auto wait in nohup) │`);
55
- }
56
-
57
- // Log Query
58
- if (stats.logQuery > 0) {
59
- const skipped = plan.skippedRequests.filter(r => r.category === RequestCategory.LOG_QUERY).length;
60
- if (skipped === stats.logQuery) {
61
- console.log(`│ Log queries (head/tail) │ ${padNumber(stats.logQuery)} │ ⏭️ Skip (minimal mode) │`);
62
- } else {
63
- console.log(`│ Log queries (head/tail) │ ${padNumber(stats.logQuery)} │ ✅ Execute │`);
64
- }
65
- }
66
-
67
- // Upload
68
- if (stats.upload > 0) {
69
- console.log(`│ Upload files │ ${padNumber(stats.upload)} │ ✅ Execute │`);
70
- }
71
-
72
- // Stop
73
- if (stats.stop > 0) {
74
- const skipped = plan.skippedRequests.filter(r => r.category === RequestCategory.STOP).length;
75
- if (skipped === stats.stop) {
76
- console.log(`│ Stop sandbox │ ${padNumber(stats.stop)} │ ⏭️ Skip (use --stop) │`);
77
- } else {
78
- console.log(`│ Stop sandbox │ ${padNumber(stats.stop)} │ ✅ Execute │`);
79
- }
80
- }
81
-
82
- // Other
83
- if (stats.other > 0) {
84
- console.log(`│ Other commands │ ${padNumber(stats.other)} │ ✅ Execute │`);
85
- }
86
-
87
- console.log('└─────────────────────────────────┴───────┴─────────────────────────────────┘');
88
-
89
- // 显示摘要
90
- const reduction = plan.originalCount > 0
91
- ? Math.round((1 - plan.executeCount / plan.originalCount) * 100)
92
- : 0;
93
-
94
- console.log(`\n📊 Summary: ${plan.originalCount} → ${plan.executeCount} requests`);
95
- if (plan.skippedCount > 0) {
96
- console.log(` - Skipped: ${plan.skippedCount}`);
97
- }
98
- if (plan.mergedCount > 0) {
99
- console.log(` - Merged: ${plan.mergedCount}`);
100
- }
101
- console.log(` - To execute: ${plan.executeCount}`);
102
- if (reduction > 0) {
103
- console.log(` - Reduction: ${reduction}%`);
104
- }
105
-
106
- console.log('\n⏳ Starting replay...\n');
107
- }
108
-
109
- /**
110
- * 显示结果摘要
111
- * @param {Object} results - 执行结果
112
- * @param {Array} pidMappings - PID 映射列表
113
- * @param {Object} options
114
- */
115
- function displayResultsSummary(results, pidMappings = [], options = {}) {
116
- const { quiet = false, logFile = 'replay.log', sandboxId = null } = options;
117
-
118
- if (quiet) {
119
- console.log(`\n✅ Done: ${results.success} success, ${results.failed} failed`);
120
- return;
121
- }
122
-
123
- console.log('\n═══════════════════════════════════════════════════════════════');
124
- console.log('📊 Replay Summary');
125
- console.log('═══════════════════════════════════════════════════════════════');
126
-
127
- console.log(`Total requests: ${results.total}`);
128
- console.log(`├── ✅ Successful: ${results.success}`);
129
- console.log(`├── ❌ Failed: ${results.failed}`);
130
- console.log(`└── ⏭️ Skipped: ${results.skipped}`);
131
-
132
- if (sandboxId) {
133
- console.log(`\nNew sandbox_id: ${sandboxId}`);
134
- }
135
-
136
- // 显示 PID 映射使用情况
137
- if (pidMappings.length > 0) {
138
- console.log('\nPID Mappings Used:');
139
- pidMappings.forEach((mapping, index) => {
140
- const prefix = index === pidMappings.length - 1 ? '└──' : '├──';
141
- console.log(`${prefix} ${mapping.oldPid} → ${mapping.newPid} (used ${mapping.usageCount} times)`);
142
- });
143
- }
144
-
145
- console.log(`\n📝 Log saved to: ${logFile}`);
146
- console.log('═══════════════════════════════════════════════════════════════');
147
- }
148
-
149
- /**
150
- * 显示 dry-run 摘要
151
- * @param {ReplayPlan} plan
152
- * @param {Object} options
153
- */
154
- function displayDryRunSummary(plan, options = {}) {
155
- console.log('\n🔍 Dry Run Mode - No requests will be executed\n');
156
-
157
- // 显示将要执行的请求
158
- if (plan.requests.length > 0) {
159
- console.log('Requests to execute:');
160
- const maxShow = 20;
161
- const requests = plan.requests.slice(0, maxShow);
162
-
163
- requests.forEach((req, index) => {
164
- const action = getActionLabel(req.action);
165
- console.log(` ${index + 1}. [${action}] ${req.method} ${req.getShortDescription()}`);
166
- });
167
-
168
- if (plan.requests.length > maxShow) {
169
- console.log(` ... and ${plan.requests.length - maxShow} more`);
170
- }
171
- }
172
-
173
- // 显示将要跳过的请求
174
- if (plan.skippedRequests.length > 0) {
175
- console.log(`\nRequests to skip (${plan.skippedRequests.length}):`);
176
-
177
- // 按跳过原因分组
178
- const byReason = {};
179
- plan.skippedRequests.forEach(req => {
180
- const reason = req.skipReason || 'Unknown';
181
- byReason[reason] = (byReason[reason] || 0) + 1;
182
- });
183
-
184
- Object.entries(byReason).forEach(([reason, count]) => {
185
- console.log(` - ${reason}: ${count}`);
186
- });
187
- }
188
-
189
- // 显示将要合并的请求
190
- if (plan.mergedRequests.length > 0) {
191
- console.log(`\nRequests to merge (${plan.mergedRequests.length}):`);
192
-
193
- const byReason = {};
194
- plan.mergedRequests.forEach(req => {
195
- const reason = req.skipReason || 'Merged into wait logic';
196
- byReason[reason] = (byReason[reason] || 0) + 1;
197
- });
198
-
199
- Object.entries(byReason).forEach(([reason, count]) => {
200
- console.log(` - ${reason}: ${count}`);
201
- });
202
- }
203
-
204
- console.log('');
205
- }
206
-
207
- // 辅助函数
208
- function padNumber(num, width = 5) {
209
- return String(num).padStart(width);
210
- }
211
-
212
- function getActionLabel(action) {
213
- switch (action) {
214
- case RequestAction.EXECUTE:
215
- return 'EXEC';
216
- case RequestAction.EXECUTE_WITH_PROCESS_WAIT:
217
- return 'EXEC+WAIT';
218
- case RequestAction.SKIP:
219
- return 'SKIP';
220
- case RequestAction.MERGE:
221
- return 'MERGE';
222
- default:
223
- return action;
224
- }
225
- }
226
-
227
- module.exports = {
228
- displayAnalysisSummary,
229
- displayResultsSummary,
230
- displayDryRunSummary
231
- };