@m6d/cortex-server 1.7.0 → 1.8.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 (252) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/src/{adapters → lib/adapters}/database.d.ts +16 -1
  3. package/dist/src/lib/ai/context/compressor.d.ts +18 -0
  4. package/dist/src/{ai → lib/ai}/context/index.d.ts +2 -1
  5. package/dist/src/lib/ai/context/intra-turn-compressor.d.ts +24 -0
  6. package/dist/src/{ai → lib/ai}/context/types.d.ts +2 -0
  7. package/dist/src/{config.d.ts → lib/config.d.ts} +54 -66
  8. package/dist/src/{db → lib/db}/schema.d.ts +104 -1
  9. package/dist/src/{index.d.ts → lib/index.d.ts} +1 -2
  10. package/dist/src/{types.d.ts → lib/types.d.ts} +15 -14
  11. package/index.ts +1 -1
  12. package/package.json +8 -3
  13. package/src/{adapters → lib/adapters}/database.ts +20 -1
  14. package/src/{adapters → lib/adapters}/minio.ts +2 -1
  15. package/src/{adapters → lib/adapters}/mssql.ts +38 -2
  16. package/src/lib/ai/context/compressor.ts +259 -0
  17. package/src/{ai → lib/ai}/context/index.ts +6 -1
  18. package/src/lib/ai/context/intra-turn-compressor.ts +264 -0
  19. package/src/{ai → lib/ai}/context/types.ts +4 -1
  20. package/src/{ai → lib/ai}/index.ts +114 -13
  21. package/src/lib/ai/prompt.ts +354 -0
  22. package/src/{ai → lib/ai}/tools/execute-code.tool.ts +5 -2
  23. package/src/{auth → lib/auth}/middleware.ts +7 -0
  24. package/src/{config.ts → lib/config.ts} +65 -66
  25. package/src/{db/migrations/20260309012148_cloudy_maria_hill → lib/db/migrations/20260326231647_nice_speedball}/migration.sql +12 -0
  26. package/src/{db/migrations/20260309012148_cloudy_maria_hill → lib/db/migrations/20260326231647_nice_speedball}/snapshot.json +106 -1
  27. package/src/{db → lib/db}/schema.ts +15 -2
  28. package/src/{factory.ts → lib/factory.ts} +1 -0
  29. package/src/{index.ts → lib/index.ts} +2 -1
  30. package/src/{routes → lib/routes}/files.ts +9 -2
  31. package/src/{routes → lib/routes}/threads.ts +8 -1
  32. package/src/{types.ts → lib/types.ts} +16 -15
  33. package/src/sample/db/client.ts +9 -0
  34. package/src/sample/db/migrations/20260411023125_rich_purple_man/migration.sql +5 -0
  35. package/src/sample/db/migrations/20260411023125_rich_purple_man/snapshot.json +50 -0
  36. package/src/sample/db/schema.ts +10 -0
  37. package/src/sample/domains/account/concepts/session.concept.ts +17 -0
  38. package/src/sample/domains/account/endpoints/listCurrentSessions.endpoint.ts +31 -0
  39. package/src/sample/domains/account/endpoints/revokeAllOtherSessions.endpoint.ts +22 -0
  40. package/src/sample/domains/account/endpoints/revokeCurrentSession.endpoint.ts +33 -0
  41. package/src/sample/domains/account/index.ts +18 -0
  42. package/src/sample/domains/appraisals/concepts/appraisalCycle.concept.ts +15 -0
  43. package/src/sample/domains/appraisals/concepts/appraisalRecord.concept.ts +20 -0
  44. package/src/sample/domains/appraisals/concepts/appraisalRecordCompetency.concept.ts +10 -0
  45. package/src/sample/domains/appraisals/concepts/appraisalRecordFunctionalRequirement.concept.ts +10 -0
  46. package/src/sample/domains/appraisals/concepts/appraisalRecordGoal.concept.ts +17 -0
  47. package/src/sample/domains/appraisals/endpoints/getAppraisalRecordById.endpoint.ts +321 -0
  48. package/src/sample/domains/appraisals/endpoints/getAppraisalRecordCompetencies.endpoint.ts +120 -0
  49. package/src/sample/domains/appraisals/endpoints/getAppraisalRecordFunctionalRequirements.endpoint.ts +126 -0
  50. package/src/sample/domains/appraisals/endpoints/getAppraisalRecordGoals.endpoint.ts +104 -0
  51. package/src/sample/domains/appraisals/endpoints/getAppraisalRecordScore.endpoint.ts +58 -0
  52. package/src/sample/domains/appraisals/endpoints/listAppraisalCyclesSimple.endpoint.ts +52 -0
  53. package/src/sample/domains/appraisals/endpoints/listAppraisalRecords.endpoint.ts +245 -0
  54. package/src/sample/domains/appraisals/endpoints/listAppraisalTemplatesSimple.endpoint.ts +52 -0
  55. package/src/sample/domains/appraisals/index.ts +40 -0
  56. package/src/sample/domains/appraisals/rules/appraisalRecordScoping.rule.ts +7 -0
  57. package/src/sample/domains/attendance/concepts/attendancePermission.concept.ts +17 -0
  58. package/src/sample/domains/attendance/concepts/attendanceTransaction.concept.ts +17 -0
  59. package/src/sample/domains/attendance/concepts/publicHoliday.concept.ts +10 -0
  60. package/src/sample/domains/attendance/concepts/punch.concept.ts +19 -0
  61. package/src/sample/domains/attendance/endpoints/getAttendanceTransactionById.endpoint.ts +444 -0
  62. package/src/sample/domains/attendance/endpoints/getCurrentAttendanceProfile.endpoint.ts +886 -0
  63. package/src/sample/domains/attendance/endpoints/getCurrentAttendanceStatistics.endpoint.ts +49 -0
  64. package/src/sample/domains/attendance/endpoints/listAttendancePermissions.endpoint.ts +176 -0
  65. package/src/sample/domains/attendance/endpoints/listAttendanceTransactionStates.endpoint.ts +26 -0
  66. package/src/sample/domains/attendance/endpoints/listAttendanceTransactions.endpoint.ts +373 -0
  67. package/src/sample/domains/attendance/endpoints/listPublicHolidaysSimple.endpoint.ts +52 -0
  68. package/src/sample/domains/attendance/endpoints/listPunchTypes.endpoint.ts +25 -0
  69. package/src/sample/domains/attendance/endpoints/listPunches.endpoint.ts +178 -0
  70. package/src/sample/domains/attendance/index.ts +41 -0
  71. package/src/sample/domains/attendance/services/attendancePermissions.service.ts +15 -0
  72. package/src/sample/domains/employees/concepts/employee.concept.ts +20 -0
  73. package/src/sample/domains/employees/concepts/employeeBankAccount.concept.ts +19 -0
  74. package/src/sample/domains/employees/concepts/employeeChild.concept.ts +19 -0
  75. package/src/sample/domains/employees/concepts/employeeDocument.concept.ts +21 -0
  76. package/src/sample/domains/employees/concepts/employeeEvent.concept.ts +21 -0
  77. package/src/sample/domains/employees/concepts/employeeExperience.concept.ts +18 -0
  78. package/src/sample/domains/employees/concepts/employeeJobLevelChange.concept.ts +21 -0
  79. package/src/sample/domains/employees/concepts/employeeMedal.concept.ts +20 -0
  80. package/src/sample/domains/employees/concepts/employeeQualification.concept.ts +20 -0
  81. package/src/sample/domains/employees/concepts/employeeSpouse.concept.ts +21 -0
  82. package/src/sample/domains/employees/concepts/employeeViolation.concept.ts +19 -0
  83. package/src/sample/domains/employees/endpoints/getCurrentEmployee.endpoint.ts +1651 -0
  84. package/src/sample/domains/employees/endpoints/getCurrentIdentity.endpoint.ts +197 -0
  85. package/src/sample/domains/employees/endpoints/getCurrentManagers.endpoint.ts +142 -0
  86. package/src/sample/domains/employees/endpoints/getEmployeeById.endpoint.ts +1659 -0
  87. package/src/sample/domains/employees/endpoints/getEmployeeStatistics.endpoint.ts +43 -0
  88. package/src/sample/domains/employees/endpoints/listBankAccounts.endpoint.ts +223 -0
  89. package/src/sample/domains/employees/endpoints/listChildren.endpoint.ts +211 -0
  90. package/src/sample/domains/employees/endpoints/listDocuments.endpoint.ts +222 -0
  91. package/src/sample/domains/employees/endpoints/listEmployeesSimple.endpoint.ts +156 -0
  92. package/src/sample/domains/employees/endpoints/listEvents.endpoint.ts +120 -0
  93. package/src/sample/domains/employees/endpoints/listExperiences.endpoint.ts +188 -0
  94. package/src/sample/domains/employees/endpoints/listJobLevelChanges.endpoint.ts +240 -0
  95. package/src/sample/domains/employees/endpoints/listMedals.endpoint.ts +266 -0
  96. package/src/sample/domains/employees/endpoints/listQualifications.endpoint.ts +265 -0
  97. package/src/sample/domains/employees/endpoints/listSpouses.endpoint.ts +278 -0
  98. package/src/sample/domains/employees/endpoints/listViolations.endpoint.ts +245 -0
  99. package/src/sample/domains/employees/index.ts +75 -0
  100. package/src/sample/domains/employees/services/employees.service.ts +181 -0
  101. package/src/sample/domains/index.ts +10 -0
  102. package/src/sample/domains/leaves/concepts/leave.concept.ts +21 -0
  103. package/src/sample/domains/leaves/concepts/leaveBalance.concept.ts +17 -0
  104. package/src/sample/domains/leaves/concepts/leaveBalanceTransaction.concept.ts +16 -0
  105. package/src/sample/domains/leaves/concepts/leaveType.concept.ts +13 -0
  106. package/src/sample/domains/leaves/concepts/leaveTypes.concept.ts +205 -0
  107. package/src/sample/domains/leaves/endpoints/getBalance.endpoint.ts +53 -0
  108. package/src/sample/domains/leaves/endpoints/getLeaveById.endpoint.ts +53 -0
  109. package/src/sample/domains/leaves/endpoints/listBalanceTransactions.endpoint.ts +196 -0
  110. package/src/sample/domains/leaves/endpoints/listBalanceTypes.endpoint.ts +26 -0
  111. package/src/sample/domains/leaves/endpoints/listBalances.endpoint.ts +201 -0
  112. package/src/sample/domains/leaves/endpoints/listLeaveTypes.endpoint.ts +28 -0
  113. package/src/sample/domains/leaves/endpoints/listLeaves.endpoint.ts +234 -0
  114. package/src/sample/domains/leaves/index.ts +38 -0
  115. package/src/sample/domains/leaves/services/leaveRequests.service.ts +232 -0
  116. package/src/sample/domains/notifications/concepts/notification.concept.ts +19 -0
  117. package/src/sample/domains/notifications/endpoints/countMyNotifications.endpoint.ts +21 -0
  118. package/src/sample/domains/notifications/endpoints/getMyNotification.endpoint.ts +57 -0
  119. package/src/sample/domains/notifications/endpoints/listMyNotifications.endpoint.ts +59 -0
  120. package/src/sample/domains/notifications/endpoints/markMyNotificationAsRead.endpoint.ts +32 -0
  121. package/src/sample/domains/notifications/index.ts +20 -0
  122. package/src/sample/domains/payroll/concepts/payslip.concept.ts +18 -0
  123. package/src/sample/domains/payroll/concepts/salaryCertificate.concept.ts +17 -0
  124. package/src/sample/domains/payroll/concepts/salaryCertificateRequestingEntity.concept.ts +8 -0
  125. package/src/sample/domains/payroll/endpoints/getPayslipById.endpoint.ts +238 -0
  126. package/src/sample/domains/payroll/endpoints/listPayslips.endpoint.ts +216 -0
  127. package/src/sample/domains/payroll/endpoints/listSalaryCertificateLanguages.endpoint.ts +25 -0
  128. package/src/sample/domains/payroll/endpoints/listSalaryCertificateRequestingEntities.endpoint.ts +62 -0
  129. package/src/sample/domains/payroll/endpoints/listSalaryCertificateTypes.endpoint.ts +24 -0
  130. package/src/sample/domains/payroll/endpoints/listSalaryCertificates.endpoint.ts +122 -0
  131. package/src/sample/domains/payroll/endpoints/previewSalaryCertificate.endpoint.ts +45 -0
  132. package/src/sample/domains/payroll/index.ts +32 -0
  133. package/src/sample/domains/payroll/rules/payrollEmployeeContext.rule.ts +7 -0
  134. package/src/sample/domains/payroll/services/salaryCertificates.service.ts +15 -0
  135. package/src/sample/domains/servicing/concepts/service.concept.ts +6 -0
  136. package/src/sample/domains/servicing/concepts/serviceRequest.concept.ts +12 -0
  137. package/src/sample/domains/servicing/concepts/serviceRequestApproval.concept.ts +9 -0
  138. package/src/sample/domains/servicing/endpoints/cancelServiceRequest.endpoint.ts +21 -0
  139. package/src/sample/domains/servicing/endpoints/createServiceRequest.endpoint.ts +511 -0
  140. package/src/sample/domains/servicing/endpoints/getServiceRequest.endpoint.ts +352 -0
  141. package/src/sample/domains/servicing/endpoints/getServiceRequestFormItems.endpoint.ts +219 -0
  142. package/src/sample/domains/servicing/endpoints/getServiceRequestTransactionFormItems.endpoint.ts +216 -0
  143. package/src/sample/domains/servicing/endpoints/getServiceStates.endpoint.ts +47 -0
  144. package/src/sample/domains/servicing/endpoints/invokeServiceRequestAction.endpoint.ts +139 -0
  145. package/src/sample/domains/servicing/endpoints/listServiceRequests.endpoint.ts +292 -0
  146. package/src/sample/domains/servicing/endpoints/listServices.endpoint.ts +108 -0
  147. package/src/sample/domains/servicing/endpoints/updateServiceRequest.endpoint.ts +355 -0
  148. package/src/sample/domains/servicing/index.ts +44 -0
  149. package/src/sample/domains/servicing/rules/checkValidActions.rule.ts +7 -0
  150. package/src/sample/domains/servicing/rules/createServiceRequest.rule.ts +7 -0
  151. package/src/sample/domains/servicing/rules/filterServiceRequestsByState.rule.ts +7 -0
  152. package/src/sample/domains/servicing/rules/passingOptionFields.rule.ts +7 -0
  153. package/src/sample/domains/shared/rules/pagination.rule.ts +7 -0
  154. package/src/sample/domains/suggestions/concepts/suggestion.concept.ts +19 -0
  155. package/src/sample/domains/suggestions/concepts/suggestionCategory.concept.ts +7 -0
  156. package/src/sample/domains/suggestions/concepts/suggestionImpactLevel.concept.ts +7 -0
  157. package/src/sample/domains/suggestions/endpoints/createSuggestion.endpoint.ts +705 -0
  158. package/src/sample/domains/suggestions/endpoints/deleteSuggestion.endpoint.ts +32 -0
  159. package/src/sample/domains/suggestions/endpoints/getSuggestionById.endpoint.ts +635 -0
  160. package/src/sample/domains/suggestions/endpoints/listSuggestionCategories.endpoint.ts +62 -0
  161. package/src/sample/domains/suggestions/endpoints/listSuggestionImpactLevels.endpoint.ts +62 -0
  162. package/src/sample/domains/suggestions/endpoints/listSuggestionStates.endpoint.ts +24 -0
  163. package/src/sample/domains/suggestions/endpoints/listSuggestions.endpoint.ts +132 -0
  164. package/src/sample/domains/suggestions/endpoints/updateSuggestion.endpoint.ts +690 -0
  165. package/src/sample/domains/suggestions/endpoints/updateSuggestionState.endpoint.ts +39 -0
  166. package/src/sample/domains/suggestions/index.ts +34 -0
  167. package/src/sample/domains/suggestions/rules/suggestionScope.rule.ts +7 -0
  168. package/src/sample/domains/surveys/concepts/survey.concept.ts +10 -0
  169. package/src/sample/domains/surveys/concepts/surveyResponse.concept.ts +14 -0
  170. package/src/sample/domains/surveys/endpoints/getSurveyResponseById.endpoint.ts +131 -0
  171. package/src/sample/domains/surveys/endpoints/getTargetedSurvey.endpoint.ts +129 -0
  172. package/src/sample/domains/surveys/endpoints/listTargetedSurveys.endpoint.ts +160 -0
  173. package/src/sample/domains/surveys/endpoints/respondToSurvey.endpoint.ts +144 -0
  174. package/src/sample/domains/surveys/index.ts +21 -0
  175. package/src/sample/drizzle.config.ts +11 -0
  176. package/src/sample/index.bak.ts +341 -0
  177. package/src/sample/index.ts +318 -0
  178. package/src/sample/official-statements/defaults.ts +57 -0
  179. package/src/sample/official-statements/routes.ts +137 -0
  180. package/src/sample/official-statements/service.ts +148 -0
  181. package/src/sample/official-statements/types.ts +23 -0
  182. package/dist/src/ai/context/compressor.d.ts +0 -7
  183. package/dist/src/ai/tools/call-endpoint.tool.d.ts +0 -7
  184. package/src/ai/context/compressor.ts +0 -47
  185. package/src/ai/prompt.ts +0 -126
  186. package/src/ai/tools/call-endpoint.tool.ts +0 -89
  187. package/src/db/migrations/20260315000000_add_context_meta/migration.sql +0 -1
  188. package/dist/src/{adapters → lib/adapters}/minio.d.ts +0 -0
  189. package/dist/src/{adapters → lib/adapters}/mssql.d.ts +0 -0
  190. package/dist/src/{adapters → lib/adapters}/storage.d.ts +0 -0
  191. package/dist/src/{ai → lib/ai}/active-streams.d.ts +0 -0
  192. package/dist/src/{ai → lib/ai}/context/builder.d.ts +0 -0
  193. package/dist/src/{ai → lib/ai}/context/summarizer.d.ts +0 -0
  194. package/dist/src/{ai → lib/ai}/context/token-estimator.d.ts +0 -0
  195. package/dist/src/{ai → lib/ai}/fetch.d.ts +0 -0
  196. package/dist/src/{ai → lib/ai}/helpers.d.ts +0 -0
  197. package/dist/src/{ai → lib/ai}/index.d.ts +0 -0
  198. package/dist/src/{ai → lib/ai}/interceptors/request-interceptor.d.ts +0 -0
  199. package/dist/src/{ai → lib/ai}/prompt.d.ts +0 -0
  200. package/dist/src/{ai → lib/ai}/tools/capture-files.tool.d.ts +0 -0
  201. package/dist/src/{ai → lib/ai}/tools/execute-code.tool.d.ts +0 -0
  202. package/dist/src/{ai → lib/ai}/tools/query-graph.tool.d.ts +0 -0
  203. package/dist/src/{auth → lib/auth}/middleware.d.ts +0 -0
  204. package/dist/src/{cli → lib/cli}/extract-endpoints.d.ts +0 -0
  205. package/dist/src/{db → lib/db}/migrate.d.ts +0 -0
  206. package/dist/src/{factory.d.ts → lib/factory.d.ts} +0 -0
  207. package/dist/src/{graph → lib/graph}/expand-domains.d.ts +0 -0
  208. package/dist/src/{graph → lib/graph}/generate-cypher.d.ts +0 -0
  209. package/dist/src/{graph → lib/graph}/helpers.d.ts +2 -2
  210. /package/dist/src/{graph → lib/graph}/index.d.ts +0 -0
  211. /package/dist/src/{graph → lib/graph}/neo4j.d.ts +0 -0
  212. /package/dist/src/{graph → lib/graph}/resolver.d.ts +0 -0
  213. /package/dist/src/{graph → lib/graph}/seed.d.ts +0 -0
  214. /package/dist/src/{graph → lib/graph}/types.d.ts +0 -0
  215. /package/dist/src/{graph → lib/graph}/validate.d.ts +0 -0
  216. /package/dist/src/{routes → lib/routes}/chat.d.ts +0 -0
  217. /package/dist/src/{routes → lib/routes}/files.d.ts +0 -0
  218. /package/dist/src/{routes → lib/routes}/index.d.ts +0 -0
  219. /package/dist/src/{routes → lib/routes}/threads.d.ts +0 -0
  220. /package/dist/src/{routes → lib/routes}/ws.d.ts +0 -0
  221. /package/dist/src/{ws → lib/ws}/connections.d.ts +0 -0
  222. /package/dist/src/{ws → lib/ws}/events.d.ts +0 -0
  223. /package/dist/src/{ws → lib/ws}/index.d.ts +0 -0
  224. /package/dist/src/{ws → lib/ws}/notify.d.ts +0 -0
  225. /package/src/{adapters → lib/adapters}/storage.ts +0 -0
  226. /package/src/{ai → lib/ai}/active-streams.ts +0 -0
  227. /package/src/{ai → lib/ai}/context/builder.ts +0 -0
  228. /package/src/{ai → lib/ai}/context/summarizer.ts +0 -0
  229. /package/src/{ai → lib/ai}/context/token-estimator.ts +0 -0
  230. /package/src/{ai → lib/ai}/fetch.ts +0 -0
  231. /package/src/{ai → lib/ai}/helpers.ts +0 -0
  232. /package/src/{ai → lib/ai}/interceptors/request-interceptor.ts +0 -0
  233. /package/src/{ai → lib/ai}/tools/capture-files.tool.ts +0 -0
  234. /package/src/{ai → lib/ai}/tools/query-graph.tool.ts +0 -0
  235. /package/src/{cli → lib/cli}/extract-endpoints.ts +0 -0
  236. /package/src/{db → lib/db}/migrate.ts +0 -0
  237. /package/src/{graph → lib/graph}/expand-domains.ts +0 -0
  238. /package/src/{graph → lib/graph}/generate-cypher.ts +0 -0
  239. /package/src/{graph → lib/graph}/helpers.ts +0 -0
  240. /package/src/{graph → lib/graph}/index.ts +0 -0
  241. /package/src/{graph → lib/graph}/neo4j.ts +0 -0
  242. /package/src/{graph → lib/graph}/resolver.ts +0 -0
  243. /package/src/{graph → lib/graph}/seed.ts +0 -0
  244. /package/src/{graph → lib/graph}/types.ts +0 -0
  245. /package/src/{graph → lib/graph}/validate.ts +0 -0
  246. /package/src/{routes → lib/routes}/chat.ts +0 -0
  247. /package/src/{routes → lib/routes}/index.ts +0 -0
  248. /package/src/{routes → lib/routes}/ws.ts +0 -0
  249. /package/src/{ws → lib/ws}/connections.ts +0 -0
  250. /package/src/{ws → lib/ws}/events.ts +0 -0
  251. /package/src/{ws → lib/ws}/index.ts +0 -0
  252. /package/src/{ws → lib/ws}/notify.ts +0 -0
@@ -0,0 +1,32 @@
1
+ import { defineEndpoint } from "@m6d/cortex-server";
2
+ import { notificationConcept } from "../concepts/notification.concept";
3
+ import { listMyNotificationsEndpoint } from "./listMyNotifications.endpoint";
4
+
5
+ export const markMyNotificationAsReadEndpoint = defineEndpoint({
6
+ name: "Mark current user notification as read",
7
+ path: "/notifications/users/{id}/read",
8
+ method: "PUT",
9
+ description: "Marks a notification belonging to the current user as read.",
10
+ paramDescriptions: {
11
+ id: "The notification identifier",
12
+ },
13
+ mutates: [notificationConcept],
14
+ dependsOn: [
15
+ {
16
+ endpoint: listMyNotificationsEndpoint,
17
+ fromField: "id",
18
+ paramName: "id",
19
+ },
20
+ ],
21
+
22
+ // @auto-generated-start
23
+ autoGenerated: {
24
+ params: [{ name: "id", required: true, type: "uuid" }] as const,
25
+ body: [] as const,
26
+ response: [] as const,
27
+ successStatus: 204,
28
+ errorStatuses: [404],
29
+ responseKind: "none",
30
+ } as const,
31
+ // @auto-generated-end
32
+ });
@@ -0,0 +1,20 @@
1
+ import { defineDomain } from "@m6d/cortex-server";
2
+ import type { DomainDef } from "@m6d/cortex-server";
3
+ import { notificationConcept } from "./concepts/notification.concept";
4
+ import { countMyNotificationsEndpoint } from "./endpoints/countMyNotifications.endpoint";
5
+ import { getMyNotificationEndpoint } from "./endpoints/getMyNotification.endpoint";
6
+ import { listMyNotificationsEndpoint } from "./endpoints/listMyNotifications.endpoint";
7
+ import { markMyNotificationAsReadEndpoint } from "./endpoints/markMyNotificationAsRead.endpoint";
8
+
9
+ export const notificationsDomain: DomainDef = defineDomain({
10
+ name: "Notifications",
11
+ description:
12
+ "Personal notifications domain covering the current user's notifications, unread counts, and read-state updates.",
13
+ concepts: [notificationConcept],
14
+ endpoints: [
15
+ listMyNotificationsEndpoint,
16
+ getMyNotificationEndpoint,
17
+ markMyNotificationAsReadEndpoint,
18
+ countMyNotificationsEndpoint,
19
+ ],
20
+ });
@@ -0,0 +1,18 @@
1
+ import { defineConcept } from "@m6d/cortex-server";
2
+ import { paginationRule } from "../../shared/rules/pagination.rule";
3
+
4
+ export const payslipConcept = defineConcept({
5
+ name: "Payslip",
6
+ description:
7
+ "A payroll payslip for the current user or current employee context, including totals, allowances, deductions, bonuses, banking details, and prior-period comparison.",
8
+ aliases: [
9
+ "payslip",
10
+ "salary slip",
11
+ "salary statement",
12
+ "my payslips",
13
+ "قسيمة الراتب",
14
+ "الراتب",
15
+ "كشوف الرواتب",
16
+ ],
17
+ governedBy: [paginationRule],
18
+ });
@@ -0,0 +1,17 @@
1
+ import { defineConcept } from "@m6d/cortex-server";
2
+ import { paginationRule } from "../../shared/rules/pagination.rule";
3
+
4
+ export const salaryCertificateConcept = defineConcept({
5
+ name: "Salary Certificate",
6
+ description:
7
+ "A salary or employment certificate for the current employee, including type, language, requesting entity, generated file, and related service request.",
8
+ aliases: [
9
+ "salary certificate",
10
+ "employment certificate",
11
+ "salary letter",
12
+ "certificate",
13
+ "شهادة راتب",
14
+ "شهادة لمن يهمه الأمر",
15
+ ],
16
+ governedBy: [paginationRule],
17
+ });
@@ -0,0 +1,8 @@
1
+ import { defineConcept } from "@m6d/cortex-server";
2
+
3
+ export const salaryCertificateRequestingEntityConcept = defineConcept({
4
+ name: "Salary Certificate Requesting Entity",
5
+ description:
6
+ "A selectable external entity used when previewing or requesting a salary certificate.",
7
+ aliases: ["certificate requesting entity", "requesting entity", "جهة طلب الشهادة"],
8
+ });
@@ -0,0 +1,238 @@
1
+ import { defineEndpoint } from "@m6d/cortex-server";
2
+ import { payslipConcept } from "../concepts/payslip.concept";
3
+ import { listPayslipsEndpoint } from "./listPayslips.endpoint";
4
+
5
+ export const getPayslipByIdEndpoint = defineEndpoint({
6
+ name: "Get payslip by id",
7
+ path: "/payroll/payslips/{id}",
8
+ method: "GET",
9
+ description: "Returns a single payslip accessible to the current user.",
10
+ queries: [payslipConcept],
11
+ returns: [{ concept: payslipConcept }],
12
+ paramDescriptions: {
13
+ id: "The payslip identifier",
14
+ },
15
+ dependsOn: [
16
+ {
17
+ endpoint: listPayslipsEndpoint,
18
+ fromField: "id",
19
+ paramName: "id",
20
+ },
21
+ ],
22
+
23
+ // @auto-generated-start
24
+ autoGenerated: {
25
+ params: [{ name: "id", required: true, type: "uuid" }] as const,
26
+ body: [] as const,
27
+ response: [
28
+ { name: "id", required: false, type: "uuid" },
29
+ {
30
+ name: "salary",
31
+ required: false,
32
+ type: "object",
33
+ properties: [
34
+ { name: "id", required: false, type: "uuid" },
35
+ {
36
+ name: "employee",
37
+ required: false,
38
+ type: "object",
39
+ properties: [
40
+ { name: "id", required: false, type: "uuid" },
41
+ {
42
+ name: "name",
43
+ required: false,
44
+ type: "object",
45
+ properties: [
46
+ { name: "ar", required: false, type: "string" },
47
+ { name: "en", required: false, type: "string" },
48
+ ],
49
+ },
50
+ { name: "number", required: false, type: "string" },
51
+ {
52
+ name: "jobClassification",
53
+ required: false,
54
+ type: "object",
55
+ properties: [
56
+ { name: "id", required: false, type: "uuid" },
57
+ {
58
+ name: "name",
59
+ required: false,
60
+ type: "object",
61
+ properties: [
62
+ { name: "ar", required: false, type: "string" },
63
+ { name: "en", required: false, type: "string" },
64
+ ],
65
+ },
66
+ { name: "type", required: false, type: "string" },
67
+ ],
68
+ },
69
+ {
70
+ name: "jobLevel",
71
+ required: false,
72
+ type: "object",
73
+ properties: [
74
+ { name: "id", required: false, type: "uuid" },
75
+ {
76
+ name: "name",
77
+ required: false,
78
+ type: "object",
79
+ properties: [
80
+ { name: "ar", required: false, type: "string" },
81
+ { name: "en", required: false, type: "string" },
82
+ ],
83
+ },
84
+ ],
85
+ },
86
+ {
87
+ name: "jobTitle",
88
+ required: false,
89
+ type: "object",
90
+ properties: [
91
+ { name: "id", required: false, type: "uuid" },
92
+ {
93
+ name: "name",
94
+ required: false,
95
+ type: "object",
96
+ properties: [
97
+ { name: "ar", required: false, type: "string" },
98
+ { name: "en", required: false, type: "string" },
99
+ ],
100
+ },
101
+ {
102
+ name: "category",
103
+ required: false,
104
+ type: "object",
105
+ properties: [
106
+ { name: "id", required: false, type: "uuid" },
107
+ { name: "name", required: false, type: "object" },
108
+ ],
109
+ },
110
+ ],
111
+ },
112
+ {
113
+ name: "department",
114
+ required: false,
115
+ type: "object",
116
+ properties: [
117
+ { name: "id", required: false, type: "uuid" },
118
+ {
119
+ name: "name",
120
+ required: false,
121
+ type: "object",
122
+ properties: [
123
+ { name: "ar", required: false, type: "string" },
124
+ { name: "en", required: false, type: "string" },
125
+ ],
126
+ },
127
+ ],
128
+ },
129
+ {
130
+ name: "user",
131
+ required: false,
132
+ type: "object",
133
+ properties: [
134
+ { name: "id", required: false, type: "uuid" },
135
+ {
136
+ name: "name",
137
+ required: false,
138
+ type: "object",
139
+ properties: [
140
+ { name: "ar", required: false, type: "string" },
141
+ { name: "en", required: false, type: "string" },
142
+ ],
143
+ },
144
+ ],
145
+ },
146
+ ],
147
+ },
148
+ { name: "amount", required: false, type: "number" },
149
+ { name: "pensionDeductionAmount", required: false, type: "number" },
150
+ { name: "baseAmount", required: false, type: "number" },
151
+ { name: "totalAmount", required: false, type: "number" },
152
+ { name: "totalAllowanceAmount", required: false, type: "number" },
153
+ { name: "totalDeductionAmount", required: false, type: "number" },
154
+ ],
155
+ },
156
+ {
157
+ name: "register",
158
+ required: false,
159
+ type: "object",
160
+ properties: [
161
+ { name: "id", required: false, type: "uuid" },
162
+ { name: "month", required: false, type: "number" },
163
+ { name: "year", required: false, type: "number" },
164
+ ],
165
+ },
166
+ { name: "amount", required: false, type: "number" },
167
+ { name: "baseAmount", required: false, type: "number" },
168
+ { name: "totalAmount", required: false, type: "number" },
169
+ { name: "totalAllowanceAmount", required: false, type: "number" },
170
+ { name: "totalDeductionAmount", required: false, type: "number" },
171
+ { name: "totalBonusAmount", required: false, type: "number" },
172
+ { name: "totalReductionAmount", required: false, type: "number" },
173
+ { name: "pensionDeductionAmount", required: false, type: "number" },
174
+ {
175
+ name: "currency",
176
+ required: false,
177
+ type: "object",
178
+ properties: [
179
+ { name: "id", required: false, type: "uuid" },
180
+ {
181
+ name: "name",
182
+ required: false,
183
+ type: "object",
184
+ properties: [
185
+ { name: "ar", required: false, type: "string" },
186
+ { name: "en", required: false, type: "string" },
187
+ ],
188
+ },
189
+ {
190
+ name: "abbreviatedName",
191
+ required: false,
192
+ type: "object",
193
+ properties: [
194
+ { name: "ar", required: false, type: "string" },
195
+ { name: "en", required: false, type: "string" },
196
+ ],
197
+ },
198
+ { name: "symbol", required: false, type: "string" },
199
+ ],
200
+ },
201
+ { name: "hasChanged", required: false, type: "boolean" },
202
+ {
203
+ name: "allowances",
204
+ required: false,
205
+ type: "object",
206
+ isArray: true,
207
+ properties: [
208
+ { name: "id", required: false, type: "uuid" },
209
+ {
210
+ name: "type",
211
+ required: false,
212
+ type: "object",
213
+ properties: [
214
+ { name: "id", required: false, type: "uuid" },
215
+ {
216
+ name: "name",
217
+ required: false,
218
+ type: "object",
219
+ properties: [
220
+ { name: "ar", required: false, type: "string" },
221
+ { name: "en", required: false, type: "string" },
222
+ ],
223
+ },
224
+ ],
225
+ },
226
+ { name: "amount", required: false, type: "number" },
227
+ { name: "from", required: false, type: "date" },
228
+ { name: "to", required: false, type: "date" },
229
+ { name: "notes", required: false, type: "string" },
230
+ ],
231
+ },
232
+ ] as const,
233
+ successStatus: 200,
234
+ errorStatuses: [404],
235
+ responseKind: "object",
236
+ } as const,
237
+ // @auto-generated-end
238
+ });
@@ -0,0 +1,216 @@
1
+ import { defineEndpoint } from "@m6d/cortex-server";
2
+ import { payslipConcept } from "../concepts/payslip.concept";
3
+ import { payrollEmployeeContextRule } from "../rules/payrollEmployeeContext.rule";
4
+
5
+ export const listPayslipsEndpoint = defineEndpoint({
6
+ name: "List payslips",
7
+ path: "/payroll/payslips",
8
+ method: "GET",
9
+ description:
10
+ "Returns paginated payslips. In self-service conversations, this should be constrained to the current employee context.",
11
+ queries: [payslipConcept],
12
+ returns: [{ concept: payslipConcept }],
13
+ governedBy: [payrollEmployeeContextRule],
14
+ paramDescriptions: {
15
+ employeeIds:
16
+ "Filter by employee identifiers. For self-service use the current employee id.",
17
+ registerIds: "Optional payroll register filters",
18
+ months: "Optional month filters",
19
+ years: "Optional year filters",
20
+ hasChanged: "Optional filter for payslips changed from the previous period",
21
+ page: "Pagination page number",
22
+ pageSize: "Pagination page size",
23
+ },
24
+
25
+ // @auto-generated-start
26
+ autoGenerated: {
27
+ params: [
28
+ { name: "registerIds", required: false, type: "uuid", isArray: true },
29
+ { name: "employeeIds", required: false, type: "uuid", isArray: true },
30
+ { name: "months", required: false, type: "number", isArray: true },
31
+ { name: "years", required: false, type: "number", isArray: true },
32
+ { name: "hasChanged", required: false, type: "boolean" },
33
+ {
34
+ name: "filterCountExclusions",
35
+ required: false,
36
+ type: "'employee_ids' | 'register_ids'",
37
+ isArray: true,
38
+ },
39
+ { name: "pageNumber", required: false, type: "number" },
40
+ { name: "pageSize", required: false, type: "number" },
41
+ ] as const,
42
+ body: [] as const,
43
+ response: [
44
+ {
45
+ name: "items",
46
+ required: false,
47
+ type: "object",
48
+ isArray: true,
49
+ properties: [
50
+ { name: "id", required: false, type: "uuid" },
51
+ {
52
+ name: "salary",
53
+ required: false,
54
+ type: "object",
55
+ properties: [
56
+ { name: "id", required: false, type: "uuid" },
57
+ {
58
+ name: "employee",
59
+ required: false,
60
+ type: "object",
61
+ properties: [
62
+ { name: "id", required: false, type: "uuid" },
63
+ {
64
+ name: "name",
65
+ required: false,
66
+ type: "object",
67
+ properties: [
68
+ { name: "ar", required: false, type: "string" },
69
+ { name: "en", required: false, type: "string" },
70
+ ],
71
+ },
72
+ { name: "number", required: false, type: "string" },
73
+ {
74
+ name: "jobClassification",
75
+ required: false,
76
+ type: "object",
77
+ properties: [
78
+ { name: "id", required: false, type: "uuid" },
79
+ { name: "name", required: false, type: "object" },
80
+ { name: "type", required: false, type: "string" },
81
+ ],
82
+ },
83
+ {
84
+ name: "jobLevel",
85
+ required: false,
86
+ type: "object",
87
+ properties: [
88
+ { name: "id", required: false, type: "uuid" },
89
+ { name: "name", required: false, type: "object" },
90
+ ],
91
+ },
92
+ {
93
+ name: "jobTitle",
94
+ required: false,
95
+ type: "object",
96
+ properties: [
97
+ { name: "id", required: false, type: "uuid" },
98
+ { name: "name", required: false, type: "object" },
99
+ { name: "category", required: false, type: "object" },
100
+ ],
101
+ },
102
+ {
103
+ name: "department",
104
+ required: false,
105
+ type: "object",
106
+ properties: [
107
+ { name: "id", required: false, type: "uuid" },
108
+ { name: "name", required: false, type: "object" },
109
+ ],
110
+ },
111
+ {
112
+ name: "user",
113
+ required: false,
114
+ type: "object",
115
+ properties: [
116
+ { name: "id", required: false, type: "uuid" },
117
+ { name: "name", required: false, type: "object" },
118
+ ],
119
+ },
120
+ ],
121
+ },
122
+ { name: "amount", required: false, type: "number" },
123
+ { name: "pensionDeductionAmount", required: false, type: "number" },
124
+ { name: "baseAmount", required: false, type: "number" },
125
+ { name: "totalAmount", required: false, type: "number" },
126
+ { name: "totalAllowanceAmount", required: false, type: "number" },
127
+ { name: "totalDeductionAmount", required: false, type: "number" },
128
+ ],
129
+ },
130
+ {
131
+ name: "register",
132
+ required: false,
133
+ type: "object",
134
+ properties: [
135
+ { name: "id", required: false, type: "uuid" },
136
+ { name: "month", required: false, type: "number" },
137
+ { name: "year", required: false, type: "number" },
138
+ ],
139
+ },
140
+ { name: "amount", required: false, type: "number" },
141
+ { name: "baseAmount", required: false, type: "number" },
142
+ { name: "totalAmount", required: false, type: "number" },
143
+ { name: "totalAllowanceAmount", required: false, type: "number" },
144
+ { name: "totalDeductionAmount", required: false, type: "number" },
145
+ { name: "totalBonusAmount", required: false, type: "number" },
146
+ { name: "totalReductionAmount", required: false, type: "number" },
147
+ { name: "pensionDeductionAmount", required: false, type: "number" },
148
+ {
149
+ name: "currency",
150
+ required: false,
151
+ type: "object",
152
+ properties: [
153
+ { name: "id", required: false, type: "uuid" },
154
+ {
155
+ name: "name",
156
+ required: false,
157
+ type: "object",
158
+ properties: [
159
+ { name: "ar", required: false, type: "string" },
160
+ { name: "en", required: false, type: "string" },
161
+ ],
162
+ },
163
+ {
164
+ name: "abbreviatedName",
165
+ required: false,
166
+ type: "object",
167
+ properties: [
168
+ { name: "ar", required: false, type: "string" },
169
+ { name: "en", required: false, type: "string" },
170
+ ],
171
+ },
172
+ { name: "symbol", required: false, type: "string" },
173
+ ],
174
+ },
175
+ { name: "hasChanged", required: false, type: "boolean" },
176
+ {
177
+ name: "allowances",
178
+ required: false,
179
+ type: "object",
180
+ isArray: true,
181
+ properties: [
182
+ { name: "id", required: false, type: "uuid" },
183
+ {
184
+ name: "type",
185
+ required: false,
186
+ type: "object",
187
+ properties: [
188
+ { name: "id", required: false, type: "uuid" },
189
+ {
190
+ name: "name",
191
+ required: false,
192
+ type: "object",
193
+ properties: [
194
+ { name: "ar", required: false, type: "string" },
195
+ { name: "en", required: false, type: "string" },
196
+ ],
197
+ },
198
+ ],
199
+ },
200
+ { name: "amount", required: false, type: "number" },
201
+ { name: "from", required: false, type: "date" },
202
+ { name: "to", required: false, type: "date" },
203
+ { name: "notes", required: false, type: "string" },
204
+ ],
205
+ },
206
+ ],
207
+ },
208
+ { name: "count", required: false, type: "number" },
209
+ { name: "filteredCount", required: false, type: "number" },
210
+ ] as const,
211
+ successStatus: 200,
212
+ errorStatuses: [],
213
+ responseKind: "object",
214
+ } as const,
215
+ // @auto-generated-end
216
+ });
@@ -0,0 +1,25 @@
1
+ import { defineEndpoint } from "@m6d/cortex-server";
2
+ import { salaryCertificateConcept } from "../concepts/salaryCertificate.concept";
3
+
4
+ export const listSalaryCertificateLanguagesEndpoint = defineEndpoint({
5
+ name: "List salary certificate languages",
6
+ path: "/payroll/salaries/certificates/languages",
7
+ method: "GET",
8
+ description:
9
+ "Returns the available salary certificate languages used for previews and filtering.",
10
+ queries: [salaryCertificateConcept],
11
+
12
+ // @auto-generated-start
13
+ autoGenerated: {
14
+ params: [] as const,
15
+ body: [] as const,
16
+ response: [
17
+ { name: "id", required: false, type: "string" },
18
+ { name: "name", required: false, type: "string" },
19
+ ] as const,
20
+ successStatus: 200,
21
+ errorStatuses: [],
22
+ responseKind: "array",
23
+ } as const,
24
+ // @auto-generated-end
25
+ });
@@ -0,0 +1,62 @@
1
+ import { defineEndpoint } from "@m6d/cortex-server";
2
+ import { salaryCertificateRequestingEntityConcept } from "../concepts/salaryCertificateRequestingEntity.concept";
3
+
4
+ export const listSalaryCertificateRequestingEntitiesEndpoint = defineEndpoint({
5
+ name: "List salary certificate requesting entities",
6
+ path: "/payroll/salaries/certificate-requesting-entities",
7
+ method: "GET",
8
+ description:
9
+ "Returns the requesting entities available for salary certificate preview or request flows.",
10
+ queries: [salaryCertificateRequestingEntityConcept],
11
+ returns: [{ concept: salaryCertificateRequestingEntityConcept }],
12
+ paramDescriptions: {
13
+ keyword: "Optional keyword filter",
14
+ page: "Pagination page number",
15
+ pageSize: "Pagination page size",
16
+ },
17
+
18
+ // @auto-generated-start
19
+ autoGenerated: {
20
+ params: [
21
+ { name: "keyword", required: false, type: "string" },
22
+ { name: "pageNumber", required: false, type: "number" },
23
+ { name: "pageSize", required: false, type: "number" },
24
+ ] as const,
25
+ body: [] as const,
26
+ response: [
27
+ {
28
+ name: "items",
29
+ required: false,
30
+ type: "object",
31
+ isArray: true,
32
+ properties: [
33
+ { name: "id", required: false, type: "uuid" },
34
+ {
35
+ name: "name",
36
+ required: false,
37
+ type: "object",
38
+ properties: [
39
+ { name: "ar", required: false, type: "string" },
40
+ { name: "en", required: false, type: "string" },
41
+ ],
42
+ },
43
+ {
44
+ name: "description",
45
+ required: false,
46
+ type: "object",
47
+ properties: [
48
+ { name: "ar", required: false, type: "string" },
49
+ { name: "en", required: false, type: "string" },
50
+ ],
51
+ },
52
+ ],
53
+ },
54
+ { name: "count", required: false, type: "number" },
55
+ { name: "filteredCount", required: false, type: "number" },
56
+ ] as const,
57
+ successStatus: 200,
58
+ errorStatuses: [],
59
+ responseKind: "object",
60
+ } as const,
61
+ // @auto-generated-end
62
+ });