@winspan/claude-forge 3.6.26 → 3.6.27

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 (40) hide show
  1. package/dist/daemon/index.d.ts.map +1 -1
  2. package/dist/daemon/index.js +1 -0
  3. package/dist/daemon/index.js.map +1 -1
  4. package/dist/storage/repositories/dynamic-pipeline-repository.d.ts +10 -3
  5. package/dist/storage/repositories/dynamic-pipeline-repository.d.ts.map +1 -1
  6. package/dist/storage/repositories/dynamic-pipeline-repository.js +13 -11
  7. package/dist/storage/repositories/dynamic-pipeline-repository.js.map +1 -1
  8. package/dist/storage/repositories/event-repository.js +2 -2
  9. package/dist/storage/repositories/event-repository.js.map +1 -1
  10. package/dist/storage/repositories/maintenance-repository.d.ts.map +1 -1
  11. package/dist/storage/repositories/maintenance-repository.js +1 -0
  12. package/dist/storage/repositories/maintenance-repository.js.map +1 -1
  13. package/dist/web/routes/events.d.ts.map +1 -1
  14. package/dist/web/routes/events.js +4 -5
  15. package/dist/web/routes/events.js.map +1 -1
  16. package/dist/web/routes/knowledge.d.ts.map +1 -1
  17. package/dist/web/routes/knowledge.js +20 -5
  18. package/dist/web/routes/knowledge.js.map +1 -1
  19. package/dist/web/routes/pipelines.d.ts.map +1 -1
  20. package/dist/web/routes/pipelines.js +7 -5
  21. package/dist/web/routes/pipelines.js.map +1 -1
  22. package/dist/web/routes/projects.d.ts.map +1 -1
  23. package/dist/web/routes/projects.js +1 -2
  24. package/dist/web/routes/projects.js.map +1 -1
  25. package/dist/web/routes/quality.d.ts.map +1 -1
  26. package/dist/web/routes/quality.js +46 -11
  27. package/dist/web/routes/quality.js.map +1 -1
  28. package/dist/web/routes/sessions.d.ts.map +1 -1
  29. package/dist/web/routes/sessions.js +23 -12
  30. package/dist/web/routes/sessions.js.map +1 -1
  31. package/dist/web/routes/skills.d.ts.map +1 -1
  32. package/dist/web/routes/skills.js +3 -4
  33. package/dist/web/routes/skills.js.map +1 -1
  34. package/dist/web/utils/validation.d.ts +46 -3
  35. package/dist/web/utils/validation.d.ts.map +1 -1
  36. package/dist/web/utils/validation.js +73 -4
  37. package/dist/web/utils/validation.js.map +1 -1
  38. package/dist/web-static/assets/{index-DL3sxp0u.js → index-BCgOtcuH.js} +7 -3
  39. package/dist/web-static/index.html +1 -1
  40. package/package.json +1 -1
@@ -2,21 +2,90 @@
2
2
  * 统一的输入验证工具
3
3
  * 用于验证 API 请求参数,防止注入攻击和数据异常
4
4
  */
5
+ import { z } from 'zod';
6
+ // ─── 通用 Zod Schemas ─────────────────────────────────────────────────────────
7
+ export const PaginationSchema = z.object({
8
+ limit: z.coerce.number().int().min(1).max(100).default(20),
9
+ offset: z.coerce.number().int().min(0).max(10000).default(0),
10
+ page: z.coerce.number().int().min(1).default(1),
11
+ page_size: z.coerce.number().int().min(1).max(100).default(20),
12
+ });
13
+ export const IdsBodySchema = z.object({
14
+ ids: z.array(z.union([z.string(), z.number()])).min(1).max(100),
15
+ });
16
+ export const StringIdsBodySchema = z.object({
17
+ ids: z.array(z.string().min(1)).min(1).max(100),
18
+ });
19
+ export const NumberIdsBodySchema = z.object({
20
+ ids: z.array(z.number().int().positive()).min(1).max(100),
21
+ });
22
+ export const FileUploadSchema = z.object({
23
+ filename: z.string().regex(/\.(yaml|yml|json|csv)$/i, '只允许上传 .yaml/.json/.csv 文件'),
24
+ });
5
25
  /**
6
- * 验证 limit 参数
26
+ * 解析并校验请求 body,失败时自动返回 400
27
+ * @returns 解析后的数据,或 null(已写入响应)
28
+ */
29
+ export function parseBody(schema, req, res) {
30
+ const result = schema.safeParse(req.body);
31
+ if (!result.success) {
32
+ res.status(400).json({
33
+ error: '请求参数校验失败',
34
+ details: result.error.issues.map((e) => ({ field: e.path.join('.'), message: e.message })),
35
+ });
36
+ return null;
37
+ }
38
+ return result.data;
39
+ }
40
+ /**
41
+ * 解析并校验 query 参数,失败时自动返回 400
42
+ * @returns 解析后的数据,或 null(已写入响应)
43
+ */
44
+ export function parseQuery(schema, req, res) {
45
+ const result = schema.safeParse(req.query);
46
+ if (!result.success) {
47
+ res.status(400).json({
48
+ error: '查询参数校验失败',
49
+ details: result.error.issues.map((e) => ({ field: e.path.join('.'), message: e.message })),
50
+ });
51
+ return null;
52
+ }
53
+ return result.data;
54
+ }
55
+ /**
56
+ * 验证 limit 参数(强制分页)
7
57
  * @param value 用户输入的值
8
58
  * @param min 最小值(默认 1)
9
- * @param max 最大值(默认 1000)
10
- * @param defaultValue 默认值(默认 100
59
+ * @param max 最大值(默认 100,强制上限)
60
+ * @param defaultValue 默认值(默认 20
11
61
  * @returns 验证后的数值
62
+ *
63
+ * 规则:
64
+ * - 默认 limit=20,最大 limit=100(防止大数据量查询)
65
+ * - 无效值或超出范围时返回默认值
66
+ * - 所有列表接口必须使用此函数进行分页校验
12
67
  */
13
- export function validateLimit(value, min = 1, max = 1000, defaultValue = 100) {
68
+ export function validateLimit(value, min = 1, max = 100, defaultValue = 20) {
14
69
  const num = Number(value);
15
70
  if (!Number.isFinite(num) || num < min || num > max) {
16
71
  return defaultValue;
17
72
  }
18
73
  return Math.floor(num);
19
74
  }
75
+ /**
76
+ * 验证 offset 参数
77
+ * @param value 用户输入的值
78
+ * @param max 最大值(默认 10000,防止深度分页性能问题)
79
+ * @param defaultValue 默认值(默认 0)
80
+ * @returns 验证后的数值
81
+ */
82
+ export function validateOffset(value, max = 10000, defaultValue = 0) {
83
+ const num = Number(value);
84
+ if (!Number.isFinite(num) || num < 0 || num > max) {
85
+ return defaultValue;
86
+ }
87
+ return Math.floor(num);
88
+ }
20
89
  /**
21
90
  * 验证正整数
22
91
  * @param value 用户输入的值
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/web/utils/validation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/web/utils/validation.ts"],"names":[],"mappings":"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"}