@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,112 @@
1
+ /**
2
+ * Time Off API endpoints: Leaves, Leave Types, Allowances
3
+ */
4
+ import { fetchList, fetchOne, postOne, patchOne, deleteOne, postAction } from '../http-client.js';
5
+ import { cached, CACHE_TTL } from '../cache.js';
6
+ import { buildPaginationParams, paginateResponse } from '../pagination.js';
7
+ import { AuditAction, auditedOperation } from '../audit.js';
8
+ import { validateId } from '../utils.js';
9
+ import { ENDPOINTS, endpointWithId, endpointWithAction } from '../endpoints.js';
10
+ /**
11
+ * List leaves with optional filtering
12
+ */
13
+ export async function listLeaves(options) {
14
+ const params = buildPaginationParams(options);
15
+ const queryParams = {
16
+ page: params.page,
17
+ limit: params.limit,
18
+ };
19
+ if (options?.employee_id)
20
+ queryParams.employee_id = options.employee_id;
21
+ if (options?.status)
22
+ queryParams.status = options.status;
23
+ if (options?.start_on_gte)
24
+ queryParams.start_on_gte = options.start_on_gte;
25
+ if (options?.start_on_lte)
26
+ queryParams.start_on_lte = options.start_on_lte;
27
+ const leaves = await fetchList(ENDPOINTS.leaves, { params: queryParams });
28
+ return paginateResponse(leaves, params.page, params.limit);
29
+ }
30
+ /**
31
+ * Get a specific leave by ID
32
+ */
33
+ export async function getLeave(id) {
34
+ validateId(id, 'leave');
35
+ return fetchOne(endpointWithId(ENDPOINTS.leaves, id));
36
+ }
37
+ /**
38
+ * List all leave types
39
+ */
40
+ export async function listLeaveTypes() {
41
+ return cached('leave-types:all', () => fetchList(ENDPOINTS.leaveTypes), CACHE_TTL.leaves);
42
+ }
43
+ /**
44
+ * Get a specific leave type by ID
45
+ */
46
+ export async function getLeaveType(id) {
47
+ validateId(id, 'leave type');
48
+ return fetchOne(endpointWithId(ENDPOINTS.leaveTypes, id));
49
+ }
50
+ /**
51
+ * List allowances with optional filtering by employee
52
+ */
53
+ export async function listAllowances(options) {
54
+ const params = buildPaginationParams(options);
55
+ const queryParams = {
56
+ page: params.page,
57
+ limit: params.limit,
58
+ };
59
+ if (options?.employee_id)
60
+ queryParams.employee_id = options.employee_id;
61
+ const allowances = await fetchList(ENDPOINTS.allowances, { params: queryParams });
62
+ return paginateResponse(allowances, params.page, params.limit);
63
+ }
64
+ /**
65
+ * Create a new leave request
66
+ */
67
+ export async function createLeave(input) {
68
+ return auditedOperation(AuditAction.CREATE, 'leave', undefined, async () => {
69
+ const leave = await postOne(ENDPOINTS.leaves, input);
70
+ return leave;
71
+ });
72
+ }
73
+ /**
74
+ * Update a leave request
75
+ */
76
+ export async function updateLeave(id, input) {
77
+ validateId(id, 'leave');
78
+ return auditedOperation(AuditAction.UPDATE, 'leave', id, async () => {
79
+ const leave = await patchOne(endpointWithId(ENDPOINTS.leaves, id), input);
80
+ return leave;
81
+ });
82
+ }
83
+ /**
84
+ * Cancel a leave request
85
+ */
86
+ export async function cancelLeave(id) {
87
+ validateId(id, 'leave');
88
+ return auditedOperation(AuditAction.DELETE, 'leave', id, async () => {
89
+ await deleteOne(endpointWithId(ENDPOINTS.leaves, id));
90
+ });
91
+ }
92
+ /**
93
+ * Approve a leave request
94
+ */
95
+ export async function approveLeave(id, input) {
96
+ validateId(id, 'leave');
97
+ return auditedOperation(AuditAction.APPROVE, 'leave', id, async () => {
98
+ const leave = await postAction(endpointWithAction(ENDPOINTS.leaves, id, 'approve'), input || {});
99
+ return leave;
100
+ });
101
+ }
102
+ /**
103
+ * Reject a leave request
104
+ */
105
+ export async function rejectLeave(id, input) {
106
+ validateId(id, 'leave');
107
+ return auditedOperation(AuditAction.REJECT, 'leave', id, async () => {
108
+ const leave = await postAction(endpointWithAction(ENDPOINTS.leaves, id, 'reject'), input || {});
109
+ return leave;
110
+ });
111
+ }
112
+ //# sourceMappingURL=time-off.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time-off.js","sourceRoot":"","sources":["../../src/api/time-off.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAClG,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAA0B,MAAM,kBAAkB,CAAC;AASnG,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAGhF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAA2B;IAC1D,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAE9C,MAAM,WAAW,GAAgD;QAC/D,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,KAAK,EAAE,MAAM,CAAC,KAAK;KACpB,CAAC;IAEF,IAAI,OAAO,EAAE,WAAW;QAAE,WAAW,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACxE,IAAI,OAAO,EAAE,MAAM;QAAE,WAAW,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IACzD,IAAI,OAAO,EAAE,YAAY;QAAE,WAAW,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAC3E,IAAI,OAAO,EAAE,YAAY;QAAE,WAAW,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAE3E,MAAM,MAAM,GAAG,MAAM,SAAS,CAAQ,SAAS,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IAEjF,OAAO,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AAC7D,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,EAAU;IACvC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAExB,OAAO,QAAQ,CAAQ,cAAc,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,OAAO,MAAM,CACX,iBAAiB,EACjB,GAAG,EAAE,CAAC,SAAS,CAAY,SAAS,CAAC,UAAU,CAAC,EAChD,SAAS,CAAC,MAAM,CACjB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,EAAU;IAC3C,UAAU,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;IAE7B,OAAO,QAAQ,CAAY,cAAc,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;AACvE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAA+B;IAE/B,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAE9C,MAAM,WAAW,GAAgD;QAC/D,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,KAAK,EAAE,MAAM,CAAC,KAAK;KACpB,CAAC;IAEF,IAAI,OAAO,EAAE,WAAW;QAAE,WAAW,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAExE,MAAM,UAAU,GAAG,MAAM,SAAS,CAAY,SAAS,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IAE7F,OAAO,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AACjE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,KAAuB;IACvD,OAAO,gBAAgB,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,KAAK,GAAG,MAAM,OAAO,CAAQ,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC5D,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,EAAU,EAAE,KAAuB;IACnE,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAExB,OAAO,gBAAgB,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAQ,cAAc,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QACjF,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,EAAU;IAC1C,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAExB,OAAO,gBAAgB,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,EAAU,EAAE,KAA0B;IACvE,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAExB,OAAO,gBAAgB,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,IAAI,EAAE;QACnE,MAAM,KAAK,GAAG,MAAM,UAAU,CAC5B,kBAAkB,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,SAAS,CAAC,EACnD,KAAK,IAAI,EAAE,CACZ,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,EAAU,EAAE,KAA0B;IACtE,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAExB,OAAO,gBAAgB,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,KAAK,GAAG,MAAM,UAAU,CAC5B,kBAAkB,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,QAAQ,CAAC,EAClD,KAAK,IAAI,EAAE,CACZ,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Training API endpoints: Trainings, Sessions, Enrollments
3
+ */
4
+ import { type PaginatedResponse, type PaginationInput } from '../pagination.js';
5
+ import type { Training, TrainingSession, TrainingMembership, CreateTrainingInput, UpdateTrainingInput, CreateTrainingSessionInput, UpdateTrainingSessionInput, EnrollTrainingInput } from '../schemas.js';
6
+ /**
7
+ * List all trainings
8
+ */
9
+ export declare function listTrainings(options?: PaginationInput): Promise<PaginatedResponse<Training>>;
10
+ /**
11
+ * Get a specific training by ID
12
+ */
13
+ export declare function getTraining(id: number): Promise<Training>;
14
+ /**
15
+ * List training sessions
16
+ */
17
+ export declare function listTrainingSessions(trainingId?: number, options?: PaginationInput): Promise<PaginatedResponse<TrainingSession>>;
18
+ /**
19
+ * Get a specific training session by ID
20
+ */
21
+ export declare function getTrainingSession(id: number): Promise<TrainingSession>;
22
+ /**
23
+ * List training enrollments
24
+ */
25
+ export declare function listTrainingEnrollments(trainingId?: number, options?: PaginationInput): Promise<PaginatedResponse<TrainingMembership>>;
26
+ /**
27
+ * Get a specific training enrollment by ID
28
+ */
29
+ export declare function getTrainingEnrollment(id: number): Promise<TrainingMembership>;
30
+ /**
31
+ * Create a training program
32
+ */
33
+ export declare function createTraining(input: CreateTrainingInput): Promise<Training>;
34
+ /**
35
+ * Update a training program
36
+ */
37
+ export declare function updateTraining(id: number, input: UpdateTrainingInput): Promise<Training>;
38
+ /**
39
+ * Delete a training program
40
+ */
41
+ export declare function deleteTraining(id: number): Promise<void>;
42
+ /**
43
+ * Create a training session
44
+ */
45
+ export declare function createTrainingSession(input: CreateTrainingSessionInput): Promise<TrainingSession>;
46
+ /**
47
+ * Update a training session
48
+ */
49
+ export declare function updateTrainingSession(id: number, input: UpdateTrainingSessionInput): Promise<TrainingSession>;
50
+ /**
51
+ * Delete a training session
52
+ */
53
+ export declare function deleteTrainingSession(id: number): Promise<void>;
54
+ /**
55
+ * Enroll an employee in a training
56
+ */
57
+ export declare function enrollInTraining(input: EnrollTrainingInput): Promise<TrainingMembership>;
58
+ /**
59
+ * Remove enrollment from a training
60
+ */
61
+ export declare function unenrollFromTraining(id: number): Promise<void>;
62
+ //# sourceMappingURL=training.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"training.d.ts","sourceRoot":"","sources":["../../src/api/training.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACV,QAAQ,EACR,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,0BAA0B,EAC1B,0BAA0B,EAC1B,mBAAmB,EACpB,MAAM,eAAe,CAAC;AASvB;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAQtC;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAO/D;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC,CAS7C;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAG7E;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,CAShD;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAGnF;AAMD;;GAEG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAMlF;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAS9F;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ9D;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,0BAA0B,GAChC,OAAO,CAAC,eAAe,CAAC,CAI1B;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,0BAA0B,GAChC,OAAO,CAAC,eAAe,CAAC,CAM1B;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMrE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAI9F;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMpE"}
@@ -0,0 +1,147 @@
1
+ /**
2
+ * Training API endpoints: Trainings, Sessions, Enrollments
3
+ */
4
+ import { fetchList, fetchOne, postOne, patchOne, deleteOne } from '../http-client.js';
5
+ import { cache, cached, CACHE_TTL, CacheManager } from '../cache.js';
6
+ import { buildPaginationParams, sliceForPagination, } from '../pagination.js';
7
+ import { AuditAction, auditedOperation } from '../audit.js';
8
+ import { validateId } from '../utils.js';
9
+ import { ENDPOINTS, endpointWithId } from '../endpoints.js';
10
+ // ============================================================================
11
+ // Training - READ endpoints
12
+ // ============================================================================
13
+ /**
14
+ * List all trainings
15
+ */
16
+ export async function listTrainings(options) {
17
+ const params = buildPaginationParams(options);
18
+ const trainings = await cached(CacheManager.key('trainings', options), () => fetchList(ENDPOINTS.trainings), CACHE_TTL.default);
19
+ return sliceForPagination(trainings, params);
20
+ }
21
+ /**
22
+ * Get a specific training by ID
23
+ */
24
+ export async function getTraining(id) {
25
+ validateId(id, 'training');
26
+ return cached(`training:${id}`, () => fetchOne(endpointWithId(ENDPOINTS.trainings, id)), CACHE_TTL.default);
27
+ }
28
+ /**
29
+ * List training sessions
30
+ */
31
+ export async function listTrainingSessions(trainingId, options) {
32
+ const params = buildPaginationParams(options);
33
+ const queryParams = {};
34
+ if (trainingId)
35
+ queryParams.training_id = trainingId;
36
+ const sessions = await fetchList(ENDPOINTS.trainingSessions, {
37
+ params: queryParams,
38
+ });
39
+ return sliceForPagination(sessions, params);
40
+ }
41
+ /**
42
+ * Get a specific training session by ID
43
+ */
44
+ export async function getTrainingSession(id) {
45
+ validateId(id, 'session');
46
+ return fetchOne(endpointWithId(ENDPOINTS.trainingSessions, id));
47
+ }
48
+ /**
49
+ * List training enrollments
50
+ */
51
+ export async function listTrainingEnrollments(trainingId, options) {
52
+ const params = buildPaginationParams(options);
53
+ const queryParams = {};
54
+ if (trainingId)
55
+ queryParams.training_id = trainingId;
56
+ const enrollments = await fetchList(ENDPOINTS.trainingMemberships, {
57
+ params: queryParams,
58
+ });
59
+ return sliceForPagination(enrollments, params);
60
+ }
61
+ /**
62
+ * Get a specific training enrollment by ID
63
+ */
64
+ export async function getTrainingEnrollment(id) {
65
+ validateId(id, 'enrollment');
66
+ return fetchOne(endpointWithId(ENDPOINTS.trainingMemberships, id));
67
+ }
68
+ // ============================================================================
69
+ // Training - WRITE endpoints
70
+ // ============================================================================
71
+ /**
72
+ * Create a training program
73
+ */
74
+ export async function createTraining(input) {
75
+ return auditedOperation(AuditAction.CREATE, 'training', undefined, async () => {
76
+ const training = await postOne(ENDPOINTS.trainings, input);
77
+ cache.invalidatePrefix('trainings');
78
+ return training;
79
+ });
80
+ }
81
+ /**
82
+ * Update a training program
83
+ */
84
+ export async function updateTraining(id, input) {
85
+ validateId(id, 'training');
86
+ return auditedOperation(AuditAction.UPDATE, 'training', id, async () => {
87
+ const training = await patchOne(endpointWithId(ENDPOINTS.trainings, id), input);
88
+ cache.invalidate(`training:${id}`);
89
+ cache.invalidatePrefix('trainings');
90
+ return training;
91
+ });
92
+ }
93
+ /**
94
+ * Delete a training program
95
+ */
96
+ export async function deleteTraining(id) {
97
+ validateId(id, 'training');
98
+ return auditedOperation(AuditAction.DELETE, 'training', id, async () => {
99
+ await deleteOne(endpointWithId(ENDPOINTS.trainings, id));
100
+ cache.invalidate(`training:${id}`);
101
+ cache.invalidatePrefix('trainings');
102
+ });
103
+ }
104
+ /**
105
+ * Create a training session
106
+ */
107
+ export async function createTrainingSession(input) {
108
+ return auditedOperation(AuditAction.CREATE, 'training_session', undefined, async () => {
109
+ return postOne(ENDPOINTS.trainingSessions, input);
110
+ });
111
+ }
112
+ /**
113
+ * Update a training session
114
+ */
115
+ export async function updateTrainingSession(id, input) {
116
+ validateId(id, 'session');
117
+ return auditedOperation(AuditAction.UPDATE, 'training_session', id, async () => {
118
+ return patchOne(endpointWithId(ENDPOINTS.trainingSessions, id), input);
119
+ });
120
+ }
121
+ /**
122
+ * Delete a training session
123
+ */
124
+ export async function deleteTrainingSession(id) {
125
+ validateId(id, 'session');
126
+ return auditedOperation(AuditAction.DELETE, 'training_session', id, async () => {
127
+ await deleteOne(endpointWithId(ENDPOINTS.trainingSessions, id));
128
+ });
129
+ }
130
+ /**
131
+ * Enroll an employee in a training
132
+ */
133
+ export async function enrollInTraining(input) {
134
+ return auditedOperation(AuditAction.ASSIGN, 'training_enrollment', undefined, async () => {
135
+ return postOne(ENDPOINTS.trainingMemberships, input);
136
+ });
137
+ }
138
+ /**
139
+ * Remove enrollment from a training
140
+ */
141
+ export async function unenrollFromTraining(id) {
142
+ validateId(id, 'enrollment');
143
+ return auditedOperation(AuditAction.UNASSIGN, 'training_enrollment', id, async () => {
144
+ await deleteOne(endpointWithId(ENDPOINTS.trainingMemberships, id));
145
+ });
146
+ }
147
+ //# sourceMappingURL=training.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"training.js","sourceRoot":"","sources":["../../src/api/training.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Work Areas API endpoints
3
+ */
4
+ import { type PaginatedResponse, type PaginationInput } from '../pagination.js';
5
+ import type { WorkArea, CreateWorkAreaInput, UpdateWorkAreaInput } from '../schemas.js';
6
+ /**
7
+ * List all work areas
8
+ */
9
+ export declare function listWorkAreas(options?: PaginationInput): Promise<PaginatedResponse<WorkArea>>;
10
+ /**
11
+ * Get a specific work area by ID
12
+ */
13
+ export declare function getWorkArea(id: number): Promise<WorkArea>;
14
+ /**
15
+ * Create a work area
16
+ */
17
+ export declare function createWorkArea(input: CreateWorkAreaInput): Promise<WorkArea>;
18
+ /**
19
+ * Update a work area
20
+ */
21
+ export declare function updateWorkArea(id: number, input: UpdateWorkAreaInput): Promise<WorkArea>;
22
+ /**
23
+ * Archive a work area
24
+ */
25
+ export declare function archiveWorkArea(id: number): Promise<WorkArea>;
26
+ /**
27
+ * Unarchive a work area
28
+ */
29
+ export declare function unarchiveWorkArea(id: number): Promise<WorkArea>;
30
+ //# sourceMappingURL=work-areas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"work-areas.d.ts","sourceRoot":"","sources":["../../src/api/work-areas.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,QAAQ,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAKxF;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAQtC;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAO/D;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAMlF;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAS9F;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAWnE;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAWrE"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Work Areas API endpoints
3
+ */
4
+ import { fetchList, fetchOne, postOne, patchOne, postAction } from '../http-client.js';
5
+ import { cache, cached, CACHE_TTL, CacheManager } from '../cache.js';
6
+ import { buildPaginationParams, sliceForPagination, } from '../pagination.js';
7
+ import { AuditAction, auditedOperation } from '../audit.js';
8
+ import { validateId } from '../utils.js';
9
+ import { ENDPOINTS, endpointWithId, endpointWithAction } from '../endpoints.js';
10
+ /**
11
+ * List all work areas
12
+ */
13
+ export async function listWorkAreas(options) {
14
+ const params = buildPaginationParams(options);
15
+ const workAreas = await cached(CacheManager.key('work_areas', options), () => fetchList(ENDPOINTS.workAreas), CACHE_TTL.locations);
16
+ return sliceForPagination(workAreas, params);
17
+ }
18
+ /**
19
+ * Get a specific work area by ID
20
+ */
21
+ export async function getWorkArea(id) {
22
+ validateId(id, 'work area');
23
+ return cached(`work_area:${id}`, () => fetchOne(endpointWithId(ENDPOINTS.workAreas, id)), CACHE_TTL.locations);
24
+ }
25
+ /**
26
+ * Create a work area
27
+ */
28
+ export async function createWorkArea(input) {
29
+ return auditedOperation(AuditAction.CREATE, 'work_area', undefined, async () => {
30
+ const workArea = await postOne(ENDPOINTS.workAreas, input);
31
+ cache.invalidatePrefix('work_areas');
32
+ return workArea;
33
+ });
34
+ }
35
+ /**
36
+ * Update a work area
37
+ */
38
+ export async function updateWorkArea(id, input) {
39
+ validateId(id, 'work area');
40
+ return auditedOperation(AuditAction.UPDATE, 'work_area', id, async () => {
41
+ const workArea = await patchOne(endpointWithId(ENDPOINTS.workAreas, id), input);
42
+ cache.invalidate(`work_area:${id}`);
43
+ cache.invalidatePrefix('work_areas');
44
+ return workArea;
45
+ });
46
+ }
47
+ /**
48
+ * Archive a work area
49
+ */
50
+ export async function archiveWorkArea(id) {
51
+ validateId(id, 'work area');
52
+ return auditedOperation(AuditAction.ARCHIVE, 'work_area', id, async () => {
53
+ const workArea = await postAction(endpointWithAction(ENDPOINTS.workAreas, id, 'archive'));
54
+ cache.invalidate(`work_area:${id}`);
55
+ cache.invalidatePrefix('work_areas');
56
+ return workArea;
57
+ });
58
+ }
59
+ /**
60
+ * Unarchive a work area
61
+ */
62
+ export async function unarchiveWorkArea(id) {
63
+ validateId(id, 'work area');
64
+ return auditedOperation(AuditAction.UNARCHIVE, 'work_area', id, async () => {
65
+ const workArea = await postAction(endpointWithAction(ENDPOINTS.workAreas, id, 'unarchive'));
66
+ cache.invalidate(`work_area:${id}`);
67
+ cache.invalidatePrefix('work_areas');
68
+ return workArea;
69
+ });
70
+ }
71
+ //# sourceMappingURL=work-areas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"work-areas.js","sourceRoot":"","sources":["../../src/api/work-areas.ts"],"names":[],"mappings":"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"}