@uluops/ops-sdk 1.8.3 → 1.8.5

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 (62) hide show
  1. package/CHANGELOG.md +45 -1
  2. package/README.md +70 -49
  3. package/dist/client.d.ts +10 -45
  4. package/dist/client.d.ts.map +1 -1
  5. package/dist/client.js +16 -11
  6. package/dist/client.js.map +1 -1
  7. package/dist/config/constants.d.ts +2 -2
  8. package/dist/config/constants.js +1 -1
  9. package/dist/config/validators.d.ts +156 -177
  10. package/dist/config/validators.d.ts.map +1 -1
  11. package/dist/config/validators.js +146 -4
  12. package/dist/config/validators.js.map +1 -1
  13. package/dist/http/http-client.d.ts +17 -2
  14. package/dist/http/http-client.d.ts.map +1 -1
  15. package/dist/http/http-client.js +6 -1
  16. package/dist/http/http-client.js.map +1 -1
  17. package/dist/index.d.ts +1 -0
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js.map +1 -1
  20. package/dist/operations/analytics.d.ts +86 -29
  21. package/dist/operations/analytics.d.ts.map +1 -1
  22. package/dist/operations/analytics.js +89 -32
  23. package/dist/operations/analytics.js.map +1 -1
  24. package/dist/operations/auth.d.ts +46 -8
  25. package/dist/operations/auth.d.ts.map +1 -1
  26. package/dist/operations/auth.js +46 -8
  27. package/dist/operations/auth.js.map +1 -1
  28. package/dist/operations/issues.d.ts +86 -16
  29. package/dist/operations/issues.d.ts.map +1 -1
  30. package/dist/operations/issues.js +86 -16
  31. package/dist/operations/issues.js.map +1 -1
  32. package/dist/operations/projects.d.ts +64 -10
  33. package/dist/operations/projects.d.ts.map +1 -1
  34. package/dist/operations/projects.js +71 -20
  35. package/dist/operations/projects.js.map +1 -1
  36. package/dist/operations/runs.d.ts +103 -19
  37. package/dist/operations/runs.d.ts.map +1 -1
  38. package/dist/operations/runs.js +107 -20
  39. package/dist/operations/runs.js.map +1 -1
  40. package/dist/types/analytics.d.ts +13 -21
  41. package/dist/types/analytics.d.ts.map +1 -1
  42. package/dist/types/index.d.ts +0 -1
  43. package/dist/types/index.d.ts.map +1 -1
  44. package/dist/types/index.js +1 -2
  45. package/dist/types/index.js.map +1 -1
  46. package/dist/types/projects.d.ts +0 -6
  47. package/dist/types/projects.d.ts.map +1 -1
  48. package/dist/types/response-schemas.d.ts +8 -38
  49. package/dist/types/response-schemas.d.ts.map +1 -1
  50. package/dist/types/response-schemas.js +9 -7
  51. package/dist/types/response-schemas.js.map +1 -1
  52. package/dist/types/runs.d.ts +0 -6
  53. package/dist/types/runs.d.ts.map +1 -1
  54. package/dist/types/schemas.d.ts +3 -24
  55. package/dist/types/schemas.d.ts.map +1 -1
  56. package/dist/types/schemas.js +5 -7
  57. package/dist/types/schemas.js.map +1 -1
  58. package/package.json +4 -4
  59. package/dist/operations/admin.d.ts +0 -89
  60. package/dist/operations/admin.d.ts.map +0 -1
  61. package/dist/operations/admin.js +0 -134
  62. package/dist/operations/admin.js.map +0 -1
@@ -1,188 +1,167 @@
1
1
  import { z } from 'zod';
2
+ import { CreateProjectInputSchema, SaveRunInputSchema, CreateUserIssueInputSchema, UpdateIssueStatusInputSchema, CreateIssueNoteInputSchema, ArchiveRunsInputSchema, RegisterInputSchema, LoginInputSchema, UpdateProfileInputSchema, ChangePasswordInputSchema, ResetPasswordInputSchema, CreateApiKeyInputSchema, BulkStatusUpdateInputSchema, DeleteProjectInputSchema, RenameProjectInputSchema, UpdateIssueInputSchema } from '../types/schemas.js';
2
3
  /**
3
- * Validation error with details
4
+ * Client-side validation error thrown when input fails Zod schema validation.
5
+ *
6
+ * Contains structured error details from Zod for programmatic inspection.
7
+ * Import from `@uluops/ops-sdk/errors` or `@uluops/ops-sdk/config`.
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * try {
12
+ * validateSaveRunInput(data);
13
+ * } catch (err) {
14
+ * if (err instanceof InputValidationError) {
15
+ * console.log(err.message); // "Invalid save run: project: String must contain at least 1 character(s)"
16
+ * console.log(err.errors); // Zod issue array with path, code, message per field
17
+ * }
18
+ * }
19
+ * ```
4
20
  */
5
21
  export declare class InputValidationError extends Error {
6
22
  readonly errors: z.ZodError['issues'];
7
23
  constructor(message: string, errors: z.ZodError['issues']);
8
24
  }
9
- export declare function validateRegisterInput(data: unknown): {
10
- email: string;
11
- password: string;
12
- };
13
- export declare function validateLoginInput(data: unknown): {
14
- email: string;
15
- password: string;
16
- };
17
- export declare function validateUpdateProfileInput(data: unknown): {
18
- username?: string | null | undefined;
19
- name?: string | null | undefined;
20
- bio?: string | null | undefined;
21
- timezone?: string | null | undefined;
22
- websiteUrl?: string | null | undefined;
23
- avatar?: string | null | undefined;
24
- avatarMimeType?: "image/png" | "image/jpeg" | "image/gif" | "image/webp" | null | undefined;
25
- };
26
- export declare function validateChangePasswordInput(data: unknown): {
27
- currentPassword: string;
28
- newPassword: string;
29
- };
30
- export declare function validateResetPasswordInput(data: unknown): {
31
- token: string;
32
- password: string;
33
- };
34
- export declare function validateCreateApiKeyInput(data: unknown): {
35
- name?: string | undefined;
36
- expiresAt?: string | undefined;
37
- };
38
- export declare function validateCreateProjectInput(data: unknown): {
39
- name: string;
40
- };
41
- export declare function validateDeleteProjectInput(data: unknown): {
42
- confirm: true;
43
- confirmationPhrase: string;
44
- };
45
- export declare function validateRenameProjectInput(data: unknown): {
46
- oldName: string;
47
- newName: string;
48
- };
49
- export declare function validateSaveRunInput(data: unknown): {
50
- project: string;
51
- workflowType: string;
52
- agents: {
53
- name: string;
54
- score: number;
55
- decision: string;
56
- maxScore?: number | undefined;
57
- summary?: string | undefined;
58
- model?: string | undefined;
59
- tokens?: {
60
- inputTokens: number;
61
- outputTokens: number;
62
- cacheCreationTokens?: number | undefined;
63
- cacheReadTokens?: number | undefined;
64
- totalEffectiveTokens?: number | undefined;
65
- } | undefined;
66
- durationMs?: number | undefined;
67
- }[];
68
- recommendations: {
69
- agent: string;
70
- title: string;
71
- priority: "critical" | "high" | "suggested" | "backlog";
72
- type?: "observation" | "feature" | "bug" | "refactor" | "config" | "docs" | "infra" | "security" | "test" | "deficiency" | "ambiguity" | undefined;
73
- severity?: "critical" | "high" | "medium" | "low" | "info" | undefined;
74
- failureCode?: string | undefined;
75
- failureDomain?: "STR" | "SEM" | "PRA" | "EPI" | undefined;
76
- failureMode?: string | undefined;
77
- category?: string | undefined;
78
- filePath?: string | undefined;
79
- lineNumber?: number | null | undefined;
80
- description?: string | undefined;
81
- classificationConfidence?: "high" | "medium" | "low" | undefined;
82
- classifiedBy?: "agent" | "classifier" | "human" | undefined;
83
- secondaryFailureCodes?: string[] | undefined;
84
- taxonomyVersion?: string | undefined;
85
- }[];
86
- timestamp?: string | undefined;
87
- rawMarkdown?: string | undefined;
88
- summary?: {
89
- allGatesPassed?: boolean | undefined;
90
- averageScore?: number | undefined;
91
- } | undefined;
92
- idempotencyKey?: string | undefined;
93
- definitionType?: string | undefined;
94
- definitionName?: string | undefined;
95
- definitionVersion?: string | undefined;
96
- definitionHash?: string | undefined;
97
- definitionMinSubscription?: "free" | "hobbyist" | "plus" | "pro" | "enterprise" | undefined;
98
- analysisRecords?: {
99
- recordType: string;
100
- recordId: string;
101
- title: string;
102
- data: Record<string, unknown>;
103
- classification?: string | null | undefined;
104
- severity?: "critical" | "high" | "medium" | "low" | "info" | null | undefined;
105
- }[] | undefined;
106
- analysisSummary?: {
107
- decision: string;
108
- score: number;
109
- decisionVocabulary?: string | null | undefined;
110
- systemMetrics?: Record<string, unknown> | null | undefined;
111
- categoryScores?: {
112
- name: string;
113
- weight: number;
114
- score: number;
115
- }[] | null | undefined;
116
- epistemicAssessment?: Record<string, unknown> | null | undefined;
117
- auditImplications?: string[] | null | undefined;
118
- } | {
119
- decision: string;
120
- score: number;
121
- agentName?: string | undefined;
122
- decisionVocabulary?: string | null | undefined;
123
- systemMetrics?: Record<string, unknown> | null | undefined;
124
- categoryScores?: {
125
- name: string;
126
- weight: number;
127
- score: number;
128
- }[] | null | undefined;
129
- epistemicAssessment?: Record<string, unknown> | null | undefined;
130
- auditImplications?: string[] | null | undefined;
131
- }[] | undefined;
132
- };
133
- export declare function validateArchiveRunsInput(data: unknown): {
134
- project: string;
135
- beforeRunNumber?: number | undefined;
136
- beforeDate?: string | undefined;
137
- keepLast?: number | undefined;
138
- reason?: string | undefined;
139
- };
140
- export declare function validateCreateUserIssueInput(data: unknown): {
141
- project: string;
142
- title: string;
143
- priority: "critical" | "high" | "suggested" | "backlog";
144
- severity?: "critical" | "high" | "medium" | "low" | "info" | undefined;
145
- category?: string | undefined;
146
- description?: string | undefined;
147
- filePath?: string | undefined;
148
- lineNumber?: number | null | undefined;
149
- failureCode?: string | undefined;
150
- failureDomain?: "STR" | "SEM" | "PRA" | "EPI" | undefined;
151
- failureMode?: string | undefined;
152
- agent?: string | undefined;
153
- type?: "observation" | "feature" | "bug" | "refactor" | "config" | "docs" | "infra" | "security" | "test" | "deficiency" | "ambiguity" | undefined;
154
- };
155
- export declare function validateUpdateIssueInput(data: unknown): {
156
- title?: string | undefined;
157
- status?: "open" | "completed" | "deferred" | "wontfix" | "merged" | "false-positive" | "observation" | undefined;
158
- priority?: "critical" | "high" | "suggested" | "backlog" | undefined;
159
- severity?: "critical" | "high" | "medium" | "low" | "info" | null | undefined;
160
- failureCode?: string | null | undefined;
161
- failureDomain?: "STR" | "SEM" | "PRA" | "EPI" | null | undefined;
162
- failureMode?: string | null | undefined;
163
- category?: string | null | undefined;
164
- type?: "observation" | "feature" | "bug" | "refactor" | "config" | "docs" | "infra" | "security" | "test" | "deficiency" | "ambiguity" | null | undefined;
165
- filePath?: string | null | undefined;
166
- lineNumber?: number | null | undefined;
167
- };
168
- export declare function validateUpdateIssueStatusInput(data: unknown): {
169
- status: "open" | "completed" | "deferred" | "wontfix" | "merged" | "false-positive" | "observation";
170
- reason?: string | undefined;
171
- };
172
- export declare function validateCreateIssueNoteInput(data: unknown): {
173
- content: string;
174
- noteType?: "context" | "resolution" | "blocker" | undefined;
175
- createdBy?: string | undefined;
176
- };
177
- export declare function validateBulkStatusUpdateInput(data: unknown): {
178
- updates: {
179
- status: "open" | "completed" | "deferred" | "wontfix" | "merged" | "false-positive" | "observation";
180
- issueId?: string | undefined;
181
- id?: string | undefined;
182
- reason?: string | undefined;
183
- }[];
184
- };
25
+ /**
26
+ * Validate user registration input.
27
+ * @param data - Raw input: `{ email: string (valid email, max 255), password: string (8-128 chars, requires uppercase + lowercase + digit) }`
28
+ * @returns Validated `RegisterInput`
29
+ * @throws {InputValidationError} If email is invalid or password doesn't meet requirements
30
+ */
31
+ export declare function validateRegisterInput(data: unknown): z.infer<typeof RegisterInputSchema>;
32
+ /**
33
+ * Validate login input.
34
+ * @param data - Raw input: `{ email: string, password: string }`
35
+ * @returns Validated `LoginInput`
36
+ * @throws {InputValidationError} If email or password is missing
37
+ */
38
+ export declare function validateLoginInput(data: unknown): z.infer<typeof LoginInputSchema>;
39
+ /**
40
+ * Validate profile update input. At least one field must be provided.
41
+ * @param data - Raw input: `{ username?, name?, bio?, timezone?, websiteUrl?, avatar?, avatarMimeType? }`
42
+ * @returns Validated `UpdateProfileInput`
43
+ * @throws {InputValidationError} If no fields provided, or username doesn't match `^[a-z][a-z0-9_]{2,29}$`
44
+ */
45
+ export declare function validateUpdateProfileInput(data: unknown): z.infer<typeof UpdateProfileInputSchema>;
46
+ /**
47
+ * Validate password change input.
48
+ * @param data - Raw input: `{ currentPassword: string, newPassword: string (8-128, upper+lower+digit) }`
49
+ * @returns Validated `ChangePasswordInput`
50
+ * @throws {InputValidationError} If current password missing or new password doesn't meet requirements
51
+ */
52
+ export declare function validateChangePasswordInput(data: unknown): z.infer<typeof ChangePasswordInputSchema>;
53
+ /**
54
+ * Validate password reset input (from reset email).
55
+ * @param data - Raw input: `{ token: string, password: string (8-128, upper+lower+digit) }`
56
+ * @returns Validated `ResetPasswordInput`
57
+ * @throws {InputValidationError} If token missing or password doesn't meet requirements
58
+ */
59
+ export declare function validateResetPasswordInput(data: unknown): z.infer<typeof ResetPasswordInputSchema>;
60
+ /**
61
+ * Validate API key creation input.
62
+ * @param data - Raw input: `{ name?: string (max 100), expiresAt?: string (ISO 8601) }`
63
+ * @returns Validated `CreateApiKeyInput`
64
+ * @throws {InputValidationError} If name exceeds 100 chars or expiresAt is not valid ISO 8601
65
+ */
66
+ export declare function validateCreateApiKeyInput(data: unknown): z.infer<typeof CreateApiKeyInputSchema>;
67
+ /**
68
+ * Validate project creation input.
69
+ * @param data - Raw input: `{ name: string (1-200 chars) }`
70
+ * @returns Validated `CreateProjectInput`
71
+ * @throws {InputValidationError} If name is empty or exceeds 200 chars
72
+ */
73
+ export declare function validateCreateProjectInput(data: unknown): z.infer<typeof CreateProjectInputSchema>;
74
+ /**
75
+ * Validate project deletion input. Requires explicit confirmation.
76
+ * @param data - Raw input: `{ confirm: true, confirmationPhrase: string }`
77
+ * @returns Validated `DeleteProjectInput`
78
+ * @throws {InputValidationError} If confirm is not `true` or confirmationPhrase is missing
79
+ */
80
+ export declare function validateDeleteProjectInput(data: unknown): z.infer<typeof DeleteProjectInputSchema>;
81
+ /**
82
+ * Validate project rename input.
83
+ * @param data - Raw input: `{ oldName: string, newName: string (1-200 chars) }`
84
+ * @returns Validated `RenameProjectInput`
85
+ * @throws {InputValidationError} If either name is empty or newName exceeds 200 chars
86
+ */
87
+ export declare function validateRenameProjectInput(data: unknown): z.infer<typeof RenameProjectInputSchema>;
88
+ /**
89
+ * Validate save run input. This is the primary validation for `client.runs.save()`.
90
+ * @param data - Raw input with required fields: `project` (1-200), `workflowType` (1-100),
91
+ * `agents` (non-empty array), `recommendations` (array, use `[]` for empty).
92
+ * Optional: `summary`, `rawMarkdown`, `idempotencyKey`, `definitionType/Name/Version/Hash`,
93
+ * `analysisRecords`, `analysisSummary`.
94
+ * @returns Validated `SaveRunInput`
95
+ * @throws {InputValidationError} If required fields missing, agents empty, or field constraints violated
96
+ */
97
+ export declare function validateSaveRunInput(data: unknown): z.infer<typeof SaveRunInputSchema>;
98
+ /**
99
+ * Validate archive runs input.
100
+ * @param data - Raw input: `{ project: string }` plus at least one filter:
101
+ * `beforeRunNumber?`, `beforeDate?` (ISO 8601), `keepLast?`, `reason?` (max 500)
102
+ * @returns Validated `ArchiveRunsInput`
103
+ * @throws {InputValidationError} If project missing or filter constraints violated
104
+ */
105
+ export declare function validateArchiveRunsInput(data: unknown): z.infer<typeof ArchiveRunsInputSchema>;
106
+ /**
107
+ * Validate user-submitted issue creation input.
108
+ * @param data - Raw input with required: `project` (1-200), `title` (1-500),
109
+ * `priority` ('critical' | 'high' | 'suggested' | 'backlog').
110
+ * Optional: `severity`, `category`, `description` (max 10000), `filePath`, `lineNumber`,
111
+ * `failureCode` (e.g. 'SEM-VAL/H'), `failureDomain`, `failureMode`, `agent`, `type`.
112
+ * @returns Validated `CreateUserIssueInput`
113
+ * @throws {InputValidationError} If required fields missing or constraints violated
114
+ */
115
+ export declare function validateCreateUserIssueInput(data: unknown): z.infer<typeof CreateUserIssueInputSchema>;
116
+ /**
117
+ * Validate issue metadata update input. All fields optional.
118
+ * @param data - Raw input: `{ title?, status?, priority?, severity?, failureCode?, filePath?, lineNumber?, ... }`
119
+ * @returns Validated `UpdateIssueInput`
120
+ * @throws {InputValidationError} If any provided field violates its constraints
121
+ */
122
+ export declare function validateUpdateIssueInput(data: unknown): z.infer<typeof UpdateIssueInputSchema>;
123
+ /**
124
+ * Validate issue status update input.
125
+ * @param data - Raw input: `{ status: Status, reason?: string (max 500) }`
126
+ * @returns Validated `UpdateIssueStatusInput`
127
+ * @throws {InputValidationError} If status is not a valid Status enum value
128
+ */
129
+ export declare function validateUpdateIssueStatusInput(data: unknown): z.infer<typeof UpdateIssueStatusInputSchema>;
130
+ /**
131
+ * Validate issue note creation input.
132
+ * @param data - Raw input: `{ content: string (1-10000), noteType?: NoteType, createdBy?: string }`
133
+ * @returns Validated `CreateIssueNoteInput`
134
+ * @throws {InputValidationError} If content is empty or exceeds 10000 chars
135
+ */
136
+ export declare function validateCreateIssueNoteInput(data: unknown): z.infer<typeof CreateIssueNoteInputSchema>;
137
+ /**
138
+ * Validate bulk issue status update input. Max 100 items per request.
139
+ * @param data - Raw input: `{ updates: Array<{ issueId?: string, id?: string, status: Status, reason?: string }> }`
140
+ * @returns Validated bulk update input
141
+ * @throws {InputValidationError} If updates array is empty, exceeds 100 items, or any item has invalid status
142
+ */
143
+ export declare function validateBulkStatusUpdateInput(data: unknown): z.infer<typeof BulkStatusUpdateInputSchema>;
144
+ /**
145
+ * Validate that a string is a valid UUID v1-5.
146
+ * @param value - The string to validate
147
+ * @param fieldName - Field name for error messages (e.g. 'projectId', 'issueId')
148
+ * @throws {InputValidationError} If value is not a valid UUID format
149
+ */
185
150
  export declare function validateUuid(value: string, fieldName: string): void;
151
+ /**
152
+ * Validate that a value is a non-empty string after trimming.
153
+ * @param value - The value to validate
154
+ * @param fieldName - Field name for error messages
155
+ * @returns The trimmed string
156
+ * @throws {InputValidationError} If value is not a string or is empty after trimming
157
+ */
186
158
  export declare function validateRequiredString(value: unknown, fieldName: string): string;
159
+ /**
160
+ * Validate that a value is a positive integer (> 0).
161
+ * @param value - The value to validate (coerced via `Number()`)
162
+ * @param fieldName - Field name for error messages
163
+ * @returns The validated number
164
+ * @throws {InputValidationError} If value is not a positive integer
165
+ */
187
166
  export declare function validatePositiveInt(value: unknown, fieldName: string): number;
188
167
  //# sourceMappingURL=validators.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/config/validators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAoBxB;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;aAG3B,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAD5C,OAAO,EAAE,MAAM,EACC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;CAK/C;AA2BD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO;;;EAElD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO;;;EAE/C;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,OAAO;;;;;;;;EAEvD;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,OAAO;;;EAExD;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,OAAO;;;EAEvD;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,OAAO;;;EAEtD;AAMD,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,OAAO;;EAEvD;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,OAAO;;;EAEvD;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,OAAO;;;EAEvD;AAMD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEjD;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,OAAO;;;;;;EAErD;AAMD,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,OAAO;;;;;;;;;;;;;;EAEzD;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,OAAO;;;;;;;;;;;;EAErD;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,OAAO;;;EAE3D;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,OAAO;;;;EAEzD;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,OAAO;;;;;;;EAE1D;AAOD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAKnE;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAKhF;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAM7E"}
1
+ {"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/config/validators.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,21 @@
1
1
  import { CreateProjectInputSchema, SaveRunInputSchema, CreateUserIssueInputSchema, UpdateIssueStatusInputSchema, CreateIssueNoteInputSchema, ArchiveRunsInputSchema, RegisterInputSchema, LoginInputSchema, UpdateProfileInputSchema, ChangePasswordInputSchema, ResetPasswordInputSchema, CreateApiKeyInputSchema, BulkStatusUpdateInputSchema, DeleteProjectInputSchema, RenameProjectInputSchema, UpdateIssueInputSchema, } from '../types/schemas.js';
2
2
  /**
3
- * Validation error with details
3
+ * Client-side validation error thrown when input fails Zod schema validation.
4
+ *
5
+ * Contains structured error details from Zod for programmatic inspection.
6
+ * Import from `@uluops/ops-sdk/errors` or `@uluops/ops-sdk/config`.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * try {
11
+ * validateSaveRunInput(data);
12
+ * } catch (err) {
13
+ * if (err instanceof InputValidationError) {
14
+ * console.log(err.message); // "Invalid save run: project: String must contain at least 1 character(s)"
15
+ * console.log(err.errors); // Zod issue array with path, code, message per field
16
+ * }
17
+ * }
18
+ * ```
4
19
  */
5
20
  export class InputValidationError extends Error {
6
21
  errors;
@@ -11,7 +26,7 @@ export class InputValidationError extends Error {
11
26
  }
12
27
  }
13
28
  /**
14
- * Generic validation function
29
+ * Format a single Zod issue into a human-readable string.
15
30
  */
16
31
  function formatZodIssue(e) {
17
32
  const field = e.path.join('.') || '(root)';
@@ -32,78 +47,205 @@ function validate(schema, data, context) {
32
47
  // ============================================
33
48
  // AUTH VALIDATORS
34
49
  // ============================================
50
+ /**
51
+ * Validate user registration input.
52
+ * @param data - Raw input: `{ email: string (valid email, max 255), password: string (8-128 chars, requires uppercase + lowercase + digit) }`
53
+ * @returns Validated `RegisterInput`
54
+ * @throws {InputValidationError} If email is invalid or password doesn't meet requirements
55
+ */
35
56
  export function validateRegisterInput(data) {
36
57
  return validate(RegisterInputSchema, data, 'register input');
37
58
  }
59
+ /**
60
+ * Validate login input.
61
+ * @param data - Raw input: `{ email: string, password: string }`
62
+ * @returns Validated `LoginInput`
63
+ * @throws {InputValidationError} If email or password is missing
64
+ */
38
65
  export function validateLoginInput(data) {
39
66
  return validate(LoginInputSchema, data, 'login input');
40
67
  }
68
+ /**
69
+ * Validate profile update input. At least one field must be provided.
70
+ * @param data - Raw input: `{ username?, name?, bio?, timezone?, websiteUrl?, avatar?, avatarMimeType? }`
71
+ * @returns Validated `UpdateProfileInput`
72
+ * @throws {InputValidationError} If no fields provided, or username doesn't match `^[a-z][a-z0-9_]{2,29}$`
73
+ */
41
74
  export function validateUpdateProfileInput(data) {
42
75
  return validate(UpdateProfileInputSchema, data, 'profile update');
43
76
  }
77
+ /**
78
+ * Validate password change input.
79
+ * @param data - Raw input: `{ currentPassword: string, newPassword: string (8-128, upper+lower+digit) }`
80
+ * @returns Validated `ChangePasswordInput`
81
+ * @throws {InputValidationError} If current password missing or new password doesn't meet requirements
82
+ */
44
83
  export function validateChangePasswordInput(data) {
45
84
  return validate(ChangePasswordInputSchema, data, 'password change');
46
85
  }
86
+ /**
87
+ * Validate password reset input (from reset email).
88
+ * @param data - Raw input: `{ token: string, password: string (8-128, upper+lower+digit) }`
89
+ * @returns Validated `ResetPasswordInput`
90
+ * @throws {InputValidationError} If token missing or password doesn't meet requirements
91
+ */
47
92
  export function validateResetPasswordInput(data) {
48
93
  return validate(ResetPasswordInputSchema, data, 'password reset');
49
94
  }
95
+ /**
96
+ * Validate API key creation input.
97
+ * @param data - Raw input: `{ name?: string (max 100), expiresAt?: string (ISO 8601) }`
98
+ * @returns Validated `CreateApiKeyInput`
99
+ * @throws {InputValidationError} If name exceeds 100 chars or expiresAt is not valid ISO 8601
100
+ */
50
101
  export function validateCreateApiKeyInput(data) {
51
102
  return validate(CreateApiKeyInputSchema, data, 'API key creation');
52
103
  }
53
104
  // ============================================
54
105
  // PROJECT VALIDATORS
55
106
  // ============================================
107
+ /**
108
+ * Validate project creation input.
109
+ * @param data - Raw input: `{ name: string (1-200 chars) }`
110
+ * @returns Validated `CreateProjectInput`
111
+ * @throws {InputValidationError} If name is empty or exceeds 200 chars
112
+ */
56
113
  export function validateCreateProjectInput(data) {
57
114
  return validate(CreateProjectInputSchema, data, 'project creation');
58
115
  }
116
+ /**
117
+ * Validate project deletion input. Requires explicit confirmation.
118
+ * @param data - Raw input: `{ confirm: true, confirmationPhrase: string }`
119
+ * @returns Validated `DeleteProjectInput`
120
+ * @throws {InputValidationError} If confirm is not `true` or confirmationPhrase is missing
121
+ */
59
122
  export function validateDeleteProjectInput(data) {
60
123
  return validate(DeleteProjectInputSchema, data, 'project deletion');
61
124
  }
125
+ /**
126
+ * Validate project rename input.
127
+ * @param data - Raw input: `{ oldName: string, newName: string (1-200 chars) }`
128
+ * @returns Validated `RenameProjectInput`
129
+ * @throws {InputValidationError} If either name is empty or newName exceeds 200 chars
130
+ */
62
131
  export function validateRenameProjectInput(data) {
63
132
  return validate(RenameProjectInputSchema, data, 'project rename');
64
133
  }
65
134
  // ============================================
66
135
  // RUN VALIDATORS
67
136
  // ============================================
137
+ /**
138
+ * Validate save run input. This is the primary validation for `client.runs.save()`.
139
+ * @param data - Raw input with required fields: `project` (1-200), `workflowType` (1-100),
140
+ * `agents` (non-empty array), `recommendations` (array, use `[]` for empty).
141
+ * Optional: `summary`, `rawMarkdown`, `idempotencyKey`, `definitionType/Name/Version/Hash`,
142
+ * `analysisRecords`, `analysisSummary`.
143
+ * @returns Validated `SaveRunInput`
144
+ * @throws {InputValidationError} If required fields missing, agents empty, or field constraints violated
145
+ */
68
146
  export function validateSaveRunInput(data) {
69
147
  return validate(SaveRunInputSchema, data, 'save run');
70
148
  }
149
+ /**
150
+ * Validate archive runs input.
151
+ * @param data - Raw input: `{ project: string }` plus at least one filter:
152
+ * `beforeRunNumber?`, `beforeDate?` (ISO 8601), `keepLast?`, `reason?` (max 500)
153
+ * @returns Validated `ArchiveRunsInput`
154
+ * @throws {InputValidationError} If project missing or filter constraints violated
155
+ */
71
156
  export function validateArchiveRunsInput(data) {
72
157
  return validate(ArchiveRunsInputSchema, data, 'archive runs');
73
158
  }
74
159
  // ============================================
75
160
  // ISSUE VALIDATORS
76
161
  // ============================================
162
+ /**
163
+ * Validate user-submitted issue creation input.
164
+ * @param data - Raw input with required: `project` (1-200), `title` (1-500),
165
+ * `priority` ('critical' | 'high' | 'suggested' | 'backlog').
166
+ * Optional: `severity`, `category`, `description` (max 10000), `filePath`, `lineNumber`,
167
+ * `failureCode` (e.g. 'SEM-VAL/H'), `failureDomain`, `failureMode`, `agent`, `type`.
168
+ * @returns Validated `CreateUserIssueInput`
169
+ * @throws {InputValidationError} If required fields missing or constraints violated
170
+ */
77
171
  export function validateCreateUserIssueInput(data) {
78
172
  return validate(CreateUserIssueInputSchema, data, 'issue creation');
79
173
  }
174
+ /**
175
+ * Validate issue metadata update input. All fields optional.
176
+ * @param data - Raw input: `{ title?, status?, priority?, severity?, failureCode?, filePath?, lineNumber?, ... }`
177
+ * @returns Validated `UpdateIssueInput`
178
+ * @throws {InputValidationError} If any provided field violates its constraints
179
+ */
80
180
  export function validateUpdateIssueInput(data) {
81
181
  return validate(UpdateIssueInputSchema, data, 'issue update');
82
182
  }
183
+ /**
184
+ * Validate issue status update input.
185
+ * @param data - Raw input: `{ status: Status, reason?: string (max 500) }`
186
+ * @returns Validated `UpdateIssueStatusInput`
187
+ * @throws {InputValidationError} If status is not a valid Status enum value
188
+ */
83
189
  export function validateUpdateIssueStatusInput(data) {
84
190
  return validate(UpdateIssueStatusInputSchema, data, 'status update');
85
191
  }
192
+ /**
193
+ * Validate issue note creation input.
194
+ * @param data - Raw input: `{ content: string (1-10000), noteType?: NoteType, createdBy?: string }`
195
+ * @returns Validated `CreateIssueNoteInput`
196
+ * @throws {InputValidationError} If content is empty or exceeds 10000 chars
197
+ */
86
198
  export function validateCreateIssueNoteInput(data) {
87
199
  return validate(CreateIssueNoteInputSchema, data, 'issue note');
88
200
  }
201
+ /**
202
+ * Validate bulk issue status update input. Max 100 items per request.
203
+ * @param data - Raw input: `{ updates: Array<{ issueId?: string, id?: string, status: Status, reason?: string }> }`
204
+ * @returns Validated bulk update input
205
+ * @throws {InputValidationError} If updates array is empty, exceeds 100 items, or any item has invalid status
206
+ */
89
207
  export function validateBulkStatusUpdateInput(data) {
90
208
  return validate(BulkStatusUpdateInputSchema, data, 'bulk status update');
91
209
  }
92
210
  // ============================================
93
211
  // SIMPLE VALIDATORS
94
212
  // ============================================
213
+ /**
214
+ * Validate that a string is a valid UUID v1-5.
215
+ * @param value - The string to validate
216
+ * @param fieldName - Field name for error messages (e.g. 'projectId', 'issueId')
217
+ * @throws {InputValidationError} If value is not a valid UUID format
218
+ */
95
219
  export function validateUuid(value, fieldName) {
96
220
  const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
97
221
  if (!uuidRegex.test(value)) {
98
- throw new InputValidationError(`Invalid ${fieldName}: must be a valid UUID`, []);
222
+ throw new InputValidationError(`Invalid ${fieldName}: must be a valid UUID`, [
223
+ { code: 'custom', path: [fieldName], message: 'must be a valid UUID' }
224
+ ]);
99
225
  }
100
226
  }
227
+ /**
228
+ * Validate that a value is a non-empty string after trimming.
229
+ * @param value - The value to validate
230
+ * @param fieldName - Field name for error messages
231
+ * @returns The trimmed string
232
+ * @throws {InputValidationError} If value is not a string or is empty after trimming
233
+ */
101
234
  export function validateRequiredString(value, fieldName) {
102
235
  if (typeof value !== 'string' || value.trim().length === 0) {
103
- throw new InputValidationError(`${fieldName} is required`, []);
236
+ throw new InputValidationError(`${fieldName} is required`, [
237
+ { code: 'custom', path: [fieldName], message: 'is required' }
238
+ ]);
104
239
  }
105
240
  return value.trim();
106
241
  }
242
+ /**
243
+ * Validate that a value is a positive integer (> 0).
244
+ * @param value - The value to validate (coerced via `Number()`)
245
+ * @param fieldName - Field name for error messages
246
+ * @returns The validated number
247
+ * @throws {InputValidationError} If value is not a positive integer
248
+ */
107
249
  export function validatePositiveInt(value, fieldName) {
108
250
  const num = Number(value);
109
251
  if (!Number.isInteger(num) || num <= 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/config/validators.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/config/validators.ts"],"names":[],"mappings":"AACA,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,0BAA0B,EAC1B,4BAA4B,EAC5B,0BAA0B,EAC1B,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,EAChB,wBAAwB,EACxB,yBAAyB,EACzB,wBAAwB,EACxB,uBAAuB,EACvB,2BAA2B,EAC3B,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAG3B;IAFlB,YACE,OAAe,EACC,MAA4B;QAE5C,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,WAAM,GAAN,MAAM,CAAsB;QAG5C,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,CAA+B;IACrD,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC;IAC3C,IAAI,CAAC,CAAC,IAAI,KAAK,eAAe,IAAI,QAAQ,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3E,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,OAAO,GAAG,KAAK,oBAAoB,IAAI,EAAE,CAAC;IAC5C,CAAC;IACD,OAAO,GAAG,KAAK,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,QAAQ,CAAI,MAAoB,EAAE,IAAa,EAAE,OAAe;IACvE,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpE,MAAM,IAAI,oBAAoB,CAAC,WAAW,OAAO,KAAK,QAAQ,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACzF,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,+CAA+C;AAC/C,kBAAkB;AAClB,+CAA+C;AAE/C;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAa;IACjD,OAAO,QAAQ,CAAC,mBAAmB,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;AAC/D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAa;IAC9C,OAAO,QAAQ,CAAC,gBAAgB,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;AACzD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CAAC,IAAa;IACtD,OAAO,QAAQ,CAAC,wBAAwB,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;AACpE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CAAC,IAAa;IACvD,OAAO,QAAQ,CAAC,yBAAyB,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC;AACtE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CAAC,IAAa;IACtD,OAAO,QAAQ,CAAC,wBAAwB,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;AACpE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,IAAa;IACrD,OAAO,QAAQ,CAAC,uBAAuB,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC;AACrE,CAAC;AAED,+CAA+C;AAC/C,qBAAqB;AACrB,+CAA+C;AAE/C;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CAAC,IAAa;IACtD,OAAO,QAAQ,CAAC,wBAAwB,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC;AACtE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CAAC,IAAa;IACtD,OAAO,QAAQ,CAAC,wBAAwB,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC;AACtE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CAAC,IAAa;IACtD,OAAO,QAAQ,CAAC,wBAAwB,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;AACpE,CAAC;AAED,+CAA+C;AAC/C,iBAAiB;AACjB,+CAA+C;AAE/C;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAa;IAChD,OAAO,QAAQ,CAAC,kBAAkB,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;AACxD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAAa;IACpD,OAAO,QAAQ,CAAC,sBAAsB,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;AAChE,CAAC;AAED,+CAA+C;AAC/C,mBAAmB;AACnB,+CAA+C;AAE/C;;;;;;;;GAQG;AACH,MAAM,UAAU,4BAA4B,CAAC,IAAa;IACxD,OAAO,QAAQ,CAAC,0BAA0B,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;AACtE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAAa;IACpD,OAAO,QAAQ,CAAC,sBAAsB,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;AAChE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,8BAA8B,CAAC,IAAa;IAC1D,OAAO,QAAQ,CAAC,4BAA4B,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC;AACvE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,4BAA4B,CAAC,IAAa;IACxD,OAAO,QAAQ,CAAC,0BAA0B,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;AAClE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,6BAA6B,CAAC,IAAa;IACzD,OAAO,QAAQ,CAAC,2BAA2B,EAAE,IAAI,EAAE,oBAAoB,CAAC,CAAC;AAC3E,CAAC;AAGD,+CAA+C;AAC/C,oBAAoB;AACpB,+CAA+C;AAE/C;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa,EAAE,SAAiB;IAC3D,MAAM,SAAS,GAAG,4EAA4E,CAAC;IAC/F,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,oBAAoB,CAAC,WAAW,SAAS,wBAAwB,EAAE;YAC3E,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE;SACvE,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAc,EAAE,SAAiB;IACtE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,oBAAoB,CAAC,GAAG,SAAS,cAAc,EAAE;YACzD,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE;SAC9D,CAAC,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;AACtB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAc,EAAE,SAAiB;IACnE,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,oBAAoB,CAAC,GAAG,SAAS,6BAA6B,EAAE,EAAE,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}