claude-code-workflow 6.3.24 → 6.3.26

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 (75) hide show
  1. package/.claude/commands/issue/discover-by-prompt.md +764 -0
  2. package/.claude/skills/text-formatter/SKILL.md +196 -0
  3. package/.claude/skills/text-formatter/phases/01-input-collection.md +111 -0
  4. package/.claude/skills/text-formatter/phases/02-content-analysis.md +248 -0
  5. package/.claude/skills/text-formatter/phases/03-format-transform.md +245 -0
  6. package/.claude/skills/text-formatter/phases/04-output-preview.md +183 -0
  7. package/.claude/skills/text-formatter/specs/callout-types.md +293 -0
  8. package/.claude/skills/text-formatter/specs/element-mapping.md +226 -0
  9. package/.claude/skills/text-formatter/specs/format-rules.md +273 -0
  10. package/.claude/skills/text-formatter/templates/bbcode-template.md +350 -0
  11. package/ccw/dist/core/routes/help-routes.d.ts.map +1 -1
  12. package/ccw/dist/core/routes/help-routes.js +43 -7
  13. package/ccw/dist/core/routes/help-routes.js.map +1 -1
  14. package/ccw/dist/core/routes/litellm-api-routes.d.ts.map +1 -1
  15. package/ccw/dist/core/routes/litellm-api-routes.js +31 -5
  16. package/ccw/dist/core/routes/litellm-api-routes.js.map +1 -1
  17. package/ccw/dist/core/routes/memory-routes.d.ts.map +1 -1
  18. package/ccw/dist/core/routes/memory-routes.js +73 -0
  19. package/ccw/dist/core/routes/memory-routes.js.map +1 -1
  20. package/ccw/dist/core/routes/status-routes.d.ts.map +1 -1
  21. package/ccw/dist/core/routes/status-routes.js +36 -4
  22. package/ccw/dist/core/routes/status-routes.js.map +1 -1
  23. package/ccw/dist/core/server.d.ts.map +1 -1
  24. package/ccw/dist/core/server.js +58 -0
  25. package/ccw/dist/core/server.js.map +1 -1
  26. package/ccw/dist/core/services/api-key-tester.d.ts.map +1 -1
  27. package/ccw/dist/core/services/api-key-tester.js +8 -3
  28. package/ccw/dist/core/services/api-key-tester.js.map +1 -1
  29. package/ccw/dist/tools/claude-cli-tools.d.ts +7 -0
  30. package/ccw/dist/tools/claude-cli-tools.d.ts.map +1 -1
  31. package/ccw/dist/tools/claude-cli-tools.js +11 -1
  32. package/ccw/dist/tools/claude-cli-tools.js.map +1 -1
  33. package/ccw/dist/tools/cli-executor-core.d.ts +11 -0
  34. package/ccw/dist/tools/cli-executor-core.d.ts.map +1 -1
  35. package/ccw/dist/tools/cli-executor-core.js +89 -2
  36. package/ccw/dist/tools/cli-executor-core.js.map +1 -1
  37. package/ccw/dist/tools/codex-lens.d.ts +2 -1
  38. package/ccw/dist/tools/codex-lens.d.ts.map +1 -1
  39. package/ccw/dist/tools/codex-lens.js +51 -8
  40. package/ccw/dist/tools/codex-lens.js.map +1 -1
  41. package/ccw/dist/tools/index.d.ts.map +1 -1
  42. package/ccw/dist/tools/index.js +2 -0
  43. package/ccw/dist/tools/index.js.map +1 -1
  44. package/ccw/dist/tools/litellm-client.d.ts +6 -0
  45. package/ccw/dist/tools/litellm-client.d.ts.map +1 -1
  46. package/ccw/dist/tools/litellm-client.js +22 -1
  47. package/ccw/dist/tools/litellm-client.js.map +1 -1
  48. package/ccw/dist/tools/litellm-executor.js +2 -2
  49. package/ccw/dist/tools/litellm-executor.js.map +1 -1
  50. package/ccw/dist/tools/memory-update-queue.d.ts +172 -0
  51. package/ccw/dist/tools/memory-update-queue.d.ts.map +1 -0
  52. package/ccw/dist/tools/memory-update-queue.js +431 -0
  53. package/ccw/dist/tools/memory-update-queue.js.map +1 -0
  54. package/ccw/src/core/routes/help-routes.ts +46 -7
  55. package/ccw/src/core/routes/litellm-api-routes.ts +35 -4
  56. package/ccw/src/core/routes/memory-routes.ts +84 -0
  57. package/ccw/src/core/routes/status-routes.ts +39 -4
  58. package/ccw/src/core/server.ts +62 -0
  59. package/ccw/src/core/services/api-key-tester.ts +9 -3
  60. package/ccw/src/templates/dashboard-css/21-cli-toolmgmt.css +45 -0
  61. package/ccw/src/templates/dashboard-js/components/cli-status.js +36 -5
  62. package/ccw/src/templates/dashboard-js/components/hook-manager.js +42 -81
  63. package/ccw/src/templates/dashboard-js/components/mcp-manager.js +170 -28
  64. package/ccw/src/templates/dashboard-js/components/notifications.js +14 -4
  65. package/ccw/src/templates/dashboard-js/i18n.js +26 -0
  66. package/ccw/src/templates/dashboard-js/views/cli-manager.js +72 -2
  67. package/ccw/src/templates/dashboard-js/views/codexlens-manager.js +11 -1
  68. package/ccw/src/tools/claude-cli-tools.ts +17 -1
  69. package/ccw/src/tools/cli-executor-core.ts +103 -2
  70. package/ccw/src/tools/codex-lens.ts +63 -8
  71. package/ccw/src/tools/index.ts +2 -0
  72. package/ccw/src/tools/litellm-client.ts +25 -3
  73. package/ccw/src/tools/litellm-executor.ts +2 -2
  74. package/ccw/src/tools/memory-update-queue.js +499 -0
  75. package/package.json +91 -91
@@ -0,0 +1,350 @@
1
+ # BBCode Template
2
+
3
+ 论坛优化的 BBCode + Markdown 混合模板(像素级字号)。
4
+
5
+ ## 核心规则
6
+
7
+ ### 字号体系 (Pixels)
8
+
9
+ | 元素 | Size | 说明 |
10
+ |------|------|------|
11
+ | 主标题 | 150 | 文档标题 |
12
+ | 章节标题 | 120 | H2 级别 |
13
+ | 子标题 | 100 | H3 级别 |
14
+ | 正文 | (默认) | 不指定 |
15
+ | 备注 | 80 | 灰色小字 |
16
+
17
+ ### 禁止使用
18
+
19
+ - `[align]` - 不渲染
20
+ - `[hr]` - 不渲染,用 `---`
21
+ - `[table]` - 支持有限
22
+ - HTML 标签
23
+
24
+ ---
25
+
26
+ ## 文档模板
27
+
28
+ ### 基础文档结构
29
+
30
+ ```bbcode
31
+ [size=150][color=#2196F3][b]{{title}}[/b][/color][/size]
32
+
33
+ [size=80][color=gray]{{metadata}}[/color][/size]
34
+
35
+ ---
36
+
37
+ {{introduction}}
38
+
39
+ ---
40
+
41
+ [size=120][color=#2196F3][b]{{section1_title}}[/b][/color][/size]
42
+
43
+ {{section1_content}}
44
+
45
+ ---
46
+
47
+ [size=120][color=#2196F3][b]{{section2_title}}[/b][/color][/size]
48
+
49
+ {{section2_content}}
50
+
51
+ ---
52
+
53
+ [size=80][color=gray]— 全文完 —[/color][/size]
54
+ ```
55
+
56
+ ### 带目录的文档
57
+
58
+ ```bbcode
59
+ [size=150][color=#2196F3][b]{{title}}[/b][/color][/size]
60
+
61
+ [size=80][color=gray]{{author}} | {{date}}[/color][/size]
62
+
63
+ ---
64
+
65
+ [size=100][b]📋 目录[/b][/size]
66
+
67
+ • {{section1_title}}
68
+ • {{section2_title}}
69
+ • {{section3_title}}
70
+
71
+ ---
72
+
73
+ [size=120][color=#2196F3][b]{{section1_title}}[/b][/color][/size]
74
+
75
+ {{section1_content}}
76
+
77
+ ---
78
+
79
+ [size=120][color=#2196F3][b]{{section2_title}}[/b][/color][/size]
80
+
81
+ {{section2_content}}
82
+
83
+ ---
84
+
85
+ [size=120][color=#2196F3][b]{{section3_title}}[/b][/color][/size]
86
+
87
+ {{section3_content}}
88
+
89
+ ---
90
+
91
+ [size=80][color=gray]— 全文完 —[/color][/size]
92
+ ```
93
+
94
+ ---
95
+
96
+ ## Callout 模板
97
+
98
+ ### 提示 (Note/Info)
99
+
100
+ ```bbcode
101
+ [quote]
102
+ [size=100][color=#2196F3][b]📝 {{title}}[/b][/color][/size]
103
+
104
+ {{content}}
105
+ [/quote]
106
+ ```
107
+
108
+ ### 技巧 (Tip/Hint)
109
+
110
+ ```bbcode
111
+ [quote]
112
+ [size=100][color=#4CAF50][b]💡 {{title}}[/b][/color][/size]
113
+
114
+ {{content}}
115
+ [/quote]
116
+ ```
117
+
118
+ ### 成功 (Success)
119
+
120
+ ```bbcode
121
+ [quote]
122
+ [size=100][color=#4CAF50][b]✅ {{title}}[/b][/color][/size]
123
+
124
+ {{content}}
125
+ [/quote]
126
+ ```
127
+
128
+ ### 警告 (Warning/Caution)
129
+
130
+ ```bbcode
131
+ [quote]
132
+ [size=100][color=#FF9800][b]⚠️ {{title}}[/b][/color][/size]
133
+
134
+ {{content}}
135
+ [/quote]
136
+ ```
137
+
138
+ ### 危险/错误 (Danger/Error)
139
+
140
+ ```bbcode
141
+ [quote]
142
+ [size=100][color=#F44336][b]❌ {{title}}[/b][/color][/size]
143
+
144
+ {{content}}
145
+ [/quote]
146
+ ```
147
+
148
+ ### 示例 (Example)
149
+
150
+ ```bbcode
151
+ [quote]
152
+ [size=100][color=#9C27B0][b]📋 {{title}}[/b][/color][/size]
153
+
154
+ {{content}}
155
+ [/quote]
156
+ ```
157
+
158
+ ### 问题 (Question/FAQ)
159
+
160
+ ```bbcode
161
+ [quote]
162
+ [size=100][color=#FF9800][b]❓ {{title}}[/b][/color][/size]
163
+
164
+ {{content}}
165
+ [/quote]
166
+ ```
167
+
168
+ ### 重要 (Important)
169
+
170
+ ```bbcode
171
+ [quote]
172
+ [size=100][color=#F44336][b]⭐ {{title}}[/b][/color][/size]
173
+
174
+ {{content}}
175
+ [/quote]
176
+ ```
177
+
178
+ ---
179
+
180
+ ## 代码展示模板
181
+
182
+ ### 单代码块
183
+
184
+ ```bbcode
185
+ [size=100][color=#9C27B0][b]代码示例[/b][/color][/size]
186
+
187
+ [code]
188
+ {{code}}
189
+ [/code]
190
+
191
+ [size=80][color=gray]说明: {{description}}[/color][/size]
192
+ ```
193
+
194
+ ### 带标题的代码
195
+
196
+ ```bbcode
197
+ [size=100][b]{{code_title}}[/b][/size]
198
+
199
+ [code]
200
+ {{code}}
201
+ [/code]
202
+ ```
203
+
204
+ ---
205
+
206
+ ## 特性展示模板
207
+
208
+ ### 特性列表
209
+
210
+ ```bbcode
211
+ [size=120][color=#2196F3][b]功能特性[/b][/color][/size]
212
+
213
+ • [color=#4CAF50][b]✨ {{feature1}}[/b][/color] — {{desc1}}
214
+ • [color=#2196F3][b]🚀 {{feature2}}[/b][/color] — {{desc2}}
215
+ • [color=#FF9800][b]⚡ {{feature3}}[/b][/color] — {{desc3}}
216
+ ```
217
+
218
+ ### 详细特性卡片
219
+
220
+ ```bbcode
221
+ [size=120][color=#2196F3][b]功能特性[/b][/color][/size]
222
+
223
+ [quote]
224
+ [size=100][color=#4CAF50][b]✨ {{feature1_title}}[/b][/color][/size]
225
+
226
+ {{feature1_description}}
227
+
228
+ [size=80][color=gray]适用场景: {{feature1_use_case}}[/color][/size]
229
+ [/quote]
230
+
231
+ [quote]
232
+ [size=100][color=#2196F3][b]🚀 {{feature2_title}}[/b][/color][/size]
233
+
234
+ {{feature2_description}}
235
+
236
+ [size=80][color=gray]适用场景: {{feature2_use_case}}[/color][/size]
237
+ [/quote]
238
+ ```
239
+
240
+ ---
241
+
242
+ ## 步骤指南模板
243
+
244
+ ```bbcode
245
+ [size=120][color=#2196F3][b]操作步骤[/b][/color][/size]
246
+
247
+ [size=100][color=#2196F3][b]步骤 1: {{step1_title}}[/b][/color][/size]
248
+
249
+ {{step1_content}}
250
+
251
+ [quote]
252
+ [size=100][color=#FF9800][b]💡 提示[/b][/color][/size]
253
+
254
+ {{step1_tip}}
255
+ [/quote]
256
+
257
+ [size=100][color=#2196F3][b]步骤 2: {{step2_title}}[/b][/color][/size]
258
+
259
+ {{step2_content}}
260
+
261
+ [size=100][color=#2196F3][b]步骤 3: {{step3_title}}[/b][/color][/size]
262
+
263
+ {{step3_content}}
264
+
265
+ ---
266
+
267
+ [color=#4CAF50][b]✅ 完成![/b][/color] {{completion_message}}
268
+ ```
269
+
270
+ ---
271
+
272
+ ## 版本更新模板
273
+
274
+ ```bbcode
275
+ [size=150][color=#673AB7][b]🎉 版本 {{version}} 更新日志[/b][/color][/size]
276
+
277
+ ---
278
+
279
+ [size=120][color=#4CAF50][b]✨ 新功能[/b][/color][/size]
280
+
281
+ • [b]{{new_feature1}}[/b]: {{new_feature1_desc}}
282
+ • [b]{{new_feature2}}[/b]: {{new_feature2_desc}}
283
+
284
+ [size=120][color=#2196F3][b]🔧 改进[/b][/color][/size]
285
+
286
+ • {{improvement1}}
287
+ • {{improvement2}}
288
+
289
+ [size=120][color=#F44336][b]🐛 修复[/b][/color][/size]
290
+
291
+ • {{bugfix1}}
292
+ • {{bugfix2}}
293
+
294
+ ---
295
+
296
+ [url={{download_url}}][b]📥 立即下载[/b][/url]
297
+ ```
298
+
299
+ ---
300
+
301
+ ## FAQ 模板
302
+
303
+ ```bbcode
304
+ [size=120][color=#2196F3][b]❓ 常见问题[/b][/color][/size]
305
+
306
+ ---
307
+
308
+ [size=100][color=#333][b]Q: {{question1}}[/b][/color][/size]
309
+
310
+ [b]A:[/b] {{answer1}}
311
+
312
+ ---
313
+
314
+ [size=100][color=#333][b]Q: {{question2}}[/b][/color][/size]
315
+
316
+ [b]A:[/b] {{answer2}}
317
+
318
+ ---
319
+
320
+ [size=100][color=#333][b]Q: {{question3}}[/b][/color][/size]
321
+
322
+ [b]A:[/b] {{answer3}}
323
+ ```
324
+
325
+ ---
326
+
327
+ ## 转换检查清单
328
+
329
+ ### 必须检查
330
+
331
+ - [ ] 标题使用像素值 (150/120/100)
332
+ - [ ] 分隔线使用 `---`
333
+ - [ ] 未使用 `[align]`
334
+ - [ ] 未使用 `[hr]`
335
+ - [ ] 未使用 HTML 标签
336
+ - [ ] Callout 标题 size=100
337
+ - [ ] 灰色备注 size=80
338
+
339
+ ### 颜色规范
340
+
341
+ | 用途 | 颜色 |
342
+ |------|------|
343
+ | 主标题 | #2196F3 |
344
+ | 章节标题 | #2196F3 |
345
+ | 子标题 | #333 |
346
+ | 成功/提示 | #4CAF50 |
347
+ | 警告 | #FF9800 |
348
+ | 错误/危险 | #F44336 |
349
+ | 示例 | #9C27B0 |
350
+ | 备注 | gray |
@@ -1 +1 @@
1
- {"version":3,"file":"help-routes.d.ts","sourceRoot":"","sources":["../../../src/core/routes/help-routes.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA8I/C;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAgJ1E"}
1
+ {"version":3,"file":"help-routes.d.ts","sourceRoot":"","sources":["../../../src/core/routes/help-routes.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAsK/C;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CA+J1E"}
@@ -5,6 +5,26 @@
5
5
  import { readFileSync, existsSync, watch } from 'fs';
6
6
  import { join } from 'path';
7
7
  import { homedir } from 'os';
8
+ /**
9
+ * Get the ccw-help index directory path (pure function)
10
+ * Priority: project path (.claude/skills/ccw-help/index) > user path (~/.claude/skills/ccw-help/index)
11
+ * @param projectPath - The project path to check first
12
+ */
13
+ function getIndexDir(projectPath) {
14
+ // Try project path first
15
+ if (projectPath) {
16
+ const projectIndexDir = join(projectPath, '.claude', 'skills', 'ccw-help', 'index');
17
+ if (existsSync(projectIndexDir)) {
18
+ return projectIndexDir;
19
+ }
20
+ }
21
+ // Fall back to user path
22
+ const userIndexDir = join(homedir(), '.claude', 'skills', 'ccw-help', 'index');
23
+ if (existsSync(userIndexDir)) {
24
+ return userIndexDir;
25
+ }
26
+ return null;
27
+ }
8
28
  const cache = new Map();
9
29
  const CACHE_TTL = 300000; // 5 minutes
10
30
  /**
@@ -45,13 +65,14 @@ function invalidateCache(key) {
45
65
  let watchersInitialized = false;
46
66
  /**
47
67
  * Initialize file watchers for JSON indexes
68
+ * @param projectPath - The project path to resolve index directory
48
69
  */
49
- function initializeFileWatchers() {
70
+ function initializeFileWatchers(projectPath) {
50
71
  if (watchersInitialized)
51
72
  return;
52
- const indexDir = join(homedir(), '.claude', 'skills', 'command-guide', 'index');
53
- if (!existsSync(indexDir)) {
54
- console.warn(`Command guide index directory not found: ${indexDir}`);
73
+ const indexDir = getIndexDir(projectPath);
74
+ if (!indexDir) {
75
+ console.warn(`ccw-help index directory not found in project or user paths`);
55
76
  return;
56
77
  }
57
78
  try {
@@ -125,12 +146,17 @@ function groupCommandsByCategory(commands) {
125
146
  * @returns true if route was handled, false otherwise
126
147
  */
127
148
  export async function handleHelpRoutes(ctx) {
128
- const { pathname, url, req, res } = ctx;
149
+ const { pathname, url, req, res, initialPath } = ctx;
129
150
  // Initialize file watchers on first request
130
- initializeFileWatchers();
131
- const indexDir = join(homedir(), '.claude', 'skills', 'command-guide', 'index');
151
+ initializeFileWatchers(initialPath);
152
+ const indexDir = getIndexDir(initialPath);
132
153
  // API: Get all commands with optional search
133
154
  if (pathname === '/api/help/commands') {
155
+ if (!indexDir) {
156
+ res.writeHead(404, { 'Content-Type': 'application/json' });
157
+ res.end(JSON.stringify({ error: 'ccw-help index directory not found' }));
158
+ return true;
159
+ }
134
160
  const searchQuery = url.searchParams.get('q') || '';
135
161
  const filePath = join(indexDir, 'all-commands.json');
136
162
  let commands = getCachedData('all-commands', filePath);
@@ -155,6 +181,11 @@ export async function handleHelpRoutes(ctx) {
155
181
  }
156
182
  // API: Get workflow command relationships
157
183
  if (pathname === '/api/help/workflows') {
184
+ if (!indexDir) {
185
+ res.writeHead(404, { 'Content-Type': 'application/json' });
186
+ res.end(JSON.stringify({ error: 'ccw-help index directory not found' }));
187
+ return true;
188
+ }
158
189
  const filePath = join(indexDir, 'command-relationships.json');
159
190
  const relationships = getCachedData('command-relationships', filePath);
160
191
  if (!relationships) {
@@ -168,6 +199,11 @@ export async function handleHelpRoutes(ctx) {
168
199
  }
169
200
  // API: Get commands by category
170
201
  if (pathname === '/api/help/commands/by-category') {
202
+ if (!indexDir) {
203
+ res.writeHead(404, { 'Content-Type': 'application/json' });
204
+ res.end(JSON.stringify({ error: 'ccw-help index directory not found' }));
205
+ return true;
206
+ }
171
207
  const filePath = join(indexDir, 'by-category.json');
172
208
  const byCategory = getCachedData('by-category', filePath);
173
209
  if (!byCategory) {
@@ -1 +1 @@
1
- {"version":3,"file":"help-routes.js","sourceRoot":"","sources":["../../../src/core/routes/help-routes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAS7B,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;AAC5C,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,YAAY;AAEtC;;GAEG;AACH,SAAS,aAAa,CAAC,GAAW,EAAE,QAAgB;IAClD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAE9B,8BAA8B;IAC9B,IAAI,MAAM,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,SAAS,EAAE,CAAC;QACnD,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,kBAAkB;IAClB,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,KAAK,CAAC,6BAA6B,QAAQ,EAAE,CAAC,CAAC;YACvD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEjC,eAAe;QACf,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QAEzC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,iCAAiC,QAAQ,GAAG,EAAE,KAAK,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,GAAW;IAClC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAClB,OAAO,CAAC,GAAG,CAAC,sBAAsB,GAAG,EAAE,CAAC,CAAC;AAC3C,CAAC;AAED,sCAAsC;AACtC,IAAI,mBAAmB,GAAG,KAAK,CAAC;AAEhC;;GAEG;AACH,SAAS,sBAAsB;IAC7B,IAAI,mBAAmB;QAAE,OAAO;IAEhC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;IAEhF,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,4CAA4C,QAAQ,EAAE,CAAC,CAAC;QACrE,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,0CAA0C;QAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE;YAC5E,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAE,OAAO;YAErD,OAAO,CAAC,GAAG,CAAC,yBAAyB,QAAQ,KAAK,SAAS,GAAG,CAAC,CAAC;YAEhE,oCAAoC;YACpC,IAAI,QAAQ,KAAK,mBAAmB,EAAE,CAAC;gBACrC,eAAe,CAAC,cAAc,CAAC,CAAC;YAClC,CAAC;iBAAM,IAAI,QAAQ,KAAK,4BAA4B,EAAE,CAAC;gBACrD,eAAe,CAAC,uBAAuB,CAAC,CAAC;YAC3C,CAAC;iBAAM,IAAI,QAAQ,KAAK,kBAAkB,EAAE,CAAC;gBAC3C,eAAe,CAAC,aAAa,CAAC,CAAC;YACjC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,mBAAmB,GAAG,IAAI,CAAC;QAC1B,OAAe,CAAC,KAAK,EAAE,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,kCAAkC,QAAQ,EAAE,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED,yCAAyC;AAEzC;;GAEG;AACH,SAAS,cAAc,CAAC,QAAe,EAAE,KAAa;IACpD,IAAI,CAAC,KAAK;QAAE,OAAO,QAAQ,CAAC;IAE5B,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IACvC,OAAO,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC3B,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC5C,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC/C,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;QACnD,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CACjD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAAC,QAAe;IAC9C,MAAM,OAAO,GAAQ,EAAE,CAAC;IAExB,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,IAAI,SAAS,CAAC;QAC3C,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC;QAE5C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAClB,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,EAAE;gBACZ,aAAa,EAAE,EAAE;aAClB,CAAC;QACJ,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;gBAClD,OAAO,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;YACpD,CAAC;YACD,OAAO,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,mCAAmC;AAEnC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAiB;IACtD,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;IAExC,4CAA4C;IAC5C,sBAAsB,EAAE,CAAC;IAEzB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;IAEhF,6CAA6C;IAC7C,IAAI,QAAQ,KAAK,oBAAoB,EAAE,CAAC;QACtC,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;QAErD,IAAI,QAAQ,GAAG,aAAa,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;QAEvD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,qCAAqC;QACrC,IAAI,WAAW,EAAE,CAAC;YAChB,QAAQ,GAAG,cAAc,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QACnD,CAAC;QAED,oBAAoB;QACpB,MAAM,OAAO,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QAElD,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;YACrB,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,OAAO;YAChB,KAAK,EAAE,QAAQ,CAAC,MAAM;SACvB,CAAC,CAAC,CAAC;QACJ,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0CAA0C;IAC1C,IAAI,QAAQ,KAAK,qBAAqB,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,4BAA4B,CAAC,CAAC;QAC9D,MAAM,aAAa,GAAG,aAAa,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAC;QAEvE,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,kCAAkC,EAAE,CAAC,CAAC,CAAC;YACvE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gCAAgC;IAChC,IAAI,QAAQ,KAAK,gCAAgC,EAAE,CAAC;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,aAAa,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QAE1D,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,4CAA4C;IAC5C,IAAI,QAAQ,KAAK,qBAAqB,EAAE,CAAC;QACvC,0CAA0C;QAC1C,MAAM,aAAa,GAAG;YACpB,KAAK,EAAE,uBAAuB;YAC9B,WAAW,EAAE,4DAA4D;YACzE,QAAQ,EAAE;gBACR;oBACE,KAAK,EAAE,cAAc;oBACrB,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,UAAU;4BAChB,WAAW,EAAE,uEAAuE;4BACpF,OAAO,EAAE,qCAAqC;yBAC/C;wBACD;4BACE,IAAI,EAAE,cAAc;4BACpB,WAAW,EAAE,0EAA0E;4BACvF,OAAO,EAAE,4EAA4E;yBACtF;wBACD;4BACE,IAAI,EAAE,mBAAmB;4BACzB,WAAW,EAAE,oEAAoE;4BACjF,OAAO,EAAE,qDAAqD;yBAC/D;qBACF;iBACF;gBACD;oBACE,KAAK,EAAE,iBAAiB;oBACxB,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,kBAAkB;4BACxB,OAAO,EAAE,qCAAqC;4BAC9C,WAAW,EAAE,6BAA6B;yBAC3C;wBACD;4BACE,IAAI,EAAE,aAAa;4BACnB,OAAO,EAAE,8DAA8D;4BACvE,WAAW,EAAE,+BAA+B;yBAC7C;wBACD;4BACE,IAAI,EAAE,iBAAiB;4BACvB,OAAO,EAAE,2EAA2E;4BACpF,WAAW,EAAE,8BAA8B;yBAC5C;wBACD;4BACE,IAAI,EAAE,cAAc;4BACpB,OAAO,EAAE,6BAA6B;4BACtC,WAAW,EAAE,uCAAuC;yBACrD;qBACF;iBACF;gBACD;oBACE,KAAK,EAAE,gBAAgB;oBACvB,KAAK,EAAE;wBACL,EAAE,WAAW,EAAE,4DAA4D,EAAE;wBAC7E,EAAE,WAAW,EAAE,2CAA2C,EAAE;wBAC5D,EAAE,WAAW,EAAE,qDAAqD,EAAE;wBACtE,EAAE,WAAW,EAAE,mCAAmC,EAAG;qBACtD;iBACF;aACF;YACD,KAAK,EAAE;gBACL,EAAE,IAAI,EAAE,oBAAoB,EAAE,GAAG,EAAE,4CAA4C,EAAE;gBACjF,EAAE,IAAI,EAAE,sBAAsB,EAAE,GAAG,EAAE,kCAAkC,EAAE;aAC1E;SACF,CAAC;QAEF,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"help-routes.js","sourceRoot":"","sources":["../../../src/core/routes/help-routes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAG7B;;;;GAIG;AACH,SAAS,WAAW,CAAC,WAA0B;IAC7C,yBAAyB;IACzB,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QACpF,IAAI,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YAChC,OAAO,eAAe,CAAC;QACzB,CAAC;IACH,CAAC;IAED,yBAAyB;IACzB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAC/E,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7B,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAQD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;AAC5C,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,YAAY;AAEtC;;GAEG;AACH,SAAS,aAAa,CAAC,GAAW,EAAE,QAAgB;IAClD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAE9B,8BAA8B;IAC9B,IAAI,MAAM,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,SAAS,EAAE,CAAC;QACnD,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,kBAAkB;IAClB,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,KAAK,CAAC,6BAA6B,QAAQ,EAAE,CAAC,CAAC;YACvD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEjC,eAAe;QACf,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QAEzC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,iCAAiC,QAAQ,GAAG,EAAE,KAAK,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,GAAW;IAClC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAClB,OAAO,CAAC,GAAG,CAAC,sBAAsB,GAAG,EAAE,CAAC,CAAC;AAC3C,CAAC;AAED,sCAAsC;AACtC,IAAI,mBAAmB,GAAG,KAAK,CAAC;AAEhC;;;GAGG;AACH,SAAS,sBAAsB,CAAC,WAA0B;IACxD,IAAI,mBAAmB;QAAE,OAAO;IAEhC,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;IAE1C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;QAC5E,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,0CAA0C;QAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE;YAC5E,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAE,OAAO;YAErD,OAAO,CAAC,GAAG,CAAC,yBAAyB,QAAQ,KAAK,SAAS,GAAG,CAAC,CAAC;YAEhE,oCAAoC;YACpC,IAAI,QAAQ,KAAK,mBAAmB,EAAE,CAAC;gBACrC,eAAe,CAAC,cAAc,CAAC,CAAC;YAClC,CAAC;iBAAM,IAAI,QAAQ,KAAK,4BAA4B,EAAE,CAAC;gBACrD,eAAe,CAAC,uBAAuB,CAAC,CAAC;YAC3C,CAAC;iBAAM,IAAI,QAAQ,KAAK,kBAAkB,EAAE,CAAC;gBAC3C,eAAe,CAAC,aAAa,CAAC,CAAC;YACjC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,mBAAmB,GAAG,IAAI,CAAC;QAC1B,OAAe,CAAC,KAAK,EAAE,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,kCAAkC,QAAQ,EAAE,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED,yCAAyC;AAEzC;;GAEG;AACH,SAAS,cAAc,CAAC,QAAe,EAAE,KAAa;IACpD,IAAI,CAAC,KAAK;QAAE,OAAO,QAAQ,CAAC;IAE5B,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IACvC,OAAO,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC3B,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC5C,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC/C,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;QACnD,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CACjD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAAC,QAAe;IAC9C,MAAM,OAAO,GAAQ,EAAE,CAAC;IAExB,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,IAAI,SAAS,CAAC;QAC3C,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC;QAE5C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAClB,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,EAAE;gBACZ,aAAa,EAAE,EAAE;aAClB,CAAC;QACJ,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;gBAClD,OAAO,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;YACpD,CAAC;YACD,OAAO,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,mCAAmC;AAEnC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAiB;IACtD,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC;IAErD,4CAA4C;IAC5C,sBAAsB,CAAC,WAAW,CAAC,CAAC;IAEpC,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;IAE1C,6CAA6C;IAC7C,IAAI,QAAQ,KAAK,oBAAoB,EAAE,CAAC;QACtC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,oCAAoC,EAAE,CAAC,CAAC,CAAC;YACzE,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;QAErD,IAAI,QAAQ,GAAG,aAAa,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;QAEvD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,qCAAqC;QACrC,IAAI,WAAW,EAAE,CAAC;YAChB,QAAQ,GAAG,cAAc,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QACnD,CAAC;QAED,oBAAoB;QACpB,MAAM,OAAO,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QAElD,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;YACrB,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,OAAO;YAChB,KAAK,EAAE,QAAQ,CAAC,MAAM;SACvB,CAAC,CAAC,CAAC;QACJ,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0CAA0C;IAC1C,IAAI,QAAQ,KAAK,qBAAqB,EAAE,CAAC;QACvC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,oCAAoC,EAAE,CAAC,CAAC,CAAC;YACzE,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,4BAA4B,CAAC,CAAC;QAC9D,MAAM,aAAa,GAAG,aAAa,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAC;QAEvE,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,kCAAkC,EAAE,CAAC,CAAC,CAAC;YACvE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gCAAgC;IAChC,IAAI,QAAQ,KAAK,gCAAgC,EAAE,CAAC;QAClD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,oCAAoC,EAAE,CAAC,CAAC,CAAC;YACzE,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,aAAa,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QAE1D,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,4CAA4C;IAC5C,IAAI,QAAQ,KAAK,qBAAqB,EAAE,CAAC;QACvC,0CAA0C;QAC1C,MAAM,aAAa,GAAG;YACpB,KAAK,EAAE,uBAAuB;YAC9B,WAAW,EAAE,4DAA4D;YACzE,QAAQ,EAAE;gBACR;oBACE,KAAK,EAAE,cAAc;oBACrB,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,UAAU;4BAChB,WAAW,EAAE,uEAAuE;4BACpF,OAAO,EAAE,qCAAqC;yBAC/C;wBACD;4BACE,IAAI,EAAE,cAAc;4BACpB,WAAW,EAAE,0EAA0E;4BACvF,OAAO,EAAE,4EAA4E;yBACtF;wBACD;4BACE,IAAI,EAAE,mBAAmB;4BACzB,WAAW,EAAE,oEAAoE;4BACjF,OAAO,EAAE,qDAAqD;yBAC/D;qBACF;iBACF;gBACD;oBACE,KAAK,EAAE,iBAAiB;oBACxB,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,kBAAkB;4BACxB,OAAO,EAAE,qCAAqC;4BAC9C,WAAW,EAAE,6BAA6B;yBAC3C;wBACD;4BACE,IAAI,EAAE,aAAa;4BACnB,OAAO,EAAE,8DAA8D;4BACvE,WAAW,EAAE,+BAA+B;yBAC7C;wBACD;4BACE,IAAI,EAAE,iBAAiB;4BACvB,OAAO,EAAE,2EAA2E;4BACpF,WAAW,EAAE,8BAA8B;yBAC5C;wBACD;4BACE,IAAI,EAAE,cAAc;4BACpB,OAAO,EAAE,6BAA6B;4BACtC,WAAW,EAAE,uCAAuC;yBACrD;qBACF;iBACF;gBACD;oBACE,KAAK,EAAE,gBAAgB;oBACvB,KAAK,EAAE;wBACL,EAAE,WAAW,EAAE,4DAA4D,EAAE;wBAC7E,EAAE,WAAW,EAAE,2CAA2C,EAAE;wBAC5D,EAAE,WAAW,EAAE,qDAAqD,EAAE;wBACtE,EAAE,WAAW,EAAE,mCAAmC,EAAG;qBACtD;iBACF;aACF;YACD,KAAK,EAAE;gBACL,EAAE,IAAI,EAAE,oBAAoB,EAAE,GAAG,EAAE,4CAA4C,EAAE;gBACjF,EAAE,IAAI,EAAE,sBAAsB,EAAE,GAAG,EAAE,kCAAkC,EAAE;aAC1E;SACF,CAAC;QAEF,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"litellm-api-routes.d.ts","sourceRoot":"","sources":["../../../src/core/routes/litellm-api-routes.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAuF/C,wBAAgB,0BAA0B,SAGzC;AA8ED;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CA+uChF"}
1
+ {"version":3,"file":"litellm-api-routes.d.ts","sourceRoot":"","sources":["../../../src/core/routes/litellm-api-routes.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAuF/C,wBAAgB,0BAA0B,SAGzC;AA8ED;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CA8wChF"}
@@ -37,7 +37,6 @@ const __dirname = dirname(__filename);
37
37
  const PACKAGE_ROOT = pathJoin(__dirname, '..', '..', '..', '..');
38
38
  import { getAllProviders, getProvider, addProvider, updateProvider, deleteProvider, getAllEndpoints, getEndpoint, addEndpoint, updateEndpoint, deleteEndpoint, getDefaultEndpoint, setDefaultEndpoint, getGlobalCacheSettings, updateGlobalCacheSettings, loadLiteLLMApiConfig, saveLiteLLMYamlConfig, generateLiteLLMYamlConfig, getCodexLensEmbeddingRotation, updateCodexLensEmbeddingRotation, getEmbeddingProvidersForRotation, generateRotationEndpoints, syncCodexLensConfig, getEmbeddingPoolConfig, updateEmbeddingPoolConfig, discoverProvidersForModel, getModelPools, getModelPool, addModelPool, updateModelPool, deleteModelPool, getAvailableModelsForType, } from '../../config/litellm-api-config-manager.js';
39
39
  import { getContextCacheStore } from '../../tools/context-cache-store.js';
40
- import { getLiteLLMClient } from '../../tools/litellm-client.js';
41
40
  import { testApiKeyConnection, getDefaultApiBase } from '../services/api-key-tester.js';
42
41
  // Cache for ccw-litellm status check
43
42
  let ccwLitellmStatusCache = {
@@ -246,11 +245,38 @@ export async function handleLiteLLMApiRoutes(ctx) {
246
245
  res.end(JSON.stringify({ success: false, error: 'Provider is disabled' }));
247
246
  return true;
248
247
  }
249
- // Test connection using litellm client
250
- const client = getLiteLLMClient();
251
- const available = await client.isAvailable();
248
+ // Get the API key to test (prefer first key from apiKeys array, fall back to default apiKey)
249
+ let apiKeyValue = null;
250
+ if (provider.apiKeys && provider.apiKeys.length > 0) {
251
+ apiKeyValue = provider.apiKeys[0].key;
252
+ }
253
+ else if (provider.apiKey) {
254
+ apiKeyValue = provider.apiKey;
255
+ }
256
+ if (!apiKeyValue) {
257
+ res.writeHead(200, { 'Content-Type': 'application/json' });
258
+ res.end(JSON.stringify({ success: false, error: 'No API key configured for this provider' }));
259
+ return true;
260
+ }
261
+ // Resolve environment variables in the API key
262
+ const { resolveEnvVar } = await import('../../config/litellm-api-config-manager.js');
263
+ const resolvedKey = resolveEnvVar(apiKeyValue);
264
+ if (!resolvedKey) {
265
+ res.writeHead(200, { 'Content-Type': 'application/json' });
266
+ res.end(JSON.stringify({ success: false, error: 'API key is empty or environment variable not set' }));
267
+ return true;
268
+ }
269
+ // Determine API base URL
270
+ const apiBase = provider.apiBase || getDefaultApiBase(provider.type);
271
+ // Test the API key connection
272
+ const testResult = await testApiKeyConnection(provider.type, apiBase, resolvedKey);
252
273
  res.writeHead(200, { 'Content-Type': 'application/json' });
253
- res.end(JSON.stringify({ success: available, provider: provider.type }));
274
+ res.end(JSON.stringify({
275
+ success: testResult.valid,
276
+ provider: provider.type,
277
+ latencyMs: testResult.latencyMs,
278
+ error: testResult.error,
279
+ }));
254
280
  }
255
281
  catch (err) {
256
282
  res.writeHead(500, { 'Content-Type': 'application/json' });