hydro-ai-helper 1.18.0 → 1.19.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/README.md +73 -264
- package/dist/handlers/adminConfigHandler.js +11 -7
- package/dist/handlers/adminConfigHandler.js.map +1 -1
- package/dist/handlers/adminHandler.js +33 -21
- package/dist/handlers/adminHandler.js.map +1 -1
- package/dist/handlers/analyticsHandler.js +13 -22
- package/dist/handlers/analyticsHandler.js.map +1 -1
- package/dist/handlers/costAnalyticsHandler.js +5 -4
- package/dist/handlers/costAnalyticsHandler.js.map +1 -1
- package/dist/handlers/exportHandler.js +6 -5
- package/dist/handlers/exportHandler.js.map +1 -1
- package/dist/handlers/feedbackHandler.js +8 -7
- package/dist/handlers/feedbackHandler.js.map +1 -1
- package/dist/handlers/studentHandler.js +56 -36
- package/dist/handlers/studentHandler.js.map +1 -1
- package/dist/handlers/teacherHandler.js +15 -17
- package/dist/handlers/teacherHandler.js.map +1 -1
- package/dist/handlers/updateHandler.js +36 -20
- package/dist/handlers/updateHandler.js.map +1 -1
- package/dist/handlers/versionHandler.js +1 -1
- package/dist/handlers/versionHandler.js.map +1 -1
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/crypto.js +7 -7
- package/dist/lib/crypto.js.map +1 -1
- package/dist/lib/rateLimitHelper.js +2 -2
- package/dist/lib/rateLimitHelper.js.map +1 -1
- package/dist/models/aiConfig.js +2 -2
- package/dist/models/aiConfig.js.map +1 -1
- package/dist/models/pluginInstall.js +33 -5
- package/dist/models/pluginInstall.js.map +1 -1
- package/dist/services/budgetService.js +8 -0
- package/dist/services/budgetService.js.map +1 -1
- package/dist/services/openaiClient.js +28 -25
- package/dist/services/openaiClient.js.map +1 -1
- package/dist/services/outputSafetyService.js +6 -4
- package/dist/services/outputSafetyService.js.map +1 -1
- package/dist/services/promptService.js +12 -8
- package/dist/services/promptService.js.map +1 -1
- package/dist/services/updateService.js +246 -249
- package/dist/services/updateService.js.map +1 -1
- package/dist/utils/i18nHelper.js +16 -0
- package/dist/utils/i18nHelper.js.map +1 -0
- package/frontend/admin/BudgetConfigForm.tsx +11 -10
- package/frontend/admin/ConfigPanel.tsx +37 -36
- package/frontend/admin/EndpointManager.tsx +36 -35
- package/frontend/admin/FeedbackForm.tsx +21 -20
- package/frontend/admin/JailbreakLogsViewer.tsx +16 -15
- package/frontend/admin/TelemetrySettings.tsx +14 -13
- package/frontend/admin/VersionBadge.tsx +40 -38
- package/frontend/components/AIHelperDashboard.tsx +7 -6
- package/frontend/components/ErrorBoundary.tsx +4 -3
- package/frontend/problem_detail.page.tsx +6 -5
- package/frontend/student/AIAssistantPanel.tsx +10 -9
- package/frontend/student/ChatInput.tsx +18 -16
- package/frontend/student/ChatMessageList.tsx +11 -10
- package/frontend/student/ThinkingBlock.tsx +2 -1
- package/frontend/student/hooks/useChatSession.ts +21 -20
- package/frontend/student/types.ts +3 -3
- package/frontend/teacher/AnalyticsPage.tsx +22 -21
- package/frontend/teacher/ClassAnalyticsTable.tsx +9 -8
- package/frontend/teacher/ConversationDetail.tsx +31 -29
- package/frontend/teacher/ConversationDetailModal.tsx +20 -19
- package/frontend/teacher/ConversationList.tsx +38 -37
- package/frontend/teacher/CostDashboard.tsx +26 -25
- package/frontend/teacher/ExportDialog.tsx +17 -16
- package/frontend/teacher/ProblemAnalyticsTable.tsx +18 -17
- package/frontend/teacher/StudentAnalyticsTable.tsx +9 -8
- package/frontend/teacher/analyticsTypes.ts +18 -13
- package/frontend/test.page.ts +4 -4
- package/frontend/utils/conversationStorage.ts +3 -3
- package/frontend/utils/formatDate.ts +2 -1
- package/locales/en.yaml +705 -0
- package/locales/zh.yaml +636 -4
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -18,101 +18,68 @@
|
|
|
18
18
|
|
|
19
19
|
A teaching-first AI tutoring plugin for [HydroOJ](https://github.com/hydro-dev/Hydro) that provides guided hints and thought-provoking questions — never complete solutions.
|
|
20
20
|
|
|
21
|
-
##
|
|
22
|
-
|
|
23
|
-
### Multi-turn Conversations with Context
|
|
24
|
-
|
|
25
|
-
- **Follow-up questions**: Students can ask follow-ups within the same conversation; the AI references prior context
|
|
26
|
-
- **Persistent history**: Conversations auto-restore after page refresh, isolated per problem
|
|
27
|
-
- **Smart truncation**: Automatically trims history beyond 7 messages to prevent token overflow
|
|
28
|
-
|
|
29
|
-
### Selection-based Q&A ("I Don't Understand")
|
|
30
|
-
|
|
31
|
-
- **Precise follow-up**: Select confusing text in an AI reply and click "I don't understand"
|
|
32
|
-
- **Highlight preservation**: Selected text stays highlighted when the button is clicked
|
|
33
|
-
- **Concise explanations**: Targeted explanations limited to 2 paragraphs
|
|
34
|
-
- **Works on history**: Can be used on any previous AI response
|
|
35
|
-
|
|
36
|
-
### Differentiated Question Types
|
|
21
|
+
## Screenshots
|
|
37
22
|
|
|
38
|
-
|
|
39
|
-
| --- | --- | --- |
|
|
40
|
-
| Understand the Problem | Unclear about problem requirements | Detailed, step-by-step explanation |
|
|
41
|
-
| Organize Approach | Need help structuring a solution | Structured framework, layered guidance |
|
|
42
|
-
| Debug Errors | Code has issues, need root cause | Concise and direct, quick diagnosis |
|
|
43
|
-
| Code Optimization | Already AC'd, seeking efficiency | Complexity analysis, heuristic hints |
|
|
44
|
-
|
|
45
|
-
### Real-time Streaming
|
|
46
|
-
|
|
47
|
-
- **SSE streaming**: AI responses appear character-by-character in real time
|
|
48
|
-
- **Error classification & retry**: Frontend shows error types (rate limit / timeout / network) with one-click retry
|
|
23
|
+
**Student chat panel integrated with problem view:**
|
|
49
24
|
|
|
50
|
-
|
|
25
|
+
<img src="assets/screenshots/1.png" alt="Student panel - wide screen" width="800">
|
|
51
26
|
|
|
52
|
-
|
|
53
|
-
- **Real-time detection**: After an AC submission, the optimization option appears automatically — no page refresh needed
|
|
54
|
-
- **Code loading confirmation**: A dialog lets you choose between loading your AC code or using the current editor code
|
|
55
|
-
- **Heuristic guidance**: AI analyzes time/space complexity and suggests optimization directions without giving code
|
|
56
|
-
- **Server-side validation**: Backend verifies AC status to prevent bypassing frontend restrictions
|
|
27
|
+
<img src="assets/screenshots/2.png" alt="Student panel - narrow screen" width="400">
|
|
57
28
|
|
|
58
|
-
|
|
29
|
+
**Admin dashboard:**
|
|
59
30
|
|
|
60
|
-
|
|
61
|
-
- **Budget limits**: Set monthly or total budget caps; auto-alert or pause service when thresholds are reached
|
|
62
|
-
- **Cost dashboard**: Visualize API cost trends and distribution
|
|
31
|
+
<img src="assets/screenshots/3.png" alt="Admin - conversations" width="800">
|
|
63
32
|
|
|
64
|
-
|
|
33
|
+
<img src="assets/screenshots/4.png" alt="Admin - analytics" width="800">
|
|
65
34
|
|
|
66
|
-
|
|
67
|
-
- **Tab navigation**: Switch between Conversations, Analytics, and Configuration tabs
|
|
68
|
-
- **URL parameters**: Direct link with `?tab=conversations|analytics|config`
|
|
69
|
-
- **Browser navigation**: Tab switches support browser back/forward buttons
|
|
35
|
+
<img src="assets/screenshots/5.png" alt="Admin - configuration" width="800">
|
|
70
36
|
|
|
71
|
-
|
|
37
|
+
<img src="assets/screenshots/6.png" alt="Admin - jailbreak logs" width="400">
|
|
72
38
|
|
|
73
|
-
|
|
74
|
-
- **Sortable tables**: Click column headers to sort ascending/descending
|
|
75
|
-
- **Quick navigation**: Click a problem name to go to its detail page; click conversation count to jump to filtered records
|
|
76
|
-
- **Data export**: CSV export support
|
|
39
|
+
<img src="assets/screenshots/7.png" alt="Admin - cost dashboard" width="500">
|
|
77
40
|
|
|
78
|
-
|
|
41
|
+
## Features
|
|
79
42
|
|
|
80
|
-
|
|
81
|
-
- **Auto model discovery**: Fetches available models from the `/models` endpoint automatically
|
|
82
|
-
- **Fallback mechanism**: Select multiple models with priority ordering; auto-switches to fallback when the primary is unavailable
|
|
83
|
-
- **Drag-to-reorder**: Drag model cards to adjust priority
|
|
84
|
-
- **Encrypted API keys**: API keys stored with AES-256-GCM encryption
|
|
43
|
+
### For Students
|
|
85
44
|
|
|
86
|
-
|
|
45
|
+
- **AI chat panel on problem pages** — auto-reads the problem statement and supports optional code attachment
|
|
46
|
+
- **Differentiated question types** — choose "Understand the Problem", "Organize Approach", "Debug Errors", or "Code Optimization" (AC-only) for tailored guidance
|
|
47
|
+
- **Multi-turn conversations** — ask follow-ups within the same conversation; history persists across page refreshes
|
|
48
|
+
- **"I Don't Understand"** — select confusing text in an AI reply for a concise, targeted explanation
|
|
49
|
+
- **Real-time streaming** — AI responses appear character-by-character via SSE
|
|
50
|
+
- **LaTeX rendering** — math formulas in AI responses are rendered automatically
|
|
51
|
+
- **Responsive UI** — LeetCode-style three-column layout on wide screens; floating panel on narrow screens
|
|
87
52
|
|
|
88
|
-
|
|
89
|
-
- **Cross-turn protection**: Anti-jailbreak detection across conversation turns to prevent gradual bypasses
|
|
90
|
-
- **CSRF protection**: CSRF token validation on critical operations
|
|
91
|
-
- **SSRF prevention**: URL validation on API endpoint configuration to prevent internal network probing
|
|
92
|
-
- **Allowlist mechanism**: Trusted problem content fetched server-side to avoid false positives
|
|
93
|
-
- **Audit log**: Paginated jailbreak log viewer for administrators
|
|
53
|
+
### For Teachers
|
|
94
54
|
|
|
95
|
-
|
|
55
|
+
- **Conversation viewer** — browse student conversation history with filters (time / problem / class / student)
|
|
56
|
+
- **Usage analytics** — multi-dimensional stats with sortable tables and question-type distribution
|
|
57
|
+
- **Data export** — CSV export with optional anonymization
|
|
96
58
|
|
|
97
|
-
|
|
98
|
-
- **Responsive design**: Floating chat panel on narrow screens
|
|
99
|
-
- **Resizable panel**: Drag the AI panel's left edge to resize (300–900px)
|
|
100
|
-
- **LaTeX rendering**: Math formulas in AI responses are rendered automatically
|
|
101
|
-
- **Error boundaries**: Component-level error isolation — partial failures don't crash the whole UI
|
|
102
|
-
- **Unified theme**: Purple gradient accent, rounded card design
|
|
59
|
+
### For Admins
|
|
103
60
|
|
|
104
|
-
|
|
61
|
+
- **Unified management portal** — one "AI Assistant" entry with tab navigation (Conversations / Analytics / Configuration)
|
|
62
|
+
- **Multi-endpoint & model management** — add multiple API endpoints, auto-discover models, drag to set priority with automatic failover
|
|
63
|
+
- **Cost control** — token usage tracking, budget limits, cost dashboard
|
|
64
|
+
- **Rate limiting** — configurable per-user request limits
|
|
65
|
+
- **Custom system prompt** — override the built-in tutoring prompt
|
|
66
|
+
- **One-click update** — check and install new versions from the admin panel
|
|
105
67
|
|
|
106
|
-
|
|
68
|
+
<details>
|
|
69
|
+
<summary><b>Security</b></summary>
|
|
107
70
|
|
|
108
|
-
|
|
71
|
+
- Multi-layer jailbreak detection (input / prompt / output) with cross-turn protection
|
|
72
|
+
- CSRF token validation on critical operations
|
|
73
|
+
- SSRF prevention on API endpoint configuration
|
|
74
|
+
- AES-256-GCM encrypted API key storage
|
|
75
|
+
- Paginated jailbreak audit logs
|
|
109
76
|
|
|
110
|
-
|
|
77
|
+
</details>
|
|
111
78
|
|
|
112
79
|
## Installation
|
|
113
80
|
|
|
114
81
|
```bash
|
|
115
|
-
# Clone
|
|
82
|
+
# Clone (choose one)
|
|
116
83
|
git clone https://github.com/AltureT/hydro-ai-helper.git # GitHub
|
|
117
84
|
git clone https://gitee.com/alture/hydro-ai-helper.git # Gitee (mirror)
|
|
118
85
|
|
|
@@ -143,31 +110,10 @@ Generate a random key: `openssl rand -base64 24 | head -c 32`
|
|
|
143
110
|
|
|
144
111
|
After logging in, go to **Control Panel → AI Assistant** (`/ai-helper`), then switch to the "AI Configuration" tab:
|
|
145
112
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
| Field | Description | Example |
|
|
151
|
-
| --- | --- | --- |
|
|
152
|
-
| Endpoint Name | Custom label | `Primary`, `Backup` |
|
|
153
|
-
| API Base URL | AI service URL | `https://api.openai.com/v1` |
|
|
154
|
-
| API Key | API key (encrypted at rest) | `sk-...` |
|
|
155
|
-
| Enabled | Whether to use in AI calls | On / Off |
|
|
156
|
-
|
|
157
|
-
Click "Fetch Models" to auto-discover available models for the endpoint.
|
|
158
|
-
|
|
159
|
-
#### Model Selection & Priority
|
|
160
|
-
|
|
161
|
-
Select models from all enabled endpoints and drag to reorder priority. When the primary model is unavailable (rate-limited, server error, etc.), the system automatically falls back to the next model in line.
|
|
162
|
-
|
|
163
|
-
#### Other Settings
|
|
164
|
-
|
|
165
|
-
| Field | Description | Default |
|
|
166
|
-
| --- | --- | --- |
|
|
167
|
-
| Rate Limit | Requests per user per minute | `5` |
|
|
168
|
-
| System Prompt | AI system prompt | Built-in tutoring prompt |
|
|
169
|
-
|
|
170
|
-
Click "Test Connection" to verify, then save.
|
|
113
|
+
1. **Add API endpoints** — fill in endpoint name, API Base URL, and API Key, then click "Fetch Models"
|
|
114
|
+
2. **Select models & set priority** — pick models from enabled endpoints and drag to reorder; failover is automatic
|
|
115
|
+
3. **Adjust settings** — rate limit (default: 5/min/user), custom system prompt
|
|
116
|
+
4. **Test & save** — click "Test Connection" to verify, then save
|
|
171
117
|
|
|
172
118
|
## Usage
|
|
173
119
|
|
|
@@ -178,88 +124,27 @@ Click "Test Connection" to verify, then save.
|
|
|
178
124
|
3. Optional: describe your understanding and what you've tried
|
|
179
125
|
4. Optional: attach your current code
|
|
180
126
|
5. Send and receive guided AI responses
|
|
181
|
-
6. If something is unclear, select the text and click "I don't understand"
|
|
127
|
+
6. If something is unclear, select the text and click "I don't understand" for a follow-up
|
|
182
128
|
7. After AC, use the "Code Optimization" feature for performance improvement suggestions
|
|
183
129
|
|
|
184
130
|
### Teachers / Admins
|
|
185
131
|
|
|
186
132
|
Go to **Control Panel → AI Assistant** (`/ai-helper`) and switch between tabs:
|
|
187
133
|
|
|
188
|
-
- **Conversations**
|
|
189
|
-
- **Analytics**
|
|
190
|
-
- **AI Configuration**
|
|
191
|
-
|
|
192
|
-
URL parameter shortcuts: `/ai-helper?tab=analytics`, `/ai-helper?tab=config`
|
|
193
|
-
|
|
194
|
-
Data export: Click "Export Data" on the conversations page.
|
|
195
|
-
|
|
196
|
-
### Screenshots
|
|
197
|
-
|
|
198
|
-
**Student chat panel integrated with problem view:**
|
|
199
|
-
|
|
200
|
-
<img src="assets/screenshots/1.png" alt="Student panel example" width="800">
|
|
201
|
-
|
|
202
|
-
<img src="assets/screenshots/2.png" alt="Student panel example" width="400">
|
|
203
|
-
|
|
204
|
-
**Admin dashboard:**
|
|
205
|
-
|
|
206
|
-
<img src="assets/screenshots/3.png" alt="Admin dashboard" width="800">
|
|
207
|
-
|
|
208
|
-
<img src="assets/screenshots/4.png" alt="Admin dashboard" width="800">
|
|
209
|
-
|
|
210
|
-
<img src="assets/screenshots/5.png" alt="Admin dashboard" width="800">
|
|
211
|
-
|
|
212
|
-
<img src="assets/screenshots/6.png" alt="Admin dashboard" width="400">
|
|
213
|
-
|
|
214
|
-
<img src="assets/screenshots/7.png" alt="Admin dashboard" width="500">
|
|
215
|
-
|
|
216
|
-
## Project Structure
|
|
217
|
-
|
|
218
|
-
```
|
|
219
|
-
hydro-ai-helper/
|
|
220
|
-
├── src/ # Backend (TypeScript)
|
|
221
|
-
│ ├── models/ # Data models
|
|
222
|
-
│ ├── services/ # Business logic
|
|
223
|
-
│ ├── handlers/ # Route handlers
|
|
224
|
-
│ └── lib/ # Utilities
|
|
225
|
-
├── frontend/ # Frontend (React)
|
|
226
|
-
│ ├── student/ # Student components
|
|
227
|
-
│ ├── teacher/ # Teacher components
|
|
228
|
-
│ ├── admin/ # Admin components
|
|
229
|
-
│ └── components/ # Shared components (e.g., Tab container)
|
|
230
|
-
└── dist/ # Build output
|
|
231
|
-
```
|
|
232
|
-
|
|
233
|
-
## Development
|
|
234
|
-
|
|
235
|
-
```bash
|
|
236
|
-
npm run dev # Development mode (watch)
|
|
237
|
-
npm run build # Build
|
|
238
|
-
npm run lint # Lint
|
|
239
|
-
```
|
|
134
|
+
- **Conversations** — view student conversation history with multi-dimensional filters
|
|
135
|
+
- **Analytics** — AI usage statistics and question-type distribution
|
|
136
|
+
- **AI Configuration** (admins only) — API endpoints, model priority, system prompt, cost dashboard
|
|
240
137
|
|
|
241
138
|
## Telemetry & Privacy
|
|
242
139
|
|
|
243
|
-
|
|
140
|
+
This plugin collects **anonymous statistics** (installation count, active users, conversation count, plugin version) to display GitHub badges and guide feature development.
|
|
244
141
|
|
|
245
|
-
|
|
142
|
+
- Fully anonymous (random UUID, no PII); domain IDs are SHA-256 hashed
|
|
143
|
+
- Only aggregated counts — no code, conversations, or personal data
|
|
144
|
+
- Auto-cleanup after 90 days of inactivity
|
|
246
145
|
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
- Total conversation count
|
|
250
|
-
- Plugin version
|
|
251
|
-
|
|
252
|
-
### Privacy Measures
|
|
253
|
-
|
|
254
|
-
- **Fully anonymous**: Uses random UUIDs; no personally identifiable information is collected
|
|
255
|
-
- **Hashed domains**: Domain IDs are SHA-256 hashed
|
|
256
|
-
- **Aggregated only**: Only user and conversation counts — no content is recorded
|
|
257
|
-
- **Auto-cleanup**: Data not reported for 90 days is automatically deleted
|
|
258
|
-
- **User-controlled**: Telemetry can be disabled via admin configuration
|
|
259
|
-
|
|
260
|
-
### How to Disable Telemetry
|
|
261
|
-
|
|
262
|
-
If you prefer not to send statistics, set this in your database:
|
|
146
|
+
<details>
|
|
147
|
+
<summary><b>How to disable telemetry</b></summary>
|
|
263
148
|
|
|
264
149
|
```javascript
|
|
265
150
|
// Connect to MongoDB
|
|
@@ -272,19 +157,9 @@ db.ai_plugin_install.updateOne(
|
|
|
272
157
|
)
|
|
273
158
|
```
|
|
274
159
|
|
|
275
|
-
The plugin continues to work normally after disabling
|
|
276
|
-
|
|
277
|
-
### Data Usage
|
|
160
|
+
The plugin continues to work normally after disabling.
|
|
278
161
|
|
|
279
|
-
|
|
280
|
-
- Displaying installation count, active users, conversations, and version badges on the GitHub README
|
|
281
|
-
- Understanding usage trends to prioritize feature development
|
|
282
|
-
- Assessing plugin stability and performance
|
|
283
|
-
|
|
284
|
-
**Our commitment**:
|
|
285
|
-
- We will NOT sell or share data with third parties
|
|
286
|
-
- We will NOT collect student code, problem content, or conversation records
|
|
287
|
-
- We will NOT track individual user behavior
|
|
162
|
+
</details>
|
|
288
163
|
|
|
289
164
|
## Changelog
|
|
290
165
|
|
|
@@ -298,14 +173,11 @@ Collected data is used solely for:
|
|
|
298
173
|
<details>
|
|
299
174
|
<summary><b>v1.14.0</b> — SSE Streaming & Cost Control & Security Hardening</summary>
|
|
300
175
|
|
|
301
|
-
-
|
|
176
|
+
- SSE streaming output — AI responses display character-by-character in real time
|
|
302
177
|
- API cost control: token usage tracking, budget limits, cost dashboard
|
|
303
178
|
- Error classification in frontend with retry/cancel support
|
|
304
|
-
-
|
|
305
|
-
- Security hardening: CSRF protection, domain isolation, tightened endpoint permissions, 3-layer prompt injection defense, enhanced API key encryption, SSRF prevention
|
|
179
|
+
- Security hardening: CSRF protection, SSRF prevention, 3-layer prompt injection defense
|
|
306
180
|
- Support AI assistant in homework/contest mode
|
|
307
|
-
- Test coverage increased from 34% to 45% with 191 new test cases
|
|
308
|
-
- Fix plugin crash when ENCRYPTION_KEY is not set
|
|
309
181
|
|
|
310
182
|
</details>
|
|
311
183
|
|
|
@@ -314,106 +186,43 @@ Collected data is used solely for:
|
|
|
314
186
|
|
|
315
187
|
- Integrate judge data to help AI analyze errors
|
|
316
188
|
- Contest mode restrictions on AI usage
|
|
317
|
-
- Prompt
|
|
318
|
-
- Auto-check "attach code" when "Debug Errors" type is selected
|
|
319
|
-
- Fix session guard and orphaned session issues
|
|
189
|
+
- Prompt optimization — ~45% token reduction
|
|
320
190
|
|
|
321
191
|
</details>
|
|
322
192
|
|
|
323
193
|
<details>
|
|
324
194
|
<summary><b>v1.11.0</b> — AI Response Style & Anti-Jailbreak Enhancement</summary>
|
|
325
195
|
|
|
326
|
-
-
|
|
327
|
-
- Strengthen multi-turn anti-jailbreak detection
|
|
328
|
-
|
|
329
|
-
</details>
|
|
330
|
-
|
|
331
|
-
<details>
|
|
332
|
-
<summary><b>v1.10.x</b> — Telemetry & One-click Update Improvements</summary>
|
|
333
|
-
|
|
334
|
-
- Add anonymous telemetry statistics and GitHub badges
|
|
335
|
-
- Question type statistics (per-problem dimension)
|
|
336
|
-
- One-click update improvements: streaming progress display, switch to HydroOJ's official pm2 restart method
|
|
337
|
-
- Auto-recover expired sessions
|
|
338
|
-
- Support Volcengine Endpoint ID format for model fetching
|
|
339
|
-
|
|
340
|
-
</details>
|
|
341
|
-
|
|
342
|
-
<details>
|
|
343
|
-
<summary><b>v1.9.0</b> — Security Hardening</summary>
|
|
344
|
-
|
|
345
|
-
- Comprehensive security audit and hardening (P0 + P1 level)
|
|
346
|
-
- One-click update security fixes
|
|
347
|
-
- npm auto-publish workflow
|
|
348
|
-
|
|
349
|
-
</details>
|
|
350
|
-
|
|
351
|
-
<details>
|
|
352
|
-
<summary><b>v1.8.x</b> — Code Optimization Feature</summary>
|
|
353
|
-
|
|
354
|
-
- Add "Code Optimization" question type (AC-only)
|
|
355
|
-
- Real-time AC status detection with auto-displayed optimization option
|
|
356
|
-
- Code loading confirmation dialog
|
|
357
|
-
- Support for Doubao and other domestic LLM model fetching
|
|
358
|
-
- Rate limit configuration fixes
|
|
359
|
-
|
|
360
|
-
</details>
|
|
361
|
-
|
|
362
|
-
<details>
|
|
363
|
-
<summary><b>v1.6.0</b> — Unified Management Portal</summary>
|
|
364
|
-
|
|
365
|
-
- Consolidate three separate menus into a single "AI Assistant" entry
|
|
366
|
-
- Tab navigation: Conversations / Analytics / Configuration
|
|
367
|
-
- Resizable AI panel width
|
|
368
|
-
|
|
369
|
-
</details>
|
|
370
|
-
|
|
371
|
-
<details>
|
|
372
|
-
<summary><b>v1.5.0</b> — Panel Resizing & CI</summary>
|
|
373
|
-
|
|
374
|
-
- Draggable AI panel width adjustment
|
|
375
|
-
- GitHub → Gitee auto-sync workflow
|
|
376
|
-
|
|
377
|
-
</details>
|
|
378
|
-
|
|
379
|
-
<details>
|
|
380
|
-
<summary><b>v1.4.0</b> — Multi-endpoint Configuration</summary>
|
|
381
|
-
|
|
382
|
-
- Multiple API endpoint configuration with auto model discovery
|
|
383
|
-
- Model priority fallback mechanism
|
|
384
|
-
- AES-256-GCM encrypted API key storage
|
|
385
|
-
|
|
386
|
-
</details>
|
|
387
|
-
|
|
388
|
-
<details>
|
|
389
|
-
<summary><b>v1.3.0</b> — One-click Update</summary>
|
|
390
|
-
|
|
391
|
-
- One-click plugin update (dual-repo version detection: GitHub + Gitee)
|
|
392
|
-
- Domain isolation and multi-dimensional analytics
|
|
196
|
+
- More natural guided AI responses
|
|
197
|
+
- Strengthen multi-turn anti-jailbreak detection
|
|
393
198
|
|
|
394
199
|
</details>
|
|
395
200
|
|
|
396
201
|
<details>
|
|
397
|
-
<summary><b>v1.
|
|
202
|
+
<summary><b>v1.10.x</b> — Telemetry & One-click Update</summary>
|
|
398
203
|
|
|
399
|
-
-
|
|
204
|
+
- Anonymous telemetry statistics and GitHub badges
|
|
205
|
+
- One-click update with streaming progress display
|
|
400
206
|
|
|
401
207
|
</details>
|
|
402
208
|
|
|
403
209
|
<details>
|
|
404
|
-
<summary><b>v1.
|
|
210
|
+
<summary><b>v1.9.0 and earlier</b></summary>
|
|
405
211
|
|
|
406
|
-
-
|
|
407
|
-
-
|
|
408
|
-
-
|
|
409
|
-
-
|
|
410
|
-
-
|
|
212
|
+
- v1.9.0: Comprehensive security audit and hardening
|
|
213
|
+
- v1.8.x: "Code Optimization" question type (AC-only), real-time AC detection
|
|
214
|
+
- v1.6.0: Unified management portal with tab navigation
|
|
215
|
+
- v1.5.0: Draggable AI panel width
|
|
216
|
+
- v1.4.0: Multi-endpoint configuration with model priority fallback
|
|
217
|
+
- v1.3.0: One-click plugin update, domain isolation
|
|
218
|
+
- v1.2.0: Differentiated question types
|
|
219
|
+
- v1.0.0: Initial release — AI chat, multi-turn conversations, selection-based Q&A
|
|
411
220
|
|
|
412
221
|
</details>
|
|
413
222
|
|
|
414
223
|
## About
|
|
415
224
|
|
|
416
|
-
|
|
225
|
+
A third-party plugin for [HydroOJ](https://github.com/hydro-dev/Hydro). Feel free to open an Issue for questions or suggestions.
|
|
417
226
|
|
|
418
227
|
## License
|
|
419
228
|
|
|
@@ -42,6 +42,7 @@ const hydrooj_1 = require("hydrooj");
|
|
|
42
42
|
const crypto_1 = require("../lib/crypto");
|
|
43
43
|
const jailbreakRules_1 = require("../constants/jailbreakRules");
|
|
44
44
|
const csrfHelper_1 = require("../lib/csrfHelper");
|
|
45
|
+
const i18nHelper_1 = require("../utils/i18nHelper");
|
|
45
46
|
/**
|
|
46
47
|
* AdminConfigHandler - AI 配置页面
|
|
47
48
|
* GET /ai-helper/admin/config
|
|
@@ -164,7 +165,7 @@ class AdminConfigHandler extends hydrooj_1.Handler {
|
|
|
164
165
|
catch (err) {
|
|
165
166
|
console.error('[AI Helper] AdminConfigHandler error:', err instanceof Error ? err.message : 'unknown');
|
|
166
167
|
this.response.status = 500;
|
|
167
|
-
this.response.body = { error: '
|
|
168
|
+
this.response.body = { error: this.translate('ai_helper_err_internal'), code: 'INTERNAL_ERROR' };
|
|
168
169
|
this.response.type = 'application/json';
|
|
169
170
|
}
|
|
170
171
|
}
|
|
@@ -199,7 +200,8 @@ class AdminConfigHandler extends hydrooj_1.Handler {
|
|
|
199
200
|
catch (_err) {
|
|
200
201
|
this.response.status = 500;
|
|
201
202
|
this.response.body = {
|
|
202
|
-
error:
|
|
203
|
+
error: (0, i18nHelper_1.translateWithParams)(this, 'ai_helper_config_endpoint_encrypt_failed', ep.name),
|
|
204
|
+
code: 'ENCRYPT_FAILED',
|
|
203
205
|
};
|
|
204
206
|
this.response.type = 'application/json';
|
|
205
207
|
return;
|
|
@@ -243,7 +245,7 @@ class AdminConfigHandler extends hydrooj_1.Handler {
|
|
|
243
245
|
const rate = parseInt(String(body.rateLimitPerMinute), 10);
|
|
244
246
|
if (Number.isNaN(rate) || rate < 0) {
|
|
245
247
|
this.response.status = 400;
|
|
246
|
-
this.response.body = { error: '
|
|
248
|
+
this.response.body = { error: this.translate('ai_helper_config_rate_limit_invalid'), code: 'INVALID_RATE_LIMIT' };
|
|
247
249
|
this.response.type = 'application/json';
|
|
248
250
|
return;
|
|
249
251
|
}
|
|
@@ -253,7 +255,7 @@ class AdminConfigHandler extends hydrooj_1.Handler {
|
|
|
253
255
|
const timeout = parseInt(String(body.timeoutSeconds), 10);
|
|
254
256
|
if (timeout <= 0) {
|
|
255
257
|
this.response.status = 400;
|
|
256
|
-
this.response.body = { error: '
|
|
258
|
+
this.response.body = { error: this.translate('ai_helper_config_timeout_invalid'), code: 'INVALID_TIMEOUT' };
|
|
257
259
|
this.response.type = 'application/json';
|
|
258
260
|
return;
|
|
259
261
|
}
|
|
@@ -292,7 +294,8 @@ class AdminConfigHandler extends hydrooj_1.Handler {
|
|
|
292
294
|
catch (_err) {
|
|
293
295
|
this.response.status = 500;
|
|
294
296
|
this.response.body = {
|
|
295
|
-
error: '
|
|
297
|
+
error: this.translate('ai_helper_config_apikey_encrypt_failed'),
|
|
298
|
+
code: 'ENCRYPT_FAILED',
|
|
296
299
|
};
|
|
297
300
|
this.response.type = 'application/json';
|
|
298
301
|
return;
|
|
@@ -374,7 +377,8 @@ class AdminConfigHandler extends hydrooj_1.Handler {
|
|
|
374
377
|
console.error('[AdminConfigHandler] 更新配置失败:', err instanceof Error ? err.message : 'unknown');
|
|
375
378
|
this.response.status = 500;
|
|
376
379
|
this.response.body = {
|
|
377
|
-
error: '
|
|
380
|
+
error: this.translate('ai_helper_config_update_failed'),
|
|
381
|
+
code: 'CONFIG_UPDATE_FAILED',
|
|
378
382
|
};
|
|
379
383
|
this.response.type = 'application/json';
|
|
380
384
|
}
|
|
@@ -403,7 +407,7 @@ class JailbreakLogsHandler extends hydrooj_1.Handler {
|
|
|
403
407
|
catch (err) {
|
|
404
408
|
console.error('[AI Helper] JailbreakLogsHandler error:', err instanceof Error ? err.message : 'unknown');
|
|
405
409
|
this.response.status = 500;
|
|
406
|
-
this.response.body = { error: '
|
|
410
|
+
this.response.body = { error: this.translate('ai_helper_config_jailbreak_logs_failed'), code: 'JAILBREAK_LOGS_FAILED' };
|
|
407
411
|
this.response.type = 'application/json';
|
|
408
412
|
}
|
|
409
413
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adminConfigHandler.js","sourceRoot":"","sources":["../../src/handlers/adminConfigHandler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"adminConfigHandler.js","sourceRoot":"","sources":["../../src/handlers/adminConfigHandler.ts"],"names":[],"mappings":"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"}
|