@t4dhg/mcp-factorial 7.0.1 → 8.2.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.
Files changed (201) hide show
  1. package/README.md +321 -49
  2. package/dist/api/ats.d.ts +78 -0
  3. package/dist/api/ats.d.ts.map +1 -0
  4. package/dist/api/ats.js +173 -0
  5. package/dist/api/ats.js.map +1 -0
  6. package/dist/api/attendance.d.ts +27 -0
  7. package/dist/api/attendance.d.ts.map +1 -0
  8. package/dist/api/attendance.js +62 -0
  9. package/dist/api/attendance.js.map +1 -0
  10. package/dist/api/contracts.d.ts +40 -0
  11. package/dist/api/contracts.d.ts.map +1 -0
  12. package/dist/api/contracts.js +146 -0
  13. package/dist/api/contracts.js.map +1 -0
  14. package/dist/api/documents.d.ts +95 -0
  15. package/dist/api/documents.d.ts.map +1 -0
  16. package/dist/api/documents.js +265 -0
  17. package/dist/api/documents.js.map +1 -0
  18. package/dist/api/employees.d.ts +35 -0
  19. package/dist/api/employees.d.ts.map +1 -0
  20. package/dist/api/employees.js +116 -0
  21. package/dist/api/employees.js.map +1 -0
  22. package/dist/api/index.d.ts +22 -0
  23. package/dist/api/index.d.ts.map +1 -0
  24. package/dist/api/index.js +36 -0
  25. package/dist/api/index.js.map +1 -0
  26. package/dist/api/job-catalog.d.ts +21 -0
  27. package/dist/api/job-catalog.d.ts.map +1 -0
  28. package/dist/api/job-catalog.js +34 -0
  29. package/dist/api/job-catalog.js.map +1 -0
  30. package/dist/api/locations.d.ts +26 -0
  31. package/dist/api/locations.d.ts.map +1 -0
  32. package/dist/api/locations.js +59 -0
  33. package/dist/api/locations.js.map +1 -0
  34. package/dist/api/payroll.d.ts +30 -0
  35. package/dist/api/payroll.d.ts.map +1 -0
  36. package/dist/api/payroll.js +68 -0
  37. package/dist/api/payroll.js.map +1 -0
  38. package/dist/api/projects.d.ts +82 -0
  39. package/dist/api/projects.d.ts.map +1 -0
  40. package/dist/api/projects.js +193 -0
  41. package/dist/api/projects.js.map +1 -0
  42. package/dist/api/shared.d.ts +12 -0
  43. package/dist/api/shared.d.ts.map +1 -0
  44. package/dist/api/shared.js +17 -0
  45. package/dist/api/shared.js.map +1 -0
  46. package/dist/api/teams.d.ts +26 -0
  47. package/dist/api/teams.d.ts.map +1 -0
  48. package/dist/api/teams.js +59 -0
  49. package/dist/api/teams.js.map +1 -0
  50. package/dist/api/time-off.d.ts +47 -0
  51. package/dist/api/time-off.d.ts.map +1 -0
  52. package/dist/api/time-off.js +112 -0
  53. package/dist/api/time-off.js.map +1 -0
  54. package/dist/api/training.d.ts +62 -0
  55. package/dist/api/training.d.ts.map +1 -0
  56. package/dist/api/training.js +147 -0
  57. package/dist/api/training.js.map +1 -0
  58. package/dist/api/work-areas.d.ts +30 -0
  59. package/dist/api/work-areas.d.ts.map +1 -0
  60. package/dist/api/work-areas.js +71 -0
  61. package/dist/api/work-areas.js.map +1 -0
  62. package/dist/api.d.ts +3 -434
  63. package/dist/api.d.ts.map +1 -1
  64. package/dist/api.js +3 -1154
  65. package/dist/api.js.map +1 -1
  66. package/dist/audit.d.ts +8 -3
  67. package/dist/audit.d.ts.map +1 -1
  68. package/dist/audit.js +8 -3
  69. package/dist/audit.js.map +1 -1
  70. package/dist/index.d.ts +6 -13
  71. package/dist/index.d.ts.map +1 -1
  72. package/dist/index.js +6 -3701
  73. package/dist/index.js.map +1 -1
  74. package/dist/oauth.d.ts +63 -0
  75. package/dist/oauth.d.ts.map +1 -0
  76. package/dist/oauth.js +143 -0
  77. package/dist/oauth.js.map +1 -0
  78. package/dist/schemas/ats.d.ts +326 -0
  79. package/dist/schemas/ats.d.ts.map +1 -0
  80. package/dist/schemas/ats.js +121 -0
  81. package/dist/schemas/ats.js.map +1 -0
  82. package/dist/schemas/documents.d.ts +78 -0
  83. package/dist/schemas/documents.d.ts.map +1 -0
  84. package/dist/schemas/documents.js +34 -0
  85. package/dist/schemas/documents.js.map +1 -0
  86. package/dist/schemas/employees.d.ts +528 -0
  87. package/dist/schemas/employees.d.ts.map +1 -0
  88. package/dist/schemas/employees.js +206 -0
  89. package/dist/schemas/employees.js.map +1 -0
  90. package/dist/schemas/index.d.ts +18 -0
  91. package/dist/schemas/index.d.ts.map +1 -0
  92. package/dist/schemas/index.js +28 -0
  93. package/dist/schemas/index.js.map +1 -0
  94. package/dist/schemas/job-catalog.d.ts +57 -0
  95. package/dist/schemas/job-catalog.d.ts.map +1 -0
  96. package/dist/schemas/job-catalog.js +27 -0
  97. package/dist/schemas/job-catalog.js.map +1 -0
  98. package/dist/schemas/payroll.d.ts +98 -0
  99. package/dist/schemas/payroll.d.ts.map +1 -0
  100. package/dist/schemas/payroll.js +43 -0
  101. package/dist/schemas/payroll.js.map +1 -0
  102. package/dist/schemas/projects.d.ts +277 -0
  103. package/dist/schemas/projects.d.ts.map +1 -0
  104. package/dist/schemas/projects.js +114 -0
  105. package/dist/schemas/projects.js.map +1 -0
  106. package/dist/schemas/shared.d.ts +42 -0
  107. package/dist/schemas/shared.d.ts.map +1 -0
  108. package/dist/schemas/shared.js +65 -0
  109. package/dist/schemas/shared.js.map +1 -0
  110. package/dist/schemas/time-off.d.ts +286 -0
  111. package/dist/schemas/time-off.d.ts.map +1 -0
  112. package/dist/schemas/time-off.js +111 -0
  113. package/dist/schemas/time-off.js.map +1 -0
  114. package/dist/schemas/training.d.ts +223 -0
  115. package/dist/schemas/training.d.ts.map +1 -0
  116. package/dist/schemas/training.js +88 -0
  117. package/dist/schemas/training.js.map +1 -0
  118. package/dist/schemas/work-areas.d.ts +71 -0
  119. package/dist/schemas/work-areas.d.ts.map +1 -0
  120. package/dist/schemas/work-areas.js +30 -0
  121. package/dist/schemas/work-areas.js.map +1 -0
  122. package/dist/schemas.d.ts +4 -1879
  123. package/dist/schemas.d.ts.map +1 -1
  124. package/dist/schemas.js +4 -755
  125. package/dist/schemas.js.map +1 -1
  126. package/dist/tool-utils.d.ts +0 -14
  127. package/dist/tool-utils.d.ts.map +1 -1
  128. package/dist/tool-utils.js +5 -18
  129. package/dist/tool-utils.js.map +1 -1
  130. package/dist/tools/ats.d.ts +6 -0
  131. package/dist/tools/ats.d.ts.map +1 -0
  132. package/dist/tools/ats.js +206 -0
  133. package/dist/tools/ats.js.map +1 -0
  134. package/dist/tools/attendance.d.ts +6 -0
  135. package/dist/tools/attendance.d.ts.map +1 -0
  136. package/dist/tools/attendance.js +86 -0
  137. package/dist/tools/attendance.js.map +1 -0
  138. package/dist/tools/contracts.d.ts +6 -0
  139. package/dist/tools/contracts.d.ts.map +1 -0
  140. package/dist/tools/contracts.js +63 -0
  141. package/dist/tools/contracts.js.map +1 -0
  142. package/dist/tools/documents.d.ts +6 -0
  143. package/dist/tools/documents.d.ts.map +1 -0
  144. package/dist/tools/documents.js +135 -0
  145. package/dist/tools/documents.js.map +1 -0
  146. package/dist/tools/employees.d.ts +6 -0
  147. package/dist/tools/employees.d.ts.map +1 -0
  148. package/dist/tools/employees.js +125 -0
  149. package/dist/tools/employees.js.map +1 -0
  150. package/dist/tools/index.d.ts +17 -0
  151. package/dist/tools/index.d.ts.map +1 -0
  152. package/dist/tools/index.js +221 -0
  153. package/dist/tools/index.js.map +1 -0
  154. package/dist/tools/job-catalog.d.ts +6 -0
  155. package/dist/tools/job-catalog.d.ts.map +1 -0
  156. package/dist/tools/job-catalog.js +39 -0
  157. package/dist/tools/job-catalog.js.map +1 -0
  158. package/dist/tools/locations.d.ts +6 -0
  159. package/dist/tools/locations.d.ts.map +1 -0
  160. package/dist/tools/locations.js +93 -0
  161. package/dist/tools/locations.js.map +1 -0
  162. package/dist/tools/payroll.d.ts +6 -0
  163. package/dist/tools/payroll.d.ts.map +1 -0
  164. package/dist/tools/payroll.js +76 -0
  165. package/dist/tools/payroll.js.map +1 -0
  166. package/dist/tools/projects.d.ts +6 -0
  167. package/dist/tools/projects.d.ts.map +1 -0
  168. package/dist/tools/projects.js +203 -0
  169. package/dist/tools/projects.js.map +1 -0
  170. package/dist/tools/shared.d.ts +84 -0
  171. package/dist/tools/shared.d.ts.map +1 -0
  172. package/dist/tools/shared.js +164 -0
  173. package/dist/tools/shared.js.map +1 -0
  174. package/dist/tools/teams.d.ts +6 -0
  175. package/dist/tools/teams.d.ts.map +1 -0
  176. package/dist/tools/teams.js +81 -0
  177. package/dist/tools/teams.js.map +1 -0
  178. package/dist/tools/time-off.d.ts +6 -0
  179. package/dist/tools/time-off.d.ts.map +1 -0
  180. package/dist/tools/time-off.js +144 -0
  181. package/dist/tools/time-off.js.map +1 -0
  182. package/dist/tools/training.d.ts +6 -0
  183. package/dist/tools/training.d.ts.map +1 -0
  184. package/dist/tools/training.js +160 -0
  185. package/dist/tools/training.js.map +1 -0
  186. package/dist/tools/work-areas.d.ts +6 -0
  187. package/dist/tools/work-areas.d.ts.map +1 -0
  188. package/dist/tools/work-areas.js +85 -0
  189. package/dist/tools/work-areas.js.map +1 -0
  190. package/dist/types.d.ts +1 -1
  191. package/dist/types.d.ts.map +1 -1
  192. package/dist/utils.d.ts +35 -0
  193. package/dist/utils.d.ts.map +1 -1
  194. package/dist/utils.js +97 -0
  195. package/dist/utils.js.map +1 -1
  196. package/dist/write-safety.d.ts +229 -2
  197. package/dist/write-safety.d.ts.map +1 -1
  198. package/dist/write-safety.js +42 -3
  199. package/dist/write-safety.js.map +1 -1
  200. package/llms.txt +2 -2
  201. package/package.json +2 -2
@@ -0,0 +1,277 @@
1
+ /**
2
+ * Project Management schemas: Project, ProjectTask, ProjectWorker, TimeRecord
3
+ */
4
+ import { z } from 'zod';
5
+ /**
6
+ * Project schema
7
+ */
8
+ export declare const ProjectSchema: z.ZodObject<{
9
+ id: z.ZodNumber;
10
+ name: z.ZodString;
11
+ code: z.ZodNullable<z.ZodString>;
12
+ description: z.ZodNullable<z.ZodString>;
13
+ status: z.ZodNullable<z.ZodEnum<["active", "inactive", "archived"]>>;
14
+ employees_assignment: z.ZodNullable<z.ZodEnum<["manual", "company"]>>;
15
+ company_id: z.ZodNullable<z.ZodNumber>;
16
+ created_at: z.ZodNullable<z.ZodString>;
17
+ updated_at: z.ZodNullable<z.ZodString>;
18
+ }, "strip", z.ZodTypeAny, {
19
+ code: string | null;
20
+ status: "active" | "inactive" | "archived" | null;
21
+ id: number;
22
+ company_id: number | null;
23
+ created_at: string | null;
24
+ updated_at: string | null;
25
+ name: string;
26
+ description: string | null;
27
+ employees_assignment: "manual" | "company" | null;
28
+ }, {
29
+ code: string | null;
30
+ status: "active" | "inactive" | "archived" | null;
31
+ id: number;
32
+ company_id: number | null;
33
+ created_at: string | null;
34
+ updated_at: string | null;
35
+ name: string;
36
+ description: string | null;
37
+ employees_assignment: "manual" | "company" | null;
38
+ }>;
39
+ export type Project = z.infer<typeof ProjectSchema>;
40
+ /**
41
+ * Project create input schema
42
+ */
43
+ export declare const CreateProjectInputSchema: z.ZodObject<{
44
+ name: z.ZodString;
45
+ code: z.ZodOptional<z.ZodString>;
46
+ description: z.ZodOptional<z.ZodString>;
47
+ employees_assignment: z.ZodOptional<z.ZodEnum<["manual", "company"]>>;
48
+ }, "strip", z.ZodTypeAny, {
49
+ name: string;
50
+ code?: string | undefined;
51
+ description?: string | undefined;
52
+ employees_assignment?: "manual" | "company" | undefined;
53
+ }, {
54
+ name: string;
55
+ code?: string | undefined;
56
+ description?: string | undefined;
57
+ employees_assignment?: "manual" | "company" | undefined;
58
+ }>;
59
+ export type CreateProjectInput = z.infer<typeof CreateProjectInputSchema>;
60
+ /**
61
+ * Project update input schema
62
+ */
63
+ export declare const UpdateProjectInputSchema: z.ZodObject<{
64
+ name: z.ZodOptional<z.ZodString>;
65
+ code: z.ZodOptional<z.ZodOptional<z.ZodString>>;
66
+ description: z.ZodOptional<z.ZodOptional<z.ZodString>>;
67
+ employees_assignment: z.ZodOptional<z.ZodOptional<z.ZodEnum<["manual", "company"]>>>;
68
+ } & {
69
+ status: z.ZodOptional<z.ZodEnum<["active", "inactive", "archived"]>>;
70
+ }, "strip", z.ZodTypeAny, {
71
+ code?: string | undefined;
72
+ status?: "active" | "inactive" | "archived" | undefined;
73
+ name?: string | undefined;
74
+ description?: string | undefined;
75
+ employees_assignment?: "manual" | "company" | undefined;
76
+ }, {
77
+ code?: string | undefined;
78
+ status?: "active" | "inactive" | "archived" | undefined;
79
+ name?: string | undefined;
80
+ description?: string | undefined;
81
+ employees_assignment?: "manual" | "company" | undefined;
82
+ }>;
83
+ export type UpdateProjectInput = z.infer<typeof UpdateProjectInputSchema>;
84
+ /**
85
+ * Project Task schema
86
+ */
87
+ export declare const ProjectTaskSchema: z.ZodObject<{
88
+ id: z.ZodNumber;
89
+ name: z.ZodString;
90
+ project_id: z.ZodNumber;
91
+ subproject_id: z.ZodNullable<z.ZodNumber>;
92
+ description: z.ZodNullable<z.ZodString>;
93
+ completed: z.ZodDefault<z.ZodBoolean>;
94
+ due_on: z.ZodNullable<z.ZodString>;
95
+ due_status: z.ZodNullable<z.ZodString>;
96
+ created_at: z.ZodNullable<z.ZodString>;
97
+ updated_at: z.ZodNullable<z.ZodString>;
98
+ }, "strip", z.ZodTypeAny, {
99
+ id: number;
100
+ created_at: string | null;
101
+ updated_at: string | null;
102
+ name: string;
103
+ description: string | null;
104
+ project_id: number;
105
+ subproject_id: number | null;
106
+ completed: boolean;
107
+ due_on: string | null;
108
+ due_status: string | null;
109
+ }, {
110
+ id: number;
111
+ created_at: string | null;
112
+ updated_at: string | null;
113
+ name: string;
114
+ description: string | null;
115
+ project_id: number;
116
+ subproject_id: number | null;
117
+ due_on: string | null;
118
+ due_status: string | null;
119
+ completed?: boolean | undefined;
120
+ }>;
121
+ export type ProjectTask = z.infer<typeof ProjectTaskSchema>;
122
+ /**
123
+ * Project Task create input schema
124
+ */
125
+ export declare const CreateProjectTaskInputSchema: z.ZodObject<{
126
+ name: z.ZodString;
127
+ project_id: z.ZodNumber;
128
+ description: z.ZodOptional<z.ZodString>;
129
+ due_on: z.ZodOptional<z.ZodString>;
130
+ }, "strip", z.ZodTypeAny, {
131
+ name: string;
132
+ project_id: number;
133
+ description?: string | undefined;
134
+ due_on?: string | undefined;
135
+ }, {
136
+ name: string;
137
+ project_id: number;
138
+ description?: string | undefined;
139
+ due_on?: string | undefined;
140
+ }>;
141
+ export type CreateProjectTaskInput = z.infer<typeof CreateProjectTaskInputSchema>;
142
+ /**
143
+ * Project Task update input schema
144
+ */
145
+ export declare const UpdateProjectTaskInputSchema: z.ZodObject<Omit<{
146
+ name: z.ZodOptional<z.ZodString>;
147
+ project_id: z.ZodOptional<z.ZodNumber>;
148
+ description: z.ZodOptional<z.ZodOptional<z.ZodString>>;
149
+ due_on: z.ZodOptional<z.ZodOptional<z.ZodString>>;
150
+ }, "project_id"> & {
151
+ completed: z.ZodOptional<z.ZodBoolean>;
152
+ }, "strip", z.ZodTypeAny, {
153
+ name?: string | undefined;
154
+ description?: string | undefined;
155
+ completed?: boolean | undefined;
156
+ due_on?: string | undefined;
157
+ }, {
158
+ name?: string | undefined;
159
+ description?: string | undefined;
160
+ completed?: boolean | undefined;
161
+ due_on?: string | undefined;
162
+ }>;
163
+ export type UpdateProjectTaskInput = z.infer<typeof UpdateProjectTaskInputSchema>;
164
+ /**
165
+ * Project Worker schema
166
+ */
167
+ export declare const ProjectWorkerSchema: z.ZodObject<{
168
+ id: z.ZodNumber;
169
+ project_id: z.ZodNumber;
170
+ employee_id: z.ZodNumber;
171
+ company_labor_cost_cents: z.ZodNullable<z.ZodNumber>;
172
+ created_at: z.ZodNullable<z.ZodString>;
173
+ updated_at: z.ZodNullable<z.ZodString>;
174
+ }, "strip", z.ZodTypeAny, {
175
+ id: number;
176
+ created_at: string | null;
177
+ updated_at: string | null;
178
+ employee_id: number;
179
+ project_id: number;
180
+ company_labor_cost_cents: number | null;
181
+ }, {
182
+ id: number;
183
+ created_at: string | null;
184
+ updated_at: string | null;
185
+ employee_id: number;
186
+ project_id: number;
187
+ company_labor_cost_cents: number | null;
188
+ }>;
189
+ export type ProjectWorker = z.infer<typeof ProjectWorkerSchema>;
190
+ /**
191
+ * Project Worker assign input schema
192
+ */
193
+ export declare const AssignProjectWorkerInputSchema: z.ZodObject<{
194
+ project_id: z.ZodNumber;
195
+ employee_id: z.ZodNumber;
196
+ }, "strip", z.ZodTypeAny, {
197
+ employee_id: number;
198
+ project_id: number;
199
+ }, {
200
+ employee_id: number;
201
+ project_id: number;
202
+ }>;
203
+ export type AssignProjectWorkerInput = z.infer<typeof AssignProjectWorkerInputSchema>;
204
+ /**
205
+ * Time Record schema
206
+ */
207
+ export declare const TimeRecordSchema: z.ZodObject<{
208
+ id: z.ZodNumber;
209
+ project_worker_id: z.ZodNumber;
210
+ subproject_id: z.ZodNullable<z.ZodNumber>;
211
+ attendance_shift_id: z.ZodNullable<z.ZodNumber>;
212
+ minutes: z.ZodNumber;
213
+ date: z.ZodString;
214
+ description: z.ZodNullable<z.ZodString>;
215
+ created_at: z.ZodNullable<z.ZodString>;
216
+ updated_at: z.ZodNullable<z.ZodString>;
217
+ }, "strip", z.ZodTypeAny, {
218
+ date: string;
219
+ id: number;
220
+ created_at: string | null;
221
+ updated_at: string | null;
222
+ description: string | null;
223
+ subproject_id: number | null;
224
+ project_worker_id: number;
225
+ attendance_shift_id: number | null;
226
+ minutes: number;
227
+ }, {
228
+ date: string;
229
+ id: number;
230
+ created_at: string | null;
231
+ updated_at: string | null;
232
+ description: string | null;
233
+ subproject_id: number | null;
234
+ project_worker_id: number;
235
+ attendance_shift_id: number | null;
236
+ minutes: number;
237
+ }>;
238
+ export type TimeRecord = z.infer<typeof TimeRecordSchema>;
239
+ /**
240
+ * Time Record create input schema
241
+ */
242
+ export declare const CreateTimeRecordInputSchema: z.ZodObject<{
243
+ project_worker_id: z.ZodNumber;
244
+ date: z.ZodString;
245
+ minutes: z.ZodNumber;
246
+ description: z.ZodOptional<z.ZodString>;
247
+ }, "strip", z.ZodTypeAny, {
248
+ date: string;
249
+ project_worker_id: number;
250
+ minutes: number;
251
+ description?: string | undefined;
252
+ }, {
253
+ date: string;
254
+ project_worker_id: number;
255
+ minutes: number;
256
+ description?: string | undefined;
257
+ }>;
258
+ export type CreateTimeRecordInput = z.infer<typeof CreateTimeRecordInputSchema>;
259
+ /**
260
+ * Time Record update input schema
261
+ */
262
+ export declare const UpdateTimeRecordInputSchema: z.ZodObject<Omit<{
263
+ project_worker_id: z.ZodOptional<z.ZodNumber>;
264
+ date: z.ZodOptional<z.ZodString>;
265
+ minutes: z.ZodOptional<z.ZodNumber>;
266
+ description: z.ZodOptional<z.ZodOptional<z.ZodString>>;
267
+ }, "project_worker_id">, "strip", z.ZodTypeAny, {
268
+ date?: string | undefined;
269
+ description?: string | undefined;
270
+ minutes?: number | undefined;
271
+ }, {
272
+ date?: string | undefined;
273
+ description?: string | undefined;
274
+ minutes?: number | undefined;
275
+ }>;
276
+ export type UpdateTimeRecordInput = z.infer<typeof UpdateTimeRecordInputSchema>;
277
+ //# sourceMappingURL=projects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/schemas/projects.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUxB,CAAC;AAEH,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAEpD;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;EAKnC,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;EAEnC,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D;;GAEG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;EAKvC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAElF;;GAEG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;EAIrC,CAAC;AAEL,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAElF;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;EAO9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE;;GAEG;AACH,eAAO,MAAM,8BAA8B;;;;;;;;;EAGzC,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AAEtF;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAU3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D;;GAEG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;EAKtC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEhF;;GAEG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;EAEtC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC"}
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Project Management schemas: Project, ProjectTask, ProjectWorker, TimeRecord
3
+ */
4
+ import { z } from 'zod';
5
+ import { dateString } from './shared.js';
6
+ /**
7
+ * Project schema
8
+ */
9
+ export const ProjectSchema = z.object({
10
+ id: z.number(),
11
+ name: z.string(),
12
+ code: z.string().nullable(),
13
+ description: z.string().nullable(),
14
+ status: z.enum(['active', 'inactive', 'archived']).nullable(),
15
+ employees_assignment: z.enum(['manual', 'company']).nullable(),
16
+ company_id: z.number().nullable(),
17
+ created_at: z.string().nullable(),
18
+ updated_at: z.string().nullable(),
19
+ });
20
+ /**
21
+ * Project create input schema
22
+ */
23
+ export const CreateProjectInputSchema = z.object({
24
+ name: z.string().min(1).max(100),
25
+ code: z.string().max(20).optional(),
26
+ description: z.string().max(500).optional(),
27
+ employees_assignment: z.enum(['manual', 'company']).optional(),
28
+ });
29
+ /**
30
+ * Project update input schema
31
+ */
32
+ export const UpdateProjectInputSchema = CreateProjectInputSchema.partial().extend({
33
+ status: z.enum(['active', 'inactive', 'archived']).optional(),
34
+ });
35
+ /**
36
+ * Project Task schema
37
+ */
38
+ export const ProjectTaskSchema = z.object({
39
+ id: z.number(),
40
+ name: z.string(),
41
+ project_id: z.number(),
42
+ subproject_id: z.number().nullable(),
43
+ description: z.string().nullable(),
44
+ completed: z.boolean().default(false),
45
+ due_on: z.string().nullable(),
46
+ due_status: z.string().nullable(),
47
+ created_at: z.string().nullable(),
48
+ updated_at: z.string().nullable(),
49
+ });
50
+ /**
51
+ * Project Task create input schema
52
+ */
53
+ export const CreateProjectTaskInputSchema = z.object({
54
+ name: z.string().min(1).max(100),
55
+ project_id: z.number().positive(),
56
+ description: z.string().max(500).optional(),
57
+ due_on: dateString.optional(),
58
+ });
59
+ /**
60
+ * Project Task update input schema
61
+ */
62
+ export const UpdateProjectTaskInputSchema = CreateProjectTaskInputSchema.partial()
63
+ .omit({ project_id: true })
64
+ .extend({
65
+ completed: z.boolean().optional(),
66
+ });
67
+ /**
68
+ * Project Worker schema
69
+ */
70
+ export const ProjectWorkerSchema = z.object({
71
+ id: z.number(),
72
+ project_id: z.number(),
73
+ employee_id: z.number(),
74
+ company_labor_cost_cents: z.number().nullable(),
75
+ created_at: z.string().nullable(),
76
+ updated_at: z.string().nullable(),
77
+ });
78
+ /**
79
+ * Project Worker assign input schema
80
+ */
81
+ export const AssignProjectWorkerInputSchema = z.object({
82
+ project_id: z.number().positive(),
83
+ employee_id: z.number().positive(),
84
+ });
85
+ /**
86
+ * Time Record schema
87
+ */
88
+ export const TimeRecordSchema = z.object({
89
+ id: z.number(),
90
+ project_worker_id: z.number(),
91
+ subproject_id: z.number().nullable(),
92
+ attendance_shift_id: z.number().nullable(),
93
+ minutes: z.number(),
94
+ date: z.string(),
95
+ description: z.string().nullable(),
96
+ created_at: z.string().nullable(),
97
+ updated_at: z.string().nullable(),
98
+ });
99
+ /**
100
+ * Time Record create input schema
101
+ */
102
+ export const CreateTimeRecordInputSchema = z.object({
103
+ project_worker_id: z.number().positive(),
104
+ date: dateString,
105
+ minutes: z.number().min(1).max(1440),
106
+ description: z.string().max(500).optional(),
107
+ });
108
+ /**
109
+ * Time Record update input schema
110
+ */
111
+ export const UpdateTimeRecordInputSchema = CreateTimeRecordInputSchema.partial().omit({
112
+ project_worker_id: true,
113
+ });
114
+ //# sourceMappingURL=projects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/schemas/projects.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Shared schema utilities and validation helpers
3
+ */
4
+ import { z } from 'zod';
5
+ /**
6
+ * Date string validator - validates YYYY-MM-DD format
7
+ */
8
+ export declare const dateString: z.ZodString;
9
+ /**
10
+ * API response wrapper schema
11
+ */
12
+ export declare function createApiResponseSchema<T extends z.ZodTypeAny>(dataSchema: T): z.ZodObject<{
13
+ data: T;
14
+ }, "strip", z.ZodTypeAny, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
15
+ data: T;
16
+ }>, any> extends infer T_1 ? { [k in keyof T_1]: T_1[k]; } : never, z.baseObjectInputType<{
17
+ data: T;
18
+ }> extends infer T_2 ? { [k_1 in keyof T_2]: T_2[k_1]; } : never>;
19
+ /**
20
+ * API list response wrapper schema
21
+ */
22
+ export declare function createApiListResponseSchema<T extends z.ZodTypeAny>(itemSchema: T): z.ZodObject<{
23
+ data: z.ZodArray<T, "many">;
24
+ }, "strip", z.ZodTypeAny, {
25
+ data: T["_output"][];
26
+ }, {
27
+ data: T["_input"][];
28
+ }>;
29
+ /**
30
+ * Parse and validate data against a schema
31
+ * @throws SchemaValidationError if validation fails
32
+ */
33
+ export declare function parseData<T>(schemaName: string, schema: z.ZodSchema<T>, data: unknown): T;
34
+ /**
35
+ * Safely parse data without throwing (returns undefined on failure)
36
+ */
37
+ export declare function safeParseData<T>(schema: z.ZodSchema<T>, data: unknown): T | undefined;
38
+ /**
39
+ * Parse an array of items against a schema
40
+ */
41
+ export declare function parseArray<T>(schemaName: string, itemSchema: z.ZodSchema<T>, data: unknown): T[];
42
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/schemas/shared.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB;;GAEG;AACH,eAAO,MAAM,UAAU,aAAqE,CAAC;AAE7F;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC;;;;;;kEAI5E;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC;;;;;;GAIhF;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,GAAG,CAAC,CAOzF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,GAAG,CAAC,GAAG,SAAS,CAGrF;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,GAAG,CAAC,EAAE,CAYhG"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Shared schema utilities and validation helpers
3
+ */
4
+ import { z } from 'zod';
5
+ import { SchemaValidationError } from '../errors.js';
6
+ /**
7
+ * Date string pattern (YYYY-MM-DD)
8
+ */
9
+ const datePattern = /^\d{4}-\d{2}-\d{2}$/;
10
+ /**
11
+ * Date string validator - validates YYYY-MM-DD format
12
+ */
13
+ export const dateString = z.string().regex(datePattern, 'Date must be in YYYY-MM-DD format');
14
+ /**
15
+ * API response wrapper schema
16
+ */
17
+ export function createApiResponseSchema(dataSchema) {
18
+ return z.object({
19
+ data: dataSchema,
20
+ });
21
+ }
22
+ /**
23
+ * API list response wrapper schema
24
+ */
25
+ export function createApiListResponseSchema(itemSchema) {
26
+ return z.object({
27
+ data: z.array(itemSchema),
28
+ });
29
+ }
30
+ /**
31
+ * Parse and validate data against a schema
32
+ * @throws SchemaValidationError if validation fails
33
+ */
34
+ export function parseData(schemaName, schema, data) {
35
+ const result = schema.safeParse(data);
36
+ if (!result.success) {
37
+ const issues = result.error.issues.map(i => `${i.path.join('.')}: ${i.message}`).join(', ');
38
+ throw new SchemaValidationError(schemaName, issues, { data });
39
+ }
40
+ return result.data;
41
+ }
42
+ /**
43
+ * Safely parse data without throwing (returns undefined on failure)
44
+ */
45
+ export function safeParseData(schema, data) {
46
+ const result = schema.safeParse(data);
47
+ return result.success ? result.data : undefined;
48
+ }
49
+ /**
50
+ * Parse an array of items against a schema
51
+ */
52
+ export function parseArray(schemaName, itemSchema, data) {
53
+ if (!Array.isArray(data)) {
54
+ throw new SchemaValidationError(schemaName, 'Expected an array', { data });
55
+ }
56
+ return data.map((item, index) => {
57
+ const result = itemSchema.safeParse(item);
58
+ if (!result.success) {
59
+ const issues = result.error.issues.map(i => `${i.path.join('.')}: ${i.message}`).join(', ');
60
+ throw new SchemaValidationError(`${schemaName}[${index}]`, issues, { item });
61
+ }
62
+ return result.data;
63
+ });
64
+ }
65
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/schemas/shared.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,GAAG,qBAAqB,CAAC;AAE1C;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,mCAAmC,CAAC,CAAC;AAE7F;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAyB,UAAa;IAC3E,OAAO,CAAC,CAAC,MAAM,CAAC;QACd,IAAI,EAAE,UAAU;KACjB,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B,CAAyB,UAAa;IAC/E,OAAO,CAAC,CAAC,MAAM,CAAC;QACd,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;KAC1B,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAI,UAAkB,EAAE,MAAsB,EAAE,IAAa;IACpF,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5F,MAAM,IAAI,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAI,MAAsB,EAAE,IAAa;IACpE,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACtC,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAI,UAAkB,EAAE,UAA0B,EAAE,IAAa;IACzF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,qBAAqB,CAAC,UAAU,EAAE,mBAAmB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC9B,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5F,MAAM,IAAI,qBAAqB,CAAC,GAAG,UAAU,IAAI,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/E,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC,CAAC,CAAC;AACL,CAAC"}